Open Journal Systems  3.3.0
Citation.inc.php
1 <?php
2 
20 import('lib.pkp.classes.core.DataObject');
21 
22 class Citation extends DataObject {
27  function __construct($rawCitation = null) {
28  parent::__construct();
29  $this->setRawCitation($rawCitation);
30  }
31 
32  //
33  // Getters and Setters
34  //
35 
40  function getCitationWithLinks() {
41  $citation = $this->getRawCitation();
42  if (stripos($citation, '<a href=') === false) {
43  $citation = preg_replace_callback(
44  '#(http|https|ftp)://[\d\w\.-]+\.[\w\.]{2,6}[^\s\]\[<>]*/?#',
45  function($matches) {
46  $trailingDot = in_array($char = substr($matches[0], -1), array('.', ','));
47  $url = rtrim($matches[0], '.,');
48  return "<a href=\"$url\">$url</a>" . ($trailingDot?$char:'');
49  },
50  $citation
51  );
52  }
53  return $citation;
54  }
55 
60  function getRawCitation() {
61  return $this->getData('rawCitation');
62  }
63 
68  function setRawCitation($rawCitation) {
69  $rawCitation = $this->_cleanCitationString($rawCitation);
70  $this->setData('rawCitation', $rawCitation);
71  }
72 
77  function getSequence() {
78  return $this->getData('seq');
79  }
80 
85  function setSequence($seq) {
86  $this->setData('seq', $seq);
87  }
88 
89  //
90  // Private methods
91  //
97  function _cleanCitationString($citationString) {
98  // 1) Strip slashes and whitespace
99  $citationString = trim(stripslashes($citationString));
100 
101  // 2) Normalize whitespace
102  $citationString = PKPString::regexp_replace('/[\s]+/', ' ', $citationString);
103 
104  return $citationString;
105  }
106 }
Citation\getRawCitation
getRawCitation()
Definition: Citation.inc.php:60
DataObject\getData
& getData($key, $locale=null)
Definition: DataObject.inc.php:100
PKPString\regexp_replace
static regexp_replace($pattern, $replacement, $subject, $limit=-1)
Definition: PKPString.inc.php:279
DataObject
Any class with an associated DAO should extend this class.
Definition: DataObject.inc.php:18
Citation\getCitationWithLinks
getCitationWithLinks()
Definition: Citation.inc.php:40
Citation\setSequence
setSequence($seq)
Definition: Citation.inc.php:85
Citation
Class representing a citation (bibliographic reference)
Definition: Citation.inc.php:22
Citation\_cleanCitationString
_cleanCitationString($citationString)
Definition: Citation.inc.php:97
Citation\getSequence
getSequence()
Definition: Citation.inc.php:77
Citation\__construct
__construct($rawCitation=null)
Definition: Citation.inc.php:27
Citation\setRawCitation
setRawCitation($rawCitation)
Definition: Citation.inc.php:68
DataObject\setData
setData($key, $value, $locale=null)
Definition: DataObject.inc.php:132