Page 1 of 1
Variablenübergabe bei Event onUserRegistered
Posted: Tue May 27, 2008 12:05 pm
by Gromit
Hallo zusammen
Für neue Benutzer, die sich über das Modul Selfregistred angemeldet haben, möchte ich einen Marker in das CGGoogleMap setzen. Dazu habe ich den Aufruf der EventRoutine onUserRegistered um die User-Properties erweitert. Ich programmiere zwar schon seit >20 Jahren (Basic, Pascal, VB.NET) aber PHP ist für mich noch absolutes Neuland.
Mein Frage ist: wie werden die Variablen an das Event-UDT übergeben? Resp. wie greift man darin zu?
Das ist der angepasste Event-Aufruf (Selfregistration.module.php)
Code: Select all
$this->SendEvent('onUserRegistered',array('username'=>$username,'id'=>$uid, 'usr_properties'=>$row));
Gruss
Uwe
Re: Variablenübergabe bei Event onUserRegistered
Posted: Tue May 27, 2008 5:13 pm
by NaN
Gromit wrote:
...
wie werden die Variablen an das Event-UDT übergeben?
...
$this->SendEvent('
onUserRegistered',
array('username'=>$username,'id'=>$uid, 'usr_properties'=>$row); )
Wenn Du Dir den Aufruf genau anschaust, siehst Du, dass dem Event zwei Dinge übergeben werden.
Einmal der
EventName (onUserRegistered) und einmal ein
Feld mit einem Haufen Variablen (array('username'=>$username,...))
Dieses Feld wird in der Regel von der API als Array mit dem Namen
$params an die UDTs übergeben.
Du müsstest also in Deinem UDT z.B. mit
$params['username'] auf den Benutzernamen des neu registrierten Users zugreifen können.
Re: Variablenübergabe bei Event onUserRegistered
Posted: Wed May 28, 2008 4:54 am
by cyberman
Re: Variablenübergabe bei Event onUserRegistered
Posted: Thu May 29, 2008 12:51 pm
by Gromit
Hallo
Super Danke. Der Link ist sehr hilfreich.
Der Codeschnipsel ist in der geposteten Variante nicht ganz korrekt. Da wird nämlich nur der letzte Record übermittelt. Nicht das ganze Recordset. Also muss noch etwas Code hin um die Recors einzusammeln
Code: Select all
// he's in.... he's in... now just add his properties
$db = $this->GetDb();
$q = "SELECT * FROM ".cms_db_prefix()."module_selfreg_properties
WHERE user = ?";
$dbresult = $db->Execute( $q, array( $tmpid ) );
if( !$dbresult )
{
return $this->Lang('error_dberror');
}
// added in for setting markers in googlemap
// the additinal information are send to te 'onUserRegistred Event
$usrprop = array();
while( $row = $dbresult->FetchRow() )
{
$feusers->SetUserPropertyFull( $row['title'], $row['data'], $uid );
$usrprop[$row['title']] = $row['data'];
}
// // now display a warm fuzzy message
// global $gCms;
// $this->smarty->assign('username', $username );
// $this->smarty->assign('sitename', $gCms->config['root_url']);
// echo $this->ProcessTemplateFromDatabase('selfreg_finalmessage_template');
// send an event
$this->SendEvent('onUserRegistered',array('username'=>$username,'id'=>$uid,'usr_properties'=>$usrprop));
Vielen Dank für den Support.