git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@7522 b9a71923-0436-4b27-9f14-aed3839534dd
|
Before Width: | Height: | Size: 800 B |
@@ -1,455 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
require_once('MondialRelayClass.php');
|
||||
|
||||
@set_time_limit(0);
|
||||
|
||||
function _get($type, $host, $port = '80', $path = '/', $data = '')
|
||||
{
|
||||
$d = '';
|
||||
$_err = 'lib sockets::'.__FUNCTION__.'(): ';
|
||||
switch($type)
|
||||
{
|
||||
case 'http': $type = '';
|
||||
case 'ssl': continue;
|
||||
default: die($_err.'bad $type');
|
||||
}
|
||||
if(!ctype_digit($port))
|
||||
die($_err.'bad port');
|
||||
|
||||
$fp = fsockopen($host, $port, $errno, $errstr, $timeout=60);
|
||||
if(!$fp)
|
||||
die($_err.$errstr.$errno);
|
||||
else
|
||||
{
|
||||
fputs($fp, "POST $path HTTP/1.1\r\n");
|
||||
fputs($fp, "Host: $host\r\n");
|
||||
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
|
||||
fputs($fp, "Content-length: ".strlen($data)."\r\n");
|
||||
fputs($fp, "Connection: close\r\n\r\n");
|
||||
fputs($fp, $data."\r\n\r\n");
|
||||
|
||||
while(!feof($fp)) $d .= fgets($fp,4096);
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
$ndata = explode(":THISTAG:",$d);
|
||||
return $ndata[1];
|
||||
}
|
||||
|
||||
function free_MR_chaine($mystring)
|
||||
{
|
||||
|
||||
$mystring = strip_tags($mystring);
|
||||
$mystring = htmlentities($mystring, ENT_NOQUOTES, 'utf-8');
|
||||
$mystring = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $mystring);
|
||||
$mystring = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $mystring);
|
||||
$mystring = preg_replace('#\&[^;]+\;#', '', $mystring);
|
||||
|
||||
|
||||
$mystring = str_replace('\'', ' ', $mystring);
|
||||
$mystring = str_replace('"', ' ', $mystring);
|
||||
|
||||
$OldPattern0 = array("�","�","�","�","�","�","�","�","�","�","\"","�","�",
|
||||
"�","�","�","�","�","�","�","�","�","�","�","�","�",
|
||||
"�","�","�","�","�");
|
||||
$mystring = str_replace($OldPattern0 , ' ',$mystring);
|
||||
return $mystring;
|
||||
}
|
||||
|
||||
class AdminMondialRelay extends AdminTab
|
||||
{
|
||||
private $displayInfos = true;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->table = 'mr_selected';
|
||||
$this->className = 'MondialRelayClass';
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
private function _delete_history()
|
||||
{
|
||||
unset($result);
|
||||
if (isset($_POST['history']))
|
||||
foreach($_POST['history'] as $field)
|
||||
if (isset($field['selected']) AND $field['selected'] == '1')
|
||||
$query = Db::getInstance()->Execute("DELETE FROM `" . _DB_PREFIX_ ."mr_historique` WHERE id='".(int)($field['id'])."';");
|
||||
}
|
||||
|
||||
private function _generateetiquettes()
|
||||
{
|
||||
unset($result);
|
||||
$urla4 = '';
|
||||
$urla5 = '';
|
||||
|
||||
include_once(dirname(__FILE__).'/mondialrelay.php');
|
||||
$mondialrelay = new MondialRelay();
|
||||
|
||||
echo '<p>' . $mondialrelay->getL('List of orders recognized') . '</p>';
|
||||
|
||||
$mr_Enseigne_WebService = Configuration::get('MR_ENSEIGNE_WEBSERVICE');
|
||||
$mr_code_marque = Configuration::get('MR_CODE_MARQUE');
|
||||
$mr_Key_WebService = Configuration::get('MR_KEY_WEBSERVICE');
|
||||
$mr_Langage = Configuration::get('MR_LANGUAGE');
|
||||
$mr_Ad1 = Configuration::get('PS_SHOP_NAME');
|
||||
$mr_Ad2 = '';
|
||||
$mr_Ad3 = Configuration::get('PS_SHOP_ADDR1');
|
||||
$mr_Ad4 = Configuration::get('PS_SHOP_ADDR2');
|
||||
$mr_Ville = Configuration::get('PS_SHOP_CITY');
|
||||
$mr_CP = Configuration::get('PS_SHOP_CODE');
|
||||
$mr_Pays = Db::getInstance()->getValue('SELECT c.`iso_code`
|
||||
FROM `'._DB_PREFIX_.'country` c
|
||||
JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`)
|
||||
WHERE cl.`name` = "'.pSQL(Configuration::get('PS_SHOP_COUNTRY')).'"
|
||||
AND cl.`id_lang` = '.(int)(Configuration::get('PS_LANG_DEFAULT')));
|
||||
$mr_Tel1 = Configuration::get('PS_SHOP_PHONE');
|
||||
$mr_Tel2 = '';
|
||||
$mr_Mail = Configuration::get('PS_SHOP_EMAIL');
|
||||
|
||||
$concatener_id_order = "";
|
||||
$concatener_exp_num = "";
|
||||
$concatener_error = "";
|
||||
if (!empty($mr_Ad1) AND !empty($mr_Ad3) AND !empty($mr_Ville) AND !empty($mr_CP) AND !empty($mr_Pays))
|
||||
{
|
||||
foreach($_POST['order'] as $field)
|
||||
{
|
||||
if (is_numeric($field['weight']) AND $field['weight'] > 0 AND isset($field['selected']) AND $field['selected'] == '1')
|
||||
{
|
||||
$customer = new Customer((int)($field['id_customer']));
|
||||
$addressliv = new Address((int)($field['id_address_delivery']));
|
||||
$country = new Country((int)($addressliv->id_country));
|
||||
$params = 'mr_Enseigne_WebService='.urlencode(free_MR_chaine($mr_Enseigne_WebService));
|
||||
$params .= '&mr_code_marque='.urlencode(free_MR_chaine($mr_code_marque));
|
||||
$params .= '&mr_Key_WebService='.urlencode(free_MR_chaine($mr_Key_WebService));
|
||||
$params .= '&ModeCol='.urlencode(free_MR_chaine($field['mr_ModeCol']));
|
||||
$params .= '&ModeLiv='.(urlencode(free_MR_chaine($field['mr_ModeLiv'])) == 'LD1' ? 'LDR' : urlencode(free_MR_chaine($field['mr_ModeLiv'])));
|
||||
$params .= '&NDossier='.urlencode(free_MR_chaine($field['id']));
|
||||
$params .= '&NClient='.urlencode(free_MR_chaine($field['id_customer']));
|
||||
$params .= '&Expe_Langage='.urlencode(free_MR_chaine($mr_Langage));
|
||||
$params .= '&Expe_Ad1='.urlencode(free_MR_chaine($mr_Ad1));
|
||||
$params .= '&Expe_Ad2='.urlencode(free_MR_chaine($mr_Ad2));
|
||||
$params .= '&Expe_Ad3='.urlencode(free_MR_chaine($mr_Ad3));
|
||||
$params .= '&Expe_Ad4='.urlencode(free_MR_chaine($mr_Ad4));
|
||||
$params .= '&Expe_Ville='.urlencode(free_MR_chaine($mr_Ville));
|
||||
$params .= '&Expe_CP='.urlencode(free_MR_chaine($mr_CP));
|
||||
$params .= '&Expe_Pays='.urlencode(free_MR_chaine($mr_Pays));
|
||||
$params .= '&Expe_Tel1='.urlencode(free_MR_chaine($mr_Tel1));
|
||||
$params .= '&Expe_Tel2='.urlencode(free_MR_chaine($mr_Tel2));
|
||||
$params .= '&Expe_Mail='.urlencode(free_MR_chaine($mr_Mail));
|
||||
$params .= '&Dest_Langage='.urlencode(free_MR_chaine($country->iso_code));
|
||||
$params .= '&Dest_Ad1='.urlencode(strtoupper(substr(free_MR_chaine($addressliv->lastname).' '.free_MR_chaine($addressliv->firstname), 0, 32)));
|
||||
$params .= '&Dest_Ad2='.urlencode(strtoupper(substr(free_MR_chaine($addressliv->address2), 0, 32)));
|
||||
$params .= '&Dest_Ad3='.urlencode(strtoupper(substr(free_MR_chaine($addressliv->address1), 0, 32)));
|
||||
$params .= '&Dest_Ad4='.urlencode(strtoupper(substr(substr(free_MR_chaine($addressliv->address1), 32), 0, 32)));
|
||||
$params .= '&Dest_Ville='.urlencode(strtoupper(substr(free_MR_chaine($addressliv->city), 0, 26)));
|
||||
$params .= '&Dest_CP='.urlencode(strtoupper(substr(free_MR_chaine($addressliv->postcode), 0, 5)));
|
||||
$params .= '&Dest_Pays='.urlencode($country->iso_code);
|
||||
$params .= '&Dest_Tel1='.urlencode(free_MR_chaine($addressliv->phone ? $addressliv->phone : ''));
|
||||
$params .= '&Dest_Tel2='.urlencode(free_MR_chaine($addressliv->phone_mobile ? $addressliv->phone_mobile : ''));
|
||||
$params .= '&Dest_Mail='.urlencode(free_MR_chaine(strtoupper(substr($customer->email, 0, 70))));
|
||||
while (strlen($field['weight']) < 3)
|
||||
$field['weight'] = '0'.$field['weight'];
|
||||
$params .= '&Poids='.urlencode(free_MR_chaine($field['weight']));
|
||||
$params .= '&Longueur=';
|
||||
$params .= '&Taille=';
|
||||
$params .= '&NbColis=1';
|
||||
$params .= '&CRT_Valeur=0';
|
||||
$params .= '&CRT_Devise=EUR';
|
||||
$params .= '&Exp_Valeur=';
|
||||
$params .= '&Exp_Devise=';
|
||||
if ($field['MR_Selected_Num'] == 'LD1' OR $field['MR_Selected_Num'] == 'LDS')
|
||||
{
|
||||
$params .= '&LIV_Rel_Pays=';
|
||||
$params .= '&LIV_Rel=';
|
||||
}
|
||||
else
|
||||
{
|
||||
$params .= '&LIV_Rel_Pays='.$field['MR_Selected_Pays'];
|
||||
$params .= '&LIV_Rel='.$field['MR_Selected_Num'];
|
||||
}
|
||||
$params .= '&Assurance='.urlencode(free_MR_chaine($field['mr_ModeAss']));
|
||||
$params .= '&Instructions=';
|
||||
$params .= '&Texte=';
|
||||
$result = _get('http', htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8'), '80', __PS_BASE_URI__ .'modules/mondialrelay/kit_mondialrelay/CreationEtiquettePointRelais_ajax.php', $params);
|
||||
$result = explode('|', $result);
|
||||
|
||||
if ($result[0] == 'a')
|
||||
$concatener_error .= '<b>Order ID = '.$field['id'].'</b><br>'.$result[1].'<hr>';
|
||||
elseif ($result[0] != '0')
|
||||
$concatener_error .= '<b>Order ID = '.$field['id'].'</b><br>Error nb '.$result[0].'<br>'.$result[1].'<hr>';
|
||||
elseif ($result[0] == '0')
|
||||
{
|
||||
$mondialrelayclass = new MondialRelayClass($field['id_mr_selected']);
|
||||
|
||||
$mondialrelayclass->id_order = $field['id'];
|
||||
$mondialrelayclass->MR_poids = $field['weight'];
|
||||
|
||||
$mondialrelayclass->exp_number = $result[1];
|
||||
$mondialrelayclass->url_etiquette = $result[2];
|
||||
$mondialrelayclass->url_suivi = $result[3];
|
||||
$mondialrelayclass->save();
|
||||
$concatener_id_order .= $field['id'].';';
|
||||
$concatener_exp_num .= $result[1].';';
|
||||
|
||||
$order = new Order((int)($field['id']));
|
||||
$order->shipping_number = $field['id_mr_selected'];
|
||||
$order->update();
|
||||
|
||||
|
||||
$templateVars = array('{followup}' => $result[3]);
|
||||
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int)($field['id']);
|
||||
$history->changeIdOrderState(_PS_OS_SHIPPING_, (int)($field['id']));
|
||||
$history->id_employee = (int)($cookie->id_employee);
|
||||
$history->addWithemail(true, $templateVars);
|
||||
|
||||
echo '<li>' . $mondialrelay->getL('Order number') . ': ' . $field['id'];
|
||||
echo ' - ' . $mondialrelay->getL('Email send to') . ': ' . $customer->email;
|
||||
echo "</li>\n";
|
||||
}
|
||||
unset($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
$concatener_error .= $mondialrelay->getL('Empty adress : Are you sure you\'ve set a validate address in the Contact page?');
|
||||
|
||||
$concatener_id_order = substr($concatener_id_order, 0, -1);
|
||||
$concatener_exp_num = substr($concatener_exp_num, 0, -1);
|
||||
if (trim($concatener_exp_num) > 0)
|
||||
{
|
||||
$params = 'mr_Enseigne_WebService='.urlencode($mr_Enseigne_WebService);
|
||||
$params .= '&mr_Key_WebService='.urlencode($mr_Key_WebService);
|
||||
$params .= '&Langue='.urlencode($mr_Langage);
|
||||
$params .= '&Expeditions='.$concatener_exp_num;
|
||||
$result = _get('http', htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8'), '80', __PS_BASE_URI__ .'modules/mondialrelay/kit_mondialrelay/ImpressionEtiquettePointRelais_ajax.php', $params);
|
||||
$result = explode('|',$result);
|
||||
|
||||
if ($result[0] == 'a')
|
||||
$concatener_error .= '<b>Creation url etiquettes</b><br>'.$result[1].'<hr>';
|
||||
elseif ($result[0] != '0')
|
||||
$concatener_error .= '<b>Creation url etiquettes</b><br>Error nb '.$result[0].'<br>'.$result[1].'<hr>';
|
||||
elseif ($result[0] == '0')
|
||||
{
|
||||
$urla4 = $result[1];
|
||||
$urla5 = $result[2];
|
||||
$query = "INSERT INTO " . _DB_PREFIX_ ."mr_historique (`order` ,`exp` ,`url_a4` ,`url_a5`)
|
||||
VALUES ( '".pSQL($concatener_id_order)."','".pSQL($concatener_exp_num)."', '".pSQL($result[1])."', '".pSQL($result[2])."');";
|
||||
$query = Db::getInstance()->Execute($query);
|
||||
}
|
||||
//curl_close($ch);
|
||||
}
|
||||
if (trim($concatener_error) != '')
|
||||
echo '<div class="alert">'.$concatener_error.'</div>';
|
||||
else
|
||||
Tools::redirectAdmin('index.php?tab=AdminMondialRelay&updatesuccess&token='.$this->token);
|
||||
return true;
|
||||
}
|
||||
|
||||
private function _postProcess()
|
||||
{
|
||||
if (Tools::isSubmit('generate'))
|
||||
$this->_generateetiquettes();
|
||||
if (Tools::isSubmit('delete_h'))
|
||||
$this->_delete_history();
|
||||
}
|
||||
|
||||
private function displayOrdersTable()
|
||||
{
|
||||
global $cookie;
|
||||
|
||||
include_once(dirname(__FILE__).'/mondialrelay.php');
|
||||
$mondialrelay = new MondialRelay();
|
||||
$order_state = new OrderState((int)(Configuration::get('MONDIAL_RELAY_ORDER_STATE')), $cookie->id_lang);
|
||||
$mr_weight_coef = (int)(Configuration::get('MR_WEIGHT_COEF'));
|
||||
|
||||
$html = '
|
||||
<script type="text/javascript">
|
||||
function checked_all() {
|
||||
var checkbox = document.getElementsByTagName(\'input\');
|
||||
for (var i=0; i<checkbox.length; i++)
|
||||
{
|
||||
if (checkbox[i].type == "checkbox" && checkbox[i].getAttribute("mask_mr")==1) {checkbox[i].checked = true;}
|
||||
}
|
||||
}
|
||||
function un_checked_all() {
|
||||
var checkbox = document.getElementsByTagName(\'input\');
|
||||
for (var i=0; i<checkbox.length; i++)
|
||||
{
|
||||
if (checkbox[i].type == "checkbox" && checkbox[i].getAttribute("mask_mr")==1) {checkbox[i].checked = false;}
|
||||
}
|
||||
}
|
||||
function checked_all_h() {
|
||||
var checkbox = document.getElementsByTagName(\'input\');
|
||||
for (var i=0; i<checkbox.length; i++)
|
||||
{
|
||||
if (checkbox[i].type == "checkbox" && checkbox[i].getAttribute("mask_mr_h")==1) {checkbox[i].checked = true;}
|
||||
}
|
||||
}
|
||||
function un_checked_all_h() {
|
||||
var checkbox = document.getElementsByTagName(\'input\');
|
||||
for (var i=0; i<checkbox.length; i++)
|
||||
{
|
||||
if (checkbox[i].type == "checkbox" && checkbox[i].getAttribute("mask_mr_h")==1) {checkbox[i].checked = false;}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
';
|
||||
if (Tools::isSubmit('updatesuccess'))
|
||||
$html .= '<div class="conf confirm"><img src="'._PS_ADMIN_IMG_.'/ok.gif" /> '.$mondialrelay->getL('Settings updated succesfull').'</div>';
|
||||
|
||||
$html .= $mondialrelay->getL('To generate sticks, you must have register a correct address of your store on').' <a href="index.php?tab=AdminContact&token='.Tools::getAdminToken('AdminContact'.(int)(Tab::getIdFromClassName('AdminContact')).(int)($cookie->id_employee)).'" class="green">'.$mondialrelay->getL('The contact page').'</a>';
|
||||
$html .= '<p>'.$mondialrelay->getL('All orders which have the state').' "<b>'.$order_state->name.'</b>"';
|
||||
$html .= '. <a href="index.php?tab=AdminModules&configure=mondialrelay&token='.Tools::getAdminToken('AdminModules'.(int)(Tab::getIdFromClassName('AdminModules')).(int)($cookie->id_employee)).'" class="green">' . $mondialrelay->getL('Change configuration') . '</a></p>';
|
||||
|
||||
$orders = MondialRelayClass::getOrders();
|
||||
if (empty($orders))
|
||||
{
|
||||
$html.= '<h3>' . $mondialrelay->getL('No orders with this state.') . '</h3>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$html.= '<form method="post" action="'.$_SERVER['REQUEST_URI'].'">';
|
||||
$html.= "\n<table class=\"table\">";
|
||||
$html.= '<tr>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Order ID') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Customer') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Total price') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Total shipping') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Date') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Put a Weight (grams)') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Selected') . '<br><a href="#" onclick="checked_all(); return false;">' . $mondialrelay->getL('All') . '</a>
|
||||
| <a href="#" onclick="un_checked_all(); return false;">' . $mondialrelay->getL('None') . '</a></th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('MR_Selected_Num') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('MR_Selected_Pays') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('exp_number') . '</th>';
|
||||
$html.= '<th>' . $mondialrelay->getL('Detail') . '</th>';
|
||||
$html.= '</tr>';
|
||||
foreach ($orders as $order)
|
||||
{
|
||||
if ($order['weight'] == 0)
|
||||
{
|
||||
$result_weight = Db::getInstance()->getRow('
|
||||
SELECT SUM(product_weight*product_quantity) as weight
|
||||
FROM '._DB_PREFIX_.'order_detail
|
||||
WHERE id_order = '.(int)($order['id_order']));
|
||||
$order['weight']=round($mr_weight_coef*$result_weight['weight']);
|
||||
}
|
||||
|
||||
$html .= "\n<tr>";
|
||||
$html .= '<td>' . $order['id_order'] . '
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][id]" id="id_order_' . $order['id_order'] . '" value="' . $order['id_order'] . '" />
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][id_cart]" id="id_cart' . $order['id_order'] . '" value="' . $order['id_cart'] . '" />
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][id_mr_selected]" id="id_mr_selected' . $order['id_order'] . '" value="' . $order['id_mr_selected'] . '" />
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][id_address_delivery]" id="id_address_delivery' . $order['id_order'] . '" value="' . $order['id_address_delivery'] . '"/>
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][mr_ModeCol]" id="mr_ModeCol' . $order['id_order'] . '" value="' . $order['mr_ModeCol'] . '" />
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][mr_ModeLiv]" id="mr_ModeLiv' . $order['id_order'] . '" value="' . $order['mr_ModeLiv'] . '" />
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][mr_ModeAss]" id="mr_ModeAss' . $order['id_order'] . '" value="' . $order['mr_ModeAss'] . '" />
|
||||
|
||||
|
||||
</td>';
|
||||
$html .= '<td>' . $order['customer'] . '
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][id_customer]" id="id_customer_' . $order['id_order'] . '" value="' . $order['id_customer'] . '" /></td>';
|
||||
$html .= '<td>' . Tools::displayPrice($order['total'], new Currency($order['id_currency'])) . '</td>';
|
||||
$html .= '<td>' . Tools::displayPrice($order['shipping'], new Currency($order['id_currency'])) . '</td>';
|
||||
$html .= '<td>' . Tools::displayDate($order['date'], $order['id_lang']) . '</td>';
|
||||
|
||||
$html .= '<td><input type="text" name="order[' . $order['id_order'] . '][weight]" id="weight_' . $order['id_order'] . '" size="7" value="' . $order['weight'] . '" onchange="document.getElementById(\'selected_' . $order['id_order'] . '\').checked=true;" /></td>';
|
||||
$html .= '<td><input type="checkbox" mask_mr=1 name="order[' . $order['id_order'] . '][selected]" id="selected_' . $order['id_order'] . '" value="1" /></td>';
|
||||
|
||||
$html .= '<td>' . $order['MR_Selected_Num'] .'
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][MR_Selected_Num]" id="MR_Selected_Num' . $order['id_order'] . '" value="' . $order['MR_Selected_Num'] . '" /></td>';
|
||||
$html .= '<td>' . $order['MR_Selected_Pays'] . '
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][MR_Selected_Pays]" id="id_customer_' . $order['id_order'] . '" value="' . $order['MR_Selected_Pays'] . '" /></td>';
|
||||
$html .= '<td>' . $order['exp_number'] . '
|
||||
<input type="hidden" name="order[' . $order['id_order'] . '][exp_number]" id="id_customer_' . $order['id_order'] . '" value="' . $order['exp_number'] . '" /></td>';
|
||||
|
||||
$html .= '<td class="center">
|
||||
<a href="index.php?tab=AdminOrders&id_order='.$order['id_order'].'&vieworder&token='.Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)).'">
|
||||
<img border="0" title="'.$mondialrelay->getL('View').'" alt="'.$mondialrelay->getL('View').'" src="'._PS_IMG_.'admin/details.gif"/></a>
|
||||
</td>';
|
||||
$html .= '</tr>';
|
||||
}
|
||||
$html .= '</table>';
|
||||
$html .= '<input type="submit" name="generate" id="generate" value="' . $mondialrelay->getL('Generate') . '" class="button" />';
|
||||
$html .= '</form>';
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
public function displayhistoriqueForm()
|
||||
{
|
||||
include_once(dirname(__FILE__).'/mondialrelay.php');
|
||||
$mondialrelay = new MondialRelay();
|
||||
$_html = '';
|
||||
$query = "SELECT * FROM `" . _DB_PREFIX_ ."mr_historique` ORDER BY `id` DESC ;";
|
||||
$query = Db::getInstance()->ExecuteS($query);
|
||||
|
||||
$_html.= '<fieldset>';
|
||||
$_html.= '<legend>' . $mondialrelay->getL('History of sticks creation') . '</legend>';
|
||||
$_html.= '<div style="overflow-x: auto;overflow-y: scroller; height: 300px; padding-top: 0.6em;" >';
|
||||
$_html.= '<form method="post" action="'.$_SERVER['REQUEST_URI'].'">';
|
||||
$_html.= '<table class=table><tbody><tr><th>' . $mondialrelay->getL('Selected') . '<br><a href="javascript:void(0);" onclick="checked_all_h();">' . $mondialrelay->getL('All') . '</a>
|
||||
| <a href="javascript:void(0);" onclick="un_checked_all_h();">' . $mondialrelay->getL('None') . '</a></th><th>' . $mondialrelay->getL('Orders ID') . '</th><th>' . $mondialrelay->getL('Exps num') . '</th><th>' . $mondialrelay->getL('Print stick A4') . '</th><th>' . $mondialrelay->getL('Print stick A5') . '</th></tr>';
|
||||
foreach ($query AS $k => $row)
|
||||
{
|
||||
$_html.= '<tr>
|
||||
<td><input type="hidden" name="history[' . $row['id'] . '][id]" id="history_id_' . $row['id'] . '" value="' . $row['id'] . '" />
|
||||
<input type="checkbox" mask_mr_h=1 name=history[' . $row['id'] . '][selected] id="history_selected_' . $row['id'] . '" value="1" /></td>
|
||||
<td>'.str_replace(';', ', ', $row['order']) .'</td><td>'.str_replace(';', ', ', $row['exp']).'</td><td><a href="'.$row['url_a4'].'" target="a4">' . $mondialrelay->getL('Print stick A4') . '</a></td><td><a href="'.$row['url_a5'].'" target="a5">' . $mondialrelay->getL('Print stick A5') . '</a></td></tr>';
|
||||
}
|
||||
$_html .= '</tbody></table>';
|
||||
$_html .= '<input type="submit" name="delete_h" id="delete_h" value="' . $mondialrelay->getL('Delete selected history') . '" class="button" />';
|
||||
$_html .= '</form></div>';
|
||||
$_html .= '</fieldset>';
|
||||
|
||||
return $_html;
|
||||
}
|
||||
|
||||
public function display()
|
||||
{
|
||||
$html = '';
|
||||
|
||||
if (!empty($_POST))
|
||||
$html .= $this->_postProcess();
|
||||
|
||||
if ($this->displayInfos)
|
||||
{
|
||||
$html .= $this->displayOrdersTable();
|
||||
$html .= '<br/><br/>';
|
||||
$html .= $this->displayhistoriqueForm();
|
||||
}
|
||||
echo $html;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
class MondialRelayClass extends ObjectModel
|
||||
{
|
||||
public $id_customer;
|
||||
public $id_method;
|
||||
public $id_cart;
|
||||
public $id_order = NULL;
|
||||
public $MR_poids = NULL;
|
||||
public $MR_Selected_Num;
|
||||
public $MR_Selected_LgAdr1;
|
||||
public $MR_Selected_LgAdr2 = NULL;
|
||||
public $MR_Selected_LgAdr3;
|
||||
public $MR_Selected_LgAdr4 = NULL;
|
||||
public $MR_Selected_CP;
|
||||
public $MR_Selected_Ville;
|
||||
public $MR_Selected_Pays;
|
||||
public $url_suivi= NULL;
|
||||
public $url_etiquette= NULL;
|
||||
public $exp_number= NULL;
|
||||
public $date_add;
|
||||
public $date_upd;
|
||||
|
||||
|
||||
protected $table = 'mr_selected';
|
||||
protected $identifier = 'id_mr_selected';
|
||||
|
||||
|
||||
public function getFields()
|
||||
{
|
||||
parent::validateFields();
|
||||
if (isset($this->id_mr_selected))
|
||||
$fields['id_mr_selected'] = (int)($this->id_mr_selected);
|
||||
$fields['id_customer'] = (int)($this->id_customer);
|
||||
$fields['id_method'] = (int)($this->id_method);
|
||||
$fields['id_cart'] = (int)($this->id_cart);
|
||||
$fields['id_order'] = is_null($this->id_order) ? 0 : (int)($this->id_order);
|
||||
$fields['MR_Selected_Num'] = pSQL($this->MR_Selected_Num);
|
||||
$fields['MR_Selected_LgAdr1'] = pSQL($this->MR_Selected_LgAdr1);
|
||||
$fields['MR_Selected_LgAdr2'] = pSQL($this->MR_Selected_LgAdr2);
|
||||
$fields['MR_Selected_LgAdr3'] = pSQL($this->MR_Selected_LgAdr3);
|
||||
$fields['MR_Selected_LgAdr4'] = pSQL($this->MR_Selected_LgAdr4);
|
||||
$fields['MR_Selected_CP'] = (int)($this->MR_Selected_CP);
|
||||
$fields['MR_Selected_Ville'] = pSQL($this->MR_Selected_Ville);
|
||||
$fields['MR_Selected_Pays'] = pSQL($this->MR_Selected_Pays);
|
||||
$fields['url_suivi'] = is_null($this->url_suivi) ? 0 : pSQL($this->url_suivi) ;
|
||||
$fields['url_etiquette'] = is_null($this->url_etiquette) ? 0 : pSQL($this->url_etiquette) ;
|
||||
$fields['exp_number'] = is_null($this->exp_number) ? 0 : pSQL($this->exp_number) ;
|
||||
$fields['date_add'] = pSQL($this->date_add);
|
||||
$fields['date_upd'] = pSQL($this->date_upd);
|
||||
$fields['MR_poids'] = is_null($this->MR_poids) ? 0 : pSQL($this->MR_poids) ;
|
||||
return $fields;
|
||||
}
|
||||
|
||||
static function getOrders()
|
||||
{
|
||||
$id_order_state = Configuration::get('MONDIAL_RELAY_ORDER_STATE');
|
||||
$sql = '
|
||||
SELECT o.`id_address_delivery` as id_address_delivery, o.`id_order` as id_order, o.`id_customer` as id_customer,
|
||||
o.`id_cart` as id_cart, mrs.`id_mr_selected` as id_mr_selected,
|
||||
CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`,
|
||||
o.`total_paid_real` as total, o.`total_shipping` as shipping,
|
||||
o.`date_add` as date, o.`id_currency` as id_currency, o.`id_lang` as id_lang,
|
||||
mrs.`MR_poids` as weight, mr.`mr_Name` as mr_Name, mrs.`MR_Selected_Num` as MR_Selected_Num,
|
||||
mrs.`MR_Selected_Pays` as MR_Selected_Pays, mrs.`exp_number` as exp_number,
|
||||
mr.`mr_ModeCol` as mr_ModeCol, mr.`mr_ModeLiv` as mr_ModeLiv, mr.`mr_ModeAss` as mr_ModeAss
|
||||
FROM `'._DB_PREFIX_.'orders` o
|
||||
LEFT JOIN `'._DB_PREFIX_.'carrier` ca ON (ca.`id_carrier` = o.`id_carrier` AND ca.`external_module_name` = "mondialrelay")
|
||||
LEFT JOIN `'._DB_PREFIX_.'mr_selected` mrs ON (mrs.`id_cart` = o.`id_cart`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'mr_method` mr ON (mr.`id_carrier` = ca.`id_carrier`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`)
|
||||
WHERE (SELECT moh.`id_order_state` FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = o.`id_order` ORDER BY moh.`date_add` DESC LIMIT 1) = '.(int)($id_order_state).'
|
||||
AND ca.`external_module_name` = "mondialrelay"
|
||||
GROUP BY o.`id_order`
|
||||
ORDER BY o.`date_add` ASC';
|
||||
return Db::getInstance()->ExecuteS($sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<module>
|
||||
<name>mondialrelay</name>
|
||||
<displayName>Mondial Relay</displayName>
|
||||
<version>1.3</version>
|
||||
<description>Deliver in Relay points</description>
|
||||
<author></author>
|
||||
<tab>shipping_logistics</tab>
|
||||
<is_configurable>1</is_configurable>
|
||||
<need_instance>1</need_instance>
|
||||
<limited_countries></limited_countries>
|
||||
</module>
|
||||
@@ -1,76 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
include_once('../../config/config.inc.php');
|
||||
include_once('mondialrelay.php');
|
||||
|
||||
if (Tools::getValue('secure_key') != Configuration::get('MONDIAL_RELAY_SECURE_KEY'))
|
||||
exit;
|
||||
|
||||
$expeditions = Db::getInstance()->ExecuteS('
|
||||
SELECT ms.`exp_number`, ms.`id_cart`, o.`id_order`
|
||||
FROM `'._DB_PREFIX_.'mr_selected` ms
|
||||
LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_cart` = ms.`id_cart`)
|
||||
WHERE `exp_number` != 0');
|
||||
|
||||
if (empty($expeditions))
|
||||
exit;
|
||||
|
||||
$params = array(
|
||||
'Enseigne' => Configuration::get('MR_ENSEIGNE_WEBSERVICE'),
|
||||
'Langue' => 'FR'
|
||||
);
|
||||
|
||||
require_once('kit_mondialrelay/tools/nusoap/lib/nusoap.php');
|
||||
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL", true);
|
||||
$client_mr->soap_defencoding = 'UTF-8';
|
||||
$client_mr->decode_utf8 = false;
|
||||
|
||||
foreach ($expeditions as $expedition)
|
||||
{
|
||||
if ($expedition['id_order'] == NULL)
|
||||
continue;
|
||||
if (OrderHistory::getLastOrderState((int)($expedition['id_order']))->id == _PS_OS_DELIVERED_)
|
||||
continue;
|
||||
$params['Expedition'] = $expedition['exp_number'];
|
||||
$params['Security'] = strtoupper(md5($params['Enseigne'].$params['Expedition'].'FR'.Configuration::get('MR_KEY_WEBSERVICE')));
|
||||
|
||||
$is_delivered = 0;
|
||||
$result_mr = $client_mr->call('WSI2_TracingColisDetaille', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_TracingColisDetaille');
|
||||
if (isset($result_mr['WSI2_TracingColisDetailleResult']['Tracing']['ret_WSI2_sub_TracingColisDetaille']))
|
||||
foreach ($result_mr['WSI2_TracingColisDetailleResult']['Tracing']['ret_WSI2_sub_TracingColisDetaille'] as $result)
|
||||
if (isset($result['Libelle']) AND $result['Libelle'] == 'COLIS LIVRÉ')
|
||||
$is_delivered = 1;
|
||||
|
||||
if ($is_delivered == 1)
|
||||
{
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int)($expedition['id_order']);
|
||||
$history->changeIdOrderState((int)(_PS_OS_DELIVERED_), (int)($expedition['id_order']));
|
||||
$history->addWithemail();
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44585fcd617dce6416d8283b026714c1'] = 'Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ed4a3b96dc1f38c160775cac1f7bcd6d'] = 'Liefern Sie in Relay-Punkten';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70d70ce314f545b7c500a086f147f64b'] = 'Ungültiger Shop';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_709b076565df5fa98cdb2528d897633d'] = 'Ungültiger Mark-Code';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c86508f5bc6b4456e7003d6a1868689d'] = 'Ungültiger Webservice Schlüssel';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ea9261a3dad976b40ff2088a19fda2c3'] = 'Ungültige Sprache';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4eb287cc225ba0e1bcfe9cc1b8315def'] = 'Ungültiger Gewichtskoeffizient';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f82576de014726e9ef9b4ed2a9eb947b'] = 'Bitte konfigurieren Sie Ihre Mondial Relay-Konto-Einstellungen vor dem Erstellen eines Lieferanten';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70ff82d47f295f730c6accf07a2948e8'] = 'Ungültiger Lieferantennamen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e1f1787db2fee596f4c3bfaf1d098f8d'] = 'Ungültiger Col-Modus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9414b7de379a09941e894d28f19949ae'] = 'Ungültiger Liefermodus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5eeb9ca7eee4be7192dd10d917f79a12'] = 'Ungültiger Assurance-Modus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b446ac2013dc7085802de71cc342ead'] = 'Sie müssen mindestens ein Zustellungsland angeben';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9a85d87ae6dd77f2107734a4cd0bb15'] = 'Ungültiger Google-Schlüssel';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_979c6094728c14aac1b66d544dc5cebd'] = 'Ungültiger Bestellstatus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c888438d14855d7d96a2724ee9c306bd'] = 'Einstellungen erfolgreich aktualisiert';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_07213a0161f52846ab198be103b5ab43'] = 'Fehler';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cb5e100e5a9a3e7f6d1fd97512215282'] = 'Fehler';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_350c1cc4343826a89f08a33bb49c6d98'] = 'Mondial Relay Bewertungsmodul konfigurieren';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d21a9f93917604d5490ad529a7cf1ff9'] = 'So erstellen Sie eine Mondial Relay Lieferanten';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6a2e6af5fff47adb3afd780b97d9b4b'] = 'Geben Sie Ihre Mondial Relay-Konto-Einstellungen ein und speichern Sie sie';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_abfc836cd1df9d6d2bdfd2fc98e6fa93'] = 'Erstellen Sie einen Lieferanten';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b962d8fb95f5a439f50502152f3bad71'] = 'Definieren Sie einen Preis für Ihren Lieferanten auf';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_faf1247ae6846a9955a466d4f301bbe4'] = 'Der Lieferanten-Seite';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_10d78806b84b97ebc774e9f6277af6ac'] = 'Um Labels zu generieren, müssen Sie eine gültige und registrierte Adresse Ihres Shops auf Ihrer';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_af5efea250326c1c34d69aa9364b482c'] = 'Kontakt-Seite haben';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ddcd6a653f661fd7d219d9102528b917'] = 'Gehen Sie zum Front-Office';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL Cron Task:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_362dff77f7403550e886db901404856c'] = 'Löschen erfolgreich';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_66661dacf33146201b60dc16520ddd68'] = 'Fügen Sie eine Versandart hinzu';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_531e144cc23ef08408b81cb4d9c641dc'] = 'Lieferantenname';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9b415ea1576b19d10d42b332798cd16'] = 'Sammel-Modus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d24262afca47ba80b691c878243441e8'] = 'Sammeln im Shop';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_201bdb87f8e278b943d07ae924d5de6e'] = 'Liefer-Modus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_142ef02888af88b8b772335277d1c0c8'] = 'Lieferung an einen Abholpunkt';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eeab8b7cf3c7a558a0e8a4050fa994ca'] = 'Colis Drive Lieferung';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8f7794b107749728c3333ef38d2687e8'] = 'Hauslieferung RDC (1 Person)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e451efc8ce05b96b214b4c2935f2c657'] = 'Besondere Hauslieferung (2 Personen)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eaff1bdf24fcffe0e14e29a1bff51a12'] = 'Versicherung';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_96ba408f20bc3e065f400c650d32fd1a'] = 'Keine Versicherung';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e5a8fafb1dfb538c172e1e014e86b871'] = 'Zusatzversicherung Lv1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b02f8d6d4b6217cca317161c87f64065'] = 'Zusatzversicherung Lv2';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_90b95ae88150c6a34c4129dc4f1ebbd5'] = 'Zusatzversicherung Lv3';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c15b40b8c535191f6f0b6f9beaced3cf'] = 'Zusatzversicherung LV4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b67a442fff3ca0a03ea253b0668f946d'] = 'Zusatzversicherung Lv5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_33cbd0d8b6476501f55a8320481ec0f1'] = 'Zustellländer:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0309a6c666a7a803fdb9db95de71cf01'] = 'Frankreich';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c1674d14bf5f95742f572cddb0641a7'] = 'Belgien';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06630c890abadde9228ea818ce52b621'] = 'Luxemburg';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_907eba32d950bfab68227fd7ea22999b'] = 'Spanien';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Erforderlich';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0c24ec05a02c710cedd400e3680d8b81'] = 'Versandart-Liste';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_14039af96b01e718a9c9d9c1259b6472'] = 'Keine Versandmethoden erstellt';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8596361cec00f8d2438d264827eee737'] = 'Versand konfigurieren';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4f70727dc34561dfde1a3c529b6205c'] = 'Einstellungen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d02bbc3cb147c272b0445ac5ca7d1a36'] = 'Bestellstatus';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_818f954f4838ecad839c5dcbd287d291'] = 'Wählen Sie den Bestellstatus für Marken. Sie können die Marken auf';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5117e194c641ad4fc55417b554aead3c'] = 'der Mondial Relay Verwaltungsseite verwalten';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_235072af42d72915159f0e6c9d6a870c'] = 'Google map';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiviert';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_93cba07454f06a4a960172bbd6e2a435'] = 'Ja';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiviert';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Nein';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9c5c09beb32c36129b857c2a40c861b6'] = 'Anzeige einer Google-Karte auf Ihre Mondial Relay Lieferantenseite, kann das Laden der Lieferantenseite verlangsameN';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1ba3935c9858ffb8e19a35ca640b8505'] = 'Mondial Relay Kontoeinstellungen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_12a3fbd35c1cab4b1101b91d708efd15'] = 'mr_marke_WebService:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f0434b67007b555dfd1201f4e0d5254'] = 'mr_code_marke:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_08f785193c96b2a78dec8d76a46648d6'] = 'mr_Schlüssel_WebService:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dae2d7c71f2daaedb00191af25dc28d'] = 'mr_Sprache:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a26329cba9723551cb8654deba32872b'] = 'mr_Gewicht_koef:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_99244b234ec089eca40ff9e8ec343e87'] = 'Gramm = 1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61cbc2d26b4157292673c772ddd6c0f7'] = 'Einstellungen aktualisieren';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2673bca5ba0a7871770e69c962e6ce38'] = 'Nb Versand:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dbe844fb964d5eca2f51be724e43294'] = 'Label URL';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6aefd5e2191e1210a2f50416812b517'] = 'Follow-up-URL';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61e70b58e38fd01daa254f44c4fa264b'] = 'Nb Abholpunkt:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9cdf0b8631b0d135ef44768cc424d544'] = 'Liste der Bestellungen erkannt';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4049d979b8e6b7d78194e96c3208a5a5'] = 'Bestellnummer';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5a50294faa0cfee08fe40be721f30133'] = 'E-Mail senden an';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b4fc57eaa6ec03268c66ec04f73061b1'] = 'A4 Label drucken';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00cbb0f772ad5239015b50943c0ecb58'] = 'A5 Label drucken';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e70c4df10ef0983b9c8c31bd06b2a2c3'] = 'zurück';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_de21dc13e1ea638777fbfad49f88b332'] = 'Alle Bestellungen mit dem Status';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2345e28c9b93f368968be4781ed70f5c'] = 'Konfiguration ändern';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_37c85a61df6352af7285c307022c4413'] = 'Keine Bestellungen mit diesem Status.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d79cf3f429596f77db95c65074663a54'] = 'Bestell-ID';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ce26601dac0dea138b7295f02b7620a7'] = 'Kunde';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0eede552438475bdfe820c13f24c9399'] = 'Gesamtpreis';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4e8b53a114e5a17d051ab84d326cae5'] = 'Gesamt Versand';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44749712dbec183e983dcd78a7736c41'] = 'Datum';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cd39b9d34af50911ae8c8f9ee14efb90'] = 'Gewicht angeben (g)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_91b442d385b54e1418d81adc34871053'] = 'Ausgewählt';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Alle';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6adf97f83acf6453d4a6a4b1070f3754'] = 'Keine';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d5fd1e99370b787c5eb9b85a5b321655'] = 'MR_Ausgewählt_Num';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d1ab466a78bba7ac6e114d76034bdcc9'] = 'MR_Ausgewählt_Land';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4757fb6030c29e81db89d241d4d9f12e'] = 'Versand_Nummer';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a254c25adc7d10d7e9c4889484f875a5'] = 'Detail';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4351cfebe4b61d8aa5efa1d020710005'] = 'Anzeigen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_32b919d18cfaca89383f6000dcc9c031'] = 'Generieren';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e94c1b8199a658f74a1a1bcde70ebd0b'] = 'Label Entstehungsgeschichte';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_caf49f04116e0708fd0e6de05c75da2e'] = 'Bestellungs-ID';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ac128fbba93b1642d2aebf21b4226c10'] = 'Exps num';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fa98e6528c9df7f26978c2beb7de3d99'] = 'Löschen ausgewählter Vorgänge';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_03f4a47830f97377a35321051685071e'] = 'Geschlossen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f8522e0610541f1ef215a22ffa66ff6'] = 'Montag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5792315f09a5d54fb7e3d066672b507f'] = 'Dienstag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_796c163589f295373e171842f37265d5'] = 'Mittwoch';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_78ae6f0cd191d25147e252dc54768238'] = 'Donnerstag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c33b138a163847cdb6caeeb7c9a126b4'] = 'Freitag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b7051187b9191cdcdae6ed5a10e5adc'] = 'Samstag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9d1a0949c39e66a0cd65240bc0ac9177'] = 'Sonntag';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_621895c388c9bb22abbbc69fad001846'] = 'Diesen Abholpunkt wählen';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c530987d533793b0f25fb18807b69cd'] = 'Um Label zu generieren, müssen Sie eine korrekte Adresse Ihres Shops registriert haben';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_3d2da0d2e731d59465a92f13216cf82d'] = 'Die Kontaktseite';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06b3355cd8a61603396c7e453bdb1025'] = 'Leere Adresse: Sind Sie sicher, dass Sie eine gültige Adresse auf der Kontaktseite eingestellt haben?';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2f84f9d5731852c4d07d52ef0badc42e'] = 'Problem beim Lesen der Adressen aus MondialRelay Webservice: Mondial Relay-Server kann abgeschaltet sein';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_21034ae6d01a83e702839a72ba8a77b0'] = '(zzgl. MwSt.).';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1f87346a16cf80c372065de3c54c86d9'] = '(Inkl. Mwst.)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e7a6ca4e744870d455a57b644f696457'] = 'Kostenlos!';
|
||||
$_MODULE['<{mondialrelay}prestashop>orderdetail_81b7b4587a2a3ea7a0d6bb1df3fbba54'] = 'Lieferung an';
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_12a3fbd35c1cab4b1101b91d708efd15'] = 'Webservice Enseigne:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f0434b67007b555dfd1201f4e0d5254'] = 'Code marque:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_08f785193c96b2a78dec8d76a46648d6'] = 'Webservice Key:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dae2d7c71f2daaedb00191af25dc28d'] = 'Etiquette\'s Language:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a26329cba9723551cb8654deba32872b'] = 'Weight Coefficient:';
|
||||
@@ -1,128 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44585fcd617dce6416d8283b026714c1'] = 'Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ed4a3b96dc1f38c160775cac1f7bcd6d'] = 'Entregue sus envíos en un punto de recogida ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70d70ce314f545b7c500a086f147f64b'] = 'Tienda no válida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_709b076565df5fa98cdb2528d897633d'] = 'Código Marca no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c86508f5bc6b4456e7003d6a1868689d'] = 'Clave Webservice no válida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ea9261a3dad976b40ff2088a19fda2c3'] = 'Idioma no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4eb287cc225ba0e1bcfe9cc1b8315def'] = 'Coeficiente de peso no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f82576de014726e9ef9b4ed2a9eb947b'] = 'Antes de crear un transportista, debe configurar los parámetros de su cuenta Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70ff82d47f295f730c6accf07a2948e8'] = 'Nombre del transportista no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e1f1787db2fee596f4c3bfaf1d098f8d'] = 'Modo Col no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9414b7de379a09941e894d28f19949ae'] = 'Modo de entrega no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5eeb9ca7eee4be7192dd10d917f79a12'] = 'Seguro no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b446ac2013dc7085802de71cc342ead'] = 'Debe elegir al menos un país de entrega';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9a85d87ae6dd77f2107734a4cd0bb15'] = 'Clave Google no válida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_979c6094728c14aac1b66d544dc5cebd'] = 'Estado de pedido no válido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c888438d14855d7d96a2724ee9c306bd'] = 'Se ha actualizado con éxito';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_07213a0161f52846ab198be103b5ab43'] = 'errores';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cb5e100e5a9a3e7f6d1fd97512215282'] = 'error';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_350c1cc4343826a89f08a33bb49c6d98'] = 'Configuración del módulo Relay Rate';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d21a9f93917604d5490ad529a7cf1ff9'] = 'Para crear un transportista Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6a2e6af5fff47adb3afd780b97d9b4b'] = 'Introduzca y guarde los parámetros de la cuenta Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_abfc836cd1df9d6d2bdfd2fc98e6fa93'] = 'Crear un transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b962d8fb95f5a439f50502152f3bad71'] = 'Deafina un precio para sus transportista en';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_faf1247ae6846a9955a466d4f301bbe4'] = 'La página de transportistas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_10d78806b84b97ebc774e9f6277af6ac'] = 'Para generar sus etiquetas, debe haber introducido una dirección correcta de su tienda en';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_af5efea250326c1c34d69aa9364b482c'] = 'página contacto';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ddcd6a653f661fd7d219d9102528b917'] = 'Ir a ver en el Front Office';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL del cron para lanzar la actualización de los pedidos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_362dff77f7403550e886db901404856c'] = 'Borrado con éxito';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_66661dacf33146201b60dc16520ddd68'] = 'Añadir un transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_531e144cc23ef08408b81cb4d9c641dc'] = 'Nombre del transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9b415ea1576b19d10d42b332798cd16'] = 'Modo de recogida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d24262afca47ba80b691c878243441e8'] = 'Recogida en la tienda';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_201bdb87f8e278b943d07ae924d5de6e'] = 'Modo de entraga';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_142ef02888af88b8b772335277d1c0c8'] = 'Entrega en Punto de recogida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eeab8b7cf3c7a558a0e8a4050fa994ca'] = 'Entrega Colis Drive';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8f7794b107749728c3333ef38d2687e8'] = 'Entrega a domicilio RDC (1 persona)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e451efc8ce05b96b214b4c2935f2c657'] = 'Entrega a domicilio especializada (2 personas)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eaff1bdf24fcffe0e14e29a1bff51a12'] = 'Seguro';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_96ba408f20bc3e065f400c650d32fd1a'] = 'Sin seguro';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e5a8fafb1dfb538c172e1e014e86b871'] = 'Seguro complementario N1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b02f8d6d4b6217cca317161c87f64065'] = 'Seguro complementario N2';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_90b95ae88150c6a34c4129dc4f1ebbd5'] = 'Seguro complementario N3';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c15b40b8c535191f6f0b6f9beaced3cf'] = 'Seguro complementario N4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b67a442fff3ca0a03ea253b0668f946d'] = 'Seguro complementario N5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_33cbd0d8b6476501f55a8320481ec0f1'] = 'Lista de países :';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_aef71ba4fd060dea2e2c76d1b5076caf'] = 'Puede elegir varios países pulsando Ctrl mientras selecciona los países';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0309a6c666a7a803fdb9db95de71cf01'] = 'Francia';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c1674d14bf5f95742f572cddb0641a7'] = 'Bélgica';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06630c890abadde9228ea818ce52b621'] = 'Luxemburgo';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_907eba32d950bfab68227fd7ea22999b'] = 'España';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Campo obligatorio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0c24ec05a02c710cedd400e3680d8b81'] = 'Lista de transportistas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_14039af96b01e718a9c9d9c1259b6472'] = 'No se ha creado ningún transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8596361cec00f8d2438d264827eee737'] = 'Configuración transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4f70727dc34561dfde1a3c529b6205c'] = 'Parámetros';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d02bbc3cb147c272b0445ac5ca7d1a36'] = 'Estado de los pedidos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_818f954f4838ecad839c5dcbd287d291'] = 'Elija un estado para generar etiquetas. Puede administrar sus etiquetas en';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5117e194c641ad4fc55417b554aead3c'] = 'la página de administración de Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_235072af42d72915159f0e6c9d6a870c'] = 'Google map';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_93cba07454f06a4a960172bbd6e2a435'] = 'Sí';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9c5c09beb32c36129b857c2a40c861b6'] = 'Muestra un Google map en su transportista Mondial Relay, pero la página de selección del transportista puede ralentizarse.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1ba3935c9858ffb8e19a35ca640b8505'] = 'Parámetros de la cuenta Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_12a3fbd35c1cab4b1101b91d708efd15'] = 'Tienda WebService ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f0434b67007b555dfd1201f4e0d5254'] = 'Código marca:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_08f785193c96b2a78dec8d76a46648d6'] = 'Clave Webservice:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dae2d7c71f2daaedb00191af25dc28d'] = 'Idioma:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a26329cba9723551cb8654deba32872b'] = 'Coeficinte de peso:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_99244b234ec089eca40ff9e8ec343e87'] = 'gramos = 1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61cbc2d26b4157292673c772ddd6c0f7'] = 'Guardar cambios';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2673bca5ba0a7871770e69c962e6ce38'] = 'Número de expediciones';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dbe844fb964d5eca2f51be724e43294'] = 'URL de las etiquetas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6aefd5e2191e1210a2f50416812b517'] = 'URL de los seguimientos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61e70b58e38fd01daa254f44c4fa264b'] = 'Número de puntos recogida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9cdf0b8631b0d135ef44768cc424d544'] = 'Lista de los pedidos reconocidos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4049d979b8e6b7d78194e96c3208a5a5'] = 'Número de pedidos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5a50294faa0cfee08fe40be721f30133'] = 'Email enviado a ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b4fc57eaa6ec03268c66ec04f73061b1'] = 'Imprimir la etiqueta en formato A4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00cbb0f772ad5239015b50943c0ecb58'] = 'Imprimir la etiqueta en formato A5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e70c4df10ef0983b9c8c31bd06b2a2c3'] = 'Volver a la página etiquetas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_de21dc13e1ea638777fbfad49f88b332'] = 'Todos los pedidos que tienen el estado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2345e28c9b93f368968be4781ed70f5c'] = 'Cambiar la configuración';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_37c85a61df6352af7285c307022c4413'] = 'No hay pedidos con ese estado.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d79cf3f429596f77db95c65074663a54'] = 'ID del pedido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ce26601dac0dea138b7295f02b7620a7'] = 'Cliente';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0eede552438475bdfe820c13f24c9399'] = 'Precio Total';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4e8b53a114e5a17d051ab84d326cae5'] = 'Precio del transportista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44749712dbec183e983dcd78a7736c41'] = 'Fecha';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cd39b9d34af50911ae8c8f9ee14efb90'] = 'Indique un peso (gramos)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_91b442d385b54e1418d81adc34871053'] = 'Seleccionar';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Todos';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6adf97f83acf6453d4a6a4b1070f3754'] = 'Ninguno';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d5fd1e99370b787c5eb9b85a5b321655'] = 'Número seleccionado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d1ab466a78bba7ac6e114d76034bdcc9'] = 'País seleccionado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4757fb6030c29e81db89d241d4d9f12e'] = 'Número de expediciones';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a254c25adc7d10d7e9c4889484f875a5'] = 'Detalle';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4351cfebe4b61d8aa5efa1d020710005'] = 'Vista';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_32b919d18cfaca89383f6000dcc9c031'] = 'Generar';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e94c1b8199a658f74a1a1bcde70ebd0b'] = 'Historial de creaciones de etiquetas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_caf49f04116e0708fd0e6de05c75da2e'] = 'ID del pedido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ac128fbba93b1642d2aebf21b4226c10'] = 'Número de expedición';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fa98e6528c9df7f26978c2beb7de3d99'] = 'Suprimir el historial seleccionado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_03f4a47830f97377a35321051685071e'] = 'Cerrado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f8522e0610541f1ef215a22ffa66ff6'] = 'Lunes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5792315f09a5d54fb7e3d066672b507f'] = 'Martes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_796c163589f295373e171842f37265d5'] = 'Miércoles';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_78ae6f0cd191d25147e252dc54768238'] = 'Jueves';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c33b138a163847cdb6caeeb7c9a126b4'] = 'Viernes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b7051187b9191cdcdae6ed5a10e5adc'] = 'Sábado';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9d1a0949c39e66a0cd65240bc0ac9177'] = 'Domingo';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_621895c388c9bb22abbbc69fad001846'] = 'Seleccionar este punto de recogida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c530987d533793b0f25fb18807b69cd'] = 'Para generar las etiquetas, debe tener registrada una dirección correcta de su tienda en';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_3d2da0d2e731d59465a92f13216cf82d'] = 'La página señas';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06b3355cd8a61603396c7e453bdb1025'] = 'Dirección vacía: ¿está seguro de haber introducio una dirección válida en la página Señas?';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2f84f9d5731852c4d07d52ef0badc42e'] = 'Problemas para obtener las direcciones de servicio web MondialRelay: los servidores de Mondial Relay pueden estar fuera de servicio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_016854c68c7122b18d89ff0f5e40502b'] = 'No hay Punto de entrega cerca de su domicilio, por favor cambie su dirección o utilice otro modo de transporte';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_21034ae6d01a83e702839a72ba8a77b0'] = '(sin IVA)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1f87346a16cf80c372065de3c54c86d9'] = '(IVA incluido)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e7a6ca4e744870d455a57b644f696457'] = '¡Gratis!';
|
||||
$_MODULE['<{mondialrelay}prestashop>orderdetail_81b7b4587a2a3ea7a0d6bb1df3fbba54'] = 'Entregado a';
|
||||
@@ -1,128 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44585fcd617dce6416d8283b026714c1'] = 'Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ed4a3b96dc1f38c160775cac1f7bcd6d'] = 'Livrez vos colis en point relais';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70d70ce314f545b7c500a086f147f64b'] = 'Enseigne invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_709b076565df5fa98cdb2528d897633d'] = 'Code Marque invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c86508f5bc6b4456e7003d6a1868689d'] = 'Clé Webservice invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ea9261a3dad976b40ff2088a19fda2c3'] = 'Langage invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4eb287cc225ba0e1bcfe9cc1b8315def'] = 'Coefficient de poids invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f82576de014726e9ef9b4ed2a9eb947b'] = 'Configurez d\'abord vos paramètres de compte Mondial Relay avant de créer un transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70ff82d47f295f730c6accf07a2948e8'] = 'Nom de transporteur invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e1f1787db2fee596f4c3bfaf1d098f8d'] = 'Col Mode invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9414b7de379a09941e894d28f19949ae'] = 'Mode de livraison invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5eeb9ca7eee4be7192dd10d917f79a12'] = 'Assurance invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b446ac2013dc7085802de71cc342ead'] = 'Vous devez choisir au moins un pays de livraison';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9a85d87ae6dd77f2107734a4cd0bb15'] = 'Clé google invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_979c6094728c14aac1b66d544dc5cebd'] = 'Etat de commande invalide';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c888438d14855d7d96a2724ee9c306bd'] = 'Paramètres mis à jour avec succès';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_07213a0161f52846ab198be103b5ab43'] = 'erreurs';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cb5e100e5a9a3e7f6d1fd97512215282'] = 'erreur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_350c1cc4343826a89f08a33bb49c6d98'] = 'Configuration du Module Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d21a9f93917604d5490ad529a7cf1ff9'] = 'Pour créer un transporteur Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6a2e6af5fff47adb3afd780b97d9b4b'] = 'Remplissez et sauvegarder vos paramètres Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_abfc836cd1df9d6d2bdfd2fc98e6fa93'] = 'Créez un transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b962d8fb95f5a439f50502152f3bad71'] = 'Definissez un prix pour votre transporteur sur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_faf1247ae6846a9955a466d4f301bbe4'] = 'La page Transporteurs';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_10d78806b84b97ebc774e9f6277af6ac'] = 'Pour générer vos étiquettes, vous devez avoir enregistré une adresse valide de votre boutique sur votre';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_af5efea250326c1c34d69aa9364b482c'] = 'page contact';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ddcd6a653f661fd7d219d9102528b917'] = 'Aller sur le Front-office';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL de la tache CRON à lancer pour la mise à jour des statuts de commandes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_362dff77f7403550e886db901404856c'] = 'Suppression effectuée';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_66661dacf33146201b60dc16520ddd68'] = 'Ajouter un transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_531e144cc23ef08408b81cb4d9c641dc'] = 'Nom du transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9b415ea1576b19d10d42b332798cd16'] = 'Mode de collecte';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d24262afca47ba80b691c878243441e8'] = 'Collecte à l\'enseigne';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_201bdb87f8e278b943d07ae924d5de6e'] = 'Mode de livraison';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_142ef02888af88b8b772335277d1c0c8'] = 'Livraison dans un point relais';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eeab8b7cf3c7a558a0e8a4050fa994ca'] = 'Livraison Colis Drive';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8f7794b107749728c3333ef38d2687e8'] = 'Livraison à domicile RDC (1 personne)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e451efc8ce05b96b214b4c2935f2c657'] = 'Livraison à domicile spécialisée (2 personnes)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eaff1bdf24fcffe0e14e29a1bff51a12'] = 'Assurance';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_96ba408f20bc3e065f400c650d32fd1a'] = 'Défaut, pas d\'assurance complémentaire';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e5a8fafb1dfb538c172e1e014e86b871'] = 'Assurance complémentaire N1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b02f8d6d4b6217cca317161c87f64065'] = 'Assurance complémentaire N2';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_90b95ae88150c6a34c4129dc4f1ebbd5'] = 'Assurance complémentaire N3';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c15b40b8c535191f6f0b6f9beaced3cf'] = 'Assurance complémentaire N4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b67a442fff3ca0a03ea253b0668f946d'] = 'Assurance complémentaire N5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_33cbd0d8b6476501f55a8320481ec0f1'] = 'Pays de livraison :';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_aef71ba4fd060dea2e2c76d1b5076caf'] = 'Vous pouvez choisir plusieurs pays en appuyant sur Ctrl tout en sélectionnant les pays';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0309a6c666a7a803fdb9db95de71cf01'] = 'France';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c1674d14bf5f95742f572cddb0641a7'] = 'Belgique';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06630c890abadde9228ea818ce52b621'] = 'Luxembourg';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_907eba32d950bfab68227fd7ea22999b'] = 'Espagne';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Champ obligatoire';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0c24ec05a02c710cedd400e3680d8b81'] = 'Liste des tranporteurs';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_14039af96b01e718a9c9d9c1259b6472'] = 'Aucun transporteur créé';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8596361cec00f8d2438d264827eee737'] = 'Modification de la configuration';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d02bbc3cb147c272b0445ac5ca7d1a36'] = 'Etat des commandes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_818f954f4838ecad839c5dcbd287d291'] = 'Choississez le statut pour la génération d\'étiquette. Vous pouvez administrer vos étiquettes sur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5117e194c641ad4fc55417b554aead3c'] = 'la page d\'administration de Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_235072af42d72915159f0e6c9d6a870c'] = 'Google map';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_93cba07454f06a4a960172bbd6e2a435'] = 'Oui';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9c5c09beb32c36129b857c2a40c861b6'] = 'Affiche une Google map sur votre transporteur Mondial Relay, mais votre page de sélection du transporteur peut devenir plus lente.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1ba3935c9858ffb8e19a35ca640b8505'] = 'Paramètres du compte Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_12a3fbd35c1cab4b1101b91d708efd15'] = 'Enseigne Webservice:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f0434b67007b555dfd1201f4e0d5254'] = 'Code marque:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_08f785193c96b2a78dec8d76a46648d6'] = 'Clé Webservice:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dae2d7c71f2daaedb00191af25dc28d'] = 'Langage:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a26329cba9723551cb8654deba32872b'] = 'Coefficient de Poids:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_99244b234ec089eca40ff9e8ec343e87'] = 'grammes = 1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61cbc2d26b4157292673c772ddd6c0f7'] = 'Enregistrer les modifications';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2673bca5ba0a7871770e69c962e6ce38'] = 'Nombre d\'expéditions';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dbe844fb964d5eca2f51be724e43294'] = 'URL des étiquettes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6aefd5e2191e1210a2f50416812b517'] = 'URL du suivi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61e70b58e38fd01daa254f44c4fa264b'] = 'Nombre de Points Relais';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9cdf0b8631b0d135ef44768cc424d544'] = 'Liste des commandes reconnues';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4049d979b8e6b7d78194e96c3208a5a5'] = 'Nombre de commandes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5a50294faa0cfee08fe40be721f30133'] = 'E-mail envoyé à';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b4fc57eaa6ec03268c66ec04f73061b1'] = 'Imprimer l\'étiquette au format A4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00cbb0f772ad5239015b50943c0ecb58'] = 'Imprimer l\'étiquette au format A5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e70c4df10ef0983b9c8c31bd06b2a2c3'] = 'Retour à la page étiquette';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_de21dc13e1ea638777fbfad49f88b332'] = 'Toutes les commandes qui ont le statut';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2345e28c9b93f368968be4781ed70f5c'] = 'Changer la configuration';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_37c85a61df6352af7285c307022c4413'] = 'Pas de commandes avec ce statut.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d79cf3f429596f77db95c65074663a54'] = 'ID commande';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ce26601dac0dea138b7295f02b7620a7'] = 'Client';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0eede552438475bdfe820c13f24c9399'] = 'Prix Total';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4e8b53a114e5a17d051ab84d326cae5'] = 'Prix du transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44749712dbec183e983dcd78a7736c41'] = 'Date';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cd39b9d34af50911ae8c8f9ee14efb90'] = 'Mettez un poids (grammes)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_91b442d385b54e1418d81adc34871053'] = 'Selectionner';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tous';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6adf97f83acf6453d4a6a4b1070f3754'] = 'Aucun';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d5fd1e99370b787c5eb9b85a5b321655'] = 'Numéro sélectionné';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d1ab466a78bba7ac6e114d76034bdcc9'] = 'Pays sélectionné';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4757fb6030c29e81db89d241d4d9f12e'] = 'Numéro d\'expédition';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a254c25adc7d10d7e9c4889484f875a5'] = 'Détail';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4351cfebe4b61d8aa5efa1d020710005'] = 'Vue';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_32b919d18cfaca89383f6000dcc9c031'] = 'Générer';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e94c1b8199a658f74a1a1bcde70ebd0b'] = 'Historique de création des étiquettes';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_caf49f04116e0708fd0e6de05c75da2e'] = 'ID commande';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ac128fbba93b1642d2aebf21b4226c10'] = 'Numéro d\'expédition';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fa98e6528c9df7f26978c2beb7de3d99'] = 'Supprimer l\'historique sélectionnée';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_03f4a47830f97377a35321051685071e'] = 'Fermé';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f8522e0610541f1ef215a22ffa66ff6'] = 'Lundi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5792315f09a5d54fb7e3d066672b507f'] = 'Mardi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_796c163589f295373e171842f37265d5'] = 'Mercredi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_78ae6f0cd191d25147e252dc54768238'] = 'Jeudi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c33b138a163847cdb6caeeb7c9a126b4'] = 'Vendredi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b7051187b9191cdcdae6ed5a10e5adc'] = 'Samedi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9d1a0949c39e66a0cd65240bc0ac9177'] = 'Dimanche';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_621895c388c9bb22abbbc69fad001846'] = 'Selectionnez ce Point Relais';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c530987d533793b0f25fb18807b69cd'] = 'Pour générer vos étiquettes, vous devez avoir enregistrer une adresse correcte de votre boutique sur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_3d2da0d2e731d59465a92f13216cf82d'] = 'La page Coordonnées';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06b3355cd8a61603396c7e453bdb1025'] = 'Adresse vide : Êtes-vous sûr d\'avoir saisi une adresse valide sur la page coordonnées ?';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2f84f9d5731852c4d07d52ef0badc42e'] = 'Mondial Relay est inaccessible';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_016854c68c7122b18d89ff0f5e40502b'] = 'Il n\'y a pas de point relais à proximité de votre adresse, veuillez changer votre adresse ou utiliser un autre transporteur';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_21034ae6d01a83e702839a72ba8a77b0'] = 'HT';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1f87346a16cf80c372065de3c54c86d9'] = 'TTC';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e7a6ca4e744870d455a57b644f696457'] = 'Gratuit !';
|
||||
$_MODULE['<{mondialrelay}prestashop>orderdetail_81b7b4587a2a3ea7a0d6bb1df3fbba54'] = 'Livraison à';
|
||||
@@ -1,111 +0,0 @@
|
||||
<script type="text/javascript" src="../../js/jquery/jquery-1.4.4.min.js"></script>
|
||||
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var geocoder;
|
||||
var map;
|
||||
var infowindow = new google.maps.InfoWindow();
|
||||
var markers = [];
|
||||
var json_addresses = null;
|
||||
|
||||
function google_map_init() {
|
||||
geocoder = new google.maps.Geocoder();
|
||||
var latlng = new google.maps.LatLng(-34.397, 150.644);
|
||||
var myOptions = {
|
||||
zoom: 11,
|
||||
center: latlng,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
};
|
||||
map = new google.maps.Map(document.getElementById("map"), myOptions);
|
||||
|
||||
geocoder.geocode( {'address': "<?php echo $_GET['address']; ?>"}, function(results, status)
|
||||
{
|
||||
if (status == google.maps.GeocoderStatus.OK)
|
||||
{
|
||||
map.setCenter(results[0].geometry.location);
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: results[0].geometry.location
|
||||
});
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
infowindow.setContent("<?php echo $_GET['address']; ?>");
|
||||
infowindow.open(map,marker);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function codeAddress(address, address_google)
|
||||
{
|
||||
geocoder.geocode( {'address': address_google}, function(results, status)
|
||||
{
|
||||
if (status == google.maps.GeocoderStatus.OK)
|
||||
{
|
||||
var image = new google.maps.MarkerImage('<?php echo $_GET['relativ_base_dir']; ?>modules/mondialrelay/kit_mondialrelay/marker.gif');
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
position: results[0].geometry.location,
|
||||
icon : image
|
||||
});
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
infowindow.setContent('<img src="<?php echo $_GET['relativ_base_dir']; ?>modules/mondialrelay/kit_mondialrelay/MR_small.gif" />' + ' ' + address);
|
||||
infowindow.open(map,marker);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function recherche_MR(args)
|
||||
{
|
||||
var ok = 1;
|
||||
if (ok == 1)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'kit_mondialrelay/RecherchePointRelais_ajax.php',
|
||||
data: args ,
|
||||
dataType: 'json',
|
||||
async : false,
|
||||
success: function(obj)
|
||||
{
|
||||
json_addresses = obj;
|
||||
},
|
||||
error: function(XMLHttpRequest, textStatus, errorThrown)
|
||||
{
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('Formulaire incomplet');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div id="map" style="height:300px; width:500px; border:1px;" ></div>
|
||||
|
||||
<?php echo '<script type="text/javascript">
|
||||
|
||||
recherche_MR(\'relativ_base_dir='.$_GET['relativ_base_dir'].'&Pays='.$_GET['Pays'].'&Ville='.$_GET['Ville'].'&CP='.$_GET['CP'].'&Taille=&Poids='.$_GET['Poids'].'&Action='.$_GET['Action'].'&num='.$_GET['num'].'\');
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
var cpt = 0;
|
||||
google_map_init();
|
||||
if (json_addresses && json_addresses.addresses)
|
||||
while (json_addresses.addresses[cpt])
|
||||
{
|
||||
if (json_addresses.addresses[cpt].address3.length)
|
||||
{
|
||||
address_google = json_addresses.addresses[cpt].address3+\' \'+json_addresses.addresses[cpt].postcode+\' \'+json_addresses.addresses[cpt].city+\' \'+json_addresses.addresses[cpt].iso_country;
|
||||
address = json_addresses.addresses[cpt].address1+\'<br />\'+json_addresses.addresses[cpt].address2+\' \'+json_addresses.addresses[cpt].address3+\'<br />\'+json_addresses.addresses[cpt].postcode+\' \'+json_addresses.addresses[cpt].city+\' \'+json_addresses.addresses[cpt].iso_country;
|
||||
codeAddress(address, address_google);
|
||||
}
|
||||
cpt++;
|
||||
}
|
||||
}
|
||||
</script>';
|
||||
?>
|
||||
@@ -1,126 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44585fcd617dce6416d8283b026714c1'] = 'Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ed4a3b96dc1f38c160775cac1f7bcd6d'] = 'Consegna nei punti Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70d70ce314f545b7c500a086f147f64b'] = 'Negozio non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_709b076565df5fa98cdb2528d897633d'] = 'Codice marchio non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c86508f5bc6b4456e7003d6a1868689d'] = 'Chiave webservice non valida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ea9261a3dad976b40ff2088a19fda2c3'] = 'Lingua non valida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4eb287cc225ba0e1bcfe9cc1b8315def'] = 'Coefficiente di peso non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f82576de014726e9ef9b4ed2a9eb947b'] = 'Si prega di configurare le impostazioni dell\'account Mondial Relay prima di creare un corriere';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_70ff82d47f295f730c6accf07a2948e8'] = 'Nome del corriere non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e1f1787db2fee596f4c3bfaf1d098f8d'] = 'Col mode non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9414b7de379a09941e894d28f19949ae'] = 'Modalità di consegna non valida';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5eeb9ca7eee4be7192dd10d917f79a12'] = 'Modalità di garanzia non valida ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b446ac2013dc7085802de71cc342ead'] = 'È necessario scegliere almeno un paese di consegna';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9a85d87ae6dd77f2107734a4cd0bb15'] = 'Chiave Google non valida ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_979c6094728c14aac1b66d544dc5cebd'] = 'Stato dell\'ordine non valido';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c888438d14855d7d96a2724ee9c306bd'] = 'Impostazioni aggiornate con successo';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_07213a0161f52846ab198be103b5ab43'] = 'errori';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cb5e100e5a9a3e7f6d1fd97512215282'] = 'errore';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_350c1cc4343826a89f08a33bb49c6d98'] = 'Configura del Modulo Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d21a9f93917604d5490ad529a7cf1ff9'] = 'Per creare un corriere Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6a2e6af5fff47adb3afd780b97d9b4b'] = 'Inserisci e salva le impostazioni dell\'account Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_abfc836cd1df9d6d2bdfd2fc98e6fa93'] = 'Crea un corriere';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b962d8fb95f5a439f50502152f3bad71'] = 'Definisci un prezzo per il tuo corriere';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_faf1247ae6846a9955a466d4f301bbe4'] = 'Pagina corriere';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_10d78806b84b97ebc774e9f6277af6ac'] = 'Per generare le etichette, è necessario disporre di un indirizzo valido e registrato per il tuo negozio sulla tua ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_af5efea250326c1c34d69aa9364b482c'] = 'pagina contatti';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ddcd6a653f661fd7d219d9102528b917'] = 'Vai al front office';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL Cron task:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_362dff77f7403550e886db901404856c'] = 'Cancellazione riuscita';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_66661dacf33146201b60dc16520ddd68'] = 'Aggiungere un metodo di spedizione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_531e144cc23ef08408b81cb4d9c641dc'] = 'il nome del corriere';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9b415ea1576b19d10d42b332798cd16'] = 'Modalità di raccolta';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d24262afca47ba80b691c878243441e8'] = 'Raccolta presso il negozio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_201bdb87f8e278b943d07ae924d5de6e'] = 'Modalità di consegna';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_142ef02888af88b8b772335277d1c0c8'] = 'La consegna a un relay point';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eeab8b7cf3c7a558a0e8a4050fa994ca'] = 'Consegna Colis Drive ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8f7794b107749728c3333ef38d2687e8'] = 'Consegna a domicilio RDC (1 persona)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e451efc8ce05b96b214b4c2935f2c657'] = 'Speciale a domicilio (2 persone)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_eaff1bdf24fcffe0e14e29a1bff51a12'] = 'Assicurazioni';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_96ba408f20bc3e065f400c650d32fd1a'] = 'Nessuna assicurazione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e5a8fafb1dfb538c172e1e014e86b871'] = 'Assicurazione complementare LV1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b02f8d6d4b6217cca317161c87f64065'] = 'Assicurazione complementare LV2';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_90b95ae88150c6a34c4129dc4f1ebbd5'] = 'Assicurazione complementare LV3';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c15b40b8c535191f6f0b6f9beaced3cf'] = 'Assicurazione complementare LV4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b67a442fff3ca0a03ea253b0668f946d'] = 'Assicurazione complementare LV5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_33cbd0d8b6476501f55a8320481ec0f1'] = 'Consegna nei paesi:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0309a6c666a7a803fdb9db95de71cf01'] = 'Francia';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c1674d14bf5f95742f572cddb0641a7'] = 'Belgio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06630c890abadde9228ea818ce52b621'] = 'Lussemburgo';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_907eba32d950bfab68227fd7ea22999b'] = 'Spagna';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Obbligatorio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0c24ec05a02c710cedd400e3680d8b81'] = 'Elenco metodo di spedizione ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_14039af96b01e718a9c9d9c1259b6472'] = 'Nessun metodo di spedizione creato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8596361cec00f8d2438d264827eee737'] = 'Config di spedizione.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4f70727dc34561dfde1a3c529b6205c'] = 'Impostazioni';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d02bbc3cb147c272b0445ac5ca7d1a36'] = 'Stato ordine';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_818f954f4838ecad839c5dcbd287d291'] = 'Scegli lo stato dell\'ordine per le etichette. È possibile gestire le etichette';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5117e194c641ad4fc55417b554aead3c'] = 'pagina di amministrazione Mondial Relay ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_235072af42d72915159f0e6c9d6a870c'] = 'Google map';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Attivato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_93cba07454f06a4a960172bbd6e2a435'] = 'Sì';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disattivato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_bafd7322c6e97d25b6299b5d6fe8920b'] = 'No';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9c5c09beb32c36129b857c2a40c861b6'] = 'Visualizza una mappa di Google sul tuo operatore Mondial Relay, può rallentare il caricamento della pagina del corriere ';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c9cc8cce247e49bae79f15173ce97354'] = 'Salva';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1ba3935c9858ffb8e19a35ca640b8505'] = 'Impostazioni account Mondial Relay';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_12a3fbd35c1cab4b1101b91d708efd15'] = 'Insegna WebService:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f0434b67007b555dfd1201f4e0d5254'] = 'Codice marchio:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_08f785193c96b2a78dec8d76a46648d6'] = 'Chiave WebService:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dae2d7c71f2daaedb00191af25dc28d'] = 'Lingua:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a26329cba9723551cb8654deba32872b'] = 'Coeff. peso:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_99244b234ec089eca40ff9e8ec343e87'] = 'grammi = 1';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61cbc2d26b4157292673c772ddd6c0f7'] = 'Aggiorna impostazioni';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2673bca5ba0a7871770e69c962e6ce38'] = 'N. di spedizione:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0dbe844fb964d5eca2f51be724e43294'] = 'Etichetta URL';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c6aefd5e2191e1210a2f50416812b517'] = 'Follow-up URL';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_61e70b58e38fd01daa254f44c4fa264b'] = 'N. Point Relay:';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9cdf0b8631b0d135ef44768cc424d544'] = 'Elenco degli ordini riconosciuto';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4049d979b8e6b7d78194e96c3208a5a5'] = 'Numero di ordinazione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5a50294faa0cfee08fe40be721f30133'] = 'Invia e-mail a';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b4fc57eaa6ec03268c66ec04f73061b1'] = 'Stampa Etichetta A4';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_00cbb0f772ad5239015b50943c0ecb58'] = 'Stampa Etichetta A5';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e70c4df10ef0983b9c8c31bd06b2a2c3'] = 'ritorno';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_de21dc13e1ea638777fbfad49f88b332'] = 'Tutti gli ordini che hanno lo stato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2345e28c9b93f368968be4781ed70f5c'] = 'Modificare la configurazione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_37c85a61df6352af7285c307022c4413'] = 'Nessun ordine con questo stato.';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d79cf3f429596f77db95c65074663a54'] = 'ID ordine';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ce26601dac0dea138b7295f02b7620a7'] = 'Cliente';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_0eede552438475bdfe820c13f24c9399'] = 'Prezzo totale';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_f4e8b53a114e5a17d051ab84d326cae5'] = 'Totale spedizione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_44749712dbec183e983dcd78a7736c41'] = 'Data';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_cd39b9d34af50911ae8c8f9ee14efb90'] = 'Inserisci un peso (grammi)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_91b442d385b54e1418d81adc34871053'] = 'Selezionato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tutti';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6adf97f83acf6453d4a6a4b1070f3754'] = 'Nessuno';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d5fd1e99370b787c5eb9b85a5b321655'] = 'Num. selezionato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_d1ab466a78bba7ac6e114d76034bdcc9'] = 'Paese selezionato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4757fb6030c29e81db89d241d4d9f12e'] = 'N. spedizione';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_a254c25adc7d10d7e9c4889484f875a5'] = 'Dettaglio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_4351cfebe4b61d8aa5efa1d020710005'] = 'Visualizza';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_32b919d18cfaca89383f6000dcc9c031'] = 'Generare';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e94c1b8199a658f74a1a1bcde70ebd0b'] = 'Cronologia creazione etichetta';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_caf49f04116e0708fd0e6de05c75da2e'] = 'ID ordini';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_ac128fbba93b1642d2aebf21b4226c10'] = 'N. spedizioni';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_fa98e6528c9df7f26978c2beb7de3d99'] = 'Eliminare la cronologia selezionata';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_03f4a47830f97377a35321051685071e'] = 'Chiuso';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6f8522e0610541f1ef215a22ffa66ff6'] = 'Lunedi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_5792315f09a5d54fb7e3d066672b507f'] = 'Martedì';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_796c163589f295373e171842f37265d5'] = 'Mercoledì';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_78ae6f0cd191d25147e252dc54768238'] = 'Giovedi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_c33b138a163847cdb6caeeb7c9a126b4'] = 'Venerdì';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_8b7051187b9191cdcdae6ed5a10e5adc'] = 'Sabato';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_9d1a0949c39e66a0cd65240bc0ac9177'] = 'Domenica';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_621895c388c9bb22abbbc69fad001846'] = 'Seleziona questo Relay Point';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_6c530987d533793b0f25fb18807b69cd'] = 'Per generare le etichette, è necessario avere registrato un indirizzo corretto del tuo negozio';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_3d2da0d2e731d59465a92f13216cf82d'] = 'La pagina contatti';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_06b3355cd8a61603396c7e453bdb1025'] = 'Svuotare indirizzo: Sei sicuro di aver impostato un indirizzo valido nella pagina di contatto?';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_2f84f9d5731852c4d07d52ef0badc42e'] = 'Problema per ottenere gli indirizzi da MondialRelay Webservice: i server di Mondial Relay potrebbero essere inattivi';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_21034ae6d01a83e702839a72ba8a77b0'] = '(Tasse escl.)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_1f87346a16cf80c372065de3c54c86d9'] = '(Tasse incl.)';
|
||||
$_MODULE['<{mondialrelay}prestashop>mondialrelay_e7a6ca4e744870d455a57b644f696457'] = 'Gratis!';
|
||||
$_MODULE['<{mondialrelay}prestashop>orderdetail_81b7b4587a2a3ea7a0d6bb1df3fbba54'] = 'Consegna a';
|
||||
@@ -1,225 +0,0 @@
|
||||
<?php
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
DEFINE('_Enseigne_webservice',$_POST['mr_Enseigne_WebService']);
|
||||
DEFINE('_Code_Marque',$_POST['mr_code_marque']);
|
||||
DEFINE('_Key_webservice',$_POST['mr_Key_WebService']);
|
||||
|
||||
$var_ModeCol=$_POST['ModeCol'];
|
||||
$var_ModeLiv=$_POST['ModeLiv'];
|
||||
$var_NDossier='PS_'.$_POST['NDossier'];
|
||||
$var_NClient=$_POST['NClient'];
|
||||
$var_Expe_Langage=$_POST['Expe_Langage'];
|
||||
$var_Expe_Ad1=$_POST['Expe_Ad1'];
|
||||
$var_Expe_Ad2=$_POST['Expe_Ad2'];
|
||||
$var_Expe_Ad3=$_POST['Expe_Ad3'];
|
||||
$var_Expe_Ad4=$_POST['Expe_Ad4'];
|
||||
$var_Expe_Ville=$_POST['Expe_Ville'];
|
||||
$var_Expe_CP=$_POST['Expe_CP'];
|
||||
$var_Expe_Pays=$_POST['Expe_Pays'];
|
||||
$var_Expe_Tel1=$_POST['Expe_Tel1'];
|
||||
$var_Expe_Tel2=$_POST['Expe_Tel2'];
|
||||
$var_Expe_Mail=$_POST['Expe_Mail'];
|
||||
$var_Dest_Langage=$_POST['Dest_Langage'];
|
||||
$var_Dest_Langage='FR';
|
||||
$var_Dest_Ad1=$_POST['Dest_Ad1'];
|
||||
$var_Dest_Ad2=$_POST['Dest_Ad2'];
|
||||
$var_Dest_Ad3=$_POST['Dest_Ad3'];
|
||||
$var_Dest_Ad4=$_POST['Dest_Ad4'];
|
||||
$var_Dest_Ville=$_POST['Dest_Ville'];
|
||||
$var_Dest_CP=$_POST['Dest_CP'];
|
||||
$var_Dest_Pays=$_POST['Dest_Pays'];
|
||||
$var_Dest_Tel1=$_POST['Dest_Tel1'];
|
||||
$var_Dest_Tel2=$_POST['Dest_Tel2'];
|
||||
$var_Dest_Mail=$_POST['Dest_Mail'];
|
||||
$var_Poids=$_POST['Poids'];
|
||||
$var_Longueur=$_POST['Longueur'];
|
||||
$var_Taille=$_POST['Taille'];
|
||||
$var_NbColis=$_POST['NbColis'];
|
||||
$var_CRT_Valeur=$_POST['CRT_Valeur'];
|
||||
$var_CRT_Devise=$_POST['CRT_Devise'];
|
||||
$var_Exp_Valeur=$_POST['Exp_Valeur'];
|
||||
$var_Exp_Devise=$_POST['Exp_Devise'];
|
||||
$var_LIV_Rel_Pays=$_POST['LIV_Rel_Pays'];
|
||||
$var_LIV_Rel=$_POST['LIV_Rel'];
|
||||
$var_Assurance=$_POST['Assurance'];
|
||||
$var_Instructions=$_POST['Instructions'];
|
||||
$var_Texte=$_POST['Texte'];
|
||||
|
||||
$k_security=strtoupper(md5(_Enseigne_webservice.$var_ModeCol.$var_ModeLiv.$var_NDossier.$var_NClient.$var_Expe_Langage.$var_Expe_Ad1.$var_Expe_Ad2.$var_Expe_Ad3.$var_Expe_Ad4.$var_Expe_Ville.$var_Expe_CP.$var_Expe_Pays.$var_Expe_Tel1.$var_Expe_Tel2.$var_Expe_Mail.$var_Dest_Langage.$var_Dest_Ad1.$var_Dest_Ad2.$var_Dest_Ad3.$var_Dest_Ad4.$var_Dest_Ville.$var_Dest_CP.$var_Dest_Pays.$var_Dest_Tel1.$var_Dest_Tel2.$var_Dest_Mail.$var_Poids.$var_Longueur.$var_Taille.$var_NbColis.$var_CRT_Valeur.$var_CRT_Devise.$var_Exp_Valeur.$var_Exp_Devise.$var_LIV_Rel_Pays.$var_LIV_Rel.$var_Assurance.$var_Instructions._Key_webservice));
|
||||
|
||||
require_once('tools/nusoap/lib/nusoap.php');
|
||||
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL",true);
|
||||
|
||||
$client_mr->soap_defencoding = 'UTF-8';
|
||||
$client_mr->decode_utf8 = false;
|
||||
|
||||
$params = array(
|
||||
'Enseigne' => _Enseigne_webservice,
|
||||
'ModeCol' => $var_ModeCol,
|
||||
'ModeLiv' => $var_ModeLiv,
|
||||
'NDossier' => $var_NDossier,
|
||||
'NClient' => $var_NClient,
|
||||
'Expe_Langage' => $var_Expe_Langage,
|
||||
'Expe_Ad1' => $var_Expe_Ad1,
|
||||
'Expe_Ad2' => $var_Expe_Ad2,
|
||||
'Expe_Ad3' => $var_Expe_Ad3,
|
||||
'Expe_Ad4' => $var_Expe_Ad4,
|
||||
'Expe_Ville' => $var_Expe_Ville,
|
||||
'Expe_CP' => $var_Expe_CP,
|
||||
'Expe_Pays' => $var_Expe_Pays,
|
||||
'Expe_Tel1' => $var_Expe_Tel1,
|
||||
'Expe_Tel2' => $var_Expe_Tel2,
|
||||
'Expe_Mail' => $var_Expe_Mail,
|
||||
'Dest_Langage' => $var_Dest_Langage,
|
||||
'Dest_Ad1' => $var_Dest_Ad1,
|
||||
'Dest_Ad2' => $var_Dest_Ad2,
|
||||
'Dest_Ad3' => $var_Dest_Ad3,
|
||||
'Dest_Ad4' => $var_Dest_Ad4,
|
||||
'Dest_Ville' => $var_Dest_Ville,
|
||||
'Dest_CP' => $var_Dest_CP,
|
||||
'Dest_Pays' => $var_Dest_Pays,
|
||||
'Dest_Tel1' => $var_Dest_Tel1,
|
||||
'Dest_Tel2' => $var_Dest_Tel2,
|
||||
'Dest_Mail' => $var_Dest_Mail,
|
||||
'Poids' => $var_Poids,
|
||||
'Longueur' => $var_Longueur,
|
||||
'Taille' => $var_Taille,
|
||||
'NbColis' => $var_NbColis,
|
||||
'CRT_Valeur' => $var_CRT_Valeur,
|
||||
'CRT_Devise' => $var_CRT_Devise,
|
||||
'Exp_Valeur' => $var_Exp_Valeur,
|
||||
'Exp_Devise' => $var_Exp_Devise,
|
||||
'LIV_Rel_Pays' => $var_LIV_Rel_Pays,
|
||||
'LIV_Rel' => $var_LIV_Rel,
|
||||
'Assurance' => $var_Assurance,
|
||||
'Instructions' => $var_Instructions,
|
||||
'Security' => $k_security,
|
||||
'Texte' => $var_Texte,
|
||||
);
|
||||
|
||||
|
||||
$sortie='';
|
||||
|
||||
$result_mr = $client_mr->call('WSI2_CreationEtiquette', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_CreationEtiquette');
|
||||
if ($client_mr->fault)
|
||||
{
|
||||
$sortie.='a|<h2>Fault (Expect - The request contains an invalid SOAP body)</h2></pre>';
|
||||
$sortie.=print_r($result_mr);
|
||||
$sortie.='</pre>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$err = $client_mr->getError();
|
||||
if ($err) { $sortie.='a|<h2>Error</h2><pre>' . $err.' </pre>'; }
|
||||
else
|
||||
{
|
||||
$var_Expedition=$result_mr['WSI2_CreationEtiquetteResult']['ExpeditionNum'];
|
||||
$k_security=strtoupper(md5('<'._Enseigne_webservice._Code_Marque.'>'.$var_Expedition.'<'._Key_webservice.'>'));
|
||||
$sortie.=$result_mr['WSI2_CreationEtiquetteResult']['STAT'].'|';
|
||||
if($result_mr['WSI2_CreationEtiquetteResult']['STAT']==0)
|
||||
{
|
||||
$sortie.=$result_mr['WSI2_CreationEtiquetteResult']['ExpeditionNum'].'|';
|
||||
$sortie.='http://www.mondialrelay.fr'.$result_mr['WSI2_CreationEtiquetteResult']['URL_Etiquette'].'|';
|
||||
$sortie.='http://www.mondialrelay.fr/lg_fr/espaces/url/popup_exp_details.aspx?cmrq='._Enseigne_webservice._Code_Marque.'&nexp='.$var_Expedition.'&crc='.$k_security;
|
||||
}
|
||||
else
|
||||
$sortie.=mb_convert_encoding(error_message_MR($result_mr['WSI2_CreationEtiquetteResult']['STAT']), 'UTF-8', 'ISO-8859-15' ).'|';
|
||||
}
|
||||
}
|
||||
echo ':THISTAG:'.$sortie.':THISTAG:';
|
||||
|
||||
function error_message_MR($etat)
|
||||
{
|
||||
if($etat=='a') {return "Résultat vide";}
|
||||
if($etat==1) {return "Enseigne invalide";}
|
||||
if($etat==2) {return "Numéro d'enseigne vide ou inexistant";}
|
||||
if($etat==3) {return "Numéro de compte enseigne invalide";}
|
||||
if($etat==5) {return "Numéro de dossier enseigne invalide";}
|
||||
if($etat==7) {return "Numéro de client enseigne invalide";}
|
||||
if($etat==9) {return "Nom de ville non reconnu ou non unique";}
|
||||
if($etat==10) {return "Type de collecte invalide ou incorrect (1/D > Domicile -- 3/R > Relais)";}
|
||||
if($etat==11) {return "Numéro de Point Relais de collecte invalide";}
|
||||
if($etat==12) {return "Pays du Point Relais de collecte invalide";}
|
||||
if($etat==13) {return "Type de livraison invalide ou incorrect (1/D > Domicile -- 3/R > Relais)";}
|
||||
if($etat==14) {return "Numéro du Point Relais de livraison invalide";}
|
||||
if($etat==15) {return "Pays du Point Relais de livraison invalide";}
|
||||
if($etat==16) {return "Code pays invalide";}
|
||||
if($etat==17) {return "Adresse invalide";}
|
||||
if($etat==18) {return "Ville invalide";}
|
||||
if($etat==19) {return "Code postal invalide";}
|
||||
if($etat==20) {return "Poids du colis invalide";}
|
||||
if($etat==21) {return "Taille (Longueur + Hauteur) du colis invalide";}
|
||||
if($etat==22) {return "Taille du Colis invalide";}
|
||||
if($etat==24) {return "Numéro de Colis Mondial Relay invalide";}
|
||||
if($etat==28) {return "Mode de collecte invalide";}
|
||||
if($etat==29) {return "Mode de livraison invalide";}
|
||||
if($etat==30) {return "Adresse (L1) de l'expéditeur invalide";}
|
||||
if($etat==31) {return "Adresse (L2) de l'expéditeur invalide";}
|
||||
if($etat==33) {return "Adresse (L3) de l'expéditeur invalide";}
|
||||
if($etat==34) {return "Adresse (L4) de l'expéditeur invalide";}
|
||||
if($etat==35) {return "Ville de l'expéditeur invalide";}
|
||||
if($etat==36) {return "Code postal de l'expéditeur invalide";}
|
||||
if($etat==37) {return "Pays de l'expéditeur invalide";}
|
||||
if($etat==38) {return "Numéro de téléphone de l'expéditeur invalide";}
|
||||
if($etat==39) {return "Adresse e-mail de l'expéditeur invalide";}
|
||||
if($etat==40) {return "Action impossible sans ville ni code postal";}
|
||||
if($etat==41) {return "Mode de livraison invalide";}
|
||||
if($etat==42) {return "Montant CRT invalide";}
|
||||
if($etat==43) {return "Devise CRT invalide";}
|
||||
if($etat==44) {return "Valeur du colis invalide";}
|
||||
if($etat==45) {return "Devise de la valeur du colis invalide";}
|
||||
if($etat==46) {return "Plage de numéro d'expédition épuisée";}
|
||||
if($etat==47) {return "Nombre de colis invalide";}
|
||||
if($etat==48) {return "Multi-colis en Point Relais Interdit";}
|
||||
if($etat==49) {return "Mode de collecte ou de livraison invalide";}
|
||||
if($etat==50) {return "Adresse (L1) du destinataire invalide";}
|
||||
if($etat==51) {return "Adresse (L2) du destinataire invalide";}
|
||||
if($etat==53) {return "Adresse (L3) du destinataire invalide";}
|
||||
if($etat==54) {return "Adresse (L4) du destinataire invalide";}
|
||||
if($etat==55) {return "Ville du destinataire invalide";}
|
||||
if($etat==56) {return "Code postal du destinataire invalide";}
|
||||
if($etat==57) {return "Pays du destinataire invalide";}
|
||||
if($etat==58) {return "Numéro de téléphone du destinataire invalide";}
|
||||
if($etat==59) {return "Adresse e-mail du destinataire invalide";}
|
||||
if($etat==60) {return "Champ texte libre invalide";}
|
||||
if($etat==61) {return "Top avisage invalide";}
|
||||
if($etat==62) {return "Instruction de livraison invalide";}
|
||||
if($etat==63) {return "Assurance invalide ou incorrecte";}
|
||||
if($etat==64) {return "Temps de montage invalide";}
|
||||
if($etat==65) {return "Top rendez-vous invalide";}
|
||||
if($etat==66) {return "Top reprise invalide";}
|
||||
if($etat==70) {return "Numéro de Point Relais invalide";}
|
||||
if($etat==72) {return "Langue expéditeur invalide";}
|
||||
if($etat==73) {return "Langue destinataire invalide";}
|
||||
if($etat==74) {return "Langue invalide";}
|
||||
if($etat==80) {return "Code tracing : Colis enregistré";}
|
||||
if($etat==81) {return "Code tracing : Colis en traitement chez Mondial Relay";}
|
||||
if($etat==82) {return "Code tracing : Colis livré";}
|
||||
if($etat==83) {return "Code tracing : Anomalie";}
|
||||
if($etat==84) {return "84 (Réservé Code Tracing)";}
|
||||
if($etat==85) {return "85 (Réservé Code Tracing)";}
|
||||
if($etat==86) {return "86 (Réservé Code Tracing)";}
|
||||
if($etat==87) {return "87 (Réservé Code Tracing)";}
|
||||
if($etat==88) {return "88 (Réservé Code Tracing)";}
|
||||
if($etat==89) {return "89 (Réservé Code Tracing)";}
|
||||
if($etat==90) {return "AS400 indisponible";}
|
||||
if($etat==91) {return "Numéro d'expédition invalide";}
|
||||
if($etat==93) {return "Aucun élément retourné par le plan de tri
|
||||
Si vous effectuez une collecte ou une livraison en Point Relais, vérifiez que les
|
||||
Point Relais sont bien disponibles.
|
||||
Si vous effectuez une livraison à domicile, il est probable que le code postal que
|
||||
vous avez indiquez n'existe pas.";}
|
||||
if($etat==94) {return "Colis Inexistant";}
|
||||
if($etat==95) {return "Compte Enseigne non activé";}
|
||||
if($etat==96) {return "Type d'enseigne incorrect en Base";}
|
||||
if($etat==97) {return "Clé de sécurité invalide";}
|
||||
if($etat==98) {return "Service Indisponible";}
|
||||
if($etat==99) {return "Erreur générique du service
|
||||
Cette erreur peut être dû autant à un problème technique du service qu'à des
|
||||
données incorrectes ou inexistantes dans la Base de Données. Lorsque vous avez
|
||||
cette erreur veuillez la notifier à Mondial Relay en précisant la date et l'heure de la
|
||||
connexion ainsi que les informations envoyés au WebService afin d'effectuer une
|
||||
vérification.";}
|
||||
};
|
||||
?>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
DEFINE('_Enseigne_webservice',$_POST['mr_Enseigne_WebService']);
|
||||
DEFINE('_Key_webservice',$_POST['mr_Key_WebService']);
|
||||
$var_Expeditions=$_POST['Expeditions'];
|
||||
$var_Langue=$_POST['Langue'];
|
||||
|
||||
|
||||
$k_security=strtoupper(md5(_Enseigne_webservice.$var_Expeditions.$var_Langue._Key_webservice));
|
||||
|
||||
require_once('tools/nusoap/lib/nusoap.php');
|
||||
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL",true);
|
||||
|
||||
$client_mr->soap_defencoding = 'UTF-8';
|
||||
$client_mr->decode_utf8 = false;
|
||||
|
||||
$params = array(
|
||||
'Enseigne' => _Enseigne_webservice,
|
||||
'Expeditions' => $var_Expeditions,
|
||||
'Langue' => $var_Langue,
|
||||
'Security' => $k_security,
|
||||
);
|
||||
|
||||
$sortie='';
|
||||
$result_mr = $client_mr->call('WSI2_GetEtiquettes', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_GetEtiquettes');
|
||||
if ($client_mr->fault)
|
||||
{
|
||||
$sortie.='a|<h2>Fault (Expect - The request contains an invalid SOAP body)</h2></pre>';
|
||||
$sortie.=print_r($result);
|
||||
$sortie.='</pre>';
|
||||
} else
|
||||
{
|
||||
$err = $client_mr->getError();
|
||||
if ($err) { $sortie.='a|<h2>Error</h2><pre>' . $err . '</pre>'; }
|
||||
else
|
||||
{
|
||||
$sortie.=$result_mr['WSI2_GetEtiquettesResult']['STAT'].'|';
|
||||
$sortie.='http://www.mondialrelay.fr'.$result_mr['WSI2_GetEtiquettesResult']['URL_PDF_A4'].'|';
|
||||
$sortie.='http://www.mondialrelay.fr'.$result_mr['WSI2_GetEtiquettesResult']['URL_PDF_A5'].'|';
|
||||
}
|
||||
}
|
||||
echo ':THISTAG:'.$sortie.':THISTAG:';
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 797 B |
@@ -1,151 +0,0 @@
|
||||
<?php
|
||||
include(dirname(__FILE__).'/../../../config/config.inc.php');
|
||||
include(dirname(__FILE__).'/../mondialrelay.php');
|
||||
|
||||
$mondialrelay = new mondialrelay();
|
||||
|
||||
DEFINE('_Enseigne_webservice', Configuration::get('MR_ENSEIGNE_WEBSERVICE'));
|
||||
DEFINE('_Key_webservice', Configuration::get('MR_KEY_WEBSERVICE'));
|
||||
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
$relativ_base_dir=$_POST['relativ_base_dir'];
|
||||
$client_Num=$_POST['Num'];
|
||||
$client_Pays=$_POST['Pays'];
|
||||
$num=$_POST['num_mode'];
|
||||
|
||||
|
||||
function mr_horaire_fr($o1,$f1,$o2,$f2)
|
||||
{
|
||||
$mondialrelay = new mondialrelay();
|
||||
|
||||
if ($o1=='' || $o1==null) {$o1='0000';};
|
||||
if ($f1=='' || $f1==null) {$f1='0000';};
|
||||
if ($o2=='' || $o2==null) {$o2='0000';};
|
||||
if ($f2=='' || $f2==null) {$f2='0000';};
|
||||
$o1=substr($o1, 0, 2).':'.substr($o1, 2, 2);
|
||||
$f1=substr($f1, 0, 2).':'.substr($f1, 2, 2);
|
||||
$o2=substr($o2, 0, 2).':'.substr($o2, 2, 2);
|
||||
$f2=substr($f2, 0, 2).':'.substr($f2, 2, 2);
|
||||
if ($o1=='00:00' && $f1=='00:00') {$p1=$mondialrelay->getL('Closed');} else {$p1=$o1.' - '.$f1;};
|
||||
if ($o2=='00:00' && $f2=='00:00') {$p2=$mondialrelay->getL('Closed');} else {$p2=$o2.' - '.$f2;};
|
||||
if ($p1=='Fermé' && $p2=='Fermé' ) {$p=$mondialrelay->getL('Closed');} else {$p=$p1.' '.$p2;};
|
||||
return utf8_encode($p);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$k_security=strtoupper(md5(_Enseigne_webservice.$client_Num.$client_Pays._Key_webservice));
|
||||
|
||||
require_once('tools/nusoap/lib/nusoap.php');
|
||||
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL",true);
|
||||
|
||||
$client_mr->soap_defencoding = 'UTF-8';
|
||||
$client_mr->decode_utf8 = false;
|
||||
|
||||
$params = array(
|
||||
'Enseigne' => _Enseigne_webservice,
|
||||
'Num' => $client_Num,
|
||||
'Pays' => $client_Pays,
|
||||
'Security' => $k_security,
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
$result_mr = $client_mr->call('WSI2_DetailPointRelais', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_DetailPointRelais');
|
||||
if ($client_mr->fault)
|
||||
{
|
||||
echo 'a|<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>';
|
||||
print_r($result);
|
||||
echo '</pre>|'.$num;
|
||||
} else
|
||||
{
|
||||
$err = $client_mr->getError();
|
||||
if ($err) { echo 'a|<h2>Error</h2><pre>' . $err . '</pre>|'.$num; }
|
||||
else
|
||||
{
|
||||
$sortie_titre="";
|
||||
$sortie_loc="";
|
||||
$sortie_info="";
|
||||
$sortie_photo="";
|
||||
$sortie_plan="";
|
||||
$sortie_horaires="";
|
||||
echo $result_mr['WSI2_DetailPointRelaisResult']['STAT'].'|';
|
||||
|
||||
|
||||
$sortie_horaires.="<tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Monday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Lundi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Lundi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Lundi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Lundi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Tuesday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mardi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mardi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mardi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mardi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Wednesday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mercredi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mercredi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mercredi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Mercredi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Thursday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Jeudi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Jeudi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Jeudi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Jeudi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Friday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Vendredi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Vendredi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Vendredi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Vendredi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Saturday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Samedi']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Samedi']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Samedi']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Samedi']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
$sortie_horaires.="<td>".$mondialrelay->getL('Sunday')."</td>";
|
||||
$sortie_horaires.="<td>".mr_horaire_fr($result_mr['WSI2_DetailPointRelaisResult']['Horaires_Dimanche']['string'][0],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Dimanche']['string'][1],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Dimanche']['string'][2],$result_mr['WSI2_DetailPointRelaisResult']['Horaires_Dimanche']['string'][3])."</td>";
|
||||
$sortie_horaires.="</tr>";
|
||||
|
||||
$sortie_horaires="<table border=0>".$sortie_horaires."</table>";
|
||||
|
||||
|
||||
$sortie_titre.="<strong>".$result_mr['WSI2_DetailPointRelaisResult']['LgAdr1']."</strong>";
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['LgAdr2']!='') {$sortie_titre.="<br>".$result_mr['WSI2_DetailPointRelaisResult']['LgAdr2'];};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['LgAdr3']!='') {$sortie_titre.="<br>".$result_mr['WSI2_DetailPointRelaisResult']['LgAdr3'];};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['LgAdr4']!='') {$sortie_titre.="<br>".$result_mr['WSI2_DetailPointRelaisResult']['LgAdr4'];};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['CP']!='') {$sortie_titre.="<br>".$result_mr['WSI2_DetailPointRelaisResult']['CP'];};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['Ville']!='') {$sortie_titre.=" ".$result_mr['WSI2_DetailPointRelaisResult']['Ville'];};
|
||||
//if ($result_mr['WSI2_DetailPointRelaisResult']['Pays']!='') {$sortie_titre.=" - ".$result_mr['WSI2_DetailPointRelaisResult']['Pays'];};
|
||||
$sortie_titre="<p>".$sortie_titre."</p>";
|
||||
|
||||
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['Localisation1']!='') {$sortie_loc.=$result_mr['WSI2_DetailPointRelaisResult']['Localisation1'];};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['Localisation2']!='') {$sortie_loc.="<br>".$result_mr['WSI2_DetailPointRelaisResult']['Localisation2'];};
|
||||
if ($sortie_loc!="") {$sortie_loc="<p>".$sortie_loc."</p>";}
|
||||
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['Information']!='') {$sortie_info="<p>".$result_mr['WSI2_DetailPointRelaisResult']['Information']."</p>";};
|
||||
|
||||
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['URL_Photo']!='') {$sortie_photo="<img src=\"".$result_mr['WSI2_DetailPointRelaisResult']['URL_Photo']."\" width=\"306\" vspace=3 hspace=3>";};
|
||||
if ($result_mr['WSI2_DetailPointRelaisResult']['URL_Plan']!='') {$sortie_plan.="<iframe src=\"".$result_mr['WSI2_DetailPointRelaisResult']['URL_Plan']."\" width=\"394\" height=\"234\" border=\"0\"></iframe>";};
|
||||
$fermer="<a href=\"javascript:void(0)\" onclick=\"masque_recherche_MR_detail('".$num."');\"><img src=\"".$relativ_base_dir."modules/mondialrelay/kit_mondialrelay/close.gif\" border=\"0\" height=\"15\" align=\"right\"></a>";
|
||||
|
||||
|
||||
echo "<div style=\"width=740px;height:15px;\">".$fermer."</div>
|
||||
<div style=\"width=716px;height:459px;padding:3px;overflow:auto;\">
|
||||
<table style='border:none;' width=100%>
|
||||
<tr style='border:none;'><td colspan=2 style='border:none;'><h1>Votre Point Relais</h1></td></tr>
|
||||
<tr style='border:none;'>
|
||||
<td valign=top style='border:none;'>
|
||||
<table style='border:none;' ><tr style='border:none;'><td style='border:none;'><img src=\"".$relativ_base_dir."modules/mondialrelay/kit_mondialrelay/MR.gif\" vspace=3 hspace=3></td><td style='border:none;'>".utf8_encode($sortie_titre.$sortie_loc.$sortie_info)."</td></tr></table><br>
|
||||
".$sortie_plan."
|
||||
</td>
|
||||
|
||||
<td valign=top style='border:none;'>
|
||||
".$sortie_horaires."<br>".$sortie_photo."
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<center><input name=\"select_MR_PR\" id=\"select_MR_PR\" value=\"".utf8_encode($mondialrelay->getL('Select this Relay Point'))."\" type=\"button\" onclick=\"
|
||||
document.getElementById('MRchoixRelais".$num.'_'.$result_mr['WSI2_DetailPointRelaisResult']['Num']."').checked=true;select_PR_MR('".$result_mr['WSI2_DetailPointRelaisResult']['Num']."','".$num."');masque_recherche_MR_detail('".$num."');\"></center>
|
||||
</div>|".$num;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,102 +0,0 @@
|
||||
<?php
|
||||
// tu récup les point relay
|
||||
|
||||
include(dirname(__FILE__).'/../../../config/config.inc.php');
|
||||
include(dirname(__FILE__).'/../../../init.php');
|
||||
include(dirname(__FILE__).'/../mondialrelay.php');
|
||||
include(dirname(__FILE__).'/statCodeError.php');
|
||||
|
||||
global $cookie;
|
||||
|
||||
$id_cart_address = Db::getInstance()->getValue('SELECT `MR_Selected_Num` FROM `'._DB_PREFIX_.'mr_selected` WHERE `id_cart` = '.$cookie->id_cart);
|
||||
|
||||
$mondialrelay = new MondialRelay();
|
||||
|
||||
DEFINE('_Enseigne_webservice', Configuration::get('MR_ENSEIGNE_WEBSERVICE'));
|
||||
DEFINE('_Key_webservice', Configuration::get('MR_KEY_WEBSERVICE'));
|
||||
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
$relativ_base_dir = $_POST['relativ_base_dir'];
|
||||
$client_pays_iso = $_POST['Pays'];
|
||||
$client_ville = $_POST['Ville'];
|
||||
$client_cp = $_POST['CP'];
|
||||
$card_taille = $_POST['Taille'];
|
||||
$card_weight = $_POST['Poids'];
|
||||
$client_type_exp = $_POST['Action'];
|
||||
$num = $_POST['num'];
|
||||
|
||||
|
||||
$k_security = strtoupper(md5(_Enseigne_webservice.$client_pays_iso.$client_ville.$client_cp.$card_taille.$card_weight.$client_type_exp._Key_webservice));
|
||||
|
||||
require_once('tools/nusoap/lib/nusoap.php');
|
||||
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL", true);
|
||||
|
||||
$client_mr->soap_defencoding = 'UTF-8';
|
||||
$client_mr->decode_utf8 = false;
|
||||
|
||||
$params = array(
|
||||
'Enseigne' => _Enseigne_webservice,
|
||||
'Pays' => $client_pays_iso,
|
||||
'Ville' => $client_ville,
|
||||
'CP' => $client_cp,
|
||||
'Taille' => '',
|
||||
'Poids' => $card_weight,
|
||||
'Action' => $client_type_exp,
|
||||
'Security' => $k_security,
|
||||
);
|
||||
|
||||
$result_mr = $client_mr->call('WSI2_RecherchePointRelais', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_RecherchePointRelais');
|
||||
if ($client_mr->fault)
|
||||
{
|
||||
echo 'a|<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>';
|
||||
print_r($result);
|
||||
echo '</pre>|'.$num;
|
||||
}
|
||||
else
|
||||
{
|
||||
$err = $client_mr->getError();
|
||||
if ($err)
|
||||
echo '{"error" : "'.$err.'"}';
|
||||
else if (($code = $result_mr['WSI2_RecherchePointRelaisResult']['STAT']) != 0)
|
||||
echo '{"statError": {"code": "'.$code.'", "msg": "'.
|
||||
(array_key_exists($code, $statCode)) ? $statCode[$code] : 'Unknown error'.'}}';
|
||||
else
|
||||
{
|
||||
$tr = "";
|
||||
echo '{';
|
||||
for ($i = 1; $i <= 10; $i++)
|
||||
{
|
||||
//if ($i==1) {$checked="checked=\"checked\"" ;} else {$checked="";};
|
||||
if($i < 10)
|
||||
$l = '0'.$i;
|
||||
else
|
||||
$l = '10';
|
||||
$numWSI2 = $result_mr['WSI2_RecherchePointRelaisResult']['PR'.$l]['Num'];
|
||||
}
|
||||
|
||||
echo '"base_dir" : "'.$relativ_base_dir.'", ';
|
||||
echo '"addresses" : [';
|
||||
$i = 0;
|
||||
$total = count($result_mr['WSI2_RecherchePointRelaisResult'] );
|
||||
|
||||
foreach ($result_mr['WSI2_RecherchePointRelaisResult'] as $key => $val)
|
||||
{
|
||||
if ($key != 'STAT')
|
||||
{
|
||||
echo '{"address1" : "'.addslashes($val['LgAdr1']).'",
|
||||
"address2" : "'.addslashes($val['LgAdr2']).'",
|
||||
"address3" : "'.addslashes($val['LgAdr3']).'",
|
||||
"address4" : "'.addslashes($val['LgAdr4']).'",
|
||||
"postcode" : "'.addslashes($val['CP']).'",
|
||||
"city" : "'.addslashes($val['Ville']).'",
|
||||
"iso_country" : "'.addslashes($val['Pays']).'",
|
||||
"num" : "'.$val['Num'].'",
|
||||
"checked" : '.($val['Num'] == $id_cart_address ? 1 : 0).'}'.(($i + 1) == $total ? '' : ', ');
|
||||
}
|
||||
++$i;
|
||||
}
|
||||
echo ']}';
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
require('config.MR.inc.php');
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
$var_Expedition=$_POST['Expedition'];
|
||||
$k_security=strtoupper(md5('<'._Enseigne_webservice.'>'.$var_Expedition.'<'._Key_webservice.'>'));
|
||||
echo 'http://www.mondialrelay.fr/lg_fr/espaces/url/popup_exp_details.aspx?cmrq='._Enseigne_webservice.'&nexp='.$var_Expedition.'&crc='.$k_security;
|
||||
|
Before Width: | Height: | Size: 246 B |
@@ -1,72 +0,0 @@
|
||||
function addLoadEvent_MR(func, args)
|
||||
{
|
||||
var oldonload = window.onload;
|
||||
if (typeof window.onload != 'function')
|
||||
window.onload = func;
|
||||
else
|
||||
{
|
||||
window.onload = function()
|
||||
{
|
||||
if (oldonload)
|
||||
oldonload();
|
||||
func(args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var gl_base_dir;
|
||||
|
||||
function set_html_MR_recherche(obj, num, base_dir, cpt)
|
||||
{
|
||||
gl_base_dir = base_dir;
|
||||
|
||||
var html = '\
|
||||
<div style=\'z-index:9998;cursor: wait;position:absolute; top:0; left:0; height:100%; width:100%;display:none;\
|
||||
background-color:#cccccc;-moz-opacity:0.8; opacity:0.8; filter:alpha(opacity=80); -khtml-opacity:0.8;\' id=\'bg_detail_md_'+num+'\'></div>\
|
||||
<div id=\'detail_md_'+num+'\' style=\'position: absolute; background-color:#ffffff; float:left; width:740px; height:480px; border:1px solid #89a; overflow:none; text-align:left; z-index:9999; display:none;\'></div>\
|
||||
<table style=\'border:none;\'>\
|
||||
<tr style=\'border:none;\'>\
|
||||
<td valign=top style=\'border:none;\'><img src="'+base_dir+'modules/mondialrelay/kit_mondialrelay/MR_small.gif"></td>\
|
||||
<td valign=top style=\'border:none; width:500px;\'><strong><span id="MR_LgAdr1_'+obj.num+'">'+obj.address1+'</span></strong> - \
|
||||
<span id="MR_LgAdr2_'+obj.num+'">'+obj.address2+'</span>';
|
||||
if (obj.address2 != '')
|
||||
html = html + ' - ';
|
||||
html = html + '<span id="MR_LgAdr3_'+obj.num+'">'+obj.address3+'</span>';
|
||||
if (obj.address3 != '')
|
||||
html = html + ' - ';
|
||||
html = html + '<span id="MR_LgAdr4_'+obj.num+'">'+obj.address4+'</span>';
|
||||
if (obj.address4 != '')
|
||||
html = html + ' - ';
|
||||
html = html + '<span id="MR_CP_'+obj.num+'">'+obj.postcode+'</span> \
|
||||
<span id="MR_Ville_'+obj.num+'">'+obj.city+'</span> - \
|
||||
<span id="MR_Pays_'+obj.num+'">'+obj.iso_country+'</span></td>\
|
||||
<td valign=top style=\'border:none;\'><a href="#" onclick="recherche_MR_detail(\''+obj.num+'\',\''+obj.iso_country+'\',\''+num+'\'); return false;"><img src="'+base_dir+'modules/mondialrelay/kit_mondialrelay/loupe.gif" border="0"></a></td>\
|
||||
<td valign=top style=\'border:none;\'><input id="MRchoixRelais'+num+'_'+obj.num+'" name="MRchoixRelais_'+num+'" value="MR'+obj.num+'" onclick="select_PR_MR(\''+obj.num+'\',\''+num+'\')" type="radio"';
|
||||
if (obj.checked == '1' || cpt == 0)
|
||||
html = html + ' checked="checked" ';
|
||||
|
||||
html = html + '> </td>\
|
||||
</tr>\
|
||||
</table>';
|
||||
$('#mondialrelay_'+num).html($('#mondialrelay_'+num).html()+html);
|
||||
if (obj.checked == '1' || cpt == 0)
|
||||
select_PR_MR(obj.num, num);
|
||||
}
|
||||
|
||||
function include_mondialrelay(num)
|
||||
{
|
||||
$('#form_mondialrelay_'+num).html('\
|
||||
<input id="MR_Selected_Num_'+num+'" name="MR_Selected_Num_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_LgAdr1_'+num+'" name="MR_Selected_LgAdr1_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_LgAdr2_'+num+'" name="MR_Selected_LgAdr2_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_LgAdr3_'+num+'" name="MR_Selected_LgAdr3_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_LgAdr4_'+num+'" name="MR_Selected_LgAdr4_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_CP_'+num+'" name="MR_Selected_CP_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_Ville_'+num+'" name="MR_Selected_Ville_'+num+'" type="hidden" >\
|
||||
<input id="MR_Selected_Pays_'+num+'" name="MR_Selected_Pays_'+num+'" type="hidden" >\
|
||||
\
|
||||
\
|
||||
<div id="recherche_MR_form_'+num+'" >\
|
||||
</div>\
|
||||
<div id="mondialprelay_'+num+'" style="padding:3px;"></div>');
|
||||
}
|
||||
@@ -1,616 +0,0 @@
|
||||
var relativ_base_dir = url_appel;
|
||||
var num_mode_actif = -1;
|
||||
|
||||
url_appel = url_appel+'modules/mondialrelay/kit_mondialrelay/';
|
||||
|
||||
img_loader = new Image;
|
||||
img_loader.src = url_appel+'loading.gif';
|
||||
|
||||
var google_map_general = null;
|
||||
var geocoder = null;
|
||||
var recherche = 0;
|
||||
var json_addresses = null;
|
||||
//var address;
|
||||
|
||||
function affiche_mydiv_mr(id_carrier, args)
|
||||
{
|
||||
if ($('#id_carrier_mr' + id_carrier).attr("checked") == true)
|
||||
{
|
||||
if ($('#mondialrelay_' + id_carrier).css('display') == 'none')
|
||||
{
|
||||
$('#mondialrelay_' + id_carrier).toggle('slow');
|
||||
$('#mondialrelay_' + id_carrier).show();
|
||||
if ($('#mondialrelay_' + id_carrier).html() == '')
|
||||
recherche_MR(id_carrier, args);
|
||||
else
|
||||
$("#all_mondialrelay_map_" + id_carrier).show();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($('#mondialrelay_' + id_carrier).css('display') == 'block')
|
||||
$('#mondialrelay_' + id_carrier).toggle('slow');
|
||||
$('#mondialrelay_' + id_carrier).hide();
|
||||
$("#all_mondialrelay_map_" + id_carrier).hide();
|
||||
}
|
||||
}
|
||||
|
||||
function trim_MR(s)
|
||||
{return s.replace(/^\s+|\s+$/g,"");}
|
||||
|
||||
function ltrim_MR(s)
|
||||
{return s.replace(/^\s+/,"");}
|
||||
|
||||
function rtrim_MR(s)
|
||||
{return s.replace(/\s+$/,"");}
|
||||
|
||||
function strtoupper_MR(s)
|
||||
{return s.toUpperCase();}
|
||||
|
||||
var oXmlhttpMR1 = null;
|
||||
if (window.XMLHttpRequest) {
|
||||
// If IE7, Mozilla, Safari, and so on: Use native object.
|
||||
oXmlhttpMR1 = new XMLHttpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (window.ActiveXObject) {
|
||||
// ...otherwise, use the ActiveX control for IE5.x and IE6.
|
||||
oXmlhttpMR1 = new ActiveXObject('MSXML2.XMLHTTP.3.0');
|
||||
}
|
||||
}
|
||||
|
||||
var oXmlhttpMR2 = null;
|
||||
if (window.XMLHttpRequest) {
|
||||
// If IE7, Mozilla, Safari, and so on: Use native object.
|
||||
oXmlhttpMR2 = new XMLHttpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (window.ActiveXObject) {
|
||||
// ...otherwise, use the ActiveX control for IE5.x and IE6.
|
||||
oXmlhttpMR2 = new ActiveXObject('MSXML2.XMLHTTP.3.0');
|
||||
}
|
||||
}
|
||||
|
||||
var oXmlhttpMR3 = null;
|
||||
if (window.XMLHttpRequest) {
|
||||
// If IE7, Mozilla, Safari, and so on: Use native object.
|
||||
oXmlhttpMR3 = new XMLHttpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (window.ActiveXObject) {
|
||||
// ...otherwise, use the ActiveX control for IE5.x and IE6.
|
||||
oXmlhttpMR3 = new ActiveXObject('MSXML2.XMLHTTP.3.0');
|
||||
}
|
||||
}
|
||||
|
||||
var oXmlhttpMR5 = null;
|
||||
if (window.XMLHttpRequest) {
|
||||
// If IE7, Mozilla, Safari, and so on: Use native object.
|
||||
oXmlhttpMR5 = new XMLHttpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (window.ActiveXObject) {
|
||||
// ...otherwise, use the ActiveX control for IE5.x and IE6.
|
||||
oXmlhttpMR5 = new ActiveXObject('MSXML2.XMLHTTP.3.0');
|
||||
}
|
||||
}
|
||||
|
||||
function Url_suivi_MR(numexp)
|
||||
{
|
||||
var ok = 0;
|
||||
if (numexp != '')
|
||||
ok = 1;
|
||||
if (ok == 1)
|
||||
{
|
||||
|
||||
oXmlhttpMR1.open('POST',url_appel+'SuiviExpedition_ajax.php');
|
||||
oXmlhttpMR1.onreadystatechange = function()
|
||||
{
|
||||
if (oXmlhttpMR1.readyState == 4 && oXmlhttpMR1.status == 200)
|
||||
{
|
||||
var response = oXmlhttpMR1.responseText;
|
||||
document.getElementById('list_Url_suivi_MR_expediation').innerHTML=document.getElementById('list_Url_suivi_MR_expediation').innerHTML
|
||||
+ '<br><a href="'+response+'" target="suivi_exp">'+response+'</a>';
|
||||
}
|
||||
}
|
||||
oXmlhttpMR1.setRequestHeader("Content-type", "application/x-www-form-urlencoded; ");
|
||||
var data = 'Expedition='+encodeURIComponent(numexp);
|
||||
oXmlhttpMR1.send(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('Formulaire incomplet');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function impression_etiquette_MR()
|
||||
{
|
||||
if (document.getElementById('input_Expeditions').value != '' && is_ok_mr('Pays','input_Langue',''))
|
||||
{
|
||||
oXmlhttpMR2.open('POST',url_appel+'ImpressionEtiquettePointRelais_ajax.php');
|
||||
oXmlhttpMR2.onreadystatechange=function()
|
||||
{
|
||||
if (oXmlhttpMR2.readyState == 1)
|
||||
document.getElementById('reponse_impression_etiquette_MR').innerHTML='Création en cours...';
|
||||
if (oXmlhttpMR2.readyState == 2)
|
||||
document.getElementById('reponse_impression_etiquette_MR').innerHTML='Création en cours...';
|
||||
if (oXmlhttpMR2.readyState == 4 && oXmlhttpMR2.status == 200)
|
||||
{
|
||||
var response = oXmlhttpMR2.responseText || "z|";
|
||||
document.getElementById('reponse_impression_etiquette_MR').innerHTML = '';
|
||||
res=response.split('|');
|
||||
if (res[0] != 0 && res[0] != 'a' && res[0] != 'z')
|
||||
message_MR(res[0]);
|
||||
else if (res[0] == 'a')
|
||||
document.getElementById('reponse_impression_etiquette_MR').innerHTML = res[1];
|
||||
else if (res[0] == 'z')
|
||||
{
|
||||
document.getElementById('reponse_impression_etiquette_MR').innerHTML = '';
|
||||
alert('Requête sans réponse.');
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('list_url_reponse_impression_etiquette_MR_A4').innerHTML=document.getElementById('list_url_reponse_impression_etiquette_MR_A4').innerHTML
|
||||
+ '<br><a href="' + res[1] + '" target="print_etiquette">' + res[1] + '</a>';
|
||||
document.getElementById('list_url_reponse_impression_etiquette_MR_A5').innerHTML=document.getElementById('list_url_reponse_impression_etiquette_MR_A5').innerHTML
|
||||
+ '<br><a href="' + res[2] + '" target="print_etiquette">' + res[2] + '</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
oXmlhttpMR2.setRequestHeader("Content-type", "application/x-www-form-urlencoded; ");
|
||||
var data = 'Expeditions=' + encodeURIComponent(document.getElementById('input_Expeditions').value) + '&Langue=' + encodeURIComponent($('#input_Langue').val());
|
||||
oXmlhttpMR2.send (data);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('Formulaire incomplet');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function creation_etiquette_MR()
|
||||
{
|
||||
if ( is_ok_mr('NDossier','input_NDossier','')
|
||||
&& is_ok_mr('NClient','input_NClient','')
|
||||
&& is_ok_mr('Pays','input_Expe_Langage','')
|
||||
&& is_ok_mr('Ad2','input_Expe_Ad2','')
|
||||
&& is_ok_mr('Ad3','input_Expe_Ad3','')
|
||||
&& is_ok_mr('Ad2','input_Expe_Ad4','')
|
||||
&& is_ok_mr('VilleO','input_Expe_Ville','')
|
||||
&& is_ok_mr('CPO','input_Expe_CP','')
|
||||
&& is_ok_mr('Pays','input_Expe_Pays','')
|
||||
&& is_ok_mr('Tel1','input_Expe_Tel1','')
|
||||
&& is_ok_mr('Tel2','input_Expe_Tel2','')
|
||||
&& is_ok_mr('Mail','input_Expe_Mail','')
|
||||
&& is_ok_mr('Pays','input_Dest_Langage','')
|
||||
&& is_ok_mr('Ad2','input_Dest_Ad2','')
|
||||
&& is_ok_mr('Ad3','input_Dest_Ad3','')
|
||||
&& is_ok_mr('Ad2','input_Dest_Ad4','')
|
||||
&& is_ok_mr('VilleO','input_Dest_Ville','')
|
||||
&& is_ok_mr('CPO','input_Dest_CP','')
|
||||
&& is_ok_mr('Pays','input_Dest_Pays','')
|
||||
&& is_ok_mr('Tel2','input_Dest_Tel1','')
|
||||
&& is_ok_mr('Tel2','input_Dest_Tel2','')
|
||||
&& is_ok_mr('MailO','input_Dest_Mail','')
|
||||
&& is_ok_mr('PoidsO','input_Poids','')
|
||||
&& is_ok_mr('Longueur','input_Longueur','')
|
||||
)
|
||||
{
|
||||
oXmlhttpMR3.open('POST',url_appel+'CreationEtiquettePointRelais_ajax.php');
|
||||
oXmlhttpMR3.onreadystatechange = function()
|
||||
{
|
||||
if (oXmlhttpMR3.readyState == 1)
|
||||
document.getElementById('reponse_creation_etiquette_MR').innerHTML = 'Création en cours...';
|
||||
if (oXmlhttpMR3.readyState == 2)
|
||||
document.getElementById('reponse_creation_etiquette_MR').innerHTML = 'Création en cours...';
|
||||
if (oXmlhttpMR3.readyState == 4 && oXmlhttpMR3.status == 200)
|
||||
{
|
||||
var response = oXmlhttpMR3.responseText || "z|";
|
||||
document.getElementById('reponse_creation_etiquette_MR').innerHTML = '';
|
||||
res = response.split('|');
|
||||
if (res[0] != 0 && res[0] != 'a' && res[0] != 'z')
|
||||
{message_MR(res[0]);}
|
||||
else if (res[0] == 'a')
|
||||
document.getElementById('reponse_creation_etiquette_MR').innerHTML = res[1];
|
||||
else if (res[0] == 'z')
|
||||
{
|
||||
document.getElementById('reponse_creation_etiquette_MR').innerHTML = '';
|
||||
alert('Requête sans réponse.');
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('list_url_reponse_creation_etiquette_MR').innerHTML = document.getElementById('list_url_reponse_creation_etiquette_MR').innerHTML
|
||||
+ '<br><a href="'+res[2]+'" target="print_etiquette">'+res[2]+'</a>';
|
||||
Url_suivi_MR(res[1]);//ligne à supprimer seulement utilisée pour le test
|
||||
if (document.getElementById('input_Expeditions').value != '')
|
||||
document.getElementById('input_Expeditions').value = document.getElementById('input_Expeditions').value+';'+res[1];
|
||||
else
|
||||
document.getElementById('input_Expeditions').value = res[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
oXmlhttpMR3.setRequestHeader("Content-type", "application/x-www-form-urlencoded; ");
|
||||
var data = 'ModeCol='+encodeURIComponent(document.getElementById('input_ModeCol').value)+'&ModeLiv='+encodeURIComponent(document.getElementById('input_ModeLiv').value)+'&NDossier='+encodeURIComponent(document.getElementById('input_NDossier').value)+'&NClient='+encodeURIComponent(document.getElementById('input_NClient').value)+'&Expe_Langage='+encodeURIComponent(document.getElementById('input_Expe_Langage').value)+'&Expe_Ad1='+encodeURIComponent(document.getElementById('input_Expe_Ad1').value)+'&Expe_Ad2='+encodeURIComponent(document.getElementById('input_Expe_Ad2').value)+'&Expe_Ad3='+encodeURIComponent(document.getElementById('input_Expe_Ad3').value)+'&Expe_Ad4='+encodeURIComponent(document.getElementById('input_Expe_Ad4').value)+'&Expe_Ville='+encodeURIComponent(document.getElementById('input_Expe_Ville').value)+'&Expe_CP='+encodeURIComponent(document.getElementById('input_Expe_CP').value)+'&Expe_Pays='+encodeURIComponent(document.getElementById('input_Expe_Pays').value)+'&Expe_Tel1='+encodeURIComponent(document.getElementById('input_Expe_Tel1').value)+'&Expe_Tel2='+encodeURIComponent(document.getElementById('input_Expe_Tel2').value)+'&Expe_Mail='+encodeURIComponent(document.getElementById('input_Expe_Mail').value)+'&Dest_Langage='+encodeURIComponent(document.getElementById('input_Dest_Langage').value)+'&Dest_Ad1='+encodeURIComponent(document.getElementById('input_Dest_Ad1').value)+'&Dest_Ad2='+encodeURIComponent(document.getElementById('input_Dest_Ad2').value)+'&Dest_Ad3='+encodeURIComponent(document.getElementById('input_Dest_Ad3').value)+'&Dest_Ad4='+encodeURIComponent(document.getElementById('input_Dest_Ad4').value)+'&Dest_Ville='+encodeURIComponent(document.getElementById('input_Dest_Ville').value)+'&Dest_CP='+encodeURIComponent(document.getElementById('input_Dest_CP').value)+'&Dest_Pays='+encodeURIComponent(document.getElementById('input_Dest_Pays').value)+'&Dest_Tel1='+encodeURIComponent(document.getElementById('input_Dest_Tel1').value)+'&Dest_Tel2='+encodeURIComponent(document.getElementById('input_Dest_Tel2').value)+'&Dest_Mail='+encodeURIComponent(document.getElementById('input_Dest_Mail').value)+'&Poids='+encodeURIComponent(document.getElementById('input_Poids').value)+'&Longueur='+encodeURIComponent(document.getElementById('input_Longueur').value)+'&Taille='+encodeURIComponent(document.getElementById('input_Taille').options[document.getElementById('input_Taille').selectedIndex].value)+'&NbColis='+encodeURIComponent(document.getElementById('input_NbColis').options[document.getElementById('input_NbColis').selectedIndex].value)+'&CRT_Valeur='+encodeURIComponent(document.getElementById('input_CRT_Valeur').value)+'&CRT_Devise='+encodeURIComponent(document.getElementById('input_CRT_Devise').value)+'&Exp_Valeur='+encodeURIComponent(document.getElementById('input_Exp_Valeur').value)+'&Exp_Devise='+encodeURIComponent(document.getElementById('input_Exp_Devise').value)+'&LIV_Rel_Pays='+encodeURIComponent(document.getElementById('input_LIV_Rel_Pays').value)+'&LIV_Rel='+encodeURIComponent(document.getElementById('input_LIV_Rel').value)+'&Assurance='+encodeURIComponent(document.getElementById('input_Assurance').options[document.getElementById('input_Assurance').selectedIndex].value)+'&Instructions='+encodeURIComponent(document.getElementById('input_Instructions').value)+'&Texte='+encodeURIComponent(document.getElementById('input_Texte').value);
|
||||
oXmlhttpMR3.send(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('Formulaire incomplet');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function recherche_MR(num, args)
|
||||
{
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url_appel+'RecherchePointRelais_ajax.php',
|
||||
data: args ,
|
||||
dataType: 'json',
|
||||
beforeSend : function(params)
|
||||
{
|
||||
$('#loading_mr').show();
|
||||
},
|
||||
success: function(obj)
|
||||
{
|
||||
$('#loading_mr').hide();
|
||||
$('#mondialrelay_'+num).html('');
|
||||
$("#all_mondialrelay_map_" + num).show();
|
||||
var cpt = 0;
|
||||
if (obj.error)
|
||||
$('#mondialrelay_'+num).html('<div class="error"><p>'+server_error+'</p></div>');
|
||||
else
|
||||
{
|
||||
while (obj.addresses[cpt])
|
||||
{
|
||||
if (obj.addresses[cpt].num)
|
||||
set_html_MR_recherche(obj.addresses[cpt], num, obj.base_dir, cpt);
|
||||
cpt++;
|
||||
}
|
||||
if (!obj.addresses[0].num)
|
||||
$('#mondialrelay_'+num).html('<div class="error"><p>'+address_error+'</p></div>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function is_numeric(id,message)
|
||||
{
|
||||
var string = trim_MR(document.getElementById(id).value);
|
||||
if ((isNaN(string)) == true || string == '')
|
||||
{
|
||||
document.getElementById(id).focus();
|
||||
alert(message);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
function is_no_null_mr(id,message)
|
||||
{
|
||||
var string = trim_MR(document.getElementById(id).value);
|
||||
if (string != '')
|
||||
return true;
|
||||
else
|
||||
{
|
||||
document.getElementById(id).focus();
|
||||
alert(message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function is_ok_mr(type,id,message)
|
||||
{
|
||||
if (type != 'key') document.getElementById(id).value = trim_MR(strtoupper_MR(document.getElementById(id).value));
|
||||
var string = document.getElementById(id).value;
|
||||
var reg = "";
|
||||
if (type == 'Enseigne' )
|
||||
reg = "^[0-9A-Z]{2}[0-9A-Z ]{6}$";
|
||||
else if (type == 'CM' )
|
||||
reg = "^[0-9]{2}$";
|
||||
else if (type == 'key' )
|
||||
reg = "^[0-9A-Za-z_\'., /\-]{2,32}$";
|
||||
else if (type == 'Longueur' && string != '')
|
||||
reg = "^[0-9]{0,3}$";
|
||||
else if (type == 'MailO' )
|
||||
reg = "^[a-zA-Z0-9\-\.@_]{6,70}$";
|
||||
else if (type == 'Mail' && string != '')
|
||||
reg = "^[a-zA-Z0-9\-\.@_]{0,70}$";
|
||||
else if (type == 'Tel1' )
|
||||
reg = "^(((00|[\+])33)|0)[0-9]{1}[0-9]{8}$";
|
||||
else if (type == 'Tel2' && string != '')
|
||||
reg = "^(((00|[\+])33)|0)[0-9]{1}[0-9]{8}$";
|
||||
else if (type == 'Ad2' && string != '')
|
||||
reg = "^[0-9A-Z_\'., /\-]{2,32}$";
|
||||
else if (type == 'Ad3')
|
||||
reg = "^[0-9A-Z_\'., /\-]{2,32}$";
|
||||
else if (type == 'NDossier' && string != '')
|
||||
reg = "^[0-9A-Z_ \-]{0,15}$";
|
||||
else if (type == 'NClient' && string != '')
|
||||
reg = "^[0-9A-Z]{0,9}$";
|
||||
else if (type == 'Pays')
|
||||
reg = "^[A-Z]{2}$";
|
||||
else if (type == 'VilleO' )
|
||||
reg = "^[A-Z_' \-]{2,25}$";
|
||||
else if (type == 'Ville' && string != '')
|
||||
reg = "^[A-Z_' \-]{2,25}$";
|
||||
else if (type == 'CP' && string != '')
|
||||
reg = "^[0-9]{4,5}$";
|
||||
else if (type == 'CPO' )
|
||||
reg = "^[0-9]{4,5}$";
|
||||
else if (type == 'Taille' && string != '')
|
||||
reg = "^XS|S|M|L|XL|XXL|3XL$";
|
||||
else if (type == 'Poids' && string != '')
|
||||
reg = "^[0-9]{1,6}$";
|
||||
else if (type == 'PoidsO')
|
||||
reg = "^[0-9]{1,6}$";
|
||||
else if (type == 'Action' && string != '')
|
||||
reg = "^REL|24R|ESP|DRI|LDS|LDR|LD1$";
|
||||
else if (reg!="")
|
||||
{
|
||||
try {
|
||||
if (string != string.match(reg)[0])
|
||||
{if (message!='') {document.getElementById(id).focus();alert(message);}
|
||||
return false;
|
||||
}
|
||||
else {return true;}
|
||||
} catch(err)
|
||||
{
|
||||
document.getElementById(id).focus();alert(message);
|
||||
return false;
|
||||
}
|
||||
} else {return true;}
|
||||
}
|
||||
|
||||
function masque_recherche_MR_detail(num)
|
||||
{
|
||||
document.getElementById('bg_detail_md_'+num).style.display='none';
|
||||
document.getElementById('detail_md_'+num).style.display='none';
|
||||
document.getElementById('detail_md_'+num).innerHTML=''
|
||||
}
|
||||
|
||||
function recherche_MR_detail(num, pays, num_mode)
|
||||
{
|
||||
oXmlhttpMR5.open('POST',url_appel+'RechercheDetailPointRelais_ajax.php');
|
||||
oXmlhttpMR5.onreadystatechange=function() {
|
||||
if (oXmlhttpMR5.readyState==1) {
|
||||
var arrayPageSize = getPageSize_MR();
|
||||
var arrayScroll = getPageScroll_MR();
|
||||
document.getElementById('bg_detail_md_'+num_mode).style.height = (arrayPageSize[1] + 'px');
|
||||
document.getElementById('bg_detail_md_'+num_mode).style.display='block';
|
||||
document.getElementById('detail_md_'+num_mode).style.top = (Math.round(arrayScroll[1]+(arrayPageSize[3]-480)/2)+ 'px');
|
||||
document.getElementById('detail_md_'+num_mode).style.left = (Math.round((arrayPageSize[2]-740)/2)+ 'px');
|
||||
document.getElementById('detail_md_'+num_mode).innerHTML="<table width=100%><tr height=478 style='border:none;'><td valing=middle style='border:none;'><center><img class='none' src='"+img_loader.src+"' ></center></td></tr></table>";
|
||||
document.getElementById('detail_md_'+num_mode).style.display='block';
|
||||
}
|
||||
/*if (oXmlhttpMR5.readyState==2) {
|
||||
var arrayPageSize = getPageSize_MR();
|
||||
var arrayScroll = getPageScroll_MR();
|
||||
document.getElementById('bg_detail_md').style.height = (arrayPageSize[1] + 'px');
|
||||
document.getElementById('bg_detail_md').style.display='block';
|
||||
document.getElementById('detail_md').style.top = (Math.round(arrayScroll[1]+(arrayPageSize[3]-480)/2)+ 'px');
|
||||
document.getElementById('detail_md').style.left = (Math.round((arrayPageSize[2]-740)/2)+ 'px');
|
||||
document.getElementById('detail_md').innerHTML="<table width=100%><tr height=478 style='border:none;'><td valing=middle style='border:none;'><center><img class='none' src='"+img_loader.src+"' ></center></td></tr></table>";
|
||||
document.getElementById('detail_md').style.display='block';
|
||||
}*/
|
||||
if (oXmlhttpMR5.readyState==4 && oXmlhttpMR5.status == 200) {
|
||||
var response = oXmlhttpMR5.responseText || "z|";
|
||||
res=response.split('|');
|
||||
if (res[0]!=0 && res[0]!='a' && res[0]!='z')
|
||||
{masque_recherche_MR_detail(num_mode);
|
||||
message_MR(res[0]);}
|
||||
else if (res[0]=='a') {document.getElementById('detail_md_'+res[2]).innerHTML=res[1];}
|
||||
else if (res[0]=='z') {masque_recherche_MR_detail(res[2]); alert('Requête sans réponse.');}
|
||||
else {document.getElementById('detail_md_'+res[2]).innerHTML=res[1];};};
|
||||
}
|
||||
|
||||
oXmlhttpMR5.setRequestHeader("Content-type", "application/x-www-form-urlencoded; ");
|
||||
var data = 'relativ_base_dir='+encodeURIComponent(relativ_base_dir)+'&Num='+encodeURIComponent(num)+'&Pays='+encodeURIComponent(pays)+'&num_mode='+num_mode;
|
||||
oXmlhttpMR5.send (data);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function select_PR_MR(num, id_carrier)
|
||||
{
|
||||
if (num != '')
|
||||
{
|
||||
$('#MR_Selected_Num_'+id_carrier).val(num);
|
||||
$('#MR_Selected_LgAdr1_'+id_carrier).val($('#MR_LgAdr1_'+num).html());
|
||||
$('#MR_Selected_LgAdr2_'+id_carrier).val($('#MR_LgAdr2_'+num).html());
|
||||
$('#MR_Selected_LgAdr3_'+id_carrier).val($('#MR_LgAdr3_'+num).html());
|
||||
$('#MR_Selected_LgAdr4_'+id_carrier).val($('#MR_LgAdr4_'+num).html());
|
||||
$('#MR_Selected_CP_'+id_carrier).val($('#MR_CP_'+num).html());
|
||||
$('#MR_Selected_Ville_'+id_carrier).val($('#MR_Ville_'+num).html());
|
||||
$('#MR_Selected_Pays_'+id_carrier).val($('#MR_Pays_'+num).html());
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#MR_Selected_Num_'+id_carrier).val('');
|
||||
$('#MR_Selected_LgAdr1_'+id_carrier).val('');
|
||||
$('#MR_Selected_LgAdr2_'+id_carrier).val('');
|
||||
$('#MR_Selected_LgAdr3_'+id_carrier).val('');
|
||||
$('#MR_Selected_LgAdr4_'+id_carrier).val('');
|
||||
$('#MR_Selected_CP_'+id_carrier).val('');
|
||||
$('#MR_Selected_Ville_'+id_carrier).val('');
|
||||
$('#MR_Selected_Pays_'+id_carrier).val('');
|
||||
};
|
||||
if (one_page_checkout == true)
|
||||
{
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: gl_base_dir + 'modules/mondialrelay/kit_mondialrelay/mr_opc_ajax.php',
|
||||
async: true,
|
||||
cache: false,
|
||||
data: 'Num='+$('#MR_Selected_Num_'+id_carrier).val()+'&LgAdr1='+$('#MR_Selected_LgAdr1_'+id_carrier).val()+'&LgAdr2='+$('#MR_Selected_LgAdr2_'+id_carrier).val()+'&LgAdr3='+$('#MR_Selected_LgAdr3_'+id_carrier).val()+'&LgAdr4='+$('#MR_Selected_LgAdr4_'+id_carrier).val()+'&CP='+$('#MR_Selected_CP_'+id_carrier).val()+'&Ville='+$('#MR_Selected_Ville_'+id_carrier).val()+'&Pays='+$('#MR_Selected_Pays_'+id_carrier).val()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function message_MR(etat)
|
||||
{
|
||||
if (etat == 'a') {alert("Résultat vide");}
|
||||
if (etat == 1) {alert("Enseigne invalide");}
|
||||
if (etat == 2) {alert("Numéro d'enseigne vide ou inexistant");}
|
||||
if (etat == 3) {alert("Numéro de compte enseigne invalide");}
|
||||
if (etat == 5) {alert("Numéro de dossier enseigne invalide");}
|
||||
if (etat == 7) {alert("Numéro de client enseigne invalide");}
|
||||
if (etat == 9) {alert("Nom de ville non reconnu ou non unique");}
|
||||
if (etat == 10) {alert("Type de collecte invalide ou incorrect (1/D > Domicile -- 3/R > Relais)");}
|
||||
if (etat == 11) {alert("Numéro de Point Relais de collecte invalide");}
|
||||
if (etat == 12) {alert("Pays du Point Relais de collecte invalide");}
|
||||
if (etat == 13) {alert("Type de livraison invalide ou incorrect (1/D > Domicile -- 3/R > Relais)");}
|
||||
if (etat == 14) {alert("Numéro du Point Relais de livraison invalide");}
|
||||
if (etat == 15) {alert("Pays du Point Relais de livraison invalide");}
|
||||
if (etat == 16) {alert("Code pays invalide");}
|
||||
if (etat == 17) {alert("Adresse invalide");}
|
||||
if (etat == 18) {alert("Ville invalide");}
|
||||
if (etat == 19) {alert("Code postal invalide");}
|
||||
if (etat == 20) {alert("Poids du colis invalide");}
|
||||
if (etat == 21) {alert("Taille (Longueur + Hauteur) du colis invalide");}
|
||||
if (etat == 22) {alert("Taille du Colis invalide");}
|
||||
if (etat == 24) {alert("Numéro de Colis Mondial Relay invalide");}
|
||||
if (etat == 28) {alert("Mode de collecte invalide");}
|
||||
if (etat == 29) {alert("Mode de livraison invalide");}
|
||||
if (etat == 30) {alert("Adresse (L1) de l'expéditeur invalide");}
|
||||
if (etat == 31) {alert("Adresse (L2) de l'expéditeur invalide");}
|
||||
if (etat == 33) {alert("Adresse (L3) de l'expéditeur invalide");}
|
||||
if (etat == 34) {alert("Adresse (L4) de l'expéditeur invalide");}
|
||||
if (etat == 35) {alert("Ville de l'expéditeur invalide");}
|
||||
if (etat == 36) {alert("Code postal de l'expéditeur invalide");}
|
||||
if (etat == 37) {alert("Pays de l'expéditeur invalide");}
|
||||
if (etat == 38) {alert("Numéro de téléphone de l'expéditeur invalide");}
|
||||
if (etat == 39) {alert("Adresse e-mail de l'expéditeur invalide");}
|
||||
if (etat == 40) {alert("Action impossible sans ville ni code postal");}
|
||||
if (etat == 41) {alert("Mode de livraison invalide");}
|
||||
if (etat == 42) {alert("Montant CRT invalide");}
|
||||
if (etat == 43) {alert("Devise CRT invalide");}
|
||||
if (etat == 44) {alert("Valeur du colis invalide");}
|
||||
if (etat == 45) {alert("Devise de la valeur du colis invalide");}
|
||||
if (etat == 46) {alert("Plage de numéro d'expédition epuisee");}
|
||||
if (etat == 47) {alert("Nombre de colis invalide");}
|
||||
if (etat == 48) {alert("Multi-colis en Point Relais Interdit");}
|
||||
if (etat == 49) {alert("Mode de collecte ou de livraison invalide");}
|
||||
if (etat == 50) {alert("Adresse (L1) du destinataire invalide");}
|
||||
if (etat == 51) {alert("Adresse (L2) du destinataire invalide");}
|
||||
if (etat == 53) {alert("Adresse (L3) du destinataire invalide");}
|
||||
if (etat == 54) {alert("Adresse (L4) du destinataire invalide");}
|
||||
if (etat == 55) {alert("Ville du destinataire invalide");}
|
||||
if (etat == 56) {alert("Code postal du destinataire invalide");}
|
||||
if (etat == 57) {alert("Pays du destinataire invalide");}
|
||||
if (etat == 58) {alert("Numéro de téléphone du destinataire invalide");}
|
||||
if (etat == 59) {alert("Adresse e-mail du destinataire invalide");}
|
||||
if (etat == 60) {alert("Champ texte libre invalide");}
|
||||
if (etat == 61) {alert("Top avisage invalide");}
|
||||
if (etat == 62) {alert("Instruction de livraison invalide");}
|
||||
if (etat == 63) {alert("Assurance invalide ou incorrecte");}
|
||||
if (etat == 64) {alert("Temps de montage invalide");}
|
||||
if (etat == 65) {alert("Top rendez-vous invalide");}
|
||||
if (etat == 66) {alert("Top reprise invalide");}
|
||||
if (etat == 70) {alert("Numéro de Point Relais invalide");}
|
||||
if (etat == 72) {alert("Langue expéditeur invalide");}
|
||||
if (etat == 73) {alert("Langue destinataire invalide");}
|
||||
if (etat == 74) {alert("Langue invalide");}
|
||||
if (etat == 80) {alert("Code tracing : Colis enregistre");}
|
||||
if (etat == 81) {alert("Code tracing : Colis en traitement chez Mondial Relay");}
|
||||
if (etat == 82) {alert("Code tracing : Colis livre");}
|
||||
if (etat == 83) {alert("Code tracing : Anomalie");}
|
||||
if (etat == 84) {alert("84 (Réservé Code Tracing)");}
|
||||
if (etat == 85) {alert("85 (Réservé Code Tracing)");}
|
||||
if (etat == 86) {alert("86 (Réservé Code Tracing)");}
|
||||
if (etat == 87) {alert("87 (Réservé Code Tracing)");}
|
||||
if (etat == 88) {alert("88 (Réservé Code Tracing)");}
|
||||
if (etat == 89) {alert("89 (Réservé Code Tracing)");}
|
||||
if (etat == 90) {alert("AS400 indisponible");}
|
||||
if (etat == 91) {alert("Numéro d'expédition invalide");}
|
||||
if (etat == 93) {alert("Aucun élément retourné par le plan de tri\n\
|
||||
Si vous effectuez une collecte ou une livraison en Point Relais, vérifiez que les\n\
|
||||
Point Relais sont bien disponibles.\n\
|
||||
Si vous effectuez une livraison à domicile, il est probable que le code postal que\n\
|
||||
vous avez indiquez n'existe pas.");}
|
||||
if (etat == 94) {alert("Colis Inexistant");}
|
||||
if (etat == 95) {alert("Compte Enseigne non active");}
|
||||
if (etat == 96) {alert("Type d'enseigne incorrect en Base");}
|
||||
if (etat == 97) {alert("Clé de sécurité invalide");}
|
||||
if (etat == 98) {alert("Service Indisponible");}
|
||||
if (etat == 99) {alert("Erreur générique du service\n\
|
||||
Cette erreur peut être dû autant à un problème technique du service qu'à des\n\
|
||||
données incorrectes ou inexistantes dans la Base de Données. Lorsque vous avez\n\
|
||||
cette erreur veuillez la notifier à Mondial Relay en précisant la date et l'heure de la\n\
|
||||
connexion ainsi que les informations envoyés au WebService afin d'effectuer une\n\
|
||||
vérification.");}
|
||||
}
|
||||
|
||||
|
||||
function getPageScroll_MR()
|
||||
{
|
||||
|
||||
var yScroll;
|
||||
|
||||
if (self.pageYOffset) {
|
||||
yScroll = self.pageYOffset;
|
||||
} else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
|
||||
yScroll = document.documentElement.scrollTop;
|
||||
} else if (document.body) {// all other Explorers
|
||||
yScroll = document.body.scrollTop;
|
||||
}
|
||||
|
||||
arrayPageScroll = new Array('',yScroll)
|
||||
return arrayPageScroll;
|
||||
}
|
||||
|
||||
|
||||
function getPageSize_MR()
|
||||
{
|
||||
|
||||
var xScroll, yScroll;
|
||||
|
||||
if (window.innerHeight && window.scrollMaxY) {
|
||||
xScroll = document.body.scrollWidth;
|
||||
yScroll = window.innerHeight + window.scrollMaxY;
|
||||
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
|
||||
xScroll = document.body.scrollWidth;
|
||||
yScroll = document.body.scrollHeight;
|
||||
} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
|
||||
xScroll = document.body.offsetWidth;
|
||||
yScroll = document.body.offsetHeight;
|
||||
}
|
||||
|
||||
var windowWidth, windowHeight;
|
||||
if (self.innerHeight) { // all except Explorer
|
||||
windowWidth = self.innerWidth;
|
||||
windowHeight = self.innerHeight;
|
||||
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
|
||||
windowWidth = document.documentElement.clientWidth;
|
||||
windowHeight = document.documentElement.clientHeight;
|
||||
} else if (document.body) { // other Explorers
|
||||
windowWidth = document.body.clientWidth;
|
||||
windowHeight = document.body.clientHeight;
|
||||
}
|
||||
|
||||
// for small pages with total height less then height of the viewport
|
||||
if(yScroll < windowHeight){
|
||||
pageHeight = windowHeight;
|
||||
} else {
|
||||
pageHeight = yScroll;
|
||||
}
|
||||
|
||||
// for small pages with total width less then width of the viewport
|
||||
if(xScroll < windowWidth){
|
||||
pageWidth = windowWidth;
|
||||
} else {
|
||||
pageWidth = xScroll;
|
||||
}
|
||||
|
||||
|
||||
arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
|
||||
return arrayPageSize;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
include(dirname(__FILE__).'/../../../config/config.inc.php');
|
||||
include(dirname(__FILE__).'/../../../init.php');
|
||||
include(dirname(__FILE__).'/../mondialrelay.php');
|
||||
|
||||
global $cookie;
|
||||
|
||||
$cart = new Cart($cookie->id_cart);
|
||||
$result_MR = Db::getInstance()->ExecuteS("SELECT * FROM "._DB_PREFIX_."mr_method WHERE id_carrier='".(int)($cart->id_carrier)."' ;");
|
||||
|
||||
Db::getInstance()->delete(_DB_PREFIX_.'mr_selected','id_cart = "'.(int)($cart->id).'"');
|
||||
$mrselected = new MondialRelayClass();
|
||||
$mrselected->id_customer = $cart->id_customer;
|
||||
$mrselected->id_method = $result_MR[0]['id_mr_method'];
|
||||
$mrselected->id_cart = $cart->id;
|
||||
$mrselected->MR_Selected_Num = $_POST['Num'];
|
||||
$mrselected->MR_Selected_LgAdr1 = $_POST['LgAdr1'];
|
||||
$mrselected->MR_Selected_LgAdr2 = $_POST['LgAdr2'];
|
||||
$mrselected->MR_Selected_LgAdr3 = $_POST['LgAdr3'];
|
||||
$mrselected->MR_Selected_LgAdr4 = $_POST['LgAdr4'];
|
||||
$mrselected->MR_Selected_CP = $_POST['CP'];
|
||||
$mrselected->MR_Selected_Ville = $_POST['Ville'];
|
||||
$mrselected->MR_Selected_Pays = $_POST['Pays'];
|
||||
$mrselected->save();
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
<?php
|
||||
|
||||
$statCode = array(
|
||||
'1' => 'Enseigne invalide',
|
||||
'2' => 'Numéro d\'enseigne vide ou inexistant',
|
||||
'3' => 'Numéro de compte enseigne invalide',
|
||||
'5' => 'Numéro de dossier enseigne invalide',
|
||||
'7' => 'Numéro de client enseigne invalide',
|
||||
'9' => 'Nom de ville non reconnu ou non unique',
|
||||
'10' => 'Type de collecte invalide ou incorrect (1/D > Domicile -- 3/R > Relais)',
|
||||
'11' => 'Numéro de Point Relais de collecte invalide',
|
||||
'12' => 'Pays du Point Relais de collecte invalide',
|
||||
'13' => 'Type de livraison invalide ou incorrect (1/D > Domicile -- 3/R > Relais)',
|
||||
'14' => 'Numéro du Point Relais de livraison invalide',
|
||||
'15' => 'Pays du Point Relais de livraison invalide',
|
||||
'16' => 'Code pays invalide',
|
||||
'17' => 'Adresse invalide',
|
||||
'18' => 'Ville invalide',
|
||||
'19' => 'Code postal invalide',
|
||||
'20' => 'Poids du colis invalide',
|
||||
'21' => 'Taille (Longueur + Hauteur) du colis invalide',
|
||||
'22' => 'Taille du Colis invalide',
|
||||
'24' => 'Numéro de Colis Mondial Relay invalide',
|
||||
'29' => 'Mode de livraison invalide',
|
||||
'30' => 'Adresse (L1) de l\'expéditeur invalide',
|
||||
'31' => 'Adresse (L2) de l\'expéditeur invalide',
|
||||
'33' => 'Adresse (L3) de l\'expéditeur invalide',
|
||||
'34' => 'Adresse (L4) de l\'expéditeur invalide',
|
||||
'35' => 'Ville de l\'expéditeur invalide',
|
||||
'36' => 'Code postal de l\'expéditeur invalide',
|
||||
'37' => 'Pays de l\'expéditeur invalide',
|
||||
'38' => 'Numéro de téléphone de l\'expéditeur invalide',
|
||||
'39' => 'Adresse e-mail de l\'expéditeur invalide',
|
||||
'40' => 'Action impossible sans ville ni code postal',
|
||||
'41' => 'Mode de livraison invalide',
|
||||
'42' => 'Montant CRT invalide',
|
||||
'43' => 'Devise CRT invalide',
|
||||
'44' => 'Valeur du colis invalide',
|
||||
'45' => 'Devise de la valeur du colis invalide',
|
||||
'46' => 'Plage de numéro d\'expédition épuisée',
|
||||
'47' => 'Nombre de colis invalide',
|
||||
'48' => 'Multi-colis en Point Relais Interdit',
|
||||
'49' => 'Mode de collecte ou de livraison invalide',
|
||||
'50' => 'Adresse (L1) du destinataire invalide',
|
||||
'51' => 'Adresse (L2) du destinataire invalide',
|
||||
'53' => 'Adresse (L3) du destinataire invalide',
|
||||
'54' => 'Adresse (L4) du destinataire invalide',
|
||||
'55' => 'Ville du destinataire invalide',
|
||||
'56' => 'Code postal du destinataire invalide',
|
||||
'57' => 'Pays du destinataire invalide',
|
||||
'58' => 'Numéro de téléphone du destinataire invalide',
|
||||
'59' => 'Adresse e-mail du destinataire invalide',
|
||||
'60' => 'Champ texte libre invalide',
|
||||
'61' => 'Top avisage invalide',
|
||||
'62' => 'Instruction de livraison invalide',
|
||||
'63' => 'Assurance invalide ou incorrecte',
|
||||
'64' => 'Temps de montage invalide',
|
||||
'65' => 'Top rendez-vous invalide',
|
||||
'66' => 'Top reprise invalide',
|
||||
'70' => 'Numéro de Point Relais invalide',
|
||||
'72' => 'Langue expéditeur invalide',
|
||||
'73' => 'Langue destinataire invalide',
|
||||
'74' => 'Langue invalide',
|
||||
'80' => 'Code tracing : Colis enregistré',
|
||||
'81' => 'Code tracing : Colis en traitement chez Mondial Relay',
|
||||
'82' => 'Code tracing : Colis livré',
|
||||
'83' => 'Code tracing : Anomalie',
|
||||
'90' => 'AS400 indisponible',
|
||||
'91' => 'Numéro d\'expédition invalide',
|
||||
'94' => 'Colis Inexistant',
|
||||
'95' => 'Compte Enseigne non activé',
|
||||
'96' => 'Type d\'enseigne incorrect en Base',
|
||||
'97' => 'Clé de sécurité invalide',
|
||||
'98' => 'Service Indisponible',
|
||||
'99' => 'Erreur générique du service. Cette erreur peut être dû autant à un problème technique du service qu\'à des données incorrectes ou inexistantes dans la Base de Données. Lorsque vous avez cette erreur veuillez la notifier à Mondial Relay en précisant la date et l\'heure de la connexion ainsi que les informations envoyés au WebService afin d\'effectuer une vérification.');
|
||||
|
||||
?>
|
||||
@@ -1,995 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
$Id: class.nusoap_base.php,v 1.56 2010/04/26 20:15:08 snichol Exp $
|
||||
|
||||
NuSOAP - Web Services Toolkit for PHP
|
||||
|
||||
Copyright (c) 2002 NuSphere Corporation
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
The NuSOAP project home is:
|
||||
http://sourceforge.net/projects/nusoap/
|
||||
|
||||
The primary support for NuSOAP is the Help forum on the project home page.
|
||||
|
||||
If you have any questions or comments, please email:
|
||||
|
||||
Dietrich Ayala
|
||||
dietrich@ganx4.com
|
||||
http://dietrich.ganx4.com/nusoap
|
||||
|
||||
NuSphere Corporation
|
||||
http://www.nusphere.com
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* Some of the standards implmented in whole or part by NuSOAP:
|
||||
*
|
||||
* SOAP 1.1 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/)
|
||||
* WSDL 1.1 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315)
|
||||
* SOAP Messages With Attachments (http://www.w3.org/TR/SOAP-attachments)
|
||||
* XML 1.0 (http://www.w3.org/TR/2006/REC-xml-20060816/)
|
||||
* Namespaces in XML 1.0 (http://www.w3.org/TR/2006/REC-xml-names-20060816/)
|
||||
* XML Schema 1.0 (http://www.w3.org/TR/xmlschema-0/)
|
||||
* RFC 2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies
|
||||
* RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1
|
||||
* RFC 2617 HTTP Authentication: Basic and Digest Access Authentication
|
||||
*/
|
||||
|
||||
/* load classes
|
||||
|
||||
// necessary classes
|
||||
require_once('class.soapclient.php');
|
||||
require_once('class.soap_val.php');
|
||||
require_once('class.soap_parser.php');
|
||||
require_once('class.soap_fault.php');
|
||||
|
||||
// transport classes
|
||||
require_once('class.soap_transport_http.php');
|
||||
|
||||
// optional add-on classes
|
||||
require_once('class.xmlschema.php');
|
||||
require_once('class.wsdl.php');
|
||||
|
||||
// server class
|
||||
require_once('class.soap_server.php');*/
|
||||
|
||||
// class variable emulation
|
||||
// cf. http://www.webkreator.com/php/techniques/php-static-class-variables.html
|
||||
$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = 9;
|
||||
|
||||
/**
|
||||
*
|
||||
* nusoap_base
|
||||
*
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @version $Id: class.nusoap_base.php,v 1.56 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_base {
|
||||
/**
|
||||
* Identification for HTTP headers.
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $title = 'NuSOAP';
|
||||
/**
|
||||
* Version for HTTP headers.
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $version = '0.9.5';
|
||||
/**
|
||||
* CVS revision for HTTP headers.
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $revision = '$Revision: 1.56 $';
|
||||
/**
|
||||
* Current error string (manipulated by getError/setError)
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $error_str = '';
|
||||
/**
|
||||
* Current debug string (manipulated by debug/appendDebug/clearDebug/getDebug/getDebugAsXMLComment)
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $debug_str = '';
|
||||
/**
|
||||
* toggles automatic encoding of special characters as entities
|
||||
* (should always be true, I think)
|
||||
*
|
||||
* @var boolean
|
||||
* @access private
|
||||
*/
|
||||
var $charencoding = true;
|
||||
/**
|
||||
* the debug level for this instance
|
||||
*
|
||||
* @var integer
|
||||
* @access private
|
||||
*/
|
||||
var $debugLevel;
|
||||
|
||||
/**
|
||||
* set schema version
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema';
|
||||
|
||||
/**
|
||||
* charset encoding for outgoing messages
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $soap_defencoding = 'ISO-8859-1';
|
||||
//var $soap_defencoding = 'UTF-8';
|
||||
|
||||
/**
|
||||
* namespaces in an array of prefix => uri
|
||||
*
|
||||
* this is "seeded" by a set of constants, but it may be altered by code
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
var $namespaces = array(
|
||||
'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
|
||||
'xsd' => 'http://www.w3.org/2001/XMLSchema',
|
||||
'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
||||
'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/'
|
||||
);
|
||||
|
||||
/**
|
||||
* namespaces used in the current context, e.g. during serialization
|
||||
*
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $usedNamespaces = array();
|
||||
|
||||
/**
|
||||
* XML Schema types in an array of uri => (array of xml type => php type)
|
||||
* is this legacy yet?
|
||||
* no, this is used by the nusoap_xmlschema class to verify type => namespace mappings.
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
var $typemap = array(
|
||||
'http://www.w3.org/2001/XMLSchema' => array(
|
||||
'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
|
||||
'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
|
||||
'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
|
||||
// abstract "any" types
|
||||
'anyType'=>'string','anySimpleType'=>'string',
|
||||
// derived datatypes
|
||||
'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
|
||||
'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
|
||||
'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
|
||||
'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
|
||||
'http://www.w3.org/2000/10/XMLSchema' => array(
|
||||
'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
|
||||
'float'=>'double','dateTime'=>'string',
|
||||
'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
|
||||
'http://www.w3.org/1999/XMLSchema' => array(
|
||||
'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
|
||||
'float'=>'double','dateTime'=>'string',
|
||||
'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
|
||||
'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
|
||||
'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
|
||||
'http://xml.apache.org/xml-soap' => array('Map')
|
||||
);
|
||||
|
||||
/**
|
||||
* XML entities to convert
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
* @deprecated
|
||||
* @see expandEntities
|
||||
*/
|
||||
var $xmlEntities = array('quot' => '"','amp' => '&',
|
||||
'lt' => '<','gt' => '>','apos' => "'");
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function nusoap_base() {
|
||||
$this->debugLevel = $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the global debug level, which applies to future instances
|
||||
*
|
||||
* @return integer Debug level 0-9, where 0 turns off
|
||||
* @access public
|
||||
*/
|
||||
function getGlobalDebugLevel() {
|
||||
return $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the global debug level, which applies to future instances
|
||||
*
|
||||
* @param int $level Debug level 0-9, where 0 turns off
|
||||
* @access public
|
||||
*/
|
||||
function setGlobalDebugLevel($level) {
|
||||
$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = $level;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the debug level for this instance
|
||||
*
|
||||
* @return int Debug level 0-9, where 0 turns off
|
||||
* @access public
|
||||
*/
|
||||
function getDebugLevel() {
|
||||
return $this->debugLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the debug level for this instance
|
||||
*
|
||||
* @param int $level Debug level 0-9, where 0 turns off
|
||||
* @access public
|
||||
*/
|
||||
function setDebugLevel($level) {
|
||||
$this->debugLevel = $level;
|
||||
}
|
||||
|
||||
/**
|
||||
* adds debug data to the instance debug string with formatting
|
||||
*
|
||||
* @param string $string debug data
|
||||
* @access private
|
||||
*/
|
||||
function debug($string){
|
||||
if ($this->debugLevel > 0) {
|
||||
$this->appendDebug($this->getmicrotime().' '.get_class($this).": $string\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* adds debug data to the instance debug string without formatting
|
||||
*
|
||||
* @param string $string debug data
|
||||
* @access public
|
||||
*/
|
||||
function appendDebug($string){
|
||||
if ($this->debugLevel > 0) {
|
||||
// it would be nice to use a memory stream here to use
|
||||
// memory more efficiently
|
||||
$this->debug_str .= $string;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* clears the current debug data for this instance
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function clearDebug() {
|
||||
// it would be nice to use a memory stream here to use
|
||||
// memory more efficiently
|
||||
$this->debug_str = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the current debug data for this instance
|
||||
*
|
||||
* @return debug data
|
||||
* @access public
|
||||
*/
|
||||
function &getDebug() {
|
||||
// it would be nice to use a memory stream here to use
|
||||
// memory more efficiently
|
||||
return $this->debug_str;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the current debug data for this instance as an XML comment
|
||||
* this may change the contents of the debug data
|
||||
*
|
||||
* @return debug data as an XML comment
|
||||
* @access public
|
||||
*/
|
||||
function &getDebugAsXMLComment() {
|
||||
// it would be nice to use a memory stream here to use
|
||||
// memory more efficiently
|
||||
while (strpos($this->debug_str, '--')) {
|
||||
$this->debug_str = str_replace('--', '- -', $this->debug_str);
|
||||
}
|
||||
$ret = "<!--\n" . $this->debug_str . "\n-->";
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* expands entities, e.g. changes '<' to '<'.
|
||||
*
|
||||
* @param string $val The string in which to expand entities.
|
||||
* @access private
|
||||
*/
|
||||
function expandEntities($val) {
|
||||
if ($this->charencoding) {
|
||||
$val = str_replace('&', '&', $val);
|
||||
$val = str_replace("'", ''', $val);
|
||||
$val = str_replace('"', '"', $val);
|
||||
$val = str_replace('<', '<', $val);
|
||||
$val = str_replace('>', '>', $val);
|
||||
}
|
||||
return $val;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns error string if present
|
||||
*
|
||||
* @return mixed error string or false
|
||||
* @access public
|
||||
*/
|
||||
function getError(){
|
||||
if($this->error_str != ''){
|
||||
return $this->error_str;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets error string
|
||||
*
|
||||
* @return boolean $string error string
|
||||
* @access private
|
||||
*/
|
||||
function setError($str){
|
||||
$this->error_str = $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* detect if array is a simple array or a struct (associative array)
|
||||
*
|
||||
* @param mixed $val The PHP array
|
||||
* @return string (arraySimple|arrayStruct)
|
||||
* @access private
|
||||
*/
|
||||
function isArraySimpleOrStruct($val) {
|
||||
$keyList = array_keys($val);
|
||||
foreach ($keyList as $keyListValue) {
|
||||
if (!is_int($keyListValue)) {
|
||||
return 'arrayStruct';
|
||||
}
|
||||
}
|
||||
return 'arraySimple';
|
||||
}
|
||||
|
||||
/**
|
||||
* serializes PHP values in accordance w/ section 5. Type information is
|
||||
* not serialized if $use == 'literal'.
|
||||
*
|
||||
* @param mixed $val The value to serialize
|
||||
* @param string $name The name (local part) of the XML element
|
||||
* @param string $type The XML schema type (local part) for the element
|
||||
* @param string $name_ns The namespace for the name of the XML element
|
||||
* @param string $type_ns The namespace for the type of the element
|
||||
* @param array $attributes The attributes to serialize as name=>value pairs
|
||||
* @param string $use The WSDL "use" (encoded|literal)
|
||||
* @param boolean $soapval Whether this is called from soapval.
|
||||
* @return string The serialized element, possibly with child elements
|
||||
* @access public
|
||||
*/
|
||||
function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded',$soapval=false) {
|
||||
$this->debug("in serialize_val: name=$name, type=$type, name_ns=$name_ns, type_ns=$type_ns, use=$use, soapval=$soapval");
|
||||
$this->appendDebug('value=' . $this->varDump($val));
|
||||
$this->appendDebug('attributes=' . $this->varDump($attributes));
|
||||
|
||||
if (is_object($val) && get_class($val) == 'soapval' && (! $soapval)) {
|
||||
$this->debug("serialize_val: serialize soapval");
|
||||
$xml = $val->serialize($use);
|
||||
$this->appendDebug($val->getDebug());
|
||||
$val->clearDebug();
|
||||
$this->debug("serialize_val of soapval returning $xml");
|
||||
return $xml;
|
||||
}
|
||||
// force valid name if necessary
|
||||
if (is_numeric($name)) {
|
||||
$name = '__numeric_' . $name;
|
||||
} elseif (! $name) {
|
||||
$name = 'noname';
|
||||
}
|
||||
// if name has ns, add ns prefix to name
|
||||
$xmlns = '';
|
||||
if($name_ns){
|
||||
$prefix = 'nu'.rand(1000,9999);
|
||||
$name = $prefix.':'.$name;
|
||||
$xmlns .= " xmlns:$prefix=\"$name_ns\"";
|
||||
}
|
||||
// if type is prefixed, create type prefix
|
||||
if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
|
||||
// need to fix this. shouldn't default to xsd if no ns specified
|
||||
// w/o checking against typemap
|
||||
$type_prefix = 'xsd';
|
||||
} elseif($type_ns){
|
||||
$type_prefix = 'ns'.rand(1000,9999);
|
||||
$xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
|
||||
}
|
||||
// serialize attributes if present
|
||||
$atts = '';
|
||||
if($attributes){
|
||||
foreach($attributes as $k => $v){
|
||||
$atts .= " $k=\"".$this->expandEntities($v).'"';
|
||||
}
|
||||
}
|
||||
// serialize null value
|
||||
if (is_null($val)) {
|
||||
$this->debug("serialize_val: serialize null");
|
||||
if ($use == 'literal') {
|
||||
// TODO: depends on minOccurs
|
||||
$xml = "<$name$xmlns$atts/>";
|
||||
$this->debug("serialize_val returning $xml");
|
||||
return $xml;
|
||||
} else {
|
||||
if (isset($type) && isset($type_prefix)) {
|
||||
$type_str = " xsi:type=\"$type_prefix:$type\"";
|
||||
} else {
|
||||
$type_str = '';
|
||||
}
|
||||
$xml = "<$name$xmlns$type_str$atts xsi:nil=\"true\"/>";
|
||||
$this->debug("serialize_val returning $xml");
|
||||
return $xml;
|
||||
}
|
||||
}
|
||||
// serialize if an xsd built-in primitive type
|
||||
if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){
|
||||
$this->debug("serialize_val: serialize xsd built-in primitive type");
|
||||
if (is_bool($val)) {
|
||||
if ($type == 'boolean') {
|
||||
$val = $val ? 'true' : 'false';
|
||||
} elseif (! $val) {
|
||||
$val = 0;
|
||||
}
|
||||
} else if (is_string($val)) {
|
||||
$val = $this->expandEntities($val);
|
||||
}
|
||||
if ($use == 'literal') {
|
||||
$xml = "<$name$xmlns$atts>$val</$name>";
|
||||
$this->debug("serialize_val returning $xml");
|
||||
return $xml;
|
||||
} else {
|
||||
$xml = "<$name$xmlns xsi:type=\"xsd:$type\"$atts>$val</$name>";
|
||||
$this->debug("serialize_val returning $xml");
|
||||
return $xml;
|
||||
}
|
||||
}
|
||||
// detect type and serialize
|
||||
$xml = '';
|
||||
switch(true) {
|
||||
case (is_bool($val) || $type == 'boolean'):
|
||||
$this->debug("serialize_val: serialize boolean");
|
||||
if ($type == 'boolean') {
|
||||
$val = $val ? 'true' : 'false';
|
||||
} elseif (! $val) {
|
||||
$val = 0;
|
||||
}
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>$val</$name>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>";
|
||||
}
|
||||
break;
|
||||
case (is_int($val) || is_long($val) || $type == 'int'):
|
||||
$this->debug("serialize_val: serialize int");
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>$val</$name>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
|
||||
}
|
||||
break;
|
||||
case (is_float($val)|| is_double($val) || $type == 'float'):
|
||||
$this->debug("serialize_val: serialize float");
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>$val</$name>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>";
|
||||
}
|
||||
break;
|
||||
case (is_string($val) || $type == 'string'):
|
||||
$this->debug("serialize_val: serialize string");
|
||||
$val = $this->expandEntities($val);
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>$val</$name>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>";
|
||||
}
|
||||
break;
|
||||
case is_object($val):
|
||||
$this->debug("serialize_val: serialize object");
|
||||
if (get_class($val) == 'soapval') {
|
||||
$this->debug("serialize_val: serialize soapval object");
|
||||
$pXml = $val->serialize($use);
|
||||
$this->appendDebug($val->getDebug());
|
||||
$val->clearDebug();
|
||||
} else {
|
||||
if (! $name) {
|
||||
$name = get_class($val);
|
||||
$this->debug("In serialize_val, used class name $name as element name");
|
||||
} else {
|
||||
$this->debug("In serialize_val, do not override name $name for element name for class " . get_class($val));
|
||||
}
|
||||
foreach(get_object_vars($val) as $k => $v){
|
||||
$pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
|
||||
}
|
||||
}
|
||||
if(isset($type) && isset($type_prefix)){
|
||||
$type_str = " xsi:type=\"$type_prefix:$type\"";
|
||||
} else {
|
||||
$type_str = '';
|
||||
}
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>$pXml</$name>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns$type_str$atts>$pXml</$name>";
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case (is_array($val) || $type):
|
||||
// detect if struct or array
|
||||
$valueType = $this->isArraySimpleOrStruct($val);
|
||||
if($valueType=='arraySimple' || preg_match('/^ArrayOf/',$type)){
|
||||
$this->debug("serialize_val: serialize array");
|
||||
$i = 0;
|
||||
if(is_array($val) && count($val)> 0){
|
||||
foreach($val as $v){
|
||||
if(is_object($v) && get_class($v) == 'soapval'){
|
||||
$tt_ns = $v->type_ns;
|
||||
$tt = $v->type;
|
||||
} elseif (is_array($v)) {
|
||||
$tt = $this->isArraySimpleOrStruct($v);
|
||||
} else {
|
||||
$tt = gettype($v);
|
||||
}
|
||||
$array_types[$tt] = 1;
|
||||
// TODO: for literal, the name should be $name
|
||||
$xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
|
||||
++$i;
|
||||
}
|
||||
if(count($array_types) > 1){
|
||||
$array_typename = 'xsd:anyType';
|
||||
} elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
|
||||
if ($tt == 'integer') {
|
||||
$tt = 'int';
|
||||
}
|
||||
$array_typename = 'xsd:'.$tt;
|
||||
} elseif(isset($tt) && $tt == 'arraySimple'){
|
||||
$array_typename = 'SOAP-ENC:Array';
|
||||
} elseif(isset($tt) && $tt == 'arrayStruct'){
|
||||
$array_typename = 'unnamed_struct_use_soapval';
|
||||
} else {
|
||||
// if type is prefixed, create type prefix
|
||||
if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){
|
||||
$array_typename = 'xsd:' . $tt;
|
||||
} elseif ($tt_ns) {
|
||||
$tt_prefix = 'ns' . rand(1000, 9999);
|
||||
$array_typename = "$tt_prefix:$tt";
|
||||
$xmlns .= " xmlns:$tt_prefix=\"$tt_ns\"";
|
||||
} else {
|
||||
$array_typename = $tt;
|
||||
}
|
||||
}
|
||||
$array_type = $i;
|
||||
if ($use == 'literal') {
|
||||
$type_str = '';
|
||||
} else if (isset($type) && isset($type_prefix)) {
|
||||
$type_str = " xsi:type=\"$type_prefix:$type\"";
|
||||
} else {
|
||||
$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\"";
|
||||
}
|
||||
// empty array
|
||||
} else {
|
||||
if ($use == 'literal') {
|
||||
$type_str = '';
|
||||
} else if (isset($type) && isset($type_prefix)) {
|
||||
$type_str = " xsi:type=\"$type_prefix:$type\"";
|
||||
} else {
|
||||
$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:anyType[0]\"";
|
||||
}
|
||||
}
|
||||
// TODO: for array in literal, there is no wrapper here
|
||||
$xml = "<$name$xmlns$type_str$atts>".$xml."</$name>";
|
||||
} else {
|
||||
// got a struct
|
||||
$this->debug("serialize_val: serialize struct");
|
||||
if(isset($type) && isset($type_prefix)){
|
||||
$type_str = " xsi:type=\"$type_prefix:$type\"";
|
||||
} else {
|
||||
$type_str = '';
|
||||
}
|
||||
if ($use == 'literal') {
|
||||
$xml .= "<$name$xmlns$atts>";
|
||||
} else {
|
||||
$xml .= "<$name$xmlns$type_str$atts>";
|
||||
}
|
||||
foreach($val as $k => $v){
|
||||
// Apache Map
|
||||
if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') {
|
||||
$xml .= '<item>';
|
||||
$xml .= $this->serialize_val($k,'key',false,false,false,false,$use);
|
||||
$xml .= $this->serialize_val($v,'value',false,false,false,false,$use);
|
||||
$xml .= '</item>';
|
||||
} else {
|
||||
$xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
|
||||
}
|
||||
}
|
||||
$xml .= "</$name>";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->debug("serialize_val: serialize unknown");
|
||||
$xml .= 'not detected, got '.gettype($val).' for '.$val;
|
||||
break;
|
||||
}
|
||||
$this->debug("serialize_val returning $xml");
|
||||
return $xml;
|
||||
}
|
||||
|
||||
/**
|
||||
* serializes a message
|
||||
*
|
||||
* @param string $body the XML of the SOAP body
|
||||
* @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
|
||||
* @param array $namespaces optional the namespaces used in generating the body and headers
|
||||
* @param string $style optional (rpc|document)
|
||||
* @param string $use optional (encoded|literal)
|
||||
* @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
|
||||
* @return string the message
|
||||
* @access public
|
||||
*/
|
||||
function serializeEnvelope($body,$headers=false,$namespaces=array(),$style='rpc',$use='encoded',$encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'){
|
||||
// TODO: add an option to automatically run utf8_encode on $body and $headers
|
||||
// if $this->soap_defencoding is UTF-8. Not doing this automatically allows
|
||||
// one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1
|
||||
|
||||
$this->debug("In serializeEnvelope length=" . strlen($body) . " body (max 1000 characters)=" . substr($body, 0, 1000) . " style=$style use=$use encodingStyle=$encodingStyle");
|
||||
$this->debug("headers:");
|
||||
$this->appendDebug($this->varDump($headers));
|
||||
$this->debug("namespaces:");
|
||||
$this->appendDebug($this->varDump($namespaces));
|
||||
|
||||
// serialize namespaces
|
||||
$ns_string = '';
|
||||
foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
|
||||
$ns_string .= " xmlns:$k=\"$v\"";
|
||||
}
|
||||
if($encodingStyle) {
|
||||
$ns_string = " SOAP-ENV:encodingStyle=\"$encodingStyle\"$ns_string";
|
||||
}
|
||||
|
||||
// serialize headers
|
||||
if($headers){
|
||||
if (is_array($headers)) {
|
||||
$xml = '';
|
||||
foreach ($headers as $k => $v) {
|
||||
if (is_object($v) && get_class($v) == 'soapval') {
|
||||
$xml .= $this->serialize_val($v, false, false, false, false, false, $use);
|
||||
} else {
|
||||
$xml .= $this->serialize_val($v, $k, false, false, false, false, $use);
|
||||
}
|
||||
}
|
||||
$headers = $xml;
|
||||
$this->debug("In serializeEnvelope, serialized array of headers to $headers");
|
||||
}
|
||||
$headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>";
|
||||
}
|
||||
// serialize envelope
|
||||
return
|
||||
'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
|
||||
'<SOAP-ENV:Envelope'.$ns_string.">".
|
||||
$headers.
|
||||
"<SOAP-ENV:Body>".
|
||||
$body.
|
||||
"</SOAP-ENV:Body>".
|
||||
"</SOAP-ENV:Envelope>";
|
||||
}
|
||||
|
||||
/**
|
||||
* formats a string to be inserted into an HTML stream
|
||||
*
|
||||
* @param string $str The string to format
|
||||
* @return string The formatted string
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function formatDump($str){
|
||||
$str = htmlspecialchars($str);
|
||||
return nl2br($str);
|
||||
}
|
||||
|
||||
/**
|
||||
* contracts (changes namespace to prefix) a qualified name
|
||||
*
|
||||
* @param string $qname qname
|
||||
* @return string contracted qname
|
||||
* @access private
|
||||
*/
|
||||
function contractQname($qname){
|
||||
// get element namespace
|
||||
//$this->xdebug("Contract $qname");
|
||||
if (strrpos($qname, ':')) {
|
||||
// get unqualified name
|
||||
$name = substr($qname, strrpos($qname, ':') + 1);
|
||||
// get ns
|
||||
$ns = substr($qname, 0, strrpos($qname, ':'));
|
||||
$p = $this->getPrefixFromNamespace($ns);
|
||||
if ($p) {
|
||||
return $p . ':' . $name;
|
||||
}
|
||||
return $qname;
|
||||
} else {
|
||||
return $qname;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* expands (changes prefix to namespace) a qualified name
|
||||
*
|
||||
* @param string $qname qname
|
||||
* @return string expanded qname
|
||||
* @access private
|
||||
*/
|
||||
function expandQname($qname){
|
||||
// get element prefix
|
||||
if(strpos($qname,':') && !preg_match('/^http:\/\//',$qname)){
|
||||
// get unqualified name
|
||||
$name = substr(strstr($qname,':'),1);
|
||||
// get ns prefix
|
||||
$prefix = substr($qname,0,strpos($qname,':'));
|
||||
if(isset($this->namespaces[$prefix])){
|
||||
return $this->namespaces[$prefix].':'.$name;
|
||||
} else {
|
||||
return $qname;
|
||||
}
|
||||
} else {
|
||||
return $qname;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the local part of a prefixed string
|
||||
* returns the original string, if not prefixed
|
||||
*
|
||||
* @param string $str The prefixed string
|
||||
* @return string The local part
|
||||
* @access public
|
||||
*/
|
||||
function getLocalPart($str){
|
||||
if($sstr = strrchr($str,':')){
|
||||
// get unqualified name
|
||||
return substr( $sstr, 1 );
|
||||
} else {
|
||||
return $str;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the prefix part of a prefixed string
|
||||
* returns false, if not prefixed
|
||||
*
|
||||
* @param string $str The prefixed string
|
||||
* @return mixed The prefix or false if there is no prefix
|
||||
* @access public
|
||||
*/
|
||||
function getPrefix($str){
|
||||
if($pos = strrpos($str,':')){
|
||||
// get prefix
|
||||
return substr($str,0,$pos);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* pass it a prefix, it returns a namespace
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @return mixed The namespace, false if no namespace has the specified prefix
|
||||
* @access public
|
||||
*/
|
||||
function getNamespaceFromPrefix($prefix){
|
||||
if (isset($this->namespaces[$prefix])) {
|
||||
return $this->namespaces[$prefix];
|
||||
}
|
||||
//$this->setError("No namespace registered for prefix '$prefix'");
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the prefix for a given namespace (or prefix)
|
||||
* or false if no prefixes registered for the given namespace
|
||||
*
|
||||
* @param string $ns The namespace
|
||||
* @return mixed The prefix, false if the namespace has no prefixes
|
||||
* @access public
|
||||
*/
|
||||
function getPrefixFromNamespace($ns) {
|
||||
foreach ($this->namespaces as $p => $n) {
|
||||
if ($ns == $n || $ns == $p) {
|
||||
$this->usedNamespaces[$p] = $n;
|
||||
return $p;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the time in ODBC canonical form with microseconds
|
||||
*
|
||||
* @return string The time in ODBC canonical form with microseconds
|
||||
* @access public
|
||||
*/
|
||||
function getmicrotime() {
|
||||
if (function_exists('gettimeofday')) {
|
||||
$tod = gettimeofday();
|
||||
$sec = $tod['sec'];
|
||||
$usec = $tod['usec'];
|
||||
} else {
|
||||
$sec = time();
|
||||
$usec = 0;
|
||||
}
|
||||
return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string with the output of var_dump
|
||||
*
|
||||
* @param mixed $data The variable to var_dump
|
||||
* @return string The output of var_dump
|
||||
* @access public
|
||||
*/
|
||||
function varDump($data) {
|
||||
ob_start();
|
||||
var_dump($data);
|
||||
$ret_val = ob_get_contents();
|
||||
ob_end_clean();
|
||||
return $ret_val;
|
||||
}
|
||||
|
||||
/**
|
||||
* represents the object as a string
|
||||
*
|
||||
* @return string
|
||||
* @access public
|
||||
*/
|
||||
function __toString() {
|
||||
return $this->varDump($this);
|
||||
}
|
||||
}
|
||||
|
||||
// XML Schema Datatype Helper Functions
|
||||
|
||||
//xsd:dateTime helpers
|
||||
|
||||
/**
|
||||
* convert unix timestamp to ISO 8601 compliant date string
|
||||
*
|
||||
* @param int $timestamp Unix time stamp
|
||||
* @param boolean $utc Whether the time stamp is UTC or local
|
||||
* @return mixed ISO 8601 date string or false
|
||||
* @access public
|
||||
*/
|
||||
function timestamp_to_iso8601($timestamp,$utc=true){
|
||||
$datestr = date('Y-m-d\TH:i:sO',$timestamp);
|
||||
$pos = strrpos($datestr, "+");
|
||||
if ($pos === FALSE) {
|
||||
$pos = strrpos($datestr, "-");
|
||||
}
|
||||
if ($pos !== FALSE) {
|
||||
if (strlen($datestr) == $pos + 5) {
|
||||
$datestr = substr($datestr, 0, $pos + 3) . ':' . substr($datestr, -2);
|
||||
}
|
||||
}
|
||||
if($utc){
|
||||
$pattern = '/'.
|
||||
'([0-9]{4})-'. // centuries & years CCYY-
|
||||
'([0-9]{2})-'. // months MM-
|
||||
'([0-9]{2})'. // days DD
|
||||
'T'. // separator T
|
||||
'([0-9]{2}):'. // hours hh:
|
||||
'([0-9]{2}):'. // minutes mm:
|
||||
'([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
|
||||
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
|
||||
'/';
|
||||
|
||||
if(preg_match($pattern,$datestr,$regs)){
|
||||
return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return $datestr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* convert ISO 8601 compliant date string to unix timestamp
|
||||
*
|
||||
* @param string $datestr ISO 8601 compliant date string
|
||||
* @return mixed Unix timestamp (int) or false
|
||||
* @access public
|
||||
*/
|
||||
function iso8601_to_timestamp($datestr){
|
||||
$pattern = '/'.
|
||||
'([0-9]{4})-'. // centuries & years CCYY-
|
||||
'([0-9]{2})-'. // months MM-
|
||||
'([0-9]{2})'. // days DD
|
||||
'T'. // separator T
|
||||
'([0-9]{2}):'. // hours hh:
|
||||
'([0-9]{2}):'. // minutes mm:
|
||||
'([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
|
||||
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
|
||||
'/';
|
||||
if(preg_match($pattern,$datestr,$regs)){
|
||||
// not utc
|
||||
if($regs[8] != 'Z'){
|
||||
$op = substr($regs[8],0,1);
|
||||
$h = substr($regs[8],1,2);
|
||||
$m = substr($regs[8],strlen($regs[8])-2,2);
|
||||
if($op == '-'){
|
||||
$regs[4] = $regs[4] + $h;
|
||||
$regs[5] = $regs[5] + $m;
|
||||
} elseif($op == '+'){
|
||||
$regs[4] = $regs[4] - $h;
|
||||
$regs[5] = $regs[5] - $m;
|
||||
}
|
||||
}
|
||||
return gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
|
||||
// return strtotime("$regs[1]-$regs[2]-$regs[3] $regs[4]:$regs[5]:$regs[6]Z");
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* sleeps some number of microseconds
|
||||
*
|
||||
* @param string $usec the number of microseconds to sleep
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function usleepWindows($usec)
|
||||
{
|
||||
$start = gettimeofday();
|
||||
|
||||
do
|
||||
{
|
||||
$stop = gettimeofday();
|
||||
$timePassed = 1000000 * ($stop['sec'] - $start['sec'])
|
||||
+ $stop['usec'] - $start['usec'];
|
||||
}
|
||||
while ($timePassed < $usec);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Contains information for a SOAP fault.
|
||||
* Mainly used for returning faults from deployed functions
|
||||
* in a server instance.
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @version $Id: class.soap_fault.php,v 1.14 2007/04/11 15:49:47 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_fault extends nusoap_base {
|
||||
/**
|
||||
* The fault code (client|server)
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $faultcode;
|
||||
/**
|
||||
* The fault actor
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $faultactor;
|
||||
/**
|
||||
* The fault string, a description of the fault
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $faultstring;
|
||||
/**
|
||||
* The fault detail, typically a string or array of string
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $faultdetail;
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $faultcode (SOAP-ENV:Client | SOAP-ENV:Server)
|
||||
* @param string $faultactor only used when msg routed between multiple actors
|
||||
* @param string $faultstring human readable error message
|
||||
* @param mixed $faultdetail detail, typically a string or array of string
|
||||
*/
|
||||
function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
|
||||
parent::nusoap_base();
|
||||
$this->faultcode = $faultcode;
|
||||
$this->faultactor = $faultactor;
|
||||
$this->faultstring = $faultstring;
|
||||
$this->faultdetail = $faultdetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* serialize a fault
|
||||
*
|
||||
* @return string The serialization of the fault instance.
|
||||
* @access public
|
||||
*/
|
||||
function serialize(){
|
||||
$ns_string = '';
|
||||
foreach($this->namespaces as $k => $v){
|
||||
$ns_string .= "\n xmlns:$k=\"$v\"";
|
||||
}
|
||||
$return_msg =
|
||||
'<?xml version="1.0" encoding="'.$this->soap_defencoding.'"?>'.
|
||||
'<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"'.$ns_string.">\n".
|
||||
'<SOAP-ENV:Body>'.
|
||||
'<SOAP-ENV:Fault>'.
|
||||
$this->serialize_val($this->faultcode, 'faultcode').
|
||||
$this->serialize_val($this->faultactor, 'faultactor').
|
||||
$this->serialize_val($this->faultstring, 'faultstring').
|
||||
$this->serialize_val($this->faultdetail, 'detail').
|
||||
'</SOAP-ENV:Fault>'.
|
||||
'</SOAP-ENV:Body>'.
|
||||
'</SOAP-ENV:Envelope>';
|
||||
return $return_msg;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Backward compatibility
|
||||
*/
|
||||
class soap_fault extends nusoap_fault {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,642 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* nusoap_parser class parses SOAP XML messages into native PHP values
|
||||
*
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @version $Id: class.soap_parser.php,v 1.42 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_parser extends nusoap_base {
|
||||
|
||||
var $xml = '';
|
||||
var $xml_encoding = '';
|
||||
var $method = '';
|
||||
var $root_struct = '';
|
||||
var $root_struct_name = '';
|
||||
var $root_struct_namespace = '';
|
||||
var $root_header = '';
|
||||
var $document = ''; // incoming SOAP body (text)
|
||||
// determines where in the message we are (envelope,header,body,method)
|
||||
var $status = '';
|
||||
var $position = 0;
|
||||
var $depth = 0;
|
||||
var $default_namespace = '';
|
||||
var $namespaces = array();
|
||||
var $message = array();
|
||||
var $parent = '';
|
||||
var $fault = false;
|
||||
var $fault_code = '';
|
||||
var $fault_str = '';
|
||||
var $fault_detail = '';
|
||||
var $depth_array = array();
|
||||
var $debug_flag = true;
|
||||
var $soapresponse = NULL; // parsed SOAP Body
|
||||
var $soapheader = NULL; // parsed SOAP Header
|
||||
var $responseHeaders = ''; // incoming SOAP headers (text)
|
||||
var $body_position = 0;
|
||||
// for multiref parsing:
|
||||
// array of id => pos
|
||||
var $ids = array();
|
||||
// array of id => hrefs => pos
|
||||
var $multirefs = array();
|
||||
// toggle for auto-decoding element content
|
||||
var $decode_utf8 = true;
|
||||
|
||||
/**
|
||||
* constructor that actually does the parsing
|
||||
*
|
||||
* @param string $xml SOAP message
|
||||
* @param string $encoding character encoding scheme of message
|
||||
* @param string $method method for which XML is parsed (unused?)
|
||||
* @param string $decode_utf8 whether to decode UTF-8 to ISO-8859-1
|
||||
* @access public
|
||||
*/
|
||||
function nusoap_parser($xml,$encoding='UTF-8',$method='',$decode_utf8=true){
|
||||
parent::nusoap_base();
|
||||
$this->xml = $xml;
|
||||
$this->xml_encoding = $encoding;
|
||||
$this->method = $method;
|
||||
$this->decode_utf8 = $decode_utf8;
|
||||
|
||||
// Check whether content has been read.
|
||||
if(!empty($xml)){
|
||||
// Check XML encoding
|
||||
$pos_xml = strpos($xml, '<?xml');
|
||||
if ($pos_xml !== FALSE) {
|
||||
$xml_decl = substr($xml, $pos_xml, strpos($xml, '?>', $pos_xml + 2) - $pos_xml + 1);
|
||||
if (preg_match("/encoding=[\"']([^\"']*)[\"']/", $xml_decl, $res)) {
|
||||
$xml_encoding = $res[1];
|
||||
if (strtoupper($xml_encoding) != $encoding) {
|
||||
$err = "Charset from HTTP Content-Type '" . $encoding . "' does not match encoding from XML declaration '" . $xml_encoding . "'";
|
||||
$this->debug($err);
|
||||
if ($encoding != 'ISO-8859-1' || strtoupper($xml_encoding) != 'UTF-8') {
|
||||
$this->setError($err);
|
||||
return;
|
||||
}
|
||||
// when HTTP says ISO-8859-1 (the default) and XML says UTF-8 (the typical), assume the other endpoint is just sloppy and proceed
|
||||
} else {
|
||||
$this->debug('Charset from HTTP Content-Type matches encoding from XML declaration');
|
||||
}
|
||||
} else {
|
||||
$this->debug('No encoding specified in XML declaration');
|
||||
}
|
||||
} else {
|
||||
$this->debug('No XML declaration');
|
||||
}
|
||||
$this->debug('Entering nusoap_parser(), length='.strlen($xml).', encoding='.$encoding);
|
||||
// Create an XML parser - why not xml_parser_create_ns?
|
||||
$this->parser = xml_parser_create($this->xml_encoding);
|
||||
// Set the options for parsing the XML data.
|
||||
//xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
|
||||
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
|
||||
xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, $this->xml_encoding);
|
||||
// Set the object for the parser.
|
||||
xml_set_object($this->parser, $this);
|
||||
// Set the element handlers for the parser.
|
||||
xml_set_element_handler($this->parser, 'start_element','end_element');
|
||||
xml_set_character_data_handler($this->parser,'character_data');
|
||||
|
||||
// Parse the XML file.
|
||||
if(!xml_parse($this->parser,$xml,true)){
|
||||
// Display an error message.
|
||||
$err = sprintf('XML error parsing SOAP payload on line %d: %s',
|
||||
xml_get_current_line_number($this->parser),
|
||||
xml_error_string(xml_get_error_code($this->parser)));
|
||||
$this->debug($err);
|
||||
$this->debug("XML payload:\n" . $xml);
|
||||
$this->setError($err);
|
||||
} else {
|
||||
$this->debug('in nusoap_parser ctor, message:');
|
||||
$this->appendDebug($this->varDump($this->message));
|
||||
$this->debug('parsed successfully, found root struct: '.$this->root_struct.' of name '.$this->root_struct_name);
|
||||
// get final value
|
||||
$this->soapresponse = $this->message[$this->root_struct]['result'];
|
||||
// get header value
|
||||
if($this->root_header != '' && isset($this->message[$this->root_header]['result'])){
|
||||
$this->soapheader = $this->message[$this->root_header]['result'];
|
||||
}
|
||||
// resolve hrefs/ids
|
||||
if(sizeof($this->multirefs) > 0){
|
||||
foreach($this->multirefs as $id => $hrefs){
|
||||
$this->debug('resolving multirefs for id: '.$id);
|
||||
$idVal = $this->buildVal($this->ids[$id]);
|
||||
if (is_array($idVal) && isset($idVal['!id'])) {
|
||||
unset($idVal['!id']);
|
||||
}
|
||||
foreach($hrefs as $refPos => $ref){
|
||||
$this->debug('resolving href at pos '.$refPos);
|
||||
$this->multirefs[$id][$refPos] = $idVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
xml_parser_free($this->parser);
|
||||
} else {
|
||||
$this->debug('xml was empty, didn\'t parse!');
|
||||
$this->setError('xml was empty, didn\'t parse!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* start-element handler
|
||||
*
|
||||
* @param resource $parser XML parser object
|
||||
* @param string $name element name
|
||||
* @param array $attrs associative array of attributes
|
||||
* @access private
|
||||
*/
|
||||
function start_element($parser, $name, $attrs) {
|
||||
// position in a total number of elements, starting from 0
|
||||
// update class level pos
|
||||
$pos = $this->position++;
|
||||
// and set mine
|
||||
$this->message[$pos] = array('pos' => $pos,'children'=>'','cdata'=>'');
|
||||
// depth = how many levels removed from root?
|
||||
// set mine as current global depth and increment global depth value
|
||||
$this->message[$pos]['depth'] = $this->depth++;
|
||||
|
||||
// else add self as child to whoever the current parent is
|
||||
if($pos != 0){
|
||||
$this->message[$this->parent]['children'] .= '|'.$pos;
|
||||
}
|
||||
// set my parent
|
||||
$this->message[$pos]['parent'] = $this->parent;
|
||||
// set self as current parent
|
||||
$this->parent = $pos;
|
||||
// set self as current value for this depth
|
||||
$this->depth_array[$this->depth] = $pos;
|
||||
// get element prefix
|
||||
if(strpos($name,':')){
|
||||
// get ns prefix
|
||||
$prefix = substr($name,0,strpos($name,':'));
|
||||
// get unqualified name
|
||||
$name = substr(strstr($name,':'),1);
|
||||
}
|
||||
// set status
|
||||
if ($name == 'Envelope' && $this->status == '') {
|
||||
$this->status = 'envelope';
|
||||
} elseif ($name == 'Header' && $this->status == 'envelope') {
|
||||
$this->root_header = $pos;
|
||||
$this->status = 'header';
|
||||
} elseif ($name == 'Body' && $this->status == 'envelope'){
|
||||
$this->status = 'body';
|
||||
$this->body_position = $pos;
|
||||
// set method
|
||||
} elseif($this->status == 'body' && $pos == ($this->body_position+1)) {
|
||||
$this->status = 'method';
|
||||
$this->root_struct_name = $name;
|
||||
$this->root_struct = $pos;
|
||||
$this->message[$pos]['type'] = 'struct';
|
||||
$this->debug("found root struct $this->root_struct_name, pos $this->root_struct");
|
||||
}
|
||||
// set my status
|
||||
$this->message[$pos]['status'] = $this->status;
|
||||
// set name
|
||||
$this->message[$pos]['name'] = htmlspecialchars($name);
|
||||
// set attrs
|
||||
$this->message[$pos]['attrs'] = $attrs;
|
||||
|
||||
// loop through atts, logging ns and type declarations
|
||||
$attstr = '';
|
||||
foreach($attrs as $key => $value){
|
||||
$key_prefix = $this->getPrefix($key);
|
||||
$key_localpart = $this->getLocalPart($key);
|
||||
// if ns declarations, add to class level array of valid namespaces
|
||||
if($key_prefix == 'xmlns'){
|
||||
if(preg_match('/^http:\/\/www.w3.org\/[0-9]{4}\/XMLSchema$/',$value)){
|
||||
$this->XMLSchemaVersion = $value;
|
||||
$this->namespaces['xsd'] = $this->XMLSchemaVersion;
|
||||
$this->namespaces['xsi'] = $this->XMLSchemaVersion.'-instance';
|
||||
}
|
||||
$this->namespaces[$key_localpart] = $value;
|
||||
// set method namespace
|
||||
if($name == $this->root_struct_name){
|
||||
$this->methodNamespace = $value;
|
||||
}
|
||||
// if it's a type declaration, set type
|
||||
} elseif($key_localpart == 'type'){
|
||||
if (isset($this->message[$pos]['type']) && $this->message[$pos]['type'] == 'array') {
|
||||
// do nothing: already processed arrayType
|
||||
} else {
|
||||
$value_prefix = $this->getPrefix($value);
|
||||
$value_localpart = $this->getLocalPart($value);
|
||||
$this->message[$pos]['type'] = $value_localpart;
|
||||
$this->message[$pos]['typePrefix'] = $value_prefix;
|
||||
if(isset($this->namespaces[$value_prefix])){
|
||||
$this->message[$pos]['type_namespace'] = $this->namespaces[$value_prefix];
|
||||
} else if(isset($attrs['xmlns:'.$value_prefix])) {
|
||||
$this->message[$pos]['type_namespace'] = $attrs['xmlns:'.$value_prefix];
|
||||
}
|
||||
// should do something here with the namespace of specified type?
|
||||
}
|
||||
} elseif($key_localpart == 'arrayType'){
|
||||
$this->message[$pos]['type'] = 'array';
|
||||
/* do arrayType ereg here
|
||||
[1] arrayTypeValue ::= atype asize
|
||||
[2] atype ::= QName rank*
|
||||
[3] rank ::= '[' (',')* ']'
|
||||
[4] asize ::= '[' length~ ']'
|
||||
[5] length ::= nextDimension* Digit+
|
||||
[6] nextDimension ::= Digit+ ','
|
||||
*/
|
||||
$expr = '/([A-Za-z0-9_]+):([A-Za-z]+[A-Za-z0-9_]+)\[([0-9]+),?([0-9]*)\]/';
|
||||
if(preg_match($expr,$value,$regs)){
|
||||
$this->message[$pos]['typePrefix'] = $regs[1];
|
||||
$this->message[$pos]['arrayTypePrefix'] = $regs[1];
|
||||
if (isset($this->namespaces[$regs[1]])) {
|
||||
$this->message[$pos]['arrayTypeNamespace'] = $this->namespaces[$regs[1]];
|
||||
} else if (isset($attrs['xmlns:'.$regs[1]])) {
|
||||
$this->message[$pos]['arrayTypeNamespace'] = $attrs['xmlns:'.$regs[1]];
|
||||
}
|
||||
$this->message[$pos]['arrayType'] = $regs[2];
|
||||
$this->message[$pos]['arraySize'] = $regs[3];
|
||||
$this->message[$pos]['arrayCols'] = $regs[4];
|
||||
}
|
||||
// specifies nil value (or not)
|
||||
} elseif ($key_localpart == 'nil'){
|
||||
$this->message[$pos]['nil'] = ($value == 'true' || $value == '1');
|
||||
// some other attribute
|
||||
} elseif ($key != 'href' && $key != 'xmlns' && $key_localpart != 'encodingStyle' && $key_localpart != 'root') {
|
||||
$this->message[$pos]['xattrs']['!' . $key] = $value;
|
||||
}
|
||||
|
||||
if ($key == 'xmlns') {
|
||||
$this->default_namespace = $value;
|
||||
}
|
||||
// log id
|
||||
if($key == 'id'){
|
||||
$this->ids[$value] = $pos;
|
||||
}
|
||||
// root
|
||||
if($key_localpart == 'root' && $value == 1){
|
||||
$this->status = 'method';
|
||||
$this->root_struct_name = $name;
|
||||
$this->root_struct = $pos;
|
||||
$this->debug("found root struct $this->root_struct_name, pos $pos");
|
||||
}
|
||||
// for doclit
|
||||
$attstr .= " $key=\"$value\"";
|
||||
}
|
||||
// get namespace - must be done after namespace atts are processed
|
||||
if(isset($prefix)){
|
||||
$this->message[$pos]['namespace'] = $this->namespaces[$prefix];
|
||||
$this->default_namespace = $this->namespaces[$prefix];
|
||||
} else {
|
||||
$this->message[$pos]['namespace'] = $this->default_namespace;
|
||||
}
|
||||
if($this->status == 'header'){
|
||||
if ($this->root_header != $pos) {
|
||||
$this->responseHeaders .= "<" . (isset($prefix) ? $prefix . ':' : '') . "$name$attstr>";
|
||||
}
|
||||
} elseif($this->root_struct_name != ''){
|
||||
$this->document .= "<" . (isset($prefix) ? $prefix . ':' : '') . "$name$attstr>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* end-element handler
|
||||
*
|
||||
* @param resource $parser XML parser object
|
||||
* @param string $name element name
|
||||
* @access private
|
||||
*/
|
||||
function end_element($parser, $name) {
|
||||
// position of current element is equal to the last value left in depth_array for my depth
|
||||
$pos = $this->depth_array[$this->depth--];
|
||||
|
||||
// get element prefix
|
||||
if(strpos($name,':')){
|
||||
// get ns prefix
|
||||
$prefix = substr($name,0,strpos($name,':'));
|
||||
// get unqualified name
|
||||
$name = substr(strstr($name,':'),1);
|
||||
}
|
||||
|
||||
// build to native type
|
||||
if(isset($this->body_position) && $pos > $this->body_position){
|
||||
// deal w/ multirefs
|
||||
if(isset($this->message[$pos]['attrs']['href'])){
|
||||
// get id
|
||||
$id = substr($this->message[$pos]['attrs']['href'],1);
|
||||
// add placeholder to href array
|
||||
$this->multirefs[$id][$pos] = 'placeholder';
|
||||
// add set a reference to it as the result value
|
||||
$this->message[$pos]['result'] =& $this->multirefs[$id][$pos];
|
||||
// build complexType values
|
||||
} elseif($this->message[$pos]['children'] != ''){
|
||||
// if result has already been generated (struct/array)
|
||||
if(!isset($this->message[$pos]['result'])){
|
||||
$this->message[$pos]['result'] = $this->buildVal($pos);
|
||||
}
|
||||
// build complexType values of attributes and possibly simpleContent
|
||||
} elseif (isset($this->message[$pos]['xattrs'])) {
|
||||
if (isset($this->message[$pos]['nil']) && $this->message[$pos]['nil']) {
|
||||
$this->message[$pos]['xattrs']['!'] = null;
|
||||
} elseif (isset($this->message[$pos]['cdata']) && trim($this->message[$pos]['cdata']) != '') {
|
||||
if (isset($this->message[$pos]['type'])) {
|
||||
$this->message[$pos]['xattrs']['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
|
||||
} else {
|
||||
$parent = $this->message[$pos]['parent'];
|
||||
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
|
||||
$this->message[$pos]['xattrs']['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
|
||||
} else {
|
||||
$this->message[$pos]['xattrs']['!'] = $this->message[$pos]['cdata'];
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->message[$pos]['result'] = $this->message[$pos]['xattrs'];
|
||||
// set value of simpleType (or nil complexType)
|
||||
} else {
|
||||
//$this->debug('adding data for scalar value '.$this->message[$pos]['name'].' of value '.$this->message[$pos]['cdata']);
|
||||
if (isset($this->message[$pos]['nil']) && $this->message[$pos]['nil']) {
|
||||
$this->message[$pos]['xattrs']['!'] = null;
|
||||
} elseif (isset($this->message[$pos]['type'])) {
|
||||
$this->message[$pos]['result'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
|
||||
} else {
|
||||
$parent = $this->message[$pos]['parent'];
|
||||
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
|
||||
$this->message[$pos]['result'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
|
||||
} else {
|
||||
$this->message[$pos]['result'] = $this->message[$pos]['cdata'];
|
||||
}
|
||||
}
|
||||
|
||||
/* add value to parent's result, if parent is struct/array
|
||||
$parent = $this->message[$pos]['parent'];
|
||||
if($this->message[$parent]['type'] != 'map'){
|
||||
if(strtolower($this->message[$parent]['type']) == 'array'){
|
||||
$this->message[$parent]['result'][] = $this->message[$pos]['result'];
|
||||
} else {
|
||||
$this->message[$parent]['result'][$this->message[$pos]['name']] = $this->message[$pos]['result'];
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
// for doclit
|
||||
if($this->status == 'header'){
|
||||
if ($this->root_header != $pos) {
|
||||
$this->responseHeaders .= "</" . (isset($prefix) ? $prefix . ':' : '') . "$name>";
|
||||
}
|
||||
} elseif($pos >= $this->root_struct){
|
||||
$this->document .= "</" . (isset($prefix) ? $prefix . ':' : '') . "$name>";
|
||||
}
|
||||
// switch status
|
||||
if ($pos == $this->root_struct){
|
||||
$this->status = 'body';
|
||||
$this->root_struct_namespace = $this->message[$pos]['namespace'];
|
||||
} elseif ($pos == $this->root_header) {
|
||||
$this->status = 'envelope';
|
||||
} elseif ($name == 'Body' && $this->status == 'body') {
|
||||
$this->status = 'envelope';
|
||||
} elseif ($name == 'Header' && $this->status == 'header') { // will never happen
|
||||
$this->status = 'envelope';
|
||||
} elseif ($name == 'Envelope' && $this->status == 'envelope') {
|
||||
$this->status = '';
|
||||
}
|
||||
// set parent back to my parent
|
||||
$this->parent = $this->message[$pos]['parent'];
|
||||
}
|
||||
|
||||
/**
|
||||
* element content handler
|
||||
*
|
||||
* @param resource $parser XML parser object
|
||||
* @param string $data element content
|
||||
* @access private
|
||||
*/
|
||||
function character_data($parser, $data){
|
||||
$pos = $this->depth_array[$this->depth];
|
||||
if ($this->xml_encoding=='UTF-8'){
|
||||
// TODO: add an option to disable this for folks who want
|
||||
// raw UTF-8 that, e.g., might not map to iso-8859-1
|
||||
// TODO: this can also be handled with xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
|
||||
if($this->decode_utf8){
|
||||
$data = utf8_decode($data);
|
||||
}
|
||||
}
|
||||
$this->message[$pos]['cdata'] .= $data;
|
||||
// for doclit
|
||||
if($this->status == 'header'){
|
||||
$this->responseHeaders .= $data;
|
||||
} else {
|
||||
$this->document .= $data;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the parsed message (SOAP Body)
|
||||
*
|
||||
* @return mixed
|
||||
* @access public
|
||||
* @deprecated use get_soapbody instead
|
||||
*/
|
||||
function get_response(){
|
||||
return $this->soapresponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the parsed SOAP Body (NULL if there was none)
|
||||
*
|
||||
* @return mixed
|
||||
* @access public
|
||||
*/
|
||||
function get_soapbody(){
|
||||
return $this->soapresponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the parsed SOAP Header (NULL if there was none)
|
||||
*
|
||||
* @return mixed
|
||||
* @access public
|
||||
*/
|
||||
function get_soapheader(){
|
||||
return $this->soapheader;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the unparsed SOAP Header
|
||||
*
|
||||
* @return string XML or empty if no Header
|
||||
* @access public
|
||||
*/
|
||||
function getHeaders(){
|
||||
return $this->responseHeaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* decodes simple types into PHP variables
|
||||
*
|
||||
* @param string $value value to decode
|
||||
* @param string $type XML type to decode
|
||||
* @param string $typens XML type namespace to decode
|
||||
* @return mixed PHP value
|
||||
* @access private
|
||||
*/
|
||||
function decodeSimple($value, $type, $typens) {
|
||||
// TODO: use the namespace!
|
||||
if ((!isset($type)) || $type == 'string' || $type == 'long' || $type == 'unsignedLong') {
|
||||
return (string) $value;
|
||||
}
|
||||
if ($type == 'int' || $type == 'integer' || $type == 'short' || $type == 'byte') {
|
||||
return (int) $value;
|
||||
}
|
||||
if ($type == 'float' || $type == 'double' || $type == 'decimal') {
|
||||
return (double) $value;
|
||||
}
|
||||
if ($type == 'boolean') {
|
||||
if (strtolower($value) == 'false' || strtolower($value) == 'f') {
|
||||
return false;
|
||||
}
|
||||
return (boolean) $value;
|
||||
}
|
||||
if ($type == 'base64' || $type == 'base64Binary') {
|
||||
$this->debug('Decode base64 value');
|
||||
return base64_decode($value);
|
||||
}
|
||||
// obscure numeric types
|
||||
if ($type == 'nonPositiveInteger' || $type == 'negativeInteger'
|
||||
|| $type == 'nonNegativeInteger' || $type == 'positiveInteger'
|
||||
|| $type == 'unsignedInt'
|
||||
|| $type == 'unsignedShort' || $type == 'unsignedByte') {
|
||||
return (int) $value;
|
||||
}
|
||||
// bogus: parser treats array with no elements as a simple type
|
||||
if ($type == 'array') {
|
||||
return array();
|
||||
}
|
||||
// everything else
|
||||
return (string) $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* builds response structures for compound values (arrays/structs)
|
||||
* and scalars
|
||||
*
|
||||
* @param integer $pos position in node tree
|
||||
* @return mixed PHP value
|
||||
* @access private
|
||||
*/
|
||||
function buildVal($pos){
|
||||
if(!isset($this->message[$pos]['type'])){
|
||||
$this->message[$pos]['type'] = '';
|
||||
}
|
||||
$this->debug('in buildVal() for '.$this->message[$pos]['name']."(pos $pos) of type ".$this->message[$pos]['type']);
|
||||
// if there are children...
|
||||
if($this->message[$pos]['children'] != ''){
|
||||
$this->debug('in buildVal, there are children');
|
||||
$children = explode('|',$this->message[$pos]['children']);
|
||||
array_shift($children); // knock off empty
|
||||
// md array
|
||||
if(isset($this->message[$pos]['arrayCols']) && $this->message[$pos]['arrayCols'] != ''){
|
||||
$r=0; // rowcount
|
||||
$c=0; // colcount
|
||||
foreach($children as $child_pos){
|
||||
$this->debug("in buildVal, got an MD array element: $r, $c");
|
||||
$params[$r][] = $this->message[$child_pos]['result'];
|
||||
$c++;
|
||||
if($c == $this->message[$pos]['arrayCols']){
|
||||
$c = 0;
|
||||
$r++;
|
||||
}
|
||||
}
|
||||
// array
|
||||
} elseif($this->message[$pos]['type'] == 'array' || $this->message[$pos]['type'] == 'Array'){
|
||||
$this->debug('in buildVal, adding array '.$this->message[$pos]['name']);
|
||||
foreach($children as $child_pos){
|
||||
$params[] = &$this->message[$child_pos]['result'];
|
||||
}
|
||||
// apache Map type: java hashtable
|
||||
} elseif($this->message[$pos]['type'] == 'Map' && $this->message[$pos]['type_namespace'] == 'http://xml.apache.org/xml-soap'){
|
||||
$this->debug('in buildVal, Java Map '.$this->message[$pos]['name']);
|
||||
foreach($children as $child_pos){
|
||||
$kv = explode("|",$this->message[$child_pos]['children']);
|
||||
$params[$this->message[$kv[1]]['result']] = &$this->message[$kv[2]]['result'];
|
||||
}
|
||||
// generic compound type
|
||||
//} elseif($this->message[$pos]['type'] == 'SOAPStruct' || $this->message[$pos]['type'] == 'struct') {
|
||||
} else {
|
||||
// Apache Vector type: treat as an array
|
||||
$this->debug('in buildVal, adding Java Vector or generic compound type '.$this->message[$pos]['name']);
|
||||
if ($this->message[$pos]['type'] == 'Vector' && $this->message[$pos]['type_namespace'] == 'http://xml.apache.org/xml-soap') {
|
||||
$notstruct = 1;
|
||||
} else {
|
||||
$notstruct = 0;
|
||||
}
|
||||
//
|
||||
foreach($children as $child_pos){
|
||||
if($notstruct){
|
||||
$params[] = &$this->message[$child_pos]['result'];
|
||||
} else {
|
||||
if (isset($params[$this->message[$child_pos]['name']])) {
|
||||
// de-serialize repeated element name into an array
|
||||
if ((!is_array($params[$this->message[$child_pos]['name']])) || (!isset($params[$this->message[$child_pos]['name']][0]))) {
|
||||
$params[$this->message[$child_pos]['name']] = array($params[$this->message[$child_pos]['name']]);
|
||||
}
|
||||
$params[$this->message[$child_pos]['name']][] = &$this->message[$child_pos]['result'];
|
||||
} else {
|
||||
$params[$this->message[$child_pos]['name']] = &$this->message[$child_pos]['result'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($this->message[$pos]['xattrs'])) {
|
||||
$this->debug('in buildVal, handling attributes');
|
||||
foreach ($this->message[$pos]['xattrs'] as $n => $v) {
|
||||
$params[$n] = $v;
|
||||
}
|
||||
}
|
||||
// handle simpleContent
|
||||
if (isset($this->message[$pos]['cdata']) && trim($this->message[$pos]['cdata']) != '') {
|
||||
$this->debug('in buildVal, handling simpleContent');
|
||||
if (isset($this->message[$pos]['type'])) {
|
||||
$params['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
|
||||
} else {
|
||||
$parent = $this->message[$pos]['parent'];
|
||||
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
|
||||
$params['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
|
||||
} else {
|
||||
$params['!'] = $this->message[$pos]['cdata'];
|
||||
}
|
||||
}
|
||||
}
|
||||
$ret = is_array($params) ? $params : array();
|
||||
$this->debug('in buildVal, return:');
|
||||
$this->appendDebug($this->varDump($ret));
|
||||
return $ret;
|
||||
} else {
|
||||
$this->debug('in buildVal, no children, building scalar');
|
||||
$cdata = isset($this->message[$pos]['cdata']) ? $this->message[$pos]['cdata'] : '';
|
||||
if (isset($this->message[$pos]['type'])) {
|
||||
$ret = $this->decodeSimple($cdata, $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
|
||||
$this->debug("in buildVal, return: $ret");
|
||||
return $ret;
|
||||
}
|
||||
$parent = $this->message[$pos]['parent'];
|
||||
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
|
||||
$ret = $this->decodeSimple($cdata, $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
|
||||
$this->debug("in buildVal, return: $ret");
|
||||
return $ret;
|
||||
}
|
||||
$ret = $this->message[$pos]['cdata'];
|
||||
$this->debug("in buildVal, return: $ret");
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Backward compatibility
|
||||
*/
|
||||
class soap_parser extends nusoap_parser {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* For creating serializable abstractions of native PHP types. This class
|
||||
* allows element name/namespace, XSD type, and XML attributes to be
|
||||
* associated with a value. This is extremely useful when WSDL is not
|
||||
* used, but is also useful when WSDL is used with polymorphic types, including
|
||||
* xsd:anyType and user-defined types.
|
||||
*
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @version $Id: class.soap_val.php,v 1.11 2007/04/06 13:56:32 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class soapval extends nusoap_base {
|
||||
/**
|
||||
* The XML element name
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $name;
|
||||
/**
|
||||
* The XML type name (string or false)
|
||||
*
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $type;
|
||||
/**
|
||||
* The PHP value
|
||||
*
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $value;
|
||||
/**
|
||||
* The XML element namespace (string or false)
|
||||
*
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $element_ns;
|
||||
/**
|
||||
* The XML type namespace (string or false)
|
||||
*
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $type_ns;
|
||||
/**
|
||||
* The XML element attributes (array or false)
|
||||
*
|
||||
* @var mixed
|
||||
* @access private
|
||||
*/
|
||||
var $attributes;
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $name optional name
|
||||
* @param mixed $type optional type name
|
||||
* @param mixed $value optional value
|
||||
* @param mixed $element_ns optional namespace of value
|
||||
* @param mixed $type_ns optional namespace of type
|
||||
* @param mixed $attributes associative array of attributes to add to element serialization
|
||||
* @access public
|
||||
*/
|
||||
function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
|
||||
parent::nusoap_base();
|
||||
$this->name = $name;
|
||||
$this->type = $type;
|
||||
$this->value = $value;
|
||||
$this->element_ns = $element_ns;
|
||||
$this->type_ns = $type_ns;
|
||||
$this->attributes = $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* return serialized value
|
||||
*
|
||||
* @param string $use The WSDL use value (encoded|literal)
|
||||
* @return string XML data
|
||||
* @access public
|
||||
*/
|
||||
function serialize($use='encoded') {
|
||||
return $this->serialize_val($this->value, $this->name, $this->type, $this->element_ns, $this->type_ns, $this->attributes, $use, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* decodes a soapval object into a PHP native type
|
||||
*
|
||||
* @return mixed
|
||||
* @access public
|
||||
*/
|
||||
function decode(){
|
||||
return $this->value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,991 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* [nu]soapclient higher level class for easy usage.
|
||||
*
|
||||
* usage:
|
||||
*
|
||||
* // instantiate client with server info
|
||||
* $soapclient = new nusoap_client( string path [ ,mixed wsdl] );
|
||||
*
|
||||
* // call method, get results
|
||||
* echo $soapclient->call( string methodname [ ,array parameters] );
|
||||
*
|
||||
* // bye bye client
|
||||
* unset($soapclient);
|
||||
*
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @version $Id: class.soapclient.php,v 1.69 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_client extends nusoap_base {
|
||||
|
||||
var $username = ''; // Username for HTTP authentication
|
||||
var $password = ''; // Password for HTTP authentication
|
||||
var $authtype = ''; // Type of HTTP authentication
|
||||
var $certRequest = array(); // Certificate for HTTP SSL authentication
|
||||
var $requestHeaders = false; // SOAP headers in request (text)
|
||||
var $responseHeaders = ''; // SOAP headers from response (incomplete namespace resolution) (text)
|
||||
var $responseHeader = NULL; // SOAP Header from response (parsed)
|
||||
var $document = ''; // SOAP body response portion (incomplete namespace resolution) (text)
|
||||
var $endpoint;
|
||||
var $forceEndpoint = ''; // overrides WSDL endpoint
|
||||
var $proxyhost = '';
|
||||
var $proxyport = '';
|
||||
var $proxyusername = '';
|
||||
var $proxypassword = '';
|
||||
var $portName = ''; // port name to use in WSDL
|
||||
var $xml_encoding = ''; // character set encoding of incoming (response) messages
|
||||
var $http_encoding = false;
|
||||
var $timeout = 0; // HTTP connection timeout
|
||||
var $response_timeout = 30; // HTTP response timeout
|
||||
var $endpointType = ''; // soap|wsdl, empty for WSDL initialization error
|
||||
var $persistentConnection = false;
|
||||
var $defaultRpcParams = false; // This is no longer used
|
||||
var $request = ''; // HTTP request
|
||||
var $response = ''; // HTTP response
|
||||
var $responseData = ''; // SOAP payload of response
|
||||
var $cookies = array(); // Cookies from response or for request
|
||||
var $decode_utf8 = true; // toggles whether the parser decodes element content w/ utf8_decode()
|
||||
var $operations = array(); // WSDL operations, empty for WSDL initialization error
|
||||
var $curl_options = array(); // User-specified cURL options
|
||||
var $bindingType = ''; // WSDL operation binding type
|
||||
var $use_curl = false; // whether to always try to use cURL
|
||||
|
||||
/*
|
||||
* fault related variables
|
||||
*/
|
||||
/**
|
||||
* @var fault
|
||||
* @access public
|
||||
*/
|
||||
var $fault;
|
||||
/**
|
||||
* @var faultcode
|
||||
* @access public
|
||||
*/
|
||||
var $faultcode;
|
||||
/**
|
||||
* @var faultstring
|
||||
* @access public
|
||||
*/
|
||||
var $faultstring;
|
||||
/**
|
||||
* @var faultdetail
|
||||
* @access public
|
||||
*/
|
||||
var $faultdetail;
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param mixed $endpoint SOAP server or WSDL URL (string), or wsdl instance (object)
|
||||
* @param mixed $wsdl optional, set to 'wsdl' or true if using WSDL
|
||||
* @param string $proxyhost optional
|
||||
* @param string $proxyport optional
|
||||
* @param string $proxyusername optional
|
||||
* @param string $proxypassword optional
|
||||
* @param integer $timeout set the connection timeout
|
||||
* @param integer $response_timeout set the response timeout
|
||||
* @param string $portName optional portName in WSDL document
|
||||
* @access public
|
||||
*/
|
||||
function nusoap_client($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = ''){
|
||||
parent::nusoap_base();
|
||||
$this->endpoint = $endpoint;
|
||||
$this->proxyhost = $proxyhost;
|
||||
$this->proxyport = $proxyport;
|
||||
$this->proxyusername = $proxyusername;
|
||||
$this->proxypassword = $proxypassword;
|
||||
$this->timeout = $timeout;
|
||||
$this->response_timeout = $response_timeout;
|
||||
$this->portName = $portName;
|
||||
|
||||
$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
|
||||
$this->appendDebug('endpoint=' . $this->varDump($endpoint));
|
||||
|
||||
// make values
|
||||
if($wsdl){
|
||||
if (is_object($endpoint) && (get_class($endpoint) == 'wsdl')) {
|
||||
$this->wsdl = $endpoint;
|
||||
$this->endpoint = $this->wsdl->wsdl;
|
||||
$this->wsdlFile = $this->endpoint;
|
||||
$this->debug('existing wsdl instance created from ' . $this->endpoint);
|
||||
$this->checkWSDL();
|
||||
} else {
|
||||
$this->wsdlFile = $this->endpoint;
|
||||
$this->wsdl = null;
|
||||
$this->debug('will use lazy evaluation of wsdl from ' . $this->endpoint);
|
||||
}
|
||||
$this->endpointType = 'wsdl';
|
||||
} else {
|
||||
$this->debug("instantiate SOAP with endpoint at $endpoint");
|
||||
$this->endpointType = 'soap';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* calls method, returns PHP native type
|
||||
*
|
||||
* @param string $operation SOAP server URL or path
|
||||
* @param mixed $params An array, associative or simple, of the parameters
|
||||
* for the method call, or a string that is the XML
|
||||
* for the call. For rpc style, this call will
|
||||
* wrap the XML in a tag named after the method, as
|
||||
* well as the SOAP Envelope and Body. For document
|
||||
* style, this will only wrap with the Envelope and Body.
|
||||
* IMPORTANT: when using an array with document style,
|
||||
* in which case there
|
||||
* is really one parameter, the root of the fragment
|
||||
* used in the call, which encloses what programmers
|
||||
* normally think of parameters. A parameter array
|
||||
* *must* include the wrapper.
|
||||
* @param string $namespace optional method namespace (WSDL can override)
|
||||
* @param string $soapAction optional SOAPAction value (WSDL can override)
|
||||
* @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
|
||||
* @param boolean $rpcParams optional (no longer used)
|
||||
* @param string $style optional (rpc|document) the style to use when serializing parameters (WSDL can override)
|
||||
* @param string $use optional (encoded|literal) the use when serializing parameters (WSDL can override)
|
||||
* @return mixed response from SOAP call, normally an associative array mirroring the structure of the XML response, false for certain fatal errors
|
||||
* @access public
|
||||
*/
|
||||
function call($operation,$params=array(),$namespace='http://tempuri.org',$soapAction='',$headers=false,$rpcParams=null,$style='rpc',$use='encoded'){
|
||||
$this->operation = $operation;
|
||||
$this->fault = false;
|
||||
$this->setError('');
|
||||
$this->request = '';
|
||||
$this->response = '';
|
||||
$this->responseData = '';
|
||||
$this->faultstring = '';
|
||||
$this->faultcode = '';
|
||||
$this->opData = array();
|
||||
|
||||
$this->debug("call: operation=$operation, namespace=$namespace, soapAction=$soapAction, rpcParams=$rpcParams, style=$style, use=$use, endpointType=$this->endpointType");
|
||||
$this->appendDebug('params=' . $this->varDump($params));
|
||||
$this->appendDebug('headers=' . $this->varDump($headers));
|
||||
if ($headers) {
|
||||
$this->requestHeaders = $headers;
|
||||
}
|
||||
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
|
||||
$this->loadWSDL();
|
||||
if ($this->getError())
|
||||
return false;
|
||||
}
|
||||
// serialize parameters
|
||||
if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
|
||||
// use WSDL for operation
|
||||
$this->opData = $opData;
|
||||
$this->debug("found operation");
|
||||
$this->appendDebug('opData=' . $this->varDump($opData));
|
||||
if (isset($opData['soapAction'])) {
|
||||
$soapAction = $opData['soapAction'];
|
||||
}
|
||||
if (! $this->forceEndpoint) {
|
||||
$this->endpoint = $opData['endpoint'];
|
||||
} else {
|
||||
$this->endpoint = $this->forceEndpoint;
|
||||
}
|
||||
$namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] : $namespace;
|
||||
$style = $opData['style'];
|
||||
$use = $opData['input']['use'];
|
||||
// add ns to ns array
|
||||
if($namespace != '' && !isset($this->wsdl->namespaces[$namespace])){
|
||||
$nsPrefix = 'ns' . rand(1000, 9999);
|
||||
$this->wsdl->namespaces[$nsPrefix] = $namespace;
|
||||
}
|
||||
$nsPrefix = $this->wsdl->getPrefixFromNamespace($namespace);
|
||||
// serialize payload
|
||||
if (is_string($params)) {
|
||||
$this->debug("serializing param string for WSDL operation $operation");
|
||||
$payload = $params;
|
||||
} elseif (is_array($params)) {
|
||||
$this->debug("serializing param array for WSDL operation $operation");
|
||||
$payload = $this->wsdl->serializeRPCParameters($operation,'input',$params,$this->bindingType);
|
||||
} else {
|
||||
$this->debug('params must be array or string');
|
||||
$this->setError('params must be array or string');
|
||||
return false;
|
||||
}
|
||||
$usedNamespaces = $this->wsdl->usedNamespaces;
|
||||
if (isset($opData['input']['encodingStyle'])) {
|
||||
$encodingStyle = $opData['input']['encodingStyle'];
|
||||
} else {
|
||||
$encodingStyle = '';
|
||||
}
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
if ($errstr = $this->wsdl->getError()) {
|
||||
$this->debug('got wsdl error: '.$errstr);
|
||||
$this->setError('wsdl error: '.$errstr);
|
||||
return false;
|
||||
}
|
||||
} elseif($this->endpointType == 'wsdl') {
|
||||
// operation not in WSDL
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->setError('operation '.$operation.' not present in WSDL.');
|
||||
$this->debug("operation '$operation' not present in WSDL.");
|
||||
return false;
|
||||
} else {
|
||||
// no WSDL
|
||||
//$this->namespaces['ns1'] = $namespace;
|
||||
$nsPrefix = 'ns' . rand(1000, 9999);
|
||||
// serialize
|
||||
$payload = '';
|
||||
if (is_string($params)) {
|
||||
$this->debug("serializing param string for operation $operation");
|
||||
$payload = $params;
|
||||
} elseif (is_array($params)) {
|
||||
$this->debug("serializing param array for operation $operation");
|
||||
foreach($params as $k => $v){
|
||||
$payload .= $this->serialize_val($v,$k,false,false,false,false,$use);
|
||||
}
|
||||
} else {
|
||||
$this->debug('params must be array or string');
|
||||
$this->setError('params must be array or string');
|
||||
return false;
|
||||
}
|
||||
$usedNamespaces = array();
|
||||
if ($use == 'encoded') {
|
||||
$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
|
||||
} else {
|
||||
$encodingStyle = '';
|
||||
}
|
||||
}
|
||||
// wrap RPC calls with method element
|
||||
if ($style == 'rpc') {
|
||||
if ($use == 'literal') {
|
||||
$this->debug("wrapping RPC request with literal method element");
|
||||
if ($namespace) {
|
||||
// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
|
||||
$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
|
||||
$payload .
|
||||
"</$nsPrefix:$operation>";
|
||||
} else {
|
||||
$payload = "<$operation>" . $payload . "</$operation>";
|
||||
}
|
||||
} else {
|
||||
$this->debug("wrapping RPC request with encoded method element");
|
||||
if ($namespace) {
|
||||
$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
|
||||
$payload .
|
||||
"</$nsPrefix:$operation>";
|
||||
} else {
|
||||
$payload = "<$operation>" .
|
||||
$payload .
|
||||
"</$operation>";
|
||||
}
|
||||
}
|
||||
}
|
||||
// serialize envelope
|
||||
$soapmsg = $this->serializeEnvelope($payload,$this->requestHeaders,$usedNamespaces,$style,$use,$encodingStyle);
|
||||
$this->debug("endpoint=$this->endpoint, soapAction=$soapAction, namespace=$namespace, style=$style, use=$use, encodingStyle=$encodingStyle");
|
||||
$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
|
||||
// send
|
||||
$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
|
||||
if($errstr = $this->getError()){
|
||||
$this->debug('Error: '.$errstr);
|
||||
return false;
|
||||
} else {
|
||||
$this->return = $return;
|
||||
$this->debug('sent message successfully and got a(n) '.gettype($return));
|
||||
$this->appendDebug('return=' . $this->varDump($return));
|
||||
|
||||
// fault?
|
||||
if(is_array($return) && isset($return['faultcode'])){
|
||||
$this->debug('got fault');
|
||||
$this->setError($return['faultcode'].': '.$return['faultstring']);
|
||||
$this->fault = true;
|
||||
foreach($return as $k => $v){
|
||||
$this->$k = $v;
|
||||
$this->debug("$k = $v<br>");
|
||||
}
|
||||
return $return;
|
||||
} elseif ($style == 'document') {
|
||||
// NOTE: if the response is defined to have multiple parts (i.e. unwrapped),
|
||||
// we are only going to return the first part here...sorry about that
|
||||
return $return;
|
||||
} else {
|
||||
// array of return values
|
||||
if(is_array($return)){
|
||||
// multiple 'out' parameters, which we return wrapped up
|
||||
// in the array
|
||||
if(sizeof($return) > 1){
|
||||
return $return;
|
||||
}
|
||||
// single 'out' parameter (normally the return value)
|
||||
$return = array_shift($return);
|
||||
$this->debug('return shifted value: ');
|
||||
$this->appendDebug($this->varDump($return));
|
||||
return $return;
|
||||
// nothing returned (ie, echoVoid)
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* check WSDL passed as an instance or pulled from an endpoint
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function checkWSDL() {
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->debug('checkWSDL');
|
||||
// catch errors
|
||||
if ($errstr = $this->wsdl->getError()) {
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->debug('got wsdl error: '.$errstr);
|
||||
$this->setError('wsdl error: '.$errstr);
|
||||
} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap')) {
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->bindingType = 'soap';
|
||||
$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
|
||||
} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap12')) {
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->bindingType = 'soap12';
|
||||
$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
|
||||
$this->debug('**************** WARNING: SOAP 1.2 BINDING *****************');
|
||||
} else {
|
||||
$this->appendDebug($this->wsdl->getDebug());
|
||||
$this->wsdl->clearDebug();
|
||||
$this->debug('getOperations returned false');
|
||||
$this->setError('no operations defined in the WSDL document!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* instantiate wsdl object and parse wsdl file
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function loadWSDL() {
|
||||
$this->debug('instantiating wsdl class with doc: '.$this->wsdlFile);
|
||||
$this->wsdl = new wsdl('',$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout,$this->curl_options,$this->use_curl);
|
||||
$this->wsdl->setCredentials($this->username, $this->password, $this->authtype, $this->certRequest);
|
||||
$this->wsdl->fetchWSDL($this->wsdlFile);
|
||||
$this->checkWSDL();
|
||||
}
|
||||
|
||||
/**
|
||||
* get available data pertaining to an operation
|
||||
*
|
||||
* @param string $operation operation name
|
||||
* @return array array of data pertaining to the operation
|
||||
* @access public
|
||||
*/
|
||||
function getOperationData($operation){
|
||||
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
|
||||
$this->loadWSDL();
|
||||
if ($this->getError())
|
||||
return false;
|
||||
}
|
||||
if(isset($this->operations[$operation])){
|
||||
return $this->operations[$operation];
|
||||
}
|
||||
$this->debug("No data for operation: $operation");
|
||||
}
|
||||
|
||||
/**
|
||||
* send the SOAP message
|
||||
*
|
||||
* Note: if the operation has multiple return values
|
||||
* the return value of this method will be an array
|
||||
* of those values.
|
||||
*
|
||||
* @param string $msg a SOAPx4 soapmsg object
|
||||
* @param string $soapaction SOAPAction value
|
||||
* @param integer $timeout set connection timeout in seconds
|
||||
* @param integer $response_timeout set response timeout in seconds
|
||||
* @return mixed native PHP types.
|
||||
* @access private
|
||||
*/
|
||||
function send($msg, $soapaction = '', $timeout=0, $response_timeout=30) {
|
||||
$this->checkCookies();
|
||||
// detect transport
|
||||
switch(true){
|
||||
// http(s)
|
||||
case preg_match('/^http/',$this->endpoint):
|
||||
$this->debug('transporting via HTTP');
|
||||
if($this->persistentConnection == true && is_object($this->persistentConnection)){
|
||||
$http =& $this->persistentConnection;
|
||||
} else {
|
||||
$http = new soap_transport_http($this->endpoint, $this->curl_options, $this->use_curl);
|
||||
if ($this->persistentConnection) {
|
||||
$http->usePersistentConnection();
|
||||
}
|
||||
}
|
||||
$http->setContentType($this->getHTTPContentType(), $this->getHTTPContentTypeCharset());
|
||||
$http->setSOAPAction($soapaction);
|
||||
if($this->proxyhost && $this->proxyport){
|
||||
$http->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
|
||||
}
|
||||
if($this->authtype != '') {
|
||||
$http->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
|
||||
}
|
||||
if($this->http_encoding != ''){
|
||||
$http->setEncoding($this->http_encoding);
|
||||
}
|
||||
$this->debug('sending message, length='.strlen($msg));
|
||||
if(preg_match('/^http:/',$this->endpoint)){
|
||||
//if(strpos($this->endpoint,'http:')){
|
||||
$this->responseData = $http->send($msg,$timeout,$response_timeout,$this->cookies);
|
||||
} elseif(preg_match('/^https/',$this->endpoint)){
|
||||
//} elseif(strpos($this->endpoint,'https:')){
|
||||
//if(phpversion() == '4.3.0-dev'){
|
||||
//$response = $http->send($msg,$timeout,$response_timeout);
|
||||
//$this->request = $http->outgoing_payload;
|
||||
//$this->response = $http->incoming_payload;
|
||||
//} else
|
||||
$this->responseData = $http->sendHTTPS($msg,$timeout,$response_timeout,$this->cookies);
|
||||
} else {
|
||||
$this->setError('no http/s in endpoint url');
|
||||
}
|
||||
$this->request = $http->outgoing_payload;
|
||||
$this->response = $http->incoming_payload;
|
||||
$this->appendDebug($http->getDebug());
|
||||
$this->UpdateCookies($http->incoming_cookies);
|
||||
|
||||
// save transport object if using persistent connections
|
||||
if ($this->persistentConnection) {
|
||||
$http->clearDebug();
|
||||
if (!is_object($this->persistentConnection)) {
|
||||
$this->persistentConnection = $http;
|
||||
}
|
||||
}
|
||||
|
||||
if($err = $http->getError()){
|
||||
$this->setError('HTTP Error: '.$err);
|
||||
return false;
|
||||
} elseif($this->getError()){
|
||||
return false;
|
||||
} else {
|
||||
$this->debug('got response, length='. strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
|
||||
return $this->parseResponse($http->incoming_headers, $this->responseData);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->setError('no transport found, or selected transport is not yet supported!');
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* processes SOAP message returned from server
|
||||
*
|
||||
* @param array $headers The HTTP headers
|
||||
* @param string $data unprocessed response data from server
|
||||
* @return mixed value of the message, decoded into a PHP type
|
||||
* @access private
|
||||
*/
|
||||
function parseResponse($headers, $data) {
|
||||
$this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' headers:');
|
||||
$this->appendDebug($this->varDump($headers));
|
||||
if (!isset($headers['content-type'])) {
|
||||
$this->setError('Response not of type text/xml (no content-type header)');
|
||||
return false;
|
||||
}
|
||||
if (!strstr($headers['content-type'], 'text/xml')) {
|
||||
$this->setError('Response not of type text/xml: ' . $headers['content-type']);
|
||||
return false;
|
||||
}
|
||||
if (strpos($headers['content-type'], '=')) {
|
||||
$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
|
||||
$this->debug('Got response encoding: ' . $enc);
|
||||
if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
|
||||
$this->xml_encoding = strtoupper($enc);
|
||||
} else {
|
||||
$this->xml_encoding = 'US-ASCII';
|
||||
}
|
||||
} else {
|
||||
// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
|
||||
$this->xml_encoding = 'ISO-8859-1';
|
||||
}
|
||||
$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
|
||||
$parser = new nusoap_parser($data,$this->xml_encoding,$this->operation,$this->decode_utf8);
|
||||
// add parser debug data to our debug
|
||||
$this->appendDebug($parser->getDebug());
|
||||
// if parse errors
|
||||
if($errstr = $parser->getError()){
|
||||
$this->setError( $errstr);
|
||||
// destroy the parser object
|
||||
unset($parser);
|
||||
return false;
|
||||
} else {
|
||||
// get SOAP headers
|
||||
$this->responseHeaders = $parser->getHeaders();
|
||||
// get SOAP headers
|
||||
$this->responseHeader = $parser->get_soapheader();
|
||||
// get decoded message
|
||||
$return = $parser->get_soapbody();
|
||||
// add document for doclit support
|
||||
$this->document = $parser->document;
|
||||
// destroy the parser object
|
||||
unset($parser);
|
||||
// return decode message
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* sets user-specified cURL options
|
||||
*
|
||||
* @param mixed $option The cURL option (always integer?)
|
||||
* @param mixed $value The cURL option value
|
||||
* @access public
|
||||
*/
|
||||
function setCurlOption($option, $value) {
|
||||
$this->debug("setCurlOption option=$option, value=");
|
||||
$this->appendDebug($this->varDump($value));
|
||||
$this->curl_options[$option] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the SOAP endpoint, which can override WSDL
|
||||
*
|
||||
* @param string $endpoint The endpoint URL to use, or empty string or false to prevent override
|
||||
* @access public
|
||||
*/
|
||||
function setEndpoint($endpoint) {
|
||||
$this->debug("setEndpoint(\"$endpoint\")");
|
||||
$this->forceEndpoint = $endpoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* set the SOAP headers
|
||||
*
|
||||
* @param mixed $headers String of XML with SOAP header content, or array of soapval objects for SOAP headers
|
||||
* @access public
|
||||
*/
|
||||
function setHeaders($headers){
|
||||
$this->debug("setHeaders headers=");
|
||||
$this->appendDebug($this->varDump($headers));
|
||||
$this->requestHeaders = $headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the SOAP response headers (namespace resolution incomplete)
|
||||
*
|
||||
* @return string
|
||||
* @access public
|
||||
*/
|
||||
function getHeaders(){
|
||||
return $this->responseHeaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the SOAP response Header (parsed)
|
||||
*
|
||||
* @return mixed
|
||||
* @access public
|
||||
*/
|
||||
function getHeader(){
|
||||
return $this->responseHeader;
|
||||
}
|
||||
|
||||
/**
|
||||
* set proxy info here
|
||||
*
|
||||
* @param string $proxyhost
|
||||
* @param string $proxyport
|
||||
* @param string $proxyusername
|
||||
* @param string $proxypassword
|
||||
* @access public
|
||||
*/
|
||||
function setHTTPProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '') {
|
||||
$this->proxyhost = $proxyhost;
|
||||
$this->proxyport = $proxyport;
|
||||
$this->proxyusername = $proxyusername;
|
||||
$this->proxypassword = $proxypassword;
|
||||
}
|
||||
|
||||
/**
|
||||
* if authenticating, set user credentials here
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param string $authtype (basic|digest|certificate|ntlm)
|
||||
* @param array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
|
||||
* @access public
|
||||
*/
|
||||
function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
|
||||
$this->debug("setCredentials username=$username authtype=$authtype certRequest=");
|
||||
$this->appendDebug($this->varDump($certRequest));
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
$this->authtype = $authtype;
|
||||
$this->certRequest = $certRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* use HTTP encoding
|
||||
*
|
||||
* @param string $enc HTTP encoding
|
||||
* @access public
|
||||
*/
|
||||
function setHTTPEncoding($enc='gzip, deflate'){
|
||||
$this->debug("setHTTPEncoding(\"$enc\")");
|
||||
$this->http_encoding = $enc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether to try to use cURL connections if possible
|
||||
*
|
||||
* @param boolean $use Whether to try to use cURL
|
||||
* @access public
|
||||
*/
|
||||
function setUseCURL($use) {
|
||||
$this->debug("setUseCURL($use)");
|
||||
$this->use_curl = $use;
|
||||
}
|
||||
|
||||
/**
|
||||
* use HTTP persistent connections if possible
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function useHTTPPersistentConnection(){
|
||||
$this->debug("useHTTPPersistentConnection");
|
||||
$this->persistentConnection = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the default RPC parameter setting.
|
||||
* If true, default is that call params are like RPC even for document style.
|
||||
* Each call() can override this value.
|
||||
*
|
||||
* This is no longer used.
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function getDefaultRpcParams() {
|
||||
return $this->defaultRpcParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the default RPC parameter setting.
|
||||
* If true, default is that call params are like RPC even for document style
|
||||
* Each call() can override this value.
|
||||
*
|
||||
* This is no longer used.
|
||||
*
|
||||
* @param boolean $rpcParams
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function setDefaultRpcParams($rpcParams) {
|
||||
$this->defaultRpcParams = $rpcParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* dynamically creates an instance of a proxy class,
|
||||
* allowing user to directly call methods from wsdl
|
||||
*
|
||||
* @return object soap_proxy object
|
||||
* @access public
|
||||
*/
|
||||
function getProxy() {
|
||||
$r = rand();
|
||||
$evalStr = $this->_getProxyClassCode($r);
|
||||
//$this->debug("proxy class: $evalStr");
|
||||
if ($this->getError()) {
|
||||
$this->debug("Error from _getProxyClassCode, so return NULL");
|
||||
return null;
|
||||
}
|
||||
// eval the class
|
||||
eval($evalStr);
|
||||
// instantiate proxy object
|
||||
eval("\$proxy = new nusoap_proxy_$r('');");
|
||||
// transfer current wsdl data to the proxy thereby avoiding parsing the wsdl twice
|
||||
$proxy->endpointType = 'wsdl';
|
||||
$proxy->wsdlFile = $this->wsdlFile;
|
||||
$proxy->wsdl = $this->wsdl;
|
||||
$proxy->operations = $this->operations;
|
||||
$proxy->defaultRpcParams = $this->defaultRpcParams;
|
||||
// transfer other state
|
||||
$proxy->soap_defencoding = $this->soap_defencoding;
|
||||
$proxy->username = $this->username;
|
||||
$proxy->password = $this->password;
|
||||
$proxy->authtype = $this->authtype;
|
||||
$proxy->certRequest = $this->certRequest;
|
||||
$proxy->requestHeaders = $this->requestHeaders;
|
||||
$proxy->endpoint = $this->endpoint;
|
||||
$proxy->forceEndpoint = $this->forceEndpoint;
|
||||
$proxy->proxyhost = $this->proxyhost;
|
||||
$proxy->proxyport = $this->proxyport;
|
||||
$proxy->proxyusername = $this->proxyusername;
|
||||
$proxy->proxypassword = $this->proxypassword;
|
||||
$proxy->http_encoding = $this->http_encoding;
|
||||
$proxy->timeout = $this->timeout;
|
||||
$proxy->response_timeout = $this->response_timeout;
|
||||
$proxy->persistentConnection = &$this->persistentConnection;
|
||||
$proxy->decode_utf8 = $this->decode_utf8;
|
||||
$proxy->curl_options = $this->curl_options;
|
||||
$proxy->bindingType = $this->bindingType;
|
||||
$proxy->use_curl = $this->use_curl;
|
||||
return $proxy;
|
||||
}
|
||||
|
||||
/**
|
||||
* dynamically creates proxy class code
|
||||
*
|
||||
* @return string PHP/NuSOAP code for the proxy class
|
||||
* @access private
|
||||
*/
|
||||
function _getProxyClassCode($r) {
|
||||
$this->debug("in getProxy endpointType=$this->endpointType");
|
||||
$this->appendDebug("wsdl=" . $this->varDump($this->wsdl));
|
||||
if ($this->endpointType != 'wsdl') {
|
||||
$evalStr = 'A proxy can only be created for a WSDL client';
|
||||
$this->setError($evalStr);
|
||||
$evalStr = "echo \"$evalStr\";";
|
||||
return $evalStr;
|
||||
}
|
||||
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
|
||||
$this->loadWSDL();
|
||||
if ($this->getError()) {
|
||||
return "echo \"" . $this->getError() . "\";";
|
||||
}
|
||||
}
|
||||
$evalStr = '';
|
||||
foreach ($this->operations as $operation => $opData) {
|
||||
if ($operation != '') {
|
||||
// create param string and param comment string
|
||||
if (sizeof($opData['input']['parts']) > 0) {
|
||||
$paramStr = '';
|
||||
$paramArrayStr = '';
|
||||
$paramCommentStr = '';
|
||||
foreach ($opData['input']['parts'] as $name => $type) {
|
||||
$paramStr .= "\$$name, ";
|
||||
$paramArrayStr .= "'$name' => \$$name, ";
|
||||
$paramCommentStr .= "$type \$$name, ";
|
||||
}
|
||||
$paramStr = substr($paramStr, 0, strlen($paramStr)-2);
|
||||
$paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr)-2);
|
||||
$paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr)-2);
|
||||
} else {
|
||||
$paramStr = '';
|
||||
$paramArrayStr = '';
|
||||
$paramCommentStr = 'void';
|
||||
}
|
||||
$opData['namespace'] = !isset($opData['namespace']) ? 'http://testuri.com' : $opData['namespace'];
|
||||
$evalStr .= "// $paramCommentStr
|
||||
function " . str_replace('.', '__', $operation) . "($paramStr) {
|
||||
\$params = array($paramArrayStr);
|
||||
return \$this->call('$operation', \$params, '".$opData['namespace']."', '".(isset($opData['soapAction']) ? $opData['soapAction'] : '')."');
|
||||
}
|
||||
";
|
||||
unset($paramStr);
|
||||
unset($paramCommentStr);
|
||||
}
|
||||
}
|
||||
$evalStr = 'class nusoap_proxy_'.$r.' extends nusoap_client {
|
||||
'.$evalStr.'
|
||||
}';
|
||||
return $evalStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* dynamically creates proxy class code
|
||||
*
|
||||
* @return string PHP/NuSOAP code for the proxy class
|
||||
* @access public
|
||||
*/
|
||||
function getProxyClassCode() {
|
||||
$r = rand();
|
||||
return $this->_getProxyClassCode($r);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP body for the current request.
|
||||
*
|
||||
* @param string $soapmsg The SOAP payload
|
||||
* @return string The HTTP body, which includes the SOAP payload
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPBody($soapmsg) {
|
||||
return $soapmsg;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type for the current request.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type for the current request.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentType() {
|
||||
return 'text/xml';
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type charset for the current request.
|
||||
* returns false for non-text content types.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type charset for the current request.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentTypeCharset() {
|
||||
return $this->soap_defencoding;
|
||||
}
|
||||
|
||||
/*
|
||||
* whether or not parser should decode utf8 element content
|
||||
*
|
||||
* @return always returns true
|
||||
* @access public
|
||||
*/
|
||||
function decodeUTF8($bool){
|
||||
$this->decode_utf8 = $bool;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a new Cookie into $this->cookies array
|
||||
*
|
||||
* @param string $name Cookie Name
|
||||
* @param string $value Cookie Value
|
||||
* @return boolean if cookie-set was successful returns true, else false
|
||||
* @access public
|
||||
*/
|
||||
function setCookie($name, $value) {
|
||||
if (strlen($name) == 0) {
|
||||
return false;
|
||||
}
|
||||
$this->cookies[] = array('name' => $name, 'value' => $value);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets all Cookies
|
||||
*
|
||||
* @return array with all internal cookies
|
||||
* @access public
|
||||
*/
|
||||
function getCookies() {
|
||||
return $this->cookies;
|
||||
}
|
||||
|
||||
/**
|
||||
* checks all Cookies and delete those which are expired
|
||||
*
|
||||
* @return boolean always return true
|
||||
* @access private
|
||||
*/
|
||||
function checkCookies() {
|
||||
if (sizeof($this->cookies) == 0) {
|
||||
return true;
|
||||
}
|
||||
$this->debug('checkCookie: check ' . sizeof($this->cookies) . ' cookies');
|
||||
$curr_cookies = $this->cookies;
|
||||
$this->cookies = array();
|
||||
foreach ($curr_cookies as $cookie) {
|
||||
if (! is_array($cookie)) {
|
||||
$this->debug('Remove cookie that is not an array');
|
||||
continue;
|
||||
}
|
||||
if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
|
||||
if (strtotime($cookie['expires']) > time()) {
|
||||
$this->cookies[] = $cookie;
|
||||
} else {
|
||||
$this->debug('Remove expired cookie ' . $cookie['name']);
|
||||
}
|
||||
} else {
|
||||
$this->cookies[] = $cookie;
|
||||
}
|
||||
}
|
||||
$this->debug('checkCookie: '.sizeof($this->cookies).' cookies left in array');
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* updates the current cookies with a new set
|
||||
*
|
||||
* @param array $cookies new cookies with which to update current ones
|
||||
* @return boolean always return true
|
||||
* @access private
|
||||
*/
|
||||
function UpdateCookies($cookies) {
|
||||
if (sizeof($this->cookies) == 0) {
|
||||
// no existing cookies: take whatever is new
|
||||
if (sizeof($cookies) > 0) {
|
||||
$this->debug('Setting new cookie(s)');
|
||||
$this->cookies = $cookies;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (sizeof($cookies) == 0) {
|
||||
// no new cookies: keep what we've got
|
||||
return true;
|
||||
}
|
||||
// merge
|
||||
foreach ($cookies as $newCookie) {
|
||||
if (!is_array($newCookie)) {
|
||||
continue;
|
||||
}
|
||||
if ((!isset($newCookie['name'])) || (!isset($newCookie['value']))) {
|
||||
continue;
|
||||
}
|
||||
$newName = $newCookie['name'];
|
||||
|
||||
$found = false;
|
||||
for ($i = 0; $i < count($this->cookies); $i++) {
|
||||
$cookie = $this->cookies[$i];
|
||||
if (!is_array($cookie)) {
|
||||
continue;
|
||||
}
|
||||
if (!isset($cookie['name'])) {
|
||||
continue;
|
||||
}
|
||||
if ($newName != $cookie['name']) {
|
||||
continue;
|
||||
}
|
||||
$newDomain = isset($newCookie['domain']) ? $newCookie['domain'] : 'NODOMAIN';
|
||||
$domain = isset($cookie['domain']) ? $cookie['domain'] : 'NODOMAIN';
|
||||
if ($newDomain != $domain) {
|
||||
continue;
|
||||
}
|
||||
$newPath = isset($newCookie['path']) ? $newCookie['path'] : 'NOPATH';
|
||||
$path = isset($cookie['path']) ? $cookie['path'] : 'NOPATH';
|
||||
if ($newPath != $path) {
|
||||
continue;
|
||||
}
|
||||
$this->cookies[$i] = $newCookie;
|
||||
$found = true;
|
||||
$this->debug('Update cookie ' . $newName . '=' . $newCookie['value']);
|
||||
break;
|
||||
}
|
||||
if (! $found) {
|
||||
$this->debug('Add cookie ' . $newName . '=' . $newCookie['value']);
|
||||
$this->cookies[] = $newCookie;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!extension_loaded('soap')) {
|
||||
/**
|
||||
* For backwards compatiblity, define soapclient unless the PHP SOAP extension is loaded.
|
||||
*/
|
||||
class soapclient extends nusoap_client {
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,209 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
The NuSOAP project home is:
|
||||
http://sourceforge.net/projects/nusoap/
|
||||
|
||||
The primary support for NuSOAP is the mailing list:
|
||||
nusoap-general@lists.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* caches instances of the wsdl class
|
||||
*
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @author Ingo Fischer <ingo@apollon.de>
|
||||
* @version $Id: class.wsdlcache.php,v 1.7 2007/04/17 16:34:03 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_wsdlcache {
|
||||
/**
|
||||
* @var resource
|
||||
* @access private
|
||||
*/
|
||||
var $fplock;
|
||||
/**
|
||||
* @var integer
|
||||
* @access private
|
||||
*/
|
||||
var $cache_lifetime;
|
||||
/**
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $cache_dir;
|
||||
/**
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
var $debug_str = '';
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $cache_dir directory for cache-files
|
||||
* @param integer $cache_lifetime lifetime for caching-files in seconds or 0 for unlimited
|
||||
* @access public
|
||||
*/
|
||||
function nusoap_wsdlcache($cache_dir='.', $cache_lifetime=0) {
|
||||
$this->fplock = array();
|
||||
$this->cache_dir = $cache_dir != '' ? $cache_dir : '.';
|
||||
$this->cache_lifetime = $cache_lifetime;
|
||||
}
|
||||
|
||||
/**
|
||||
* creates the filename used to cache a wsdl instance
|
||||
*
|
||||
* @param string $wsdl The URL of the wsdl instance
|
||||
* @return string The filename used to cache the instance
|
||||
* @access private
|
||||
*/
|
||||
function createFilename($wsdl) {
|
||||
return $this->cache_dir.'/wsdlcache-' . md5($wsdl);
|
||||
}
|
||||
|
||||
/**
|
||||
* adds debug data to the class level debug string
|
||||
*
|
||||
* @param string $string debug data
|
||||
* @access private
|
||||
*/
|
||||
function debug($string){
|
||||
$this->debug_str .= get_class($this).": $string\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a wsdl instance from the cache
|
||||
*
|
||||
* @param string $wsdl The URL of the wsdl instance
|
||||
* @return object wsdl The cached wsdl instance, null if the instance is not in the cache
|
||||
* @access public
|
||||
*/
|
||||
function get($wsdl) {
|
||||
$filename = $this->createFilename($wsdl);
|
||||
if ($this->obtainMutex($filename, "r")) {
|
||||
// check for expired WSDL that must be removed from the cache
|
||||
if ($this->cache_lifetime > 0) {
|
||||
if (file_exists($filename) && (time() - filemtime($filename) > $this->cache_lifetime)) {
|
||||
unlink($filename);
|
||||
$this->debug("Expired $wsdl ($filename) from cache");
|
||||
$this->releaseMutex($filename);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// see what there is to return
|
||||
if (!file_exists($filename)) {
|
||||
$this->debug("$wsdl ($filename) not in cache (1)");
|
||||
$this->releaseMutex($filename);
|
||||
return null;
|
||||
}
|
||||
$fp = @fopen($filename, "r");
|
||||
if ($fp) {
|
||||
$s = implode("", @file($filename));
|
||||
fclose($fp);
|
||||
$this->debug("Got $wsdl ($filename) from cache");
|
||||
} else {
|
||||
$s = null;
|
||||
$this->debug("$wsdl ($filename) not in cache (2)");
|
||||
}
|
||||
$this->releaseMutex($filename);
|
||||
return (!is_null($s)) ? unserialize($s) : null;
|
||||
} else {
|
||||
$this->debug("Unable to obtain mutex for $filename in get");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* obtains the local mutex
|
||||
*
|
||||
* @param string $filename The Filename of the Cache to lock
|
||||
* @param string $mode The open-mode ("r" or "w") or the file - affects lock-mode
|
||||
* @return boolean Lock successfully obtained ?!
|
||||
* @access private
|
||||
*/
|
||||
function obtainMutex($filename, $mode) {
|
||||
if (isset($this->fplock[md5($filename)])) {
|
||||
$this->debug("Lock for $filename already exists");
|
||||
return false;
|
||||
}
|
||||
$this->fplock[md5($filename)] = fopen($filename.".lock", "w");
|
||||
if ($mode == "r") {
|
||||
return flock($this->fplock[md5($filename)], LOCK_SH);
|
||||
} else {
|
||||
return flock($this->fplock[md5($filename)], LOCK_EX);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a wsdl instance to the cache
|
||||
*
|
||||
* @param object wsdl $wsdl_instance The wsdl instance to add
|
||||
* @return boolean WSDL successfully cached
|
||||
* @access public
|
||||
*/
|
||||
function put($wsdl_instance) {
|
||||
$filename = $this->createFilename($wsdl_instance->wsdl);
|
||||
$s = serialize($wsdl_instance);
|
||||
if ($this->obtainMutex($filename, "w")) {
|
||||
$fp = fopen($filename, "w");
|
||||
if (! $fp) {
|
||||
$this->debug("Cannot write $wsdl_instance->wsdl ($filename) in cache");
|
||||
$this->releaseMutex($filename);
|
||||
return false;
|
||||
}
|
||||
fputs($fp, $s);
|
||||
fclose($fp);
|
||||
$this->debug("Put $wsdl_instance->wsdl ($filename) in cache");
|
||||
$this->releaseMutex($filename);
|
||||
return true;
|
||||
} else {
|
||||
$this->debug("Unable to obtain mutex for $filename in put");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* releases the local mutex
|
||||
*
|
||||
* @param string $filename The Filename of the Cache to lock
|
||||
* @return boolean Lock successfully released
|
||||
* @access private
|
||||
*/
|
||||
function releaseMutex($filename) {
|
||||
$ret = flock($this->fplock[md5($filename)], LOCK_UN);
|
||||
fclose($this->fplock[md5($filename)]);
|
||||
unset($this->fplock[md5($filename)]);
|
||||
if (! $ret) {
|
||||
$this->debug("Not able to release lock for $filename");
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* removes a wsdl instance from the cache
|
||||
*
|
||||
* @param string $wsdl The URL of the wsdl instance
|
||||
* @return boolean Whether there was an instance to remove
|
||||
* @access public
|
||||
*/
|
||||
function remove($wsdl) {
|
||||
$filename = $this->createFilename($wsdl);
|
||||
if (!file_exists($filename)) {
|
||||
$this->debug("$wsdl ($filename) not in cache to be removed");
|
||||
return false;
|
||||
}
|
||||
// ignore errors obtaining mutex
|
||||
$this->obtainMutex($filename, "w");
|
||||
$ret = unlink($filename);
|
||||
$this->debug("Removed ($ret) $wsdl ($filename) from cache");
|
||||
$this->releaseMutex($filename);
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For backward compatibility
|
||||
*/
|
||||
class wsdlcache extends nusoap_wsdlcache {
|
||||
}
|
||||
?>
|
||||
@@ -1,972 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* parses an XML Schema, allows access to it's data, other utility methods.
|
||||
* imperfect, no validation... yet, but quite functional.
|
||||
*
|
||||
* @author Dietrich Ayala <dietrich@ganx4.com>
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @version $Id: class.xmlschema.php,v 1.53 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_xmlschema extends nusoap_base {
|
||||
|
||||
// files
|
||||
var $schema = '';
|
||||
var $xml = '';
|
||||
// namespaces
|
||||
var $enclosingNamespaces;
|
||||
// schema info
|
||||
var $schemaInfo = array();
|
||||
var $schemaTargetNamespace = '';
|
||||
// types, elements, attributes defined by the schema
|
||||
var $attributes = array();
|
||||
var $complexTypes = array();
|
||||
var $complexTypeStack = array();
|
||||
var $currentComplexType = null;
|
||||
var $elements = array();
|
||||
var $elementStack = array();
|
||||
var $currentElement = null;
|
||||
var $simpleTypes = array();
|
||||
var $simpleTypeStack = array();
|
||||
var $currentSimpleType = null;
|
||||
// imports
|
||||
var $imports = array();
|
||||
// parser vars
|
||||
var $parser;
|
||||
var $position = 0;
|
||||
var $depth = 0;
|
||||
var $depth_array = array();
|
||||
var $message = array();
|
||||
var $defaultNamespace = array();
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $schema schema document URI
|
||||
* @param string $xml xml document URI
|
||||
* @param string $namespaces namespaces defined in enclosing XML
|
||||
* @access public
|
||||
*/
|
||||
function nusoap_xmlschema($schema='',$xml='',$namespaces=array()){
|
||||
parent::nusoap_base();
|
||||
$this->debug('nusoap_xmlschema class instantiated, inside constructor');
|
||||
// files
|
||||
$this->schema = $schema;
|
||||
$this->xml = $xml;
|
||||
|
||||
// namespaces
|
||||
$this->enclosingNamespaces = $namespaces;
|
||||
$this->namespaces = array_merge($this->namespaces, $namespaces);
|
||||
|
||||
// parse schema file
|
||||
if($schema != ''){
|
||||
$this->debug('initial schema file: '.$schema);
|
||||
$this->parseFile($schema, 'schema');
|
||||
}
|
||||
|
||||
// parse xml file
|
||||
if($xml != ''){
|
||||
$this->debug('initial xml file: '.$xml);
|
||||
$this->parseFile($xml, 'xml');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* parse an XML file
|
||||
*
|
||||
* @param string $xml path/URL to XML file
|
||||
* @param string $type (schema | xml)
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function parseFile($xml,$type){
|
||||
// parse xml file
|
||||
if($xml != ""){
|
||||
$xmlStr = @join("",@file($xml));
|
||||
if($xmlStr == ""){
|
||||
$msg = 'Error reading XML from '.$xml;
|
||||
$this->setError($msg);
|
||||
$this->debug($msg);
|
||||
return false;
|
||||
} else {
|
||||
$this->debug("parsing $xml");
|
||||
$this->parseString($xmlStr,$type);
|
||||
$this->debug("done parsing $xml");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse an XML string
|
||||
*
|
||||
* @param string $xml path or URL
|
||||
* @param string $type (schema|xml)
|
||||
* @access private
|
||||
*/
|
||||
function parseString($xml,$type){
|
||||
// parse xml string
|
||||
if($xml != ""){
|
||||
|
||||
// Create an XML parser.
|
||||
$this->parser = xml_parser_create();
|
||||
// Set the options for parsing the XML data.
|
||||
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
|
||||
|
||||
// Set the object for the parser.
|
||||
xml_set_object($this->parser, $this);
|
||||
|
||||
// Set the element handlers for the parser.
|
||||
if($type == "schema"){
|
||||
xml_set_element_handler($this->parser, 'schemaStartElement','schemaEndElement');
|
||||
xml_set_character_data_handler($this->parser,'schemaCharacterData');
|
||||
} elseif($type == "xml"){
|
||||
xml_set_element_handler($this->parser, 'xmlStartElement','xmlEndElement');
|
||||
xml_set_character_data_handler($this->parser,'xmlCharacterData');
|
||||
}
|
||||
|
||||
// Parse the XML file.
|
||||
if(!xml_parse($this->parser,$xml,true)){
|
||||
// Display an error message.
|
||||
$errstr = sprintf('XML error parsing XML schema on line %d: %s',
|
||||
xml_get_current_line_number($this->parser),
|
||||
xml_error_string(xml_get_error_code($this->parser))
|
||||
);
|
||||
$this->debug($errstr);
|
||||
$this->debug("XML payload:\n" . $xml);
|
||||
$this->setError($errstr);
|
||||
}
|
||||
|
||||
xml_parser_free($this->parser);
|
||||
} else{
|
||||
$this->debug('no xml passed to parseString()!!');
|
||||
$this->setError('no xml passed to parseString()!!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a type name for an unnamed type
|
||||
*
|
||||
* @param string Element name
|
||||
* @return string A type name for an unnamed type
|
||||
* @access private
|
||||
*/
|
||||
function CreateTypeName($ename) {
|
||||
$scope = '';
|
||||
for ($i = 0; $i < count($this->complexTypeStack); $i++) {
|
||||
$scope .= $this->complexTypeStack[$i] . '_';
|
||||
}
|
||||
return $scope . $ename . '_ContainedType';
|
||||
}
|
||||
|
||||
/**
|
||||
* start-element handler
|
||||
*
|
||||
* @param string $parser XML parser object
|
||||
* @param string $name element name
|
||||
* @param string $attrs associative array of attributes
|
||||
* @access private
|
||||
*/
|
||||
function schemaStartElement($parser, $name, $attrs) {
|
||||
|
||||
// position in the total number of elements, starting from 0
|
||||
$pos = $this->position++;
|
||||
$depth = $this->depth++;
|
||||
// set self as current value for this depth
|
||||
$this->depth_array[$depth] = $pos;
|
||||
$this->message[$pos] = array('cdata' => '');
|
||||
if ($depth > 0) {
|
||||
$this->defaultNamespace[$pos] = $this->defaultNamespace[$this->depth_array[$depth - 1]];
|
||||
} else {
|
||||
$this->defaultNamespace[$pos] = false;
|
||||
}
|
||||
|
||||
// get element prefix
|
||||
if($prefix = $this->getPrefix($name)){
|
||||
// get unqualified name
|
||||
$name = $this->getLocalPart($name);
|
||||
} else {
|
||||
$prefix = '';
|
||||
}
|
||||
|
||||
// loop thru attributes, expanding, and registering namespace declarations
|
||||
if(count($attrs) > 0){
|
||||
foreach($attrs as $k => $v){
|
||||
// if ns declarations, add to class level array of valid namespaces
|
||||
if(preg_match('/^xmlns/',$k)){
|
||||
//$this->xdebug("$k: $v");
|
||||
//$this->xdebug('ns_prefix: '.$this->getPrefix($k));
|
||||
if($ns_prefix = substr(strrchr($k,':'),1)){
|
||||
//$this->xdebug("Add namespace[$ns_prefix] = $v");
|
||||
$this->namespaces[$ns_prefix] = $v;
|
||||
} else {
|
||||
$this->defaultNamespace[$pos] = $v;
|
||||
if (! $this->getPrefixFromNamespace($v)) {
|
||||
$this->namespaces['ns'.(count($this->namespaces)+1)] = $v;
|
||||
}
|
||||
}
|
||||
if($v == 'http://www.w3.org/2001/XMLSchema' || $v == 'http://www.w3.org/1999/XMLSchema' || $v == 'http://www.w3.org/2000/10/XMLSchema'){
|
||||
$this->XMLSchemaVersion = $v;
|
||||
$this->namespaces['xsi'] = $v.'-instance';
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach($attrs as $k => $v){
|
||||
// expand each attribute
|
||||
$k = strpos($k,':') ? $this->expandQname($k) : $k;
|
||||
$v = strpos($v,':') ? $this->expandQname($v) : $v;
|
||||
$eAttrs[$k] = $v;
|
||||
}
|
||||
$attrs = $eAttrs;
|
||||
} else {
|
||||
$attrs = array();
|
||||
}
|
||||
// find status, register data
|
||||
switch($name){
|
||||
case 'all': // (optional) compositor content for a complexType
|
||||
case 'choice':
|
||||
case 'group':
|
||||
case 'sequence':
|
||||
//$this->xdebug("compositor $name for currentComplexType: $this->currentComplexType and currentElement: $this->currentElement");
|
||||
$this->complexTypes[$this->currentComplexType]['compositor'] = $name;
|
||||
//if($name == 'all' || $name == 'sequence'){
|
||||
// $this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
|
||||
//}
|
||||
break;
|
||||
case 'attribute': // complexType attribute
|
||||
//$this->xdebug("parsing attribute $attrs[name] $attrs[ref] of value: ".$attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']);
|
||||
$this->xdebug("parsing attribute:");
|
||||
$this->appendDebug($this->varDump($attrs));
|
||||
if (!isset($attrs['form'])) {
|
||||
// TODO: handle globals
|
||||
$attrs['form'] = $this->schemaInfo['attributeFormDefault'];
|
||||
}
|
||||
if (isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])) {
|
||||
$v = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
|
||||
if (!strpos($v, ':')) {
|
||||
// no namespace in arrayType attribute value...
|
||||
if ($this->defaultNamespace[$pos]) {
|
||||
// ...so use the default
|
||||
$attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'] = $this->defaultNamespace[$pos] . ':' . $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($attrs['name'])){
|
||||
$this->attributes[$attrs['name']] = $attrs;
|
||||
$aname = $attrs['name'];
|
||||
} elseif(isset($attrs['ref']) && $attrs['ref'] == 'http://schemas.xmlsoap.org/soap/encoding/:arrayType'){
|
||||
if (isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])) {
|
||||
$aname = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
|
||||
} else {
|
||||
$aname = '';
|
||||
}
|
||||
} elseif(isset($attrs['ref'])){
|
||||
$aname = $attrs['ref'];
|
||||
$this->attributes[$attrs['ref']] = $attrs;
|
||||
}
|
||||
|
||||
if($this->currentComplexType){ // This should *always* be
|
||||
$this->complexTypes[$this->currentComplexType]['attrs'][$aname] = $attrs;
|
||||
}
|
||||
// arrayType attribute
|
||||
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']) || $this->getLocalPart($aname) == 'arrayType'){
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
|
||||
$prefix = $this->getPrefix($aname);
|
||||
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])){
|
||||
$v = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
|
||||
} else {
|
||||
$v = '';
|
||||
}
|
||||
if(strpos($v,'[,]')){
|
||||
$this->complexTypes[$this->currentComplexType]['multidimensional'] = true;
|
||||
}
|
||||
$v = substr($v,0,strpos($v,'[')); // clip the []
|
||||
if(!strpos($v,':') && isset($this->typemap[$this->XMLSchemaVersion][$v])){
|
||||
$v = $this->XMLSchemaVersion.':'.$v;
|
||||
}
|
||||
$this->complexTypes[$this->currentComplexType]['arrayType'] = $v;
|
||||
}
|
||||
break;
|
||||
case 'complexContent': // (optional) content for a complexType
|
||||
$this->xdebug("do nothing for element $name");
|
||||
break;
|
||||
case 'complexType':
|
||||
array_push($this->complexTypeStack, $this->currentComplexType);
|
||||
if(isset($attrs['name'])){
|
||||
// TODO: what is the scope of named complexTypes that appear
|
||||
// nested within other c complexTypes?
|
||||
$this->xdebug('processing named complexType '.$attrs['name']);
|
||||
//$this->currentElement = false;
|
||||
$this->currentComplexType = $attrs['name'];
|
||||
$this->complexTypes[$this->currentComplexType] = $attrs;
|
||||
$this->complexTypes[$this->currentComplexType]['typeClass'] = 'complexType';
|
||||
// This is for constructs like
|
||||
// <complexType name="ListOfString" base="soap:Array">
|
||||
// <sequence>
|
||||
// <element name="string" type="xsd:string"
|
||||
// minOccurs="0" maxOccurs="unbounded" />
|
||||
// </sequence>
|
||||
// </complexType>
|
||||
if(isset($attrs['base']) && preg_match('/:Array$/',$attrs['base'])){
|
||||
$this->xdebug('complexType is unusual array');
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
|
||||
} else {
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
|
||||
}
|
||||
} else {
|
||||
$name = $this->CreateTypeName($this->currentElement);
|
||||
$this->xdebug('processing unnamed complexType for element ' . $this->currentElement . ' named ' . $name);
|
||||
$this->currentComplexType = $name;
|
||||
//$this->currentElement = false;
|
||||
$this->complexTypes[$this->currentComplexType] = $attrs;
|
||||
$this->complexTypes[$this->currentComplexType]['typeClass'] = 'complexType';
|
||||
// This is for constructs like
|
||||
// <complexType name="ListOfString" base="soap:Array">
|
||||
// <sequence>
|
||||
// <element name="string" type="xsd:string"
|
||||
// minOccurs="0" maxOccurs="unbounded" />
|
||||
// </sequence>
|
||||
// </complexType>
|
||||
if(isset($attrs['base']) && preg_match('/:Array$/',$attrs['base'])){
|
||||
$this->xdebug('complexType is unusual array');
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
|
||||
} else {
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
|
||||
}
|
||||
}
|
||||
$this->complexTypes[$this->currentComplexType]['simpleContent'] = 'false';
|
||||
break;
|
||||
case 'element':
|
||||
array_push($this->elementStack, $this->currentElement);
|
||||
if (!isset($attrs['form'])) {
|
||||
if ($this->currentComplexType) {
|
||||
$attrs['form'] = $this->schemaInfo['elementFormDefault'];
|
||||
} else {
|
||||
// global
|
||||
$attrs['form'] = 'qualified';
|
||||
}
|
||||
}
|
||||
if(isset($attrs['type'])){
|
||||
$this->xdebug("processing typed element ".$attrs['name']." of type ".$attrs['type']);
|
||||
if (! $this->getPrefix($attrs['type'])) {
|
||||
if ($this->defaultNamespace[$pos]) {
|
||||
$attrs['type'] = $this->defaultNamespace[$pos] . ':' . $attrs['type'];
|
||||
$this->xdebug('used default namespace to make type ' . $attrs['type']);
|
||||
}
|
||||
}
|
||||
// This is for constructs like
|
||||
// <complexType name="ListOfString" base="soap:Array">
|
||||
// <sequence>
|
||||
// <element name="string" type="xsd:string"
|
||||
// minOccurs="0" maxOccurs="unbounded" />
|
||||
// </sequence>
|
||||
// </complexType>
|
||||
if ($this->currentComplexType && $this->complexTypes[$this->currentComplexType]['phpType'] == 'array') {
|
||||
$this->xdebug('arrayType for unusual array is ' . $attrs['type']);
|
||||
$this->complexTypes[$this->currentComplexType]['arrayType'] = $attrs['type'];
|
||||
}
|
||||
$this->currentElement = $attrs['name'];
|
||||
$ename = $attrs['name'];
|
||||
} elseif(isset($attrs['ref'])){
|
||||
$this->xdebug("processing element as ref to ".$attrs['ref']);
|
||||
$this->currentElement = "ref to ".$attrs['ref'];
|
||||
$ename = $this->getLocalPart($attrs['ref']);
|
||||
} else {
|
||||
$type = $this->CreateTypeName($this->currentComplexType . '_' . $attrs['name']);
|
||||
$this->xdebug("processing untyped element " . $attrs['name'] . ' type ' . $type);
|
||||
$this->currentElement = $attrs['name'];
|
||||
$attrs['type'] = $this->schemaTargetNamespace . ':' . $type;
|
||||
$ename = $attrs['name'];
|
||||
}
|
||||
if (isset($ename) && $this->currentComplexType) {
|
||||
$this->xdebug("add element $ename to complexType $this->currentComplexType");
|
||||
$this->complexTypes[$this->currentComplexType]['elements'][$ename] = $attrs;
|
||||
} elseif (!isset($attrs['ref'])) {
|
||||
$this->xdebug("add element $ename to elements array");
|
||||
$this->elements[ $attrs['name'] ] = $attrs;
|
||||
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
|
||||
}
|
||||
break;
|
||||
case 'enumeration': // restriction value list member
|
||||
$this->xdebug('enumeration ' . $attrs['value']);
|
||||
if ($this->currentSimpleType) {
|
||||
$this->simpleTypes[$this->currentSimpleType]['enumeration'][] = $attrs['value'];
|
||||
} elseif ($this->currentComplexType) {
|
||||
$this->complexTypes[$this->currentComplexType]['enumeration'][] = $attrs['value'];
|
||||
}
|
||||
break;
|
||||
case 'extension': // simpleContent or complexContent type extension
|
||||
$this->xdebug('extension ' . $attrs['base']);
|
||||
if ($this->currentComplexType) {
|
||||
$ns = $this->getPrefix($attrs['base']);
|
||||
if ($ns == '') {
|
||||
$this->complexTypes[$this->currentComplexType]['extensionBase'] = $this->schemaTargetNamespace . ':' . $attrs['base'];
|
||||
} else {
|
||||
$this->complexTypes[$this->currentComplexType]['extensionBase'] = $attrs['base'];
|
||||
}
|
||||
} else {
|
||||
$this->xdebug('no current complexType to set extensionBase');
|
||||
}
|
||||
break;
|
||||
case 'import':
|
||||
if (isset($attrs['schemaLocation'])) {
|
||||
$this->xdebug('import namespace ' . $attrs['namespace'] . ' from ' . $attrs['schemaLocation']);
|
||||
$this->imports[$attrs['namespace']][] = array('location' => $attrs['schemaLocation'], 'loaded' => false);
|
||||
} else {
|
||||
$this->xdebug('import namespace ' . $attrs['namespace']);
|
||||
$this->imports[$attrs['namespace']][] = array('location' => '', 'loaded' => true);
|
||||
if (! $this->getPrefixFromNamespace($attrs['namespace'])) {
|
||||
$this->namespaces['ns'.(count($this->namespaces)+1)] = $attrs['namespace'];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'include':
|
||||
if (isset($attrs['schemaLocation'])) {
|
||||
$this->xdebug('include into namespace ' . $this->schemaTargetNamespace . ' from ' . $attrs['schemaLocation']);
|
||||
$this->imports[$this->schemaTargetNamespace][] = array('location' => $attrs['schemaLocation'], 'loaded' => false);
|
||||
} else {
|
||||
$this->xdebug('ignoring invalid XML Schema construct: include without schemaLocation attribute');
|
||||
}
|
||||
break;
|
||||
case 'list': // simpleType value list
|
||||
$this->xdebug("do nothing for element $name");
|
||||
break;
|
||||
case 'restriction': // simpleType, simpleContent or complexContent value restriction
|
||||
$this->xdebug('restriction ' . $attrs['base']);
|
||||
if($this->currentSimpleType){
|
||||
$this->simpleTypes[$this->currentSimpleType]['type'] = $attrs['base'];
|
||||
} elseif($this->currentComplexType){
|
||||
$this->complexTypes[$this->currentComplexType]['restrictionBase'] = $attrs['base'];
|
||||
if(strstr($attrs['base'],':') == ':Array'){
|
||||
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'schema':
|
||||
$this->schemaInfo = $attrs;
|
||||
$this->schemaInfo['schemaVersion'] = $this->getNamespaceFromPrefix($prefix);
|
||||
if (isset($attrs['targetNamespace'])) {
|
||||
$this->schemaTargetNamespace = $attrs['targetNamespace'];
|
||||
}
|
||||
if (!isset($attrs['elementFormDefault'])) {
|
||||
$this->schemaInfo['elementFormDefault'] = 'unqualified';
|
||||
}
|
||||
if (!isset($attrs['attributeFormDefault'])) {
|
||||
$this->schemaInfo['attributeFormDefault'] = 'unqualified';
|
||||
}
|
||||
break;
|
||||
case 'simpleContent': // (optional) content for a complexType
|
||||
if ($this->currentComplexType) { // This should *always* be
|
||||
$this->complexTypes[$this->currentComplexType]['simpleContent'] = 'true';
|
||||
} else {
|
||||
$this->xdebug("do nothing for element $name because there is no current complexType");
|
||||
}
|
||||
break;
|
||||
case 'simpleType':
|
||||
array_push($this->simpleTypeStack, $this->currentSimpleType);
|
||||
if(isset($attrs['name'])){
|
||||
$this->xdebug("processing simpleType for name " . $attrs['name']);
|
||||
$this->currentSimpleType = $attrs['name'];
|
||||
$this->simpleTypes[ $attrs['name'] ] = $attrs;
|
||||
$this->simpleTypes[ $attrs['name'] ]['typeClass'] = 'simpleType';
|
||||
$this->simpleTypes[ $attrs['name'] ]['phpType'] = 'scalar';
|
||||
} else {
|
||||
$name = $this->CreateTypeName($this->currentComplexType . '_' . $this->currentElement);
|
||||
$this->xdebug('processing unnamed simpleType for element ' . $this->currentElement . ' named ' . $name);
|
||||
$this->currentSimpleType = $name;
|
||||
//$this->currentElement = false;
|
||||
$this->simpleTypes[$this->currentSimpleType] = $attrs;
|
||||
$this->simpleTypes[$this->currentSimpleType]['phpType'] = 'scalar';
|
||||
}
|
||||
break;
|
||||
case 'union': // simpleType type list
|
||||
$this->xdebug("do nothing for element $name");
|
||||
break;
|
||||
default:
|
||||
$this->xdebug("do not have any logic to process element $name");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* end-element handler
|
||||
*
|
||||
* @param string $parser XML parser object
|
||||
* @param string $name element name
|
||||
* @access private
|
||||
*/
|
||||
function schemaEndElement($parser, $name) {
|
||||
// bring depth down a notch
|
||||
$this->depth--;
|
||||
// position of current element is equal to the last value left in depth_array for my depth
|
||||
if(isset($this->depth_array[$this->depth])){
|
||||
$pos = $this->depth_array[$this->depth];
|
||||
}
|
||||
// get element prefix
|
||||
if ($prefix = $this->getPrefix($name)){
|
||||
// get unqualified name
|
||||
$name = $this->getLocalPart($name);
|
||||
} else {
|
||||
$prefix = '';
|
||||
}
|
||||
// move on...
|
||||
if($name == 'complexType'){
|
||||
$this->xdebug('done processing complexType ' . ($this->currentComplexType ? $this->currentComplexType : '(unknown)'));
|
||||
$this->xdebug($this->varDump($this->complexTypes[$this->currentComplexType]));
|
||||
$this->currentComplexType = array_pop($this->complexTypeStack);
|
||||
//$this->currentElement = false;
|
||||
}
|
||||
if($name == 'element'){
|
||||
$this->xdebug('done processing element ' . ($this->currentElement ? $this->currentElement : '(unknown)'));
|
||||
$this->currentElement = array_pop($this->elementStack);
|
||||
}
|
||||
if($name == 'simpleType'){
|
||||
$this->xdebug('done processing simpleType ' . ($this->currentSimpleType ? $this->currentSimpleType : '(unknown)'));
|
||||
$this->xdebug($this->varDump($this->simpleTypes[$this->currentSimpleType]));
|
||||
$this->currentSimpleType = array_pop($this->simpleTypeStack);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* element content handler
|
||||
*
|
||||
* @param string $parser XML parser object
|
||||
* @param string $data element content
|
||||
* @access private
|
||||
*/
|
||||
function schemaCharacterData($parser, $data){
|
||||
$pos = $this->depth_array[$this->depth - 1];
|
||||
$this->message[$pos]['cdata'] .= $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* serialize the schema
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function serializeSchema(){
|
||||
|
||||
$schemaPrefix = $this->getPrefixFromNamespace($this->XMLSchemaVersion);
|
||||
$xml = '';
|
||||
// imports
|
||||
if (sizeof($this->imports) > 0) {
|
||||
foreach($this->imports as $ns => $list) {
|
||||
foreach ($list as $ii) {
|
||||
if ($ii['location'] != '') {
|
||||
$xml .= " <$schemaPrefix:import location=\"" . $ii['location'] . '" namespace="' . $ns . "\" />\n";
|
||||
} else {
|
||||
$xml .= " <$schemaPrefix:import namespace=\"" . $ns . "\" />\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// complex types
|
||||
foreach($this->complexTypes as $typeName => $attrs){
|
||||
$contentStr = '';
|
||||
// serialize child elements
|
||||
if(isset($attrs['elements']) && (count($attrs['elements']) > 0)){
|
||||
foreach($attrs['elements'] as $element => $eParts){
|
||||
if(isset($eParts['ref'])){
|
||||
$contentStr .= " <$schemaPrefix:element ref=\"$element\"/>\n";
|
||||
} else {
|
||||
$contentStr .= " <$schemaPrefix:element name=\"$element\" type=\"" . $this->contractQName($eParts['type']) . "\"";
|
||||
foreach ($eParts as $aName => $aValue) {
|
||||
// handle, e.g., abstract, default, form, minOccurs, maxOccurs, nillable
|
||||
if ($aName != 'name' && $aName != 'type') {
|
||||
$contentStr .= " $aName=\"$aValue\"";
|
||||
}
|
||||
}
|
||||
$contentStr .= "/>\n";
|
||||
}
|
||||
}
|
||||
// compositor wraps elements
|
||||
if (isset($attrs['compositor']) && ($attrs['compositor'] != '')) {
|
||||
$contentStr = " <$schemaPrefix:$attrs[compositor]>\n".$contentStr." </$schemaPrefix:$attrs[compositor]>\n";
|
||||
}
|
||||
}
|
||||
// attributes
|
||||
if(isset($attrs['attrs']) && (count($attrs['attrs']) >= 1)){
|
||||
foreach($attrs['attrs'] as $attr => $aParts){
|
||||
$contentStr .= " <$schemaPrefix:attribute";
|
||||
foreach ($aParts as $a => $v) {
|
||||
if ($a == 'ref' || $a == 'type') {
|
||||
$contentStr .= " $a=\"".$this->contractQName($v).'"';
|
||||
} elseif ($a == 'http://schemas.xmlsoap.org/wsdl/:arrayType') {
|
||||
$this->usedNamespaces['wsdl'] = $this->namespaces['wsdl'];
|
||||
$contentStr .= ' wsdl:arrayType="'.$this->contractQName($v).'"';
|
||||
} else {
|
||||
$contentStr .= " $a=\"$v\"";
|
||||
}
|
||||
}
|
||||
$contentStr .= "/>\n";
|
||||
}
|
||||
}
|
||||
// if restriction
|
||||
if (isset($attrs['restrictionBase']) && $attrs['restrictionBase'] != ''){
|
||||
$contentStr = " <$schemaPrefix:restriction base=\"".$this->contractQName($attrs['restrictionBase'])."\">\n".$contentStr." </$schemaPrefix:restriction>\n";
|
||||
// complex or simple content
|
||||
if ((isset($attrs['elements']) && count($attrs['elements']) > 0) || (isset($attrs['attrs']) && count($attrs['attrs']) > 0)){
|
||||
$contentStr = " <$schemaPrefix:complexContent>\n".$contentStr." </$schemaPrefix:complexContent>\n";
|
||||
}
|
||||
}
|
||||
// finalize complex type
|
||||
if($contentStr != ''){
|
||||
$contentStr = " <$schemaPrefix:complexType name=\"$typeName\">\n".$contentStr." </$schemaPrefix:complexType>\n";
|
||||
} else {
|
||||
$contentStr = " <$schemaPrefix:complexType name=\"$typeName\"/>\n";
|
||||
}
|
||||
$xml .= $contentStr;
|
||||
}
|
||||
// simple types
|
||||
if(isset($this->simpleTypes) && count($this->simpleTypes) > 0){
|
||||
foreach($this->simpleTypes as $typeName => $eParts){
|
||||
$xml .= " <$schemaPrefix:simpleType name=\"$typeName\">\n <$schemaPrefix:restriction base=\"".$this->contractQName($eParts['type'])."\">\n";
|
||||
if (isset($eParts['enumeration'])) {
|
||||
foreach ($eParts['enumeration'] as $e) {
|
||||
$xml .= " <$schemaPrefix:enumeration value=\"$e\"/>\n";
|
||||
}
|
||||
}
|
||||
$xml .= " </$schemaPrefix:restriction>\n </$schemaPrefix:simpleType>";
|
||||
}
|
||||
}
|
||||
// elements
|
||||
if(isset($this->elements) && count($this->elements) > 0){
|
||||
foreach($this->elements as $element => $eParts){
|
||||
$xml .= " <$schemaPrefix:element name=\"$element\" type=\"".$this->contractQName($eParts['type'])."\"/>\n";
|
||||
}
|
||||
}
|
||||
// attributes
|
||||
if(isset($this->attributes) && count($this->attributes) > 0){
|
||||
foreach($this->attributes as $attr => $aParts){
|
||||
$xml .= " <$schemaPrefix:attribute name=\"$attr\" type=\"".$this->contractQName($aParts['type'])."\"\n/>";
|
||||
}
|
||||
}
|
||||
// finish 'er up
|
||||
$attr = '';
|
||||
foreach ($this->schemaInfo as $k => $v) {
|
||||
if ($k == 'elementFormDefault' || $k == 'attributeFormDefault') {
|
||||
$attr .= " $k=\"$v\"";
|
||||
}
|
||||
}
|
||||
$el = "<$schemaPrefix:schema$attr targetNamespace=\"$this->schemaTargetNamespace\"\n";
|
||||
foreach (array_diff($this->usedNamespaces, $this->enclosingNamespaces) as $nsp => $ns) {
|
||||
$el .= " xmlns:$nsp=\"$ns\"";
|
||||
}
|
||||
$xml = $el . ">\n".$xml."</$schemaPrefix:schema>\n";
|
||||
return $xml;
|
||||
}
|
||||
|
||||
/**
|
||||
* adds debug data to the clas level debug string
|
||||
*
|
||||
* @param string $string debug data
|
||||
* @access private
|
||||
*/
|
||||
function xdebug($string){
|
||||
$this->debug('<' . $this->schemaTargetNamespace . '> '.$string);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the PHP type of a user defined type in the schema
|
||||
* PHP type is kind of a misnomer since it actually returns 'struct' for assoc. arrays
|
||||
* returns false if no type exists, or not w/ the given namespace
|
||||
* else returns a string that is either a native php type, or 'struct'
|
||||
*
|
||||
* @param string $type name of defined type
|
||||
* @param string $ns namespace of type
|
||||
* @return mixed
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function getPHPType($type,$ns){
|
||||
if(isset($this->typemap[$ns][$type])){
|
||||
//print "found type '$type' and ns $ns in typemap<br>";
|
||||
return $this->typemap[$ns][$type];
|
||||
} elseif(isset($this->complexTypes[$type])){
|
||||
//print "getting type '$type' and ns $ns from complexTypes array<br>";
|
||||
return $this->complexTypes[$type]['phpType'];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns an associative array of information about a given type
|
||||
* returns false if no type exists by the given name
|
||||
*
|
||||
* For a complexType typeDef = array(
|
||||
* 'restrictionBase' => '',
|
||||
* 'phpType' => '',
|
||||
* 'compositor' => '(sequence|all)',
|
||||
* 'elements' => array(), // refs to elements array
|
||||
* 'attrs' => array() // refs to attributes array
|
||||
* ... and so on (see addComplexType)
|
||||
* )
|
||||
*
|
||||
* For simpleType or element, the array has different keys.
|
||||
*
|
||||
* @param string $type
|
||||
* @return mixed
|
||||
* @access public
|
||||
* @see addComplexType
|
||||
* @see addSimpleType
|
||||
* @see addElement
|
||||
*/
|
||||
function getTypeDef($type){
|
||||
//$this->debug("in getTypeDef for type $type");
|
||||
if (substr($type, -1) == '^') {
|
||||
$is_element = 1;
|
||||
$type = substr($type, 0, -1);
|
||||
} else {
|
||||
$is_element = 0;
|
||||
}
|
||||
|
||||
if((! $is_element) && isset($this->complexTypes[$type])){
|
||||
$this->xdebug("in getTypeDef, found complexType $type");
|
||||
return $this->complexTypes[$type];
|
||||
} elseif((! $is_element) && isset($this->simpleTypes[$type])){
|
||||
$this->xdebug("in getTypeDef, found simpleType $type");
|
||||
if (!isset($this->simpleTypes[$type]['phpType'])) {
|
||||
// get info for type to tack onto the simple type
|
||||
// TODO: can this ever really apply (i.e. what is a simpleType really?)
|
||||
$uqType = substr($this->simpleTypes[$type]['type'], strrpos($this->simpleTypes[$type]['type'], ':') + 1);
|
||||
$ns = substr($this->simpleTypes[$type]['type'], 0, strrpos($this->simpleTypes[$type]['type'], ':'));
|
||||
$etype = $this->getTypeDef($uqType);
|
||||
if ($etype) {
|
||||
$this->xdebug("in getTypeDef, found type for simpleType $type:");
|
||||
$this->xdebug($this->varDump($etype));
|
||||
if (isset($etype['phpType'])) {
|
||||
$this->simpleTypes[$type]['phpType'] = $etype['phpType'];
|
||||
}
|
||||
if (isset($etype['elements'])) {
|
||||
$this->simpleTypes[$type]['elements'] = $etype['elements'];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->simpleTypes[$type];
|
||||
} elseif(isset($this->elements[$type])){
|
||||
$this->xdebug("in getTypeDef, found element $type");
|
||||
if (!isset($this->elements[$type]['phpType'])) {
|
||||
// get info for type to tack onto the element
|
||||
$uqType = substr($this->elements[$type]['type'], strrpos($this->elements[$type]['type'], ':') + 1);
|
||||
$ns = substr($this->elements[$type]['type'], 0, strrpos($this->elements[$type]['type'], ':'));
|
||||
$etype = $this->getTypeDef($uqType);
|
||||
if ($etype) {
|
||||
$this->xdebug("in getTypeDef, found type for element $type:");
|
||||
$this->xdebug($this->varDump($etype));
|
||||
if (isset($etype['phpType'])) {
|
||||
$this->elements[$type]['phpType'] = $etype['phpType'];
|
||||
}
|
||||
if (isset($etype['elements'])) {
|
||||
$this->elements[$type]['elements'] = $etype['elements'];
|
||||
}
|
||||
if (isset($etype['extensionBase'])) {
|
||||
$this->elements[$type]['extensionBase'] = $etype['extensionBase'];
|
||||
}
|
||||
} elseif ($ns == 'http://www.w3.org/2001/XMLSchema') {
|
||||
$this->xdebug("in getTypeDef, element $type is an XSD type");
|
||||
$this->elements[$type]['phpType'] = 'scalar';
|
||||
}
|
||||
}
|
||||
return $this->elements[$type];
|
||||
} elseif(isset($this->attributes[$type])){
|
||||
$this->xdebug("in getTypeDef, found attribute $type");
|
||||
return $this->attributes[$type];
|
||||
} elseif (preg_match('/_ContainedType$/', $type)) {
|
||||
$this->xdebug("in getTypeDef, have an untyped element $type");
|
||||
$typeDef['typeClass'] = 'simpleType';
|
||||
$typeDef['phpType'] = 'scalar';
|
||||
$typeDef['type'] = 'http://www.w3.org/2001/XMLSchema:string';
|
||||
return $typeDef;
|
||||
}
|
||||
$this->xdebug("in getTypeDef, did not find $type");
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a sample serialization of a given type, or false if no type by the given name
|
||||
*
|
||||
* @param string $type name of type
|
||||
* @return mixed
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function serializeTypeDef($type){
|
||||
//print "in sTD() for type $type<br>";
|
||||
if($typeDef = $this->getTypeDef($type)){
|
||||
$str .= '<'.$type;
|
||||
if(is_array($typeDef['attrs'])){
|
||||
foreach($typeDef['attrs'] as $attName => $data){
|
||||
$str .= " $attName=\"{type = ".$data['type']."}\"";
|
||||
}
|
||||
}
|
||||
$str .= " xmlns=\"".$this->schema['targetNamespace']."\"";
|
||||
if(count($typeDef['elements']) > 0){
|
||||
$str .= ">";
|
||||
foreach($typeDef['elements'] as $element => $eData){
|
||||
$str .= $this->serializeTypeDef($element);
|
||||
}
|
||||
$str .= "</$type>";
|
||||
} elseif($typeDef['typeClass'] == 'element') {
|
||||
$str .= "></$type>";
|
||||
} else {
|
||||
$str .= "/>";
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns HTML form elements that allow a user
|
||||
* to enter values for creating an instance of the given type.
|
||||
*
|
||||
* @param string $name name for type instance
|
||||
* @param string $type name of type
|
||||
* @return string
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function typeToForm($name,$type){
|
||||
// get typedef
|
||||
if($typeDef = $this->getTypeDef($type)){
|
||||
// if struct
|
||||
if($typeDef['phpType'] == 'struct'){
|
||||
$buffer .= '<table>';
|
||||
foreach($typeDef['elements'] as $child => $childDef){
|
||||
$buffer .= "
|
||||
<tr><td align='right'>$childDef[name] (type: ".$this->getLocalPart($childDef['type'])."):</td>
|
||||
<td><input type='text' name='parameters[".$name."][$childDef[name]]'></td></tr>";
|
||||
}
|
||||
$buffer .= '</table>';
|
||||
// if array
|
||||
} elseif($typeDef['phpType'] == 'array'){
|
||||
$buffer .= '<table>';
|
||||
for($i=0;$i < 3; $i++){
|
||||
$buffer .= "
|
||||
<tr><td align='right'>array item (type: $typeDef[arrayType]):</td>
|
||||
<td><input type='text' name='parameters[".$name."][]'></td></tr>";
|
||||
}
|
||||
$buffer .= '</table>';
|
||||
// if scalar
|
||||
} else {
|
||||
$buffer .= "<input type='text' name='parameters[$name]'>";
|
||||
}
|
||||
} else {
|
||||
$buffer .= "<input type='text' name='parameters[$name]'>";
|
||||
}
|
||||
return $buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a complex type to the schema
|
||||
*
|
||||
* example: array
|
||||
*
|
||||
* addType(
|
||||
* 'ArrayOfstring',
|
||||
* 'complexType',
|
||||
* 'array',
|
||||
* '',
|
||||
* 'SOAP-ENC:Array',
|
||||
* array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]'),
|
||||
* 'xsd:string'
|
||||
* );
|
||||
*
|
||||
* example: PHP associative array ( SOAP Struct )
|
||||
*
|
||||
* addType(
|
||||
* 'SOAPStruct',
|
||||
* 'complexType',
|
||||
* 'struct',
|
||||
* 'all',
|
||||
* array('myVar'=> array('name'=>'myVar','type'=>'string')
|
||||
* );
|
||||
*
|
||||
* @param name
|
||||
* @param typeClass (complexType|simpleType|attribute)
|
||||
* @param phpType: currently supported are array and struct (php assoc array)
|
||||
* @param compositor (all|sequence|choice)
|
||||
* @param restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
|
||||
* @param elements = array ( name = array(name=>'',type=>'') )
|
||||
* @param attrs = array(
|
||||
* array(
|
||||
* 'ref' => "http://schemas.xmlsoap.org/soap/encoding/:arrayType",
|
||||
* "http://schemas.xmlsoap.org/wsdl/:arrayType" => "string[]"
|
||||
* )
|
||||
* )
|
||||
* @param arrayType: namespace:name (http://www.w3.org/2001/XMLSchema:string)
|
||||
* @access public
|
||||
* @see getTypeDef
|
||||
*/
|
||||
function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType=''){
|
||||
$this->complexTypes[$name] = array(
|
||||
'name' => $name,
|
||||
'typeClass' => $typeClass,
|
||||
'phpType' => $phpType,
|
||||
'compositor'=> $compositor,
|
||||
'restrictionBase' => $restrictionBase,
|
||||
'elements' => $elements,
|
||||
'attrs' => $attrs,
|
||||
'arrayType' => $arrayType
|
||||
);
|
||||
|
||||
$this->xdebug("addComplexType $name:");
|
||||
$this->appendDebug($this->varDump($this->complexTypes[$name]));
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a simple type to the schema
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
|
||||
* @param string $typeClass (should always be simpleType)
|
||||
* @param string $phpType (should always be scalar)
|
||||
* @param array $enumeration array of values
|
||||
* @access public
|
||||
* @see nusoap_xmlschema
|
||||
* @see getTypeDef
|
||||
*/
|
||||
function addSimpleType($name, $restrictionBase='', $typeClass='simpleType', $phpType='scalar', $enumeration=array()) {
|
||||
$this->simpleTypes[$name] = array(
|
||||
'name' => $name,
|
||||
'typeClass' => $typeClass,
|
||||
'phpType' => $phpType,
|
||||
'type' => $restrictionBase,
|
||||
'enumeration' => $enumeration
|
||||
);
|
||||
|
||||
$this->xdebug("addSimpleType $name:");
|
||||
$this->appendDebug($this->varDump($this->simpleTypes[$name]));
|
||||
}
|
||||
|
||||
/**
|
||||
* adds an element to the schema
|
||||
*
|
||||
* @param array $attrs attributes that must include name and type
|
||||
* @see nusoap_xmlschema
|
||||
* @access public
|
||||
*/
|
||||
function addElement($attrs) {
|
||||
if (! $this->getPrefix($attrs['type'])) {
|
||||
$attrs['type'] = $this->schemaTargetNamespace . ':' . $attrs['type'];
|
||||
}
|
||||
$this->elements[ $attrs['name'] ] = $attrs;
|
||||
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
|
||||
|
||||
$this->xdebug("addElement " . $attrs['name']);
|
||||
$this->appendDebug($this->varDump($this->elements[ $attrs['name'] ]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Backward compatibility
|
||||
*/
|
||||
class XMLSchema extends nusoap_xmlschema {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,501 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
$Id: nusoapmime.php,v 1.13 2010/04/26 20:15:08 snichol Exp $
|
||||
|
||||
NuSOAP - Web Services Toolkit for PHP
|
||||
|
||||
Copyright (c) 2002 NuSphere Corporation
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
The NuSOAP project home is:
|
||||
http://sourceforge.net/projects/nusoap/
|
||||
|
||||
The primary support for NuSOAP is the mailing list:
|
||||
nusoap-general@lists.sourceforge.net
|
||||
|
||||
If you have any questions or comments, please email:
|
||||
|
||||
Dietrich Ayala
|
||||
dietrich@ganx4.com
|
||||
http://dietrich.ganx4.com/nusoap
|
||||
|
||||
NuSphere Corporation
|
||||
http://www.nusphere.com
|
||||
|
||||
*/
|
||||
|
||||
/*require_once('nusoap.php');*/
|
||||
/* PEAR Mail_MIME library */
|
||||
require_once('Mail/mimeDecode.php');
|
||||
require_once('Mail/mimePart.php');
|
||||
|
||||
/**
|
||||
* nusoap_client_mime client supporting MIME attachments defined at
|
||||
* http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
|
||||
*
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @author Thanks to Guillaume and Henning Reich for posting great attachment code to the mail list
|
||||
* @version $Id: nusoapmime.php,v 1.13 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_client_mime extends nusoap_client {
|
||||
/**
|
||||
* @var array Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid
|
||||
* @access private
|
||||
*/
|
||||
var $requestAttachments = array();
|
||||
/**
|
||||
* @var array Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid
|
||||
* @access private
|
||||
*/
|
||||
var $responseAttachments;
|
||||
/**
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $mimeContentType;
|
||||
|
||||
/**
|
||||
* adds a MIME attachment to the current request.
|
||||
*
|
||||
* If the $data parameter contains an empty string, this method will read
|
||||
* the contents of the file named by the $filename parameter.
|
||||
*
|
||||
* If the $cid parameter is false, this method will generate the cid.
|
||||
*
|
||||
* @param string $data The data of the attachment
|
||||
* @param string $filename The filename of the attachment (default is empty string)
|
||||
* @param string $contenttype The MIME Content-Type of the attachment (default is application/octet-stream)
|
||||
* @param string $cid The content-id (cid) of the attachment (default is false)
|
||||
* @return string The content-id (cid) of the attachment
|
||||
* @access public
|
||||
*/
|
||||
function addAttachment($data, $filename = '', $contenttype = 'application/octet-stream', $cid = false) {
|
||||
if (! $cid) {
|
||||
$cid = md5(uniqid(time()));
|
||||
}
|
||||
|
||||
$info['data'] = $data;
|
||||
$info['filename'] = $filename;
|
||||
$info['contenttype'] = $contenttype;
|
||||
$info['cid'] = $cid;
|
||||
|
||||
$this->requestAttachments[] = $info;
|
||||
|
||||
return $cid;
|
||||
}
|
||||
|
||||
/**
|
||||
* clears the MIME attachments for the current request.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function clearAttachments() {
|
||||
$this->requestAttachments = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the MIME attachments from the current response.
|
||||
*
|
||||
* Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid. These keys correspond to the parameters
|
||||
* for addAttachment.
|
||||
*
|
||||
* @return array The attachments.
|
||||
* @access public
|
||||
*/
|
||||
function getAttachments() {
|
||||
return $this->responseAttachments;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP body for the current request.
|
||||
*
|
||||
* @param string $soapmsg The SOAP payload
|
||||
* @return string The HTTP body, which includes the SOAP payload
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPBody($soapmsg) {
|
||||
if (count($this->requestAttachments) > 0) {
|
||||
$params['content_type'] = 'multipart/related; type="text/xml"';
|
||||
$mimeMessage = new Mail_mimePart('', $params);
|
||||
unset($params);
|
||||
|
||||
$params['content_type'] = 'text/xml';
|
||||
$params['encoding'] = '8bit';
|
||||
$params['charset'] = $this->soap_defencoding;
|
||||
$mimeMessage->addSubpart($soapmsg, $params);
|
||||
|
||||
foreach ($this->requestAttachments as $att) {
|
||||
unset($params);
|
||||
|
||||
$params['content_type'] = $att['contenttype'];
|
||||
$params['encoding'] = 'base64';
|
||||
$params['disposition'] = 'attachment';
|
||||
$params['dfilename'] = $att['filename'];
|
||||
$params['cid'] = $att['cid'];
|
||||
|
||||
if ($att['data'] == '' && $att['filename'] <> '') {
|
||||
if ($fd = fopen($att['filename'], 'rb')) {
|
||||
$data = fread($fd, filesize($att['filename']));
|
||||
fclose($fd);
|
||||
} else {
|
||||
$data = '';
|
||||
}
|
||||
$mimeMessage->addSubpart($data, $params);
|
||||
} else {
|
||||
$mimeMessage->addSubpart($att['data'], $params);
|
||||
}
|
||||
}
|
||||
|
||||
$output = $mimeMessage->encode();
|
||||
$mimeHeaders = $output['headers'];
|
||||
|
||||
foreach ($mimeHeaders as $k => $v) {
|
||||
$this->debug("MIME header $k: $v");
|
||||
if (strtolower($k) == 'content-type') {
|
||||
// PHP header() seems to strip leading whitespace starting
|
||||
// the second line, so force everything to one line
|
||||
$this->mimeContentType = str_replace("\r\n", " ", $v);
|
||||
}
|
||||
}
|
||||
|
||||
return $output['body'];
|
||||
}
|
||||
|
||||
return parent::getHTTPBody($soapmsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type for the current request.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type for the current request.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentType() {
|
||||
if (count($this->requestAttachments) > 0) {
|
||||
return $this->mimeContentType;
|
||||
}
|
||||
return parent::getHTTPContentType();
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type charset for the current request.
|
||||
* returns false for non-text content types.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type charset for the current request.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentTypeCharset() {
|
||||
if (count($this->requestAttachments) > 0) {
|
||||
return false;
|
||||
}
|
||||
return parent::getHTTPContentTypeCharset();
|
||||
}
|
||||
|
||||
/**
|
||||
* processes SOAP message returned from server
|
||||
*
|
||||
* @param array $headers The HTTP headers
|
||||
* @param string $data unprocessed response data from server
|
||||
* @return mixed value of the message, decoded into a PHP type
|
||||
* @access private
|
||||
*/
|
||||
function parseResponse($headers, $data) {
|
||||
$this->debug('Entering parseResponse() for payload of length ' . strlen($data) . ' and type of ' . $headers['content-type']);
|
||||
$this->responseAttachments = array();
|
||||
if (strstr($headers['content-type'], 'multipart/related')) {
|
||||
$this->debug('Decode multipart/related');
|
||||
$input = '';
|
||||
foreach ($headers as $k => $v) {
|
||||
$input .= "$k: $v\r\n";
|
||||
}
|
||||
$params['input'] = $input . "\r\n" . $data;
|
||||
$params['include_bodies'] = true;
|
||||
$params['decode_bodies'] = true;
|
||||
$params['decode_headers'] = true;
|
||||
|
||||
$structure = Mail_mimeDecode::decode($params);
|
||||
|
||||
foreach ($structure->parts as $part) {
|
||||
if (!isset($part->disposition) && (strstr($part->headers['content-type'], 'text/xml'))) {
|
||||
$this->debug('Have root part of type ' . $part->headers['content-type']);
|
||||
$root = $part->body;
|
||||
$return = parent::parseResponse($part->headers, $part->body);
|
||||
} else {
|
||||
$this->debug('Have an attachment of type ' . $part->headers['content-type']);
|
||||
$info['data'] = $part->body;
|
||||
$info['filename'] = isset($part->d_parameters['filename']) ? $part->d_parameters['filename'] : '';
|
||||
$info['contenttype'] = $part->headers['content-type'];
|
||||
$info['cid'] = $part->headers['content-id'];
|
||||
$this->responseAttachments[] = $info;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($return)) {
|
||||
$this->responseData = $root;
|
||||
return $return;
|
||||
}
|
||||
|
||||
$this->setError('No root part found in multipart/related content');
|
||||
return '';
|
||||
}
|
||||
$this->debug('Not multipart/related');
|
||||
return parent::parseResponse($headers, $data);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* For backwards compatiblity, define soapclientmime unless the PHP SOAP extension is loaded.
|
||||
*/
|
||||
if (!extension_loaded('soap')) {
|
||||
class soapclientmime extends nusoap_client_mime {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* nusoap_server_mime server supporting MIME attachments defined at
|
||||
* http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
|
||||
*
|
||||
* @author Scott Nichol <snichol@users.sourceforge.net>
|
||||
* @author Thanks to Guillaume and Henning Reich for posting great attachment code to the mail list
|
||||
* @version $Id: nusoapmime.php,v 1.13 2010/04/26 20:15:08 snichol Exp $
|
||||
* @access public
|
||||
*/
|
||||
class nusoap_server_mime extends nusoap_server {
|
||||
/**
|
||||
* @var array Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid
|
||||
* @access private
|
||||
*/
|
||||
var $requestAttachments = array();
|
||||
/**
|
||||
* @var array Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid
|
||||
* @access private
|
||||
*/
|
||||
var $responseAttachments;
|
||||
/**
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $mimeContentType;
|
||||
|
||||
/**
|
||||
* adds a MIME attachment to the current response.
|
||||
*
|
||||
* If the $data parameter contains an empty string, this method will read
|
||||
* the contents of the file named by the $filename parameter.
|
||||
*
|
||||
* If the $cid parameter is false, this method will generate the cid.
|
||||
*
|
||||
* @param string $data The data of the attachment
|
||||
* @param string $filename The filename of the attachment (default is empty string)
|
||||
* @param string $contenttype The MIME Content-Type of the attachment (default is application/octet-stream)
|
||||
* @param string $cid The content-id (cid) of the attachment (default is false)
|
||||
* @return string The content-id (cid) of the attachment
|
||||
* @access public
|
||||
*/
|
||||
function addAttachment($data, $filename = '', $contenttype = 'application/octet-stream', $cid = false) {
|
||||
if (! $cid) {
|
||||
$cid = md5(uniqid(time()));
|
||||
}
|
||||
|
||||
$info['data'] = $data;
|
||||
$info['filename'] = $filename;
|
||||
$info['contenttype'] = $contenttype;
|
||||
$info['cid'] = $cid;
|
||||
|
||||
$this->responseAttachments[] = $info;
|
||||
|
||||
return $cid;
|
||||
}
|
||||
|
||||
/**
|
||||
* clears the MIME attachments for the current response.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function clearAttachments() {
|
||||
$this->responseAttachments = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the MIME attachments from the current request.
|
||||
*
|
||||
* Each array element in the return is an associative array with keys
|
||||
* data, filename, contenttype, cid. These keys correspond to the parameters
|
||||
* for addAttachment.
|
||||
*
|
||||
* @return array The attachments.
|
||||
* @access public
|
||||
*/
|
||||
function getAttachments() {
|
||||
return $this->requestAttachments;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP body for the current response.
|
||||
*
|
||||
* @param string $soapmsg The SOAP payload
|
||||
* @return string The HTTP body, which includes the SOAP payload
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPBody($soapmsg) {
|
||||
if (count($this->responseAttachments) > 0) {
|
||||
$params['content_type'] = 'multipart/related; type="text/xml"';
|
||||
$mimeMessage = new Mail_mimePart('', $params);
|
||||
unset($params);
|
||||
|
||||
$params['content_type'] = 'text/xml';
|
||||
$params['encoding'] = '8bit';
|
||||
$params['charset'] = $this->soap_defencoding;
|
||||
$mimeMessage->addSubpart($soapmsg, $params);
|
||||
|
||||
foreach ($this->responseAttachments as $att) {
|
||||
unset($params);
|
||||
|
||||
$params['content_type'] = $att['contenttype'];
|
||||
$params['encoding'] = 'base64';
|
||||
$params['disposition'] = 'attachment';
|
||||
$params['dfilename'] = $att['filename'];
|
||||
$params['cid'] = $att['cid'];
|
||||
|
||||
if ($att['data'] == '' && $att['filename'] <> '') {
|
||||
if ($fd = fopen($att['filename'], 'rb')) {
|
||||
$data = fread($fd, filesize($att['filename']));
|
||||
fclose($fd);
|
||||
} else {
|
||||
$data = '';
|
||||
}
|
||||
$mimeMessage->addSubpart($data, $params);
|
||||
} else {
|
||||
$mimeMessage->addSubpart($att['data'], $params);
|
||||
}
|
||||
}
|
||||
|
||||
$output = $mimeMessage->encode();
|
||||
$mimeHeaders = $output['headers'];
|
||||
|
||||
foreach ($mimeHeaders as $k => $v) {
|
||||
$this->debug("MIME header $k: $v");
|
||||
if (strtolower($k) == 'content-type') {
|
||||
// PHP header() seems to strip leading whitespace starting
|
||||
// the second line, so force everything to one line
|
||||
$this->mimeContentType = str_replace("\r\n", " ", $v);
|
||||
}
|
||||
}
|
||||
|
||||
return $output['body'];
|
||||
}
|
||||
|
||||
return parent::getHTTPBody($soapmsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type for the current response.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type for the current response.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentType() {
|
||||
if (count($this->responseAttachments) > 0) {
|
||||
return $this->mimeContentType;
|
||||
}
|
||||
return parent::getHTTPContentType();
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the HTTP content type charset for the current response.
|
||||
* returns false for non-text content types.
|
||||
*
|
||||
* Note: getHTTPBody must be called before this.
|
||||
*
|
||||
* @return string the HTTP content type charset for the current response.
|
||||
* @access private
|
||||
*/
|
||||
function getHTTPContentTypeCharset() {
|
||||
if (count($this->responseAttachments) > 0) {
|
||||
return false;
|
||||
}
|
||||
return parent::getHTTPContentTypeCharset();
|
||||
}
|
||||
|
||||
/**
|
||||
* processes SOAP message received from client
|
||||
*
|
||||
* @param array $headers The HTTP headers
|
||||
* @param string $data unprocessed request data from client
|
||||
* @return mixed value of the message, decoded into a PHP type
|
||||
* @access private
|
||||
*/
|
||||
function parseRequest($headers, $data) {
|
||||
$this->debug('Entering parseRequest() for payload of length ' . strlen($data) . ' and type of ' . $headers['content-type']);
|
||||
$this->requestAttachments = array();
|
||||
if (strstr($headers['content-type'], 'multipart/related')) {
|
||||
$this->debug('Decode multipart/related');
|
||||
$input = '';
|
||||
foreach ($headers as $k => $v) {
|
||||
$input .= "$k: $v\r\n";
|
||||
}
|
||||
$params['input'] = $input . "\r\n" . $data;
|
||||
$params['include_bodies'] = true;
|
||||
$params['decode_bodies'] = true;
|
||||
$params['decode_headers'] = true;
|
||||
|
||||
$structure = Mail_mimeDecode::decode($params);
|
||||
|
||||
foreach ($structure->parts as $part) {
|
||||
if (!isset($part->disposition) && (strstr($part->headers['content-type'], 'text/xml'))) {
|
||||
$this->debug('Have root part of type ' . $part->headers['content-type']);
|
||||
$return = parent::parseRequest($part->headers, $part->body);
|
||||
} else {
|
||||
$this->debug('Have an attachment of type ' . $part->headers['content-type']);
|
||||
$info['data'] = $part->body;
|
||||
$info['filename'] = isset($part->d_parameters['filename']) ? $part->d_parameters['filename'] : '';
|
||||
$info['contenttype'] = $part->headers['content-type'];
|
||||
$info['cid'] = $part->headers['content-id'];
|
||||
$this->requestAttachments[] = $info;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($return)) {
|
||||
return $return;
|
||||
}
|
||||
|
||||
$this->setError('No root part found in multipart/related content');
|
||||
return;
|
||||
}
|
||||
$this->debug('Not multipart/related');
|
||||
return parent::parseRequest($headers, $data);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* For backwards compatiblity
|
||||
*/
|
||||
class nusoapservermime extends nusoap_server_mime {
|
||||
}
|
||||
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -1,891 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
class MondialRelay extends Module
|
||||
{
|
||||
const INSTALL_SQL_FILE = 'mrInstall.sql';
|
||||
|
||||
private $_postErrors;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'mondialrelay';
|
||||
$this->tab = 'shipping_logistics';
|
||||
$this->version = '1.3';
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->page = basename(__FILE__, '.php');
|
||||
$this->displayName = $this->l('Mondial Relay');
|
||||
$this->description = $this->l('Deliver in Relay points');
|
||||
|
||||
if (!defined('_MR_CSS_'))
|
||||
define('_MR_CSS_', dirname(__FILE__) . '/style.css');
|
||||
if (Module::isInstalled('mondialrelay') AND !Configuration::get('MONDIAL_RELAY_1_4'))
|
||||
{
|
||||
$this->update_v1_4();
|
||||
Configuration::updateValue('MONDIAL_RELAY_1_4', 1);
|
||||
}
|
||||
}
|
||||
|
||||
public function install()
|
||||
{
|
||||
global $cookie;
|
||||
$name = "shipping";
|
||||
$title = "Mondial Relay API";
|
||||
|
||||
if (!parent::install())
|
||||
return false;
|
||||
|
||||
Db::getInstance()->ExecuteS(
|
||||
'SELECT `name`
|
||||
FROM `' . _DB_PREFIX_ . 'hook`
|
||||
WHERE `name` = \''.$name.'\'
|
||||
AND `title` = \''.$title.'\'');
|
||||
|
||||
if (!Db::getInstance()->NumRows())
|
||||
Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'hook
|
||||
(name, title, description, position)
|
||||
VALUES(\''.$name.'\', \''.$title.'\', NULL, 0)');
|
||||
|
||||
if (!$this->registerHook('shipping') OR
|
||||
!$this->registerHook('extraCarrier') OR
|
||||
!$this->registerHook('processCarrier') OR
|
||||
!$this->registerHook('orderDetail') OR
|
||||
!$this->registerHook('updateCarrier') OR
|
||||
!$this->registerHook('orderDetailDisplayed'))
|
||||
return false;
|
||||
|
||||
if (!file_exists(_PS_MODULE_DIR_. '/mondialrelay/' . self::INSTALL_SQL_FILE))
|
||||
return false;
|
||||
elseif(!$sql = file_get_contents(_PS_MODULE_DIR_. '/mondialrelay/' . self::INSTALL_SQL_FILE))
|
||||
return false;
|
||||
|
||||
$sql = str_replace('PREFIX_', _DB_PREFIX_, $sql);
|
||||
$sql = preg_split("/;\s*[\r\n]+/", $sql);
|
||||
foreach($sql AS $k => $query)
|
||||
if (!empty($query))
|
||||
Db::getInstance()->Execute(trim($query));
|
||||
|
||||
$result = Db::getInstance()->getRow('
|
||||
SELECT id_tab
|
||||
FROM `' . _DB_PREFIX_ . 'tab`
|
||||
WHERE class_name="AdminMondialRelay"');
|
||||
|
||||
if (!$result)
|
||||
{
|
||||
/*tab install */
|
||||
|
||||
$result = Db::getInstance()->getRow('
|
||||
SELECT position
|
||||
FROM `' . _DB_PREFIX_ . 'tab`
|
||||
WHERE `id_parent` = 3
|
||||
ORDER BY `'. _DB_PREFIX_ .'tab`.`position` DESC');
|
||||
|
||||
$pos = (isset($result['position'])) ? $result['position'] + 1 : 0;
|
||||
|
||||
Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'tab
|
||||
(id_parent, class_name, position, module)
|
||||
VALUES(3, "AdminMondialRelay", "'.(int)($pos).'", "mondialrelay")');
|
||||
|
||||
$id_tab = Db::getInstance()->Insert_ID();
|
||||
|
||||
$languages = Language::getLanguages();
|
||||
foreach ($languages AS $language)
|
||||
Db::getInstance()->Execute('
|
||||
INSERT INTO ' . _DB_PREFIX_ . 'tab_lang
|
||||
(id_lang, id_tab, name)
|
||||
VALUES("'.(int)($language['id_lang']).'", "'.(int)($id_tab).'", "Mondial Relay")');
|
||||
|
||||
$profiles = Profile::getProfiles(Configuration::get('PS_LANG_DEFAULT'));
|
||||
foreach ($profiles as $profile)
|
||||
Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'access
|
||||
(`id_profile`,`id_tab`,`view`,`add`,`edit`,`delete`)
|
||||
VALUES('.$profile['id_profile'].', '.(int)($id_tab).', 1, 1, 1, 1)');
|
||||
|
||||
@copy(_PS_MODULE_DIR_.'mondialrelay/AdminMondialRelay.gif', _PS_IMG_DIR_.'t/AdminMondialRelay.gif');
|
||||
}
|
||||
|
||||
Configuration::updateValue('MONDIAL_RELAY_1_4', '1');
|
||||
Configuration::updateValue('MONDIAL_RELAY_INSTALL_UPDATE_1', 1);
|
||||
Configuration::updateValue('MONDIAL_RELAY_ORDER_STATE', 3);
|
||||
Configuration::updateValue('MONDIAL_RELAY_SECURE_KEY', md5(time().rand(0,10)));
|
||||
Configuration::updateValue('MR_GOOGLE_MAP', '1');
|
||||
Configuration::updateValue('MR_ENSEIGNE_WEBSERVICE', '');
|
||||
Configuration::updateValue('MR_CODE_MARQUE', '');
|
||||
Configuration::updateValue('MR_KEY_WEBSERVICE', '');
|
||||
Configuration::updateValue('MR_LANGUAGE', '');
|
||||
Configuration::updateValue('MR_WEIGHT_COEF', '');
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
if (!parent::uninstall())
|
||||
return false;
|
||||
|
||||
/* Tab uninstallation */
|
||||
$result = Db::getInstance()->getRow('
|
||||
SELECT id_tab
|
||||
FROM `' . _DB_PREFIX_ . 'tab`
|
||||
WHERE class_name="AdminMondialRelay"');
|
||||
if ($result)
|
||||
{
|
||||
$id_tab = $result['id_tab'];
|
||||
if (isset($id_tab) AND !empty($id_tab))
|
||||
{
|
||||
Db::getInstance()->Execute('DELETE FROM ' . _DB_PREFIX_ . 'tab WHERE id_tab = '.(int)($id_tab));
|
||||
Db::getInstance()->Execute('DELETE FROM ' . _DB_PREFIX_ . 'tab_lang WHERE id_tab = '.(int)($id_tab));
|
||||
Db::getInstance()->Execute('DELETE FROM ' . _DB_PREFIX_ . 'access WHERE id_tab = '.(int)($id_tab));
|
||||
}
|
||||
}
|
||||
|
||||
if (!Configuration::deleteByName('MONDIAL_RELAY_1_4') OR
|
||||
!Configuration::deleteByName('MONDIAL_RELAY_INSTALL_UPDATE') OR
|
||||
!Configuration::deleteByName('MONDIAL_RELAY_SECURE_KEY') OR
|
||||
!Configuration::deleteByName('MONDIAL_RELAY_ORDER_STATE') OR
|
||||
!Configuration::deleteByName('MR_GOOGLE_MAP') OR
|
||||
!Configuration::deleteByName('MR_ENSEIGNE_WEBSERVICE') OR
|
||||
!Configuration::deleteByName('MR_CODE_MARQUE') OR
|
||||
!Configuration::deleteByName('MR_KEY_WEBSERVICE') OR
|
||||
!Configuration::deleteByName('MR_WEIGHT_COEF') OR
|
||||
!Db::getInstance()->Execute('UPDATE '._DB_PREFIX_ .'carrier set `active` = 0, `deleted` = 1 WHERE `external_module_name` = "mondialrelay"') OR
|
||||
!Db::getInstance()->Execute('DROP TABLE '._DB_PREFIX_ .'mr_historique, '._DB_PREFIX_ .'mr_method, '._DB_PREFIX_ .'mr_selected'))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private function update_v1_4()
|
||||
{
|
||||
Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'carrier` SET `shipping_external` = 0, `need_range` = 1, `external_module_name` = "mondialrelay", `shipping_method` = 1 WHERE `id_carrier` IN (SELECT `id_mr_method` FROM `'._DB_PREFIX_.'mr_method`)');
|
||||
return true;
|
||||
}
|
||||
|
||||
private function _postValidation()
|
||||
{
|
||||
if (Tools::isSubmit('submitMR'))
|
||||
{
|
||||
if (Tools::getValue('mr_Enseigne_WebService') != '' AND !preg_match("#^[0-9A-Z]{2}[0-9A-Z ]{6}$#", Tools::getValue('mr_Enseigne_WebService')))
|
||||
$this->_postErrors[] = $this->l('Invalid Shop');
|
||||
if (Tools::getValue('mr_code_marque') != '' AND !preg_match("#^[0-9]{2}$#", Tools::getValue('mr_code_marque')))
|
||||
$this->_postErrors[] = $this->l('Invalid Mark code');
|
||||
if (Tools::getValue('mr_Key_WebService') != '' AND !preg_match("#^[0-9A-Za-z_\'., /\-]{2,32}$#", Tools::getValue('mr_Key_WebService')))
|
||||
$this->_postErrors[] = $this->l('Invalid Webservice Key');
|
||||
if (Tools::getValue('mr_Langage') != '' AND !preg_match("#^[A-Z]{2}$#", Tools::getValue('mr_Langage')))
|
||||
$this->_postErrors[] = $this->l('Invalid Language');
|
||||
if (!Tools::getValue('mr_weight_coef') OR !Validate::isInt(Tools::getValue('mr_weight_coef')))
|
||||
$this->_postErrors[] = $this->l('Invalid Weight Coefficient');
|
||||
}
|
||||
elseif (Tools::isSubmit('submitMethod'))
|
||||
{
|
||||
if (Configuration::get('MR_ENSEIGNE_WEBSERVICE') == '' OR Configuration::get('MR_CODE_MARQUE') == '' OR
|
||||
Configuration::get('MR_KEY_WEBSERVICE') == '' OR Configuration::get('MR_LANGUAGE') == '')
|
||||
$this->_postErrors[] = $this->l('Please configure your Mondial Relay account settings before creating a carrier.');
|
||||
if (!preg_match("#^[0-9A-Za-z_\'., /\-]{2,32}$#", Tools::getValue('mr_Name')))
|
||||
$this->_postErrors[] = $this->l('Invalid carrier name');
|
||||
if (Tools::getValue('mr_ModeCol') != 'CCC')
|
||||
$this->_postErrors[] = $this->l('Invalid Col mode');
|
||||
if (!preg_match("#^REL|24R|ESP|DRI|LDS|LDR|LD1$#", Tools::getValue('mr_ModeLiv')))
|
||||
$this->_postErrors[] = $this->l('Invalid delivery mode');
|
||||
if (!Validate::isInt(Tools::getValue('mr_ModeAss')) OR Tools::getValue('mr_ModeAss') > 5 OR Tools::getValue('mr_ModeAss') < 0)
|
||||
$this->_postErrors[] = $this->l('Invalid Assurance mode');
|
||||
if (!Tools::getValue('mr_Pays_list'))
|
||||
$this->_postErrors[] = $this->l('You must choose at least one delivery country.');
|
||||
}
|
||||
elseif (Tools::isSubmit('submit_order_state'))
|
||||
{
|
||||
if (!Validate::isBool(Tools::getValue('mr_google_key')))
|
||||
$this->_postErrors[] = $this->l('Invalid google key');
|
||||
if (!Validate::isUnsignedInt(Tools::getValue('id_order_state')))
|
||||
$this->_postErrors[] = $this->l('Invalid order state');
|
||||
}
|
||||
}
|
||||
|
||||
private function _postProcess()
|
||||
{
|
||||
foreach($_POST AS $key => $value)
|
||||
{
|
||||
$setArray[] = $value;
|
||||
$keyArray[] = pSQL($key);
|
||||
}
|
||||
array_pop($setArray);
|
||||
array_pop($keyArray);
|
||||
|
||||
if (isset($_POST['submitMR']) AND $_POST['submitMR'])
|
||||
self::mrUpdate('settings', $setArray, $keyArray);
|
||||
elseif (isset($_POST['submitShipping']) AND $_POST['submitShipping'])
|
||||
self::mrUpdate('shipping', $_POST, array());
|
||||
elseif (isset($_POST['submitMethod']) AND $_POST['submitMethod'])
|
||||
self::mrUpdate('addShipping', $setArray, $keyArray);
|
||||
elseif (isset($_POST['submit_order_state']) AND $_POST['submit_order_state'])
|
||||
{
|
||||
Configuration::updateValue('MONDIAL_RELAY_ORDER_STATE', Tools::getValue('id_order_state'));
|
||||
Configuration::updateValue('MR_GOOGLE_MAP', Tools::getValue('mr_google_key'));
|
||||
if (!Tools::isSubmit('updatesuccess'))
|
||||
$this->_html .= '<div class="conf confirm"><img src="'._PS_ADMIN_IMG_.'/ok.gif" alt="" /> '.$this->l('Settings updated').'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
public function getmrth($id_lang, $active = false, $id_zone = false, $id_iso_code = false)
|
||||
{
|
||||
if (!Validate::isBool($active))
|
||||
die(Tools::displayError());
|
||||
|
||||
$carriers = Db::getInstance()->ExecuteS('
|
||||
SELECT c.*, cl.delay
|
||||
FROM `'._DB_PREFIX_.'mr_method` m
|
||||
LEFT JOIN `'._DB_PREFIX_.'carrier` c ON (c.`id_carrier` = m.`id_carrier` and c.`deleted` = 0)
|
||||
LEFT JOIN `'._DB_PREFIX_.'carrier_lang` cl ON (c.`id_carrier` = cl.`id_carrier` AND cl.`id_lang` = '.(int)($id_lang).')
|
||||
LEFT JOIN `'._DB_PREFIX_.'carrier_zone` cz ON (cz.`id_carrier` = c.`id_carrier`)'.
|
||||
($id_zone ? 'LEFT JOIN `'._DB_PREFIX_.'zone` z ON (z.`id_zone` = '.(int)($id_zone).')' : '').'
|
||||
WHERE 1 '.
|
||||
($id_iso_code ? ' AND m.`mr_Pays_list` LIKE \'%'.pSQL($id_iso_code).'%\'' : '').
|
||||
($active ? ' AND c.`active` = 1' : '').
|
||||
($id_zone ? ' AND cz.`id_zone` = '.(int)($id_zone).'
|
||||
AND z.`active` = 1' : '').'
|
||||
GROUP BY c.`id_carrier`');
|
||||
|
||||
if (is_array($carriers) AND count($carriers))
|
||||
{
|
||||
foreach ($carriers as $key => $carrier)
|
||||
if ($carrier['name'] == '0')
|
||||
$carriers[$key]['name'] = Configuration::get('PS_SHOP_NAME');
|
||||
}
|
||||
else
|
||||
$carriers = array();
|
||||
|
||||
return $carriers;
|
||||
}
|
||||
|
||||
public function hookOrderDetail($params)
|
||||
{
|
||||
global $smarty;
|
||||
|
||||
$carrier = $params['carrier'];
|
||||
$order = $params['order'];
|
||||
|
||||
if ($carrier->is_module AND $order->shipping_number)
|
||||
{
|
||||
$module = $carrier->external_module_name;
|
||||
include_once(_PS_MODULE_DIR_.$module.'/'.$module.'.php');
|
||||
$module_carrier = new $module();
|
||||
$smarty->assign('followup', $module_carrier->get_followup($order->shipping_number));
|
||||
}
|
||||
elseif ($carrier->url AND $order->shipping_number)
|
||||
$smarty->assign('followup', str_replace('@', $order->shipping_number, $carrier->url));
|
||||
}
|
||||
|
||||
public function hookOrderDetailDisplayed($params)
|
||||
{
|
||||
global $smarty;
|
||||
|
||||
$res = Db::getInstance()->getRow('
|
||||
SELECT s.`MR_Selected_LgAdr1`, s.`MR_Selected_LgAdr2`, s.`MR_Selected_LgAdr3`, s.`MR_Selected_LgAdr4`, s.`MR_Selected_CP`, s.`MR_Selected_Ville`, s.`MR_Selected_Pays`, s.`MR_Selected_Num`
|
||||
FROM `'._DB_PREFIX_.'mr_selected` s
|
||||
WHERE s.`id_cart` = '.$params['order']->id_cart);
|
||||
if ((!$res) OR ($res['MR_Selected_Num'] == 'LD1') OR ($res['MR_Selected_Num'] == 'LDS'))
|
||||
return '';
|
||||
$smarty->assign('mr_addr', $res['MR_Selected_LgAdr1'].($res['MR_Selected_LgAdr1'] ? ' - ' : '').$res['MR_Selected_LgAdr2'].($res['MR_Selected_LgAdr2'] ? ' - ' : '').$res['MR_Selected_LgAdr3'].($res['MR_Selected_LgAdr3'] ? ' - ' : '').$res['MR_Selected_LgAdr4'].($res['MR_Selected_LgAdr4'] ? ' - ' : '').$res['MR_Selected_CP'].' '.$res['MR_Selected_Ville'].' - '.$res['MR_Selected_Pays']);
|
||||
return $this->display(__FILE__, 'orderDetail.tpl');
|
||||
}
|
||||
|
||||
public function hookProcessCarrier($params)
|
||||
{
|
||||
include_once(_PS_MODULE_DIR_.'/mondialrelay/MondialRelayClass.php');
|
||||
|
||||
$cart = $params['cart'];
|
||||
$result_MR = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'mr_method` WHERE `id_carrier` = '.(int)($cart->id_carrier));
|
||||
if (count($result_MR) > 0)
|
||||
{
|
||||
$mr_mode_liv = $result_MR[0]['mr_ModeLiv'];
|
||||
if ($mr_mode_liv == 'LDS' || $mr_mode_liv == 'LD1')
|
||||
{
|
||||
$deliveryAddressLDS = new Address((int)($cart->id_address_delivery));
|
||||
if (Validate::isLoadedObject($deliveryAddressLDS) AND ($deliveryAddressLDS->id_customer == $cart->id_customer))
|
||||
{
|
||||
Db::getInstance()->delete(_DB_PREFIX_.'mr_selected','id_cart = "'.(int)($cart->id).'"');
|
||||
$mrselected = new MondialRelayClass();
|
||||
$mrselected->id_customer = $cart->id_customer;
|
||||
$mrselected->id_method = $result_MR[0]['id_mr_method'];
|
||||
$mrselected->id_cart = $cart->id;
|
||||
$mrselected->MR_Selected_Num = $mr_mode_liv;
|
||||
$mrselected->save();
|
||||
}
|
||||
}
|
||||
elseif (!Configuration::get('PS_ORDER_PROCESS_TYPE'))
|
||||
{
|
||||
|
||||
if (empty($_POST['MR_Selected_Num_'.$cart->id_carrier])) // Case error : the customer didn't choose a 'relais' but selected Relais Colis TNT as a carrier
|
||||
Tools::redirect('index.php/order?step=2&mr_null');
|
||||
else
|
||||
{
|
||||
Db::getInstance()->delete(_DB_PREFIX_.'mr_selected','id_cart = "'.(int)($cart->id).'"');
|
||||
$mrselected = new MondialRelayClass();
|
||||
$mrselected->id_customer = $cart->id_customer;
|
||||
$mrselected->id_method = $result_MR[0]['id_mr_method'];
|
||||
$mrselected->id_cart = $cart->id;
|
||||
$mrselected->MR_Selected_Num = $_POST['MR_Selected_Num_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_LgAdr1 = $_POST['MR_Selected_LgAdr1_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_LgAdr2 = $_POST['MR_Selected_LgAdr2_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_LgAdr3 = $_POST['MR_Selected_LgAdr3_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_LgAdr4 = $_POST['MR_Selected_LgAdr4_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_CP = $_POST['MR_Selected_CP_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_Ville = $_POST['MR_Selected_Ville_'.$cart->id_carrier];
|
||||
$mrselected->MR_Selected_Pays = $_POST['MR_Selected_Pays_'.$cart->id_carrier];
|
||||
$mrselected->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function hookupdateCarrier($params)
|
||||
{
|
||||
$new_carrier = $params['carrier'];
|
||||
if ($new_carrier->external_module_name == 'mondialrelay')
|
||||
{
|
||||
$mr_data = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'mr_method` WHERE `id_carrier` = '.(int)($params['id_carrier']));
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'mr_method` (mr_Name, mr_Pays_list, mr_ModeCol, mr_ModeLiv, mr_ModeAss, id_carrier)
|
||||
VALUES ("'.pSQL($mr_data['mr_Name']).'", "'.pSQL($mr_data['mr_Pays_list']).'", "'.pSQL($mr_data['mr_ModeCol']).'", "'.pSQL($mr_data['mr_ModeLiv']).'", "'.pSQL($mr_data['mr_ModeAss']).'", '.(int)($new_carrier->id).')');
|
||||
}
|
||||
}
|
||||
|
||||
public function hookextraCarrier($params)
|
||||
{
|
||||
global $smarty, $cart, $cookie, $defaultCountry, $nbcarriers;
|
||||
|
||||
if (Configuration::get('MR_ENSEIGNE_WEBSERVICE') == '' OR
|
||||
Configuration::get('MR_CODE_MARQUE') == '' OR
|
||||
Configuration::get('MR_KEY_WEBSERVICE') == '' OR
|
||||
Configuration::get('MR_LANGUAGE') == '')
|
||||
return '';
|
||||
|
||||
$totalweight = Configuration::get('MR_WEIGHT_COEF') * $cart->getTotalWeight();
|
||||
|
||||
if (Validate::isUnsignedInt($cart->id_carrier))
|
||||
{
|
||||
$carrier = new Carrier((int)($cart->id_carrier));
|
||||
if ($carrier->active AND !$carrier->deleted)
|
||||
$checked = (int)($cart->id_carrier);
|
||||
}
|
||||
if (!isset($checked) OR $checked == 0)
|
||||
$checked = (int)(Configuration::get('PS_CARRIER_DEFAULT'));
|
||||
|
||||
$address = new Address((int)($cart->id_address_delivery));
|
||||
$id_zone = Address::getZoneById((int)($address->id));
|
||||
$country = new Country((int)($address->id_country));
|
||||
|
||||
$query = self::getmrth((int)($cookie->id_lang), true, (int)($country->id_zone), $country->iso_code);
|
||||
|
||||
$resultsArray = array();
|
||||
$i = 0;
|
||||
foreach ($query AS $k => $row)
|
||||
{
|
||||
$carrier = new Carrier((int)($row['id_carrier']));
|
||||
if ((Configuration::get('PS_SHIPPING_METHOD') AND $carrier->getMaxDeliveryPriceByWeight($id_zone) === false) OR
|
||||
(!Configuration::get('PS_SHIPPING_METHOD') AND $carrier->getMaxDeliveryPriceByPrice($id_zone) === false))
|
||||
{
|
||||
unset($result[$k]);
|
||||
continue ;
|
||||
}
|
||||
if ($row['range_behavior'])
|
||||
{
|
||||
// Get id zone
|
||||
if (isset($cart->id_address_delivery) AND $cart->id_address_delivery)
|
||||
$id_zone = Address::getZoneById((int)($cart->id_address_delivery));
|
||||
else
|
||||
$id_zone = (int)($defaultCountry->id_zone);
|
||||
if ((Configuration::get('PS_SHIPPING_METHOD') AND (!Carrier::checkDeliveryPriceByWeight($row['id_carrier'], $cart->getTotalWeight(), $id_zone))) OR
|
||||
(!Configuration::get('PS_SHIPPING_METHOD') AND (!Carrier::checkDeliveryPriceByPrice($row['id_carrier'], $cart->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, $cart->id_currency))))
|
||||
{
|
||||
unset($result[$k]);
|
||||
continue ;
|
||||
}
|
||||
}
|
||||
|
||||
$settings = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'mr_method` WHERE `id_carrier` = '.(int)($row['id_carrier']));
|
||||
$row['name'] = $settings[0]['mr_Name'];
|
||||
$row['col'] = $settings[0]['mr_ModeCol'];
|
||||
$row['liv'] = $settings[0]['mr_ModeLiv'];
|
||||
$row['ass'] = $settings[0]['mr_ModeAss'];
|
||||
$row['price'] = $cart->getOrderShippingCost((int)($row['id_carrier']));
|
||||
$row['img'] = file_exists(_PS_SHIP_IMG_DIR_.(int)($row['id_carrier']).'.jpg') ? _THEME_SHIP_DIR_.(int)($row['id_carrier']).'.jpg' : '';
|
||||
|
||||
$resultsArray[] = $row;
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($i > 0)
|
||||
{
|
||||
include_once(_PS_MODULE_DIR_.'/mondialrelay/page_iso.php');
|
||||
|
||||
$smarty->assign( array(
|
||||
'address_map' => $address->address1.', '.$address->postcode.', '.ote_accent($address->city).', '.$country->iso_code,
|
||||
'input_cp' => $address->postcode,
|
||||
'input_ville' => ote_accent($address->city),
|
||||
'input_pays' => $country->iso_code,
|
||||
'input_poids' => Configuration::get('MR_WEIGHT_COEF') * $cart->getTotalWeight(),
|
||||
'nbcarriers' => $nbcarriers,
|
||||
'checked' => (int)($checked),
|
||||
'google_api_key' => Configuration::get('MR_GOOGLE_MAP'),
|
||||
'one_page_checkout' => (Configuration::get('PS_ORDER_PROCESS_TYPE') ? Configuration::get('PS_ORDER_PROCESS_TYPE') : 0),
|
||||
'carriersextra' => $resultsArray));
|
||||
$nbcarriers = $nbcarriers + $i;
|
||||
return $this->display(__FILE__, 'mondialrelay.tpl');
|
||||
}
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
global $cookie;
|
||||
$error = null;
|
||||
|
||||
if (isset($_GET['updatesuccess']))
|
||||
$this->_html .= '<div class="conf confirm"><img src="'._PS_ADMIN_IMG_.'/ok.gif" /> '.$this->l('Settings updated').'</div>';
|
||||
if (!empty($_POST))
|
||||
{
|
||||
$this->_postValidation();
|
||||
if (!sizeof($this->_postErrors))
|
||||
$this->_postProcess();
|
||||
else
|
||||
{
|
||||
$nbErrors = sizeof($this->_postErrors);
|
||||
$this->_html .= '<div class="alert error"><h3>'.$nbErrors.' '.($nbErrors > 1 ? $this->l('errors') : $this->l('error')).'</h3><ol>';
|
||||
foreach ($this->_postErrors AS $error)
|
||||
$this->_html .= '<li>'.$error.'</li>';
|
||||
$this->_html .= '</ol></div>';
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['delete_mr']) && !empty($_GET['delete_mr']))
|
||||
self::mrDelete((int)($_GET['delete_mr']));
|
||||
|
||||
$this->_html .= '<h2>'.$this->l('Configure Mondial Relay Rate Module').'</h2>'.
|
||||
'<style> . "\n" . ' . file_get_contents(_MR_CSS_) . "\n" . '</style>
|
||||
<fieldset>
|
||||
<legend><img src="../modules/mondialrelay/logo.gif" />'.$this->l('To create a Mondial Relay carrier').'</legend>
|
||||
- '.$this->l('Enter and save your Mondial Relay account settings').'<br />
|
||||
- '.$this->l('Create a Carrier').'<br />
|
||||
- '.$this->l('Define a price for your carrier on').' <a href="index.php?tab=AdminCarriers&token='.Tools::getAdminToken('AdminCarriers'.(int)(Tab::getIdFromClassName('AdminCarriers')).(int)($cookie->id_employee)).'" class="green">'.$this->l('The Carrier page').'</a><br />
|
||||
- '.$this->l('To generate labels, you must have a valid and registered address of your store on your').' <a href="index.php?tab=AdminContact&token='.Tools::getAdminToken('AdminContact'.(int)(Tab::getIdFromClassName('AdminContact')).(int)($cookie->id_employee)).'" class="green">'.$this->l('contact page').'</a><br />
|
||||
- '.$this->l('Go to the front office').'<br /><br class="clear" />
|
||||
<p>'.$this->l('URL Cron Task:').' '.Tools::getHttpHost(true, true)._MODULE_DIR_.$this->name.'/cron.php?secure_key='.Configuration::get('MONDIAL_RELAY_SECURE_KEY').'</p></fieldset>
|
||||
<br class="clear" />'.self::settingsForm().self::settingsstateorderForm().self::addMethodForm().self::shippingForm().
|
||||
'<br class="clear" />';
|
||||
|
||||
return $this->_html;
|
||||
}
|
||||
|
||||
public function mrDelete($id)
|
||||
{
|
||||
$id = Db::getInstance()->getValue('SELECT `id_carrier` FROM `'._DB_PREFIX_ .'mr_method` WHERE `id_mr_method` = "'.(int)($id).'"');
|
||||
Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_ .'carrier` SET `active` = 0, `deleted` = 1 WHERE `id_carrier` = "'.(int)($id).'"');
|
||||
$this->_html .= '<div class="conf confirm"><img src="'._PS_ADMIN_IMG_.'/ok.gif" /> '.$this->l('Delete successful').'</div>';
|
||||
}
|
||||
|
||||
public function mrUpdate($type, Array $array, Array $keyArray)
|
||||
{
|
||||
global $cookie;
|
||||
|
||||
if ($type == 'settings')
|
||||
{
|
||||
Configuration::updateValue('MR_ENSEIGNE_WEBSERVICE', $array[0]);
|
||||
Configuration::updateValue('MR_CODE_MARQUE', $array[1]);
|
||||
Configuration::updateValue('MR_KEY_WEBSERVICE', $array[2]);
|
||||
Configuration::updateValue('MR_LANGUAGE', $array[3]);
|
||||
Configuration::updateValue('MR_WEIGHT_COEF', $array[4]);
|
||||
}
|
||||
elseif ($type == 'shipping')
|
||||
{
|
||||
array_pop($array);
|
||||
foreach ($array AS $Key => $value)
|
||||
{
|
||||
$key = explode(',', $Key);
|
||||
$id = Db::getInstance()->getValue('SELECT `id_carrier` FROM `'._DB_PREFIX_ .'mr_method` WHERE `id_mr_method` = "'.(int)($key[0]).'"');
|
||||
Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'carrier SET active = "'.(int)($value).'" WHERE `id_carrier` = "'.(int)($id).'"');
|
||||
}
|
||||
}
|
||||
elseif ($type == 'addShipping')
|
||||
{
|
||||
$query = 'INSERT INTO ' . _DB_PREFIX_ . 'mr_method (';
|
||||
|
||||
for ($q = 0; $q <= count($keyArray) - 1; $q++)
|
||||
{
|
||||
$end = ($q == count($keyArray) - 1) ? '' : ', ';
|
||||
$query .= $keyArray[$q] . $end;
|
||||
}
|
||||
|
||||
$query .= ') VALUES(';
|
||||
|
||||
for ($j = 0; $j <= count($array) - 1; $j++)
|
||||
{
|
||||
$var = $array[$j];
|
||||
if (is_array($var))
|
||||
$var = implode(",", $var);
|
||||
$end = ($j == count($array) - 1) ? '' : ', ';
|
||||
$query .= "'" . pSQL($var). "'" . $end;
|
||||
}
|
||||
$query .= ')';
|
||||
|
||||
Db::getInstance()->Execute($query);
|
||||
|
||||
$mainInsert = mysql_insert_id();
|
||||
$default = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "configuration WHERE name = 'PS_CARRIER_DEFAULT'");
|
||||
$check = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "carrier");
|
||||
$checkD = array();
|
||||
|
||||
foreach($check AS $Key)
|
||||
{
|
||||
foreach($Key AS $key => $value)
|
||||
if($key == "id_carrier")
|
||||
$checkD[] = $value;
|
||||
}
|
||||
|
||||
Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'carrier` (`id_tax_rules_group`, `url`, `name`, `active`, `is_module`, `range_behavior`, `shipping_external`, `need_range`, `external_module_name`, `shipping_method`)
|
||||
VALUES("0", NULL, "'.pSQL($array[0]).'", "1", "1", "1", "0", "1", "mondialrelay", "1")');
|
||||
|
||||
$get = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'carrier` WHERE `id_carrier` = "' . mysql_insert_id() . '"');
|
||||
Db::getInstance()->Execute('UPDATE `' . _DB_PREFIX_ . 'mr_method` SET `id_carrier` = "' . (int)($get['id_carrier']) . '" WHERE `id_mr_method` = "' . pSQL($mainInsert) . '"');
|
||||
$weight_coef = Configuration::get('MR_WEIGHT_COEF');
|
||||
$range_weight = array('24R' => array(0, 20000 / $weight_coef), 'DRI' => array(20000 / $weight_coef, 130000 / $weight_coef), 'LD1' => array(0, 60000 / $weight_coef), 'LDS' => array(30000 / $weight_coef, 130000 / $weight_coef));
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'range_weight` (`id_carrier`, `delimiter1`, `delimiter2`)
|
||||
VALUES ('.(int)($get['id_carrier']).', '.$range_weight[$array[2]][0].', '.$range_weight[$array[2]][1].')');
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'range_price` (`id_carrier`, `delimiter1`, `delimiter2`) VALUES ('.(int)($get['id_carrier']).', 0.000000, 10000.000000)');
|
||||
$groups = Group::getGroups(Configuration::get('PS_LANG_DEFAULT'));
|
||||
foreach ($groups as $group)
|
||||
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'carrier_group` (id_carrier, id_group) VALUES('.(int)($get['id_carrier']).', '.(int)($group['id_group']).')');
|
||||
|
||||
$zones = Zone::getZones();
|
||||
foreach ($zones as $zone)
|
||||
{
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'carrier_zone` (id_carrier, id_zone) VALUES('.(int)($get['id_carrier']).', '.(int)($zone['id_zone']).')');
|
||||
$range_price_id = Db::getInstance()->getValue('SELECT id_range_price FROM ' . _DB_PREFIX_ . 'range_price WHERE id_carrier = "'.(int)($get['id_carrier']).'"');
|
||||
$range_weight_id = Db::getInstance()->getValue('SELECT id_range_weight FROM ' . _DB_PREFIX_ . 'range_weight WHERE id_carrier = "'.(int)($get['id_carrier']).'"');
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'delivery` (id_carrier, id_range_price, id_range_weight, id_zone, price) VALUES('.(int)($get['id_carrier']).', '.(int)($range_price_id).', NULL,'.(int)($zone['id_zone']).', 0.00)');
|
||||
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'delivery` (id_carrier, id_range_price, id_range_weight, id_zone, price) VALUES('.(int)($get['id_carrier']).', NULL, '.(int)($range_weight_id).','.(int)($zone['id_zone']).', 0.00)');
|
||||
}
|
||||
|
||||
if(!in_array($default[0]['value'], $checkD))
|
||||
$default = Db::getInstance()->ExecuteS("UPDATE " . _DB_PREFIX_ . "configuration SET value = '" . (int)($get['id_carrier']) . "' WHERE name = 'PS_CARRIER_DEFAULT'");
|
||||
|
||||
Tools::redirectAdmin('index.php?tab=AdminModules&configure=mondialrelay&updatesuccess&token='.Tools::getAdminToken('AdminModules'.(int)(Tab::getIdFromClassName('AdminModules')).(int)($cookie->id_employee)));
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
$this->_html .= '<div class="conf confirm"><img src="'._PS_ADMIN_IMG_.'/ok.gif" /> '.$this->l('Settings updated').'<img src="http://www.prestashop.com/modules/mondialrelay.png?enseigne='.urlencode(Tools::getValue('mr_Enseigne_WebService')).'" style="float:right" /></div>';
|
||||
return true;
|
||||
}
|
||||
|
||||
public function addMethodForm()
|
||||
{
|
||||
$zones = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "zone WHERE active = 1");
|
||||
$output = '
|
||||
<form action="'.$_SERVER['REQUEST_URI'].'" method="post" >
|
||||
<fieldset class="shippingList addMethodForm">
|
||||
<legend><img src="../modules/mondialrelay/logo.gif" alt="" />'.$this->l('Add a Shipping Method').'</legend>
|
||||
<ol>
|
||||
<li>
|
||||
<label for="mr_Name" class="shipLabel">'.$this->l('Carrier\'s name').'<sup>*</sup></label>
|
||||
<input type="text" id="mr_Name" name="mr_Name" '.(Tools::getValue('mr_Name') ? 'value="'.Tools::getValue('mr_Name').'"' : '').'/>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="mr_ModeCol" class="shipLabel">'.$this->l('Collection Mode').'<sup>*</sup></label>
|
||||
<select name="mr_ModeCol" id="mr_ModeCol" style="width:200px">
|
||||
<option value="CCC" selected >CCC : '.$this->l('Collection at the store').'</option>
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="mr_ModeLiv" class="shipLabel">'.$this->l('Delivery mode').'<sup>*</sup></label>
|
||||
<select name="mr_ModeLiv" id="mr_ModeLiv" style="width:200px">
|
||||
<option value="24R" selected >24R : '.$this->l('Delivery to a relay point').'</option>
|
||||
<option value="DRI" >DRI : '.$this->l('Colis Drive delivery').'</option>
|
||||
<option value="LD1" >LD1 : '.$this->l('Home delivery RDC (1 person)').'</option>
|
||||
<option value="LDS" >LDS : '.$this->l('Special Home delivery (2 persons)').'</option>
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="mr_ModeAss" class="shipLabel">'.$this->l('Insurance').'<sup>*</sup></label>
|
||||
<select name="mr_ModeAss" id="mr_ModeAss" style="width:200px">
|
||||
<option value="0" selected>0 : '.$this->l('No insurance').'</option>
|
||||
<option value="1">1 : '.$this->l('Complementary Insurance Lv1').'</option>
|
||||
<option value="2">2 : '.$this->l('Complementary Insurance Lv2').'</option>
|
||||
<option value="3">3 : '.$this->l('Complementary Insurance Lv3').'</option>
|
||||
<option value="4">4 : '.$this->l('Complementary Insurance Lv4').'</option>
|
||||
<option value="5">5 : '.$this->l('Complementary Insurance Lv5').'</option>
|
||||
</select>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label for="mr_Pays_list" class="shipLabel">'.$this->l('Delivery countries:').'<sup>*</sup><br /><br />
|
||||
<span style="font-size:10px; width:200px;float:left; color:forestgreen">'.
|
||||
$this->l('You can choose several countries by pressing Ctrl while selecting countries').'</span>
|
||||
</label>
|
||||
<select name="mr_Pays_list[]" id="mr_Pays_list" multiple size="5">
|
||||
<option value="FR">'.$this->l('France').'</option>
|
||||
<option value="BE">'.$this->l('Belgium').'</option>
|
||||
<option value="LU">'.$this->l('Luxembourg').'</option>
|
||||
<option value="ES">'.$this->l('Spain').'</option>
|
||||
</select>
|
||||
</li>
|
||||
<li class="mrSubmit">
|
||||
<input type="submit" name="submitMethod" value="' . $this->l('Add a Shipping Method') . '" class="button" />
|
||||
</li>
|
||||
<li>
|
||||
<sup><sup>*</sup> ' . $this->l('Required') . '</sup>
|
||||
</li>
|
||||
</ol>
|
||||
</fieldset>
|
||||
</form>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
public function shippingForm()
|
||||
{
|
||||
global $cookie;
|
||||
|
||||
$query = Db::getInstance()->ExecuteS('
|
||||
SELECT m.*
|
||||
FROM `'._DB_PREFIX_.'mr_method` m
|
||||
JOIN `'._DB_PREFIX_.'carrier` c ON (c.`id_carrier` = m.`id_carrier`)
|
||||
WHERE c.`deleted` = 0');
|
||||
|
||||
$output = '
|
||||
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
|
||||
<fieldset class="shippingList">
|
||||
<legend><img src="../modules/mondialrelay/logo.gif" />'.$this->l('Shipping Method\'s list').'</legend>
|
||||
<ol>';
|
||||
if (!sizeof($query))
|
||||
$output .= '<li>'.$this->l('No shipping methods created').'</li>';
|
||||
foreach ($query AS $Options)
|
||||
{
|
||||
$output .= '
|
||||
<li>
|
||||
<a href="' . 'index.php?tab=AdminModules&configure=mondialrelay&token='.Tools::getAdminToken('AdminModules'.(int)(Tab::getIdFromClassName('AdminModules')).(int)($cookie->id_employee)).'&delete_mr=' . $Options['id_mr_method'] . '"><img src="../img/admin/disabled.gif" alt="Delete" title="Delete" /></a>' . str_replace('_', ' ', $Options['mr_Name']) . ' (' . $Options['mr_ModeCol'] . '-' . $Options['mr_ModeLiv'] . ' - ' . $Options['mr_ModeAss'] . ' : '.$Options['mr_Pays_list'].')
|
||||
<a href="index.php?tab=AdminCarriers&id_carrier=' . (int)($Options['id_carrier']) . '&updatecarrier&token='.Tools::getAdminToken('AdminCarriers'.(int)(Tab::getIdFromClassName('AdminCarriers')).(int)($cookie->id_employee)).'">'.$this->l('Config Shipping.').'</a>
|
||||
</li>';
|
||||
}
|
||||
$output .= '
|
||||
|
||||
</ol>
|
||||
</fieldset>
|
||||
</form><br />
|
||||
';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
public function settingsstateorderForm()
|
||||
{
|
||||
global $cookie;
|
||||
$this->orderState = Configuration::get('MONDIAL_RELAY_ORDER_STATE');
|
||||
$output = '';
|
||||
$output .= '<form action="'.$_SERVER['REQUEST_URI'].'" method="post" class="form">';
|
||||
$output .= '<fieldset><legend><img src="../modules/mondialrelay/logo.gif" />'.$this->l('Settings').'</legend>';
|
||||
$output .= '<label for="id_order_state">' . $this->l('Order state') . '</label>';
|
||||
$output .= '<div class="margin-form">';
|
||||
$output .= '<select id="id_order_state" name="id_order_state" style="width:250px">';
|
||||
|
||||
$order_states = OrderState::getOrderStates((int)($cookie->id_lang));
|
||||
foreach ( $order_states as $order_state)
|
||||
{
|
||||
$output .= '<option value="' . $order_state['id_order_state'] . '" style="background-color:' . $order_state['color'] . ';"';
|
||||
if ($this->orderState == $order_state['id_order_state'] ) $output .= ' selected="selected"';
|
||||
$output .= '>' . $order_state['name'] . '</option>';
|
||||
}
|
||||
$output .= '</select>';
|
||||
$output .= '<p>' . $this->l('Choose the order state for labels. You can manage the labels on').' ';
|
||||
$output .= '<a href="index.php?tab=AdminMondialRelay&token='.Tools::getAdminToken('AdminMondialRelay'.(int)(Tab::getIdFromClassName('AdminMondialRelay')).(int)($cookie->id_employee)).'" class="green">'.
|
||||
$this->l('the Mondial Relay administration page').'</a></p>';
|
||||
$output .= '</div>
|
||||
<div class="clear"></div>
|
||||
<label>'.$this->l('Google Map').' </label>
|
||||
<div class="margin-form">
|
||||
<input type="radio" name="mr_google_key" id="mr_google_key_on" value="1" '.(Configuration::get('MR_GOOGLE_MAP') ? 'checked="checked" ' : '').'/>
|
||||
<label class="t" for="mr_google_key_on"><img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Yes').'" /></label>
|
||||
<input type="radio" name="mr_google_key" id="mr_google_key_off" value="0" '.(!Configuration::get('MR_GOOGLE_MAP') ? 'checked="checked" ' : '').'/>
|
||||
<label class="t" for="mr_google_key_off"><img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('No').'" /></label>
|
||||
<p>'.$this->l('Displaying a google map on your Mondial Relay carrier may make carrier page loading slower.').'</p>
|
||||
</div>';
|
||||
$output .= '<div class="margin-form"><input type="submit" name="submit_order_state" value="' . $this->l('Save') . '" class="button" /></div>';
|
||||
$output .= '</fieldset></form><br>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
public function settingsForm()
|
||||
{
|
||||
$output = '
|
||||
<script type="text/javascript" >var url_appel="";</script>
|
||||
<script type="text/javascript" src="../modules/mondialrelay/kit_mondialrelay/js/ressources_MR.js"></script>
|
||||
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post" >
|
||||
<fieldset class="settingsList">
|
||||
<legend><img src="../modules/mondialrelay/logo.gif" />'.$this->l('Mondial Relay Account Settings').'</legend>
|
||||
<ol>
|
||||
<li>
|
||||
<label style="float:none;" for="mr_Enseigne_WebService" class="mrLabel">' . $this->l('Webservice Enseigne:') . '<sup>*</sup></label>
|
||||
<input style="float:right;" id="mr_Enseigne_WebService" class="mrInput" type="text" name="mr_Enseigne_WebService" value="' .
|
||||
(Tools::getValue('mr_Enseigne_WebService') ? Tools::getValue('mr_Enseigne_WebService') : Configuration::get('MR_ENSEIGNE_WEBSERVICE')) . '"/>
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" for="mr_code_marque" class="mrLabel">' . $this->l('Code marque:') . '<sup>*</sup></label>
|
||||
<input style="float:right;" id="mr_code_marque" class="mrInput" type="text" name="mr_code_marque" value="' .
|
||||
(Tools::getValue('mr_code_marque') ? Tools::getValue('mr_code_marque') : Configuration::get('MR_CODE_MARQUE')) . '"/>
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" for="mr_Key_WebService" class="mrLabel">' . $this->l('Webservice Key:') . '<sup>*</sup></label>
|
||||
<input style="float:right;" id="mr_Key_WebService" class="mrInput" type="text" name="mr_Key_WebService" value="' .
|
||||
(Tools::getValue('mr_Key_WebService') ? Tools::getValue('mr_Key_WebService') : Configuration::get('MR_KEY_WEBSERVICE')) . '"/>
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" for="mr_Langage" class="mrLabel">' . $this->l('Etiquette\'s Language:') . '<sup>*</sup></label>
|
||||
<select style="float:right;" id="mr_Langage" name="mr_Langage" value="'.
|
||||
(Tools::getValue('mr_Langage') ? Tools::getValue('mr_Langage') : Configuration::get('MR_LANGUAGE')).'" >';
|
||||
$languages = Language::getLanguages();
|
||||
foreach ($languages as $language)
|
||||
$output .= '<option value="'.strtoupper($language['iso_code']).'" '.(strtoupper($language['iso_code']) == Configuration::get('MR_LANGUAGE') ? 'selected="selected"' : '').'>'.$language['name'].'</option>';
|
||||
|
||||
$output .= '</select>
|
||||
</li>
|
||||
<li>
|
||||
<label style="float:none;" for="mr_weight_coef" class="mrLabel">' . $this->l('Weight Coefficient:') . '<sup>*</sup></label>
|
||||
<input id="mr_weight_coef" class="mrInput" type="text" name="mr_weight_coef" value="' .
|
||||
(Tools::getValue('mr_weight_coef') ? Tools::getValue('mr_weight_coef') : Configuration::get('MR_WEIGHT_COEF')) . '" style="width:45px;"/> ' .
|
||||
$this->l('grammes = 1 ') . Configuration::get('PS_WEIGHT_UNIT').'
|
||||
</li>
|
||||
<li class="MRSubmit">
|
||||
<input type="submit" name="submitMR" value="' . $this->l('Update Settings') . '" class="button" />
|
||||
</li>
|
||||
<li>
|
||||
<sup><sup>*</sup> ' . $this->l('Required') . '</sup>
|
||||
</li>
|
||||
</ol>
|
||||
</fieldset>
|
||||
</form>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
public function displayInfoByCart($id_cart)
|
||||
{
|
||||
$simpleresul = Db::getInstance()->ExecuteS('SELECT * FROM ' . _DB_PREFIX_ . 'mr_selected where id_cart='.(int)($id_cart));
|
||||
|
||||
if (trim($simpleresul[0]['exp_number']) != '0')
|
||||
@$sortie .= $this->l('Nb expedition:').$simpleresul[0]['exp_number']."<br>";
|
||||
if (trim($simpleresul[0]['url_etiquette']) != '0')
|
||||
@$sortie .= "<a href='".$simpleresul[0]['url_etiquette']."' target='etiquette".$simpleresul[0]['url_etiquette']."'>".$this->l('Label URL')."</a><br>";
|
||||
if (trim($simpleresul[0]['url_suivi']) != '0')
|
||||
@$sortie .= "<a href='".$simpleresul[0]['url_suivi']."' target='suivi".$simpleresul[0]['exp_number']."'>".$this->l('Follow-up URL')."</a><br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_Num']) != '')
|
||||
@$sortie .= $this->l('Nb Point Relay :').$simpleresul[0]['MR_Selected_Num']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_LgAdr1']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_LgAdr1']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_LgAdr2']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_LgAdr2']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_LgAdr3']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_LgAdr3']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_LgAdr4']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_LgAdr4']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_CP']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_CP']." ";
|
||||
if (trim($simpleresul[0]['MR_Selected_Ville']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_Ville']."<br>";
|
||||
if (trim($simpleresul[0]['MR_Selected_Pays']) != '')
|
||||
@$sortie .= $simpleresul[0]['MR_Selected_Pays']."<br>";
|
||||
return '<p>'.$sortie.'</p>';
|
||||
}
|
||||
|
||||
public function get_followup($shipping_number)
|
||||
{
|
||||
$query = 'SELECT url_suivi FROM '._DB_PREFIX_ .'mr_selected where id_mr_selected=\''.(int)($shipping_number).'\';';
|
||||
$settings = Db::getInstance()->ExecuteS($query);
|
||||
return $settings[0]['url_suivi'];
|
||||
}
|
||||
|
||||
|
||||
public function set_carrier($key,$value,$id_carrier)
|
||||
{
|
||||
if($key == 'name')
|
||||
$key = 'mr_Name';
|
||||
return Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'mr_method SET '.pSQL($key).'="'.pSQL($value).'" WHERE id_carrier=\''.(int)($id_carrier).'\' ; ');
|
||||
}
|
||||
|
||||
public function getL($key)
|
||||
{
|
||||
$trad = array(
|
||||
'List of recognized orders' => $this->l('List of recognized orders'),
|
||||
'Order number' => $this->l('Order number'),
|
||||
'Send e-mail to' => $this->l('Send e-mail to'),
|
||||
'Print A4 Label' => $this->l('Print A4 Label'),
|
||||
'Print A5 Label' => $this->l('Print A5 Label'),
|
||||
'return' => $this->l('return'),
|
||||
'All orders which have the state' => $this->l('All orders which have the state'),
|
||||
'Change configuration' => $this->l('Change configuration'),
|
||||
'No orders with this state.' => $this->l('No orders with this state.'),
|
||||
'Order ID' => $this->l('Order ID'),
|
||||
'Customer' => $this->l('Customer'),
|
||||
'Total price' => $this->l('Total price'),
|
||||
'Total shipping' => $this->l('Total shipping'),
|
||||
'Date' => $this->l('Date'),
|
||||
'Weight (in grams)' => $this->l('Weight (in grams)'),
|
||||
'Selected' => $this->l('Selected'),
|
||||
'All' => $this->l('All'),
|
||||
'None' => $this->l('None'),
|
||||
'MR_Selected_Num' => $this->l('MR_Selected_Num'),
|
||||
'MR_Selected_Pays' => $this->l('MR_Selected_Pays'),
|
||||
'exp_number' => $this->l('exp_number'),
|
||||
'Detail' => $this->l('Detail'),
|
||||
'View' => $this->l('View'),
|
||||
'Generate' => $this->l('Generate'),
|
||||
'Label creation history' => $this->l('Label creation history'),
|
||||
'Orders ID' => $this->l('Orders ID'),
|
||||
'Exps num' => $this->l('Exps num'),
|
||||
'Delete selected history' => $this->l('Delete selected history'),
|
||||
'Closed' => $this->l('Closed'),
|
||||
'Monday' => $this->l('Monday'),
|
||||
'Tuesday' => $this->l('Tuesday'),
|
||||
'Wednesday' => $this->l('Wednesday'),
|
||||
'Thursday' => $this->l('Thursday'),
|
||||
'Friday' => $this->l('Friday'),
|
||||
'Saturday' => $this->l('Saturday'),
|
||||
'Sunday' => $this->l('Sunday'),
|
||||
'Select this Relay Point' => $this->l('Select this Relay Point'),
|
||||
'To generate sticks, you must have register a correct address of your store on' => $this->l('To generate labels, you must have registered a correct address of your store on'),
|
||||
'To generate labels, you must have registered a correct address of your store on' => $this->l('To generate labels, you must have registered a correct address of your store on'),
|
||||
'The contact page' => $this->l('The contact page'),
|
||||
'Settings updated succesfull' => $this->l('Settings updated'),
|
||||
'Settings updated' => $this->l('Settings updated'),
|
||||
'Empty address : Are you sure you have set a valid address on the contact page?' => $this->l('Empty address : Are you sure you have set a valid address on the contact page?')
|
||||
);
|
||||
return (array_key_exists($key, $trad)) ? $trad[$key] : $key;
|
||||
}
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
{*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
<script type="text/javascript">var url_appel="{$base_dir}";</script>
|
||||
<script type="text/javascript" src="{$base_dir}modules/mondialrelay/kit_mondialrelay/js/include_MR.js"></script>
|
||||
<script type="text/javascript" src="{$base_dir}modules/mondialrelay/kit_mondialrelay/js/ressources_MR.js"></script>
|
||||
<script type="text/javascript">
|
||||
var one_page_checkout = {$one_page_checkout};
|
||||
var server_error = "{l s='Problem getting addresses from MondialRelay Webservice : Mondial Relay servers\' may be down' mod='mondialrelay'}";
|
||||
var address_error = "{l s='There is no Relay Point close to your address, please change your address or use another shipping' mod='mondialrelay'}";
|
||||
</script>
|
||||
|
||||
{foreach from=$carriersextra item=carrier name=myLoop}
|
||||
|
||||
<script type="text/javascript">{literal}
|
||||
$(document).ready(function()
|
||||
{
|
||||
$('input[name$=id_carrier]').click(function() {
|
||||
{/literal}affiche_mydiv_mr({$carrier.id_carrier|intval}, 'relativ_base_dir={$base_dir}&Pays={$input_pays}&Ville={$input_ville}&CP={$input_cp}&Taille=&Poids={$input_poids}&Action={$carrier.liv|escape:'htmlall':'UTF-8'}&num={$carrier.id_carrier|intval}');{literal}
|
||||
});
|
||||
});
|
||||
{/literal}</script>
|
||||
|
||||
<tr class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{/if} {if ($nbcarriers+$smarty.foreach.myLoop.index) % 2}alternate_item{else}item{/if}">
|
||||
|
||||
<td class="carrier_action radio">
|
||||
<input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier_mr{$carrier.id_carrier|intval}" onchange="affiche_mydiv_mr({$carrier.id_carrier|intval},
|
||||
'relativ_base_dir={$base_dir}&Pays={$input_pays}&Ville={$input_ville}&CP={$input_cp}&Taille=&Poids={$input_poids}&Action={$carrier.liv|escape:'htmlall':'UTF-8'}&num={$carrier.id_carrier|intval}'
|
||||
);" {if ($carrier.id_carrier == $checked)} checked="checked" {/if} {if $one_page_checkout}onclick="updateCarrierSelectionAndGift();" {/if} />
|
||||
</td>
|
||||
<td class="carrier_name">
|
||||
<label for="id_carrier_mr{$carrier.id_carrier|intval}">
|
||||
{if $carrier.img}<img src="{$carrier.img|escape:'htmlall':'UTF-8'}" alt="{$carrier.name|escape:'htmlall':'UTF-8'}">{else}{$carrier.name|escape:'htmlall':'UTF-8'}{/if}
|
||||
|
||||
</label>
|
||||
</td>
|
||||
<td class="carrier_infos">{$carrier.delay|escape:'htmlall':'UTF-8'}</td>
|
||||
<td class="carrier_price">
|
||||
{if $carrier.price}
|
||||
<span class="price">
|
||||
{if $priceDisplay == 1}{convertPrice price=$carrier.price_tax_exc}{else}{convertPrice price=$carrier.price}{/if}
|
||||
</span>
|
||||
{if $priceDisplay == 1} {l s='(tax excl.)' mod='mondialrelay'}{else} {l s='(tax incl.)' mod='mondialrelay'}{/if}
|
||||
{else}
|
||||
{l s='Free!' mod='mondialrelay'}
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{if $carrier.liv !='LDR' && $carrier.liv != 'LD1' && $carrier.liv != 'LDS'}
|
||||
<tr class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{/if} {if ($nbcarriers+$smarty.foreach.myLoop.index) % 2}alternate_item{else}item{/if}">
|
||||
<td colspan="4" align="center">
|
||||
<div style="display:none;" id="form_mondialrelay_{$carrier.id_carrier|intval}"></div>
|
||||
{if ($google_api_key)}
|
||||
<iframe style="display:none;" id="all_mondialrelay_map_{$carrier.id_carrier|intval}" width="517px" height="317px" frameborder="0" scrolling="no" src="{$base_dir}modules/mondialrelay/googlemap.php?relativ_base_dir={$base_dir}&Pays={$input_pays}&Ville={$input_ville}&CP={$input_cp}&Taille=&Poids={$input_poids}&Action={$carrier.liv|escape:'htmlall':'UTF-8'}&num={$carrier.id_carrier|intval}&address={$address_map}"></iframe>
|
||||
{/if}
|
||||
<img src="{$base_dir}modules/mondialrelay/kit_mondialrelay/loading.gif" style="display:none;" id="loading_mr"/>
|
||||
<div style="display:none;" id="mondialrelay_{$carrier.id_carrier|intval}"></div>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
<script type="text/javascript" >
|
||||
if ($("#id_carrier{$carrier.id_carrier|intval}").attr('checked') == true)
|
||||
$("#id_carrier_mr{$carrier.id_carrier|intval}").attr('checked', "checked");
|
||||
$("#id_carrier{$carrier.id_carrier|intval}").parent().parent().remove();
|
||||
include_mondialrelay({$carrier.id_carrier|intval});
|
||||
affiche_mydiv_mr({$carrier.id_carrier|intval}, 'relativ_base_dir={$base_dir}&Pays={$input_pays}&Ville={$input_ville}&CP={$input_cp}&Taille=&Poids={$input_poids}&Action={$carrier.liv|escape:'htmlall':'UTF-8'}&num={$carrier.id_carrier|intval}');
|
||||
</script>
|
||||
{/foreach}
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS `PREFIX_mr_method` (
|
||||
`id_mr_method` int(10) unsigned NOT NULL auto_increment,
|
||||
`mr_Name` varchar(255) NOT NULL,
|
||||
`mr_Pays_list` varchar(1000) NOT NULL,
|
||||
`mr_ModeCol` varchar(3) NOT NULL,
|
||||
`mr_ModeLiv` varchar(3) NOT NULL,
|
||||
`mr_ModeAss` varchar(3) NOT NULL DEFAULT '0',
|
||||
`id_carrier` int(10) NOT NULL,
|
||||
PRIMARY KEY (`id_mr_method`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `PREFIX_mr_selected` (
|
||||
`id_mr_selected` int(10) unsigned NOT NULL auto_increment,
|
||||
`id_customer` int(10) unsigned NULL,
|
||||
`id_method` int(10) unsigned NULL,
|
||||
`id_cart` int(10) unsigned NULL,
|
||||
`id_order` int(10) unsigned NULL,
|
||||
`MR_poids` varchar(7) NULL,
|
||||
`MR_Selected_Num` varchar(6) NULL,
|
||||
`MR_Selected_LgAdr1` varchar(36) NULL,
|
||||
`MR_Selected_LgAdr2` varchar(36) NULL,
|
||||
`MR_Selected_LgAdr3` varchar(36) NULL,
|
||||
`MR_Selected_LgAdr4` varchar(36) NULL,
|
||||
`MR_Selected_CP` varchar(10) NULL,
|
||||
`MR_Selected_Ville` varchar(32) NULL,
|
||||
`MR_Selected_Pays` varchar(2) NULL,
|
||||
`url_suivi` varchar(1000) NULL,
|
||||
`url_etiquette` varchar(1000) NULL,
|
||||
`exp_number` varchar(8) NULL,
|
||||
`date_add` datetime NOT NULL,
|
||||
`date_upd` datetime NOT NULL,
|
||||
PRIMARY KEY (`id_mr_selected`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `PREFIX_mr_historique` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`order` TEXT NOT NULL ,
|
||||
`exp` TEXT NOT NULL ,
|
||||
`url_a4` VARCHAR( 1000 ) NOT NULL ,
|
||||
`url_a5` VARCHAR( 1000 ) NOT NULL ,
|
||||
PRIMARY KEY ( `id` )
|
||||
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
{if $mr_addr}
|
||||
<p id="dateofdelivery"><b>{l s='Delivery to' mod='mondialrelay'}</b> {$mr_addr}</p>
|
||||
{/if}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision: 1.4 $
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
//header('Content-Type: text/html; charset=iso-8859-15');
|
||||
function ote_accent($str){
|
||||
|
||||
$str = str_replace("'", " ", $str);
|
||||
|
||||
$str = utf8_decode($str);
|
||||
|
||||
$ch = strtr($str,
|
||||
|
||||
'����������������������������������������������������',
|
||||
|
||||
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
|
||||
|
||||
return utf8_encode($ch);
|
||||
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
.shippingList {
|
||||
width: 400px;
|
||||
float: right;
|
||||
}
|
||||
.shippingList li {
|
||||
margin: 5px;
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
.shipLabel {
|
||||
width: 230px;
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
.selectShipping {
|
||||
width: 100px;
|
||||
}
|
||||
.settingsList {
|
||||
width: 400px;
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.settingsList li {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
clear: both;
|
||||
}
|
||||
.upsLabel {
|
||||
width: 170px;
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
.upsInput {
|
||||
float: left;
|
||||
}
|
||||
.upsSubmit {
|
||||
text-align: center;
|
||||
}
|
||||
.addMethodForm {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||