function _get_image_url($record, $size) { if ($record->getField("020") && $record->getField("020")->getSubfield("a")) { $isbn = marctrim($record->getField("020")->getSubfield("a")); $isbn = str_replace('-', '', $isbn); $isbn = str_replace(' ', '', $isbn); return '<img src="http://covers.openlibrary.org/b/isbn/' . $isbn . '-' . $size . '.jpg" class="openlibrary_image cover_image_' . $size . '">'; } else { return false; } }
function format($records, $num_of_records, $first_record, $last_record) { $out = ''; foreach ($records as $rec) { $isbns = $rec->getFields('020'); if ($isbns) { foreach ($isbns as $isbn) { $thisisbn = marctrim($isbn->getSubfield("a")); if (strlen($thisisbn) >= 10) { $out .= "{$thisisbn}\n"; } } } } $ret = array('data' => $out, 'content_type' => 'text/plain'); return $ret; }
function oppnabib_detail($record, $style, $loggedin_user) { global $config; // Extract some data about the record // These will be sent to Oppna bibliotek if the book is not there yet $title = ''; if ($record->getField("245") && $record->getField("245")->getSubfield("a")) { $title = urlencode(marctrim($record->getField("245")->getSubfield("a"))); } $authorfirstname = ''; $authorlastname = ''; if ($record->getField("100") && $record->getField("100")->getSubfield("a")) { $author = marctrim($record->getField("100")->getSubfield("a")); if (substr_count($author, ',') > 0) { list($authorlastname, $authorfirstname) = explode(", ", $author); $authorlastname = urlencode($authorlastname); $authorfirstname = urlencode($authorfirstname); } } $isbn = ''; if ($record->getField("020") && $record->getField("020")->getSubfield("a")) { $isbn = marctrim($record->getField("020")->getSubfield("a")); } // Get the ID of the book $idurl = $config['plugins']['oppnabib']['baseurl'] . "books?book[title]={$title}&book[authorfirstname]={$authorfirstname}&book[authorlastname]={$authorlastname}"; $book = simplexml_load_string(getOppnabib($idurl, true)); $bookid = $book->book->id; if ($bookid) { // Get any data about the book identified by the ID $dataurl = $config['plugins']['oppnabib']['baseurl'] . "assessments?assessment[book_id]=" . $bookid; $bookdata = simplexml_load_string(getOppnabib($dataurl)); } $out = ''; $new_assessment_added = false; if ($style == 'full') { $out = '<div class="oppnabib"><h2>Öppna bibliotek - ' . urldecode($title) . '</h2>' . "\n"; $out .= '<!-- bookid: ' . $bookid . ' -->' . "\n"; // Do we have alogged in user? if (!empty($loggedin_user)) { // Check if a user has added an opinion if (!empty($_POST['oppnabib_assessment_header_input']) || !empty($_POST['oppnabib_assessment_text_input']) || !empty($_POST['oppnabib_grade_input'])) { $header = strip_tags($_POST['oppnabib_assessment_header_input']); $text = strip_tags($_POST['oppnabib_assessment_text_input']); // check that the grade is an integer, set to zero otherwise $grade = 0; if (is_int((int) strip_tags($_POST['oppnabib_grade_input']))) { // TODO: check that $grade is between 1 and 6 $grade = $_POST['oppnabib_grade_input']; } // Collect the data that will be sent to Oppna bibliotek $book = array(); if (!empty($bookid) && !empty($bookdata)) { // This book is already in Oppna bibliotek, so we only need to send the ID $book['assessment[grade]'] = $grade; $book['assessment[comment_header]'] = $header; $book['assessment[comment_text]'] = $text; $book['assessment[book_id]'] = $bookid; $book['assessment[published]'] = 1; } else { // This book is not in Oppna bibliotek, we need to add it $book['assessment[grade]'] = $grade; $book['assessment[comment_header]'] = $header; $book['assessment[comment_text]'] = $text; $book['assessment[title]'] = $title; $book['assessment[authorfirstname]'] = $authorfirstname; $book['assessment[authorlastname]'] = $authorlastname; $book['assessment[isbn]'] = $isbn; $book['assessment[published]'] = 1; } $newassessment = simplexml_load_string(postOppnabib($book, $loggedin_user)); if ($newassessment->error) { $out .= '<p class="error">Noe gikk galt: ' . "\n"; $out .= '"' . $newassessment->error . '"</p>' . "\n"; $report = print_r($assessment, true); $out .= '<!-- ' . $report . ' -->'; } else { $out .= '<p>Takk for at du bidro med din vurdering!</p>' . "\n"; $out .= format_assessment($header, $text, $grade, $loggedin_user); $report = print_r($newassessment, true); $out .= '<!-- ' . $report . ' -->'; $new_assessment_added = true; } // Create the form for adding an assessment } else { $out .= '<h3>Si din mening</h3>' . "\n"; $out .= '<p>Du er logget inn som: ' . $loggedin_user . '</p>' . "\n"; $out .= '<form method="post">' . "\n"; $out .= 'Omtalens tittel:<br /><input type="text" name="oppnabib_assessment_header_input" size="40" /><br />' . "\n"; $out .= 'Omtale:<br /><textarea name="oppnabib_assessment_text_input" cols="40" rows="10" ></textarea><br />' . "\n"; $out .= '<select name="oppnabib_grade_input">' . "\n"; $out .= '<option value="">Gi karakter</option>' . "\n"; $out .= '<option value="1">✭</option>' . "\n"; $out .= '<option value="2">✭✭</option>' . "\n"; $out .= '<option value="3">✭✭✭</option>' . "\n"; $out .= '<option value="4">✭✭✭✭</option>' . "\n"; $out .= '<option value="5">✭✭✭✭✭</option>' . "\n"; $out .= '<option value="6">✭✭✭✭✭✭</option>' . "\n"; $out .= '</select><br />' . "\n"; $out .= '<input type="submit">' . "\n"; $out .= '</form>' . "\n"; } } // Display existing assessments $out .= '<h3>Hva andre mener</h3>' . "\n"; // $out .= '<p>Antall meninger: ' . $bookdata->hitcount . '</p>'; if ($bookdata->average_grade) { $out .= '<p>Gjennomsnittlig karakter: <span class="oppnabib_average_grade">' . $bookdata->average_grade . '</span></p>' . "\n"; } else { if ($new_assessment_added == false) { $out .= '<p>Bli den første til å mene noe om denne boka!</p>' . "\n"; } } // Output every assessment if ($bookdata->assessment) { foreach ($bookdata->assessment as $thisassessment) { $out .= '<p class="oppnabib_assessment">' . "\n"; $out .= format_assessment($thisassessment->comment_header, $thisassessment->comment_text, $thisassessment->grade, $thisassessment->username); $out .= '(<span class="oppnabib_user_lib_name">' . $thisassessment->user_lib_name . '</span>)' . "\n"; $out .= "</p>\n"; } } $out .= '</div>' . "\n"; } elseif ($style == 'compact') { $hitcount = 0; if ($bookdata->hitcount) { $hitcount = $bookdata->hitcount; } $out .= '<br /><span class="oppnabib_compact">Öppna bibliotek: <span class="oppnabib_hitcount">' . $hitcount . '</span> mening(er). ' . "\n"; if ($bookdata->average_grade) { $out .= 'Gjennomsnitt: <span class="oppnabib_average_grade">' . $bookdata->average_grade . '</span>' . "\n"; } $out .= '</span>' . "\n"; } // DEBUG exit(print_r($bookdata)); return $out; }
function get_detail($record, $loggedin_user) { global $config; $out = '<div class="recorddetail">'; // Get the basic info anyway // Title if ($record->getField("245") && $record->getField("245")->getSubfield("a")) { // Remove . at the end of a title $title = preg_replace("/\\.\$/", "", marctrim($record->getField("245")->getSubfield("a"))); $out .= '<p class="title">Tittel: ' . $title . "</p>\n"; } if ($record->getField("245") && $record->getField("245")->getSubfield("b")) { $out .= '<p class="subtitle">Undertittel: ' . marctrim($record->getField("245")->getSubfield("b")) . "</p>\n"; } if ($record->getField("245") && $record->getField("245")->getSubfield("c")) { $out .= '<p class="author">Forfatter: ' . marctrim($record->getField("245")->getSubfield("c")) . "</p>\n"; } // Publication data if ($record->getField("260")) { // Year if ($record->getField("260")->getSubfield("c")) { $out .= '<p class="year">Publisert: ' . marctrim($record->getField("260")->getSubfield("c")) . "</p>\n"; } } // Subjects $subjects = $record->getFields('6\\d\\d', true); if ($subjects) { $out .= '<p>Emner:</p>' . "\n"; $out .= '<p>' . "\n"; foreach ($subjects as $subject) { $out .= '' . marctrim($subject->getSubfield("a")) . '; ' . "\n"; } $out .= '</p>' . "\n"; } // Items if ($record->getField("850") && $record->getField("850")->getSubfield("a")) { $out .= '<p>Eksemplarer:</p><ul>'; foreach ($record->getFields("850") as $item) { $out .= '<li>' . marctrim($item->getSubfield("a")) . ', ' . marctrim($item->getSubfield("c")) . '</li>' . "\n"; } $out .= '</ul>'; } // Link to OPAC if ($record->getField("996") && $record->getField("996")->getSubfield("u")) { $url = marctrim($record->getField("996")->getSubfield("u")); $out .= '<p><a href="' . $url . '">OPAC</a></p>' . "\n"; } $out .= '</div>' . "\n"; return $out; }
$out .= '<p>' . remove_lastfm_links($artist_data['artist']['bio']['summary']) . '</p>'; } if (is_array($artist_data['artist']['similar']['artist'])) { $out .= '<p>Lignende artister:</p>'; $out .= '<ul>'; foreach ($artist_data['artist']['similar']['artist'] as $sim) { $out .= '<li><a href="/cgi-bin/koha/opac-search.pl?q=' . urlencode($sim['name']) . '">' . $sim['name'] . '</a></li>'; } $out .= '</ul>'; } // Link to Last.fm $out .= '<p><a href="' . $artist_data['artist']['url'] . '">Les mer hos Last.fm</a></p>'; } $out .= '<hr />'; // Album $album = marctrim($record->getField("245")->getSubfield("a")); $url = $config['lastfm']['api_root']; $url .= "?method=album.getinfo"; $url .= "&api_key=" . $config['lastfm']['api_key']; $url .= "&artist=" . urlencode($artist); $url .= "&album=" . urlencode($album); $url .= "&format=json"; if ($album = json_decode(file_get_contents($url), true)) { // Check for errors if ($album['error']) { $out .= "<p>Beklager, det oppstod en feil!<br />({$album['message']})</p>"; exit; } // Title $out .= '<p style="font-weight: bold;">' . $album['album']['name'] . '</p>'; // Image
function get_detaljer($post) { $out = '<div class="detaljer">'; // INNHOLD // Hent ut spor-navn fra 740$2, indikator 2 = 2 (analytt) if ($post->getField("740")) { $out .= '<p>Spor:</p>'; $out .= '<ul>'; $fields740 = $post->getFields("740"); foreach ($fields740 as $field740) { // Sjekk om dette er en analytt if ($field740->getIndicator(2) == 2) { $tittel = marctrim($field740->getSubfield("a")); $tittelu = urlencode($tittel); $out .= '<li><a href="?q=' . $tittelu . '&bib=' . $_GET['bib'] . '">' . $tittel . '</a></li>'; } } $out .= '</ul>'; // Eller hent info fra 505 } else { if ($post->getField("505") && $post->getField("505")->getSubfield("a")) { $out .= '<p>' . marctrim($post->getField("505")->getSubfield("a")) . '</p>'; } } // MEDVIRKENDE if ($post->getField("700") && $post->getField("700")->getSubfield("a")) { $out .= '<p>Medvirkende:</p><ul>'; foreach ($post->getFields("700") as $med) { $med = marctrim($med->getSubfield("a")); $out .= '<li><a href="?q=' . urlencode($med) . '&bib=' . $_GET['bib'] . '">' . $med . '</a></li>'; } $out .= '</ul>'; } // EMNER $emner = $post->getFields('6\\d\\d', true); if ($emner) { $out .= '<p>Emner:</p>'; $out .= '<ul>'; foreach ($emner as $emne) { $out .= '<li>' . marctrim($emne->getSubfield("a")) . '</li>'; } } $out .= '</ul>'; $out .= '</div>'; return $out; }
function get_sortable_record($rec) { $outrecord = array(); // Title if ($rec->getField("245") && $rec->getField("245")->getSubfield("a")) { $outrecord['title'] = marctrim($rec->getField("245")->getSubfield("a")); } if ($rec->getField("245") && $rec->getField("245")->getSubfield("b")) { $outrecord['title'] .= " " . marctrim($rec->getField("245")->getSubfield("b")); } // Author if ($rec->getField("100") && $rec->getField("100")->getSubfield("a")) { // Personal author $outrecord['author'] = marctrim($rec->getField("100")->getSubfield("a")); } if ($rec->getField("110") && $rec->getField("110")->getSubfield("a")) { // Corporate author $outrecord['author'] = marctrim($rec->getField("110")->getSubfield("a")); } // Year if ($rec->getField("260") && $rec->getField("260")->getSubfield("c")) { preg_match("/\\d{4}/", marctrim($rec->getField("260")->getSubfield("c")), $match); $outrecord['year'] = $match[0]; } // Save the record-as-object for later re-use $outrecord['marcobj'] = $rec; // Save the record-as-XML for later serialization and caching $outrecord['marcxml'] = $rec->toXML(); return $outrecord; }