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;
 }
Beispiel #2
0
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);
    }
}