Изменение значений настроек форума

grisha2217

Проверенные
Сообщения
913
Решения
6
Реакции
1,391
Баллы
5,715
Расскажу свою историю. Мне понадобился скрипт, проверяющий валидность киви кошелька, забанен ли он или нет. В настройках есть пункт "Активные системы для приёма платежей", где есть QIWI, WebMoney, Яндекс.Деньги и другие, и я хочу выключать способ оплаты QIWI, чтобы пользователи не могли пополнить баланс через QIWI, так как киви заблокирован. Вот как будет выглядеть отключение системы в настройках:

PHP:
<?php
class Lolzteam_Payment_Qiwi extends Lolzteam_Payment_Abstract
{
    public function walletIsValid()
    {
        $isValid = true;
        // здесь была некая функция для проверки
        return $isValid;
    }

    public function disableWalletForDeposit()
    {
        $options = XenForo_Application::getOptions();
        $systems = $options->get('enabledPaymentSystemForDeposit');

        $systems['qiwi'] = 0;

        /** @var XenForo_Model_Option $optionModel */
        $optionModel = $this->getModelFromCache('XenForo_Model_Option');
        $optionModel->updateOptions(array('enabledPaymentSystemForDeposit' => $systems));
    }
}

Разберем по порядку. Если функция walletIsValid() возвращает false, то я вызываю disableWalletForDeposit() и вот, что она делает:
Получаем текущее значение настройки (в моём случае - это массив):
PHP:
 $options = XenForo_Application::getOptions();
$systems = $options->get('enabledPaymentSystemForDeposit');

Ставлю значение "отключено"
$systems['qiwi'] = 0;

Сохраняем настройку:
PHP:
 /** @var XenForo_Model_Option $optionModel */
$optionModel = $this->getModelFromCache('XenForo_Model_Option');
$optionModel->updateOptions(array('enabledPaymentSystemForDeposit' => $systems));

В функцию updateOptions мы должны передать ключи и значения тех настроек, которые хотим поменять.

Еще один пример. Отключаем форум:
PHP:
$optionModel->updateOptions(array('boardActive' => false));
Таким образом можно изменять настройки форума через скрипт.
 
.это вообще к чему? Люди, которым это надо, сами могут заглянуть в модель настроек. Да и вообще настройки не для того созданы, чтобы в коде значения менять.
 
BINGO_SHARK, на момент разработки я не знал, как это делать. Пробовал писать что-то подобное:
PHP:
$options = XenForo_Application::getOptions();
$options->set('key', 'someValue');

И это не работало, потом уже стало ясно почему. Информация для начинающих разработчиков.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу