Exemplo n.º 1
0
 /**
  * Read available calendars for the current user and store them internally
  */
 private function _read_lists($force = false)
 {
     // already read sources
     if (isset($this->lists) && !$force) {
         return $this->lists;
     }
     // get all folders that have type "task"
     $this->folders = kolab_storage::get_folders('task');
     $this->lists = array();
     // convert to UTF8 and sort
     $names = array();
     $default_folder = null;
     foreach ($this->folders as $folder) {
         $names[$folder->name] = rcube_charset::convert($folder->name, 'UTF7-IMAP');
         $this->folders[$folder->name] = $folder;
         if ($folder->default) {
             $default_folder = $folder->name;
         }
     }
     asort($names, SORT_LOCALE_STRING);
     // put default folder (aka INBOX) on top of the list
     if ($default_folder) {
         $default_name = $names[$default_folder];
         unset($names[$default_folder]);
         $names = array_merge(array($default_folder => $default_name), $names);
     }
     $delim = $this->rc->get_storage()->get_hierarchy_delimiter();
     $listnames = array();
     $prefs = $this->rc->config->get('kolab_tasklists', array());
     foreach ($names as $utf7name => $name) {
         $folder = $this->folders[$utf7name];
         $path_imap = explode($delim, $name);
         $editname = array_pop($path_imap);
         // pop off raw name part
         $path_imap = join($delim, $path_imap);
         $name = kolab_storage::folder_displayname(kolab_storage::object_name($utf7name), $listnames);
         if ($folder->get_namespace() == 'personal') {
             $readonly = false;
             $alarms = true;
         } else {
             $alarms = false;
             $readonly = true;
             if (($rights = $folder->get_myrights()) && !PEAR::isError($rights)) {
                 if (strpos($rights, 'i') !== false) {
                     $readonly = false;
                 }
             }
         }
         $list_id = kolab_storage::folder_id($utf7name);
         $tasklist = array('id' => $list_id, 'name' => $name, 'editname' => $editname, 'color' => $folder->get_color('0000CC'), 'showalarms' => isset($prefs[$list_id]['showalarms']) ? $prefs[$list_id]['showalarms'] : $alarms, 'editable' => !$readonly, 'active' => $folder->is_active(), 'parentfolder' => $path_imap, 'default' => $folder->default, 'children' => true, 'class_name' => trim($folder->get_namespace() . ($folder->default ? ' default' : '')));
         $this->lists[$tasklist['id']] = $tasklist;
         $this->folders[$tasklist['id']] = $folder;
     }
 }