<?php
|
|
|
|
/**
|
|
* Refbase entry renderer using citation templates (cite_journal only for now)
|
|
*/
|
|
class RefbaseRendererCitationTemplate extends RefbaseRenderer {
|
|
|
|
/**
|
|
* Constructor (simply inherit from parent)
|
|
*/
|
|
public function __construct() {
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* List fields required to build template
|
|
*/
|
|
public function getFieldList() {
|
|
return array( 'type',
|
|
'serial',
|
|
'author',
|
|
'year',
|
|
'title',
|
|
'language',
|
|
'publication',
|
|
'volume',
|
|
'issue',
|
|
'pages',
|
|
'place',
|
|
'publisher',
|
|
'issn',
|
|
'doi' );
|
|
}
|
|
|
|
/**
|
|
* Prepare text for template (supports journal articles only)
|
|
*/
|
|
public function render( $entry, & $cite, $options ) {
|
|
|
|
$cite = "";
|
|
$ret = true;
|
|
if ( $entry["type"] == "Journal Article" ) {
|
|
$cite .= "{{cite_journal|url=" . $this->refbaseURL . "show.php?";
|
|
$cite .= "record=" . $entry['serial'];
|
|
if( !empty( $entry["author"] ) ) {
|
|
$author = $entry["author"];
|
|
$aulast = RefbaseTools::extractAuthorsLastName
|
|
( " *; *", " *, *", 1, $author );
|
|
$aufirst = RefbaseTools::extractAuthorsGivenName
|
|
( " *; *", " *, *", 1, $author );
|
|
if( !empty( $aulast ) ) {
|
|
$cite .= "|last=" . $aulast;
|
|
}
|
|
if( !empty( $aufirst ) ) {
|
|
$cite .= "|first=" . $aufirst;
|
|
if( !empty( $aulast ) ) {
|
|
$cite .= "|authorlink=$aufirst $aulast";
|
|
}
|
|
}
|
|
$authorcount = count( preg_split( "/ *; */", $author ) );
|
|
$au = "";
|
|
for ( $i=0; $i < $authorcount - 1; $i++ ) {
|
|
$aul = RefbaseTools::extractAuthorsLastName
|
|
( " *; *", " *, *", $i + 2, $author );
|
|
$auf = RefbaseTools::extractAuthorsGivenName
|
|
( " *; *", " *, *", $i + 2, $author );
|
|
if ( !empty( $aul ) ) {
|
|
if ( !empty( $auf ) ) {
|
|
$au .= "[[$auf $aul|$aul, $auf]]; ";
|
|
}
|
|
}
|
|
}
|
|
if ( !empty( $au ) ) {
|
|
$cite .= "|coauthors=" . trim( $au, '; ' );
|
|
}
|
|
}
|
|
if( !empty( $entry["year"] ) ) {
|
|
$cite .= "|year=" . $entry['year'];
|
|
}
|
|
if( !empty( $entry["title"] ) ) {
|
|
$title = RefbaseTools::searchReplaceText( $entry['title'],
|
|
true );
|
|
$cite .= "|title=" . $title;
|
|
}
|
|
if( !empty( $entry["language"] ) )
|
|
$cite .= "|language=" . $entry['language'];
|
|
if( !empty( $entry["publication"] ) )
|
|
$cite .= "|journal=" . $entry['publication'];
|
|
if( !empty( $entry["volume"] ) )
|
|
$cite .= "|volume=" . $entry['volume'];
|
|
if( !empty( $entry["issue"] ) )
|
|
$cite .= "|issue=" . $entry['issue'];
|
|
if( !empty( $entry["pages"] ) )
|
|
$cite .= "|pages=" . $entry['pages'];
|
|
if( !empty( $entry["place"] ) )
|
|
$cite .= "|location=" . $entry['place'];
|
|
if( !empty( $entry["publiser"] ) )
|
|
$cite .= "|publisher=" . $entry['publisher'];
|
|
if( !empty( $entry["issn"] ) )
|
|
$cite .= "|issn=" . $entry['issn'];
|
|
if( !empty( $entry["doi"] ) )
|
|
$cite .= "|doi=" . $entry['doi'];
|
|
$cite .= "}}";
|
|
$ret &= true;
|
|
} else {
|
|
$cite .= wfMessage( 'refbase-error-cite_journal-type' )->text();
|
|
$ret &= false;
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
}
|
|
|