Я учусь писать (изменять) расширения джумлы, но не всегда понимаю идеологию.
Плугин hpregistration позволяет добавить и обработать tincaptcha в регистрацию пользователя.
Он добавляет onBeforeStoreUser в котором выполняется проверка
$captchk = plgSystemTincaptcha::check(JRequest::getVar('captcha', '', 'post'));
if ($isnew && $captchk !== true && $mainframe->isSite())
{
JError::raiseWarning(0, $captchk);
return false;
}
т.е. подразумевается что если код с картинки введен неправильно то регистрация не произойдет.
Но при этом нашел что onBeforeStoreUser в самой джумле вызывается в двух местах примерно таким образом
$dispatcher->trigger( 'onBeforeStoreUser', array( $old->getProperties(), $isnew ) );
После чего следующими строчками каода данные пользователя успешно сохраняются в любом случае.
Правильно ли я понимаю, что без изменения основного кода сам плугин заранее бесполезен? И все такие ситуации решаются хаками?
И следует писать примерно так ($dispatcher->trigger сможет вернуть значение?)
$res = $dispatcher->trigger( 'onBeforeStoreUser', array( $old->getProperties(), $isnew ) );
if($res){
...
Спасибо.
Попробовал..
$res = $dispatcher->trigger( 'onBeforeStoreUser', array( $old->getProperties(), $isnew ) );
не возвращает ничего..
Можно передать через глобальную переменную результат, но может можно както более правильно?
Еще стандартная форма при регистрации пользователя не запоминает поля если чтото вбито неправильно.