如何发送cmsmadesimple事件?

时间:2014-02-19 10:57:32

标签: php events cmsmadesimple

需要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事件的更多代码,所以请帮我找出。

1 个答案:

答案 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));
}