| | |
| | | */ |
| | | public $action = ''; |
| | | public $comm_path = './'; |
| | | public $filename = ''; |
| | | |
| | | private $address_books = array(); |
| | | private $action_map = array(); |
| | |
| | | /** |
| | | * This implements the 'singleton' design pattern |
| | | * |
| | | * @param string Environment name to run (e.g. live, dev, test) |
| | | * @return rcmail The one and only instance |
| | | */ |
| | | static function get_instance() |
| | | static function get_instance($env = '') |
| | | { |
| | | if (!self::$instance || !is_a(self::$instance, 'rcmail')) { |
| | | self::$instance = new rcmail(); |
| | | self::$instance = new rcmail($env); |
| | | self::$instance->startup(); // init AFTER object was linked with self::$instance |
| | | } |
| | | |
| | |
| | | protected function startup() |
| | | { |
| | | $this->init(self::INIT_WITH_DB | self::INIT_WITH_PLUGINS); |
| | | |
| | | // set filename if not index.php |
| | | if (($basename = basename($_SERVER['SCRIPT_FILENAME'])) && $basename != 'index.php') |
| | | $this->filename = $basename; |
| | | |
| | | // start session |
| | | $this->session_init(); |
| | |
| | | setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8'); |
| | | |
| | | // workaround for http://bugs.php.net/bug.php?id=18556 |
| | | if (in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) { |
| | | if (version_compare(PHP_VERSION, '5.5.0', '<') && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) { |
| | | setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8'); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | if (!$contacts) { |
| | | // there's no default, just return |
| | | if ($default) { |
| | | return null; |
| | | } |
| | | |
| | | self::raise_error(array( |
| | | 'code' => 700, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | |
| | | $list[$id] = array( |
| | | 'id' => $id, |
| | | 'name' => html::quote($prop['name']), |
| | | 'groups' => is_array($prop['groups']), |
| | | 'groups' => !empty($prop['groups']) || !empty($prop['group_filters']), |
| | | 'readonly' => !$prop['writable'], |
| | | 'hidden' => $prop['hidden'], |
| | | 'autocomplete' => in_array($id, $autocomplete) |
| | |
| | | $p['_task'] = $task; |
| | | unset($p['task']); |
| | | |
| | | $url = './'; |
| | | $url = './' . $this->filename; |
| | | $delm = '?'; |
| | | foreach (array_reverse($p) as $key => $val) { |
| | | if ($val !== '' && $val !== null) { |
| | |
| | | foreach ($this->address_books as $book) { |
| | | if (is_object($book) && is_a($book, 'rcube_addressbook')) |
| | | $book->close(); |
| | | } |
| | | |
| | | // before closing the database connection, write session data |
| | | if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) { |
| | | $this->session->write_close(); |
| | | } |
| | | |
| | | // write performance stats to logs/console |
| | |
| | | $realnames = (bool)$attrib['realnames']; |
| | | $msgcounts = $this->storage->get_cache('messagecount'); |
| | | $collapsed = $this->config->get('collapsed_folders'); |
| | | $realnames = $this->config->get('show_real_foldernames'); |
| | | |
| | | $out = ''; |
| | | foreach ($arrFolders as $folder) { |
| | |
| | | */ |
| | | public function localize_foldername($name, $with_path = true) |
| | | { |
| | | $realnames = $this->config->get('show_real_foldernames'); |
| | | |
| | | // try to localize path of the folder |
| | | if ($with_path) { |
| | | if ($with_path && !$realnames) { |
| | | $storage = $this->get_storage(); |
| | | $delimiter = $storage->get_hierarchy_delimiter(); |
| | | $path = explode($delimiter, $name); |
| | |
| | | } |
| | | } |
| | | |
| | | if ($folder_class = $this->folder_classname($name)) { |
| | | if (!$realnames && ($folder_class = $this->folder_classname($name))) { |
| | | return $this->gettext($folder_class); |
| | | } |
| | | else { |
| | | return rcube_charset::convert($name, 'UTF7-IMAP'); |
| | | } |
| | | |
| | | return rcube_charset::convert($name, 'UTF7-IMAP'); |
| | | } |
| | | |
| | | |
| | |
| | | $quota_result = (array) $quota; |
| | | $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : ''; |
| | | |
| | | if (!$quota['total'] && $this->config->get('quota_zero_as_unlimited')) { |
| | | $quota_result['title'] = $this->gettext('unlimited'); |
| | | $quota_result['percent'] = 0; |
| | | } |
| | | else if ($quota['total']) { |
| | | if ($quota['total'] > 0) { |
| | | if (!isset($quota['percent'])) { |
| | | $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100)); |
| | | } |
| | |
| | | } |
| | | } |
| | | else { |
| | | $quota_result['title'] = $this->gettext('unknown'); |
| | | $unlimited = $this->config->get('quota_zero_as_unlimited'); |
| | | $quota_result['title'] = $this->gettext($unlimited ? 'unlimited' : 'unknown'); |
| | | $quota_result['percent'] = 0; |
| | | } |
| | | |
| | |
| | | public function upload_init() |
| | | { |
| | | // Enable upload progress bar |
| | | if (($seconds = $this->config->get('upload_progress')) && ini_get('apc.rfc1867')) { |
| | | $rfc1867 = filter_var(ini_get('apc.rfc1867'), FILTER_VALIDATE_BOOLEAN); |
| | | if ($rfc1867 && ($seconds = $this->config->get('upload_progress'))) { |
| | | if ($field_name = ini_get('apc.rfc1867_name')) { |
| | | $this->output->set_env('upload_progress_name', $field_name); |
| | | $this->output->set_env('upload_progress_time', (int) $seconds); |