예제 #1
0
 public function createMailFromNewMessage()
 {
     if ($this->_isLocked() || !Mage::helper('aw_hdu3/config')->isEnabled()) {
         return $this;
     }
     $departmentCollection = Mage::getModel('aw_hdu3/department')->getCollection();
     $departmentCollection->addActiveFilter()->sortByOrder();
     foreach ($departmentCollection as $department) {
         /** @var AW_Helpdesk3_Model_Gateway $gateway */
         $gateway = $department->getGateway();
         if (!$gateway->getIsActive()) {
             continue;
         }
         AW_Lib_Helper_Log::start(Mage::helper('aw_hdu3')->__('Start process gateway "%s".', $gateway->getTitle()));
         try {
             $gateway->load($gateway->getId());
             $gateway->process();
         } catch (Exception $e) {
             AW_Lib_Helper_Log::log($e->getMessage(), AW_Lib_Helper_Log::SEVERITY_ERROR);
         }
         AW_Lib_Helper_Log::stop(Mage::helper('aw_hdu3')->__('Stop process gateway "%s".', $gateway->getTitle()));
     }
     //remove lock
     Mage::app()->removeCache(self::LOCK_CACHE_ID);
     return $this;
 }
예제 #2
0
 /**
  * Mark tickets as expire
  *
  * @return $this
  */
 public function closeExpireTickets()
 {
     if ($this->_isLocked(self::LOCK_CACHE_CLOSE_TICKET_ID) || !Mage::helper('aw_hdu3/config')->isEnabled()) {
         return $this;
     }
     $ticketCollection = Mage::getModel('aw_hdu3/ticket')->getCollection();
     $ticketCollection->addFilterByStatus(AW_Helpdesk3_Model_Source_Ticket_Status::WAITING_VALUE);
     $currentDate = new Zend_Date();
     $currentDateString = $currentDate->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
     AW_Lib_Helper_Log::stop(Mage::helper('aw_hdu3')->__('Mark tickets as Expired.'));
     foreach ($ticketCollection as $ticket) {
         $expireValue = Mage::helper('aw_hdu3/config')->getTicketAutoExpiration($ticket->getStoreId());
         if (null === $expireValue) {
             continue;
         }
         $finalDay = new Zend_Date($ticket->getUpdatedAt(), Varien_Date::DATETIME_INTERNAL_FORMAT);
         $finalDayString = $finalDay->addDay($expireValue)->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
         if ($finalDayString <= $currentDateString) {
             $ticket->setStatus(AW_Helpdesk3_Model_Source_Ticket_Status::CLOSED_VALUE)->save();
             AW_Lib_Helper_Log::stop(Mage::helper('aw_hdu3')->__('Ticket UID[%s] marked as expired.', $ticket->getUid()));
         }
     }
     AW_Lib_Helper_Log::stop(Mage::helper('aw_hdu3')->__('Complete.'));
     //remove lock
     Mage::app()->removeCache(self::LOCK_CACHE_CLOSE_TICKET_ID);
     return $this;
 }
예제 #3
0
 public function createFromOrder()
 {
     if (Mage::app()->getRequest()->getParam('create_ticket')) {
         $order = Mage::getModel('sales/order')->load(Mage::app()->getRequest()->getParam('order_id'));
         $history = Mage::app()->getRequest()->getPost();
         $history = @$history['history'];
         $body = Mage::app()->getResponse()->getBody();
         if (!array_key_exists('comment', $history) || empty($history['comment'])) {
             $message = Mage::helper('aw_hdu3')->__('Ticket has not been saved. Comment is empty');
             $message = Zend_Json::encode($message);
             $body .= "<script type='text/javascript'>orderTicket.showMessage({$message},'error-msg')</script>";
             Mage::app()->getResponse()->setBody($body);
             return $this;
         }
         $department = null;
         if (Mage::helper('aw_hdu3/config')->isPrimaryDepartmentActive(Mage::app()->getStore()->getId()) && ($defaultDepartmentId = Mage::helper('aw_hdu3/config')->getDefaultDepartmentId(Mage::app()->getStore()->getId()))) {
             $department = Mage::getModel('aw_hdu3/department')->load($defaultDepartmentId);
         }
         if (!$department || !$department->getId()) {
             $departmentCollection = Mage::getModel('aw_hdu3/department')->getCollection();
             $departmentCollection->sortByOrder()->addActiveFilter()->addFilterByStoreId(Mage::app()->getStore()->getId());
             $department = $departmentCollection->getFirstItem();
         }
         if (!$department || !$department->getId()) {
             $message = Mage::helper('aw_hdu3')->__('Ticket has not been saved. There are no Primary Department or any Help Desk Departments configured');
             $message = Zend_Json::encode($message);
             $body .= "<script type='text/javascript'>orderTicket.showMessage({$message},'error-msg')</script>";
             Mage::app()->getResponse()->setBody($body);
             return $this;
         }
         $ticket = Mage::getModel('aw_hdu3/ticket');
         $ticket->setDepartmentAgentId($department->getPrimaryAgentId())->setDepartmentId($department->getId())->setStatus(AW_Helpdesk3_Model_Source_Ticket_Status::NEW_VALUE)->setPriority(AW_Helpdesk3_Model_Source_Ticket_Priority::TODO_VALUE)->setCustomerName($order->getCustomerName())->setCustomerEmail($order->getCustomerEmail())->setOrderIncrementId($order->getIncrementId())->setSubject(Mage::helper('aw_hdu3')->__('Order #%s', $order->getIncrementId()))->setStoreId($order->getStoreId())->save();
         AW_Lib_Helper_Log::start(Mage::helper('aw_hdu3')->__('Got new ticket from order page.'));
         AW_Lib_Helper_Log::stop(Mage::helper('aw_hdu3')->__('Ticket UID[%s]', $ticket->getUid()));
         $ticket->addHistory(AW_Helpdesk3_Model_Ticket_History_Event_Message::TYPE, array('content' => trim(@$history['comment'])));
         $ticketUrl = Mage::helper('adminhtml')->getUrl('helpdesk_admin/adminhtml_ticket/edit', array('id' => $ticket->getId()));
         $ticketUrlHtml = Mage::helper('aw_hdu3')->__('Ticket %s has been successfully saved', "<a href='{$ticketUrl}'>" . $ticket->getUid() . "</a>");
         $ticketUrlHtml = Zend_Json::encode($ticketUrlHtml);
         $body .= "<script type='text/javascript'>orderTicket.showMessage({$ticketUrlHtml},'success-msg')</script>";
         Mage::app()->getResponse()->setBody($body);
     }
 }
예제 #4
0
파일: Log.php 프로젝트: protechhelp/gamamba
 protected static function _compareSeverities($severity = null)
 {
     if (!$severity) {
         $severity = self::SEVERITY_NOTICE;
     }
     self::$_currentSeverity = $severity;
     if (self::$_severitiesPriority[self::$_maxSeverity] < self::$_severitiesPriority[$severity]) {
         self::$_maxSeverity = $severity;
     }
 }
예제 #5
0
 protected function _convertMessageToMail($message, $messageUid)
 {
     $messageNumber = $this->_getMessageNumberByUid($messageUid);
     $currentDate = new Zend_Date();
     $mail = Mage::getModel('aw_hdu3/gateway_mail');
     $mail->setUid($this->getMailUidByMessageUid($messageUid))->setGatewayId($this->getId())->setFrom($this->_getMessageFrom($message))->setTo($this->getEmail())->setStatus(AW_Helpdesk3_Model_Gateway_Mail::STATUS_UNPROCESSED)->setBody($this->_getMessageBody($message))->setHeaders($this->_getMessageHeadersByNumber($messageNumber))->setSubject($this->_getMessageSubject($message))->setContentType(strtok($this->_getMessageContentType($message), ';'))->setCreatedAt($currentDate->toString(Varien_Date::DATETIME_INTERNAL_FORMAT));
     try {
         $mail->save();
         AW_Lib_Helper_Log::log(Mage::helper('aw_hdu3')->__('Message saved with UID[%s]', $mail->getUid()));
     } catch (Exception $e) {
         AW_Lib_Helper_Log::log($e->getMessage(), AW_Lib_Helper_Log::SEVERITY_ERROR);
     }
     if ($this->getIsAllowAttachment()) {
         $attachments = $this->_getMessageAttachment($message);
         if (is_array($attachments)) {
             foreach ($attachments as $attach) {
                 if (is_array($attach)) {
                     AW_Lib_Helper_Log::log(Mage::helper('aw_hdu3')->__('Got new attachment (%s)', $attach['filename']));
                     try {
                         $mail->addAttachmentFromArray($attach);
                     } catch (Exception $e) {
                         AW_Lib_Helper_Log::log($e->getMessage(), AW_Lib_Helper_Log::SEVERITY_ERROR);
                     }
                 }
             }
         }
     }
     //remove mail from gateway
     if ($this->getDeleteEmails()) {
         $this->_removeMessageFromServerByNumber($messageNumber);
     }
     return $this;
 }