[msBonus2+EasyComm] Начисление бонусов за отзывы

Компонент EasyComm часто используют в качестве реализации отзывов на сайте. Иногда бывает необходимо мотивировать покупателей писать отзывы об их покупках. Для этого можно использовать компонент msBonus2 и начислять пользователю определённую сумму бонусов на его бонусный счёт.
Инструкция реализации данного функционала максимально проста.
1) Создаём плагин msBonus2+EasyComm на 3 события:
– OnBeforeEcMessageSave
– OnEcMessageSave
– OnEcMessagePublish
2) Код плагина:
/**
* Плагин начисления бонусов за опубликованный коммент EasyComm
* Бонусы реализованы компонентом msBonus2
*
* Работает только с msBonus2 версии 1.3.0 и выше
*/
// Количество баллов, начисляемых юзеру за опубликованный коммент
$bonus_amount = 7;
$will_awarded = false;
switch ($modx->event->name) {
case 'OnBeforeEcMessageSave':
if ($mode === 'upd') {
$ecMessageOld = $modx->getObject('ecMessage', ['id' => (int)$id]);
$object->set('published_before', $ecMessageOld->get('published'));
}
break;
case 'OnEcMessageSave':
$will_awarded = ($mode === 'upd')
&& !empty($object->get('createdby'))
&& !empty($object->get('published'))
&& empty($object->get('published_before'));
break;
case 'OnEcMessagePublish':
$will_awarded = !empty($object->get('createdby'));
break;
}
if ($will_awarded === true) {
$msb2 = $modx->getService('msbonus2', 'msBonus2', $modx->getOption('msb2_core_path', null, MODX_CORE_PATH . 'components/msbonus2/') . 'model/msbonus2/');
if (empty($msb2)) {
return;
}
$msb2->getTools();
$msb2->getManager();
$ecMessage = $modx->getObject('ecMessage', ['id' => (int)$id]);
if (empty($ecMessage)) {
return;
}
$was_awarded = $msb2->manager->isExists(
'+', 'ec_accrual',
$ecMessage->get('createdby'), // user_id
$ecMessage->get('id') // comment_id
);
if ($was_awarded === false) {
$msb2->manager->setPlus(
'ec_accrual',
$bonus_amount,
$ecMessage->get('createdby'),
$ecMessage->get('id')
);
}
}
3) Создаём в словарях, в пространстве имён «msbonus2», в теме «logs», запись с ключём msb2_logs_+ec_accrual и текстом «За комментарий» или «За отзыв».
Поблагодарить автора
Отправить деньги
Комментарии: 3
Добрый день! В последнем обновлении msBonus2 есть такое:
Интересует особенно что это такое: «Added bonus-codes»? Для чего это и как с этим работать?
Added bonus-codesМожете расписать по этим новым функционалам в документации или тут рассказать?
Added a check for a running copy of the routine actions cron-script
Added notifications to the user about the upcoming burning of bonuses
Added the ability to accrual and writeoff bonuses en masse
Added the ability to use msMultiCurrency (only in the msmulticurrency.cart_user_currency = false mode)
Интересует особенно что это такое: «Added bonus-codes»? Для чего это и как с этим работать?
Скоро напишу пост.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.