Mercurial > hg > ywww
view php/read/getBookDetails.php @ 2:45ae2aeb2b52
original
author | robert |
---|---|
date | Wed, 28 Dec 2016 12:44:57 +0000 |
parents | |
children | a5e5475bf357 |
line wrap: on
line source
<?php function findGenre($browseNode, &$ID, &$gen) { if($browseNode->Name == "Subjects") { return true; } else { if($browseNode->Ancestors->BrowseNode) { if(findGenre($browseNode->Ancestors->BrowseNode, $ID, $gen) == true) { $gen = $browseNode->Name; $ID = $browseNode->BrowseNodeId; //if($browseNode->Name == "Literature & Fiction") //to return one level up the tree as well // return true; } } return false; } } if(isset($_GET['isbn'])){ $isbn = $_GET['isbn']; if(isset($_GET['locale'])){ $locale=$_GET['locale']; switch ($locale) { case "uk": $loc = 1; break; case "us": $loc = 0; break; case "ca": $loc = 2; break; case "de": $loc = 3; break; case "fr": $loc = 4; break; case "": $loc = 0; break; } } else{ $loc=0; } $output = ""; $output .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; $output .= "<BookDetails>"; $proceed = true; include "../../../private/db.php"; $query = "CALL b_getBookInfo('$isbn', $loc)"; //select Timestamp,Title,Author,Binding,DeweyDecimal,ImageURL,SalesRank,PublicationDate,Publisher,Genre1,Genre2,Genre3 from books where ISBN = '$isbn'"; //echo $query; $res = mysqli_query($link, $query) or exit( mysqli_error( $link )); if ( mysqli_num_rows( $res ) > 0 ) { $rows=mysqli_fetch_array($res, MYSQLI_ASSOC); $timestamp=$rows['Timestamp']; //echo $timestamp; date_default_timezone_set('UTC'); $dbStamp = strtotime($timestamp); //echo $dbStamp; $unixTime = time(); //echo $unixTime; $timeDiff = $unixTime - $dbStamp; //echo $timeDiff; if($timeDiff < 2592000) //if it has been updated in the last 30 days { $proceed = false; $output .= "<ISBN>" . $isbn . "</ISBN>"; $output .= "<Title>" . htmlspecialchars($rows["Title"]) . "</Title>"; $output .= "<Author>" . htmlspecialchars($rows["Author"]) . "</Author>"; $output .= "<Binding>" . htmlspecialchars($rows["Binding"]) . "</Binding>"; $output .= "<Dewey>" . htmlspecialchars($rows["DeweyDecimal"]) . "</Dewey>"; $output .= "<ImageURL>" . htmlspecialchars($rows["ImageURL"]) . "</ImageURL>"; $output .= "<SalesRank>" . htmlspecialchars($rows["SalesRank"]) . "</SalesRank>"; $output .= "<PublicationDate>" . htmlspecialchars($rows["PublicationDate"]) . "</PublicationDate>"; $output .= "<Publisher>" . htmlspecialchars($rows["Publisher"]) . "</Publisher>"; $output .= "<Genre1>" . htmlspecialchars($rows["Genre1"]) . "</Genre1>"; $output .= "<Genre2>" . htmlspecialchars($rows["Genre2"]) . "</Genre2>"; $output .= "<Genre3>" . htmlspecialchars($rows["Genre3"]) . "</Genre3>"; $output .= "<ProductGroup>Book</ProductGroup>"; } } mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop include "../../../private/db.php"; if($proceed == true) { include "aws_signed_request.php"; //book does not exist already so look up all the info from browse nodes.... $Adefault=array( 'language' =>'en', //what language to render the page in 'locale' =>'us', //which server's products? available: ca,de,fr,jp,uk,us 'page' =>1, //first page to show (we are counting from 1 not 0) 'operation' =>'ItemLookup', //what to do? //ItemSearch 'searchparameter' =>'ItemId', //what kind of search? 'searchindex' => 'Books', 'searchparameterdata'=>$isbn, //what to search for? 'search' =>$isbn, //here some debugging flags you can put at the end of the URL to call this script with, like: '?show_array=true' 'show_array' =>false, //debug: show complete incoming array? You can use this to see what other information Amazon is sending 'show_url' =>false, //debug: show XML request url to be send to Amazon? 'show_xml' =>false, //debug: show incoming XML code from Amazon? ); //change the debug options to true if you want to activate them or call the script with '?show_array=true' to see what actual information you're getting from Amazon and how little my standard script is actually showing of it $Aassociates_id=array( 'uk' => 'bookwhack-21', 'us' => 'your02b-20', 'ca' => 'book009-20', 'de' => 'book04c-21', 'fr' => 'book07f-21', ); $Aserver=array( 'ca' => array( 'ext' => 'ca' , //Canadian normal server 'nor' => 'http://www.amazon.ca' , //Canadian normal server 'xml' => 'http://xml.amazon.com' , //Canadian xml server ), 'de' => array( 'ext' => 'de' , //German normal server 'nor' => 'http://www.amazon.de' , //German normal server 'xml' => 'http://xml-eu.amazon.com', //German xml server ), 'fr' => array( 'ext' => 'fr' , //French normal server 'nor' => 'http://www.amazon.fr' , //French normal server 'xml' => 'http://xml-eu.amazon.com', //French xml server ), 'jp' => array( 'ext' => 'jp' , //Japanese normal server, not co.jp! 'nor' => 'http://www.amazon.co.jp' , //Japanese normal server 'xml' => 'http://xml.amazon.com' , //Japanese xml server ), 'uk' => array( 'ext' => 'co.uk' , //UK normal server 'nor' => 'http://www.amazon.co.uk' , //UK normal server 'xml' => 'http://xml-eu.amazon.com', //UK xml server ), 'us' => array( 'ext' => 'com' , //USA normal server 'nor' => 'http://www.amazon.com' , //USA normal server 'xml' => 'http://xml.amazon.com' , //USA xml server ), ); $public_key ="AKIAJBXEHTNCU6LLFNIA"; $private_key="Dgyv7aR6uGe3OtY95Dj6hHpDS/UEtyboMWpJchYA"; //for all parameters see if the user has overruled it or use the default foreach ($Adefault as $i=>$d) { $$i=isset($_GET[$i])?$_GET[$i]:$d; } $parameters=array( 'Operation' =>$operation , 'Keywords' =>urlencode($search) , 'SearchIndex' =>$searchindex , //Books for example. "$searchparameter"=>$searchparameterdata , 'ItemPage' =>$page , //which page? 'AssociateTag' =>$Aassociates_id[$locale], 'ResponseGroup' =>'ItemAttributes,Images,SalesRank,BrowseNodes' ); $ext=$Aserver[$locale]['ext']; $file_data=$ext; ksort($parameters); foreach ($parameters as $i=>$d) { $file_data.='&'.$i.'='.$d; } $url=aws_signed_request($ext,$parameters,$public_key,$private_key); //echo $url; $crl = curl_init(); $timeout = 5; curl_setopt ($crl, CURLOPT_URL,$url); curl_setopt ($crl, CURLOPT_ENCODING , "gzip"); curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); $out = curl_exec($crl); curl_close($crl); //echo $out; $xml = new SimpleXMLElement($out); //use this xml to pull out the necessary information and save it $title=""; $author=""; $binding=""; $dewey=""; $imageURL=""; $salesRank=""; $pubDate=""; $publisher=""; $title = $xml->Items->Item->ItemAttributes->Title; $author = $xml->Items->Item->ItemAttributes->Author; $binding = $xml->Items->Item->ItemAttributes->Binding; $dewey = $xml->Items->Item->ItemAttributes->DeweyDecimalNumber; if($dewey == "") $dewey = "null"; $imageURL = $xml->Items->Item->MediumImage->URL; $salesRank = $xml->Items->Item->SalesRank; $pubDate = $xml->Items->Item->ItemAttributes->PublicationDate; $publisher = $xml->Items->Item->ItemAttributes->Publisher; /*echo $title; echo $author; echo $binding; echo $dewey; echo $imageURL; echo $salesRank; echo $pubDate; echo $publisher;*/ $genreID = ""; $genre = ""; $genArr = array(); $g1 = "null"; $g2 = "null"; $g3 = "null"; if(isset($xml->Items->Item->BrowseNodes->BrowseNode)){ for($i=0;$i<sizeof($xml->Items->Item->BrowseNodes->BrowseNode);$i++){ //sexy recursive function findGenre($xml->Items->Item->BrowseNodes->BrowseNode[$i], $genreID, $genre); if($genre != "") $genArr[strval($genreID)] = strval($genre); //$genArr[$i] = array(strval($genreID) => strval($genre)); //echo $genre; //echo $genreID; $genre = ""; $genreID = ""; } $g1 = "null"; $g2 = "null"; $g3 = "null"; $loop = 1; foreach ($genArr as $key => $value) { //echo "$key => $value"; $queryG = "CALL b_addBrowseNode($key,\"$value\")"; //add the name value pair for genre to new table //echo $queryG; $resG = mysqli_query($link, $queryG); switch ($loop) { case 1: $g1 = $key; break; case 2: $g2 = $key; break; case 3: $g3 = $key; break; } $loop++; } } if($salesRank == "") $salesRank = "null"; mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop include "../../../private/db.php"; $title = strtr($title, '"', "'"); $queryInsert = "CALL b_addNewBook(\"$isbn\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)"; //echo $queryInsert; $resG = mysqli_query($link, $queryInsert) or exit( mysqli_error( $link )); mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop $output .= "<ISBN>" . htmlspecialchars($isbn) . "</ISBN>"; $output .= "<Title>" . htmlspecialchars($title) . "</Title>"; $output .= "<Author>" . htmlspecialchars($author) . "</Author>"; $output .= "<Binding>" . htmlspecialchars($binding) . "</Binding>"; $output .= "<Dewey>" . htmlspecialchars($dewey) . "</Dewey>"; $output .= "<ImageURL>" . htmlspecialchars($imageURL) . "</ImageURL>"; $output .= "<SalesRank>" . htmlspecialchars($salesRank) . "</SalesRank>"; $output .= "<PublicationDate>" . htmlspecialchars($pubDate) . "</PublicationDate>"; $output .= "<Publisher>" . htmlspecialchars($publisher) . "</Publisher>"; $output .= "<Genre1>" . htmlspecialchars($g1) . "</Genre1>"; $output .= "<Genre2>" . htmlspecialchars($g2) . "</Genre2>"; $output .= "<Genre3>" . htmlspecialchars($g3) . "</Genre3>"; $output .= "<ProductGroup>Book</ProductGroup>"; } $output .= "</BookDetails>"; echo $output; } ?>