Fix networking display on profiles
[platal.git] / classes / user.php
index 33b4de2..b2a75f0 100644 (file)
@@ -379,6 +379,7 @@ class User extends PlUser
         if (isset($this->last_known_email)) {
             return;
         }
+        // FIXME: We should fetch the last known email as well as the pending registration email (they aren't the same !)
         $infos = XDB::fetchOneAssoc('SELECT  IF (MAX(m.last) > p.relance, MAX(m.last), p.relance) AS last_relance,
                                              p.email AS last_known_email
                                        FROM  register_pending AS p
@@ -404,6 +405,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()
@@ -554,11 +569,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
@@ -580,14 +599,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