114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 |