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 2.1KB

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