Variablenübergabe bei Event onUserRegistered

Hilfe zu Modulen und Tags
Post Reply
Gromit

Variablenübergabe bei Event onUserRegistered

Post 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
NaN

Re: Variablenübergabe bei Event onUserRegistered

Post 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.
Gromit

Re: Variablenübergabe bei Event onUserRegistered

Post 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.
Post Reply

Return to “Module und Tags”