需要cmsmadesimple事件的帮助。我正在尝试处理模块FrontEndUsers事件OnLogin。该模块在method.install.php中启动此事件:
$this->CreateEvent( 'OnLogin' );
在我的Civicrm模块method.instal.php中我注册了OnLogin处理程序:
$this->AddEventHandler( 'FrontEndUsers', 'OnLogin' );
所以,让我们开始吧。 FrontEndUser在action.do_login.php中发送此事件:
$parms = array();
$parms['id'] = $this->LoggedInId();
$parms['username'] = $params['feu_input_username'];
$parms['ip'] = cge_utils::get_real_ip();
$this->SendEvent( 'OnLogin', $parms );
$this->_SendNotificationEmail('OnLogin',$parms);
我在CiviCRM模块中执行:
public function DoEvent($originator, $eventname, &$params)
{
if ($originator == 'FrontEndUsers' && $eventname == 'OnLogin')
var_dump($params);
die("feulogin");
}
}
当您进行正面登录时,脚本会按预期终止,但在尝试调试$ params时,会对事件的发送方式感到困惑,因为即使注释掉了:
//$this->SendEvent( 'OnLogin', $parms );
DoEvent()也处理事件(退出带有消息的脚本)。
无法在FrontEndUsers中找到发送OnLogin事件的更多代码,所以请帮我找出。
答案 0 :(得分:0)
自己解决了。 FrontEndUsers从modules / FrontEndUsers / lib / class.FrontEndUsersManipulator.php发送事件:
function Login( $username, $password, $groups = '', $md5pw = false, $force_logout =false)
{
$module->SendEvent('OnLogin',array('id'=>$uid,'username'=>$username,'ip'=>$ip));
}