Es handelt sich um folgede Funktion in der Klasse FrontendUserCollection
Code: Alles auswählen
00093 function create ($username, $password = "")
00094 {
00095 global $client, $auth;
00096
00097 /* Check if the username already exists */
00098 $this->select("idclient='".Contenido_Security::toInteger($client)."' AND username='".urlencode($username)."'");
00099
00100 if ($this->next())
00101 {
00102 return $this->create($username."_".substr(md5(rand()),0,10), $password);
00103
00104 }
00105
00106 $item = parent::create();
00107 $item->set("idclient", $client);
00108 $item->set("username", $username);
00109 $item->set("password", $password);
00110 $item->set("created", date("Y-m-d H:i:s"), false);
00111 $item->set("author", $auth->auth["uid"]);
00112 $item->set("active", 0);
00113
00114 $item->store();
00115
00116 /* Put this user into the default groups */
00117 $fegroups = new FrontendGroupCollection;
00118 $fegroups->select("idclient = '".Contenido_Security::toInteger($client)."' AND defaultgroup='1'");
00119
00120 $members = new FrontendGroupMemberCollection;
00121
00122 $iduser = $item->get("idfrontenduser");
00123
00124 while ($fegroup = $fegroups->next())
00125 {
00126 $idgroup = $fegroup->get("idfrontendgroup");
00127 $members->create($idgroup, $iduser);
00128 }
00129
00130 return $item;
00131 }
Dass ist nicht in jedem Fall sinnvoll, manchmal möchte man ggf. einfach nur die Rückmeldung, dass der Name schon vergeben ist, und dass der user einen anderen wählen soll.
Für den Fall rege ich an, die Funktion um einen Parameter zu erweitern, über den man steuert, ob eine Fehlermeldung zurückgegeben werden soll, oder ob der Name mit diesem Postfix angelegt werden soll.
Code: Alles auswählen
00093 function create ($username, $password = "",[b] $postfix=TRUE[/b])
00094 {
00095 global $client, $auth;
00096
00097 /* Check if the username already exists */
00098 $this->select("idclient='".Contenido_Security::toInteger($client)."' AND username='".urlencode($username)."'");
00099
00100 if ($this->next() [b]&& $postfix==TRUE[/b])
00101 {
00102 return $this->create($username."_".substr(md5(rand()),0,10), $password);
00103
00104 }[b]else return false;[/b]
00105
00106 $item = parent::create();
00107 $item->set("idclient", $client);
00108 $item->set("username", $username);
00109 $item->set("password", $password);
00110 $item->set("created", date("Y-m-d H:i:s"), false);
00111 $item->set("author", $auth->auth["uid"]);
00112 $item->set("active", 0);
00113
00114 $item->store();
00115
00116 /* Put this user into the default groups */
00117 $fegroups = new FrontendGroupCollection;
00118 $fegroups->select("idclient = '".Contenido_Security::toInteger($client)."' AND defaultgroup='1'");
00119
00120 $members = new FrontendGroupMemberCollection;
00121
00122 $iduser = $item->get("idfrontenduser");
00123
00124 while ($fegroup = $fegroups->next())
00125 {
00126 $idgroup = $fegroup->get("idfrontendgroup");
00127 $members->create($idgroup, $iduser);
00128 }
00129
00130 return $item;
00131 }
Im Sinne von Konsistenten Code, sollte hier doch die Funktion create() nicht nochmal die SQL-Abfrage (Zeile 98) aufrufen, sondern die schon existierende Funktion "userExists" ?!
Minimale Änderung, große Wirkung