get_source_params($source_id); if ($params["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $vars=unserialize($params["PARAMETERS"]); foreach ($vars as $key=>$val) { global ${$key}; ${$key}=$val; } } if (!isset($width)) $width = "500"; if (!isset($height)) $height = "500"; $form="
"; return $form; } public function make_serialized_source_properties($source_id) { global $width,$height; $t["width"]=$width+0; $t["height"]=$height+0; $this->sources[$source_id]["PARAMETERS"]=serialize($t); } public function make_serialized_properties() { global $accesskey, $secretkey; //Mise en forme des paramètres à partir de variables globales (mettre le résultat dans $this->parameters) $keys = array(); $keys['accesskey']=$accesskey; $keys['secretkey']=$secretkey; $this->parameters = serialize($keys); } public function enrichment_is_allow(){ return true; } public function getEnrichmentHeader($source_id){ global $lang; $header= array(); $header[]= ""; $header[]= ""; $header[]= ""; return $header; } public function getTypeOfEnrichment($notice_id,$source_id){ $type['type'] = array( "books" ); $type['source_id'] = $source_id; return $type; } public function getEnrichment($notice_id,$source_id,$type="",$enrich_params=array(),$page=1){ $params=$this->get_source_params($source_id); if ($params["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $vars=unserialize($params["PARAMETERS"]); foreach ($vars as $key=>$val) { global ${$key}; ${$key}=$val; } } $enrichment= array(); //on renvoi ce qui est demandé... si on demande rien, on renvoi tout.. switch ($type){ case "books" : default : $rqt="select code from notices where notice_id = '$notice_id'"; $res=pmb_mysql_query($rqt); if(pmb_mysql_num_rows($res)){ $ref = pmb_mysql_result($res,0,0); //google change son API, on s'assure d'avoir un ISBN13 formaté ! if(isEAN($ref)) { // la saisie est un EAN -> on tente de le formater en ISBN $EAN=$ref; $isbn = EANtoISBN($ref); // si échec, on prend l'EAN comme il vient if(!$isbn) $code = str_replace("*","%",$ref); else { $code=$isbn; $code10=formatISBN($code,10); } } else { if(isISBN($ref)) { // si la saisie est un ISBN $isbn = formatISBN($ref); // si échec, ISBN erroné on le prend sous cette forme if(!$isbn) $code = str_replace("*","%",$ref); else { $code10=$isbn ; $code=formatISBN($code10,13); } } else { // ce n'est rien de tout ça, on prend la saisie telle quelle $code = str_replace("*","%",$ref); } } //plutot que de faire une requete pour lancer que si ca marche, on ajoute un callback en cas d'échec if($code /*&& $this->checkIfEmbeddable($code)*/){ $enrichment['books']['content'] = "
"; $enrichment['books']['callback'] = " var viewer = new google.books.DefaultViewer(document.getElementById('gbook".$notice_id."')); var gbook".$notice_id."_failed = function(){ var content = document.getElementById('gbook".$notice_id."'); var span = document.createElement('span'); var txt = document.createTextNode('".$this->msg["gbook_no_preview"]."'); span.appendChild(txt); content.appendChild(span); content.style.height='auto'; } viewer.load('ISBN:".str_replace("-","",$code)."',gbook".$notice_id."_failed); "; }else{ $enrichment['books']['content'] = "".$this->msg["gbook_no_preview"].""; } } break; } $enrichment['source_label']=$this->msg['gbooks_enrichment_source']; return $enrichment; } public function checkIfEmbeddable($isbn){ $identifiers = array(); $curl = new Curl(); $xmlToParse = $curl->get("http://www.google.com/books/feeds/volumes?q=ISBN".$isbn); $xml = _parser_text_no_function_($xmlToParse,"FEED"); if($xml['ENTRY'][0]){ $isbn = preg_replace('/-|\.| /', '', $isbn); //on regarde quand meme si on est le bon livre... foreach($xml['ENTRY'][0]['DC:IDENTIFIER'] as $identifier){ if(substr($identifier['value'],0,4) == "ISBN"){ $identifiers[]=substr($identifier['value'],5); } } //si le feuillatage est disponible... if((in_array(substr("-","",$isbn),$identifiers) || in_array($isbn,$identifiers)) && substr($xml['ENTRY'][0]['GBS:EMBEDDABILITY'][0]['VALUE'],strpos($xml['ENTRY'][0]['GBS:EMBEDDABILITY'][0]['VALUE'],"#")+1) == "embeddable"){ return true; }else return false; } } } ?>