選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

LuticateSettingsUsersBusiness.php 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace Luticate\Auth\Business;
  3. use Luticate\Utils\LuBusiness;
  4. use Luticate\Auth\DataAccess\LuticateSettingsUsersDataAccess;
  5. use Luticate\Auth\DBO\LuticateSettingsUsersDbo;
  6. use Luticate\Utils\LuMultipleDbo;
  7. class LuticateSettingsUsersBusiness extends LuBusiness {
  8. protected static function getDataAccess()
  9. {
  10. return new LuticateSettingsUsersDataAccess();
  11. }
  12. public static function checkSettingUserName($user_id, $setting_name)
  13. {
  14. LuticateUsersBusiness::checkUserId($user_id);
  15. LuticateSettingsBusiness::checkSettingName($setting_name);
  16. $setting = LuticateSettingsUsersDataAccess::getByName($user_id, $setting_name);
  17. if (is_null($setting)) {
  18. self::notFound("User setting not found");
  19. }
  20. return $setting;
  21. }
  22. public static function getAllByUser($user_id, $page = 0, $perPage = 2000000000)
  23. {
  24. return LuticateSettingsUsersDataAccess::getAllByUser($user_id, $page, $perPage)->map(function($value)
  25. {
  26. $value->setValue(json_decode($value->getValue()));
  27. return $value;
  28. });
  29. }
  30. /**
  31. * @param $user_setting LuticateSettingsUsersDbo
  32. * @param $admin_edit bool
  33. * @return bool
  34. */
  35. public static function edit($user_setting, $admin_edit)
  36. {
  37. LuticateUsersBusiness::checkUserId($user_setting->getUserId());
  38. $setting = LuticateSettingsBusiness::checkSettingName($user_setting->getName());
  39. if ($setting->getIsBlocked() && !$admin_edit) {
  40. self::unauthorized("Setting is blocked");
  41. }
  42. if (is_null($user_setting->getValue())) {
  43. LuticateSettingsUsersDataAccess::delete($user_setting->getUserId(), $user_setting->getName());
  44. } else {
  45. $setting->setValue($user_setting->getValue());
  46. LuticateSettingsBusiness::checkSetting($setting);
  47. $user_setting->setValue(json_encode($user_setting->getValue()));
  48. $real_user_setting = LuticateSettingsUsersDataAccess::getByName($user_setting->getUserId(), $user_setting->getName());
  49. if (is_null($real_user_setting)) {
  50. if (is_null($user_setting->getIsBlocked())) {
  51. $user_setting->setIsBlocked(false);
  52. }
  53. LuticateSettingsUsersDataAccess::add($user_setting);
  54. }
  55. else {
  56. if ($real_user_setting->getIsBlocked() && !$admin_edit) {
  57. self::unauthorized("User setting is blocked");
  58. }
  59. if (is_null($user_setting->getIsBlocked())) {
  60. $user_setting->setIsBlocked($real_user_setting->getIsBlocked());
  61. }
  62. LuticateSettingsUsersDataAccess::edit($user_setting);
  63. }
  64. }
  65. return true;
  66. }
  67. }