function get_signature($order_id, $delivery_date) { global $vmLogger; global $VM_LANG, $mosConfig_absolute_path; /* Retrieve waybill information from database */ $dbl = new ps_DB(); $q = "SELECT tracking_number, label_is_generated, is_international, "; $q .= "have_signature "; $q .= "FROM #__{vm}_shipping_label "; $q .= "WHERE order_id = '" . $order_id . "'"; $dbl->query($q); if (!$dbl->next_record() || !$dbl->f("label_is_generated")) { return "couldn't find label info for order #" . $order_id; } if ($dbl->f('have_signature')) { return true; } $tracking_number = $dbl->f('tracking_number'); require_once CLASSPATH . "shipping/" . __CLASS__ . ".cfg.php"; $dhl_url = "https://eCommerce.airborne.com/"; if (DHL_TEST_MODE == 'TRUE') { $dhl_url .= "ApiLandingTest.asp"; } else { $dhl_url .= "ApiLanding.asp"; } require_once $mosConfig_absolute_path . '/includes/domit/xml_domit_lite_include.php'; $xmlReq = new DOMIT_Lite_Document(); $xmlReq->setXMLDeclaration('<?xml version="1.0"?>'); $root =& $xmlReq->createElement('eCommerce'); $root->setAttribute('action', 'Request'); $root->setAttribute('version', '1.1'); $xmlReq->setDocumentElement($root); $requestor =& $xmlReq->createElement('Requestor'); $id =& $xmlReq->createElement('ID'); $id->setText(DHL_ID); $requestor->appendChild($id); $password =& $xmlReq->createElement('Password'); $password->setText(DHL_PASSWORD); $requestor->appendChild($password); $root->appendChild($requestor); /* Signature Request */ $signature =& $xmlReq->createElement('Signature'); $signature->setAttribute('action', 'Get'); $signature->setAttribute('version', '1.0'); $shipment =& $xmlReq->createElement('Shipment'); $nbr =& $xmlReq->createElement('TrackingNbr'); $nbr->setText($tracking_number); $shipment->appendChild($nbr); $delivery =& $xmlReq->createElement('Delivery'); $date =& $xmlReq->createElement('Date'); $start =& $xmlReq->createElement('Start'); $start->setText($delivery_date); $date->appendChild($start); $end =& $xmlReq->createElement('End'); $end->setText($delivery_date); $date->appendChild($end); $delivery->appendChild($date); $shipment->appendChild($delivery); $signature->appendChild($shipment); $root->appendChild($signature); // $vmLogger->err($xmlReq->toNormalizedString()); if (function_exists("curl_init")) { $CR = curl_init(); curl_setopt($CR, CURLOPT_URL, $dhl_url); curl_setopt($CR, CURLOPT_POST, 1); curl_setopt($CR, CURLOPT_FAILONERROR, true); curl_setopt($CR, CURLOPT_POSTFIELDS, $xmlReq->toString()); curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1); $xmlResult = curl_exec($CR); $error = curl_error($CR); curl_close($CR); if (!empty($error)) { return false; } } // XML Parsing $xmlResp = new DOMIT_Lite_Document(); if (!$xmlResp->parseXML($xmlResult, false, true)) { return false; } // $vmLogger->err($xmlResp->toNormalizedString()); // Check for success or failure. $result_code_list =& $xmlResp->getElementsByPath('//Result/Code'); $result_code =& $result_code_list->item(0); $result_desc_list =& $xmlResp->getElementsByPath('//Result/Desc'); $result_desc =& $result_desc_list->item(0); if ($result_code == NULL) { $vmLogger->debug($VM_LANG->_('PHPSHOP_SHIPPING_METHOD_DHL_MISSING_RESULT') . "\n" . $xmlResp->toNormalizedString()); return false; } /* 0 is the code for success with viewing a signature. */ if ($result_code->getText() != 0) { $err_msg = '<br /><span class="message">' . $result_desc->getText() . ' [code ' . $result_code->getText() . ']' . '</span>'; // display an error line for each fault $fault_node_list =& $xmlResp->getElementsByPath('//Faults/Fault'); if ($fault_node_list->getLength() > 0) { $err_msg .= '<ul>'; } for ($i = 0; $i < $fault_node_list->getLength(); $i++) { $fault_node =& $fault_node_list->item($i); $fault_code_node_list =& $fault_node->getElementsByTagName('Code'); $fault_desc_node_list =& $fault_node->getElementsByTagName('Desc'); $fault_code_node =& $fault_code_node_list->item(0); $fault_desc_node =& $fault_desc_node_list->item(0); $err_msg .= '<li>' . $fault_desc_node->getText() . ' [code ' . $fault_code_node->getText() . ']</li>'; } if ($fault_node_list->getLength() > 0) { $err_msg .= '</ul>'; } // echo $err_msg; return false; } $signature_image_node_list =& $xmlResp->getElementsByPath('//Signature/Image'); $signature_image_node =& $signature_image_node_list->item(0); if ($signature_image_node == NULL) { return false; } $signature_image = $signature_image_node->getText(); /* * insert signature image into database and mark that the signature * has been retrieved. */ $q = "UPDATE #__{vm}_shipping_label "; $q .= "SET "; $q .= "have_signature='1', "; $q .= "signature_image='" . $signature_image . "' "; $q .= "WHERE order_id = '" . $order_id . "'"; $dbnl = new ps_DB(); $dbnl->query($q); $dbnl->next_record(); return true; }