/** * @param CHelpdeskUser $oHelpdeskUser * @param int $iOffset = 0 * @param int $iLimit = 20 * @param int $iFilter = EHelpdeskThreadFilterType::All * @param string $sSearch = '' * @param int $iSearchOwner = 0 * * @return array|bool */ public function GetThreads(CHelpdeskUser $oHelpdeskUser, $iOffset = 0, $iLimit = 20, $iFilter = EHelpdeskThreadFilterType::All, $sSearch = '', $iSearchOwner = 0) { $mResult = false; if ($this->oConnection->Execute($this->oCommandCreator->GetThreads($oHelpdeskUser, $iOffset, $iLimit, $iFilter, $sSearch, $iSearchOwner))) { $oRow = null; $mResult = array(); while (false !== ($oRow = $this->oConnection->GetNextRecord())) { $oHelpdeskThread = new CHelpdeskThread(); $oHelpdeskThread->InitByDbRow($oRow); $oHelpdeskThread->ItsMe = $oHelpdeskThread->IdOwner === $oHelpdeskUser->IdHelpdeskUser; $mResult[] = $oHelpdeskThread; } } $this->throwDbExceptionIfExist(); return $mResult; }
/** * @param string $sPath * @param \MailSo\Mime\Message $oMessage Message object * @param CHelpdeskUser $oHelpdeskThreadOwnerUser Helpdesk user object * @param CHelpdeskUser $oHelpdeskPostOwnerUser Helpdesk user object * @param CHelpdeskThread $oThread Helpdesk thread object * @param CHelpdeskPost $oPost Helpdesk post object * @param string $sSiteName */ private function _addHtmlBodyAndSubjectForPostMessage($sPath, &$oMessage, $oHelpdeskThreadOwnerUser, $oHelpdeskPostOwnerUser, $oThread, $oPost, $sSiteName) { $sSubject = ''; $oApiUsers = $this->_getApiUsers(); $sData = $this->_getMessageTemplate($sPath, $sSubject, function ($sData) use($oHelpdeskThreadOwnerUser, $oHelpdeskPostOwnerUser, $oThread, $oPost, $sSiteName, $oApiUsers) { $oAccount = $oApiUsers->getAccountByEmail($oHelpdeskPostOwnerUser->resultEmail()); $sPostOwner = \MailSo\Mime\Email::NewInstance($oHelpdeskPostOwnerUser->resultEmail(), $oHelpdeskPostOwnerUser->Name)->ToString(); $sSubjectPrefix = ''; if ($oThread && 0 < $oThread->PostCount - 1) { $sSubjectPrefix = 'Re' . (2 < $oThread->PostCount ? '[' . ($oThread->PostCount - 1) . ']' : '') . ': '; } $sAttachments = ''; if ($oPost && is_array($oPost->Attachments) && 0 < count($oPost->Attachments)) { $sAttachmentsNames = array(); foreach ($oPost->Attachments as $oAttachment) { if ($oAttachment) { $sAttachmentsNames[] = $oAttachment->FileName; } } $sAttachments = '<br /><br />Attachments: ' . implode(', ', $sAttachmentsNames) . '<br />'; } $sHelpdeskSiteName = strlen($sSiteName) === 0 ? 'Helpdesk' : $sSiteName; $sThreadOwner = $oHelpdeskThreadOwnerUser && \strlen($oHelpdeskThreadOwnerUser->Name) > 0 ? ' ' . $oHelpdeskThreadOwnerUser->Name : ''; return strtr($sData, array('{{HELPDESK/POST_AGENT_SUBJECT}}' => ':SUBJECT: ' . \CApi::ClientI18N('HELPDESK/MAIL_POST_AGENT_SUBJECT', null, array("OWNER" => $sPostOwner)), '{{HELPDESK/POST_AGENT_HTML}}' => $oPost ? \MailSo\Base\HtmlUtils::ConvertPlainToHtml($oPost->Text) : '', '{{HELPDESK/POST_AGENT_ATTACHMENTS}}' => $sAttachments, '{{HELPDESK/POST_AGENT_THREAD_LINK}}' => $oThread->threadLink(), '{{HELPDESK/POST_USER_SUBJECT}}' => $sSubjectPrefix . $oThread->Subject, '{{HELPDESK/POST_USER_GREET}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_USER_GREET', null, array("OWNER" => $sPostOwner)), '{{HELPDESK/POST_USER_REMIND}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_USER_REMIND', null, array("SITE" => $sHelpdeskSiteName)), '{{HELPDESK/POST_USER_THREAD_SUBJECT_LABEL}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_USER_THREAD_SUBJECT_LABEL'), '{{HELPDESK/POST_USER_THREAD_SUBJECT}}' => $oThread->Subject, '{{HELPDESK/POST_USER_HTML}}' => $oPost ? \MailSo\Base\HtmlUtils::ConvertPlainToHtml($oPost->Text) : '', '{{HELPDESK/POST_USER_NOT_REPLY}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_USER_NOT_REPLY'), '{{HELPDESK/POST_USER_CLICK_LINK}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_USER_CLICK_LINK'), '{{HELPDESK/POST_USER_THREAD_LINK}}' => $oThread->threadLink(), '{{HELPDESK/POST_NEW_SUBJECT}}' => ':SUBJECT: ' . \CApi::ClientI18N('HELPDESK/MAIL_POST_NEW_SUBJECT'), '{{HELPDESK/POST_NEW_GREET}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NEW_GREET', null, array("OWNER" => $sThreadOwner)), '{{HELPDESK/POST_NEW_REMIND}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NEW_REMIND', null, array("SITE" => $sHelpdeskSiteName)), '{{HELPDESK/POST_NEW_HTML}}' => $oPost ? \MailSo\Base\HtmlUtils::ConvertPlainToHtml($oPost->Text) : '', '{{HELPDESK/POST_NEW_NOT_REPLY}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NEW_NOT_REPLY'), '{{HELPDESK/POST_NEW_CLICK_LINK}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NEW_CLICK_LINK'), '{{HELPDESK/POST_NEW_THREAD_LINK}}' => $oThread->threadLink(), '{{HELPDESK/POST_NOTIFICATION_SUBJECT}}' => ':SUBJECT: ' . \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_SUBJECT'), '{{HELPDESK/POST_NOTIFICATION_GREET}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_GREET', null, array("OWNER" => $sThreadOwner)), '{{HELPDESK/POST_NOTIFICATION_REMIND}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_REMIND', null, array("SITE" => $sHelpdeskSiteName)), '{{HELPDESK/POST_NOTIFICATION_QUESTIONS}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_QUESTIONS'), '{{HELPDESK/POST_NOTIFICATION_CLOSE}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_CLOSE'), '{{HELPDESK/POST_NOTIFICATION_NOT_REPLY}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_NOT_REPLY'), '{{HELPDESK/POST_NOTIFICATION_CLICK_LINK}}' => \CApi::ClientI18N('HELPDESK/MAIL_POST_NOTIFICATION_CLICK_LINK'), '{{HELPDESK/POST_NOTIFICATION_THREAD_LINK}}' => $oThread->threadLink())); }); if (0 < strlen($sSubject)) { $oMessage->SetSubject($sSubject . ' [#' . $oThread->StrHelpdeskThreadHash . '#]'); } if (is_string($sData) && 0 < strlen($sData)) { $oMessage->AddText(\MailSo\Base\HtmlUtils::ConvertHtmlToPlain($sData), false); $oMessage->AddHtml($sData, true); } }
/** * @param CHelpdeskUser $oHelpdeskUser * @param int $iOffset = 0 * @param int $iLimit = 20 * @param int $iFilter = EHelpdeskThreadFilterType::All * @param string $sSearch = '' * @param int $iSearchOwner = 0 * * @return string */ public function GetThreads(CHelpdeskUser $oHelpdeskUser, $iOffset = 0, $iLimit = 20, $iFilter = EHelpdeskThreadFilterType::All, $sSearch = '', $iSearchOwner = 0) { $sSearch = trim($sSearch); $aWhere = array(); $aMap = api_AContainer::DbReadKeys(CHelpdeskThread::GetStaticMap()); $aMap = array_map(array($this, 'escapeColumn'), $aMap); $sSql = 'SELECT %s FROM %sahd_threads'; $sSql = sprintf($sSql, implode(', ', $aMap), $this->Prefix()); $aWhere = $this->buildThreadsWhere($oHelpdeskUser, $iFilter, $sSearch, $iSearchOwner); if (is_array($aWhere) && 0 < count($aWhere)) { $sSql .= ' WHERE ' . implode(' AND ', $aWhere); } else { $sSql .= ' WHERE 1 = 0'; } $sSql .= ' ORDER BY updated desc LIMIT ' . (int) $iLimit . ' OFFSET ' . (int) $iOffset; return $sSql; }