Fix misdetection of already registered users during registration process.
[platal.git] / classes / user.php
index c69e234..f7f90fa 100644 (file)
@@ -148,6 +148,10 @@ class User extends PlUser
 
     protected static function loadMainFieldsFromUIDs(array $uids, $respect_order = true)
     {
+        if (empty($uids)) {
+            return PlIteratorUtils::emptyIterator();
+        }
+
         global $globals;
         $joins = '';
         $fields = array();
@@ -405,6 +409,20 @@ class User extends PlUser
     }
 
 
+    /** Format of the emails sent by the site
+     */
+    public function setEmailFormat($format)
+    {
+        Platal::assert($format == self::FORMAT_HTML || $format == self::FORMAT_TEXT,
+                       "Invalid email format \"$format\"");
+        XDB::execute("UPDATE  accounts
+                         SET  email_format = {?}
+                       WHERE  uid = {?}",
+                     $format, $this->uid);
+        $this->email_format = $format;
+    }
+
+
     /** Get watch informations
      */
     private function fetchWatchData()
@@ -555,11 +573,15 @@ class User extends PlUser
      */
     public function clear($clearAll = true)
     {
-        XDB::execute('DELETE FROM  account_lost_passwords, register_marketing,
-                                   register_pending, register_subs, watch_nonins,
-                                   watch, watch_promo
-                            WHERE  uid = {?}',
-                     $this->id());
+        $tables = array('account_lost_passwords', 'register_marketing',
+                        'register_pending', 'register_subs', 'watch_nonins',
+                        'watch', 'watch_promo');
+
+        foreach ($tables as $t) {
+            XDB::execute('DELETE FROM  ' . $t . '
+                                WHERE  uid = {?}',
+                                $this->id());
+        }
 
         if ($clearAll) {
             $groupIds = XDB::iterator('SELECT  asso_id
@@ -581,14 +603,19 @@ class User extends PlUser
                 }
             }
 
-            XDB::execute('DELETE FROM  account_auth_openid, announce_read, contacts,
-                                       email_options, email_send_save, emails,
-                                       forum_innd, forum_profiles, forum_subs,
-                                       gapps_accounts, gapps_nicknames, group_announces_read,
-                                       group_members, group_member_sub_requests, reminder, requests,
-                                       requests_hidden
-                                WHERE  uid = {?}',
-                         $this->id());
+            $tables = array('account_auth_openid', 'gannounce_read', 'contacts',
+                            'email_options', 'gemail_send_save', 'emails',
+                            'forum_innd', 'gforum_profiles', 'forum_subs',
+                            'gapps_accounts', 'ggapps_nicknames', 'group_announces_read',
+                            'group_members', 'ggroup_member_sub_requests', 'reminder', 'requests',
+                            'requests_hidden');
+
+            foreach ($tables as $t) {
+                XDB::execute('DELETE FROM  ' . $t . '
+                                    WHERE  uid = {?}',
+                    $this->id());
+            }
+
             XDB::execute("UPDATE  accounts
                              SET  registration_date = 0, state = 'pending', password = NULL,
                                   weak_password = NULL, token = NULL, is_admin = 0