You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
3.1 KiB

<?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;
}
}