Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

Hello !

I am busy with a redesign of a shipping-module for the Netherlands.

I have add a selection for the national shipping: normal post and registered post.

People can choose for normal post or registered post by clicking the appropiate selectionbox.

So far so good. But after they go a step further in the ordersystem (leaving the shipping module

and entering the next module: payment), the selected shipping method is not stored.

The first entry from the two shipping-options is selected, also when they selected the second option.

The arrays in the code seems to be well, can't find the problem yet. I hope somebody can see

what's wrong.... Underneath you will find the code.

 

Problem is: // registered priority post

 

Regards,

;-) Arthur

 

---

 

<?php

/*

$Id: tpgpost.php 14 Dec 2004 11:00:00 -0000 2.2

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

Copyright © 2004 HMCservices, http://www.hmcs.nl

Copyright © 2005 A.S. Kerkmeester, http://www.www.flashios.org

Released under the GNU General Public License

 

---------------------------------------------------------------------------

New TPG-version by A.S. Kerkmeester

 

OSCOMMERCE-table addition:

 

Add 'tpg' record to database table 'products':

ALTER TABLE `products` ADD `tpg` TINYINT( 1 ) DEFAULT '1' NOT NULL ;

 

Remove 'tpg' record to database table 'products':

ALTER TABLE `products` DROP `tpg`

 

Value 1 means: default letter shipping

Value 2 means: package shipping

Value 3 means: NO TPG shipping possible (heavy packages)

 

If an order contains products with 'tpg'=3 : no TPG shipping possible !

If an order contains only products with 'tpg'=1 : letter shipping !

If and order contains 1 or more product with 'tpg'=2 : package shipping !

 

Changes in: \catalog\includes\classes\shopping_cart.php

\catalog\admin\categories.php

\catalog\admin\includes\languages\dutch\categories.php

\catalog\admin\includes\languages\english\categories.php

 

---------------------------------------------------------------------------

 

*/

 

define('TPGPOST_SITE', 'https://secure.postplaza.nl/TPGApps/tarievenwijzer/control/rateInquiry');

define('TPGPOST_GATEWAY', 'http://www.hmcs.nl/gateways/tpgpost.php');

define('HIGH_VALUE','1');

define('HIGHER_VALUE','2');

define('HIGHEST_VALUE','3');

 

class tpgpost {

var $code, $title, $description, $icon, $enabled, $types, $tpginfo;

 

// class constructor

function tpgpost() {

global $order;

 

$this->code = 'tpgpost';

$this->title = MODULE_SHIPPING_TPGPOST_TEXT_TITLE;

$this->description = MODULE_SHIPPING_TPGPOST_TEXT_DESCRIPTION;

$this->sort_order = MODULE_SHIPPING_TPGPOST_SORT_ORDER;

$this->icon = DIR_WS_ICONS . 'shipping_tpgpost.gif';

$this->tax_class = MODULE_SHIPPING_TPGPOST_TAX_CLASS;

$this->enabled = ((MODULE_SHIPPING_TPGPOST_STATUS == 'True') ? true : false);

 

if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TPGPOST_ZONE > 0) ) {

$check_flag = false;

$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_TPGPOST_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");

while ($check = tep_db_fetch_array($check_query)) {

if ($check['zone_id'] < 1) {

$check_flag = true;

break;

} elseif ($check['zone_id'] == $order->delivery['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

}

 

// class methods

function quote($method = '') {

global $HTTP_POST_VARS, $order, $cart, $shipping_weight, $shipping_num_boxes;

 

$this->$tpgmethod = $cart->show_tpg();

$this->tpginfo = MODULE_SHIPPING_TPGPOST_TEXT_NOSHIPPING; // default value

if ($this->$tpgmethod == 1) $this->tpginfo = MODULE_SHIPPING_TPGPOST_TEXT_LETTERPOST;

if ($this->$tpgmethod == 2) $this->tpginfo = MODULE_SHIPPING_TPGPOST_TEXT_PACKAGEPOST;

if ($this->$tpgmethod == 3) $this->tpginfo = MODULE_SHIPPING_TPGPOST_TEXT_GLSPACKAGE;

 

$shipping_weight = ceil($shipping_weight);

 

if ($order->delivery['country']['iso_code_2'] == 'NL') {

$result = $this->_tpgpostAction_NL($method, $shipping_weight, $shipping_num_boxes); // return (a single) quote for national shipping

} else {

$result = $this->_tpgpostAction_int($method, $shipping_weight, $shipping_num_boxes, $order->delivery['country']['iso_code_2']); //intn'l shipping

}

 

if (is_array($result)) {

$this->quotes = $result;

} else {

$this->quotes = array('module' => $this->title,

'error' => 'An error occured with the TPGPOST shipping calculations.<br>If you prefer to use TPGPOST as your shipping method, please contact the store owner.<br>The error is: ' . $result);

}

if ($this->tax_class > 0) {

$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);

}

 

if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

 

return $this->quotes;

}

 

function check() {

if (!isset($this->_check)) {

$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_TPGPOST_STATUS'");

$this->_check = tep_db_num_rows($check_query);

}

return $this->_check;

}

 

function install() {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable TPGPOST Shipping', 'MODULE_SHIPPING_TPGPOST_STATUS', 'True', 'Do you want to offer TPGpost shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('TPGPOST Free shipping weight', 'MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT', '110', 'Do you want to offer \'free shipping\' for letter shipments with a weight upto a specific value?<br>0 = No<br>Other value = free shipping for packages with this weight or less', '6', '10', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Liability for National Shipping', 'MODULE_SHIPPING_TPGPOST_LOCAL_LIABILITY', 'Normal', 'Do you want to ship with \'normal liability\' or \'increased liability\' to national destinations?', '6', '0', 'tep_cfg_select_option(array(\'Normal\', \'Increased\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('International Shipping Type', 'MODULE_SHIPPING_TPGPOST_INTNL_TYPE', 'Internationaal Pakket Basis', 'Which shippingtype do you want to use for international shippings?', '6', '0', 'tep_cfg_select_option(array(\'Internationaal Pakket Basis\', \'Internationaal Pakket Plus\', \'Basis, if not available Plus\', \'Plus, if not available Basis\', \'All available quotes\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_TPGPOST_HANDLING', '0.00', 'Handling fee for this shipping method.', '6', '0', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_TPGPOST_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_TPGPOST_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Connection Method to be used', 'MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD', 'Curl library', 'Enter the connection method you want to use', '6', '0', 'tep_cfg_select_option(array(\'Curl library\', \'FileSystem\', \'Sockets\', \'Gateway\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_TPGPOST_SORT_ORDER', '2', 'Sort order of display.', '6', '0', now())");

}

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

 

function keys() {

return array('MODULE_SHIPPING_TPGPOST_STATUS', 'MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT' ,'MODULE_SHIPPING_TPGPOST_LOCAL_LIABILITY', 'MODULE_SHIPPING_TPGPOST_INTNL_TYPE', 'MODULE_SHIPPING_TPGPOST_HANDLING', 'MODULE_SHIPPING_TPGPOST_TAX_CLASS', 'MODULE_SHIPPING_TPGPOST_ZONE', 'MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD', 'MODULE_SHIPPING_TPGPOST_SORT_ORDER');

}

 

function _tpgpostAction_int($method, $weight, $boxes, $country) {

 

$weight_per_box = ceil($weight / $boxes);

 

if ($this->$tpgmethod == 1) {

$url = $this->_tpgpostBuildUrl_int($weight_per_box, $country);

} else {

$url = $this->_tpgpostBuildUrl_int_PACKAGE($weight_per_box, $country);

}

 

$errorcode = $this->_tpgpostGetPage($url, $body);

if ($errorcode) {

return $body;

}

 

if ($this->$tpgmethod == 1) {

$tpgpost_quote = $this->_tpgpostParseResult_int($body,$weight_per_box);

} else {

$tpgpost_quote = $this->_tpgpostParseResult_int_PACKAGE($body,$weight_per_box);

}

 

if ( (is_array($tpgpost_quote)) && (sizeof($tpgpost_quote) > 0) ) {

$basic_present = false;

$special_present = false;

 

for ($i = 0, $j = sizeof($tpgpost_quote); $i < $j; $i++) {

reset($tpgpost_quote[$i]);

list($type, $cost) = each($tpgpost_quote[$i]);

if (strpos(strtoupper($type), strtoupper('Basis')) != false) {

$basic_present = true;

} else {

$special_present = true;

}

}

 

$methods = array();

 

for ($i = 0, $j = sizeof($tpgpost_quote); $i < $j; $i++) {

reset($tpgpost_quote[$i]);

list($type, $cost) = each($tpgpost_quote[$i]);

 

$quote_type = (strpos(strtoupper($type), strtoupper('Basis')) != false) ? 'Basis' : 'Plus';

 

$use_quote = false;

if ($method == '') {

if (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'All available quotes') {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Internationaal Pakket Basis') && ($quote_type == 'Basis') ) {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Internationaal Pakket Plus') && ($quote_type == 'Plus') ) {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Basis, if not available Plus') && ($quote_type == 'Basis') ) {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Basis, if not available Plus') && ($quote_type == 'Plus') && ($basic_present == false) ) {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Plus, if not available Basis') && ($quote_type == 'Plus') ) {

$use_quote = true;

} elseif ( (MODULE_SHIPPING_TPGPOST_INTNL_TYPE == 'Plus, if not available Basis') && ($quote_type == 'Basis') && ($special_present == false) ) {

$use_quote = true;

}

} else {

if ($method == $type) {

$use_quote = true;

}

}

 

if ($use_quote == true) {

$methods[] = array('id' => $type,

'title' => $type,

'cost' => (($cost * $boxes) + MODULE_SHIPPING_TPGPOST_HANDLING));

}

 

}

if (tep_not_null($methods)) {

$quotes = array('id' => $this->code,

'module' => $this->title . $this->tpginfo . ': ' . $boxes . 'x' . $weight . 'gr',

'methods' => $methods);

} else {

$quotes = '';

}

} else {

$quotes = array('module' => $this->title . $this->tpginfo,

'error' => 'An error occured with the TGPpost shipping calculations.<br>If you prefer to use TGPpost as your shipping method, please contact the store owner.');

}

 

return $quotes;

}

 

 

// ---------------------------------------------------------------------------------------------------------

function _tpgpostAction_NL($method, $weight, $boxes) {

 

$weight_per_box = ceil($weight / $boxes);

$methods = array();

$method_normal = true;

$method_registered = true;

 

// standard priority post

if ($this->$tpgmethod == 1) {

//$url = $this->_tpgpostBuildUrl_NL($weight_per_box);

$url = $this->_tpgpostBuildUrl_NL($weight,$boxes);

} else {

//$url = $this->_tpgpostBuildUrl_NL_PACKAGE($weight);

$url = $this->_tpgpostBuildUrl_NL_PACKAGE($weight_per_box);

}

$errorcode = $this->_tpgpostGetPage($url, $body);

if ($errorcode) {

return $body;

}

 

$price_per_box=0;

if ((MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT !=0) and ($this->$tpgmethod == 1) and ($weight <= (int)MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT)) { // weight lower then free shipping weight limit: free shipping

$price_per_box=0;

} else {

$price_per_box = $this->_tpgpostParseResult_NL($body);

if ($price_per_box <= 0) {

$method_normal = false;

}

}

 

if ($method_normal) {

$price_total = $price_per_box * $boxes;

$methods[0] = array('id' => MODULE_SHIPPING_TPGPOST_TEXT_NORMAL,

'title' => MODULE_SHIPPING_TPGPOST_TEXT_NORMAL,

'cost' => ($price_total + MODULE_SHIPPING_TPGPOST_HANDLING));

}

 

// registered priority post

 

if ($this->$tpgmethod == 1) {

$url = $this->_tpgpostBuildUrl_NL_REG($weight_per_box,$boxes);

} else {

$url = $this->_tpgpostBuildUrl_NL_REGPACKAGE($weight_per_box,HIGH_VALUE);

}

 

$errorcode = $this->_tpgpostGetPage($url, $body);

if ($errorcode) {

return $body;

}

 

if ($this->$tpgmethod == 1) {

$price_per_box = $this->_tpgpostParseResult_registered($body);

} else {

$price_per_box = $this->_tpgpostParseResult_registered_PACKAGE($body);

}

 

if ($price_per_box <= 0) {

$method_registered = false;

}

 

if ($method_registered) {

$price_total = $price_per_box * $boxes;

$methods[1] = array('id' => MODULE_SHIPPING_TPGPOST_TEXT_REGISTERED,

'title' => MODULE_SHIPPING_TPGPOST_TEXT_REGISTERED,

'cost' => ($price_total + MODULE_SHIPPING_TPGPOST_HANDLING));

}

 

// make it final

 

if (tep_not_null($methods)) {

$quotes = array('id' => $this->code,

'module' => (MODULE_SHIPPING_TPGPOST_TEXT_TITLE . $this->tpginfo . ': ' . $boxes . 'x' . $weight . 'gr'),

'methods' => $methods);

} else {

$quotes = '';

}

 

if ($method_normal == false and $method_registered == false) {

return '<a href="' . TPGPOST_SITE . '?control_event_action_name=BaseAction_CLEAR&ProductGroupId=2">TPGpost site</a> is unavailable';

}

 

return $quotes;

}

 

// ---------------------------------------------------------------------------------------------------------

 

//Build the URL for an international quote and return it (Outside the Netherlands, ProductGroupId=12 is: PACKAGE-POST)

function _tpgpostBuildUrl_int_PACKAGE($tbu_weight, $tbu_country) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=12';

$tbu_params .= '&numberOfItems=1';

$tbu_params .= '&weight=' . $tbu_weight;

$tbu_params .= '&Destination_country=' . strtoupper($tbu_country);

return $tbu_params;

}

 

//Build the URL for an international quote and return it (Outside the Netherlands, ProductGroupId=11 is: LETTERPOST)

function _tpgpostBuildUrl_int($tbu_weight, $tbu_country) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=11';

$tbu_params .= '&numberOfItems=1';

$tbu_params .= '&weight=' . $tbu_weight;

$tbu_params .= '&Destination_country=' . strtoupper($tbu_country);

return $tbu_params;

}

 

//Build the URL for a national quote and return it (Netherlands, ProductGroupId=2 is: PACKAGE-POST)

function _tpgpostBuildUrl_NL_PACKAGE($tbu_weight) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=2';

$tbu_params .= '&numberOfItems=1';

$tbu_params .= '&weight=' . $tbu_weight;

// $tbu_params .= ((MODULE_SHIPPING_TPGPOST_LOCAL_LIABILITY == 'Increased') ? '&Verhoogd_aansprakelijk=on' : '');

$tbu_params .= '&FrankingType=Parcel_stamp';

return $tbu_params;

}

 

//Build the URL for a national quote and return it (Netherlands, ProductGroupId=2 is: PACKAGE-POST)

function _tpgpostBuildUrl_NL_REGPACKAGE($tbu_weight,$regvalue) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=3';

$tbu_params .= '&numberOfItems=1';

$tbu_params .= '&weight=' . $tbu_weight;

$tbu_params .= '&Verzekerd_vervoer=on';

$tbu_params .= '&FrankingType=Agt_Stamp';

$tbu_params .= '&Waarde_item=Tot_450';

if ($regvalue==HIGHER_VALUE) { $tbu_params .= '&Waarde_item=Tot_2700'; }

if ($regvalue==HIGHEST_VALUE) { $tbu_params .= '&Waarde_item=Tot_5400'; }

return $tbu_params;

}

 

//Build the URL for a national quote and return it (Netherlands, ProductGroupId=1 is: LETTER-POST)

function _tpgpostBuildUrl_NL($tbu_weight, $tbu_boxes) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=1';

$tbu_params .= '&numberOfItems=' . $tbu_boxes;

$tbu_params .= '&weight=' . $tbu_weight;

$tbu_params .= '&FrankingType=Stamp';

return $tbu_params;

}

 

//Build the URL for a national quote and return it (Netherlands, ProductGroupId=3 is: REGISTERED LETTER-POST)

function _tpgpostBuildUrl_NL_REG($tbu_weight, $tbu_boxes) {

$tbu_params = '?control_event_action_name=BaseAction_VIEW';

$tbu_params .= '&ProductGroupId=3';

$tbu_params .= '&numberOfItems=' . $tbu_boxes;

$tbu_params .= '&weight=' . $tbu_weight;

$tbu_params .= '&FrankingType=Agt_Stamp';

return $tbu_params;

}

 

 

// Get the page

// return false if no error, true if error

function _tpgpostGetPage($tgp_url, &$tgp_result) {

if (MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD == 'Curl library') {

return $this->_GetPage_Curl_library($tgp_url, $tgp_result);

} elseif (MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD == 'FileSystem') {

return $this->_GetPage_FileSystem($tgp_url, $tgp_result);

} elseif (MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD == 'Sockets') {

return $this->_GetPage_Sockets($tgp_url, $tgp_result);

} elseif (MODULE_SHIPPING_TPGPOST_CONNECTION_METHOD == 'Gateway') {

return $this->_GetPage_Gateway($tgp_url, $tgp_result);

} else {

$tgp_result = '<b>Error: Unknown connection method specified</b>';

return true;

}

}

 

function _GetPage_Curl_library($tgp_url, &$tgp_result) {

if (!extension_loaded('curl')) { // Is cURL installed

$tgp_result = '<b>Error in _GetPage_Curl_library: cURL is *NOT* installed on this system</b>';

return true;

}

 

$tgp_error = false;

$tgp_result = '';

 

$tgp_handle = curl_init(); // Initialize Curl

if (curl_errno($tgp_handle) != CURLE_OK) {

$tgp_error = true;

} else {

curl_setopt($tgp_handle, CURLOPT_TIMEOUT, 60);

curl_setopt($tgp_handle, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($tgp_handle, CURLOPT_URL, (TPGPOST_SITE . $tgp_url));

curl_setopt($tgp_handle, CURLOPT_RETURNTRANSFER,1);

 

$tgp_body = curl_exec($tgp_handle); // Go get the page

if (!$tgp_body) {

$tgp_error = true;

}

}

if ($tgp_error) {

$tgp_result = curl_error($tgp_handle) . ' (errno = ' . curl_errno($tgp_handle) . ').'; //Build errormessage

} else {

$tgp_result = $tgp_body;

}

curl_close($tgp_handle); // Done

 

return $tgp_error;

}

 

function _GetPage_FileSystem($tgp_url, &$tgp_result) {

 

$fd = @fopen((TPGPOST_SITE . $tgp_url), 'rb');

if ($fd == false) {

$tgp_result = '<b>Error in _GetPage_FileSystem::fopen()</b>';

return true;

}

 

$tgp_result = "";

while (!feof($fd))

$tgp_result .= fgets($fd, 4096);

 

fclose($fd);

 

return false;

}

 

function _GetPage_Sockets($tgp_url, &$tgp_result) {

$fsock_url = TPGPOST_SITE . $tgp_url;

$fsock_url = parse_url($fsock_url);

 

$fsock_host = $fsock_url['host'];

if ($fsock_url['scheme'] == 'https') {

$fsock_scheme = 'ssl://';

$fsock_port = 443;

} else {

$fsock_scheme = '';

$fsock_port = 80;

}

 

$fd = @fsockopen(($fsock_scheme . $fsock_host), $fsock_port, $fsock_errno, $fsock_errstr, 30);

if ($fd == false) {

$tgp_result = '<b>Error in _GetPage_Sockets::fsockopen(): ' . $fsock_errno . ' = ' . $fsock_errstr . '</b>';

return true;

}

$request = "GET " . $fsock_url['path'] . '?' . $fsock_url['query'] . " HTTP/1.0\r\n\r\n";

fputs($fd, $request);

 

$headers = "";

while ($str = trim(fgets($fd, 4096)))

$headers .= $str . "\n";

 

$tgp_result = "";

while (!feof($fd))

$tgp_result .= fgets($fd, 4096);

 

fclose($fd);

return false;

}

 

function _GetPage_Gateway($tgp_url, &$tgp_result) {

$url_array = parse_url(TPGPOST_GATEWAY . $tgp_url);

$http = new httpClient($url_array['host'], 80);

$http->addHeader('Host', $url_array['host']);

$http->addHeader('User-Agent', 'TPGpost_Gateway_1.0');

$http->addHeader('Connection', 'Close');

$status = $http->Get($url_array['path'] . '?' . $url_array['query']);

if ($status != 200) {

$tgp_result = '<b>Error in _GetPage_Gateway::Get: ' . $status . ' = ' . $http->getStatusMessage() . '</b>';

return true;

}

 

$tgp_result = $http->getBody();

 

$http->Disconnect();

 

return false;

}

// ---------------------------------------------------------------------------------------------------------

function _tpgpostParseResult_int_PACKAGE($tpr_body,$weight) {

 

$tpr_body_array = explode("\n", strip_tags($tpr_body));

 

$returnval = array();

$i = 0;

$j = sizeof($tpr_body_array);

while($i < $j){

if (strncasecmp(trim($tpr_body_array[$i]), "internationaal pakket", 21) == 0) {

$tpr_days = sprintf(MODULE_SHIPPING_TPGPOST_TEXT_DAYS, str_replace('&NBSP;', '', strtoupper(trim($tpr_body_array[$i + 5]))));

$tpr_type = trim($tpr_body_array[$i]) . $tpr_days;

$tpr_cost = str_replace( ',', '.', str_replace('&EURO;', '', str_replace('&NBSP;', '', strtoupper(trim($tpr_body_array[$i + 9])))));

$returnval[] = array($tpr_type => $tpr_cost);

}

$i++;

}

 

if (!tep_not_null($returnval)) $returnval = 'error';

 

return $returnval;

}

// ---------------------------------------------------------------------------------------------------------

 

 

function _tpgpostParseResult_int($tpr_body,$weight) {

 

$tpr_body_array = explode("\n", strip_tags($tpr_body));

 

$returnval = array();

$i = 0;

$j = sizeof($tpr_body_array);

while($i < $j){

if (strncasecmp(trim($tpr_body_array[$i]), "Brievenbuspost", 14) == 0) {

$tpr_days = sprintf(MODULE_SHIPPING_TPGPOST_TEXT_DAYS, str_replace('&NBSP;', '', strtoupper(trim($tpr_body_array[$i + 5]))));

$tpr_type = trim($tpr_body_array[$i]) . $tpr_days;

if ((MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT !=0) and ($weight <= (int)MODULE_SHIPPING_TPGPOST_FREESHIPPING_WEIGHT)) { // weight lower then free shipping weight limit: free shipping

$tpr_cost=0;

} else {

$tpr_cost = str_replace( ',', '.', str_replace('&EURO;', '', str_replace('&NBSP;', '', strtoupper(trim($tpr_body_array[$i + 9])))));

}

$returnval[] = array($tpr_type => $tpr_cost);

}

$i++;

}

 

if (!tep_not_null($returnval)) $returnval = 'error';

 

return $returnval;

}

 

// ---------------------------------------------------------------------------------------------------------

 

function _tpgpostParseResult_registered_PACKAGE($tpr_body) {

 

// parse the page to find the quote(s): Dutch package post

 

//print_r($tpr_body);

$tpr_body=strstr($tpr_body,"1334"); // "Aangetekend, verzekerd <EUR 450"

// print_r($tpr_body);

$tpr_body_array = explode("\n", $tpr_body);

// print_r($tpr_body_array);

$result = explode("??", $tpr_body_array[5]);

$valuestring=str_replace(',', '.', trim($result[1]));

$resultnum = sscanf($valuestring, '%f');

return $resultnum[0];

 

}

// ---------------------------------------------------------------------------------------------------------

function _tpgpostParseResult_registered($tpr_body) {

 

// parse the page to find the quote(s): Dutch registered package post

 

//print_r($tpr_body);

$tpr_body=strstr($tpr_body,"1010"); // "Aangetekend"

// print_r($tpr_body);

$tpr_body_array = explode("\n", $tpr_body);

// print_r($tpr_body_array);

$result = explode("??", $tpr_body_array[5]);

$valuestring=str_replace(',', '.', trim($result[1]));

$resultnum = sscanf($valuestring, '%f');

return $resultnum[0];

 

}

// ---------------------------------------------------------------------------------------------------------

 

 

// parse the page to find the quote(s)

function _tpgpostParseResult_NL($tpr_body) {

$price = 0;

$tpr_body_array = explode("\n", $tpr_body);

for ($i=0, $n=sizeof($tpr_body_array); $i<$n; $i++) {

$result = explode("??", $tpr_body_array[$i]);

if ($result[0] != $tpr_body_array[$i]) { // Was the delimiter in this line?

$resultnum = sscanf(str_replace(',', '.', $result[1]), '%f'); //just the amount

$price = $resultnum[0];

break;

}

}

return $price;

}

 

}

?>

Posted

Arthur

I looked at your code...and it seems to follow a good logic flow...What

I would do is debug it...easy way is to use the php echo command...

Putting echos along the logic flow where you expect to be

example "point A: ".varable; and so one the varible will display when

you hit the code...oh you can put more than one varible at a time...

echo "point A: ".varible_1." ".varible_2; and so on.

Hope it helps

Roman

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...