comparison xml/getAmazonInfo.php @ 31:4124f103b46b

fix old :-( preg bug, finally (?) get length and escaping right
author Robert Boland <robert@markup.co.uk>
date Fri, 04 Jan 2019 08:52:01 -0500
parents 828895488948
children 8130865e9e82
comparison
equal deleted inserted replaced
30:b1bbf44c701b 31:4124f103b46b
135 $review1 = ""; 135 $review1 = "";
136 $review2 = ""; 136 $review2 = "";
137 $review3 = ""; 137 $review3 = "";
138 // HST added this 138 // HST added this
139 $mm=array(); 139 $mm=array();
140 if (preg_match("<Error>",$output,$mm)) { 140 if (preg_match("/<Error>/",$output,$mm)) {
141 $xml = new SimpleXMLElement($output); 141 $xml = new SimpleXMLElement($output);
142 $resName=$xml->getName(); 142 $resName=$xml->getName();
143 $code=$xml->Error->Code; 143 $code=$xml->Error->Code;
144 if (!$code) { 144 if (!$code) {
145 $code=$xml->Items->Request->Errors->Error->Code; 145 $code=$xml->Items->Request->Errors->Error->Code;
146 } 146 }
147 $errorCode=$code;
147 file_put_contents('/var/ywww/debug/phpDebug',"Losing: ".$mm[0].", $resName, $code, $requestIP, $requestURI\n",FILE_APPEND); 148 file_put_contents('/var/ywww/debug/phpDebug',"Losing: ".$mm[0].", $resName, $code, $requestIP, $requestURI\n",FILE_APPEND);
148 if ($code=='RequestThrottled') { 149 if ($code=='RequestThrottled') {
149 usleep(200000); // Try to reduce throttling until we get a 150 usleep(200000); // Try to reduce throttling until we get a
150 // principled solution in place 151 // principled solution in place
151 } 152 }
290 if($go == 1) { 291 if($go == 1) {
291 $item = $xml->Items->Item[0]; 292 $item = $xml->Items->Item[0];
292 if ($item && $item->ItemAttributes && $item->ItemAttributes->Title) { 293 if ($item && $item->ItemAttributes && $item->ItemAttributes->Title) {
293 $title = $item->ItemAttributes->Title; } 294 $title = $item->ItemAttributes->Title; }
294 else { $title = "[no title]"; }; 295 else { $title = "[no title]"; };
295 file_put_contents('/var/ywww/debug/phpDebug',"win: ". 296 file_put_contents('/var/ywww/debug/phpDebug',"win: |$errorCode| ".
296 $title."\n", 297 $title."\n",
297 FILE_APPEND); 298 FILE_APPEND);
298 return $output; 299 return $output;
299 } 300 }
300 else 301 else
316 } 317 }
317 else { 318 else {
318 $pubDate="\"$pubDate\""; 319 $pubDate="\"$pubDate\"";
319 } 320 }
320 $publisher = $xml->Items->Item[0]->ItemAttributes->Publisher; 321 $publisher = $xml->Items->Item[0]->ItemAttributes->Publisher;
321 if ($publisher and strlen($publisher)>30) {
322 $publisher=substr($publisher,0,30);
323 }
324 if ($author and strlen($author)>30) {
325 $author=substr($author,0,30);
326 }
327 if ($title and strlen($title)>100) {
328 $title=substr($title,0,100);
329 }
330 $publisher=mysqli_real_escape_string($link,$publisher);
331 $author=mysqli_real_escape_string($link,$author);
332 $title=mysqli_real_escape_string($link,$title);
333 } 322 }
334 else { 323 else {
335 $title = $salesRank = ""; 324 $title = $salesRank = "";
336 $dewey = "null"; 325 $dewey = "null";
337 } 326 }
390 } 379 }
391 380
392 if($salesRank == "") 381 if($salesRank == "")
393 $salesRank = "null"; 382 $salesRank = "null";
394 383
395 $title = strtr($title, '"', "'");
396 include "../../private/db.php";
397 $review1 = mysqli_real_escape_string($link,$review1);
398 if (strlen($review1)>500) { $review1=substr($review1,0,500);}
399 $review2 = mysqli_real_escape_string($link,$review2);
400 if (strlen($review2)>500) { $review2=substr($review2,0,500);}
401 $review3 = mysqli_real_escape_string($link,$review3);
402 if (strlen($review3)>500) { $review3=substr($review3,0,500);}
403
404 if($title != "") 384 if($title != "")
405 { 385 {
406 $queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)"; 386 include "../../private/db.php";
387 if ($publisher->count()==0) {
388 $publisher="null";
389 }
390 else {
391 $publisher=mysqli_real_escape_string($link,$publisher);
392 if (strlen($publisher)>30) {
393 $publisher=rtrim(substr($publisher,0,30),"\\");
394 }
395 $publisher="\"".$publisher."\"";
396 }
397 if ($author->count()==0) {
398 $author="unknown";
399 }
400 else {
401 $author=mysqli_real_escape_string($link,$author);
402 if (strlen($author)>30) {
403 $author=rtrim(substr($author,0,30),"\\");
404 }
405 }
406 $author="\"".$author."\"";
407 $title=mysqli_real_escape_string($link,$title);
408 if (strlen($title)>100) {
409 $title=rtrim(substr($title,0,100),"\\");
410 }
411 $title="\"".$title."\"";
412 $review1 = mysqli_real_escape_string($link,$review1);
413 if (strlen($review1)>500) { $review1=rtrim(substr($review1,0,500),"\\");}
414 $review2 = mysqli_real_escape_string($link,$review2);
415 if (strlen($review2)>500) { $review2=rtrim(substr($review2,0,500),"\\");}
416 $review3 = mysqli_real_escape_string($link,$review3);
417 if (strlen($review3)>500) { $review3=rtrim(substr($review3,0,500),"\\");}
418
419 $queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",$title, $author,\"$binding\",\"$imageURL\", $dewey, $salesRank,$pubDate,$publisher,$g1,$g2,$g3,$loc)";
407 //echo $queryInsert; 420 //echo $queryInsert;
408 421
409 $res = mysqli_query($link, $queryInsert); 422 $res = mysqli_query($link, $queryInsert);
410 if (!$res) { 423 if (!$res) {
411 $err=mysqli_error( $link ); 424 $err=mysqli_error( $link );
412 mysqli_close($link); 425 mysqli_close($link);
413 file_put_contents('/var/ywww/debug/phpDebug', 426 file_put_contents('/var/ywww/debug/phpDebug',
414 "anb failed: $err, $pubDate, $g2, $publisher, $title\n", 427 "anb failed: $queryInsert\n$err\n",
415 FILE_APPEND); 428 FILE_APPEND);
416 exit($err); 429 exit($err);
417 } 430 }
418 $queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")"; 431 $queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")";
419 if($review1 != "" && $review2 != "" && $review3 != "") { 432 if($review1 != "") {
420 $res = mysqli_query($link, $queryInsertReviews); 433 $res = mysqli_query($link, $queryInsertReviews);
421 if (!$res) { 434 if (!$res) {
422 $err=mysqli_error( $link ); 435 $err=mysqli_error( $link );
423 mysqli_close($link); 436 mysqli_close($link);
424 file_put_contents('/var/ywww/debug/phpDebug', 437 file_put_contents('/var/ywww/debug/phpDebug',
425 "anr failed: $err, $pubDate, $g2, $publisher, $title\n", 438 "anr failed: $queryInsertReviews\n",
426 FILE_APPEND); 439 FILE_APPEND);
427 exit($err); 440 exit($err);
428 } 441 }
429 } 442 }
430 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop 443 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop