/** * @return FolderCollection */ function &GetFolders() { if ($this->folders != null) { return $this->folders; } $this->folders =& $this->processor->GetFolders(); return $this->folders; }
function DoSendMessage() { $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null; $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId); $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_accountId, false, false); $_message =& CXmlProcessing::CreateMessage($_account, $_xmlObj, $_xmlRes); /* custom class */ wm_Custom::StaticUseMethod('ChangeMessageBeforeSend', array(&$_message)); $_processor = new MailProcessor($_account); $_folders =& $_processor->GetFolders(); $_folder =& $_folders->GetFolderByType(FOLDERTYPE_SentItems); $_message->OriginalMailMessage = $_message->ToMailString(true); $_message->Flags |= MESSAGEFLAGS_Seen; $_from =& $_message->GetFrom(); $_result = true; $_needToDelete = $_message->IdMsg != -1; $_idtoDelete = $_message->IdMsg; if (CSmtp::SendMail($_settings, $_account, $_message, null, null)) { $_messageNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('message'); $_attachmentsNode =& $_messageNode->GetChildNodeByTagName('attachments'); $bSaveInSent = isset($_messageNode->Attributes['save_mail']) && 1 === (int) $_messageNode->Attributes['save_mail']; if ($_processor->DbStorage->Connect()) { $_draftsFolder = null; if ($_needToDelete) { $_draftsFolder =& $_folders->GetFolderByType(FOLDERTYPE_Drafts); if ($_draftsFolder) { if (!$_processor->SaveMessage($_message, $_folder, $_draftsFolder, !$bSaveInSent)) { $_needToDelete = false; } } } else { if ($bSaveInSent) { if (!$_processor->SaveMessage($_message, $_folder)) { $_needToDelete = false; } } } /* suggestion */ $_mNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('message'); $_hNode =& $_mNode->GetChildNodeByTagName('headers'); $_gNode =& $_hNode->GetChildNodeByTagName('groups'); $_toNode =& $_hNode->GetChildNodeByTagName('to'); $_ccNode =& $_hNode->GetChildNodeByTagName('cc'); $_bccNode =& $_hNode->GetChildNodeByTagName('bcc'); $_emailsString = ''; $_gids = array(); if ($_gNode != null && $_gNode->Value != null) { if (count($_gNode->Children) > 0) { $_gKeys = array_keys($_gNode->Children); foreach ($_gKeys as $_key) { $_oneGNode =& $_gNode->Children[$_key]; $_gids[] = isset($_oneGNode->Attributes['id']) ? (int) $_oneGNode->Attributes['id'] : -1; unset($_oneGNode); } } } if ($_toNode != null && $_toNode->Value != null) { $_emailsString .= ConvertUtils::WMBackHtmlSpecialChars($_toNode->Value) . ', '; } if ($_ccNode != null && $_ccNode->Value != null) { $_emailsString .= ConvertUtils::WMBackHtmlSpecialChars($_ccNode->Value) . ', '; } if ($_bccNode != null && $_bccNode->Value != null) { $_emailsString .= ConvertUtils::WMBackHtmlSpecialChars($_bccNode->Value); } $_emailsString = trim(trim($_emailsString), ','); $_emailsCollection = new EmailAddressCollection($_emailsString); $_arrEmails = array(); for ($_z = 0, $_lc = $_emailsCollection->Count(); $_z < $_lc; $_z++) { $_emailObj =& $_emailsCollection->Get($_z); if ($_emailObj && trim($_emailObj->Email)) { $_arrEmails[$_emailObj->Email] = trim($_emailObj->DisplayName); } } /* reply */ if (USE_DB) { CXmlProcessing::ReplySetFlag($_mNode, $_processor); } /* update group frequency */ if (USE_DB) { $_processor->DbStorage->UpdateGroupsFrequency($_gids); $_processor->DbStorage->UpdateSuggestTable($_account, $_arrEmails); } /* end suggestion */ if ($_needToDelete && $_draftsFolder) { $_messageIdSet = array($_idtoDelete); if ($_account->MailProtocol == MAILPROTOCOL_IMAP4) { if ($_processor->PurgeFolder($_draftsFolder) && USE_DB) { $_processor->DbStorage->DeleteMessages($_messageIdSet, false, $_draftsFolder); } } else { if (USE_DB) { $_processor->DbStorage->DeleteMessages($_messageIdSet, false, $_draftsFolder); } } } if (USE_DB) { $_processor->DbStorage->UpdateMailboxSize(); } } $_result = true; } else { $_result = false; } if ($_result) { $_updateNode = new XmlDomNode('update'); $_updateNode->AppendAttribute('value', 'send_message'); $_xmlRes->XmlRoot->AppendChild($_updateNode); } else { //CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes); CXmlProcessing::PrintErrorAndExit(PROC_CANT_SEND_MSG, $_xmlRes); } }
if (!$processor->Synchronize($foldersForInboxSynchronize)) { $errorDesc = getGlobalError(); } $processor->MailStorage->Disconnect(); } else { $errorDesc = ''; } $errorDesc = trim($errorDesc); echo '<script> parent.SetUpdatedFolders(' . Folders4UpdateToJsArray() . ', false); parent.EndCheckMailHandler("' . ConvertUtils::ClearJavaScriptString($errorDesc, '"') . '"); </script>' . CRLF; } else { ShowLoggingToServer(); $processor = new MailProcessor($account); $folders =& $processor->GetFolders(); $processor->MailStorage->DownloadedMessagesHandler = 'ShowDownloadedMessageNumber'; $processor->MailStorage->UpdateFolderHandler = 'AddFolder4Update'; if (!$processor->Synchronize($folders)) { $errorDesc = getGlobalError(); } ShowLoggingOffFromServer(); $processor->MailStorage->Disconnect(); $errorDesc = trim($errorDesc); echo '<script> parent.SetUpdatedFolders(' . Folders4UpdateToJsArray() . '); parent.EndCheckMailHandler("' . ConvertUtils::ClearJavaScriptString($errorDesc, '"') . '"); </script>' . CRLF; } } myFlush(true);
/** * @param PageBuilder $pagebuilder * @return SettingsAccount */ function SettingsAccount(&$pagebuilder) { $this->_pagebuilder =& $pagebuilder; $this->_proc =& $pagebuilder->_proc; $screen = $this->_proc->sArray[SCREEN]; if ($this->_proc->sArray[EDIT_ACCOUNT_ID] != $this->_proc->account->Id) { if (array_key_exists($this->_proc->sArray[EDIT_ACCOUNT_ID], $this->_proc->accounts)) { $this->_editAccount =& Account::LoadFromDb($this->_proc->sArray[EDIT_ACCOUNT_ID]); $this->_editProccessor =& new MailProcessor($this->_editAccount); $this->_editFolders =& $this->_editProccessor->GetFolders(); } else { $this->_editAccount =& $this->_proc->account; $this->_editProccessor =& $this->_proc->processor; $this->_editFolders =& $this->_proc->GetFolders(); } } else { $this->_editAccount =& $this->_proc->account; $this->_editProccessor =& $this->_proc->processor; $this->_editFolders =& $this->_proc->GetFolders(); } $this->data['allowNewAccount'] = !$this->_proc->settings->AllowUsersAddNewAccounts || !$this->_editAccount->AllowChangeSettings ? '' : ' <input type="button" value="' . JS_LANG_AddNewAccount . '" onclick="document.location=\'' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_ADDACC . '\';" class="wm_button" ID="Button4" NAME="Button2"/>'; $this->data['accountsTable'] = ''; $accounts =& $this->_proc->GetAccounts(); foreach ($accounts as $keyid => $value) { $isCurrent = $keyid == $this->_editAccount->Id; $class = $isCurrent ? ' class="wm_settings_list_select"' : ' class="wm_control"'; $name = $isCurrent ? '<b>' . $value[4] . '</b>' : $value[4]; //$name .= ($value[6]) ? ' (default)' : ''; $onclick = $isCurrent ? '' : ' onclick="document.location=\'' . BASEFILE . '?' . EDIT_ACCOUNT_ID . '=' . $keyid . '\';"'; $deleteHref = $this->_proc->account->IsDemo ? '<a href="#" onclick="return DoAlert();">' . JS_LANG_Delete . '</a>' : '<a href="' . ACTIONFILE . '?action=delete&req=account&acctid=' . $keyid . '" onclick="return confirm(\'' . ConfirmDeleteAccount . '\');">' . JS_LANG_Delete . '</a>'; $deleteHref = $this->_editAccount->AllowChangeSettings ? $deleteHref : ''; $this->data['accountsTable'] .= ' <tr' . $class . '> <td' . $onclick . '>' . $name . '</td> <td style="width: 10px;">' . $deleteHref . '</td> </tr>'; } if ($screen == SET_ACCOUNT_ADDACC && !$this->_proc->settings->AllowUsersAddNewAccounts) { $screen = SET_ACCOUNT_PROF; } $this->_main =& new SettingsAccountForms($screen, $this); $this->data['tabSwitcher'] = ''; if ($screen != SET_ACCOUNT_ADDACC) { $this->data['tabSwitcher'] .= ' <div class="wm_settings_accounts_info"> <div class="wm_settings_switcher_indent"></div>'; $this->data['tabSwitcher'] .= $screen == SET_ACCOUNT_MFOLDERS ? '<div class="wm_settings_switcher_select_item">' . JS_LANG_ManageFolders . '</div>' : '<div class="wm_settings_switcher_item"><a href="' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_MFOLDERS . '">' . JS_LANG_ManageFolders . '</a></div>'; $this->data['tabSwitcher'] .= $screen == SET_ACCOUNT_SIGNATURE ? '<div class="wm_settings_switcher_select_item">' . JS_LANG_Signature . '</div>' : '<div class="wm_settings_switcher_item"><a href="' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_SIGNATURE . '">' . JS_LANG_Signature . '</a></div>'; $this->data['tabSwitcher'] .= $screen == SET_ACCOUNT_FILTERS ? '<div class="wm_settings_switcher_select_item"> ' . JS_LANG_Filters . ' </div>' : '<div class="wm_settings_switcher_item"> <a href="' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_FILTERS . '">' . JS_LANG_Filters . '</a> </div>'; if ($this->_editAccount->AllowChangeSettings) { $this->data['tabSwitcher'] .= $screen == SET_ACCOUNT_PROF ? '<div class="wm_settings_switcher_select_item">' . JS_LANG_Properties . '</div>' : '<div class="wm_settings_switcher_item"><a href="' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_PROF . '">' . JS_LANG_Properties . '</a></div>'; } $this->data['tabSwitcher'] .= '</div>'; } }