コード例 #1
0
 /**
  * @param	XmlDomNode	$xmlTree
  * @param	array		$mainArray
  */
 protected function initFromXmlRoot(&$xmlTree)
 {
     if ($xmlTree && $xmlTree->Children && count($xmlTree->Children) > 0) {
         if ('Folders' === $xmlTree->TagName) {
             foreach ($xmlTree->Children as $node) {
                 if ('Folder' == $node->TagName) {
                     $this->_main[] = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 }
             }
         } else {
             foreach ($xmlTree->Children as $node) {
                 $this->initFromXmlRoot($node);
             }
         }
     }
 }
コード例 #2
0
 /**
  * @param Account $_account
  * @param XmlDocument $_xmlObj
  * @return WebMailMessage
  */
 function &CreateMessage(&$_account, &$_xmlObj, &$_xmlRes)
 {
     $_messageNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('message');
     $_headersNode =& $_messageNode->GetChildNodeByTagName('headers');
     $_message = new WebMailMessage();
     $GLOBALS[MailDefaultCharset] = $_account->GetUserCharset();
     $GLOBALS[MailInputCharset] = $_account->GetUserCharset();
     $GLOBALS[MailOutputCharset] = $_account->GetDefaultOutCharset();
     $_message->Headers->SetHeaderByName(MIMEConst_MimeVersion, '1.0');
     $_message->Headers->SetHeaderByName(MIMEConst_XMailer, XMAILERHEADERVALUE);
     $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
     if (null !== $ip) {
         $_message->Headers->SetHeaderByName(MIMEConst_XOriginatingIp, $ip);
     }
     $_fromAcctId = $_messageNode->GetAttribute('from_acct_id', -1);
     $_message->IdMsg = $_messageNode->GetAttribute('id', -1);
     $_message->SetPriority($_messageNode->GetAttribute('priority', 3));
     $_message->SetSensivity($_messageNode->GetAttribute('sensivity', MIME_SENSIVITY_NOTHING));
     $_message->Uid = $_messageNode->GetChildValueByTagName('uid');
     $_serverAddr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['SERVER_NAME'] : 'cantgetservername';
     $_message->Headers->SetHeaderByName(MIMEConst_MessageID, '<' . substr(session_id(), 0, 7) . '.' . md5(time()) . '@' . $_serverAddr . '>');
     if ($_fromAcctId > 0) {
         $_fromAcct = null;
         if ($_account->Id == $_fromAcctId) {
             $_fromAcct = $_account;
         } else {
             CXmlProcessing::CheckAccountAccess($_fromAcctId, $_xmlRes);
             $_fromAcct = CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_fromAcctId, false, false);
         }
         if ($_fromAcct) {
             $email = $_fromAcct->GetFriendlyEmail();
             /* custom class */
             wm_Custom::StaticUseMethod('ChangeAccountEmailToFake', array(&$email));
             $_message->SetFromAsString(ConvertUtils::WMBackHtmlSpecialChars($email));
         }
     } else {
         $_temp = $_headersNode->GetChildValueByTagName('from');
         if ($_temp) {
             /* custom class */
             wm_Custom::StaticUseMethod('ChangeAccountEmailToFake', array(&$_temp));
             $_message->SetFromAsString(ConvertUtils::WMBackHtmlSpecialChars($_temp));
         }
     }
     $_temp = $_headersNode->GetChildValueByTagName('to');
     if ($_temp) {
         $_message->SetToAsString(ConvertUtils::WMBackHtmlSpecialChars($_temp));
     }
     $_temp = $_headersNode->GetChildValueByTagName('cc');
     if ($_temp) {
         $_message->SetCcAsString(ConvertUtils::WMBackHtmlSpecialChars($_temp));
     }
     $_temp = $_headersNode->GetChildValueByTagName('bcc');
     if ($_temp) {
         $_message->SetBccAsString(ConvertUtils::WMBackHtmlSpecialChars($_temp));
     }
     $_temp = $_headersNode->GetChildValueByTagName('mailconfirmation');
     if ($_temp) {
         /* custom class */
         wm_Custom::StaticUseMethod('ChangeAccountEmailToFake', array(&$_temp));
         $_message->SetReadMailConfirmationAsString(ConvertUtils::WMBackHtmlSpecialChars($_temp));
     }
     $_message->SetSubject(ConvertUtils::WMBackHtmlSpecialChars($_headersNode->GetChildValueByTagName('subject')));
     $_message->SetDate(new CDateTime(time()));
     $_bodyNode =& $_messageNode->GetChildNodeByTagName('body');
     if (isset($_bodyNode->Attributes['is_html']) && $_bodyNode->Attributes['is_html']) {
         $_message->TextBodies->HtmlTextBodyPart = ConvertUtils::AddHtmlTagToHtmlBody(str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::BackImagesToHtmlBody(ConvertUtils::WMBackHtmlNewCode($_bodyNode->Value)))));
         $_message->TextBodies->PlainTextBodyPart = $_message->TextBodies->HtmlToPlain();
     } else {
         $_message->TextBodies->PlainTextBodyPart = str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::WMBackHtmlNewCode($_bodyNode->Value)));
     }
     $_attachmentsNode =& $_messageNode->GetChildNodeByTagName('attachments');
     if ($_attachmentsNode != null) {
         $tempFiles =& CTempFiles::CreateInstance($_account);
         $_log =& CLog::CreateInstance();
         $_attachmentsKeys = array_keys($_attachmentsNode->Children);
         foreach ($_attachmentsKeys as $_key) {
             $_attachNode =& $_attachmentsNode->Children[$_key];
             $_tempName = $_attachNode->GetChildValueByTagName('temp_name');
             $_fileName = $_attachNode->GetChildValueByTagName('name');
             $_attachCid = 'attach.php?img&amp;tn=' . $_tempName . '&amp;filename=' . $_fileName;
             $_replaceCid = md5(time() . $_fileName);
             $_mime_type = $_attachNode->GetChildValueByTagName('mime_type');
             if ($_mime_type === '') {
                 $_mime_type = ConvertUtils::GetContentTypeFromFileName($_fileName);
             }
             $_isInline = (bool) $_attachNode->GetAttribute('inline', false);
             if (!$_message->Attachments->AddFromBinaryBody($tempFiles->LoadFile($_attachNode->GetChildValueByTagName('temp_name')), $_fileName, $_mime_type, $_isInline)) {
                 $_log->WriteLine('Error Add tempfile in message: ' . getGlobalError(), LOG_LEVEL_ERROR);
             }
             if (isset($_bodyNode->Attributes['is_html']) && $_bodyNode->Attributes['is_html']) {
                 if (strpos($_message->TextBodies->HtmlTextBodyPart, $_attachCid) !== false) {
                     $_attachment =& $_message->Attachments->GetLast();
                     if ($_attachment) {
                         $_attachment->MimePart->Headers->SetHeaderByName(MIMEConst_ContentID, '<' . $_replaceCid . '>');
                         $_message->TextBodies->HtmlTextBodyPart = str_replace($_attachCid, 'cid:' . $_replaceCid, $_message->TextBodies->HtmlTextBodyPart);
                         $_attachname = ConvertUtils::EncodeHeaderString($_attachNode->GetChildValueByTagName('name'), $_account->GetUserCharset(), $GLOBALS[MailOutputCharset]);
                         $_attachment->MimePart->Headers->SetHeaderByName(MIMEConst_ContentDisposition, MIMEConst_InlineLower . ';' . CRLF . "\t" . MIMEConst_FilenameLower . '="' . $_attachname . '"', false);
                     }
                     unset($_attachment);
                 } else {
                     if ($_isInline) {
                         $_message->Attachments->DeleteLast();
                     }
                 }
             }
             unset($_attachNode);
         }
     }
     return $_message;
 }
コード例 #3
0
ファイル: processing.php プロジェクト: diedsmiling/busenika
/**
 * @param Account $account
 * @param XmlDocument $xmlObj
 * @return WebMailMessage
 */
function &CreateMessage(&$account, &$xmlObj)
{
    global $log;
    $messageNode =& $xmlObj->XmlRoot->GetChildNodeByTagName('message');
    $headersNode =& $messageNode->GetChildNodeByTagName('headers');
    $message =& new WebMailMessage();
    $GLOBALS[MailDefaultCharset] = $account->GetUserCharset();
    $GLOBALS[MailInputCharset] = $account->GetUserCharset();
    $GLOBALS[MailOutputCharset] = $account->GetDefaultOutCharset();
    $message->Headers->SetHeaderByName(MIMEConst_MimeVersion, '1.0');
    $message->Headers->SetHeaderByName(MIMEConst_XMailer, 'MailBee WebMail Pro PHP');
    $message->Headers->SetHeaderByName(MIMEConst_XOriginatingIp, isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0');
    $message->IdMsg = $messageNode->GetAttribute('id', -1);
    $message->SetPriority($messageNode->GetAttribute('priority', 3));
    $message->Uid = $messageNode->GetChildValueByTagName('uid');
    $serverAddr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['SERVER_NAME'] : 'cantgetservername';
    $message->Headers->SetHeaderByName(MIMEConst_MessageID, '<' . substr(session_id(), 0, 7) . '.' . md5(time()) . '@' . $serverAddr . '>');
    $temp = $headersNode->GetChildValueByTagName('from');
    if ($temp) {
        $message->SetFromAsString(ConvertUtils::WMBackHtmlSpecialChars($temp));
    }
    $temp = $headersNode->GetChildValueByTagName('to');
    if ($temp) {
        $message->SetToAsString(ConvertUtils::WMBackHtmlSpecialChars($temp));
    }
    $temp = $headersNode->GetChildValueByTagName('cc');
    if ($temp) {
        $message->SetCcAsString(ConvertUtils::WMBackHtmlSpecialChars($temp));
    }
    $temp = $headersNode->GetChildValueByTagName('bcc');
    if ($temp) {
        $message->SetBccAsString(ConvertUtils::WMBackHtmlSpecialChars($temp));
    }
    $message->SetSubject(ConvertUtils::WMBackHtmlSpecialChars($headersNode->GetChildValueByTagName('subject')));
    $message->SetDate(new CDateTime(time()));
    $bodyNode =& $messageNode->GetChildNodeByTagName('body');
    if ($bodyNode->Attributes['is_html']) {
        $message->TextBodies->HtmlTextBodyPart = str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::WMBackHtmlNewCode($bodyNode->Value)));
    } else {
        $message->TextBodies->PlainTextBodyPart = str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::WMBackHtmlNewCode($bodyNode->Value)));
    }
    $attachmentsNode =& $messageNode->GetChildNodeByTagName('attachments');
    if ($attachmentsNode != null) {
        $fs =& new FileSystem(INI_DIR . '/temp', $account->Email, $account->Id);
        $attfolder =& new Folder($_SESSION[ACCOUNT_ID], -1, $_SESSION['attachtempdir']);
        foreach (array_keys($attachmentsNode->Children) as $key) {
            $attachNode =& $attachmentsNode->Children[$key];
            $attachCid = 'attach.php?tn=' . $attachNode->GetChildValueByTagName('temp_name');
            $replaceCid = md5(time() . $attachNode->GetChildValueByTagName('name'));
            $mime_type = $attachNode->GetChildValueByTagName('mime_type');
            if ($mime_type == '') {
                $mime_type = ConvertUtils::GetContentTypeFromFileName($attachNode->GetChildValueByTagName('name'));
            }
            if (!$message->Attachments->AddFromFile($fs->GetFolderFullPath($attfolder) . '/' . $attachNode->GetChildValueByTagName('temp_name'), $attachNode->GetChildValueByTagName('name'), $mime_type, (bool) $attachNode->Attributes['inline'])) {
                $log->WriteLine('Error Get tempfile for Attachment: ' . getGlobalError());
            }
            if ($bodyNode->Attributes['is_html']) {
                if (strpos($message->TextBodies->HtmlTextBodyPart, $attachCid) !== false) {
                    $attachment =& $message->Attachments->GetLast();
                    $attachment->MimePart->Headers->SetHeaderByName(MIMEConst_ContentID, '<' . $replaceCid . '>');
                    $message->TextBodies->HtmlTextBodyPart = str_replace($attachCid, 'cid:' . $replaceCid, $message->TextBodies->HtmlTextBodyPart);
                    $attachname = ConvertUtils::EncodeHeaderString($attachNode->GetChildValueByTagName('name'), $account->GetUserCharset(), $GLOBALS[MailOutputCharset]);
                    $attachment->MimePart->Headers->SetHeaderByName(MIMEConst_ContentDisposition, MIMEConst_InlineLower . ';' . CRLF . "\t" . MIMEConst_FilenameLower . '="' . $attachname . '"', false);
                }
            }
        }
    }
    return $message;
}
コード例 #4
0
 /**
  * @param string $name
  * @param bool $isCDATA optional
  * @return string
  */
 function GetParamTagValueByName($name, $decode = false)
 {
     $keys = array_keys($this->XmlRoot->Children);
     foreach ($keys as $nodeKey) {
         if ($this->XmlRoot->Children[$nodeKey]->TagName == 'param' && isset($this->XmlRoot->Children[$nodeKey]->Attributes['name']) && $this->XmlRoot->Children[$nodeKey]->Attributes['name'] == $name) {
             return $decode ? $this->XmlRoot->Children[$nodeKey]->Value : ConvertUtils::WMBackHtmlSpecialChars($this->XmlRoot->Children[$nodeKey]->Value);
         }
     }
     return '';
 }
コード例 #5
0
 /**
  * @param	XmlDomNode	$xmlTree
  * @param	array		$mainArray
  */
 protected function initFromXmlRoot(&$xmlTree)
 {
     if ($xmlTree && $xmlTree->Children && count($xmlTree->Children) > 0) {
         if ('Domain' === $xmlTree->TagName) {
             $name = '';
             $domain = array();
             foreach ($xmlTree->Children as $node) {
                 if ('Name' == $node->TagName) {
                     $name = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 } else {
                     $domain[$node->TagName] = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 }
             }
             if (strlen($name) > 0) {
                 $this->_main[$name] = $domain;
             }
         } else {
             foreach ($xmlTree->Children as $node) {
                 $this->initFromXmlRoot($node);
             }
         }
     }
 }
コード例 #6
0
ファイル: class_settings.php プロジェクト: JDevelopers/Mail
 /**
  * @access private
  * @param XmlDomNode $xmlTree
  */
 function _loadFromXML(&$xmlTree)
 {
     foreach ($xmlTree->Children as $node) {
         switch ($node->TagName) {
             case 'Common':
             case 'WebMail':
             case 'Calendar':
                 if (count($node->Children) > 0) {
                     $this->_loadFromXML($node);
                 }
                 break;
             case 'SiteName':
                 $this->WindowTitle = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'WindowTitle':
                 $this->WindowTitle = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'LicenseKey':
                 $this->LicenseKey = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AdminPassword':
                 $this->AdminPassword = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBType':
                 $this->DbType = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBLogin':
                 $this->DbLogin = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'DBPassword':
                 $this->DbPassword = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'DBName':
                 $this->DbName = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'UseDsn':
                 $this->UseDsn = (bool) $node->Value;
             case 'DBDSN':
                 $this->DbDsn = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBHost':
                 $this->DbHost = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'UseCustomConnectionString':
                 $this->UseCustomConnectionString = (bool) $node->Value;
                 break;
             case 'DBCustomConnectionString':
                 $this->DbCustomConnectionString = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBPrefix':
                 $this->DbPrefix = ConvertUtils::ClearPrefix(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'IncomingMailProtocol':
                 $this->IncomingMailProtocol = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'IncomingMailServer':
                 $this->IncomingMailServer = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'IncomingMailPort':
                 $this->IncomingMailPort = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'OutgoingMailServer':
                 $this->OutgoingMailServer = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'OutgoingMailPort':
                 $this->OutgoingMailPort = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'ReqSmtpAuth':
                 $this->ReqSmtpAuth = (bool) $node->Value;
                 break;
             case 'AllowAdvancedLogin':
                 $this->AllowAdvancedLogin = (bool) $node->Value;
                 break;
             case 'HideLoginMode':
                 $this->HideLoginMode = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DefaultDomainOptional':
                 $this->DefaultDomainOptional = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'UseMultipleDomainsSelection':
                 $this->UseMultipleDomainsSelection = (bool) $node->Value;
                 break;
             case 'UseCaptcha':
                 $this->UseCaptcha = (bool) $node->Value;
                 break;
             case 'ShowTextLabels':
                 $this->ShowTextLabels = (bool) $node->Value;
                 break;
             case 'AutomaticCorrectLoginSettings':
                 $this->AutomaticCorrectLoginSettings = (bool) $node->Value;
                 break;
             case 'EnableLogging':
                 $this->EnableLogging = (bool) (0 < (int) $node->Value);
                 $this->LoggingSpecialUsers = (bool) (2 === (int) $node->Value);
                 break;
             case 'LogLevel':
                 $this->LogLevel = (int) $node->Value;
                 break;
             case 'EnableEventsLogging':
                 $this->EnableEventsLogging = (bool) $node->Value;
                 break;
             case 'DisableErrorHandling':
                 $this->DisableErrorHandling = (bool) $node->Value;
                 break;
             case 'AllowAjax':
                 $this->AllowAjax = true;
                 break;
             case 'MailsPerPage':
                 $this->MailsPerPage = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'EnableAttachmentSizeLimit':
                 $this->EnableAttachmentSizeLimit = (bool) $node->Value;
                 break;
             case 'AttachmentSizeLimit':
                 $this->AttachmentSizeLimit = GetGoodBigInt(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'EnableMailboxSizeLimit':
                 $this->EnableMailboxSizeLimit = (bool) $node->Value;
                 break;
             case 'MailboxSizeLimit':
                 $this->MailboxSizeLimit = GetGoodBigInt(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'TakeImapQuota':
                 $this->TakeImapQuota = (bool) $node->Value;
                 break;
             case 'AllowUsersChangeTimeZone':
                 $this->AllowUsersChangeTimeZone = (bool) $node->Value;
                 break;
             case 'DefaultUserCharset':
                 $this->DefaultUserCharset = ConvertUtils::GetCodePageName($node->Value);
                 break;
             case 'AllowUsersChangeCharset':
                 $this->AllowUsersChangeCharset = (bool) ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DefaultSkin':
                 $this->DefaultSkin = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllowUsersChangeSkin':
                 $this->AllowUsersChangeSkin = (bool) $node->Value;
                 break;
             case 'DefaultLanguage':
                 $this->DefaultLanguage = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllowUsersChangeLanguage':
                 $this->AllowUsersChangeLanguage = (bool) $node->Value;
                 break;
             case 'AllowDHTMLEditor':
                 $this->AllowDhtmlEditor = (bool) $node->Value;
                 break;
             case 'AllowUsersChangeEmailSettings':
                 $this->AllowUsersChangeEmailSettings = (bool) $node->Value;
                 break;
             case 'AllowDirectMode':
                 $this->AllowDirectMode = (bool) $node->Value;
                 break;
             case 'DirectModeIsDefault':
                 $this->DirectModeIsDefault = (bool) $node->Value;
                 break;
             case 'AllowNewUsersRegister':
                 $this->AllowNewUsersRegister = true;
                 break;
             case 'AllowUsersAddNewAccounts':
                 $this->AllowUsersAddNewAccounts = false;
                 break;
             case 'AllowUsersChangeAccountsDef':
                 $this->AllowUsersChangeAccountsDef = (bool) $node->Value;
                 break;
             case 'StoreMailsInDb':
                 $this->StoreMailsInDb = (bool) $node->Value;
                 break;
             case 'Imap4DeleteLikePop3':
                 $this->Imap4DeleteLikePop3 = (bool) $node->Value;
                 break;
             case 'EnableWmServer':
                 $this->EnableWmServer = (bool) $node->Value;
                 break;
             case 'WmServerRootPath':
                 $this->WmServerRootPath = rtrim(ConvertUtils::WMBackHtmlSpecialChars($node->Value), '\\/');
                 break;
             case 'WmServerHost':
                 $this->WmServerHost = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'WmAllowManageXMailAccounts':
                 $this->WmAllowManageXMailAccounts = (bool) $node->Value;
                 break;
             case 'AllowContacts':
                 $this->AllowContacts = (bool) $node->Value;
                 break;
             case 'AllowCalendar':
                 $this->AllowCalendar = false;
                 break;
             case 'DefaultTimeZone':
                 if ($xmlTree->TagName == 'Calendar') {
                     $this->Cal_DefaultTimeZone = (int) $node->Value;
                 } else {
                     $this->DefaultTimeZone = (int) $node->Value;
                 }
                 break;
             case 'DefaultTimeFormat':
                 $this->Cal_DefaultTimeFormat = (int) $node->Value;
                 break;
             case 'DefaultDateFormat':
                 $this->Cal_DefaultDateFormat = (int) $node->Value;
                 break;
             case 'ShowWeekends':
                 $this->Cal_ShowWeekends = (int) $node->Value;
                 break;
             case 'WorkdayStarts':
                 $this->Cal_WorkdayStarts = (int) $node->Value;
                 break;
             case 'WorkdayEnds':
                 $this->Cal_WorkdayEnds = (int) $node->Value;
                 break;
             case 'ShowWorkDay':
                 $this->Cal_ShowWorkDay = (int) $node->Value;
                 break;
             case 'WeekStartsOn':
                 $this->Cal_WeekStartsOn = (int) $node->Value;
                 break;
             case 'DefaultTab':
                 $this->Cal_DefaultTab = (int) $node->Value;
                 break;
             case 'DefaultCountry':
                 $this->Cal_DefaultCountry = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllTimeZones':
                 $this->Cal_AllTimeZones = (int) $node->Value;
                 break;
             case 'AllowReminders':
                 $this->Cal_AllowReminders = (bool) $node->Value;
                 break;
             case 'AutoAddInvitation':
                 $this->Cal_AutoAddInvitation = (int) $node->Value;
                 break;
             case 'AllowLanguageOnLogin':
                 $this->AllowLanguageOnLogin = (bool) $node->Value;
                 break;
             case 'IdleSessionTimeout':
                 $this->IdleSessionTimeout = (int) $node->Value;
                 break;
             case 'AllowInsertImage':
                 $this->AllowInsertImage = (bool) $node->Value;
                 break;
             case 'AllowBodySize':
                 $this->AllowBodySize = (bool) $node->Value;
                 break;
             case 'MaxBodySize':
                 $this->MaxBodySize = (int) $node->Value;
                 break;
             case 'MaxSubjectSize':
                 $this->MaxSubjectSize = (int) $node->Value;
                 break;
             case 'AllowRegistration':
                 $this->AllowRegistration = (int) $node->Value;
                 break;
             case 'AllowPasswordReset':
                 $this->AllowPasswordReset = (int) $node->Value;
                 break;
             case 'GlobalAddressBook':
                 $this->GlobalAddressBook = GLOBAL_ADDRESS_BOOK_OFF;
                 break;
             case 'EnableMobileSync':
                 $this->EnableMobileSync = (bool) $node->Value;
                 break;
             case 'MobileSyncUrl':
                 $this->MobileSyncUrl = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'MobileSyncContactDataBase':
                 $this->MobileSyncContactDataBase = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'MobileSyncCalendarDataBase':
                 $this->MobileSyncCalendarDataBase = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'FlagsLangSelect':
                 $this->FlagsLangSelect = (bool) $node->Value;
                 break;
             case 'ViewMode':
                 $this->ViewMode = (int) $node->Value;
                 break;
             case 'SaveInSent':
                 $this->SaveInSent = (int) $node->Value;
                 break;
             case 'Dev':
                 $this->Dev = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
         }
     }
 }
コード例 #7
0
 /**
  * @param	XmlDomNode	$xmlTree
  * @param	array		$mainArray
  */
 protected function initFromXmlRoot(&$xmlTree, &$mainArray)
 {
     if ($xmlTree) {
         if ($xmlTree->Children && count($xmlTree->Children) > 0) {
             $mainArray[$xmlTree->TagName] = array();
             foreach ($xmlTree->Children as $node) {
                 $this->initFromXmlRoot($node, $mainArray[$xmlTree->TagName]);
             }
         } else {
             if (isset($mainArray[$xmlTree->TagName])) {
                 if (is_array($mainArray[$xmlTree->TagName])) {
                     $mainArray[$xmlTree->TagName][] = ConvertUtils::WMBackHtmlSpecialChars($xmlTree->Value);
                 } else {
                     $mainArray[$xmlTree->TagName] = array($mainArray[$xmlTree->TagName], ConvertUtils::WMBackHtmlSpecialChars($xmlTree->Value));
                 }
             } else {
                 $mainArray[$xmlTree->TagName] = ConvertUtils::WMBackHtmlSpecialChars($xmlTree->Value);
             }
         }
     }
 }
コード例 #8
0
ファイル: actions.php プロジェクト: diedsmiling/busenika
             foreach ($foreachArray as $folderid => $data) {
                 $folder =& new Folder($Account->Id, $folderid, ConvertUtils::WMBackHtmlSpecialChars($data[0]));
                 $Processor->GetFolderInfo($folder);
                 if (!$Processor->DeleteMessages($data[1], $folder)) {
                     SetError(PROC_CANT_DEL_MSGS);
                 }
             }
             header('Location: ' . BASEFILE);
             break;
         case 'undelete_messages':
             if (!Post::has('d_messages')) {
                 SetError(PROC_CANT_UNDEL_MSGS);
             }
             $foreachArray = Post::val('d_messages', array());
             foreach ($foreachArray as $folderid => $data) {
                 $folder =& new Folder($Account->Id, $folderid, ConvertUtils::WMBackHtmlSpecialChars($data[0]));
                 $Processor->GetFolderInfo($folder);
                 if (!$Processor->SetFlags($data[1], $folder, MESSAGEFLAGS_Deleted, ACTION_Remove)) {
                     SetError(PROC_CANT_UNDEL_MSGS);
                 }
             }
             header('Location: ' . BASEFILE);
             break;
         default:
         case 'none':
             header('Location: ' . BASEFILE . '?' . SCREEN . '=' . SCREEN_MAILBOX);
             break;
     }
     break;
 case 'set':
     switch ($REQ) {
コード例 #9
0
 function DoOperationMessagesFunction()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_accountId, false, false);
     $_processor = new MailProcessor($_account);
     $_messagesRequestNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('messages');
     if (!$_messagesRequestNode) {
         CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes);
     }
     $_getmsg = isset($_messagesRequestNode->Attributes['getmsg']) && $_messagesRequestNode->Attributes['getmsg'] == '1';
     $_folderNodeRequest =& $_messagesRequestNode->GetChildNodeByTagName('folder');
     if (isset($_folderNodeRequest->Attributes['id'])) {
         $_folder = new Folder($_accountId, $_folderNodeRequest->Attributes['id'], ConvertUtils::WMBackHtmlSpecialChars($_folderNodeRequest->GetChildValueByTagName('full_name')));
     } else {
         CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes);
     }
     $_processor->GetFolderInfo($_folder, true);
     $_toFolderNodeRequest =& $_messagesRequestNode->GetChildNodeByTagName('to_folder');
     if (isset($_toFolderNodeRequest->Attributes['id'])) {
         $_toFolder = new Folder($_accountId, $_toFolderNodeRequest->Attributes['id'], ConvertUtils::WMBackHtmlSpecialChars($_toFolderNodeRequest->GetChildValueByTagName('full_name')));
     } else {
         CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes);
     }
     $_processor->GetFolderInfo($_toFolder, true);
     $_operationNode = new XmlDomNode('operation_messages');
     $_toFolderNode = new XmlDomNode('to_folder', $_toFolder->FullName, true);
     $_toFolderNode->AppendAttribute('id', $_toFolder->IdDb);
     $_operationNode->AppendChild($_toFolderNode);
     $_folderNode = new XmlDomNode('folder', $_folder->FullName, true);
     $_folderNode->AppendAttribute('id', $_folder->IdDb);
     $_operationNode->AppendChild($_folderNode);
     $_messagesNode = new XmlDomNode('messages');
     $_messagesNode->AppendAttribute('getmsg', $_getmsg ? '1' : '0');
     $_messageIdUidSet = array();
     $_folders = array();
     $_messagesKeys = array_keys($_messagesRequestNode->Children);
     foreach ($_messagesKeys as $_nodeKey) {
         $_messageNode =& $_messagesRequestNode->Children[$_nodeKey];
         if ($_messageNode->TagName != 'message') {
             continue;
         }
         if (!isset($_messageNode->Attributes['id']) || !isset($_messageNode->Attributes['charset']) || !isset($_messageNode->Attributes['size'])) {
             continue;
         }
         $_msgId = $_messageNode->Attributes['id'];
         $_msgCharset = $_messageNode->Attributes['charset'];
         $_msgSize = $_messageNode->Attributes['size'];
         $_msgUid = $_messageNode->GetChildValueByTagName('uid', true);
         $_msgFolder =& $_messageNode->GetChildNodeByTagName('folder');
         if (!isset($_msgFolder->Attributes['id'])) {
             continue;
         }
         $_msgFolderId = $_msgFolder->Attributes['id'];
         $_folders[$_msgFolderId] = $_msgFolder->GetChildValueByTagName('full_name', true);
         if (!isset($_messageIdUidSet[$_msgFolderId])) {
             $_messageIdUidSet[$_msgFolderId] = array();
         }
         $_messageIdUidSet[$_msgFolderId][$_msgId] = $_msgUid;
         $_message = new XmlDomNode('message');
         $_message->AppendAttribute('id', $_msgId);
         $_message->AppendAttribute('charset', $_msgCharset);
         $_message->AppendAttribute('size', $_msgSize);
         $_message->AppendChild(new XmlDomNode('uid', $_msgUid, true));
         $_msgFolderNode = new XmlDomNode('folder', $_folders[$_msgFolderId], true);
         $_msgFolderNode->AppendAttribute('id', $_msgFolderId);
         $_message->AppendChild($_msgFolderNode);
         $_messagesNode->AppendChild($_message);
         unset($_messageNode, $_msgFolder, $_message, $_msgFolderNode);
     }
     $_operationNode->AppendChild($_messagesNode);
     $_errorString = $_typeString = '';
     $_request = $_xmlObj->GetParamValueByName('request');
     switch ($_request) {
         case 'mark_all_read':
             $_messageIdUidSet = null;
             if ($_processor->SetFlags($_messageIdUidSet, $_folder, MESSAGEFLAGS_Seen, ACTION_Set)) {
                 $_typeString = 'mark_all_read';
             } else {
                 $_errorString = PROC_CANT_MARK_ALL_MSG_READ;
             }
             break;
         case 'mark_all_unread':
             $_messageIdUidSet = null;
             if ($_processor->SetFlags($_messageIdUidSet, $_folder, MESSAGEFLAGS_Seen, ACTION_Remove)) {
                 $_typeString = 'mark_all_unread';
             } else {
                 $_errorString = PROC_CANT_MARK_ALL_MSG_UNREAD;
             }
             break;
         case 'purge':
             if (!$_settings->Imap4DeleteLikePop3 && $_account->MailProtocol == MAILPROTOCOL_IMAP4) {
                 if ($_processor->PurgeFolder($_folder)) {
                     $_typeString = 'purge';
                 } else {
                     $_errorString = PROC_CANT_PURGE_MSGS;
                 }
             } else {
                 if ($_processor->EmptyTrash()) {
                     $_typeString = 'purge';
                 } else {
                     $_errorString = PROC_CANT_PURGE_MSGS;
                 }
             }
             break;
         case 'clear_spam':
             if ($_processor->EmptySpam()) {
                 $_typeString = 'clear_spam';
             } else {
                 $_errorString = PROC_CANT_PURGE_MSGS;
             }
             break;
     }
     $_deleteFolderAppendError = false;
     $_foldersArray = array();
     foreach ($_folders as $_idFolder => $_fullNameFolder) {
         if (isset($_foldersArray[$_idFolder])) {
             $_folder =& $_foldersArray[$_idFolder];
         } else {
             $_folder = new Folder($_accountId, $_idFolder, $_fullNameFolder);
             $_processor->GetFolderInfo($_folder, true);
             $_foldersArray[$_idFolder] =& $_folder;
         }
         switch ($_request) {
             case 'no_move_delete':
                 if ($_processor->DeleteMessages($_messageIdUidSet[$_idFolder], $_folder, true)) {
                     $_typeString = 'no_move_delete';
                 } else {
                     $_errorString = PROC_CANT_DEL_MSGS;
                 }
                 break;
             case 'delete':
                 if ($_processor->DeleteMessages($_messageIdUidSet[$_idFolder], $_folder)) {
                     $_typeString = 'delete';
                 } else {
                     if ($_processor->IsMoveError) {
                         $_typeString = 'delete';
                         $_deleteFolderAppendError = true;
                     }
                     $_errorString = PROC_CANT_DEL_MSGS;
                 }
                 break;
             case 'undelete':
                 if ($_processor->SetFlags($_messageIdUidSet[$_idFolder], $_folder, MESSAGEFLAGS_Deleted, ACTION_Remove)) {
                     $_typeString = 'undelete';
                 } else {
                     $_errorString = PROC_CANT_UNDEL_MSGS;
                 }
                 break;
             case 'mark_read':
                 if ($_processor->SetFlags($_messageIdUidSet[$_idFolder], $_folder, MESSAGEFLAGS_Seen, ACTION_Set)) {
                     $_typeString = 'mark_read';
                 } else {
                     $_errorString = PROC_CANT_MARK_MSGS_READ;
                 }
                 break;
             case 'mark_unread':
                 if ($_processor->SetFlags($_messageIdUidSet[$_idFolder], $_folder, MESSAGEFLAGS_Seen, ACTION_Remove)) {
                     $_typeString = 'mark_unread';
                 } else {
                     $_errorString = PROC_CANT_MARK_MSGS_UNREAD;
                 }
                 break;
             case 'flag':
                 if ($_processor->SetFlags($_messageIdUidSet[$_idFolder], $_folder, MESSAGEFLAGS_Flagged, ACTION_Set)) {
                     $_typeString = 'flag';
                 } else {
                     $_errorString = PROC_CANT_SET_MSG_FLAGS;
                 }
                 break;
             case 'unflag':
                 if ($_processor->SetFlags($_messageIdUidSet[$_idFolder], $_folder, MESSAGEFLAGS_Flagged, ACTION_Remove)) {
                     $_typeString = 'unflag';
                 } else {
                     $_errorString = PROC_CANT_REMOVE_MSG_FLAGS;
                 }
                 break;
             case 'copy_to_folder':
                 // TODO
                 if ($_processor->MoveMessages($_messageIdUidSet[$_idFolder], $_folder, $_toFolder)) {
                     $_typeString = 'copy_to_folder';
                 } else {
                     $_errorString = PROC_CANT_CHANGE_MSG_FLD;
                 }
                 break;
             case 'move_to_folder':
                 if ($_processor->MoveMessages($_messageIdUidSet[$_idFolder], $_folder, $_toFolder)) {
                     $_typeString = 'move_to_folder';
                 } else {
                     $_errorString = PROC_CANT_CHANGE_MSG_FLD;
                 }
                 break;
             case 'spam':
                 if ($_processor->SpamMessages($_messageIdUidSet[$_idFolder], $_folder, true)) {
                     $_typeString = 'spam';
                 } else {
                     $_errorString = PROC_CANT_SET_MSG_AS_SPAM;
                 }
                 break;
             case 'not_spam':
                 if ($_processor->SpamMessages($_messageIdUidSet[$_idFolder], $_folder, false)) {
                     $_typeString = 'not_spam';
                 } else {
                     $_errorString = PROC_CANT_SET_MSG_AS_NOTSPAM;
                 }
                 break;
         }
         unset($_folder);
         if (strlen($_errorString) > 0) {
             break;
         }
     }
     if (strlen($_errorString) == 0 && strlen($_typeString) > 0) {
         $_operationNode->AppendAttribute('type', $_typeString);
         $_xmlRes->XmlRoot->AppendChild($_operationNode);
     } else {
         if ($_deleteFolderAppendError) {
             $_operationNode->AppendAttribute('type', $_typeString);
             $_messagesNode->AppendAttribute('no_move', '1');
             $_xmlRes->XmlRoot->AppendChild($_operationNode);
         } else {
             if (strlen($_errorString) == 0) {
                 $_errorString = WebMailException;
             }
             $_xmlRes->XmlRoot->AppendChild(new XmlDomNode('error', $_errorString, true));
         }
     }
 }
コード例 #10
0
 /**
  * @access private
  * @param XmlDomNode $xmlTree
  */
 function _loadFromXML(&$xmlTree)
 {
     foreach ($xmlTree->Children as $node) {
         switch ($node->TagName) {
             case 'Common':
             case 'WebMail':
             case 'Calendar':
                 if (count($node->Children) > 0) {
                     $this->_loadFromXML($node);
                 }
                 break;
             case 'SiteName':
                 $this->WindowTitle = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'WindowTitle':
                 $this->WindowTitle = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AdminPassword':
                 $this->AdminPassword = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBType':
                 $this->DbType = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBLogin':
                 $this->DbLogin = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'DBPassword':
                 $this->DbPassword = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'DBName':
                 $this->DbName = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'DBDSN':
                 $this->DbDsn = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBHost':
                 $this->DbHost = trim(ConvertUtils::WMBackHtmlSpecialChars($node->Value));
                 break;
             case 'UseCustomConnectionString':
                 $this->UseCustomConnectionString = (bool) $node->Value;
                 break;
             case 'DBCustomConnectionString':
                 $this->DbCustomConnectionString = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DBPrefix':
                 $this->DbPrefix = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'IncomingMailProtocol':
                 $this->IncomingMailProtocol = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'IncomingMailServer':
                 $this->IncomingMailServer = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'IncomingMailPort':
                 $this->IncomingMailPort = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'OutgoingMailServer':
                 $this->OutgoingMailServer = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'OutgoingMailPort':
                 $this->OutgoingMailPort = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'ReqSmtpAuth':
                 $this->ReqSmtpAuth = (bool) $node->Value;
                 break;
             case 'AllowAdvancedLogin':
                 $this->AllowAdvancedLogin = (bool) $node->Value;
                 break;
             case 'HideLoginMode':
                 $this->HideLoginMode = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DefaultDomainOptional':
                 $this->DefaultDomainOptional = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'ShowTextLabels':
                 $this->ShowTextLabels = (bool) $node->Value;
                 break;
             case 'AutomaticCorrectLoginSettings':
                 $this->AutomaticCorrectLoginSettings = (bool) $node->Value;
                 break;
             case 'EnableLogging':
                 $this->EnableLogging = (bool) $node->Value;
                 break;
             case 'DisableErrorHandling':
                 $this->DisableErrorHandling = (bool) $node->Value;
                 break;
             case 'AllowAjax':
                 $this->AllowAjax = (bool) $node->Value;
                 break;
             case 'MailsPerPage':
                 $this->MailsPerPage = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'EnableAttachmentSizeLimit':
                 $this->EnableAttachmentSizeLimit = (bool) $node->Value;
                 break;
             case 'AttachmentSizeLimit':
                 $this->AttachmentSizeLimit = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'EnableMailboxSizeLimit':
                 $this->EnableMailboxSizeLimit = (bool) $node->Value;
                 break;
             case 'MailboxSizeLimit':
                 $this->MailboxSizeLimit = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllowUsersChangeTimeZone':
                 $this->AllowUsersChangeTimeZone = (bool) $node->Value;
                 break;
             case 'DefaultUserCharset':
                 $this->DefaultUserCharset = ConvertUtils::GetCodePageName($node->Value);
                 break;
             case 'AllowUsersChangeCharset':
                 $this->AllowUsersChangeCharset = (bool) ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'DefaultSkin':
                 $this->DefaultSkin = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllowUsersChangeSkin':
                 $this->AllowUsersChangeSkin = (bool) $node->Value;
                 break;
             case 'DefaultLanguage':
                 $this->DefaultLanguage = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllowUsersChangeLanguage':
                 $this->AllowUsersChangeLanguage = (bool) $node->Value;
                 break;
             case 'AllowDHTMLEditor':
                 $this->AllowDhtmlEditor = (bool) $node->Value;
                 break;
             case 'AllowUsersChangeEmailSettings':
                 $this->AllowUsersChangeEmailSettings = (bool) $node->Value;
                 break;
             case 'AllowDirectMode':
                 $this->AllowDirectMode = (bool) $node->Value;
                 break;
             case 'DirectModeIsDefault':
                 $this->DirectModeIsDefault = (bool) $node->Value;
                 break;
             case 'AllowNewUsersRegister':
                 $this->AllowNewUsersRegister = (bool) $node->Value;
                 break;
             case 'AllowUsersAddNewAccounts':
                 $this->AllowUsersAddNewAccounts = (bool) $node->Value;
                 break;
             case 'StoreMailsInDb':
                 $this->StoreMailsInDb = (bool) $node->Value;
                 break;
             case 'EnableWmServer':
                 $this->EnableWmServer = (bool) $node->Value;
                 break;
             case 'WmServerRootPath':
                 $this->WmServerRootPath = rtrim(ConvertUtils::WMBackHtmlSpecialChars($node->Value), '\\/');
                 break;
             case 'WmServerHost':
                 $this->WmServerHost = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'WmAllowManageXMailAccounts':
                 $this->WmAllowManageXMailAccounts = (bool) $node->Value;
                 break;
             case 'AllowContacts':
                 $this->AllowContacts = (bool) $node->Value;
                 break;
             case 'AllowCalendar':
                 $this->AllowCalendar = (bool) $node->Value;
                 break;
             case 'DefaultTimeZone':
                 if ($xmlTree->TagName == 'Calendar') {
                     $this->Cal_DefaultTimeZone = (int) $node->Value;
                 } else {
                     $this->DefaultTimeZone = (int) $node->Value;
                 }
                 break;
             case 'DefaultTimeFormat':
                 $this->Cal_DefaultTimeFormat = (int) $node->Value;
                 break;
             case 'DefaultDateFormat':
                 $this->Cal_DefaultDateFormat = (int) $node->Value;
                 break;
             case 'ShowWeekends':
                 $this->Cal_ShowWeekends = (int) $node->Value;
                 break;
             case 'WorkdayStarts':
                 $this->Cal_WorkdayStarts = (int) $node->Value;
                 break;
             case 'WorkdayEnds':
                 $this->Cal_WorkdayEnds = (int) $node->Value;
                 break;
             case 'ShowWorkDay':
                 $this->Cal_ShowWorkDay = (int) $node->Value;
                 break;
             case 'WeekStartsOn':
                 $this->Cal_WeekStartsOn = (int) $node->Value;
                 break;
             case 'DefaultTab':
                 $this->Cal_DefaultTab = (int) $node->Value;
                 break;
             case 'DefaultCountry':
                 $this->Cal_DefaultCountry = ConvertUtils::WMBackHtmlSpecialChars($node->Value);
                 break;
             case 'AllTimeZones':
                 $this->Cal_AllTimeZones = (int) $node->Value;
                 break;
         }
     }
 }