Платное повышение прав на php

xaker01

Проверенные
Сообщения
256
Реакции
198
Баллы
11,045
Не давно столкнулся с задачей, что бы было повышение прав при оплате $name платежной системой через внешний скрипт.
В документации функция дана, но не все точно описано. Дополню из личного опыта

Сама функция для этого дела
PHP:
$userModel->upgradeUser($userId,$upgrade, $allowInsertUnpurchasable,$endDate);
Вроде бы все хорошо, но переменная $upgrade является массивом. и что в ней должно быть неизвестно.
Путем отладки определяем что.
PHP:
$userId = "id пользователя которого повышаем";
$upgrade['user_upgrade_id'] = "id услуги в повышениях прав";
$upgrade['extra_group_ids'] = "до какой группы повышаем" ;
$upgrade['cost_amount']="сколько денег заплатили" ;

$upgrade['cost_currency']="валюта" ;
$upgrade['length_unit']= 'день/месяц/год';
$upgrade['length_amount']= 'сумма длины';//сам не знаю что это такое но роли не играет
$upgrade['can_purchase']= "тоже не знаю что это, передаем пустой или с любым текстом";

Дальше вызываем все что нам надо для работы функции
PHP:
require( XF_ROOT . '/library/XenForo/Autoloader.php' );
    XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');
    XenForo_Application::initialize($fileDir . '/library', $fileDir);

$userModel = XenForo_Model_UserUpgrade::create('XenForo_Model_UserUpgrade');

$response = $userModel->upgradeUser($userId,$upgrade, $allowInsertUnpurchasable,$endDate);//а тут уже  и повышаем права

как всегда говорю скрипт не идеален, но надеюсь смог помочь с данной проблемой у кого могла она возникнуть
 
$upgrade['length_amount']= 'сумма длины';//сам не знаю что это такое но роли не играет
Это множитель, сколько length_unit в повышении, length_unit - период (день, месяц, год)

$upgrade['can_purchase']= "тоже не знаю что это, передаем пустой или с любым текстом";
Можно не трогать вообще, там дефолт boolean 1, это опция "Можно купить".
 
Последнее редактирование:
Это множитель, сколько length_unit в повышении, length_unit - период (день, месяц, год)


Можно не трогать вообще, там дефолт boolean 1, это опция "Можно купить".
эти данные вроде записываются в бд в extra и ни как не влияют на работу?
лично я еще не обнаружил.
 
эти данные вроде записываются в бд в extra и ни как не влияют на работу?
А смотря что ты делаешь, создаешь/редактируешь повышение (но тогда нужно как минимум title и т.д.) или повышаешь пользователя с готовым user_upgrade_id., посмотри функцию upgradeUser
Код:
    /**
     * Upgrades the user with the specified upgrade.
     *
     * @param integer $userId
     * @param array $upgrade Info about upgrade to apply
     * @param boolean $allowInsertUnpurchasable Allow insert of a new upgrade even if not purchasable
     * @param integer|null $endDate Forces a specific end date; if null, don't overwrite
     *
     * @return integer|false User upgrade record ID
     */
 
А смотря что ты делаешь, создаешь/редактируешь повышение (но тогда нужно как минимум title и т.д.) или повышаешь пользователя с готовым user_upgrade_id., посмотри функцию upgradeUser
Код:
    /**
     * Upgrades the user with the specified upgrade.
     *
     * @param integer $userId
     * @param array $upgrade Info about upgrade to apply
     * @param boolean $allowInsertUnpurchasable Allow insert of a new upgrade even if not purchasable
     * @param integer|null $endDate Forces a specific end date; if null, don't overwrite
     *
     * @return integer|false User upgrade record ID
     */
Как бы все нужные логи я фиксирую в отдельную таблицу, со своими причиндалами.
выше приведенный скрипт как бы работает как надо, повышение прав на нужный срок срабатывает, и cron взаимодействует правильно.

редактирую же я уже через прямое обращение к бд. и меняю только enddate.
Ладно время покажет как оно работает. Ошибок не возникает, то что я хотел оно делает.
В примере я приводил всего лишь не большую часть скрипта.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу