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 に答える