Exemple #1
0
 }
 $serverFoldersName = array();
 if ($account->MailProtocol == MAILPROTOCOL_IMAP4) {
     $tempFolders = $processor->MailStorage->GetFolders();
     $serverFolders = $tempFolders->CreateFolderListFromTree();
     $serverFoldersArray = $serverFolders->Instance();
     foreach ($serverFoldersArray as $sFolder) {
         $serverFoldersName[] = strtolower($sFolder->FullName);
     }
     unset($tempFolders, $serverFolders, $serverFoldersArray, $sFolder);
 }
 for ($key = count($foldersNode->Children) - 1; $key >= 0; $key--) {
     //foreach (array_keys($foldersNode->Children) as $key)
     //{
     $folderNode =& $foldersNode->Children[$key];
     if (!ConvertUtils::CheckDefaultWordsFileName($folderNode->GetChildValueByTagName('name')) || !ConvertUtils::CheckFileName($folderNode->GetChildValueByTagName('name'))) {
         printErrorAndExit(PROC_CANT_UPD_FLD, $xmlRes);
     }
     $newFolderName = ConvertUtils::ConvertEncoding(ConvertUtils::ClearFileName(ConvertUtils::WMBackHtmlSpecialChars($folderNode->GetChildValueByTagName('name'))), $account->GetUserCharset(), CPAGE_UTF7_Imap);
     $newFolderHide = (bool) $folderNode->GetAttribute('hide', false);
     $fullFolderName = $folderNode->GetChildValueByTagName('full_name');
     $folder =& new Folder($acctId, $folderNode->GetAttribute('id', -1), $fullFolderName);
     $processor->GetFolderInfo($folder);
     $isRename = false;
     if ($folder->Name != $newFolderName) {
         $oldName = $folder->Name;
         $folder->Name = $newFolderName;
         $validate = $folder->ValidateData();
         if ($validate !== true) {
             printErrorAndExit($validate, $xmlRes);
         } else {
Exemple #2
0
         case 'none':
             header('Location: ' . BASEFILE . '?' . SCREEN . '=' . SCREEN_CONTACTS);
             break;
     }
     break;
 case 'rename':
     switch ($REQ) {
         case 'folder':
             if ($sarray && in_array($sarray[EDIT_ACCOUNT_ID], $Accounts)) {
                 $editAccount =& Account::LoadFromDb($sarray[EDIT_ACCOUNT_ID]);
                 if ($editAccount->IsDemo) {
                     header('Location: ' . BASEFILE);
                     exit;
                 }
                 $editProcessor =& new MailProcessor($editAccount);
                 if (!ConvertUtils::CheckDefaultWordsFileName(Post::val('fname', 'errorName')) || !ConvertUtils::CheckFileName(Post::val('fname', 'erorrName'))) {
                     SetError(PROC_CANT_UPD_FLD);
                 }
                 $folderName = ConvertUtils::ConvertEncoding(ConvertUtils::ClearFileName(Post::val('fname', 'errorName')), $editAccount->GetUserCharset(), CPAGE_UTF7_Imap);
                 $folders =& $editProcessor->GetFolders();
                 $folderList =& $folders->CreateFolderListFromTree();
                 $folder =& new Folder($editAccount->Id, Post::val('folderid', -1), '-');
                 $editProcessor->GetFolderInfo($folder);
                 $hasError = false;
                 foreach (array_keys($folderList->Instance()) as $key) {
                     $listFolder =& $folderList->Get($key);
                     if ($listFolder->Name == $folderName) {
                         $hasError = true;
                         break;
                     }
                 }
Exemple #3
0
 /**
  * @return string/bool
  */
 function ValidateData()
 {
     if (empty($this->Name)) {
         return JS_LANG_WarningEmptyFolderName;
     } elseif (!ConvertUtils::CheckDefaultWordsFileName($this->Name) || Validate::HasSpecSymbols($this->Name)) {
         return WarningCorrectFolderName;
     }
     return true;
 }
 function DoUpdateFolders()
 {
     $_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);
     $_processor = new MailProcessor($_account);
     $_foldersNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folders');
     $_result = true;
     if (!$_processor->MailStorage->Connect()) {
         CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes);
     }
     $_serverFoldersName = array();
     if ($_account->MailProtocol != MAILPROTOCOL_POP3) {
         $_tempFolders = $_processor->MailStorage->GetFolders();
         $_serverFolders = $_tempFolders->CreateFolderListFromTree();
         $_serverFoldersArray = $_serverFolders->Instance();
         foreach ($_serverFoldersArray as $_sFolder) {
             $_serverFoldersName[] = strtolower($_sFolder->FullName);
         }
         unset($_tempFolders, $_serverFolders, $_serverFoldersArray, $_sFolder);
     }
     $aLSubList = null;
     $log =& CLog::CreateInstance();
     $log->SetEventPrefixByAccount($_account);
     for ($_key = count($_foldersNode->Children) - 1; $_key >= 0; $_key--) {
         $_folderNode =& $_foldersNode->Children[$_key];
         if (!ConvertUtils::CheckDefaultWordsFileName($_folderNode->GetChildValueByTagName('name')) || !ConvertUtils::CheckFileName($_folderNode->GetChildValueByTagName('name'))) {
             CXmlProcessing::PrintErrorAndExit(PROC_CANT_UPD_FLD, $_xmlRes);
         }
         $_newFolderName = ConvertUtils::ConvertEncoding(ConvertUtils::ClearFileName(ConvertUtils::WMBackHtmlSpecialChars($_folderNode->GetChildValueByTagName('name'))), $_account->GetUserCharset(), CPAGE_UTF7_Imap);
         $_newFolderHide = (bool) $_folderNode->GetAttribute('hide', false);
         $_newFolderType = (int) $_folderNode->GetAttribute('type', 0);
         $_newFolderType = $_newFolderType === 0 ? 10 : $_newFolderType;
         $_fullFolderName = $_folderNode->GetChildValueByTagName('full_name');
         $_folder = new Folder($_acctId, $_folderNode->GetAttribute('id', -1), $_fullFolderName);
         $_processor->GetFolderInfo($_folder);
         $_isRename = false;
         if ($_folder->Name != $_newFolderName) {
             $log->WriteLine('personal folder (rename "' . $_folder->FullName . '" => "' . $_newFolderName . '")');
             if (!$_account->IsDemo && null === $aLSubList) {
                 $aLSubList = $_processor->GetLsubFolders();
             }
             $_oldName = $_folder->Name;
             $_folder->Name = $_newFolderName;
             $_validate = $_folder->ValidateData();
             if (true !== $_validate) {
                 CXmlProcessing::PrintErrorAndExit($_validate, $_xmlRes);
             } else {
                 $_folder->Name = $_oldName;
             }
             $_result &= $_account->IsDemo ? true : $_processor->RenameFolder($_folder, $_newFolderName, $_account->Delimiter, $aLSubList);
             $log->WriteEvent('User edit personal folder (rename "' . $_folder->FullName . '" => "' . $_newFolderName . '")');
             $_isRename = true;
         }
         if ($_folder->Hide != $_newFolderHide) {
             $_folder->Hide = $_newFolderHide;
             $_processor->SetHide($_folder, $_newFolderHide);
         }
         if ($_folder->Type != $_newFolderType) {
             $_folder->Type = $_newFolderType;
         }
         $_folder->Name = $_newFolderName;
         $_folder->SyncType = (int) $_folderNode->GetAttribute('sync_type', FOLDERSYNC_DontSync);
         $_folder->FolderOrder = (int) $_folderNode->GetAttribute('fld_order', 0);
         if (!$_isRename && $_account->MailProtocol != MAILPROTOCOL_POP3 && !in_array(strtolower($_folder->FullName), $_serverFoldersName) && $_folder->SyncType != FOLDERSYNC_DontSync) {
             $_result &= $_processor->MailStorage->CreateFolder($_folder);
         }
         if ($_result) {
             $_result &= $_account->IsDemo || !USE_DB ? true : $_processor->DbStorage->UpdateFolder($_folder);
         } else {
             CXmlProcessing::PrintErrorAndExit(PROC_CANT_UPD_FLD, $_xmlRes);
         }
     }
     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_CANT_UPD_FLD, $_xmlRes);
     }
 }