Notifies the sender when a moderated message to a ML is accepted (I forgot the text...
[platal.git] / modules / googleapps.php
index 0d868c7..7b63604 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2009 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -36,7 +36,7 @@ class GoogleAppsModule extends PLModule
         );
     }
 
-    function handler_index(&$page, $action = null, $subaction = null)
+    function handler_index(&$page, $action = null)
     {
         require_once("emails.inc.php");
         require_once("googleapps.inc.php");
@@ -61,17 +61,17 @@ class GoogleAppsModule extends PLModule
 
         // Updates the Google Apps account as required.
         if ($action) {
-            if ($action == 'password') {
-                if ($subaction == 'sync') {
+            if ($action == 'password' && Post::has('pwsync')) {
+                S::assert_xsrf_token();
+                if (Post::v('pwsync') == 'sync') {
                     $account->set_password_sync(true);
                     $account->set_password(S::v('password'));
-                    pl_redirect('googleapps#password');
-                } else if ($subaction == 'nosync') {
+                } else {
                     $account->set_password_sync(false);
-                } else if (Post::has('response2') && !$account->sync_password) {
-                    S::assert_xsrf_token();
-                    $account->set_password(Post::v('response2'));
                 }
+            } elseif ($action == 'password' && Post::has('response2') && !$account->sync_password) {
+                S::assert_xsrf_token();
+                $account->set_password(Post::v('response2'));
             }
 
             if ($action == 'suspend' && Post::has('suspend') && $account->active()) {
@@ -180,7 +180,7 @@ class GoogleAppsModule extends PLModule
         }
     }
 
-    function handler_admin_user(&$page, $user = null, $action = null) {
+    function handler_admin_user(&$page, $user = null) {
         require_once("emails.inc.php");
         require_once("googleapps.inc.php");
         $page->changeTpl('googleapps/admin.user.tpl');
@@ -196,11 +196,25 @@ class GoogleAppsModule extends PLModule
             $account = new GoogleAppsAccount($user);
             $storage = new EmailStorage($user, 'googleapps');
 
-            // Force synchronization of plat/al and Google Apps passwords.
-            if ($action == 'forcesync' && $account->sync_password) {
+            // Apply requested actions.
+            if (Post::has('suspend') && $account->active() && !$account->pending_update_suspension) {
+                S::assert_xsrf_token();
+                $account->suspend();
+                $page->trigSuccess('Le compte est en cours de suspension.');
+            } else if (Post::has('unsuspend') && $account->suspended() && !$account->pending_update_suspension) {
+                S::assert_xsrf_token();
+                $account->do_unsuspend();
+                $page->trigSuccess('Le compte est en cours de réactivation.');
+            } else if (Post::has('forcesync') && $account->active() && $account->sync_password) {
+                $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user->id());
+                $account->set_password($res->fetchOneCell());
+                $page->trigSuccess('Le mot de passe est en cours de synchronisation.');
+            } else if (Post::has('sync') && $account->active()) {
                 $res = XDB::query("SELECT password FROM auth_user_md5 WHERE user_id = {?}", $user->id());
                 $account->set_password($res->fetchOneCell());
-                $page->trigSuccess('Le mot de passe a été synchronisé.');
+                $account->set_password_sync(true);
+            } else if (Post::has('nosync') && $account->active()) {
+                $account->set_password_sync(false);
             }
 
             // Displays basic account information.