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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 = 2000000000, $query = "")
  34. {
  35. $model = LuticateUsers::/*where("luticate_users.username", "ilike", "%" . $query . "%")
  36. ->where("luticate_users.email", "ilike", "%" . $query . "%", "or")
  37. ->where("luticate_users.firstname", "ilike", "%" . $query . "%", "or")
  38. ->where("luticate_users.lastname", "ilike", "%" . $query . "%", "or")
  39. ->*/where("luticate_users_groups.group_id", "=", $group_id, "and")
  40. ->join("luticate_users_groups", "luticate_users.id", "=", "luticate_users_groups.user_id");
  41. $count = $model->count();
  42. $model = $model->orderBy("luticate_users.username", "ASC");
  43. $data = $model->take($perPage)->offset($page * $perPage)->get();
  44. $usersLight = [];
  45. foreach ($data as $user) {
  46. if (!is_null($user)) {
  47. $usersLight[] = LuticateUsersLightDbo::fromUserDbo($user->toDbo());
  48. }
  49. }
  50. return new LuMultipleDbo($count, $usersLight);
  51. }
  52. public static function addUser($user_id, $group_id)
  53. {
  54. LuticateGroups::find($group_id)->users()->attach($user_id);
  55. return true;
  56. }
  57. public static function delUser($user_id, $group_id)
  58. {
  59. LuticateGroups::find($group_id)->users()->detach($user_id);
  60. return true;
  61. }
  62. public static function hasUser($user_id, $group_id)
  63. {
  64. return !is_null(LuticateGroups::find($group_id)->users()->find($user_id));
  65. }
  66. }