Add constants to represent available permissions.
[platal.git] / classes / user.php
index b69c6d2..8551cbd 100644 (file)
 
 class User extends PlUser
 {
+    const PERM_GROUPS            = 'groups';
+    const PERM_MAIL              = 'mail';
+    const PERM_DIRECTORY_AX      = 'directory_ax';
+    const PERM_DIRECTORY_PRIVATE = 'directory_private';
+    const PERM_EDIT_DIRECTORY    = 'edit_directory';
+    const PERM_FORUMS            = 'forums';
+    const PERM_LISTS             = 'lists';
+    const PERM_PAYMENT           = 'payment';
+
     private $_profile_fetched = false;
     private $_profile = null;
 
@@ -618,13 +627,15 @@ class User extends PlUser
         }
 
         if ($clearAll) {
+            global $globals;
+
             $groupIds = XDB::iterator('SELECT  asso_id
                                          FROM  group_members
                                         WHERE  uid = {?}',
                                       $this->id());
             while ($groupId = $groupIds->next()) {
                 $group = Group::get($groupId);
-                if ($group->notif_unsub) {
+                if (!empty($group) && $group->notif_unsub) {
                     $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl');
                     $admins = $group->iterAdmins();
                     while ($admin = $admins->next()) {
@@ -637,17 +648,22 @@ class User extends PlUser
                 }
             }
 
-            $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',
+            $tables = array('account_auth_openid', 'announce_read', 'contacts',
+                            'email_options', 'email_send_save', 'emails',
+                            'forum_innd', 'forum_profiles', 'forum_subs',
+                            'group_announces_read', 'group_members',
+                            'group_member_sub_requests', 'reminder', 'requests',
                             'requests_hidden');
-
             foreach ($tables as $t) {
                 XDB::execute('DELETE FROM  ' . $t . '
                                     WHERE  uid = {?}',
-                    $this->id());
+                             $this->id());
+            }
+
+            foreach (array('gapps_accounts', 'gapps_nicknames') as $t) {
+                XDB::execute('DELETE FROM  ' . $t . '
+                                    WHERE  l_userid = {?}',
+                             $this->id());
             }
 
             XDB::execute("UPDATE  accounts
@@ -668,8 +684,8 @@ class User extends PlUser
             if ($globals->mailstorage->googleapps_domain) {
                 require_once 'googleapps.inc.php';
 
-                if (GoogleAppsAccount::account_status($uid)) {
-                    $account = new GoogleAppsAccount($user);
+                if (GoogleAppsAccount::account_status($this->id())) {
+                    $account = new GoogleAppsAccount($this);
                     $account->suspend();
                 }
             }
@@ -732,16 +748,12 @@ class User extends PlUser
         }
 
         // Updates user in following tables.
-        foreach (array('group_announces', 'payment_transactions', 'log_sessions') as $table) {
+        foreach (array('group_announces', 'payment_transactions', 'log_sessions', 'group_events') as $table) {
             XDB::execute('UPDATE  ' . $table . '
                              SET  uid = {?}
                            WHERE  uid = {?}',
                          $newuser->id(), $this->id());
         }
-        XDB::execute('UPDATE  group_events
-                         SET  organisateur_uid = {?}
-                       WHERE  organisateur_uid = {?}',
-                     $newuser->id(), $this->id());
 
         // Merges user in following tables, ie updates when possible, then deletes remaining occurences of the old user.
         foreach (array('group_announces_read', 'group_event_participants', 'group_member_sub_requests', 'group_members') as $table) {