| | |
| | | $this->output->set_env('user_id', $this->user->get_hash()); |
| | | } |
| | | |
| | | // set compose mode for all tasks (message compose step can be triggered from everywhere) |
| | | $this->output->set_env('compose_extwin', $this->config->get('compose_extwin',false)); |
| | | |
| | | // add some basic labels to client |
| | | $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout', |
| | | 'refreshing', 'windowopenerror'); |
| | |
| | | /** |
| | | * Build a valid URL to this instance of Roundcube |
| | | * |
| | | * @param mixed Either a string with the action or url parameters as key-value pairs |
| | | * @param mixed Either a string with the action or url parameters as key-value pairs |
| | | * @param boolean Build an URL absolute to document root |
| | | * @param boolean Create fully qualified URL including http(s):// and hostname |
| | | * |
| | | * @return string Valid application URL |
| | | */ |
| | | public function url($p) |
| | | public function url($p, $absolute = false, $full = false) |
| | | { |
| | | if (!is_array($p)) { |
| | | if (strpos($p, 'http') === 0) { |
| | |
| | | $p = array('_action' => @func_get_arg(0)); |
| | | } |
| | | |
| | | $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task); |
| | | $p['_task'] = $task; |
| | | unset($p['task']); |
| | | $pre = array(); |
| | | $task = $p['_task'] ?: ($p['task'] ?: $this->task); |
| | | $pre['_task'] = $task; |
| | | unset($p['task'], $p['_task']); |
| | | |
| | | $url = './' . $this->filename; |
| | | $url = $this->filename; |
| | | $delm = '?'; |
| | | |
| | | foreach (array_reverse($p) as $key => $val) { |
| | | foreach (array_merge($pre, $p) as $key => $val) { |
| | | if ($val !== '' && $val !== null) { |
| | | $par = $key[0] == '_' ? $key : '_'.$key; |
| | | $url .= $delm.urlencode($par).'='.urlencode($val); |
| | |
| | | } |
| | | } |
| | | |
| | | return $url; |
| | | if ($absolute || $full) { |
| | | $prefix = ''; |
| | | |
| | | // prepend protocol://hostname:port |
| | | if ($full) { |
| | | $schema = 'http'; |
| | | $default_port = 80; |
| | | if (rcube_utils::https_check()) { |
| | | $schema = 'https'; |
| | | $default_port = 443; |
| | | } |
| | | $prefix = $schema . '://' . preg_replace('/:\d+$/', '', $_SERVER['HTTP_HOST']); |
| | | if ($_SERVER['SERVER_PORT'] != $default_port) { |
| | | $prefix .= ':' . $_SERVER['SERVER_PORT']; |
| | | } |
| | | } |
| | | |
| | | // add base path to this Roundcube installation |
| | | $base_path = preg_replace('![^/]+$!', '', strval($_SERVER['SCRIPT_NAME'])); |
| | | if ($base_path == '') $base_path = '/'; |
| | | $prefix .= $base_path; |
| | | } |
| | | else { |
| | | $prefix = './'; |
| | | } |
| | | |
| | | return $prefix . $url; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | |
| | | public function quota_content($attrib = null) |
| | | public function quota_content($attrib = null, $folder = null) |
| | | { |
| | | $quota = $this->storage->get_quota(); |
| | | $quota = $this->storage->get_quota($folder); |
| | | $quota = $this->plugins->exec_hook('quota', $quota); |
| | | |
| | | $quota_result = (array) $quota; |
| | | $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : ''; |
| | | $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : ''; |
| | | $quota_result['folder'] = $folder !== null && $folder !== '' ? $folder : 'INBOX'; |
| | | |
| | | if ($quota['total'] > 0) { |
| | | if (!isset($quota['percent'])) { |
| | |
| | | /** |
| | | * Returns message UID(s) and IMAP folder(s) from GET/POST data |
| | | * |
| | | * @param string UID value to decode |
| | | * @param string Default mailbox value (if not encoded in UIDs) |
| | | * @param string UID value to decode |
| | | * @param string Default mailbox value (if not encoded in UIDs) |
| | | * @param bool Will be set to True if multi-folder request |
| | | * |
| | | * @return array List of message UIDs per folder |
| | | */ |
| | | public static function get_uids($uids = null, $mbox = null) |
| | | public static function get_uids($uids = null, $mbox = null, &$is_multifolder = false) |
| | | { |
| | | // message UID (or comma-separated list of IDs) is provided in |
| | | // the form of <ID>-<MBOX>[,<ID>-<MBOX>]* |
| | |
| | | |
| | | // special case: * |
| | | if ($_uid == '*' && is_object($_SESSION['search'][1]) && $_SESSION['search'][1]->multi) { |
| | | $is_multifolder = true; |
| | | // extract the full list of UIDs per folder from the search set |
| | | foreach ($_SESSION['search'][1]->sets as $subset) { |
| | | $mbox = $subset->get_parameters('MAILBOX'); |
| | |
| | | // create a per-folder UIDs array |
| | | foreach ((array)$_uid as $uid) { |
| | | list($uid, $mbox) = explode('-', $uid, 2); |
| | | if (!strlen($mbox)) |
| | | if (!strlen($mbox)) { |
| | | $mbox = $_mbox; |
| | | if ($uid == '*') |
| | | } |
| | | else { |
| | | $is_multifolder = true; |
| | | } |
| | | |
| | | if ($uid == '*') { |
| | | $result[$mbox] = $uid; |
| | | else |
| | | } |
| | | else { |
| | | $result[$mbox][] = $uid; |
| | | } |
| | | } |
| | | } |
| | | |