Exemplo n.º 1
0
 function getParentId($account, $path, $delimiter)
 {
     $folders = explode($delimiter, $path);
     array_pop($folders);
     if (sizeof($folders) > 0) {
         $parent_name = implode($delimiter, $folders);
         $parent_folder = toC_Email_Accounts_Admin::getFolderByName($account['accounts_id'], $parent_name);
         if ($parent_folder !== false) {
             return $parent_folder['folders_id'];
         } else {
             return false;
         }
     } else {
         return 0;
     }
 }
 function synchronizeFolders()
 {
     $mailboxes = $this->_inbox->get_mailboxes();
     $subscribed = $this->_inbox->get_subscribed();
     $subscribed_folders_names = array();
     foreach ($subscribed as $folder) {
         $subscribed_folders_names[] = imap::utf7_imap_decode($folder['name']);
     }
     $mailbox_names = array();
     foreach ($mailboxes as $mailbox) {
         $folders_name = imap::utf7_imap_decode($mailbox['name']);
         $mailbox_names[] = $folders_name;
         $folder = array();
         $folder['folders_name'] = $folders_name;
         $folder['folders_flag'] = EMAIL_FOLDER_INBOX;
         $folder['accounts_id'] = $this->_data['accounts_id'];
         $folder['parent_id'] = toC_Email_Accounts_Admin::getParentId($this->_data, $folders_name, $mailbox['delimiter']);
         $folder['attributes'] = $mailbox['attributes'];
         $folder['subscribed'] = in_array($folders_name, $subscribed_folders_names) ? 1 : 0;
         $folder['delimiter'] = $mailbox['delimiter'];
         $exist_folder = toC_Email_Accounts_Admin::getFolderByName($this->_data['accounts_id'], $folders_name);
         if ($exist_folder !== false) {
             $folder['folders_id'] = $exist_folder['folders_id'];
             $folder['folders_flag'] = $exist_folder['folders_flag'];
             toC_Email_Accounts_Admin::updateFolder($folder);
         } else {
             $this->saveCachedFolder($folder);
         }
     }
     $folders = toC_Email_Accounts_Admin::getFolders($this->_data['accounts_id']);
     foreach ($folders as $folder) {
         if (!in_array($folder['folders_name'], $mailbox_names)) {
             if (!toC_Email_Accounts_Admin::deleteFolder($this->_data, $folder['folders_id'])) {
                 return false;
             }
         }
     }
 }