Приветствую, дамы и господа ) Хотел бы посоветоваться, как лучше организовать следующий функционал. Есть ADSManager. Дописаны коммерческие функции к ней. Создана дополнительная таблица adsmanager_balances, где хранится текущий баланс пользователей. При регистрации пользователя необходимо зачислять на баланс определенную сумму. Следовательно, мне нужно добавить дополнительный запрос при регистрации пользователя (а ещё лучше - при активации), который вставит id пользователя и его бонус в adsmanager_balances Желательно сделать это без внесения изменений в ядро, естественно. Вот не знаю, как лучше сделать... Предложите варианты, чтобы мозги сдвинуть с мертвой точки. Может при первой авторизации пользователя записывать данные в adsmanager_balances? Или все таки лучше делать именно при регистрации зачисление?
есть же система активации? та вот и используй её, допиши (в используемый при активации файл) несколько строк которые будут добавлять N-ое число (сумму) в таблицу adsmanager_balances конечно же это должно быть в контроле используемой для активации ссылки два раза всё равно активировать не получится, а значит и не получится пополнить два раза баланс
Да, активацию смотрел. Но для реализации посредством активации требуются изменения в ядре системы = возможность обновления Или можно придумать что-то, что позволит реализовать пополнение баланса при активации без изменения ядра?
тогда только системный плагин если в ядре есть какой либо специфический триггер то повесить на него исполнение этого плагин если нет специфического триггера то вешать на любой какой есть, но с внедрением одной строки с переменной обозначающей активацию, которая в последствии обработается плагином если и такого нет, тогда опять же создать свой триггер. активировать его и выполнить плагин или просто сделать requere_once файла который выполнить все необходимые действия, если обновление затрёт эту строку то добавить её заново вручную почему именно вручную? потому что неизвестно как будет выглядеть код после обновления и в какое именно место надо будет добавлять requere_once, а так вомжно было бы добавить строку в index.php (в корне) которая бы контролировала изменение в файле adsmanager в котором до этого была внесена requere_once и если её бы там не было найдено то она бы вновь добавлялась ещё вариант - дополнить index.php в корне сайта запросом sql в котором будет отслеживаться появление новых записей в твоей таблице и при появлении оных внесение в балансную таблицу необходимых средств P.S. ни разу не работал с ADSManager по этому не знаю в каком именно месте и что писать, но действовал бы именно по выше приведённой логике P.P.S. и кстати в ядре какой системы? J или ADS?
woojin, красавчик, спасибо. Умеешь подтолкнуть мозги в нужном направлении. Системный плагин, конечно же. Простейшее решение, а вот я не допёр. В общем, согласно документации (http://docs.joomla.org/Plugin) у нас в распоряжении имеются всевозможные события, которые можно использовать для своих нужд. Я использовал onUserAfterSave - для добавления информации в свою таблицу при регистрации пользователя и onUserAfterDelete - для удаления этих данных в случае, если пользователь удален. Код плагина у меня получился таким: Код (PHP): <?php // Запрет прямого доступа. defined('_JEXEC') or die; class plgSystemBalans extends JPlugin { function onUserAfterSave($user, $isnew, $success, $msg) { $db = &JFactory::getDBO(); $sql = "INSERT INTO `#__adsmanager_balances` (`id`,`sum`, `date`) VALUES('".$user['id']."', '".$this->params->get('balans')."', '".$user['registerDate']."');"; $db->setQuery($sql); $db->query(); } function onUserAfterDelete($user, $success, $msg) { $db = &JFactory::getDBO(); $sql = "DELETE FROM `#__adsmanager_balances` WHERE id='".$user['id']."'"; $db->setQuery($sql); $db->query(); } } ?>