From 2581c87e657041b478d2b9f1ea78de00a4499013 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 28 Apr 2014 08:13:09 -0400
Subject: [PATCH] Fix identities_level=4 handling in new_user_dialog plugin (#1489840)

---
 CHANGELOG                                   |    1 +
 plugins/new_user_dialog/composer.json       |    2 +-
 plugins/new_user_dialog/package.xml         |    4 ++--
 plugins/new_user_dialog/new_user_dialog.php |   21 +++++++++++++++------
 4 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 1ae3c20..96f05af 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -29,6 +29,7 @@
 - Fix error when spell-checking an empty text (#1489831)
 - Avoid popupmenus being closed when scrollbar is clicked (#1489832)
 - Add proxy_whitelist configuration option (#1489729)
+- Fix identities_level=4 handling in new_user_dialog plugin (#1489840)
 
 RELEASE 1.0.0
 -------------
diff --git a/plugins/new_user_dialog/composer.json b/plugins/new_user_dialog/composer.json
index 9dcedc3..cf3a372 100644
--- a/plugins/new_user_dialog/composer.json
+++ b/plugins/new_user_dialog/composer.json
@@ -3,7 +3,7 @@
     "type": "roundcube-plugin",
     "description": "When a new user is created, this plugin checks the default identity and sets a session flag in case it is incomplete. An overlay box will appear on the screen until the user has reviewed/completed his identity.",
     "license": "GNU GPLv3+",
-    "version": "2.0",
+    "version": "2.1",
     "authors": [
         {
             "name": "Thomas Bruederli",
diff --git a/plugins/new_user_dialog/new_user_dialog.php b/plugins/new_user_dialog/new_user_dialog.php
index 39a7076..4203f93 100644
--- a/plugins/new_user_dialog/new_user_dialog.php
+++ b/plugins/new_user_dialog/new_user_dialog.php
@@ -59,7 +59,8 @@
       $table->add(null, html::tag('input', array(
         'type' => 'text',
         'name' => '_name',
-        'value' => $identity['name']
+        'value' => $identity['name'],
+        'disabled' => $identities_level == 4
       )));
 
       $table->add('title', $this->gettext('email'));
@@ -67,14 +68,15 @@
         'type' => 'text',
         'name' => '_email',
         'value' => rcube_utils::idn_to_utf8($identity['email']),
-        'disabled' => ($identities_level == 1 || $identities_level == 3)
+        'disabled' => in_array($identities_level, array(1, 3, 4))
       )));
 
       $table->add('title', $this->gettext('organization'));
       $table->add(null, html::tag('input', array(
         'type' => 'text',
         'name' => '_organization',
-        'value' => $identity['organization']
+        'value' => $identity['organization'],
+        'disabled' => $identities_level == 4
       )));
 
       $table->add('title', $this->gettext('signature'));
@@ -130,6 +132,7 @@
     $rcmail      = rcmail::get_instance();
     $identity    = $rcmail->user->get_identity();
     $ident_level = intval($rcmail->config->get('identities_level', 0));
+    $disabled    = array();
 
     $save_data = array(
       'name'         => rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST),
@@ -138,9 +141,15 @@
       'signature'    => rcube_utils::get_input_value('_signature', rcube_utils::INPUT_POST),
     );
 
-    // don't let the user alter the e-mail address if disabled by config
-    if (in_array($ident_level, array(1,3,4))) {
-      $save_data['email'] = $identity['email'];
+    if ($ident_level == 4) {
+      $disabled = array('name', 'email', 'organization');
+    }
+    else if (in_array($ident_level, array(1, 3))) {
+      $disabled = array('email');
+    }
+
+    foreach ($disabled as $key) {
+      $save_data[$key] = $identity[$key];
     }
 
     if (empty($save_data['name']) || empty($save_data['email'])) {
diff --git a/plugins/new_user_dialog/package.xml b/plugins/new_user_dialog/package.xml
index 68a9299..90ca4be 100644
--- a/plugins/new_user_dialog/package.xml
+++ b/plugins/new_user_dialog/package.xml
@@ -13,9 +13,9 @@
 		<email>roundcube@gmail.com</email>
 		<active>yes</active>
 	</lead>
-	<date>2013-05-09</date>
+	<date>2014-04-28</date>
 	<version>
-		<release>2.0</release>
+		<release>2.1</release>
 		<api>2.0</api>
 	</version>
 	<stability>

--
Gitblit v1.9.1