Refbase update_2021-01-28_15_58
This commit is contained in:
113
contrib/mediawiki/include/Refbase.Renderer.CitationTemplate.php
Normal file
113
contrib/mediawiki/include/Refbase.Renderer.CitationTemplate.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?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;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user