summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php')
-rw-r--r--www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php444
1 files changed, 0 insertions, 444 deletions
diff --git a/www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php b/www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php
deleted file mode 100644
index 87d3bcdc..00000000
--- a/www/wiki/extensions/SemanticResultFormats/formats/bibtex/SRF_BibTeX.php
+++ /dev/null
@@ -1,444 +0,0 @@
-<?php
-
-/**
- * Printer class for creating BibTeX exports
- *
- * For details on availble keys see the README
- *
- * Example of a book :
- *
- * @Book{abramowitz1964homf,
- * author = "Milton Abramowitz and Irene A. Stegun",
- * title = "Handbook of Mathematical Functions",
- * publisher = "Dover",
- * year = 1964,
- * address = "New York",
- * edition = "ninth Dover printing, tenth GPO printing"
- * }
- *
- * @file
- * @ingroup SemanticResultFormats
- *
- * @author Markus Krötzsch
- * @author Denny Vrandecic
- * @author Frank Dengler
- * @author Steren Giannini
- * @ingroup SemanticResultFormats
- */
-class SRFBibTeX extends SMWExportPrinter {
-
- protected $m_title = '';
- protected $m_description = '';
-
- /**
- * @see SMWIExportPrinter::getMimeType
- *
- * @since 1.8
- *
- * @param SMWQueryResult $queryResult
- *
- * @return string
- */
- public function getMimeType( SMWQueryResult $queryResult ) {
- return 'text/bibtex';
- }
-
- /**
- * @see SMWIExportPrinter::getFileName
- *
- * @since 1.8
- *
- * @param SMWQueryResult $queryResult
- *
- * @return string|boolean
- */
- public function getFileName( SMWQueryResult $queryResult ) {
- if ( $this->getSearchLabel( SMW_OUTPUT_WIKI ) != '' ) {
- return str_replace( ' ', '_', $this->getSearchLabel( SMW_OUTPUT_WIKI ) ) . '.bib';
- } else {
- return 'BibTeX.bib';
- }
- }
-
- public function getQueryMode( $context ) {
- return ( $context == SMWQueryProcessor::SPECIAL_PAGE ) ? SMWQuery::MODE_INSTANCES : SMWQuery::MODE_NONE;
- }
-
- public function getName() {
- return wfMessage( 'srf_printername_bibtex' )->text();
- }
-
- protected function getResultText( SMWQueryResult $res, $outputmode ) {
- global $wgSitename;
- $result = '';
-
- if ( $outputmode == SMW_OUTPUT_FILE ) { // make file
- if ( $this->m_title == '' ) {
- $this->m_title = $wgSitename;
- }
-
- $items = [];
-
- while ( $row = $res->getNext() ) {
- $items[] = $this->getItemForResultRow( $row )->text();
- }
-
- $result = implode( '', $items );
- } else { // just make link to export
- if ( $this->getSearchLabel( $outputmode ) ) {
- $label = $this->getSearchLabel( $outputmode );
- } else {
- $label = wfMessage( 'srf_bibtex_link' )->inContentLanguage()->text();
- }
-
- $link = $res->getQueryLink( $label );
- $link->setParameter( 'bibtex', 'format' );
-
- if ( $this->getSearchLabel( SMW_OUTPUT_WIKI ) != '' ) {
- $link->setParameter( $this->getSearchLabel( SMW_OUTPUT_WIKI ), 'searchlabel' );
- }
-
- $result .= $link->getText( $outputmode, $this->mLinker );
- $this->isHTML = ( $outputmode == SMW_OUTPUT_HTML ); // yes, our code can be viewed as HTML if requested, no more parsing needed
- }
-
- return $result;
- }
-
- /**
- * Gets a SMWBibTeXEntry for the row.
- *
- * @since 1.6
- *
- * @param $row array of SMWResultArray
- *
- * @return SMWBibTeXEntry
- */
- protected function getItemForResultRow( array /* of SMWResultArray */
- $row ) {
- $address = '';
- $annote = '';
- $author = '';
- $booktitle = '';
- $chapter = '';
- $crossref = '';
- $doi = '';
- $edition = '';
- $editor = '';
- $eprint = '';
- $howpublished = '';
- $institution = '';
- $journal = '';
- $key = '';
- $month = '';
- $note = '';
- $number = '';
- $organization = '';
- $pages = '';
- $publisher = '';
- $school = '';
- $series = '';
- $title = '';
- $type = '';
- $url = '';
- $volume = '';
- $year = '';
-
- foreach ( $row as /* SMWResultArray */
- $field ) {
- $req = $field->getPrintRequest();
- $label = strtolower( $req->getLabel() );
- $var = false;
-
- switch ( $label ) {
- case 'type':
- $var =& $type;
- break;
- case 'address':
- $var =& $address;
- break;
- case 'annote':
- $var =& $annote;
- break;
- case 'booktitle':
- $var =& $booktitle;
- break;
- case 'chapter':
- $var =& $chapter;
- break;
- case 'crossref':
- $var =& $crossref;
- break;
- case 'doi':
- $var =& $doi;
- break;
- case 'edition':
- $var =& $edition;
- break;
- case 'eprint':
- $var =& $eprint;
- break;
- case 'howpublished':
- $var =& $howpublished;
- break;
- case 'institution':
- $var =& $institution;
- break;
- case 'journal':
- $var =& $journal;
- break;
- case 'key':
- $var =& $key;
- break;
- case 'note':
- $var =& $note;
- break;
- case 'number':
- $var =& $number;
- break;
- case 'organization':
- $var =& $organization;
- break;
- case 'pages':
- $var =& $pages;
- break;
- case 'publisher':
- $var =& $publisher;
- break;
- case 'school':
- $var =& $school;
- break;
- case 'series':
- $var =& $series;
- break;
- case 'title':
- $var =& $title;
- break;
- case 'url':
- $var =& $url;
- break;
- case 'year':
- $var =& $year;
- break;
- case 'month':
- $var =& $month;
- break;
- case 'volume':
- case 'journal_volume':
- $var =& $volume;
- break;
- }
-
- if ( $var !== false ) {
- $dataValue = $field->getNextDataValue();
-
- if ( $dataValue !== false ) {
- $var = $dataValue->getShortWikiText();
- }
-
- unset( $var );
- } else {
- switch ( $label ) {
- case 'author':
- case 'authors':
- case 'editor' :
- case 'editors':
- $wikiTexts = [];
- while ( ( /* SMWDataValue */
- $dataValue = $field->getNextDataValue() ) !== false ) {
- $wikiTexts[] = $dataValue->getShortWikiText();
- }
- $wikiText = $GLOBALS['wgLang']->listToText( $wikiTexts );
-
- if ( $label == 'author' || $label == 'authors' ) {
- $author = $wikiText;
- } else {
- $editor = $wikiText;
- }
- break;
- case 'date':
- $dataValue = $field->getNextDataValue();
-
- if ( $dataValue !== false && get_class( $dataValue ) == 'SMWTimeValue' ) {
- $year = $dataValue->getYear();
- $month = $dataValue->getMonth();
- }
- break;
- }
- }
- }
-
- return new SMWBibTeXEntry(
- $type,
- $address,
- $annote,
- $author,
- $booktitle,
- $chapter,
- $crossref,
- $doi,
- $edition,
- $editor,
- $eprint,
- $howpublished,
- $institution,
- $journal,
- $key,
- $month,
- $note,
- $number,
- $organization,
- $pages,
- $publisher,
- $school,
- $series,
- $title,
- $url,
- $volume,
- $year
- );
- }
-}
-
-/**
- * Represents a single entry in an BibTeX
- *
- * @ingroup SMWQuery
- */
-class SMWBibTeXEntry {
-
- private $bibTeXtype;
- private $URI;
- private $fields = [];
-
- public function __construct( $type, $address, $annote, $author, $booktitle, $chapter, $crossref, $doi, $edition, $editor, $eprint, $howpublished, $institution, $journal, $key, $month, $note, $number, $organization, $pages, $publisher, $school, $series, $title, $url, $volume, $year ) {
- if ( $type ) {
- $this->bibTeXtype = ucfirst( $type );
- } else {
- $this->bibTeXtype = 'Book';
- }
-
- $fields = [];
-
- if ( $address ) {
- $fields['address'] = $address;
- }
- if ( $annote ) {
- $fields['annote'] = $annote;
- }
- if ( $author ) {
- $fields['author'] = $author;
- }
- if ( $booktitle ) {
- $fields['booktitle'] = $booktitle;
- }
- if ( $chapter ) {
- $fields['chapter'] = $chapter;
- }
- if ( $crossref ) {
- $fields['crossref'] = $crossref;
- }
- if ( $doi ) {
- $fields['doi'] = $doi;
- }
- if ( $edition ) {
- $fields['edition'] = $edition;
- }
- if ( $editor ) {
- $fields['editor'] = $editor;
- }
- if ( $eprint ) {
- $fields['eprint'] = $eprint;
- }
- if ( $howpublished ) {
- $fields['howpublished'] = $howpublished;
- }
- if ( $institution ) {
- $fields['institution'] = $institution;
- }
- if ( $journal ) {
- $fields['journal'] = $journal;
- }
- if ( $key ) {
- $fields['key'] = $key;
- }
- if ( $month ) {
- $fields['month'] = $month;
- }
- if ( $note ) {
- $fields['note'] = $note;
- }
- if ( $number ) {
- $fields['number'] = $number;
- }
- if ( $organization ) {
- $fields['organization'] = $organization;
- }
- if ( $pages ) {
- $fields['pages'] = $pages;
- }
- if ( $publisher ) {
- $fields['publisher'] = $publisher;
- }
- if ( $school ) {
- $fields['school'] = $school;
- }
- if ( $series ) {
- $fields['series'] = $series;
- }
- if ( $title ) {
- $fields['title'] = $title;
- }
- if ( $url ) {
- $fields['url'] = $url;
- }
- if ( $volume ) {
- $fields['volume'] = $volume;
- }
- if ( $year ) {
- $fields['year'] = $year;
- }
-
- $this->fields = $fields;
-
- // generating the URI: author last name + year + first letters of title
- $URI = '';
- if ( $author ) {
- $authors = explode( ',', $author );
- $authors = explode( wfMessage( 'and' )->text(), $authors[0] );
- $arrayAuthor = explode( ' ', $authors[0], 2 );
- $URI .= str_replace( ' ', '', $arrayAuthor[array_key_exists( 1, $arrayAuthor ) ? 1 : 0] );
- }
-
- if ( $year ) {
- $URI .= $year;
- }
-
- if ( $title ) {
- foreach ( explode( ' ', $title ) as $titleWord ) {
- $charsTitleWord = preg_split( '//', $titleWord, -1, PREG_SPLIT_NO_EMPTY );
-
- if ( !empty( $charsTitleWord ) ) {
- $URI .= $charsTitleWord[0];
- }
- }
- }
-
- $this->URI = strtolower( $URI );
- }
-
- /**
- * Creates the BibTeX output for a single item.
- */
- public function text() {
- $text = '@' . $this->bibTeXtype . '{' . $this->URI . ",\r\n";
-
- foreach ( $this->fields as $key => $value ) {
- $text .= ' ' . $key . ' = "' . $value . '", ' . "\r\n";
- }
-
- $text .= "}\r\n\r\n";
-
- return $text;
- }
-}