%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/ProjectSeven/ |
Current File : /www/varak.net/mail2.varak.net_old/libraries/ProjectSeven/ActionsBase.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ namespace ProjectSeven; /** * @category ProjectSeven */ abstract class ActionsBase { /** * @var \MailSo\Base\Http */ protected $oHttp; /** * @var array */ protected $aCurrentActionParams = array(); /** * @var \CApiContactsManager */ private $oApiContacts = null; /** * @var \CApiGcontactsManager */ private $oApiGcontacts = null; /** * @return \CApiEcontactsManager */ public function ApiContacts() { if (null === $this->oApiContacts) { $this->oApiContacts = \CApi::Manager('contacts'); } return $this->oApiContacts; } /** * @return \CApiGcontactsManager */ public function ApiGContacts() { if (null === $this->oApiGcontacts ) { $this->oApiGcontacts = \CApi::Manager('gcontacts'); } return $this->oApiGcontacts; } /** * @param \CAccount $oAccount * @param string $sActionName * @param mixed $mResult = false * * @return array */ public function DefaultResponse($oAccount, $sActionName, $mResult = false) { $sActionName = 'Ajax' === substr($sActionName, 0, 4) ? substr($sActionName, 4) : $sActionName; $aResult = array('Action' => $sActionName); if ($oAccount instanceof \CAccount) { $aResult['AccountID'] = $oAccount->IdAccount; } $aResult['Result'] = $this->responseObject($oAccount, $mResult, $sActionName); $aResult['@Time'] = microtime(true) - PSEVEN_APP_START; return $aResult; } /** * @param \CAccount $oAccount * @param string $sActionName * * @return array */ public function TrueResponse($oAccount, $sActionName) { return $this->DefaultResponse($oAccount, $sActionName, true); } /** * @param \CAccount $oAccount * @param string $sActionName * @param int $iErrorCode * @param string $sErrorMessage * @param array $aAdditionalParams = null * * @return array */ public function FalseResponse($oAccount, $sActionName, $iErrorCode = null, $sErrorMessage = null, $aAdditionalParams = null) { $aResponseItem = $this->DefaultResponse($oAccount, $sActionName, false); if (null !== $iErrorCode) { $aResponseItem['ErrorCode'] = (int) $iErrorCode; if (null !== $sErrorMessage) { $aResponseItem['ErrorMessage'] = null === $sErrorMessage ? '' : (string) $sErrorMessage; } } if (is_array($aAdditionalParams)) { foreach ($aAdditionalParams as $sKey => $mValue) { $aResponseItem[$sKey] = $mValue; } } return $aResponseItem; } /** * @param \CAccount $oAccount * @param string $sActionName * @param \Exception $oException * @param array $aAdditionalParams = null * * @return array */ public function ExceptionResponse($oAccount, $sActionName, $oException, $aAdditionalParams = null) { $iErrorCode = null; $sErrorMessage = null; $bShowError = \CApi::GetConf('labs.webmail.display-server-error-information', false); if ($oException instanceof \ProjectSeven\Exceptions\ClientException) { $iErrorCode = $oException->getCode(); $sErrorMessage = null; if ($bShowError) { $sErrorMessage = $oException->getMessage(); if (empty($sErrorMessage) || 'ClientException' === $sErrorMessage) { $sErrorMessage = null; } } } else if ($bShowError && $oException instanceof \MailSo\Imap\Exceptions\ResponseException) { $iErrorCode = \ProjectSeven\Notifications::MailServerError; $oResponse = /* @var $oResponse \MailSo\Imap\Response */ $oException->GetLastResponse(); if ($oResponse instanceof \MailSo\Imap\Response) { $sErrorMessage = $oResponse instanceof \MailSo\Imap\Response ? $oResponse->Tag.' '.$oResponse->StatusOrIndex.' '.$oResponse->HumanReadable : null; } } else { $iErrorCode = \ProjectSeven\Notifications::UnknownError; // $sErrorMessage = $oException->getCode().' - '.$oException->getMessage(); } return $this->FalseResponse($oAccount, $sActionName, $iErrorCode, $sErrorMessage, $aAdditionalParams); } /** * @param \MailSo\Base\Http $oHttp * * @return void */ public function SetHttp($oHttp) { $this->oHttp = $oHttp; } /** * @param array $aCurrentActionParams * * @return void */ public function SetActionParams($aCurrentActionParams) { $this->aCurrentActionParams = $aCurrentActionParams; } /** * @return array */ public function GetActionParams() { return $this->aCurrentActionParams; } /** * @param string $sKey * @param mixed $mValue * * @return void */ public function setParamValue($sKey, $mValue) { $this->aCurrentActionParams[$sKey] = $mValue; } /** * @param string $sKey * @param mixed $mDefaul = null * * @return mixed */ public function getParamValue($sKey, $mDefaul = null) { return is_array($this->aCurrentActionParams) && isset($this->aCurrentActionParams[$sKey]) ? $this->aCurrentActionParams[$sKey] : $mDefaul; } /** * @param string $sObjectName * * @return string */ protected function objectNames($sObjectName) { $aList = array( 'CApiMailMessageCollection' => 'MessageCollection', 'CApiMailMessage' => 'Message', 'CApiMailFolderCollection' => 'FolderCollection', 'CApiMailFolder' => 'Folder', 'Email' => 'Email' ); return !empty($aList[$sObjectName]) ? $aList[$sObjectName] : $sObjectName; } /** * @param \CAccount $oAccount * @param object $oData * @param string $sParent * * @return array | false */ protected function objectWrapper($oAccount, $oData, $sParent, $aParameters) { $mResult = false; if (is_object($oData)) { $aNames = explode('\\', get_class($oData)); $sObjectName = end($aNames); $mResult = array( '@Object' => $this->objectNames($sObjectName) ); if ($oData instanceof \MailSo\Base\Collection) { $mResult['@Object'] = 'Collection/'.$mResult['@Object']; $mResult['@Count'] = $oData->Count(); $mResult['@Collection'] = $this->responseObject($oAccount, $oData->CloneAsArray(), $sParent, $aParameters); } else { $mResult['@Object'] = 'Object/'.$mResult['@Object']; } } return $mResult; } /** * @param \CAccount $oAccount * @param mixed $mResponse * @param string $sParent * @param array $aParameters = array() * * @return mixed */ protected function responseObject($oAccount, $mResponse, $sParent, $aParameters = array()) { $mResult = $mResponse; if (is_object($mResponse)) { $sClassName = get_class($mResponse); if ('CApiMailMessage' === $sClassName) { $iTrimmedLimit = \CApi::GetConf('labs.message-body-size-limit', 0); $oAttachments = $mResponse->Attachments(); $iInternalTimeStampInUTC = $mResponse->InternalTimeStampInUTC(); $iReceivedOrDateTimeStampInUTC = $mResponse->ReceivedOrDateTimeStampInUTC(); $aFlags = $mResponse->FlagsLowerCase(); $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Folder' => $mResponse->Folder(), 'Uid' => $mResponse->Uid(), 'Subject' => $mResponse->Subject(), 'MessageId' => $mResponse->MessageId(), 'Size' => $mResponse->Size(), 'TextSize' => $mResponse->TextSize(), 'InternalTimeStampInUTC' => $iInternalTimeStampInUTC, 'ReceivedOrDateTimeStampInUTC' => $iReceivedOrDateTimeStampInUTC, 'TimeStampInUTC' => \CApi::GetConf('labs.use-date-from-headers', false) && 0 < $iReceivedOrDateTimeStampInUTC ? $iReceivedOrDateTimeStampInUTC : $iInternalTimeStampInUTC, 'From' => $this->responseObject($oAccount, $mResponse->From(), $sParent, $aParameters), 'To' => $this->responseObject($oAccount, $mResponse->To(), $sParent, $aParameters), 'Cc' => $this->responseObject($oAccount, $mResponse->Cc(), $sParent, $aParameters), 'Bcc' => $this->responseObject($oAccount, $mResponse->Bcc(), $sParent, $aParameters), 'Sender' => $this->responseObject($oAccount, $mResponse->Sender(), $sParent, $aParameters), 'ReplyTo' => $this->responseObject($oAccount, $mResponse->ReplyTo(), $sParent, $aParameters), 'IsSeen' => in_array('\\seen', $aFlags), 'IsFlagged' => in_array('\\flagged', $aFlags), 'IsAnswered' => in_array('\\answered', $aFlags), 'IsForwarded' => false, 'HasAttachments' => $oAttachments && $oAttachments->HasNonInlineAttachments(), 'HasVcardAttachment' => $oAttachments && $oAttachments->HasVcardAttachment(), 'HasIcalAttachment' => $oAttachments && $oAttachments->HasIcalAttachment(), 'Priority' => $mResponse->Priority(), 'DraftInfo' => $mResponse->DraftInfo(), 'Sensitivity' => $mResponse->Sensitivity() )); $mResult['TrimmedTextSize'] = $mResult['TextSize']; if (0 < $iTrimmedLimit && $mResult['TrimmedTextSize'] > $iTrimmedLimit) { $mResult['TrimmedTextSize'] = $iTrimmedLimit; } $sLowerForwarded = strtolower(\CApi::GetConf('webmail.forwarded-flag-name', '')); if (!empty($sLowerForwarded)) { $mResult['IsForwarded'] = in_array($sLowerForwarded, $aFlags); } $mResult['Hash'] = \CApi::EncodeKeyValues(array( 'AccountID' => $oAccount ? $oAccount->IdAccount : 0, 'Folder' => $mResult['Folder'], 'Uid' => $mResult['Uid'], 'MimeType' => 'message/rfc822', 'FileName' => $mResult['Subject'].'.eml' )); if ('Message' === $sParent || 'Messages' === $sParent) { $mResult['Headers'] = \MailSo\Base\Utils::Utf8Clear($mResponse->Headers()); $mResult['InReplyTo'] = $mResponse->InReplyTo(); $mResult['References'] = $mResponse->References(); $mResult['ReadingConfirmation'] = $mResponse->ReadingConfirmation(); if (!empty($mResult['ReadingConfirmation']) && in_array('$readconfirm', $aFlags)) { $mResult['ReadingConfirmation'] = ''; } $bHasExternals = false; $aFoundedCIDs = array(); $sPlain = ''; $sHtml = trim($mResponse->Html()); if (0 === strlen($sHtml)) { $sPlain = $mResponse->Plain(); } $aContentLocationUrls = array(); $aFoundedContentLocationUrls = array(); if ($oAttachments && 0 < $oAttachments->Count()) { $aList =& $oAttachments->GetAsArray(); foreach ($aList as /* @var \MailSo\Mail\Attachment */ $oAttachment) { if ($oAttachment) { $sContentLocation = $oAttachment->ContentLocation(); if ($sContentLocation && 0 < \strlen($sContentLocation)) { $aContentLocationUrls[] = $oAttachment->ContentLocation(); } } } } $iTextSizeLimit = 500000; if ($iTextSizeLimit < \strlen($sHtml)) { $iSpacePost = \strpos($sHtml, ' ', $iTextSizeLimit); $sHtml = \substr($sHtml, 0, (false !== $iSpacePost && $iSpacePost > $iTextSizeLimit) ? $iSpacePost : $iTextSizeLimit); } if ($iTextSizeLimit < \strlen($sPlain)) { $iSpacePost = \strpos($sPlain, ' ', $iTextSizeLimit); $sPlain = \substr($sPlain, 0, (false !== $iSpacePost && $iSpacePost > $iTextSizeLimit) ? $iSpacePost : $iTextSizeLimit); } if (0 < \strlen($sHtml) && \CApi::GetConf('labs.webmail.display-inline-css', false)) { include_once PSEVEN_APP_ROOT_PATH.'libraries/other/CssToInlineStyles.php'; $oCssToInlineStyles = new \TijsVerkoyen\CssToInlineStyles\CssToInlineStyles($sHtml); $oCssToInlineStyles->setEncoding('utf-8'); $oCssToInlineStyles->setUseInlineStylesBlock(true); $mResult['Html'] = \MailSo\Base\HtmlUtils::ClearHtml($oCssToInlineStyles->convert(), $bHasExternals, $aFoundedCIDs, $aContentLocationUrls, $aFoundedContentLocationUrls, false, true); } else { $mResult['Html'] = 0 === strlen($sHtml) ? '' : \MailSo\Base\HtmlUtils::ClearHtml($sHtml, $bHasExternals, $aFoundedCIDs, $aContentLocationUrls, $aFoundedContentLocationUrls, false, true); } $mResult['Trimmed'] = false; $mResult['Plain'] = 0 === strlen($sPlain) ? '' : \MailSo\Base\HtmlUtils::ConvertPlainToHtml($sPlain); $mResult['PlainRaw'] = \trim($sPlain); $mResult['Rtl'] = 0 < \strlen($mResult['Plain']) ? \MailSo\Base\Utils::IsRTL($mResult['Plain']) : false; if (0 < $iTrimmedLimit && 'Messages' === $sParent) { if ($iTrimmedLimit < strlen($mResult['Plain'])) { $iPos = strpos($mResult['Plain'], ' ', $iTrimmedLimit); if (false !== $iPos && $iTrimmedLimit <= $iPos) { $mResult['Plain'] = substr($mResult['Plain'], 0, $iPos); $mResult['Trimmed'] = true; } } if ($iTrimmedLimit < strlen($mResult['Html'])) { $iPos = strpos($mResult['Html'], ' <', $iTrimmedLimit); if (false !== $iPos && $iTrimmedLimit <= $iPos) { $mResult['Html'] = substr($mResult['Html'], 0, $iPos).'<!-- cutted -->'; $mResult['Trimmed'] = true; } } } $mResult['ICAL'] = $this->responseObject($oAccount, $mResponse->GetExtend('ICAL'), $sParent, $aParameters); $mResult['VCARD'] = $this->responseObject($oAccount, $mResponse->GetExtend('VCARD'), $sParent, $aParameters); $mResult['Safety'] = $mResponse->Safety(); $mResult['HasExternals'] = $bHasExternals; $mResult['FoundedCIDs'] = $aFoundedCIDs; $mResult['FoundedContentLocationUrls'] = $aFoundedContentLocationUrls; $mResult['Attachments'] = $this->responseObject($oAccount, $oAttachments, $sParent, array_merge($aParameters, array( 'FoundedCIDs' => $aFoundedCIDs, 'FoundedContentLocationUrls' => $aFoundedContentLocationUrls ))); // $mResult['Html'] = \MailSo\Base\Utils::Utf8Clear($mResult['Html']); // $mResult['Plain'] = \MailSo\Base\Utils::Utf8Clear($mResult['Plain']); } else { $mResult['@Object'] = 'Object/MessageListItem'; $mResult['Threads'] = $mResponse->Threads(); } $mResult['Custom'] = $this->responseObject($oAccount, $mResponse->Custom(), $sParent, $aParameters); $mResult['Subject'] = \MailSo\Base\Utils::Utf8Clear($mResult['Subject']); } else if ('CApiMailIcs' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Uid' => $mResponse->Uid, 'Attendee' => $mResponse->Attendee, 'File' => $mResponse->File, 'Type' => $mResponse->Type, 'Location' => $mResponse->Location, 'Description' => \MailSo\Base\LinkFinder::NewInstance() ->Text($mResponse->Description) ->UseDefaultWrappers(true) ->CompileText(), 'When' => $mResponse->When, 'CalendarId' => $mResponse->CalendarId )); } else if ('CApiMailVcard' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Uid' => $mResponse->Uid, 'File' => $mResponse->File, 'Name' => $mResponse->Name, 'Email' => $mResponse->Email, 'Exists' => $mResponse->Exists )); } else if ('CFilter' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Enable' => $mResponse->Enable, 'Field' => $mResponse->Field, 'Filter' => $mResponse->Filter, 'Condition' => $mResponse->Condition, 'Action' => $mResponse->Action, 'FolderFullName' => $mResponse->FolderFullName, )); } else if ('CHelpdeskThread' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdHelpdeskThread' => $mResponse->IdHelpdeskThread, 'ThreadHash' => $mResponse->StrHelpdeskThreadHash, 'IdOwner' => $mResponse->IdOwner, 'Owner' => $mResponse->Owner, 'Type' => $mResponse->Type, 'Subject' => $mResponse->Subject, 'IsRead' => $mResponse->IsRead, 'IsArchived' => $mResponse->IsArchived, 'ItsMe' => $mResponse->ItsMe, 'HasAttachments' => $mResponse->HasAttachments, 'PostCount' => $mResponse->PostCount, 'Created' => $mResponse->Created, 'Updated' => $mResponse->Updated )); } else if ('CHelpdeskPost' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdHelpdeskPost' => $mResponse->IdHelpdeskPost, 'IdHelpdeskThread' => $mResponse->IdHelpdeskThread, 'IdOwner' => $mResponse->IdOwner, 'Owner' => $mResponse->Owner, 'Attachments' => $this->responseObject($oAccount, $mResponse->Attachments, $sParent), 'IsThreadOwner' => $mResponse->IsThreadOwner, 'ItsMe' => $mResponse->ItsMe, 'Type' => $mResponse->Type, 'SystemType' => $mResponse->SystemType, 'Text' => \MailSo\Base\HtmlUtils::ConvertPlainToHtml($mResponse->Text), 'Created' => $mResponse->Created )); } else if ('CHelpdeskAttachment' === $sClassName) { $iThumbnailLimit = 1024 * 1024 * 2; // 2MB /* @var $mResponse CHelpdeskAttachment */ $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdHelpdeskAttachment' => $mResponse->IdHelpdeskAttachment, 'IdHelpdeskPost' => $mResponse->IdHelpdeskPost, 'IdHelpdeskThread' => $mResponse->IdHelpdeskThread, 'SizeInBytes' => $mResponse->SizeInBytes, 'FileName' => $mResponse->FileName, 'MimeType' => \MailSo\Base\Utils::MimeContentType($mResponse->FileName), 'Thumb' => \CApi::GetConf('labs.allow-thumbnail', true) && $mResponse->SizeInBytes < $iThumbnailLimit && \api_Utils::IsGDImageMimeTypeSuppoted( \MailSo\Base\Utils::MimeContentType($mResponse->FileName), $mResponse->FileName), 'Hash' => $mResponse->Hash, 'Content' => $mResponse->Content, 'Created' => $mResponse->Created )); } else if ('CFetcher' === $sClassName) { /* @var $mResponse \CFetcher */ $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdFetcher' => $mResponse->IdFetcher, 'IdAccount' => $mResponse->IdAccount, 'IsEnabled' => $mResponse->IsEnabled, 'IsLocked' => $mResponse->IsLocked, 'Folder' => $mResponse->Folder, 'Name' => $mResponse->Name, 'Email' => $mResponse->Email, 'Signature' => $mResponse->Signature, 'SignatureOptions' => $mResponse->SignatureOptions, 'LeaveMessagesOnServer' => $mResponse->LeaveMessagesOnServer, 'IncomingMailServer' => $mResponse->IncomingMailServer, 'IncomingMailPort' => $mResponse->IncomingMailPort, 'IncomingMailLogin' => $mResponse->IncomingMailLogin, 'IsOutgoingEnabled' => $mResponse->IsOutgoingEnabled, 'OutgoingMailServer' => $mResponse->OutgoingMailServer, 'OutgoingMailPort' => $mResponse->OutgoingMailPort, 'OutgoingMailAuth' => $mResponse->OutgoingMailAuth )); } else if ('CApiMailFolder' === $sClassName) { $aExtended = null; $mStatus = $mResponse->Status(); if (is_array($mStatus) && isset($mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'])) { $aExtended = array( 'MessageCount' => (int) $mStatus['MESSAGES'], 'MessageUnseenCount' => (int) $mStatus['UNSEEN'], 'UidNext' => (string) $mStatus['UIDNEXT'], 'Hash' => \api_Utils::GenerateFolderHash( $mResponse->FullNameRaw(), $mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'] ) ); } $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Type' => $mResponse->Type(), 'Name' => $mResponse->Name(), 'FullName' => $mResponse->FullName(), 'FullNameRaw' => $mResponse->FullNameRaw(), 'FullNameHash' => md5($mResponse->FullNameRaw()), 'Delimiter' => $mResponse->Delimiter(), 'IsSubscribed' => $oAccount->IsEnabledExtension(\CAccount::IgnoreSubscribeStatus) ? true : $mResponse->IsSubscribed(), 'IsSelectable' => $mResponse->IsSelectable(), 'IsExists' => $mResponse->IsExists(), 'Extended' => $aExtended, 'NamespaceFolder' => $mResponse->NamespaceFolder(), 'SubFolders' => $this->responseObject($oAccount, $mResponse->SubFolders(), $sParent, $aParameters) )); } else if ('CApiMailAttachment' === $sClassName) { $mFoundedCIDs = isset($aParameters['FoundedCIDs']) && is_array($aParameters['FoundedCIDs']) ? $aParameters['FoundedCIDs'] : null; $mFoundedContentLocationUrls = isset($aParameters['FoundedContentLocationUrls']) && \is_array($aParameters['FoundedContentLocationUrls']) && 0 < \count($aParameters['FoundedContentLocationUrls']) ? $aParameters['FoundedContentLocationUrls'] : null; if ($mFoundedCIDs || $mFoundedContentLocationUrls) { $aFoundedCIDs = \array_merge($mFoundedCIDs ? $mFoundedCIDs : array(), $mFoundedContentLocationUrls ? $mFoundedContentLocationUrls : array()); $aFoundedCIDs = 0 < \count($mFoundedCIDs) ? $mFoundedCIDs : null; } $sMimeType = strtolower(trim($mResponse->MimeType())); $sMimeIndex = strtolower(trim($mResponse->MimeIndex())); $sContentTransferEncoding = strtolower(trim($mResponse->ContentTransferEncoding())); $sFileName = $mResponse->FileName(true); $iEstimatedSize = $mResponse->EstimatedSize(); $iThumbnailLimit = 1024 * 1024 * 2; // 2MB //TODO if (in_array($sMimeType, array('application/octet-stream'))) { $sMimeType = \MailSo\Base\Utils::MimeContentType($sFileName); } $sCid = \trim(\trim($mResponse->Cid()), '<>'); $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'FileName' => $sFileName, 'MimeType' => $sMimeType, 'MimePartIndex' => ('message/rfc822' === $sMimeType && ('base64' === $sContentTransferEncoding || 'quoted-printable' === $sContentTransferEncoding)) ? '' : $sMimeIndex, 'EstimatedSize' => $iEstimatedSize, 'CID' => $sCid, 'ContentLocation' => $mResponse->ContentLocation(), 'Thumb' => \CApi::GetConf('labs.allow-thumbnail', true) && $iEstimatedSize < $iThumbnailLimit && \api_Utils::IsGDImageMimeTypeSuppoted($sMimeType, $sFileName), 'Expand' =>\CApi::isExpandMimeTypeSupported($sMimeType, $sFileName), 'Iframed' =>\CApi::isIframedMimeTypeSupported($sMimeType, $sFileName), 'Content' => $mResponse->Content(), 'IsInline' => $mResponse->IsInline(), 'IsLinked' => ($mFoundedCIDs && \in_array($sCid, $mFoundedCIDs)) || ($mFoundedContentLocationUrls && \in_array(\trim($mResponse->ContentLocation()), $mFoundedContentLocationUrls)) )); $mResult['Hash'] = \CApi::EncodeKeyValues(array( 'Iframed' => $mResult['Iframed'], 'AccountID' => $oAccount ? $oAccount->IdAccount : 0, 'Folder' => $mResponse->Folder(), 'Uid' => $mResponse->Uid(), 'MimeIndex' => $sMimeIndex, 'MimeType' => $sMimeType, 'FileName' => $mResponse->FileName(true) )); } else if ('MailSo\Mime\Email' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'DisplayName' => \MailSo\Base\Utils::Utf8Clear($mResponse->GetDisplayName()), 'Email' => \MailSo\Base\Utils::Utf8Clear($mResponse->GetEmail()) )); } else if ('CApiMailMessageCollection' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Uids' => $mResponse->Uids, 'UidNext' => $mResponse->UidNext, 'FolderHash' => $mResponse->FolderHash, 'MessageCount' => $mResponse->MessageCount, 'MessageUnseenCount' => $mResponse->MessageUnseenCount, 'MessageResultCount' => $mResponse->MessageResultCount, 'FolderName' => $mResponse->FolderName, 'Offset' => $mResponse->Offset, 'Limit' => $mResponse->Limit, 'Search' => $mResponse->Search, 'Filters' => $mResponse->Filters, 'New' => $mResponse->New )); } else if ('CIdentity' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdIdentity' => $mResponse->IdIdentity, 'IdAccount' => $mResponse->IdAccount, 'Enabled' => $mResponse->Enabled, 'Email' => $mResponse->Email, 'FriendlyName' => $mResponse->FriendlyName, 'UseSignature' => $mResponse->UseSignature, 'Signature' => $mResponse->Signature )); } else if ('CApiMailFolderCollection' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Namespace' => $mResponse->GetNamespace() )); } else if ('CContactListItem' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdUser' => $oAccount->IdUser, 'Id' => $mResponse->Id, 'Name' => $mResponse->Name, 'Email' => $mResponse->Email, 'Emails' => $mResponse->Emails, 'Phones' => $mResponse->Phones, 'UseFriendlyName' => $mResponse->UseFriendlyName, 'IsGroup' => $mResponse->IsGroup, 'IsOrganization' => $mResponse->IsOrganization, 'ReadOnly' => $mResponse->ReadOnly, 'ItsMe' => $mResponse->ItsMe, 'Global' => $mResponse->Global, 'ForSharedToAll' => $mResponse->ForSharedToAll, 'SharedToAll' => $mResponse->SharedToAll, 'Frequency' => $mResponse->Frequency )); } else if ('CContact' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdUser' => $mResponse->IdUser, 'IdContact' => $mResponse->IdContact, 'IdContactStr' => $mResponse->IdContactStr, 'Global' => $mResponse->Global, 'ItsMe' => $mResponse->ItsMe, 'PrimaryEmail' => $mResponse->PrimaryEmail, 'UseFriendlyName' => $mResponse->UseFriendlyName, 'GroupsIds' => $mResponse->GroupsIds, 'FullName' => $mResponse->FullName, 'Title' => $mResponse->Title, 'FirstName' => $mResponse->FirstName, 'LastName' => $mResponse->LastName, 'NickName' => $mResponse->NickName, 'Skype' => $mResponse->Skype, 'Facebook' => $mResponse->Facebook, 'HomeEmail' => $mResponse->HomeEmail, 'HomeStreet' => $mResponse->HomeStreet, 'HomeCity' => $mResponse->HomeCity, 'HomeState' => $mResponse->HomeState, 'HomeZip' => $mResponse->HomeZip, 'HomeCountry' => $mResponse->HomeCountry, 'HomePhone' => $mResponse->HomePhone, 'HomeFax' => $mResponse->HomeFax, 'HomeMobile' => $mResponse->HomeMobile, 'HomeWeb' => $mResponse->HomeWeb, 'BusinessEmail' => $mResponse->BusinessEmail, 'BusinessCompany' => $mResponse->BusinessCompany, 'BusinessStreet' => $mResponse->BusinessStreet, 'BusinessCity' => $mResponse->BusinessCity, 'BusinessState' => $mResponse->BusinessState, 'BusinessZip' => $mResponse->BusinessZip, 'BusinessCountry' => $mResponse->BusinessCountry, 'BusinessJobTitle' => $mResponse->BusinessJobTitle, 'BusinessDepartment' => $mResponse->BusinessDepartment, 'BusinessOffice' => $mResponse->BusinessOffice, 'BusinessPhone' => $mResponse->BusinessPhone, 'BusinessMobile' => $mResponse->BusinessMobile, 'BusinessFax' => $mResponse->BusinessFax, 'BusinessWeb' => $mResponse->BusinessWeb, 'OtherEmail' => $mResponse->OtherEmail, 'Notes' => $mResponse->Notes, 'BirthdayDay' => $mResponse->BirthdayDay, 'BirthdayMonth' => $mResponse->BirthdayMonth, 'BirthdayYear' => $mResponse->BirthdayYear, 'ReadOnly' => $mResponse->ReadOnly, 'ETag' => $mResponse->ETag, 'SharedToAll' => $mResponse->SharedToAll )); } else if ('CGroup' === $sClassName) { $aContacts = $this->ApiContacts()->GetContactItems( $mResponse->IdUser, \EContactSortField::Name, \ESortOrder::ASC, 0, 299, '', '', $mResponse->IdGroup); $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdUser' => $mResponse->IdUser, 'IdGroup' => $mResponse->IdGroup, 'IdGroupStr' => $mResponse->IdGroupStr, 'Name' => $mResponse->Name, 'IsOrganization' => $mResponse->IsOrganization, 'Email' => $mResponse->Email, 'Company' => $mResponse->Company, 'Street' => $mResponse->Street, 'City' => $mResponse->City, 'State' => $mResponse->City, 'Zip' => $mResponse->Zip, 'Country' => $mResponse->Country, 'Phone' => $mResponse->Phone, 'Fax' => $mResponse->Fax, 'Web' => $mResponse->Web, 'Contacts' => $this->responseObject($oAccount, $aContacts, $sParent, $aParameters) )); } else if ($mResponse instanceof \MailSo\Base\Collection) { $aCollection = $mResponse->GetAsArray(); if (150 < \count($aCollection) && $mResponse instanceof \MailSo\Mime\EmailCollection) { $aCollection = \array_slice($aCollection, 0, 150); } $mResult = $this->responseObject($oAccount, $aCollection, $sParent, $aParameters); unset($aCollection); } else if ('CSocial' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'IdAccount' => $mResponse->IdAccount, 'IdSocial' => $mResponse->IdSocial, 'Type' => $mResponse->Type, 'Name' => $mResponse->Name )); } else if ('CFileStorageItem' === $sClassName) { $mResult = array_merge($this->objectWrapper($oAccount, $mResponse, $sParent, $aParameters), array( 'Id' => $mResponse->Id, 'Type' => $mResponse->Type, 'Path' => $mResponse->Path, 'FullPath' => $mResponse->FullPath, 'Name' => $mResponse->Name, 'Size' => $mResponse->Size, 'IsFolder' => $mResponse->IsFolder, 'IsLink' => $mResponse->IsLink, 'LinkType' => $mResponse->LinkType, 'LinkUrl' => $mResponse->LinkUrl, 'LastModified' => $mResponse->LastModified, 'ContentType' => $mResponse->ContentType, 'Iframed' => $mResponse->Iframed, 'Thumb' => $mResponse->Thumb, 'ThumbnailLink' => $mResponse->ThumbnailLink, 'Hash' => $mResponse->Hash, 'Shared' => $mResponse->Shared, 'Owner' => $mResponse->Owner, 'Content' => $mResponse->Content, 'IsExternal' => $mResponse->IsExternal )); } else { $mResult = '['.$sClassName.']'; } } else if (is_array($mResponse)) { foreach ($mResponse as $iKey => $oItem) { $mResponse[$iKey] = $this->responseObject($oAccount, $oItem, $sParent, $aParameters); } $mResult = $mResponse; } unset($mResponse); return $mResult; } }