Example #1
0
 /**
  * @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);
     }
 }
Example #3
0
            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">&nbsp;' . JS_LANG_Filters . '&nbsp;</div>' : '<div class="wm_settings_switcher_item">&nbsp;<a href="' . BASEFILE . '?' . SCREEN . '=' . SET_ACCOUNT_FILTERS . '">' . JS_LANG_Filters . '</a>&nbsp;</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>';
        }
    }