0

在 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() 也处理事件(退出带有消息的脚本)。

在发送 OnLogin 事件的 FrontEndUsers 中找不到更多代码,所以请帮我找出来。

4

1 回答 1

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));
}
于 2014-02-20T12:24:05.747 回答