Хранилище пар «ключ-значение» Plesk используется для хранения настроек пользователя или секретных ключей. Для доступа к хранилищу пар «ключ-значение» Plesk используйте класс pm_Settings. Ключи и значения хранятся в контексте расширения.

Если вам надо присвоить значение, используйте метод

pm_Settings::set('authToken', $authToken);

Особый случай:

pm_Settings::set('something', null);

Примечание: До Plesk 17.0 такая инструкция привела бы к выдаче исключения. Начиная с Plesk 17.0, эта инструкция приведет к удалению соответствующего элемента из хранилища пар «ключ-значение».

Теперь вы можете получить значение этой переменной, используя метод

$authToken = pm_Settings::get('authToken');

Можно использовать необязательный параметр, чтобы указать значение, которое будет возвращено по умолчанию в случае, если соответствующий ключ не найден:

$message = pm_Settings::get('message', 'default message');

Чтобы получить доступ к этим значениям в каком-либо месте кода, сначала инициализируйте контекст:

pm_Context::init('extension-id');

Необходимо инициализировать контекст в следующих местах кода:

  • Планировщик задач.
  • Пред-/послеустановочные скрипты
  • Обработчики событий

Шифрование данных

Хранилище пар «ключ-значение» позволяет хранить и получать данные в зашифрованном виде.

Примечание: Настоятельно рекомендуем вам использовать именно этот подход при работе с конфиденциальными данными, такими, как учетные данные пользователя и так далее.

  • Метод setEncrypted() сохраняет зашифрованные данные в хранилище пар «ключ-значение».
pm_Settings::setEncrypted('secretValue', $secretValue);
  • Метод getDecrypted() получает зашифрованное значение из хранилища пар «ключ-значение».
$secretValue = pm_Settings::getDecrypted('secretValue');

Очистка хранилища пар «ключ-значение»

Начиная с Plesk 12.5, стало возможным очистить настройки расширения с помощью метода clean(). Вы можете использовать его для добавления кнопки Вернуться к значениям по умолчанию в интерфейсе вашего расширения.

Комментарии

Ограничение длины значения – 2000 символов.

Ограничение длины строки сохраненного значения – 2000 символов.

Меры предосторожности:

  • Избегайте хранения значений, длина которых больше 2000 символов.

    Примечание: В версиях Plesk ниже 17.0 сохраняются только первые 2000 символов, остальные символы обрезаются. Начиная с Plesk 17.0, такое значение вообще не будет сохранено, и будет выдано исключение.

  • Избегайте хранения значений, которые имеют тенденцию расти по длине, как, например, список доменов в виде строки JSON.

Советы по тестированию:

  • Проверяйте длину значений, сохраняемых расширением.
  • Для сохраненных значений длиной около 2000 символов, удостоверьтесь в том, что расширение должным образом проверяет, что значение имеет допустимую длину.
  • Тестируйте расширение на нескольких доменах или в схожих условиях (умножая количество сущностей), в зависимости от функциональности расширения.

Значения сохраняются в виде обычного текста

Данные, сохраненные в хранилище пар «ключ-значение», хранятся в виде обычного текста, без шифрования.

Избегайте хранения конфиденциальной информации.

Хранилище пар «ключ-значение» сохраняется и восстанавливается как часть резервной копии сервера

Хранилище пар «ключ-значение» Plesk сохраняется как часть резервной копии сервера. Таким образом, восстановление сервера Plesk из резервной копии может привести к откату некоторых или всех изменений данных хранилища, выполненных расширением.

Советы по тестированию:

Проверьте, что расширение ведет себя правильно после восстановления сервера. Например, создайте резервную копию, удалите некоторые элементы, связанные с расширением, из хранилища пар «ключ-значение», восстановите сервер из резервной копии и удостоверьтесь в том, что расширение работает так, как ожидается.

Используйте GUID объектов Plesk

Чтобы гарантировать отсутствие конфликтов между объектами, используйте GUID объектов Plesk (или ID, если GUID недоступны), чтобы однозначно идентифицировать домены, пользователей и т.д. Это поможет безопасно разрешить ситуацию, когда какой-либо объект удаляется из системы одним пользователем, а затем создается под тем же именем другим пользователем.

Советы по тестированию:

Проверьте, что GUID используются как идентификаторы объектов.

Очистка хранилища пар «ключ-значение» при удалении расширения

Хранилище пар «ключ-значение» автоматически очищается при удалении расширения. Вам необязательно делать это самостоятельно в скрипте pre-uninstall.php.