/** * 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; }
/** * 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(); } }