source: pmb4.1/trunk/fuentes/pmb/admin/connecteurs/in/amazon/amazon.class.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 37.5 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: amazon.class.php,v 1.23 2013-12-27 14:06:36 dbellamy Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9global $class_path,$base_path, $include_path;
10require_once($class_path."/connecteurs.class.php");
11require_once($class_path."/nusoap/nusoap.php");
12
13class amazon extends connector {
14        //Variables internes pour la progression de la récupération des notices
15        var $del_old;                           //Supression ou non des notices dejà existantes
16       
17        var $profile;                           //Profil Amazon
18        var $match;                                     //Tableau des critères UNIMARC / AMAZON
19        var $current_site;                      //Site courant du profile (n°)
20        var $searchindexes;                     //Liste des indexes de recherche possibles pour le site
21        var $current_searchindex;       //Numéro de l'index de recherche de la classe
22        var $match_index;                       //Type de recherche (power ou simple)
23        var $types;                                     //Types de documents pour la conversino des notices
24       
25        //Résultat de la synchro
26        var $error;                                     //Y-a-t-il eu une erreur       
27        var $error_message;                     //Si oui, message correspondant
28       
29    function amazon($connector_path="") {
30        parent::connector($connector_path);
31        $xml=file_get_contents($connector_path."/profil.xml");
32                $this->profile=_parser_text_no_function_($xml,"AWSCONFIG");
33    }
34   
35    function get_id() {
36        return "amazon";
37    }
38   
39    //Est-ce un entrepot ?
40        function is_repository() {
41                return 2;
42        }
43   
44    function unserialize_source_params($source_id) {
45        $params=$this->get_source_params($source_id);
46                if ($params["PARAMETERS"]) {
47                        $vars=unserialize($params["PARAMETERS"]);
48                        $params["PARAMETERS"]=$vars;
49                }
50                return $params;
51    }
52   
53    function get_libelle($message) {
54        if (substr($message,0,4)=="msg:") return $this->msg[substr($message,4)]; else return $message;
55    }
56   
57    function source_get_property_form($source_id) {
58        global $charset;
59       
60        $params=$this->get_source_params($source_id);
61                if ($params["PARAMETERS"]) {
62                        //Affichage du formulaire avec $params["PARAMETERS"]
63                        $vars=unserialize($params["PARAMETERS"]);
64                        foreach ($vars as $key=>$val) {
65                                global $$key;
66                                $$key=$val;
67                        }       
68                }
69                $sites=$this->profile["SITES"][0]["SITE"];
70                if (!$url) $url=$sites[0]["COUNTRY"];
71                if (!$max_return) $max_return=100;
72               
73                $form="
74                <script>var old_search_index='search_index_".$url."'</script>
75                <div class='row'>
76                        <div class='colonne3'>
77                                <label for='url'>".$this->msg["amazon_site"]."</label>
78                        </div>
79                        <div class='colonne_suite'>
80                                <select name='url' id='url' onChange='if (old_search_index) document.getElementById(old_search_index).style.display=\"none\"; document.getElementById(\"search_index_\"+this.options[this.selectedIndex].value).style.display=\"block\"; old_search_index=\"search_index_\"+this.options[this.selectedIndex].value;'>";
81                for ($i=0; $i<count($sites); $i++) {
82                        $form.="                <option value='".$sites[$i]["COUNTRY"]."' ".($url==$sites[$i]["COUNTRY"]?"selected":"").">".$this->get_libelle($sites[$i]["COMMENT"])."</option>\n";
83                }
84                $form.="
85                                </select>
86                        </div>
87                </div>
88                <div class='row'>
89                        <div class='colonne3'>
90                                <label for='max_return'>".$this->msg["amazon_max_return"]."</label>
91                        </div>
92                        <div class='colonne_suite'>
93                                <input type='text' name='max_return' id='max_return' value='".htmlentities($max_return,ENT_QUOTES,$charset)."' size='10'/>
94                        </div>
95                </div>
96                <div class='row'>
97                        <div class='colonne3'>
98                                <label for='search_index'>".$this->msg["amazon_search_in"]."</label>
99                        </div>
100                        <div class='colonne_suite'>";
101                for ($i=0; $i<count($sites); $i++) {
102                        $country=$sites[$i]["COUNTRY"];
103                        $searchindexes=$sites[$i]["SEARCHINDEXES"][0]["SEARCHINDEX"];
104                        $form.="
105                                        <select name='search_index[$country][]' id='search_index_$country' style='".((($url==$country)||(($url=="")&&($country==$sites[0]["COUNTRY"])))?"display:block":"display:none")."'>
106                                                ";
107                        for ($j=0; $j<count($searchindexes); $j++) {
108                                if ($search_index[$country]=="") $search_index[$country]=array();
109                                $form.="<option value='".htmlentities($searchindexes[$j]["TYPE"],ENT_QUOTES,$charset)."' ".(array_search($searchindexes[$j]["TYPE"],$search_index[$country])!==false?"selected":"").">".htmlentities($this->get_libelle($searchindexes[$j]["COMMENT"]),ENT_QUOTES,$charset)."</option>\n";
110                        }
111                        $form.="
112                                </select>";
113                }
114                $form.="
115                        </div>
116                </div>
117                <div class='row'></div>";
118                return $form;
119    }
120   
121    function make_serialized_source_properties($source_id) {
122        global $url,$response_group,$search_index,$max_return;
123        $t["url"]=stripslashes($url);
124        $t["response_group"]=$response_group;
125                $t["search_index"]=$search_index;
126                $t["max_return"]=$max_return;
127                $this->sources[$source_id]["PARAMETERS"]=serialize($t);
128        }
129       
130        //Récupération  des proriétés globales par défaut du connecteur (timeout, retry, repository, parameters)
131        function fetch_default_global_values() {
132                $this->timeout=5;
133                $this->repository=2;
134                $this->retry=3;
135                $this->ttl=1800;
136                $this->parameters="";
137        }
138       
139         //Formulaire des propriétés générales
140        function get_property_form() {
141                global $charset;
142                $this->fetch_global_properties();
143                //Affichage du formulaire en fonction de $this->parameters
144                if ($this->parameters) {
145                        $keys = unserialize($this->parameters);
146                        $accesskey= $keys['accesskey'];
147                        $secretkey=$keys['secretkey'];
148                        $associatetag=$keys['associatetag'];
149                } else {
150                        $accesskey="";
151                        $secretkey="";
152                        $associatetag="";
153                }       
154                $r="<div class='row'>
155                                <div class='colonne3'><label for='accesskey'>".$this->msg["amazon_key"]."</label></div>
156                                <div class='colonne-suite'><input type='text' id='accesskey' name='accesskey' value='".htmlentities($accesskey,ENT_QUOTES,$charset)."'/></div>
157                        </div>
158                        <div class='row'>
159                                <div class='colonne3'><label for='secretkey'>".$this->msg["amazon_secret_key"]."</label></div>
160                                <div class='colonne-suite'><input type='text' class='saisie-50em' id='secretkey' name='secretkey' value='".htmlentities($secretkey,ENT_QUOTES,$charset)."'/></div>
161                        </div>
162                        <div class='row'>
163                                <div class='colonne3'><label for='associatetag'>".$this->msg["amazon_associate_tag"]."</label></div>
164                                <div class='colonne-suite'><input type='text' id='associatetag' name='associatetag' value='".htmlentities($associatetag,ENT_QUOTES,$charset)."'/></div>
165                        </div>";
166                return $r;
167        }
168   
169    function make_serialized_properties() {
170        global $accesskey, $secretkey, $associatetag;
171                //Mise en forme des paramètres à partir de variables globales (mettre le résultat dans $this->parameters)
172                $keys = array();
173       
174        $keys['accesskey']=$accesskey;
175                $keys['secretkey']=$secretkey;
176                $keys['associatetag'] = $associatetag;
177                $this->parameters = serialize($keys);
178        }
179       
180        function rec_record($record,$source_id,$search_id) {
181                global $charset,$base_path,$url,$search_index;
182               
183                $date_import=date("Y-m-d H:i:s",time());
184               
185                //Recherche du 001
186                $ref=$record["001"][0];
187                //Mise à jour
188                if ($ref) {
189                        //Si conservation des anciennes notices, on regarde si elle existe
190                        if (!$this->del_old) {
191                                $requete="select count(*) from entrepot_source_".$source_id." where ref='".addslashes($ref)."' and search_id='".addslashes($search_id)."'";
192                                $rref=mysql_query($requete);
193                                if ($rref) $ref_exists=mysql_result($rref,0,0);
194                        }
195                        //Si pas de conservation des anciennes notices, on supprime
196                        if ($this->del_old) {
197                                $requete="delete from entrepot_source_".$source_id." where ref='".addslashes($ref)."' and search_id='".addslashes($search_id)."'";
198                                mysql_query($requete);
199                        }
200                        //Si pas de conservation ou reférence inexistante
201                        if (($this->del_old)||((!$this->del_old)&&(!$ref_exists))) {
202                                //Insertion de l'entête
203                                $n_header["rs"]="*";
204                                $n_header["ru"]="*";
205                                $n_header["el"]="1";
206                                $n_header["bl"]="m";
207                                $n_header["hl"]="0";
208                                $n_header["dt"]=$this->types[$search_index[$url][0]];
209                                if (!$n_header["dt"]) $n_header["dt"]="a";
210                               
211                                //Récupération d'un ID
212                                $requete="insert into external_count (recid, source_id) values('".addslashes($this->get_id()." ".$source_id." ".$ref)."', ".$source_id.")";
213                                $rid=mysql_query($requete);
214                                if ($rid) $recid=mysql_insert_id();
215                               
216                                foreach($n_header as $hc=>$code) {
217                                        $requete="insert into entrepot_source_".$source_id." (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid,search_id) values(
218                                        '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."',
219                                        '".$hc."','',-1,0,'".addslashes($code)."','',$recid,'".addslashes($search_id)."')";
220                                        mysql_query($requete);
221                                }
222                                $field_order=0;
223                                foreach ($record as $field=>$val) {
224                                        for ($i=0; $i<count($val); $i++) {
225                                                if (is_array($val[$i])) {
226                                                        foreach ($val[$i] as $sfield=>$vals) {
227                                                                for ($j=0; $j<count($vals); $j++) {
228                                                                        //if ($charset!="utf-8")  $vals[$j]=utf8_decode($vals[$j]);
229                                                                        $requete="insert into entrepot_source_".$source_id." (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid,search_id) values(
230                                                                        '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."',
231                                                                        '".addslashes($field)."','".addslashes($sfield)."',".$field_order.",".$j.",'".addslashes($vals[$j])."',
232                                                                        ' ".addslashes(strip_empty_words($vals[$j]))." ',$recid,'".addslashes($search_id)."')";
233                                                                        mysql_query($requete);
234                                                                }
235                                                        }
236                                                } else {
237                                                        //if ($charset!="utf-8")  $vals[$i]=utf8_decode($vals[$i]);
238                                                        $requete="insert into entrepot_source_".$source_id." (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid) values(
239                                                        '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."',
240                                                        '".addslashes($field)."','',".$field_order.",0,'".addslashes($val[$i])."',
241                                                        ' ".addslashes(strip_empty_words($val[$i]))." ',$recid,'".addslashes($search_id)."')";
242                                                        mysql_query($requete);
243                                                }
244                                                $field_order++;
245                                        }
246                                }
247                        }
248                }
249        }
250               
251        function cancel_maj($source_id) {
252                return false;
253        }
254       
255        function break_maj($source_id) {
256                return false;
257        }
258       
259        function parse_profile() {
260                global $url,$search_index;
261                $matches=$this->profile["MATCHES"][0]["MATCH"];
262                for ($j=0; $j<count($matches); $j++) {
263                        $this->match[$matches[$j]["TYPE"]]=$matches[$j]["CRITERIA"];
264                }
265                //Récupération des sites
266                $this->current_site=false;
267                for ($i=0; $i<count($this->profile["SITES"][0]["SITE"]); $i++) {
268                        if ($this->profile["SITES"][0]["SITE"][$i]["COUNTRY"]==$url) {
269                                $this->current_site=$i;
270                                break;
271                        }
272                }
273                $this->searchindexes=$this->profile["SITES"][0]["SITE"][$this->current_site]["SEARCHINDEXES"][0]["SEARCHINDEX"];
274                //Recherche des critères
275                for ($i=0; $i<count($this->searchindexes); $i++) {
276                        if ($this->searchindexes[$i]["TYPE"]==$search_index[$url][0]) {
277                                $this->current_searchindex=$i;
278                                break;
279                        }
280                }
281                //Est-ce une recherche POWER ?
282                if ($this->searchindexes[$this->current_searchindex]["POWER"]=="yes")
283                        $this->match_index="power";
284                else
285                        $this->match_index="simple";
286                //Parse des types de document
287                $types=$this->profile["TYPES"][0]["TYPE"];
288                for ($i=0; $i<count($types); $i++) {
289                        $this->types[$types[$i]["NAME"]]=$types[$i]["DT"];
290                }
291        }
292       
293        function parse_query($query,$first_call=false) {
294                global $url,$search_index;
295               
296                //Si c'est le premier appel du parser, on indique le type de recherche
297                if ($first_call) $searchattr["TYPE"]=$this->match_index;
298               
299                //Affectation de la grillle des critères autorisés
300                $criterias=$this->searchindexes[$this->current_searchindex]["CRITERIA"];
301                $auth_criterias=array();
302                for ($i=0; $i<count($criterias); $i++) {
303                        $auth_criterias[$criterias[$i]["NAME"]]=true;
304                }
305               
306                //Transformation
307                for ($i=0; $i<count($query); $i++) {
308                        if (!$query[$i]->sub) {
309                               
310                                //Enlevons tous les caractères rigolos des ISBNs
311                                if ($query[$i]->ufield == '010$a') {
312                                        for($k=0, $acount=count($query[$i]->values); $k<$acount;$k++) {
313                                                $query[$i]->values[$k] = preg_replace('/-|\.| /', '', $query[$i]->values[$k]);;
314                                        }
315                                }
316                               
317                                $af=explode(":",$query[$i]->ufield);
318                                $isid=false;
319                                if (count($af)>1) {
320                                        if ($af[0]=="id") $isid=true; 
321                                        $amf=$af[1];
322                                } else $amf=$af[0];
323                                $amazon_field=array();
324                                $op=$query[$i]->op;
325                                for ($j=0; $j<count($this->match[$this->match_index]); $j++) {
326                                        //Est-ce que l'opérateur est exclu ??
327                                        $can_translate=false;
328                                        if (($this->match[$this->match_index][$j]["EXCLUDEOPERATORS"])&&(in_array($op,explode(",",$this->match[$this->match_index][$j]["EXCLUDEOPERATORS"]))===false)) {
329                                                $can_translate=true;
330                                        } else if ($this->match[$this->match_index][$j]["OPERATORS"]) {
331                                                if (in_array($op,explode(",",$this->match[$this->match_index][$j]["OPERATORS"]))!==false) $can_translate=true;
332                                        } else {
333                                                $can_translate=true;
334                                        }
335                                        //Si l'opérateur est autorisé alors on regarde si le critère correspond
336                                        if ($can_translate) {
337                                                if (in_array($amf,explode(",",$this->match[$this->match_index][$j]["UNIMARCFIELD"]))!==false) {
338                                                        $azf=$this->match[$this->match_index][$j]["NAME"];
339                                                        //Le champ est-il autorisé dans cette configuration ?
340                                                        if ((($this->searchindexes[$this->current_searchindex]["POWER"]!="yes")&&($auth_criterias[$azf]))||($this->searchindexes[$this->current_searchindex]["POWER"]=="yes")) {
341                                                                $amazon_field[]=$azf;
342                                                        }
343                                                }
344                                                if ($this->match[$this->match_index][$j]["UNIMARCFIELD"]=="ALLOTHERS") {
345                                                        $allothers=$this->match[$this->match_index][$j]["NAME"];
346                                                }
347                                        }
348                                }               
349                                if (!count($amazon_field)) $amazon_field[]=$allothers;
350                                $t=array();
351                                $t["FIELDS"]=$amazon_field;
352                                if ($isid) {
353                                        $t["VALUE"][0]=$this->get_values_from_id($query[$i]->values[0],$amf);
354                                } else $t["VALUE"]=$query[$i]->values;
355                                if (($query[$i]->inter)&&($i)) $t["INTER"]=$query[$i]->inter;
356                                $searchattr[]=$t; 
357                        } else {
358                                $t["FIELDS"]="";
359                                $t["VALUE"]="";
360                                $t["SUB"]=$this->parse_query($query[$i]->sub);
361                                if (($query[$i]->inter)&&($i)) $t["INTER"]=$query[$i]->inter;
362                                $searchattr[]=$t;
363                        }
364                }
365                return $searchattr;
366                //return $r;
367        }
368       
369        function make_power_query($query) {
370                $r="";
371                for ($i=0; $i<count($query)-1; $i++) {
372                        if (($query[$i]["INTER"])&&($i>0)) {
373                                if ($query[$i]["INTER"]=="ex") $inter="and not"; else $inter=$query[$i]["INTER"];
374                                $r.=" ".$inter." ";
375                        }
376                        if ($query[$i]["SUB"]) 
377                                $r.="(".$this->make_power_query($query[$i]["SUB"]).")";
378                        else {
379                                $expr=array();
380                                for ($j=0; $j<count($query[$i]["VALUE"]); $j++) {
381                                        $query[$i]["VALUE"][$j]=convert_diacrit($query[$i]["VALUE"][$j]);
382                                }
383                                for ($j=0; $j<count($query[$i]["FIELDS"]); $j++) {
384                                        $expr[]=$query[$i]["FIELDS"][$j].":".implode(" or ",$query[$i]["VALUE"]);
385                                }
386                                $r.=implode(" or ",$expr);
387                        }
388                }
389                return array(0=>array("PARAM"=>array("Power"=>$r)));
390        }
391       
392        function make_simple_search($query) {
393                $r=array();
394                for ($i=0; $i<count($query)-1; $i++) {
395                        $q=array();
396                        if (($query[$i]["INTER"])&&($i>0)) {
397                                $q["INTER"]=$query[$i]["INTER"];
398                        }
399                        if ($query[$i]["SUB"]) 
400                                $q["SUB"]=$this->make_simple_search($query[$i]["SUB"]);
401                        else {
402                                $expr=array();
403                                for ($j=0; $j<count($query[$i]["VALUE"]); $j++) {
404                                        $query[$i]["VALUE"][$j]=convert_diacrit($query[$i]["VALUE"][$j]);
405                                }
406                                $req="";
407                                for ($j=0; $j<count($query[$i]["FIELDS"]); $j++) {
408                                        for ($k=0; $k<count($query[$i]["VALUE"]); $k++) {
409                                                $param="";
410                                                $param[$query[$i]["FIELDS"][$j]]=$query[$i]["VALUE"][$k];
411                                                $expr[]=$param;
412                                        }
413                                }
414                                if (count($expr)>1) {
415                                        $sub=array();
416                                        for ($j=0; $j<count($expr); $j++) {
417                                                $q1=array();
418                                                if ($j>0) $q1["INTER"]="or";
419                                                $q1["PARAM"]=$expr[$j];
420                                                $sub[]=$q1;
421                                        }
422                                        $q["SUB"]=$sub;
423                                } else {
424                                        $q["PARAM"]=$expr[0];
425                                }
426                        }
427                        $r[]=$q;
428                }
429                return $r;
430        }
431       
432        function store_asins($result,$inter,$first=false,&$n) {
433                //Lecture et stockage des Items
434                $asins=array();
435                $items=$this->soap2array($result["Items"],"Item");
436                for ($j=0; $j<count($items); $j++) {
437                        $asins[]="('".$items[$j]["ASIN"]."')";
438                }
439                $n+=count($items);
440                if ($first) {
441                        $requete="create temporary table amazon_items (asin varchar(50), primary key(asin))";
442                        mysql_query($requete);
443                        if (count($asins)) mysql_query("insert into amazon_items values ".implode(",",$asins));
444                } else {
445                        if (($inter=="and")||($inter=="ex")) {
446                                $requete="create temporary table amazon_items_1 (asin1 varchar(50), primary key(asin1))";
447                                mysql_query($requete);
448                                //C'est un et ou sauf, et = supprimer tous les éléments de la
449                                //table amazon_items qui ne sont pas dans amazon_items_1, sauf = supprimer
450                                //de la table amazon_items tous ceux qui sont aussi dans la table amazon_items_1
451                                if (count($asins)) {
452                                        mysql_query("insert into amazon_items_1 values ".implode(",",$asins));
453                                        if ($inter=="and") {
454                                                $requete="delete amazon_items from amazon_items left join amazon_items_1 on asin1=asin where asin1 is null";
455                                                mysql_query($requete);
456                                        } else {
457                                                $requete="delete amazon_items from amazon_items, amazon_items_1 where asin1=asin";
458                                                mysql_query($requete);
459                                        }
460                                        mysql_query("drop table asin_items_1");
461                                }
462                        } else {
463                                //C'est un ou, on insère sans erreurs !!
464                                if (count($asins)) mysql_query("insert ignore into amazon_items values ".implode(",",$asins));         
465                        }
466                }
467        }
468       
469        function make_search($source_id,$q,$client) {
470                global $url,$search_index,$max_return;
471               
472                $this->fetch_global_properties();
473                $parameters = unserialize($this->parameters);
474                $client->setHeaders($this->make_soap_headers('ItemSearch'));
475                $proxy=$client->getProxy();
476               
477                $paws["Request"]=array(
478                        "SearchIndex"=>$search_index[$url][0],
479                        "ResponseGroup"=>"ItemIds"
480                );
481                $n=0;
482                for ($i=0; $i<count($q); $i++) {
483                        if (!$q[$i]["SUB"]) {
484                                $pawsp=$paws;
485                                foreach($q[$i]["PARAM"] as $rparam=>$value)
486                                        $pawsp["Request"][$rparam]=$value;
487                                $pawsp['AssociateTag'] = $parameters['associatetag'];
488                                $result=$proxy->ItemSearch($pawsp);
489                                if ($err=$client->getError()) {
490                                        $this->error=true;
491                                        $this->error_message=$err;
492                                } else {
493                                        $this->store_asins($result,$q[$i]["INTER"],($i==0),$n);
494                                        if ($result["Items"]["TotalPages"]>1) {
495                                                $npages=$result["Items"]["TotalPages"];
496                                                for ($j=2; $j<=$npages; $j++) {
497                                                        $pawsp["Request"]["ItemPage"]=$j;
498                                                        $result=$proxy->ItemSearch($pawsp);
499                                                        if ($err=$client->getError()) {
500                                                                $this->error=true;
501                                                                $this->error_message=$err;
502                                                                break;
503                                                        } else $this->store_asins($result,$q[$i]["INTER"],($i==0),$n);
504                                                        if ((count($q)==1) and ($n>=$max_return)) break;
505                                                }
506                                        }
507                                }
508                        } else {
509                                $this->make_search($source_id,$q[$i]["SUB"],$client);
510                        }
511                }
512        }
513       
514        function soap2array($t,$element) {
515                $n=0;
516                $r=array();
517                if (is_array($t[$element])) {
518                        foreach ($t[$element] as $elt=>$val) {
519                                if ((string)$elt!=(string)$n) {
520                                        $r=array();
521                                        $r[0]=$t[$element];
522                                        break;
523                                } else {
524                                        $r[$n]=$val;
525                                        $n++;
526                                }
527                        }
528                } else if ($t[$element]) $r[0]=$t[$element];
529                return $r;
530        }
531       
532        function amazon_2_uni($item) {
533
534                $nt=$item["ItemAttributes"];
535                $unimarc=array();
536                $unimarc["001"][0]=$item["ASIN"];
537                if ($nt["EAN"]) $unimarc["010"][0]["a"][0]=$nt["EAN"];
538                if ($nt["UPC"]) $unimarc["010"][0]["a"][0]=$nt["UPC"];
539                if ($nt["ISBN"]) $unimarc["010"][0]["a"][0]=$nt["ISBN"];
540               
541                //Langue
542                $langue=$this->soap2array($nt,"Language");
543                if (count($langue)) {
544                        for ($i=0; $i<count($langue); $i++)
545                                $unimarc["101"][$i]["a"][0]=$langue[$i];
546                }
547               
548                $unimarc["200"][0]["a"][0]=$nt["Title"];
549               
550                //Mention d'édition
551                $edition=$this->soap2array($nt,"Edition");
552                if (count($edition)) $unimarc["205"][0]["a"][0]=$edition[0];
553               
554                //Editeurs
555                $publisher=$this->soap2array($nt,"Publisher"); 
556                $pubdate  =$this->soap2array($nt,"PublicationDate");
557                $releasedate=$this->soap2array($nt,"ReleaseDate");
558               
559                $unimarc["210"][0]["c"][0]=$publisher[0];
560                if (count($pubdate)) $unimarc["210"][0]["d"][]=substr($pubdate[0],0,4);
561                if (count($releasedate)) $unimarc["210"][0]["d"][]=substr($releasedate[0],0,4);
562               
563                //Collation
564                $numberofpages=$this->soap2array($nt,"NumberOfPages");
565                $numberoftracks=$this->soap2array($nt,"NumberOfTracks");
566                if (count($numberofpages)) $unimarc["215"][0]["a"][]=$numberofpages[0]." p.";
567                if (count($numberoftracks)) $unimarc["215"][0]["a"][]=$numberoftracks[0]." p.";
568               
569                $aspectratio=$this->soap2array($nt,"AscpectRatio");
570                $audioformat=$this->soap2array($nt,"AudioFormat");
571                $c_215=array();
572                if ($aspectratio[0]) $c_215[]=$aspectratio[0];
573                if ($audioformat[0]) $c_215[]="Audio : ".$audioformat[0];
574                $c_215=implode(" - ",$c_215);
575                if ($c_215) $unimarc["215"][0]["c"][0]=$c_215;
576               
577                $numberofitems=$this->soap2array($nt,"NumberOfItems");
578                $numberofdiscs=$this->soap2array($nt,"NumberOfDiscs");
579                $e_215=array();
580                if ($numberofitems[0]) $e_215[]="Nombre d'éléments : ".$numberofitems[0];
581                if ($numberofdiscs[0]) $e_215[]="Nombre de disques : ".$numberofdiscs[0];
582                $e_215=implode(" - ",$e_215);
583                if ($e_215) $unimarc["215"][0]["e"][0]=$e_215;
584               
585                $binding=$this->soap2array($nt,"Binding");
586                $runningtime=$this->soap2array($nt,"RunningTime");
587                $d_215=array();
588                if ($binding[0]) $d_215[]=$binding[0];
589                if ($runningtime[0]) $d_215[]="Durée : ".$runningtime[0]["!"]." ".$runningtime[0]["!Units"];
590                $d_215=implode(" - ",$d_215);
591                if ($d_215) $unimarc["215"][0]["d"][0]=$d_215;
592               
593                //Notes
594                $theatricaldate=$this->soap2array($nt,"TheatricalReleaseDate");
595                $format=$this->soap2array($nt,"Format");
596                $a_300=array();
597                if ($theatricaldate[0]) $a_300[]="Enregistré le : ".$theatricaldate[0];
598                if ($format[0]) $a_300[]="Format : ".$format[0];
599                $a_300=implode("\n",$a_300);
600                if ($a_300) $unimarc["300"][0]["a"][0]=$a_300;
601               
602                //Dewey
603                $dewey=$this->soap2array($nt,"DeweyDecimalNumber");
604                if ($dewey[0]) $unimarc["676"][0]["a"][0]=$dewey[0];
605               
606                //Auteurs
607                $auttotal=array();
608                $authors=$this->soap2array($nt,"Author");
609                if (count($authors)) {
610                        if (count($authors)>1) $autf="701"; else $autf="700";
611                        for ($i=0; $i<count($authors); $i++) {
612                                $aut[$i]["a"][0]=$authors[$i];
613                                $aut[$i]["4"][0]="070";
614                                $auttotal[]=$authors[$i];
615                        }
616                        $unimarc[$autf]=$aut;
617                        $naut=count($authors);
618                }
619                $authors=$this->soap2array($nt,"Artist");
620                if (count($authors)) {
621                        if (($naut+count($authors))>1) $autf="701"; else $autf="700";
622                        for ($i=0; $i<count($authors); $i++) {
623                                $autt=array();
624                                $autt["a"][0]=$authors[$i];
625                                $autt["4"][0]="040";
626                                $unimarc[$autf][]=$autt;
627                                $auttotal[]=$authors[$i];
628                        }
629                        $naut+=count($authors);
630                }
631                $authors=$this->soap2array($nt,"Actor");
632                if (count($authors)) {
633                        if (($naut+count($authors))>1) $autf="701"; else $autf="700";
634                        for ($i=0; $i<count($authors); $i++) {
635                                $autt=array();
636                                $autt["a"][0]=$authors[$i];
637                                $autt["4"][0]="005";
638                                $unimarc[$autf][]=$autt;
639                                $auttotal[]=$authors[$i];
640                        }
641                        $naut+=count($authors);
642                }
643                $authors=$this->soap2array($nt,"Director");
644                if (count($authors)) {
645                        if (($naut+count($authors))>1) $autf="701"; else $autf="700";
646                        for ($i=0; $i<count($authors); $i++) {
647                                $autt=array();
648                                $autt["a"][0]=$authors[$i];
649                                $autt["4"][0]="651";
650                                $unimarc[$autf][]=$autt;
651                                $auttotal[]=$authors[$i];
652                        }
653                        $naut+=count($authors);
654                }
655                $creator=$this->soap2array($nt,"Creator");
656                $authors=array();
657                if (count($creator)) {
658                        for ($i=0; $i<count($creator); $i++) {
659                                if (in_array($creator[$i]["!"],$auttotal)===false) {
660                                        $autt=array();
661                                        $autt["a"][0]=$creator[$i]["!"];
662                                        $autt["b"][0]=$creator[$i]["!Role"];
663                                        $authors[]=$autt;
664                                }
665                        }
666                        if (count($authors)) {
667                                if (($naut+count($authors))>1) $autf="701"; else $autf="700";
668                                for ($i=0; $i<count($authors); $i++) {
669                                        $unimarc[$autf][]=$authors[$i];
670                                }
671                                $naut+=count($authors);
672                        }
673                }
674                $reviews=$this->soap2array($item["EditorialReviews"],"EditorialReview");
675                if (count($reviews)) {
676                        for ($i=0; $i<count($reviews); $i++)
677                                $unimarc["330"][0]["a"][$i]=$reviews[$i]["Content"].($reviews[$i]["Source"]?" (".$reviews[$i]["Source"].")":"");
678                }
679                $discs=$this->soap2array($item["Tracks"],"Disc");
680                if (count($discs)) {
681                        $tr="";
682                        for ($i=0; $i<count($discs); $i++) {
683                                $tr.="\nDisque ".($i+1)."\n";
684                                $tracks=$this->soap2array($discs[$i],"Track");
685                                for ($j=0; $j<count($tracks); $j++) {
686                                        $tr.=" ".$tracks[$j]["!Number"]." ".$tracks[$j]["!"]."\n";
687                                }
688                        }       
689                        $unimarc["327"][0]["a"][0]=$tr;
690                }
691               
692                //Images
693                $image_count = 0;
694                if (isset($item["LargeImage"]) && $item["LargeImage"]["URL"]) {
695                        $unimarc["897"][$image_count]["a"][0] = $item["LargeImage"]["URL"];
696                        $unimarc["897"][$image_count]["b"][0] = "LargeImage";
697                        $image_count++;
698                }
699                else if (isset($item["MediumImage"]) && $item["MediumImage"]["URL"]) {
700                        $unimarc["897"][$image_count]["a"][0] = $item["MediumImage"]["URL"];
701                        $unimarc["897"][$image_count]["b"][0] = "MediumImage";
702                        $image_count++;
703                }
704                else if (isset($item["TinyImage"]) && $item["TinyImage"]["URL"]) {
705                        $unimarc["897"][$image_count]["a"][0] = $item["TinyImage"]["URL"];
706                        $unimarc["897"][$image_count]["b"][0] = "TinyImage";
707                        $image_count++;
708                }
709               
710                if (isset($item["MediumImage"]) && $item["MediumImage"]["URL"]) {
711                        $unimarc["896"][0]["a"][0] = $item["MediumImage"]["URL"];
712                }
713                else if (isset($item["SmallImage"]) && $item["SmallImage"]["URL"]) {
714                        $unimarc["896"][0]["a"][0] = $item["SmallImage"]["URL"];
715                }
716       
717                if (isset($item["ImageSets"])) {
718                        foreach ($item["ImageSets"] as $ImageSet) {
719                                if (is_array($ImageSet)) {
720                                        foreach ($ImageSet as $aitem) {
721                                                if ($aitem["!Category"] == 'primary' && $image_count)
722                                                        continue;
723                                                if (isset($aitem["LargeImage"]) && isset($aitem["LargeImage"]["URL"])) {
724                                                        $unimarc["897"][$image_count]["a"][0] = $aitem["LargeImage"]["URL"];
725                                                        $unimarc["897"][$image_count]["b"][0] = $aitem["!Category"]." - LargeImage";
726                                                        $image_count++;
727                                                }
728                                                else if (isset($aitem["MediumImage"]) && isset($aitem["MediumImage"]["URL"])) {
729                                                        $unimarc["897"][$image_count]["a"][0] = $aitem["MediumImage"]["URL"];
730                                                        $unimarc["897"][$image_count]["b"][0] = $aitem["!Category"]." - MediumImage";
731                                                        $image_count++;
732                                                }
733                                                else if (isset($aitem["ThumbnailImage"]) && isset($aitem["ThumbnailImage"]["URL"])) {
734                                                        $unimarc["897"][$image_count]["a"][0] = $aitem["ThumbnailImage"]["URL"];
735                                                        $unimarc["897"][$image_count]["b"][0] = $aitem["!Category"]." - ThumbnailImage";
736                                                        $image_count++;
737                                                }
738                                                else if (isset($aitem["SmallImage"]) && isset($aitem["SmallImage"]["URL"])) {
739                                                        $unimarc["897"][$image_count]["a"][0] = $aitem["SmallImage"]["URL"];
740                                                        $unimarc["897"][$image_count]["b"][0] = $aitem["!Category"]." - SmallImage";
741                                                        $image_count++;
742                                                }
743                                                else if (isset($aitem["TinyImage"]) && isset($aitem["TinyImage"]["URL"])) {
744                                                        $unimarc["897"][$image_count]["a"][0] = $aitem["TinyImage"]["URL"];
745                                                        $unimarc["897"][$image_count]["b"][0] = $aitem["!Category"]." - TinyImage";
746                                                        $image_count++;
747                                                }                                       
748                                        }
749                                }
750                        }
751                }
752
753               
754                return $unimarc;
755        }
756       
757        //Fonction de recherche
758        function search($source_id,$query,$search_id) {
759                global $charset;
760                global $pmb_curl_proxy;         
761                $this->error=false;
762                $this->error_message="";
763               
764                $params=$this->get_source_params($source_id);
765                $this->fetch_global_properties();
766                $parameters = unserialize($this->parameters);
767                if ($params["PARAMETERS"]) {
768                        //Affichage du formulaire avec $params["PARAMETERS"]
769                        $vars=unserialize($params["PARAMETERS"]);
770                        foreach ($vars as $key=>$val) {
771                                global $$key;
772                                $$key=$val;
773                        }       
774                }
775               
776                if (!$max_return) $max_return=100;
777               
778                //Tranformation de la recherche en requete amazon
779                $this->parse_profile();
780                $searchattr=array();
781                $searchattr=$this->parse_query($query,true);
782                if ($searchattr["TYPE"]=="power")
783                        $q=$this->make_power_query($searchattr);
784                else {
785                        //Recherche simple
786                        $q=$this->make_simple_search($searchattr);
787                }
788               
789                $adresse_proxy = false;
790                $port_proxy = false;
791                $user_proxy = false;
792                $pwd_proxy = false;
793                if($pmb_curl_proxy!=''){
794                        $param_proxy = explode(',',$pmb_curl_proxy);
795                        $adresse_proxy = $param_proxy[0];
796                        $port_proxy = $param_proxy[1];
797                        $user_proxy = $param_proxy[2];
798                        $pwd_proxy = $param_proxy[3];
799                }
800               
801                $client=new nusoapclient("http://ecs.amazonaws.com/AWSECommerceService/2009-10-01/".$this->profile["SITES"][0]["SITE"][$this->current_site]["COUNTRY"]."/AWSECommerceService.wsdl",true,
802                $adresse_proxy, $port_proxy, $user_proxy, $pwd_proxy);
803                if ($err=$client->getError()) {
804                        if ($err) {
805                                $this->error=true;
806                                $this->error_message=$err;
807                        }
808                } else {
809                        $client->timeout = $params["TIMEOUT"];
810                        $client->response_timeout = $params["TIMEOUT"];
811                        $this->make_search($search_id,$q,$client);
812                        $requete="select asin from amazon_items limit $max_return";
813                        $resultat=mysql_query($requete);
814                        if (@mysql_num_rows($resultat)) {
815                                //Récupération des résultats et import
816                                $n=0;
817                                while ($r=mysql_fetch_object($resultat)) {
818                                        $asins[]=$r->asin;
819                                        $n++;
820                                        if ($n==10) {
821                                                $tasins[]=$asins;
822                                                $asins=array();
823                                                $n=0;
824                                        }
825                                }
826                                if (count($asins)) $tasins[]=$asins;
827                                mysql_query("drop table amazon_items");
828                                //Nouvelle requete amazon
829                                for ($k=0; $k<count($tasins); $k++) {
830                                        $client->setHeaders($this->make_soap_headers('ItemLookup'));
831                                        $proxy=$client->getProxy();                                     
832                                        $paws["Request"]=array(
833                                                "ResponseGroup"=>"Large,Tracks",
834                                                "ItemId"=>implode(",",$tasins[$k])
835                                        );
836                                        $paws['AssociateTag'] = $parameters['associatetag'];
837                                        $result=$proxy->ItemLookup($paws);
838                                        if ($err=$client->getError()) {
839                                                $this->error=true;
840                                                $this->error_message=$err;
841                                        } else {
842                                                if ($result["Items"]["Item"]) {
843                                                        $items=$this->soap2array($result["Items"],"Item");
844                                                        for ($i=0; $i<count($items); $i++) {
845                                                                $this->rec_record($this->amazon_2_uni($items[$i]),$source_id,$search_id);
846                                                        }
847                                                }
848                                        }
849                                }
850                        }
851                }
852        }
853       
854        function maj_entrepot($source_id,$callback_progress="",$recover=false,$recover_env="") {
855                return 0;
856        }
857       
858        function make_soap_headers($action){
859               
860                $keys = unserialize($this->parameters);
861                $time = gmdate("Y-m-d\TH:i:s\Z");
862                $signature = base64_encode(hash_hmac("sha256",$action.$time,$keys['secretkey'],true));         
863               
864                $accessKey = new soapval('AWSAccessKeyId',false,$keys['accesskey'],'http://security.amazonaws.com/doc/2007-01-01/');
865                $timestamp = new soapval('Timestamp',false,$time,'http://security.amazonaws.com/doc/2007-01-01/');
866                $sign = new soapval('Signature',false,$signature,'http://security.amazonaws.com/doc/2007-01-01/');
867                //$client_soap->setHeaders(array($accessKey,$timestamp,$sign));
868                return array($accessKey,$timestamp,$sign);
869               
870        }
871       
872        function enrichment_is_allow(){
873                return true;
874        }
875       
876        function getEnrichmentHeader(){
877                $header= array();
878                //$header[]= "<!-- Script d'enrichissement pour Amazon-->";
879                return $header;
880        }
881       
882        function getTypeOfEnrichment($source_id){
883                $type['type'] = array(
884                        "resume",
885                        "similarities",
886                        array(
887                                "code" => "review",
888                                "label" => $this->msg['amazon_enrichment_customers_reviews']
889                        ),
890                        "extract_audio"
891                );             
892                $type['source_id'] = $source_id;
893                return $type;
894        }
895       
896        function getEnrichment($notice_id,$source_id,$type="",$enrich_params=array(),$page=1){
897                $enrichment= array();
898                //on renvoi ce qui est demandé... si on demande rien, on renvoi tout..
899                $info = $this->getNoticeInfos($notice_id,$source_id);
900                switch ($type){
901                        case "extract_audio" :
902                                if($info) $enrichment['extract_audio']['content'] = $info['extract_audio'];
903                                else $enrichment['extract_audio']['content'] = $this->msg['amazon_enrichment_no_similarities'];
904                                break;
905                        case "review" :
906                                if($info) $enrichment['review']['content'] = $info['review'];
907                                else $enrichment['review']['content'] = $this->msg['amazon_enrichment_no_similarities'];
908                                break;
909                        case "resume" :
910                                if($info) $enrichment['resume']['content'] = $info['resume'];
911                                else $enrichment['resume']['content'] = $this->msg['amazon_enrichment_no_similarities'];
912                                break;                 
913                        case "similarities" :
914                        default :
915                                if($info) $enrichment['similarities']['content'] = $info['similarities'];
916                                else $enrichment['similarities']['content'] = $this->msg['amazon_enrichment_no_similarities'];
917                                break;
918                }
919                $enrichment['source_label']=$this->msg['amazon_enrichment_source'];
920                return $enrichment;
921        }
922       
923        function getNoticeInfos($notice_id,$source_id){
924                global $search_index,$url;
925                global $opac_curl_proxy;
926               
927                $info = "";
928                $asin = 0;
929                $params=$this->get_source_params($source_id);
930                $this->fetch_global_properties();
931                $parameters = unserialize($this->parameters);
932                if ($params["PARAMETERS"]) {
933                        //Affichage du formulaire avec $params["PARAMETERS"]
934                        $vars=unserialize($params["PARAMETERS"]);
935                        foreach ($vars as $key=>$val) {
936                                global $$key;
937                                $$key=$val;
938                        }       
939                }
940                       
941                $client = $this->initAWS($source_id);
942               
943                $client->setHeaders($this->make_soap_headers('ItemSearch'));
944                $proxy=$client->getProxy();                     
945               
946                $rqt = "select code from notices where notice_id = '".$notice_id."'";
947                $res = mysql_query($rqt);
948                if(mysql_num_rows($res)){
949                        $code = mysql_result($res,0,0);
950                        if($code != ""){
951                                $code = preg_replace('/-|\.| /', '', $code);
952                                $paws["Request"]=array(
953                                        "SearchIndex" => $search_index[$url][0],
954                                        "ResponseGroup"=>"ItemIds",
955                                        "Keywords" => "$code"
956                                );
957                                $paws["AssociateTag"] = $parameters['associatetag'];
958                                $result=$proxy->ItemSearch($paws);
959                                $items=$this->soap2array($result["Items"],"Item");
960                                $asin = $items[0][ASIN];
961                                if($asin){
962                                        $client->setHeaders($this->make_soap_headers('ItemLookup'));
963                                        $proxy=$client->getProxy();     
964                                        $paws["Request"]=array(
965                                                "ResponseGroup"=>"Large",
966                                                "IdType" => "ASIN",
967                                                "ItemId" => $asin
968                                        );
969                                        $result=$proxy->ItemLookup($paws);
970                                        $items=$this->soap2array($result["Items"],"Item");
971                                       
972                                        //récupération des résumés...
973                                        $resumes=$this->soap2array($items[0]["EditorialReviews"],"EditorialReview");
974                                        if (count($resumes)) {
975                                                for ($i=0; $i<count($resumes); $i++){
976                                                        $infos['resume'] .=$resumes[$i]["Content"].($resumes[$i]["Source"]?" (".$resumes[$i]["Source"].")":"");
977                                                }
978                                        }
979                                       
980                                        //récupération des avis ...
981                                        $links=$this->soap2array($items[0]["ItemLinks"],"ItemLink");
982                                        if (count($links)) {
983                                                for ($i=0; $i<count($links); $i++){
984                                                        if($links[$i]['Description'] == "All Customer Reviews"){
985                                                                $infos['review'] .= "<iframe src='".$links[$i]['URL']."' style='width:450px;height:350px;'></iframe>";
986                                                        }
987                                                }
988                                        }
989                                       
990                                        //récupération des extrait sonore si dispo ...
991                                        $discs=$this->soap2array($items[0]["Tracks"],"Disc");
992                                        if (count($discs)) {
993                                                $infos['extract_audio'] = "
994                                                <table>
995                                                        <tr>";
996                                                for ($i=0 ; $i<count($discs);$i++){
997                                                        $infos['extract_audio'].= "
998                                                                <td>
999                                                                        <h4>Disque ".$discs[$i]['!Number']."</h4>
1000                                                                        <ul>";
1001                                                       
1002                                                        for($j=0 ; $j<count($discs[$i]['Track']) ; $j++){
1003                                                                $infos['extract_audio'].= "
1004                                                                                <li><a href='http://www.amazon.fr/gp/recsradio/radio/".$asin."/ref=pd_krex_dp_a&disc=".$discs[$i]['!Number']."&track=".$discs[$i]['Track'][$j]['!Number']."' target='_blank' alt='".sprintf($this->msg['amazon_enrichment_listen_extract'],$discs[$i]['Track'][$j]['!'])."' title='".sprintf($this->msg['amazon_enrichment_listen_extract'],$discs[$i]['Track'][$j]['!'])."'>".$discs[$i]['Track'][$j]['!Number']." - ".$discs[$i]['Track'][$j]['!']."</a></li>";
1005                                                        }
1006                                                        $infos['extract_audio'].= "
1007                                                                        </ul>
1008                                                                </td>";
1009                                                }
1010                                                $infos['extract_audio'] .= "
1011                                                        </tr>
1012                                                </table>";
1013                                        }
1014                                       
1015                                        //pour les similarités
1016                                        foreach($items[0][SimilarProducts][SimilarProduct] as $similar){
1017                                                if(isISBN($similar[ASIN])){
1018                                                        $rqt= "select notice_id from notices where code = '".formatISBN($similar[ASIN],10)."' or code = '".formatISBN($similar[ASIN],13)."' limit 1";
1019                                                        $res = mysql_query($rqt);
1020                                                        if(mysql_num_rows($res)){
1021                                                                $notice = mysql_result($res,0,0);
1022                                                                if($notice)     $infos['similarities'].=aff_notice($notice,1,1,0, AFF_ETA_NOTICES_REDUIT, "no",0, 1);
1023                                                        }
1024                                                }else {
1025                                                        //si c'est pas un ISBN on cherche ce que ca peut être...
1026                                                        $paws["Request"]=array(
1027                                                                "ResponseGroup"=>"ItemAttributes",
1028                                                                "IdType" => "ASIN",
1029                                                                "ItemId" => $similar[ASIN]
1030                                                        );
1031                                                        $result=$proxy->ItemLookup($paws);     
1032                                                        $items=$this->soap2array($result["Items"],"Item");
1033                                                        $code = $items[0][ItemAttributes][UPC];
1034                                                        if($code){
1035                                                                $rqt= "select notice_id from notices where code = '".$code."' or code = '".$code."' limit 1";
1036                                                                $res = mysql_query($rqt);
1037                                                                if(mysql_num_rows($res)){
1038                                                                        $notice = mysql_result($res,0,0);
1039                                                                        if($notice)     $infos['similarities'].=aff_notice($notice,1,1,0, AFF_ETA_NOTICES_REDUIT, "no",0, 1);
1040                                                                }
1041                                                        }                                                                       
1042                                                }
1043                                        }
1044                                }
1045                        }
1046                }
1047                return $infos;
1048        }       
1049       
1050        function initAWS($source_id){
1051                global $search_index,$url;
1052                global $opac_curl_proxy;
1053               
1054                $this->parse_profile();
1055                $params=$this->get_source_params($source_id);
1056                $this->fetch_global_properties();
1057                if ($params["PARAMETERS"]) {
1058                        //Affichage du formulaire avec $params["PARAMETERS"]
1059                        $vars=unserialize($params["PARAMETERS"]);
1060                        foreach ($vars as $key=>$val) {
1061                                global $$key;
1062                                $$key=$val;
1063                        }       
1064                }       
1065                               
1066                $adresse_proxy = false;
1067                $port_proxy = false;
1068                $user_proxy = false;
1069                $pwd_proxy = false;
1070                if($opac_curl_proxy!=''){
1071                        $param_proxy = explode(',',$opac_curl_proxy);
1072                        $adresse_proxy = $param_proxy[0];
1073                        $port_proxy = $param_proxy[1];
1074                        $user_proxy = $param_proxy[2];
1075                        $pwd_proxy = $param_proxy[3];
1076                }
1077                $client=new nusoapclient("http://ecs.amazonaws.com/AWSECommerceService/2009-10-01/".$this->profile["SITES"][0]["SITE"][$this->current_site]["COUNTRY"]."/AWSECommerceService.wsdl",true,
1078                $adresse_proxy, $port_proxy, $user_proxy, $pwd_proxy);
1079                if ($err=$client->getError()) {
1080                        if ($err) {
1081                                $this->error=true;
1082                                $this->error_message=$err;
1083                        }
1084                } else {
1085                        $client->timeout = $params["TIMEOUT"];
1086                        $client->response_timeout = $params["TIMEOUT"];
1087                }
1088                return $client;
1089        }
1090}
1091?>
Note: See TracBrowser for help on using the repository browser.