Example #1
0
 function SetCurrentFolder()
 {
     $currentFolder = null;
     if (isset($this->sArray[GOTOFOLDER])) {
         $this->sArray[FOLDER_ID] = -1;
     }
     if ($this->sArray[FOLDER_ID] > -1) {
         $folderFullName = isset($this->sArray[FOLDER_FULLNAME]) ? $this->sArray[FOLDER_FULLNAME] : 'temp_001';
         $folder =& new Folder($this->account->Id, $this->sArray[FOLDER_ID], $folderFullName);
         $this->processor->GetFolderInfo($folder);
         if ($folder && $folder->Hide) {
             $newfolder = $this->folders ? $this->folders->GetFirstNotHideFolder() : null;
             if ($newfolder) {
                 $currentFolder =& $newfolder;
             }
         } else {
             $currentFolder =& $folder;
         }
     } else {
         if ($this->sArray[FOLDER_ID] == -1) {
             $folderType = FOLDERTYPE_Inbox;
             if (isset($this->sArray[GOTOFOLDER])) {
                 $folderType = $this->sArray[GOTOFOLDER];
                 unset($this->sArray[GOTOFOLDER]);
             }
             $folder =& $this->folders->GetFolderByType($folderType);
             $this->processor->GetFolderInfo($folder);
             if ($folder && $folder->Hide) {
                 $newfolder = $this->folders ? $this->folders->GetFirstNotHideFolder() : null;
                 if ($newfolder) {
                     $currentFolder =& $newfolder;
                 }
             } else {
                 $currentFolder =& $folder;
             }
         }
     }
     $this->currentFolder =& $currentFolder;
     if ($this->currentFolder) {
         $this->processor->GetFolderMessageCount($this->currentFolder);
         $this->sArray[FOLDER_ID] = $this->currentFolder->IdDb;
     } else {
         $this->sArray[FOLDER_ID] = -1;
     }
 }
Example #2
0
 /**
  * @param FolderCollection $_folders
  * @param XmlDomNode $_nodeTree
  * @param MailProcessor $_processor
  */
 function GetFoldersTreeXml(&$_folders, &$_nodeTree, &$_processor)
 {
     for ($_i = 0, $_count = $_folders->Count(); $_i < $_count; $_i++) {
         $_folder =& $_folders->Get($_i);
         $_folderNode = new XmlDomNode('folder');
         $_folderNode->AppendAttribute('id', $_folder->IdDb);
         $_folderNode->AppendAttribute('id_parent', $_folder->IdParent);
         $_folderNode->AppendAttribute('type', $_folder->Type);
         $_folderNode->AppendAttribute('sync_type', $_folder->SyncType);
         $_folderNode->AppendAttribute('hide', (int) $_folder->Hide);
         $_folderNode->AppendAttribute('fld_order', (int) $_folder->FolderOrder);
         if ($_folder->SyncType == FOLDERSYNC_DirectMode) {
             $_processor->GetFolderMessageCount($_folder);
         }
         $_folderNode->AppendAttribute('count', $_folder->MessageCount);
         $_folderNode->AppendAttribute('count_new', $_folder->UnreadMessageCount);
         $_folderNode->AppendAttribute('size', $_folder->Size);
         if (ConvertUtils::IsLatin($_folder->Name)) {
             $_folderNode->AppendChild(new XmlDomNode('name', ConvertUtils::ConvertEncoding($_folder->Name, CPAGE_UTF7_Imap, CPAGE_UTF8), true));
         } else {
             $_folderNode->AppendChild(new XmlDomNode('name', ConvertUtils::ConvertEncoding($_folder->Name, $_processor->_account->DefaultIncCharset, CPAGE_UTF8), true));
         }
         $_folderNode->AppendChild(new XmlDomNode('full_name', $_folder->FullName, true));
         if ($_folder->SubFolders != null && $_folder->SubFolders->Count() > 0) {
             $_foldersNode = new XmlDomNode('folders');
             CXmlProcessing::GetFoldersTreeXml($_folder->SubFolders, $_foldersNode, $_processor);
             $_folderNode->AppendChild($_foldersNode);
             unset($_foldersNode);
         }
         $_nodeTree->AppendChild($_folderNode);
         unset($_folderNode, $_folder);
     }
 }
 function DoDeleteFolders()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_acctId = $_xmlObj->GetParamValueByName('id_acct');
     CXmlProcessing::CheckAccountAccess($_acctId, $_xmlRes);
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_acctId, false, false);
     $_processor = new MailProcessor($_account);
     $_foldersNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folders');
     $_result = true;
     $_foldersKeys = array_keys($_foldersNode->Children);
     foreach ($_foldersKeys as $_key) {
         $_fc =& $_foldersNode->Children[$_key];
         if (isset($_fc->Attributes['id'])) {
             $_folder = new Folder($_acctId, $_fc->Attributes['id'], $_fc->GetChildValueByTagName('full_name'));
         } else {
             $_result = false;
             unset($_fc);
             break;
         }
         $_processor->GetFolderInfo($_folder);
         $_processor->GetFolderMessageCount($_folder);
         $_childCount = USE_DB ? $_processor->DbStorage->GetFolderChildCount($_folder) : 0;
         if ($_account->MailProtocol != MAILPROTOCOL_POP3 && ($_folder->MessageCount > 0 || $_childCount != 0)) {
             $_result = false;
         } else {
             $_result &= $_account->IsDemo ? true : $_processor->DeleteFolder($_folder);
             if ($_result && !$_account->IsDemo) {
                 $log =& CLog::CreateInstance();
                 $log->WriteEvent('User delete personal folder ("' . $_folder->FullName . '")', $_account);
             }
         }
         unset($_fc, $_folder);
     }
     if ($_result) {
         $_folders =& $_processor->GetFolders();
         $_foldersList = new XmlDomNode('folders_list');
         $_foldersList->AppendAttribute('sync', -1);
         $_foldersList->AppendAttribute('id_acct', $_acctId);
         $_foldersList->AppendAttribute('namespace', $_account->NameSpace);
         CXmlProcessing::GetFoldersTreeXml($_folders, $_foldersList, $_processor);
         $_xmlRes->XmlRoot->AppendChild($_foldersList);
     } else {
         CXmlProcessing::PrintErrorAndExit(PROC_ERROR_DEL_FLD, $_xmlRes);
     }
 }