map(function($value) { $value->setValue(json_decode($value->getValue())); return $value; }); } /** * @param $user_setting LuticateSettingsUsersDbo * @param $admin_edit bool * @return bool */ public static function edit($user_setting, $admin_edit) { LuticateUsersBusiness::checkUserId($user_setting->getUserId()); $setting = LuticateSettingsBusiness::checkSettingName($user_setting->getName()); if ($setting->getIsBlocked() && !$admin_edit) { self::unauthorized("Setting is blocked"); } if (is_null($user_setting->getValue())) { LuticateSettingsUsersDataAccess::delete($user_setting->getUserId(), $user_setting->getName()); } else { $setting->setValue($user_setting->getValue()); LuticateSettingsBusiness::checkSetting($setting); $user_setting->setValue(json_encode($user_setting->getValue())); $real_user_setting = LuticateSettingsUsersDataAccess::getByName($user_setting->getUserId(), $user_setting->getName()); if (is_null($real_user_setting)) { if (is_null($user_setting->getIsBlocked())) { $user_setting->setIsBlocked(false); } LuticateSettingsUsersDataAccess::add($user_setting); } else { if ($real_user_setting->getIsBlocked() && !$admin_edit) { self::unauthorized("User setting is blocked"); } if (is_null($user_setting->getIsBlocked())) { $user_setting->setIsBlocked($real_user_setting->getIsBlocked()); } LuticateSettingsUsersDataAccess::edit($user_setting); } } return true; } }