function articles_for_item($ItemID) { global $db; $obj = new stdclass(); $sql = 'SELECT * FROM bhl_title INNER JOIN bhl_item USING(TitleID) WHERE ItemID=' . $ItemID . ' LIMIT 1'; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } if ($result->NumRows() == 1) { $obj->ItemID = $result->fields['ItemID']; $obj->FullTitle = $result->fields['FullTitle']; $obj->VolumeInfo = $result->fields['VolumeInfo']; } else { } if (isset($obj->ItemID)) { $ids = array(); $sql = 'SELECT DISTINCT rdmp_reference.reference_id, page.SequenceOrder FROM rdmp_reference_page_joiner INNER JOIN page USING(PageID) INNER JOIN rdmp_reference USING(PageID) WHERE ItemID=' . $obj->ItemID . ' ORDER BY CAST(page.SequenceOrder AS SIGNED)'; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } while (!$result->EOF) { $ids[] = $result->fields['reference_id']; $result->MoveNext(); } $obj->articles = array(); foreach ($ids as $reference_id) { $reference = db_retrieve_reference($reference_id); if (isset($reference->oclc)) { if ($reference->oclc == 0) { unset($reference->oclc); } } if (isset($reference->sici)) { unset($reference->sici); } if (isset($reference->reference_cluster_id)) { unset($reference->reference_cluster_id); } // get pages $pages = bhl_retrieve_reference_pages($reference_id); foreach ($pages as $page) { $reference->bhl_pages[] = (int) $page->PageID; } $obj->articles[] = $reference; } } //print_r($obj); return $obj; }
<?php // geocode a reference require_once dirname(__FILE__) . '/db.php'; require_once dirname(__FILE__) . '/lib.php'; require_once dirname(__FILE__) . '/geocoding.php'; require_once dirname(__FILE__) . '/bhl_text.php'; $ids = array(55225); foreach ($ids as $reference_id) { global $db; echo $reference_id . "\n"; // remove any existing geocoding... $pages = bhl_retrieve_reference_pages($reference_id); foreach ($pages as $page) { $sql = 'DELETE FROM rdmp_locality_page_joiner WHERE PageID=' . $page->PageID; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } } // redo bhl_geocode_reference($reference_id); }
function specimens_from_reference($reference_id) { global $db; // delete any existing specimens $sql = 'DELETE FROM rdmp_reference_specimen_joiner WHERE reference_id=' . $reference_id; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } $pages = bhl_retrieve_reference_pages($reference_id); $page_ids = array(); foreach ($pages as $p) { $page_ids[] = $p->PageID; } //echo "PageIDs:\n"; //print_r($page_ids); $text = bhl_fetch_text_for_pages($page_ids); $text = str_replace('\\n', "\n", $text); $text = str_replace("\n ", "\n", $text); $specimens = extract_specimen_codes($text); $extra = array(); foreach ($specimens as $code) { $extra = array_merge($extra, extend_specimens($code, $text)); } $specimens = array_unique(array_merge($specimens, $extra)); sort($specimens); if (count($specimens) == 0) { // none found, insert NULL entry to flag that we've processed this reference $sql = 'INSERT INTO rdmp_reference_specimen_joiner(reference_id,code) VALUES(' . $reference_id . ',NULL)'; } else { foreach ($specimens as $code) { $sql = 'INSERT INTO rdmp_reference_specimen_joiner(reference_id,code) VALUES(' . $reference_id . ',' . $db->qstr($code) . ')'; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } } } /* $nm = bhl_names_in_reference_by_page($reference_id); $nm->names; // Get majority rule taxon (what paper is about) $tags = array(); foreach ($nm->names as $name) { $tags[] = $name->namestring; } $paths = get_paths($tags); $majority_rule = majority_rule_path($paths); $expanded = expand_path($majority_rule); print_r($expanded); */ return $specimens; }
function DisplayHtmlContent() { global $config; echo html_page_header(true, '', 'name'); echo '<div style="float:right;background-color:rgb(230,242,250);padding:6px">' . "\n"; if ($this->issn != '') { echo '<h2>Identifiers</h2>' . "\n"; echo '<ul class="guid-list">' . "\n"; echo '<li class="permalink"><a href="' . $config['web_root'] . 'issn/' . $this->issn . '" title="Permalink">' . $config['web_root'] . 'issn/' . $this->issn . '</a></li>' . "\n"; echo '<li class="worldcat"><a href="http://www.worldcat.org/issn/' . $this->issn . '" title="ISSN">' . $this->issn . '</a></li>' . "\n"; echo '<h2>Export</h2>' . "\n"; echo '<ul class="export-list">' . "\n"; echo '<li class="xml"><a href="' . $config['web_root'] . 'issn/' . $this->issn . '.xml" title="Endnote XML">Endnote XML</a></li>'; echo '<li class="ris"><a href="' . $config['web_root'] . 'issn/' . $this->issn . '.ris" title="RIS">Reference manager</a></li>'; echo '<li class="bibtex"><a href="' . $config['web_root'] . 'issn/' . $this->issn . '.bib" title="BibTex">BibTex</a></li>'; echo '<li class="text"><a href="' . $config['web_root'] . 'issn/' . $this->issn . '.text" title="text">Text</a></li>'; echo '</ul>' . "\n"; } if ($this->oclc != '') { echo '<h2>Identifiers</h2>' . "\n"; echo '<ul class="guid-list">' . "\n"; echo '<li class="permalink"><a href="' . $config['web_root'] . 'oclc/' . $this->oclc . '" title="Permalink">' . $config['web_root'] . 'oclc/' . $this->oclc . '</a></li>' . "\n"; echo '<li class="worldcat"><a href="http://www.worldcat.org/oclc/' . $this->oclc . '" title="OCLC">' . $this->oclc . '</a></li>' . "\n"; echo '<h2>Export</h2>' . "\n"; echo '<ul class="export-list">' . "\n"; echo '<li class="xml"><a href="' . $config['web_root'] . 'oclc/' . $this->oclc . '.xml" title="Endnote XML">Endnote XML</a></li>'; echo '<li class="ris"><a href="' . $config['web_root'] . 'oclc/' . $this->oclc . '.ris" title="RIS">Reference manager</a></li>'; echo '<li class="bibtex"><a href="' . $config['web_root'] . 'oclc/' . $this->oclc . '.bib" title="BibTex">BibTex</a></li>'; echo '<li class="text"><a href="' . $config['web_root'] . 'oclc/' . $this->oclc . '.text" title="text">Text</a></li>'; echo '</ul>' . "\n"; } echo '</div>' . "\n"; echo '<h1>' . $this->GetTitle() . '</h1>'; // Image if (isset($this->issn)) { echo '<div>'; echo '<img src="http://bioguid.info/issn/image.php?issn=' . $this->issn . '" alt="cover" style="border:1px solid rgb(228,228,228);height:100px;" />'; echo '</div>'; } // Stats /* echo '<div>'; echo '<img src="' . sparkline_articles_added_for_issn($this->issn) . '" alt="sparkline" />'; echo '</div>';*/ echo '<a href="http://twitter.com/share" class="twitter-share-button" data-count="vertical" data-via="rdmpage" data-related="biostor_org">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>'; echo '<h2>Coverage</h2>' . "\n"; echo '<p>'; if ($this->issn != '') { echo bhl_articles_for_issn($this->issn); } if ($this->oclc != '') { echo bhl_articles_for_oclc($this->oclc); } echo ' articles in database.</p>' . "\n"; echo '<h3>Distribution of identified articles over time</h3>' . "\n"; echo '<div>' . "\n"; echo ' <img src="' . sparkline_references($this->issn, $this->oclc, 360, 100) . '" alt="sparkline" />' . "\n"; echo '</div>' . "\n"; $titles = array(); if ($this->issn != '') { $titles = bhl_titles_for_issn($this->issn); } if ($this->oclc != '') { $titles = bhl_titles_for_oclc($this->oclc); } if (count($titles) > 0) { echo '<h3>Distribution of identified articles across BHL items</h3>' . "\n"; echo '<div>'; echo '<div style="display:inline;background-color:rgb(230,242,250);width:20px;height:20px;"> </div>'; echo ' Scanned pages '; echo '<div style="display:inline;background-color:rgb(0,119,204);width:10px;height:10px;"> </div>'; echo ' Articles '; echo '</div>'; echo '<p></p>'; $items = array(); $volumes = array(); items_from_titles($titles, $items, $volumes); $html = '<div style="height:400px;border:1px solid rgb(192,192,192);overflow:auto;">' . "\n"; $html .= '<table>' . "\n"; $html .= '<tbody style="font-size:10px;">' . "\n"; foreach ($volumes as $volume) { $item = $items[$volume]; // How many pages in this item? $num_pages = bhl_num_pages_in_item($item->ItemID); // Coverage $coverage = bhl_item_page_coverage($item->ItemID); $row_height = 10; // Draw as DIV $html .= '<tr>' . "\n"; $html .= '<td>'; $html .= '<a href="http://www.biodiversitylibrary.org/item/' . $item->ItemID . '" target="_new">'; $html .= $item->VolumeInfo; $html .= '</a>'; $html .= '</td>' . "\n"; $html .= '<td>' . "\n"; $html .= '<div style="position:relative">' . "\n"; $html .= ' <div style="background-color:rgb(230,242,250);border-bottom:1px solid rgb(192,192,192);border-right:1px solid rgb(192,192,192);position:absolute;left:0px;top:0px;width:' . $num_pages . 'px;height:' . $row_height . 'px;">' . "\n"; foreach ($coverage as $c) { $html .= ' <div style="background-color:rgb(0,119,204);position:absolute;left:' . $c->start . 'px;top:0px;width:' . ($c->end - $c->start) . 'px;height:' . $row_height . 'px;">' . "\n"; $html .= ' </div>' . "\n"; } $html .= ' </div>' . "\n"; $html .= '</div>' . "\n"; $html .= '</td>' . "\n"; $html .= '</tr>' . "\n"; } $html .= '</tbody>' . "\n"; $html .= '</table>' . "\n"; $html .= '</div>' . "\n"; echo $html; } $institutions = institutions_from_titles($titles); if (count($institutions) != 0) { echo '<h3>BHL source(s)</h3>' . "\n"; echo '<table>' . "\n"; foreach ($institutions as $k => $v) { echo '<tr>' . "\n"; echo '<td>' . "\n"; switch ($k) { case 'American Museum of Natural History Library': echo '<img src="' . $config['web_root'] . 'images/institutions/' . 'AMNH_logo_--_blue_rectangle.jpg' . '" width="48" />'; break; case 'Harvard University, MCZ, Ernst Mayr Library': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'Mod_Color_Harvard_Shield_small_bigger.jpg' . '" width="48" />'; break; case 'Missouri Botanical Garden': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'twitter_icon_MBG.jpg' . '" width="48" />'; break; case 'New York Botanical Garden': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'NYBGDOMEHEADERWEB.jpg' . '" />'; break; case 'Smithsonian Institution Libraries': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'SILCatesbyMagnolia.jpg' . '" width="48" />'; break; case 'The Field Museum': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'field.jpg' . '" width="48" />'; break; case 'BHL-Europe': echo '<br /><div style="background-color:green;width:120px;text-align:center"><img src="' . $config['web_root'] . 'images/institutions/' . 'BHL_logo_wg.png' . '" height="48" /></div>'; break; case 'Boston Public Library': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'BPLcards.jpg' . '" width="48" />'; break; case 'Harvard University Herbarium': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'huh_logo_bw_100.png' . '" width="48" />'; break; case 'MBLWHOI Library': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'library_logo2_bigger.jpg' . '" width="48" />'; break; case 'Natural History Museum, London': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'natural_history_museum-01.jpg' . '" width="48" />'; break; case 'University of Illinois Urbana Champaign': echo '<br /><img src="' . $config['web_root'] . 'images/institutions/' . 'ilogo_horz_bold.gif' . '" height="48" />'; break; default: break; } echo '</td>' . "\n"; echo '<td>' . "\n"; echo $k . '<br />' . $v . ' items'; echo '</td>' . "\n"; echo '</tr>' . "\n"; } echo '</table>' . "\n"; } // How does journal relate to BHL Titles and Items? $titles = array(); if ($this->issn != '') { $titles = db_retrieve_journal_names_from_issn($this->issn); } if ($this->oclc != '') { $titles = db_retrieve_journal_names_from_oclc($this->oclc); } if (count($titles) > 1) { echo '<h2>Alternative titles</h2>'; echo '<ul>'; foreach ($titles as $title) { echo '<li>' . $title . '</li>'; } echo '</ul>'; } echo '<h2>Articles</h2>'; if ($this->issn == '0374-5481') { // Special treatment for Ann mag Nat Hist echo '<ul>'; for ($series = 1; $series <= 9; $series++) { echo '<li><a href="' . $config['web_root'] . 'issn/' . $this->issn . '#series' . $series . '">Series ' . $series . '</a></li>'; } echo '</ul>'; for ($series = 1; $series <= 9; $series++) { echo '<h3><a name="series' . $series . '"></a>Series ' . $series . '</h3>' . "\n"; $articles = db_retrieve_articles_from_journal_series($this->issn, $series == 1 ? '' : $series); echo '<ul>'; foreach ($articles as $k => $v) { echo '<li style="display:block;border-top:1px solid #EEE; ">' . $k; echo '<ul>'; if (is_array($v)) { foreach ($v as $ref) { echo '<li><a href="' . $config['web_root'] . 'reference/' . $ref->id . '">' . $ref->title . '</a></li>'; } } echo '</ul>'; echo '</li>'; } echo '</ul>'; } } else { $articles = db_retrieve_articles_from_journal($this->issn, $this->oclc); //print_r($articles); echo '<ul>'; foreach ($articles as $k => $v) { echo '<li style="display:block;border-top:1px solid #EEE; ">' . $k; echo '<ul>'; if (is_array($v)) { foreach ($v as $ref) { if (0) { // fast echo '<li><a href="' . $config['web_root'] . 'reference/' . $ref->id . '">' . $ref->title . '</a></li>'; } else { // slower, but useful for debugging $reference = db_retrieve_reference($ref->id); echo '<li style="border-bottom:1px dotted rgb(128,128,128);padding:4px;">'; echo '<a href="' . $config['web_root'] . 'reference/' . $ref->id . '">' . $reference->title . '</a><br/>'; echo '<span style="color:green;">' . reference_authors_to_text_string($reference); if (isset($reference->year)) { echo ' (' . $reference->year . ')'; } echo ' ' . reference_to_citation_text_string($reference) . '</span>'; echo ' ' . reference_to_coins($reference); // Thumbail, useful for debugging if (0) { echo '<div>'; $pages = bhl_retrieve_reference_pages($ref->id); $image = bhl_fetch_page_image($pages[0]->PageID); echo '<a href="' . $config['web_root'] . 'reference/' . $ref->id . '">'; echo '<img style="padding:2px;border:1px solid blue;margin:2px;" id="thumbnail_image_' . $page->PageID . '" src="' . $image->thumbnail->url . '" width="' . $image->thumbnail->width . '" height="' . $image->thumbnail->height . '" alt="thumbnail"/>'; echo '</a>'; echo '</div>'; } echo '</li>'; } } } else { // Article lacks volume if (isset($v->id)) { $reference = db_retrieve_reference($v->id); echo '<li style="border-bottom:1px dotted rgb(128,128,128);padding:4px;">'; echo '<a href="' . $config['web_root'] . 'reference/' . $v->id . '">' . $reference->title . '</a><br/>'; echo '<span style="color:green;">' . reference_authors_to_text_string($reference); if (isset($reference->year)) { echo ' (' . $reference->year . ')'; } echo ' ' . reference_to_citation_text_string($reference) . '</span>'; echo ' ' . reference_to_coins($reference); } } echo '</ul>'; echo '</li>'; } echo '</ul>'; } }
function reference_to_atom($reference, &$feed, &$rss) { global $config; $entry = $feed->createElement('entry'); $entry = $rss->appendChild($entry); // title $title = $entry->appendChild($feed->createElement('title')); $title->appendChild($feed->createTextNode($reference->title)); // link $link = $entry->appendChild($feed->createElement('link')); $link->setAttribute('rel', 'alternate'); $link->setAttribute('type', 'text/html'); $link->setAttribute('href', $config['web_root'] . 'reference/' . $reference->reference_id); // dates $updated = $entry->appendChild($feed->createElement('updated')); $updated->appendChild($feed->createTextNode(date(DATE_ATOM, strtotime($reference->updated)))); $created = $entry->appendChild($feed->createElement('published')); $created->appendChild($feed->createTextNode(date(DATE_ATOM, strtotime($reference->created)))); // id $id = $entry->appendChild($feed->createElement('id')); // $id->appendChild($feed->createTextNode('urn:uuid:' . uuid())); $id->appendChild($feed->createTextNode($config['web_root'] . 'reference/' . $reference->reference_id)); $description = ''; $description .= '<div>'; $description .= reference_authors_to_text_string($reference) . '<br/>'; $description .= reference_to_citation_text_string($reference); $pages = bhl_retrieve_reference_pages($reference->reference_id); if (count($pages) > 0) { $description .= '<div><img src="http://biostor.org/bhl_image.php?PageID=' . $pages[0]->PageID . '&thumbnail" /></div>'; } $description .= '</div>'; // content $content = $entry->appendChild($feed->createElement('content')); $content->setAttribute('type', 'html'); $content->appendChild($feed->createTextNode($description)); // summary $summary = $entry->appendChild($feed->createElement('summary')); $summary->setAttribute('type', 'html'); $summary->appendChild($feed->createTextNode($description)); }
<?php require_once '../db.php'; $id = $_GET['id']; $query = $_GET['q']; $callback = ''; if (isset($_GET['callback'])) { $callback = $_GET['callback']; } $obj = new stdclass(); //$obj->matches = 0; $obj->results = array(); $obj->query = $query; $bhl_pages = bhl_retrieve_reference_pages($id); $sql = 'SELECT distinct page FROM rdmp_documentcloud WHERE ocr_text LIKE ' . $db->qstr('%' . $query . '%') . ' ORDER BY page ' . ' LIMIT ' . count($bhl_pages); $result = $db->Execute($sql); if ($result == false) { die("failed [" . __FILE__ . ":" . __LINE__ . "]: " . $sql); } while (!$result->EOF) { $obj->results[] = (int) $result->fields['page']; $result->MoveNext(); } //$obj->matches = count($obj->results); header('Content-type: text/plain'); if ($callback != '') { echo $callback . '('; } echo json_encode($obj); if ($callback != '') { echo ')';
function bhl_geocode_reference($reference_id) { $pages = bhl_retrieve_reference_pages($reference_id); foreach ($pages as $page) { $text = bhl_fetch_ocr_text($page->PageID); $pts = points_from_text($text); //echo $page->PageID; //print_r($pts); if (count($pts) > 0) { foreach ($pts as $pt) { $loc = new stdclass(); $loc->name = ''; $loc->latitude = $pt->latitude; $loc->longitude = $pt->longitude; $locality_id = db_store_locality($loc); bhl_store_locality_link($page->PageID, $locality_id); } } else { // No localities bhl_store_locality_link($page->PageID, 0); } } }
function DisplayText() { $text = ''; if (db_reference_from_bhl($this->id)) { $pages = bhl_retrieve_reference_pages($this->id); $page_ids = array(); foreach ($pages as $p) { $page_ids[] = $p->PageID; } $text = bhl_fetch_text_for_pages($page_ids); $text = str_replace('\\n', "\n", $text); $text = str_replace("\n ", "\n", $text); // wiki experiments /* foreach ($page_ids as $page) { $names = names_in_page($page); print_r($names); } */ } header("Content-type: text/plain; charset=utf-8\n\n"); echo $text; }
/** * @brief Display a set of BHL pages for a reference * * @param reference_id Primary key of reference in local database * @page_to_display Specific page to display (default is 0, which means display first page in reference) * * @return HTML for viewer */ function bhl_reference_viewer($reference_id, $page_to_display = 0) { $pages = bhl_retrieve_reference_pages($reference_id); //print_r($pages); echo bhl_viewer($pages, $page_to_display); }
function DisplayRSS() { global $config; log_access($this->id, 'rss'); // Create XML document $feed = new DomDocument('1.0', 'UTF-8'); $rss = $feed->createElement('rss'); $rss->setAttribute('version', '2.0'); $rss->setAttribute('xmlns:media', 'http://search.yahoo.com/mrss/'); $rss = $feed->appendChild($rss); // channel $channel = $feed->createElement('channel'); $channel = $rss->appendChild($channel); $title = $channel->appendChild($feed->createElement('title')); $title->appendChild($feed->createTextNode($this->GetTitle())); $description = $channel->appendChild($feed->createElement('description')); $description->appendChild($feed->createTextNode("Page images from " . $this->GetTitle())); $link = $channel->appendChild($feed->createElement('link')); $link->appendChild($feed->createTextNode($config['web_server'] . 'reference/' . $this->id)); $pages = bhl_retrieve_reference_pages($this->id); foreach ($pages as $page) { $image = bhl_fetch_page_image($page->PageID); $item = $channel->appendChild($feed->createElement('item')); $title = $item->appendChild($feed->createElement('title')); $title->appendChild($feed->createTextNode('Page ' . $page->PageID)); $link = $item->appendChild($feed->createElement('link')); $link->appendChild($feed->createTextNode($image->url)); $thumbnail = $item->appendChild($feed->createElement('media:thumbnail')); $thumbnail->setAttribute('url', $image->thumbnail->url); $content = $item->appendChild($feed->createElement('media:content')); $content->setAttribute('url', $image->url); } // Dump XML header("Content-type: text/xml; charset=utf-8\n\n"); echo $feed->saveXML(); }
/** * @brief Create PDF for a reference * * We create a simple cover page for the PDF. This page contains basic bibliographic metadata * for the PDF, in order for Mendeley to process the PDF correctly. In response to my discovery * that Mendeley doesn't accept all XMP (Ticket#2010040110000015) support@mendeley.com replied that * they have some heuristic tests to see if the metadata is valid, such as whether the information * about the title and authors occurs on the first of the PDF. * * * @param reference_id Reference id * @param pdf_filename Full path of PDF file to create * */ function pdf_create($reference_id, $pdf_filename) { global $config; // Get reference $reference = db_retrieve_reference($reference_id); // Get tags $tags = pdf_tags($reference->reference_id, 10); // Paper size // A4 = 210 x 297 $paper_width = 210; // mm $paper_height = 297; // mm $margin = 10; //---------------------------------------------------------------------------------------------- // PDF $pdf = new FPDF('P', 'mm', 'A4'); //$pdf = PDF_Rotate('P', 'mm', 'A4'); //---------------------------------------------------------------------------------------------- // Basic metadata (e.g., that displayed by Mac OS X Preview) $pdf->SetTitle($reference->title, true); // true means use UTF-8 $pdf->SetAuthor(reference_authors_to_text_string($reference), true); // true means use UTF-8 if (count($tags) > 0) { $pdf->SetKeywords(join(", ", $tags), true); } //---------------------------------------------------------------------------------------------- // Cover page (partly to ensure Mendeley accepts XMP metadata) $pdf->AddPage(); // Title $pdf->SetFont('Arial', '', 24); $pdf->SetXY($margin, $margin); $pdf->Write(10, utf8_decode($reference->title)); // Authors $y = $pdf->GetY(); $pdf->SetXY($margin, $y + 16); $pdf->SetFont('Arial', 'B', 16); $pdf->Write(6, utf8_decode(reference_authors_to_text_string($reference))); // Citation $y = $pdf->GetY(); $pdf->SetXY($margin, $y + 10); $pdf->SetFont('Arial', 'I', 12); $pdf->Write(6, utf8_decode($reference->secondary_title)); $pdf->SetFont('Arial', '', 12); $pdf->Write(6, ' ' . $reference->volume); if (isset($reference->issue)) { $pdf->Write(6, '(' . $reference->issue . ')'); } $pdf->Write(6, ':' . $reference->spage); if (isset($reference->epage)) { $pdf->Write(6, '-' . $reference->epage); } $pdf->Write(6, ' (' . $reference->year . ')'); // URL $url = $config['web_root'] . 'reference/' . $reference->reference_id; $pdf->Write(6, ' '); $pdf->SetTextColor(0, 0, 255); $pdf->SetFont('', 'U'); $pdf->Write(6, $url, $url); $pdf->SetFont('', ''); $pdf->SetTextColor(0, 0, 0); //---------------------------------------------------------------------------------------------- // If we add taxon names as keywords if (count($tags) > 0) { $keywords = "Keywords: " . join("; ", $tags); $y = $pdf->GetY(); $pdf->SetXY($margin, $y + 10); $pdf->Write(6, $keywords); } //---------------------------------------------------------------------------------------------- // Footer giving credit to BHL $y = $paper_height; $y -= $margin; $y -= 40; $pdf->Image($config['web_dir'] . '/images/cc/cc.png', 10, $y, 10); $pdf->Image($config['web_dir'] . '/images/cc/by.png', 20, $y, 10); $pdf->Image($config['web_dir'] . '/images/cc/nc.png', 30, $y, 10); $pdf->SetXY(10, $y + 10); $pdf->SetFont('Arial', '', 10); $pdf->SetTextColor(0, 0, 0); $pdf->Write(6, 'Page images from the Biodiversity Heritage Library, '); //Then put a blue underlined link $pdf->SetTextColor(0, 0, 255); $pdf->SetFont('', 'U'); $pdf->Write(6, 'http://www.biodiversitylibrary.org/', 'http://www.biodiversitylibrary.org/'); $pdf->SetFont('', ''); $pdf->SetTextColor(0, 0, 0); $pdf->Write(6, ', made available under a Creative Commons Attribution-Noncommercial License '); $pdf->SetTextColor(0, 0, 255); $pdf->SetFont('', 'U'); $pdf->Write(6, 'http://creativecommons.org/licenses/by-nc/2.5/', 'http://creativecommons.org/licenses/by-nc/2.5/'); //---------------------------------------------------------------------------------------------- // Add BHL page scans $pages = bhl_retrieve_reference_pages($reference_id); foreach ($pages as $page) { $image = bhl_fetch_page_image($page->PageID); $page_width = $paper_width; $page_height = $paper_height; $page_width -= 2 * $margin; $page_height -= 2 * $margin; // Fit to page $img_height = $image->height; $img_width = $image->width; $w_scale = $page_width / $img_width; $h_scale = $page_height / $img_height; $scale = min($w_scale, $h_scale); $img_height *= $scale; $img_width *= $scale; $pdf->AddPage(); $x_offset = ($paper_width - $img_width) / 2.0; $y_offset = ($paper_height - $img_height) / 2.0; $pdf->Image($image->file_name, $x_offset, $y_offset, $img_width); } $pdf->Output($pdf_filename, 'F'); pdf_add_xmp($reference, $pdf_filename, $tags); }
function bhl_names_in_reference_by_page($reference_id) { global $db; $names = new stdclass(); $pages = bhl_retrieve_reference_pages($reference_id); // If we don't have a page range then we can't get taxa if (count($pages) == 0) { return $names; } $names->found = array(); $names->names = array(); $count = 0; foreach ($pages as $page) { $sql = 'SELECT * FROM bhl_page_name WHERE PageID=' . $page->PageID; $result = $db->Execute($sql); if ($result == false) { die("failed [" . __LINE__ . "]: " . $sql); } while (!$result->EOF) { $namestring = $result->fields['NameConfirmed']; $namebankID = $result->fields['NameBankID']; // Have we processed this name before? if (!isset($names->found[$namestring])) { $n = new stdclass(); $n->namestring = $namestring; $n->identifiers = new stdclass(); $n->identifiers->namebankID = (int) $namebankID; $n->pages = array(); $names->names[] = $n; $names->found[$namestring] = $count++; } $index = $names->found[$namestring]; $names->names[$index]->pages[] = (int) $page->PageID; $result->MoveNext(); } } //ksort($names); return $names; }
echo $v[$i] . ' (' . $v[$i + 1] . ')'; echo '</li>'; } echo '</ul>'; echo '</li>'; } echo '</ul>'; echo '</td>'; // Hits echo '<td valign="top">'; echo '<table>'; foreach ($hits->response->docs as $doc) { echo '<tr>'; echo '<td>'; if (preg_match('/reference\\/(?<id>\\d+)/', $doc->id, $m)) { $pages = bhl_retrieve_reference_pages($m['id']); if (isset($pages[0]->PageID)) { $image = bhl_fetch_page_image($pages[0]->PageID); $imageURL = $image->thumbnail->url; echo '<img style="border:1px solid rgb(192,192,192);" src="' . $imageURL . '" width="40" />'; } else { echo '<img style="border:1px solid rgb(192,192,192);" src="' . $config['web_root'] . 'images/blank70x100.png' . '" width="40" />'; } } echo '</td>'; echo '<td valign="top">'; echo '<span><a href="' . $doc->id . '">' . $doc->title . '</a></span><br />'; echo '<span style="color:green;font-size:12px;">'; $str = $hits->highlighting->{$doc->id}->citation[0]; $str = str_replace('<em>', '<b>', $str); $str = str_replace('</em>', '</b>', $str);