Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


dev:data:ups

Универсальные персональные настройки

Механизм универсальных персональных настроек, сокращенно UPS, позволяет сохранять уникальные настройки каждому пользователю персонально. Это необходимо, когда сессия и cookies не подходят для хранения этих данных ввиду разных причин. В тоже время, не стоит хранить очень важные данные, ибо они однажды могут быть очищены ради оптимизации базы данных, используйте для таких данных собственную таблицу.

Для хранения используется id пользователя и уникальный ключ этой настройки. Например ваш компонент имеет имя «raduga», а сохранять вы собираетесь цвет, значит ключ будет иметь вид: «raduga.color».

Сохранение данных

cmsUser::setUPS('raduga.color', 'blue');

Чтобы сохранить не для текущго пользователя, а для любого другого, используйте третий аргумент с id пользователя, это касается всех методов UPS:

cmsUser::setUPS('raduga.color', 'blue', 12);

Получение данных

$color = cmsUser::getUPS('raduga.color');

Удаление данных

cmsUser::deleteUPS('raduga.color');
cmsUser::deleteUPS('raduga.color', 12); // удалим данные для пользователя с id 12

Если вы только получили новые данные и не знаете, были ли они раньше сохранены и не совпадают ли они со старыми. То используйте метод, который проверит что:

  • переменная с данными не пуста;
  • новые данные данные не совпадают со старыми и обновит их в случае необходимости;
  • вернёт актуальные данные.
$color = $this->request->get('color'); // null
$color = cmsUser::getUPSActual('raduga.color', $color); // вернёт blue из примера выше
$color = cmsUser::getUPS('raduga.color'); // вернёт blue
$color = $this->request->get('color'); // red
$color = cmsUser::getUPSActual('raduga.color', $color); // вернёт red и сохранит в бд
$color = cmsUser::getUPS('raduga.color'); // вернёт red 

К оглавлению раздела "Хранение различных данных"


К оглавлению документации для разработчиков

dev/data/ups.txt · Последние изменения: 13.01.2016 17:05 — fuze