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.8KB

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