You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuticateGroupsDataAccess.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace Luticate\Auth\DataAccess;
  3. use Luticate\Utils\LuDataAccess;
  4. use Luticate\Auth\DataAccess\Models\LuticateGroups;
  5. use Luticate\Auth\DBO\LuticateGroupsDbo;
  6. use Luticate\Utils\LuMultipleDbo;
  7. class LuticateGroupsDataAccess extends LuDataAccess {
  8. protected static function getModel()
  9. {
  10. return new LuticateGroups();
  11. }
  12. protected static function getOrderBy()
  13. {
  14. return array(array("name", "ASC"));
  15. }
  16. /**
  17. * @param $group_name
  18. * @return LuticateGroupsDbo|null
  19. */
  20. public static function getByName($group_name)
  21. {
  22. $group = LuticateGroups::where("name", "=", $group_name)->first();
  23. if (is_null($group))
  24. return null;
  25. return $group->toDbo();
  26. }
  27. public static function getUsers($group_id, $page = 0, $perPage = PHP_INT_MAX)
  28. {
  29. $model = LuticateGroups::where("luticate_users_groups.group_id", "=", $group_id)
  30. ->join("luticate_users", "luticate_users.id", "=", "luticate_users_groups.user_id");
  31. $count = $model->count();
  32. $model = $model->orderBy("luticate_users.username", "ASC");
  33. $data = $model->take($perPage)->offset($page * $perPage)->get();
  34. $dbo = self::arrayToDbo($data);
  35. return new LuMultipleDbo($count, $dbo);
  36. }
  37. public static function addUser($user_id, $group_id)
  38. {
  39. LuticateGroups::find($group_id)->users()->attach($user_id);
  40. return true;
  41. }
  42. public static function delUser($user_id, $group_id)
  43. {
  44. LuticateGroups::find($group_id)->users()->detach($user_id);
  45. return true;
  46. }
  47. public static function hasUser($user_id, $group_id)
  48. {
  49. return !is_null(LuticateGroups::find($group_id)->users()->find($user_id));
  50. }
  51. }