====== Бонус при регистрации ====== Если при регистрации пользователя необходимо начислять ему определенную сумму на лицевой счет, то можно воспользоваться следующим решением. - Создаем константы ''REGISTRATION_BONUS_VALUE'' и ''REGISTRATION_BONUS_CAPTION'', например:REGISTRATION_BONUS_VALUE = 20 REGISTRATION_BONUS_CAPTION = Приветственный бонус за регистрацию - Добавляем наблюдатель: array(9) ); /** * Регистриует наблюдатель. * * @return void */ static public function attach() { Core_Event::attach('siteuser.onAfterCreate', array(__CLASS__, 'addRegistrationBonus')); } /** * Деактивирует наблюдатель. * * @return void */ static public function detach() { Core_Event::detach('siteuser.onAfterCreate', array(__CLASS__, 'addRegistrationBonus')); } /** * Добавляет бонус при регистрации. * * @param Siteuser_Model $oSiteuser * @return void */ static public function addRegistrationBonus(Siteuser_Model $oSiteuser) { // Если текущего сайта нет в списке или бонус не активирован, то прерываем выполнение if (!in_array(CURRENT_SITE, array_keys(self::$_sites)) || !defined('REGISTRATION_BONUS_VALUE')) { return; } foreach (self::$_sites[CURRENT_SITE] as $shopId) { $oShopSiteuserTransaction = Core_Entity::factory('Shop_Siteuser_Transaction'); $oShopSiteuserTransaction->shop_id = Core_Entity::factory('Shop', $shopId)->id; $oShopSiteuserTransaction->siteuser_id = $oSiteuser->id; try { $oShopSiteuserTransaction->active = 1; $oShopSiteuserTransaction->amount_base_currency = $oShopSiteuserTransaction->amount = floatval(REGISTRATION_BONUS_VALUE); $oShopSiteuserTransaction->type = 1; $oShopSiteuserTransaction->description = defined('REGISTRATION_BONUS_CAPTION') ? REGISTRATION_BONUS_CAPTION : 'Приветственный бонус за регистрацию'; $oShopSiteuserTransaction->save(); } catch (Exception $e) { // Ничего не делаем, если не удалось создать бонус } } } } - В наблюдателе указывем для каких сайтов и интернет-магазинов должен работать бонус:/** * Сайты и интернет-магазины. * * @var array */ static protected $_sites = array( 7 => array(9) ); - Подключаем наблюдатель в bootstrap.php:Siteuser_Observer_RegistrationBonus::attach(); Страницу создал Максим Засорин 12.01.18 в 09:49