[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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Можете расписать по этим новым функционалам в документации или тут рассказать?
Интересует особенно что это такое: «Added bonus-codes»? Для чего это и как с этим работать?