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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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("group_id", "=", $group_id)->join("luticate_users", "id", "=", "user_id");
  30. $count = $model->count();
  31. $model = $model->orderBy("luticate_users.username", "ASC");
  32. $data = $model->take($perPage)->offset($page * $perPage)->get();
  33. $dbo = self::arrayToDbo($data);
  34. return new LuMultipleDbo($count, $dbo);
  35. }
  36. public static function addUser($user_id, $group_id)
  37. {
  38. LuticateGroups::find($group_id)->users()->attach($user_id);
  39. return true;
  40. }
  41. public static function delUser($user_id, $group_id)
  42. {
  43. LuticateGroups::find($group_id)->users()->detach($user_id);
  44. return true;
  45. }
  46. public static function hasUser($user_id, $group_id)
  47. {
  48. return !is_null(LuticateGroups::find($group_id)->users()->find($user_id));
  49. }
  50. }