Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
<?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);
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
 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;">&nbsp;&nbsp;&nbsp;&nbsp;</div>';
         echo '&nbsp;Scanned pages&nbsp;';
         echo '<div style="display:inline;background-color:rgb(0,119,204);width:10px;height:10px;">&nbsp;&nbsp;&nbsp;&nbsp;</div>';
         echo '&nbsp;Articles&nbsp;';
         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>';
     }
 }
Exemplo n.º 5
0
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));
}
Exemplo n.º 6
0
<?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 ')';
Exemplo n.º 7
0
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);
        }
    }
}
Exemplo n.º 8
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;
 }
Exemplo n.º 9
0
/**
 * @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);
}
Exemplo n.º 10
0
 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();
 }
Exemplo n.º 11
0
/**
 * @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);
}
Exemplo n.º 12
0
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;
}
Exemplo n.º 13
0
         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);