Esempio n. 1
0
 /**
  * Send broadcast message
  *
  * @throws Mage_Core_Exception
  * @param Mage_XmlConnect_Model_Queue $queue
  */
 public function sendBroadcastMessage(Mage_XmlConnect_Model_Queue $queue)
 {
     if ($queue->getStatus() != Mage_XmlConnect_Model_Queue::STATUS_IN_QUEUE) {
         return;
     }
     try {
         $appCode = $queue->getAppCode();
         /** @var $app Mage_XmlConnect_Model_Application */
         $app = Mage::getModel('xmlconnect/application')->loadByCode($appCode);
         if (!$app->getId()) {
             Mage::throwException(Mage::helper('xmlconnect')->__('Can\'t load application with code "%s"', $appCode));
         }
         if (!$app->isNotificationsActive()) {
             $queue->setStatus(Mage_XmlConnect_Model_Queue::STATUS_CANCELED);
             return;
         }
         $userpwd = $app->getUserpwd();
         $sendType = $queue->getData('type');
         switch ($sendType) {
             case Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_AIRMAIL:
                 $configPath = 'xmlconnect/' . Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_AIRMAIL . '/broadcast_url';
                 $params = $queue->getAirmailBroadcastParams();
                 break;
             case Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_PUSH:
             default:
                 $configPath = 'xmlconnect/' . Mage_XmlConnect_Model_Queue::MESSAGE_TYPE_PUSH . '/broadcast_url';
                 $params = $queue->getPushBroadcastParams();
                 break;
         }
         $curlHandler = curl_init(Mage::getStoreConfig($configPath));
         $httpHeaders = $this->getHttpHeaders();
         curl_setopt($curlHandler, CURLOPT_POST, 1);
         curl_setopt($curlHandler, CURLOPT_HTTPHEADER, $httpHeaders);
         curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $params);
         curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($curlHandler, CURLOPT_USERPWD, $userpwd);
         curl_setopt($curlHandler, CURLOPT_TIMEOUT, 60);
         // Execute the request.
         $result = curl_exec($curlHandler);
         $succeeded = curl_errno($curlHandler) == 0 ? true : false;
         // close cURL resource, and free up system resources
         curl_close($curlHandler);
         if ($succeeded && (is_null($result) || strtolower($result) == 'null')) {
             $queue->setStatus(Mage_XmlConnect_Model_Queue::STATUS_COMPLETED);
         }
         $queue->setIsSent(true);
         return;
     } catch (Exception $e) {
         Mage::logException($e);
         throw $e;
     }
 }