upsProductCode = $prod; } function origin($postal, $country){ $this->originPostalCode = $postal; $this->originCountryCode = $country; } function dest($postal, $country){ $this->destPostalCode = $postal; $this->destCountryCode = $country; } function rate($foo){ switch(strtoupper($foo)){ case "RDP": $this->rateCode = "Regular+Daily+Pickup"; break; case "OCA": $this->rateCode = "On+Call+Air"; break; case "OTP": $this->rateCode = "One+Time+Pickup"; break; case "LC": $this->rateCode = "Letter+Center"; break; case "CC": $this->rateCode = "Customer+Counter"; break; } } function container($foo){ switch(strtoupper($foo)){ case "CP": // Customer Packaging $this->containerCode = "00"; break; case "ULE": // UPS Letter Envelope $this->containerCode = "01"; break; case "UT": // UPS Tube $this->containerCode = "03"; break; case "UEB": // UPS Express Box $this->containerCode = "21"; break; case "UW25": // UPS Worldwide 25 kilo $this->containerCode = "24"; break; case "UW10": // UPS Worldwide 10 kilo $this->containerCode = "25"; break; } } function weight($foo){ $this->packageWeight = $foo; } function rescom($foo){ switch(strtoupper($foo)){ case "RES": // Residential Address $this->resComCode = "1"; break; case "COM": // Commercial Address $this->resComCode = "0"; break; } } function getQuote(){ global $config; $upsAction = "3"; // You want 3. Don't change unless you are sure. $url = join("&", array("http://www.ups.com/using/services/rave/qcostcgi.cgi?accept_UPS_license_agreement=yes", "10_action=$upsAction", "13_product=$this->upsProductCode", "14_origCountry=$this->originCountryCode", "15_origPostal=$this->originPostalCode", "19_destPostal=$this->destPostalCode", "22_destCountry=$this->destCountryCode", "23_weight=$this->packageWeight", "47_rate_chart=$this->rateCode", "48_container=$this->containerCode", "49_residential=$this->resComCode" ) ); if (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if($config['proxy']==1){ curl_setopt ($ch, CURLOPT_PROXY, $config['proxyHost'].":".$config['proxyPort']); } $data = curl_exec($ch); if (!empty($data)) { $dataline = explode("\n", $data); foreach ($dataline as $result) { if (strstr($result, 'Origin postal code must have five digits')) { echo 'Origin postal code must have five digits to use UPS. Please update this in the module settings.'; exit; } else if (strstr($result, 'Unsupported country specified')) { echo 'Unsupported country specified to use UPS. Please update this in the general settings.'; exit; } $result = explode('%', $result); $errcode = substr($result[0], -1); switch($errcode){ case 3: $returnval = $result[8]; break; case 4: $returnval = $result[8]; break; case 5: $returnval = $result[1]; break; case 6: $returnval = $result[1]; break; } } } } else { $fp = fopen($url, 'r'); while(!feof($fp)) { $result = fgets($fp, 500); if (strstr($result, 'Origin postal code must have five digits')) { echo 'Origin postal code must have five digits to use UPS. Please update this in the module settings.'; exit; } else if (strstr($result, 'Unsupported country specified')) { echo 'Unsupported country specified to use UPS. Please update this in the general settings.'; exit; } $result = explode('%', $result); $errcode = substr($result[0], -1); switch($errcode){ case 3: $returnval = $result[8]; break; case 4: $returnval = $result[8]; break; case 5: $returnval = $result[1]; break; case 6: $returnval = $result[1]; break; } } fclose($fp); } return (!$returnval) ? 'error' : $returnval; } } ?>