function fetchYazInfos($book) { global $booklibrary_configuration; if (!extension_loaded('yaz')) { echo "<script> alert('Sorry, \\'yaz.so\\' isn\\'t loaded....'); window.history.go(-1);</script>\n"; exit; } $param_ws = mosBooklibraryWS::getWsParamById($book->informationFrom) - 1; $hosts = mosBooklibraryWS::getWSArray(); $str_conect = trim($hosts[$param_ws][3]) . ":" . trim($hosts[$param_ws][4]) . "/" . trim($hosts[$param_ws][5]); //$str_conect ="z3950.bibsys.no:2100";// "140.147.249.38:7090/voyager"; //$str_conect = "troy.lib.sfu.ca:210/innopac"; //echo $str_conect; $id = yaz_connect($str_conect); yaz_syntax($id, $hosts[$param_ws][6]); $query = '@attr 1=7 ' . $book->isbn; yaz_search($id, 'rpn', $query); yaz_wait(); $error = yaz_error($id); if (!empty($error)) { echo "<script> alert('ERROR:" . addslashes($error) . "'); window.history.go(-1);</script>\n"; exit; } $rec = yaz_record($id, 1, "array"); $error = yaz_error($id); if (yaz_hits($id) == 0) { echo "<script> alert('On this ISBN(" . addslashes($book->isbn) . ") of the not found records'); window.history.go(-1);</script>\n"; yaz_close($id); exit; } elseif (!empty($error)) { echo "<script> alert('ERROR:" . addslashes($error) . "'); window.history.go(-1);</script>\n"; yaz_close($id); exit; } yaz_close($id); $book->comment = ""; $book->title = ""; $book->authors = ""; $book->manufacturer = ""; $book->release_Date = ""; $book->URL = ""; foreach ($rec as $i => $value) { $s = explode(")(", $rec[$i][0]); if (isset($s[2])) { switch (substr($s[0], 3, strlen($s[0]))) { case '245': $book->comment .= $rec[$i][1]; if (substr($s[2], 2, strlen($s[2]) - 3) == 'a') { $book->title .= $rec[$i][1]; } break; case '100': $book->authors .= $rec[$i][1]; break; case '260': $book->manufacturer .= $rec[$i][1]; if (substr($s[2], 2, strlen($s[2]) - 3) == 'c') { $book->release_Date .= $rec[$i][1]; } break; case '856': $book->URL .= $rec[$i][1]; break; } } } return $book; }
function refetchInfo($option, $bid) { global $database, $my, $booklibrary_configuration; $informationFrom = mosGetParam($_POST, 'informationFrom'); if (!is_array($bid) || count($bid) < 1) { echo "<script> alert('Select an item to refetch'); window.history.go(-1);</script>\n"; exit; } $bids = implode(',', $bid); $database->setQuery("SELECT id, bookid, isbn, title, informationFrom from #__booklibrary WHERE id IN ({$bids})"); if (!$database->query()) { echo "<script> alert('" . addslashes($database->getErrorMsg()) . "'); window.history.go(-1); </script>\n"; exit; } $books = $database->loadObjectList(); // get list of WS $retVal = mosBooklibraryWS::getWSArray(); $ws = null; for ($i = 0, $n = count($retVal); $i < $n; $i++) { $help = $retVal[$i]; $ws[] = mosHTML::makeOption($help[0], $help[1]); } $wslist = mosHTML::selectList($ws, 'informationFrom', 'class="inputbox" size="1"', 'value', 'text'); if ($informationFrom == null) { //show fetching information HTML_booklibrary::refetchBoosks($option, $books, $wslist); } else { //fetching information $infos = array(); $id = array_pop($bid); while ($id != null) { $book = new mosBookLibrary($database); $book->load($id); $book->informationFrom = $informationFrom; $book_tmp = $book; $book = mosBooklibraryWS::fetchInfos($book); if (is_string($book)) { //there was an error while fetching! array_push($infos, array($book_tmp->id, $book_tmp->bookid, $book_tmp->isbn, $book)); } else { //storing pictures if neccesary $retVal = null; if (intval($booklibrary_configuration['fetchImages']['boolean']) == 1) { $retVal = mosBooklibraryOthers::storeImageFile($book, null); } //fetching was OK! $book->date = date("Y-m-d H:i:s"); if ($retVal != null) { // error storing picture array_push($infos, array($book->id, $book->bookid, $book->isbn, $retVal)); } else { if (!$book->check() || !$book->store()) { //error while storing information! array_push($infos, array($book->id, $book->bookid, $book->isbn, $book->getError())); } else { array_push($infos, array($book->id, $book->bookid, $book->isbn, "OK")); } } $book->checkin(); } $id = array_pop($bid); } $infos = array_reverse($infos); HTML_booklibrary::showInfoRefetchBooks($option, $infos, $wslist); } }