Esempio n. 1
0
 /**
  * Sends requests to real-time services and process responses.
  *
  * @return array Shipping method rates list
  */
 public static function getRates()
 {
     $_services = array('multi' => array(), 'simple' => array());
     if (empty(self::$_services_stack)) {
         return array();
     }
     if (self::_checkMultithreading()) {
         foreach (self::$_services_stack as $shipping_key => $service_object) {
             if ($service_object->allowMultithreading()) {
                 $key = 'multi';
             } else {
                 $key = 'simple';
             }
             $_services[$key][$shipping_key] = $service_object;
         }
     } else {
         $_services['simple'] = self::$_services_stack;
     }
     if (!empty($_services['multi'])) {
         foreach ($_services['multi'] as $shipping_key => $service_object) {
             $data = $service_object->getRequestData();
             $headers = empty($data['headers']) ? array() : $data['headers'];
             if ($data['method'] == 'post') {
                 Http::mpost($data['url'], $data['data'], array('callback' => array('\\Tygh\\Shippings\\RealtimeServices::multithreadingCallback', $shipping_key), 'headers' => $headers));
             } else {
                 Http::mget($data['url'], $data['data'], array('callback' => array('\\Tygh\\Shippings\\RealtimeServices::multithreadingCallback', $shipping_key), 'headers' => $headers));
             }
         }
         Http::processMultiRequest();
     }
     if (!empty($_services['simple'])) {
         foreach ($_services['simple'] as $shipping_key => $service_object) {
             $response = $service_object->getSimpleRates();
             self::multithreadingCallback($response, $shipping_key);
         }
     }
     return self::$_rates;
 }
Esempio n. 2
0
 /**
  * Checks and download upgrade schemas if available. Shows notification about new upgrades.
  * Uses data from the Upgrade Connectors.
  *
  * @param bool $show_upgrade_notice Flag that determines whether or not the message about new upgrades
  */
 public function checkUpgrades($show_upgrade_notice = true)
 {
     $connectors = $this->getConnectors();
     if (!empty($connectors)) {
         foreach ($connectors as $_id => $connector) {
             $data = $connector->getConnectionData();
             $headers = empty($data['headers']) ? array() : $data['headers'];
             if ($data['method'] == 'post') {
                 Http::mpost($data['url'], $data['data'], array('callback' => array(array(), $_id, $show_upgrade_notice), 'headers' => $headers));
             } else {
                 Http::mget($data['url'], $data['data'], array('callback' => array(array($this, 'processResponses'), $_id, $show_upgrade_notice), 'headers' => $headers));
             }
         }
         Http::processMultiRequest();
     }
 }