From fc52af24f1418d6590a2d37a0d8cc31b123e38f6 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Tue, 19 Aug 2014 12:08:35 -0400 Subject: [PATCH] Fix merge error that disabled contact drag'n'drop --- plugins/acl/acl.php | 49 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 32 insertions(+), 17 deletions(-) diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php index ab981ab..466185d 100644 --- a/plugins/acl/acl.php +++ b/plugins/acl/acl.php @@ -128,8 +128,10 @@ */ function folder_form($args) { - // Edited folder name (empty in create-folder mode) $mbox_imap = $args['options']['name']; + $myrights = $args['options']['rights']; + + // Edited folder name (empty in create-folder mode) if (!strlen($mbox_imap)) { return $args; } @@ -139,18 +141,8 @@ return $args; } */ - // Namespace root - if ($args['options']['is_root']) { - return $args; - } - // Get MYRIGHTS - if (!($myrights = $args['options']['rights'])) { - return $args; - } - - // Do nothing if no ACL support - if (!$this->rc->storage->get_capability('ACL')) { + if (empty($myrights)) { return $args; } @@ -241,7 +233,7 @@ // Advanced rights $attrib['id'] = 'advancedrights'; - foreach ($supported as $val) { + foreach ($supported as $key => $val) { $id = "acl$val"; $ul .= html::tag('li', null, $input->show('', array( @@ -441,8 +433,9 @@ $acl = trim(get_input_value('_acl', RCUBE_INPUT_GPC)); $oldid = trim(get_input_value('_old', RCUBE_INPUT_GPC)); - $acl = array_intersect(str_split($acl), $this->rights_supported()); - $users = $oldid ? array($user) : explode(',', $user); + $acl = array_intersect(str_split($acl), $this->rights_supported()); + $users = $oldid ? array($user) : explode(',', $user); + $result = 0; foreach ($users as $user) { $user = trim($user); @@ -450,7 +443,7 @@ if (!empty($this->specials) && in_array($user, $this->specials)) { $username = $this->gettext($user); } - else { + else if (!empty($user)) { if (!strpos($user, '@') && ($realm = $this->get_realm())) { $user .= '@' . rcube_idn_to_ascii(preg_replace('/^@/', '', $realm)); } @@ -460,6 +453,9 @@ if (!$acl || !$user || !strlen($mbox)) { continue; } + + $user = $this->mod_login($user); + $username = $this->mod_login($username); if ($user != $_SESSION['username'] && $username != $_SESSION['username']) { if ($this->rc->storage->set_acl($mbox, $user, $acl)) { @@ -623,7 +619,7 @@ private function get_realm() { // When user enters a username without domain part, realm - // alows to add it to the username (and display correct username in the table) + // allows to add it to the username (and display correct username in the table) if (isset($_SESSION['acl_username_realm'])) { return $_SESSION['acl_username_realm']; @@ -712,4 +708,23 @@ return $this->ldap->ready; } + + /** + * Modify user login according to 'login_lc' setting + */ + protected function mod_login($user) + { + $login_lc = $this->rc->config->get('login_lc'); + + if ($login_lc === true || $login_lc == 2) { + $user = mb_strtolower($user); + } + // lowercase domain name + else if ($login_lc && strpos($user, '@')) { + list($local, $domain) = explode('@', $user); + $user = $local . '@' . mb_strtolower($domain); + } + + return $user; + } } -- Gitblit v1.9.1