Anpassung einer Funktion für FEU

Ideen für neue Funktionen in CONTENIDO?
Antworten
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Anpassung einer Funktion für FEU

Beitrag von rethus » So 20. Nov 2011, 15:14

Ich möchte anregen, eine Funktion im Contenido-Core anzupassen.

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         }
Derzeit ist es standard, wenn ein Username schon besteht, dass er dann mit einem Postfix aus zufallszeichen (siehe Zeile 102) generiert wird.
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         }
Übrigens sehe ich gerade, dass direct eine function davor (function userExists ($sUsername)) vorhanden ist, um zu checken, ob ein user schon existiert.
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 :D
Zuletzt geändert von Oldperl am So 20. Nov 2011, 19:42, insgesamt 1-mal geändert.
Grund: Moderation: quote durch code ersetzt.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Antworten