From 56505a11743d6869f6222f6b9467158edf295a44 Mon Sep 17 00:00:00 2001 From: alecpl Date: Thu, 11 Mar 2010 18:34:01 +0000 Subject: - Options virtuser_* replaced with virtuser_* plugins - Plugin API: Implemented 'email2user' and 'user2email' hooks --- program/include/rcube_user.php | 84 +++++------------------------------------- 1 file changed, 10 insertions(+), 74 deletions(-) (limited to 'program/include') diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php index ab44cdca2..63ffa63ec 100644 --- a/program/include/rcube_user.php +++ b/program/include/rcube_user.php @@ -447,29 +447,23 @@ class rcube_user /** - * Resolve username using a virtuser file + * Resolve username using a virtuser plugins * * @param string E-mail address to resolve * @return string Resolved IMAP username */ static function email2user($email) { - $r = self::findinvirtual('/^' . preg_quote($email, '/') . '\s/'); - - for ($i=0; $i 0) - return trim($arr[count($arr)-1]); - } + $rcmail = rcmail::get_instance(); + $plugin = $rcmail->plugins->exec_hook('email2user', + array('email' => $email, 'user' => NULL)); - return NULL; + return $plugin['user']; } /** - * Resolve e-mail address from virtuser file/table + * Resolve e-mail address from virtuser plugins * * @param string User name * @param boolean If true returns first found entry @@ -478,70 +472,12 @@ class rcube_user */ static function user2email($user, $first=true, $extended=false) { - $result = array(); $rcmail = rcmail::get_instance(); - $dbh = $rcmail->get_dbh(); + $plugin = $rcmail->plugins->exec_hook('user2email', + array('email' => NULL, 'user' => $user, + 'first' => $first, 'extended' => $extended)); - // SQL lookup - if ($virtuser_query = $rcmail->config->get('virtuser_query')) { - $sql_result = $dbh->query(preg_replace('/%u/', $dbh->escapeSimple($user), $virtuser_query)); - while ($sql_arr = $dbh->fetch_array($sql_result)) - if (strpos($sql_arr[0], '@')) { - $result[] = ($extended && count($sql_arr) > 1) ? $sql_arr : $sql_arr[0]; - if ($first) - return $result[0]; - } - } - // File lookup - $r = self::findinvirtual('/\s' . preg_quote($user, '/') . '\s*$/'); - for ($i=0; $i 0 && strpos($arr[0], '@')) - { - $result[] = trim(str_replace('\\@', '@', $arr[0])); - - if ($first) - return $result[0]; - } - } - - return empty($result) ? NULL : $result; + return empty($plugin['email']) ? NULL : $plugin['email']; } - - /** - * Find matches of the given pattern in virtuser file - * - * @param string Regular expression to search for - * @return array Matching entries - */ - private static function findinvirtual($pattern) - { - $result = array(); - $virtual = null; - - if ($virtuser_file = rcmail::get_instance()->config->get('virtuser_file')) - $virtual = file($virtuser_file); - - if (empty($virtual)) - return $result; - - // check each line for matches - foreach ($virtual as $line) - { - $line = trim($line); - if (empty($line) || $line{0}=='#') - continue; - - if (preg_match($pattern, $line)) - $result[] = $line; - } - - return $result; - } - } - - -- cgit v1.2.3