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;
}
}
}
?>