/** * @return string/boot */ function ValidateData() { if (!ConvertUtils::CheckFileName($this->Email)) { return JS_LANG_WarningCorrectEmail; } elseif (empty($this->Email)) { return JS_LANG_WarningEmailFieldBlank; } elseif (!Validate::checkEmail($this->Email)) { return JS_LANG_WarningCorrectEmail; } elseif (empty($this->MailIncLogin)) { return WarningLoginFieldBlank; } elseif (empty($this->MailIncPassword)) { return WarningPassBlank; } elseif (empty($this->MailIncHost)) { return JS_LANG_WarningIncServerBlank; } elseif (!Validate::checkServerName($this->MailIncHost)) { return WarningCorrectIncServer; } elseif (empty($this->MailIncPort)) { return JS_LANG_WarningIncPortBlank; } elseif (!Validate::checkPort($this->MailIncPort)) { return JS_LANG_WarningIncPortNumber . ' ' . JS_LANG_DefaultIncPortNumber; } elseif (empty($this->MailOutHost)) { return WarningCorrectSMTPServer; } elseif (!Validate::checkServerName($this->MailOutHost)) { return WarningCorrectSMTPServer; } elseif (empty($this->MailOutPort)) { return JS_LANG_WarningOutPortBlank; } elseif (!Validate::checkPort($this->MailOutPort)) { return JS_LANG_WarningOutPortNumber . ' ' . JS_LANG_DefaultOutPortNumber; } return true; }
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; } }
} $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 {
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); } }