예제 #1
0
/**
 * @brief Extract metadata from RIS format file
 *
 * @param ris RIS text
 * @param item Object we are populating
 *
 */
function parseRIS($ris, &$item)
{
    $lines = split("\n", $ris);
    $item->comment = 'RIS';
    /*	echo "<pre>";
    	print_r($lines);
    	echo "</pre>"; */
    foreach ($lines as $k => $v) {
        if (preg_match('/^[A-Z]{1}([A-Z]|[0-9])  \\- /', $v)) {
            list($key, $value) = split('  - ', $v);
            // Clean
            $value = str_replace('\\r', '', $value);
            process_ris_key($key, $value, $item);
        }
    }
}
예제 #2
0
파일: ris.php 프로젝트: rdmpage/bioguid
function import_ris($ris, $callback_func = '')
{
    global $debug;
    $volumes = array();
    $rows = explode("\n", $ris);
    $state = 1;
    foreach ($rows as $r) {
        $parts = explode("  - ", $r);
        $key = '';
        if (isset($parts[1])) {
            $key = trim($parts[0]);
            $value = trim($parts[1]);
            // clean up any leading and trailing spaces
        }
        if (isset($key) && $key == 'TY') {
            $state = 1;
            $obj = new stdClass();
            $obj->authors = array();
            if ('JOUR' == $value) {
                $obj->genre = 'article';
            }
        }
        if (isset($key) && $key == 'ER') {
            $state = 0;
            // Cleaning...
            if ($debug) {
                print_r($obj);
            }
            if ($callback_func != '') {
                $callback_func($obj);
            }
        }
        if ($state == 1) {
            if (isset($value)) {
                process_ris_key($key, $value, $obj);
            }
        }
    }
}
예제 #3
0
파일: ris.php 프로젝트: rdmpage/bioguid
/**
 * @brief Import bibliograpohic data from a RIS file
 *
 */
function import_ris($ris)
{
    global $debug;
    $rows = split("\n", $ris);
    if ($debug) {
        echo '<pre style="text-align: left;border: 1px solid #c7cfd5;background: #f1f5f9;padding:15px;">';
        print_r($rows);
        echo "</pre>";
    }
    $state = 1;
    $genre = '';
    foreach ($rows as $r) {
        $parts = split("  - ", $r);
        $key = '';
        if (isset($parts[1])) {
            $key = $parts[0];
            $value = trim($parts[1]);
            // clean up any leading and trailing spaces
        }
        if (isset($key) && $key == 'TY') {
            $state = 1;
            $obj = new stdClass();
            $obj->authors = array();
            if ('JOUR' == $value) {
                $genre = 'article';
            }
        }
        if (isset($key) && $key == 'ER') {
            $state = 0;
            if ($debug) {
                echo 'Line: ' . __LINE__ . "\n";
                echo "\n=== Import this object ==\n";
            }
            // ISSN lookup
            if (!isset($obj->issn) && 'article' == $genre) {
                $issn = issn_from_journal_title($obj->title);
                if ('' != $issn) {
                    $obj->issn = $issn;
                }
            }
            // to do: we might want to do a DOI lookup here to get more GUIDs...
            if (!isset($obj->doi)) {
                if (in_crossref($obj->issn, $obj->year, $obj->volume)) {
                    $item = new stdclass();
                    $doi = search_for_doi($obj->issn, $obj->volume, $obj->spage, 'article', $item);
                    if ($doi != '') {
                        $obj->doi = $doi;
                        // Fix missing metadata
                        if (!isset($obj->epage) && isset($item->epage)) {
                            $obj->epage = $item->epage;
                        }
                    }
                }
            }
            // http://en.wikipedia.org/wiki/Chinese_name
            // For some journals (e.g., Chinese) we need to reverse the name parts returned
            // by parse_name
            //echo "boo1 |" . $obj->issn . "|\n";
            switch ($obj->issn) {
                case '0529-1526':
                    // Acta Phytotaxonomica Sinica
                    for ($i = 0; $i < count($obj->authors); $i++) {
                        $tmp = $obj->authors[$i]->forename;
                        $obj->authors[$i]->forename = $obj->authors[$i]->lastname;
                        $obj->authors[$i]->lastname = $tmp;
                    }
                    break;
                default:
                    break;
            }
            // Cleaning...
            if ($debug) {
                echo '<pre style="text-align: left;border: 1px solid #c7cfd5;background: #f1f5f9;padding:15px;">';
                print_r($obj);
                echo "</pre>";
            }
            // Store reference here...
            if (find_in_cache($obj) == 0) {
                if (isset($obj->issn)) {
                    if ($obj->issn != '') {
                        store_in_cache($obj);
                    }
                }
                /* for Pac Sci
                			if (isset($obj->volume))
                			{
                				if ($obj->volume != '')
                				{
                					store_in_cache($obj);
                				}
                			}
                			*/
            }
        }
        if ($state == 1) {
            if (isset($value)) {
                process_ris_key($key, $value, $obj);
            }
        }
    }
}