| Server IP : 10.10.92.66 / Your IP : 104.23.243.84 Web Server : Apache/2.4.52 (Ubuntu) System : Linux jurnalpolinema 5.15.0-177-generic #187-Ubuntu SMP Sat Apr 11 22:54:33 UTC 2026 x86_64 User : jurnal ( 1001) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/jurnal/public_html/lib/pkp/classes/citation/ |
Upload File : |
<?php
/**
* @defgroup citation Citation
*/
/**
* @file classes/citation/Citation.inc.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class Citation
* @ingroup citation
*
* @brief Class representing a citation (bibliographic reference)
*/
import('lib.pkp.classes.core.DataObject');
class Citation extends DataObject {
/**
* Constructor.
* @param $rawCitation string an unparsed citation string
*/
function __construct($rawCitation = null) {
parent::__construct();
$this->setRawCitation($rawCitation);
}
//
// Getters and Setters
//
/**
* Replace URLs through HTML links, if the citation does not already contain HTML links
* @return string
*/
function getCitationWithLinks() {
$citation = $this->getRawCitation();
if (stripos($citation, '<a href=') === false) {
$citation = preg_replace_callback(
'#(http|https|ftp)://[\d\w\.-]+\.[\w\.]{2,6}[^\s\]\[\<\>]*/?#',
function($matches) {
$trailingDot = in_array($char = substr($matches[0], -1), array('.', ','));
$url = rtrim($matches[0], '.,');
return "<a href=\"$url\">$url</a>" . ($trailingDot?$char:'');
},
$citation
);
}
return $citation;
}
/**
* Get the rawCitation
* @return string
*/
function getRawCitation() {
return $this->getData('rawCitation');
}
/**
* Set the rawCitation
* @param $rawCitation string
*/
function setRawCitation($rawCitation) {
$rawCitation = $this->_cleanCitationString($rawCitation);
$this->setData('rawCitation', $rawCitation);
}
/**
* Get the sequence number
* @return integer
*/
function getSequence() {
return $this->getData('seq');
}
/**
* Set the sequence number
* @param $seq integer
*/
function setSequence($seq) {
$this->setData('seq', $seq);
}
//
// Private methods
//
/**
* Take a citation string and clean/normalize it
* @param $citationString string
* @return string
*/
function _cleanCitationString($citationString) {
// 1) Strip slashes and whitespace
$citationString = trim(stripslashes($citationString));
// 2) Normalize whitespace
$citationString = PKPString::regexp_replace('/[\s]+/', ' ', $citationString);
return $citationString;
}
}