Open Journal Systems  3.3.0
Issue.inc.php
1 <?php
2 
22 define('ISSUE_ACCESS_OPEN', 1);
23 define('ISSUE_ACCESS_SUBSCRIPTION', 2);
24 
25 class Issue extends DataObject {
30  function getJournalId() {
31  return $this->getData('journalId');
32  }
33 
38  function setJournalId($journalId) {
39  return $this->setData('journalId', $journalId);
40  }
41 
46  function getLocalizedTitle() {
47  return $this->getLocalizedData('title');
48  }
49 
55  function getTitle($locale) {
56  return $this->getData('title', $locale);
57  }
58 
64  function setTitle($title, $locale) {
65  return $this->setData('title', $title, $locale);
66  }
67 
72  function getVolume() {
73  return $this->getData('volume');
74  }
75 
80  function setVolume($volume) {
81  return $this->setData('volume', $volume);
82  }
83 
88  function getNumber() {
89  return $this->getData('number');
90  }
91 
96  function setNumber($number) {
97  return $this->setData('number', $number);
98  }
99 
104  function getYear() {
105  return $this->getData('year');
106  }
107 
112  function setYear($year) {
113  return $this->setData('year', $year);
114  }
115 
120  function getPublished() {
121  return $this->getData('published');
122  }
123 
128  function setPublished($published) {
129  return $this->setData('published', $published);
130  }
131 
136  function getCurrent() {
137  return $this->getData('current');
138  }
139 
144  function setCurrent($current) {
145  return $this->setData('current', $current);
146  }
147 
152  function getDatePublished() {
153  return $this->getData('datePublished');
154  }
155 
160  function setDatePublished($datePublished) {
161  return $this->setData('datePublished', $datePublished);
162  }
163 
168  function getDateNotified() {
169  return $this->getData('dateNotified');
170  }
171 
176  function setDateNotified($dateNotified) {
177  return $this->setData('dateNotified', $dateNotified);
178  }
179 
184  function getLastModified() {
185  return $this->getData('lastModified');
186  }
187 
192  function setLastModified($lastModified) {
193  return $this->setData('lastModified', $lastModified);
194  }
195 
199  function stampModified() {
200  return $this->setLastModified(Core::getCurrentDate());
201  }
202 
207  function getAccessStatus() {
208  return $this->getData('accessStatus');
209  }
210 
215  function setAccessStatus($accessStatus) {
216  return $this->setData('accessStatus', $accessStatus);
217  }
218 
223  function getOpenAccessDate() {
224  return $this->getData('openAccessDate');
225  }
226 
231  function setOpenAccessDate($openAccessDate) {
232  return $this->setData('openAccessDate', $openAccessDate);
233  }
234 
240  return $this->getLocalizedData('description');
241  }
242 
248  function getDescription($locale) {
249  return $this->getData('description', $locale);
250  }
251 
257  function setDescription($description, $locale) {
258  return $this->setData('description', $description, $locale);
259  }
260 
268  function getStoredPubId($pubIdType) {
269  return $this->getData('pub-id::'.$pubIdType);
270  }
271 
279  function setStoredPubId($pubIdType, $pubId) {
280  return $this->setData('pub-id::'.$pubIdType, $pubId);
281  }
282 
287  function getShowVolume() {
288  return $this->getData('showVolume');
289  }
290 
295  function setShowVolume($showVolume) {
296  return $this->setData('showVolume', $showVolume);
297  }
298 
303  function getShowNumber() {
304  return $this->getData('showNumber');
305  }
306 
311  function setShowNumber($showNumber) {
312  return $this->setData('showNumber', $showNumber);
313  }
314 
319  function getShowYear() {
320  return $this->getData('showYear');
321  }
322 
327  function setShowYear($showYear) {
328  return $this->setData('showYear', $showYear);
329  }
330 
335  function getShowTitle() {
336  return $this->getData('showTitle');
337  }
338 
343  function setShowTitle($showTitle) {
344  return $this->setData('showTitle', $showTitle);
345  }
346 
352  return $this->getLocalizedData('coverImage');
353  }
354 
360  function getCoverImage($locale) {
361  return $this->getData('coverImage', $locale);
362  }
363 
369  function setCoverImage($coverImage, $locale) {
370  return $this->setData('coverImage', $coverImage, $locale);
371  }
372 
378  return $this->getLocalizedData('coverImageAltText');
379  }
380 
386  function getCoverImageAltText($locale) {
387  return $this->getData('coverImageAltText', $locale);
388  }
389 
396  $coverImage = $this->getLocalizedCoverImage();
397  if (!$coverImage) {
398  return '';
399  }
400 
401  $request = Application::get()->getRequest();
402 
403  import('classes.file.PublicFileManager');
404  $publicFileManager = new PublicFileManager();
405 
406  return $request->getBaseUrl() . '/' . $publicFileManager->getContextFilesPath($this->getJournalId()) . '/' . $coverImage;
407  }
408 
414  function getCoverImageUrls() {
415  $coverImages = $this->getCoverImage(null);
416  if (empty($coverImages)) {
417  return array();
418  }
419 
420  $request = Application::get()->getRequest();
421  import('classes.file.PublicFileManager');
422  $publicFileManager = new PublicFileManager();
423 
424  $urls = array();
425 
426  foreach ($coverImages as $locale => $coverImage) {
427  $urls[$locale] = sprintf('%s/%s/%s', $request->getBaseUrl(), $publicFileManager->getContextFilesPath($this->getJournalId()), $coverImage);
428  }
429 
430  return $urls;
431  }
432 
438  function setCoverImageAltText($coverImageAltText, $locale) {
439  return $this->setData('coverImageAltText', $coverImageAltText, $locale);
440  }
441 
448  function getIssueIdentification($force = array(), $locale = null) {
449 
450  $displayOptions = array(
451  'showVolume' => $this->getData('showVolume'),
452  'showNumber' => $this->getData('showNumber'),
453  'showYear' => $this->getData('showYear'),
454  'showTitle' => $this->getData('showTitle'),
455  );
456 
457  $displayOptions = array_merge($displayOptions, $force);
458  if(is_null($locale)){
459  $locale = AppLocale::getLocale();
460  }
461 
462  AppLocale::requireComponents(array(LOCALE_COMPONENT_APP_COMMON), $locale);
463  $volLabel = PKPLocale::translate('issue.vol', array(), $locale);
464  $numLabel = PKPLocale::translate('issue.no', array(), $locale);
465 
466  $vol = $this->getData('volume');
467  $num = $this->getData('number');
468  $year = $this->getData('year');
469  $title = $this->getTitle($locale);
470  if(empty($title)){
471  $title = $this->getLocalizedTitle();
472  }
473 
474  $identification = array();
475  foreach($displayOptions as $opt => $val) {
476 
477  if (empty($val)) {
478  continue;
479  }
480 
481  if ($opt == 'showVolume') {
482  $identification[] = "$volLabel $vol";
483  } elseif ($opt == 'showNumber') {
484  $identification[] = "$numLabel $num";
485  } elseif ($opt == 'showYear') {
486  $identification[] = !empty($identification) ? "($year)" : $year;
487  } elseif ($opt == 'showTitle' ) {
488  if (!empty($title)) {
489  // Append a separator to the last key
490  if (!empty($identification)) {
491  end($identification);
492  $identification[key($identification)] .= ':';
493  }
494  $identification[] = $title;
495  }
496  }
497  }
498 
499  // If we've got an empty title, re-run the function and force a result
500  if (empty($identification)) {
501  return $this->getIssueIdentification(
502  array(
503  'showVolume' => true,
504  'showNumber' => true,
505  'showYear' => true,
506  'showTitle' => false,
507  ),
508  $locale
509  );
510  }
511 
512  return join(' ', $identification);
513  }
514 
520  function getIssueSeries() {
521  if ($this->getShowVolume() || $this->getShowNumber() || $this->getShowYear()) {
522  return $this->getIssueIdentification(array('showTitle' => false));
523  }
524  return null;
525  }
526 
531  function getNumArticles() {
532  $issueDao = DAORegistry::getDAO('IssueDAO');
533  return $issueDao->getNumArticles($this->getId());
534  }
535 
541  function getBestIssueId() {
542  return $this->getData('urlPath')
543  ? $this->getData('urlPath')
544  : $this->getId();
545  }
546 
551  function hasDescription() {
552  $description = $this->getLocalizedDescription();
553  return !empty($description);
554  }
555 
559  function getDAO() {
560  return DAORegistry::getDAO('IssueDAO');
561  }
562 }
563 
564 
Issue\setShowNumber
setShowNumber($showNumber)
Definition: Issue.inc.php:311
DataObject\getData
& getData($key, $locale=null)
Definition: DataObject.inc.php:100
Issue\getDescription
getDescription($locale)
Definition: Issue.inc.php:248
DataObject\getLocalizedData
getLocalizedData($key, $preferredLocale=null)
Definition: DataObject.inc.php:71
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
Issue\setShowYear
setShowYear($showYear)
Definition: Issue.inc.php:327
Issue\setStoredPubId
setStoredPubId($pubIdType, $pubId)
Definition: Issue.inc.php:279
Issue\hasDescription
hasDescription()
Definition: Issue.inc.php:551
Issue\getNumber
getNumber()
Definition: Issue.inc.php:88
Issue\getNumArticles
getNumArticles()
Definition: Issue.inc.php:531
DataObject
Any class with an associated DAO should extend this class.
Definition: DataObject.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Issue\getLocalizedTitle
getLocalizedTitle()
Definition: Issue.inc.php:46
Issue\getIssueSeries
getIssueSeries()
Definition: Issue.inc.php:520
Issue\getLastModified
getLastModified()
Definition: Issue.inc.php:184
PKPLocale\translate
static translate($key, $params=array(), $locale=null, $missingKeyHandler=array(__CLASS__, 'addOctothorpes'))
Definition: PKPLocale.inc.php:257
Issue\setShowTitle
setShowTitle($showTitle)
Definition: Issue.inc.php:343
Issue\getCurrent
getCurrent()
Definition: Issue.inc.php:136
Issue\getDAO
getDAO()
Definition: Issue.inc.php:559
Issue\getShowNumber
getShowNumber()
Definition: Issue.inc.php:303
Issue\setDatePublished
setDatePublished($datePublished)
Definition: Issue.inc.php:160
Issue\getLocalizedCoverImageAltText
getLocalizedCoverImageAltText()
Definition: Issue.inc.php:377
Issue\setAccessStatus
setAccessStatus($accessStatus)
Definition: Issue.inc.php:215
Issue\setShowVolume
setShowVolume($showVolume)
Definition: Issue.inc.php:295
Issue\setVolume
setVolume($volume)
Definition: Issue.inc.php:80
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
Issue\getIssueIdentification
getIssueIdentification($force=array(), $locale=null)
Definition: Issue.inc.php:448
Issue\getYear
getYear()
Definition: Issue.inc.php:104
Issue\getCoverImageAltText
getCoverImageAltText($locale)
Definition: Issue.inc.php:386
Issue\getShowYear
getShowYear()
Definition: Issue.inc.php:319
Issue\getLocalizedCoverImage
getLocalizedCoverImage()
Definition: Issue.inc.php:351
Issue\setCurrent
setCurrent($current)
Definition: Issue.inc.php:144
Issue\getVolume
getVolume()
Definition: Issue.inc.php:72
Issue\setTitle
setTitle($title, $locale)
Definition: Issue.inc.php:64
Issue\setOpenAccessDate
setOpenAccessDate($openAccessDate)
Definition: Issue.inc.php:231
Issue\getLocalizedCoverImageUrl
getLocalizedCoverImageUrl()
Definition: Issue.inc.php:395
Issue\setPublished
setPublished($published)
Definition: Issue.inc.php:128
Issue\getTitle
getTitle($locale)
Definition: Issue.inc.php:55
Issue\setDateNotified
setDateNotified($dateNotified)
Definition: Issue.inc.php:176
Issue\getCoverImage
getCoverImage($locale)
Definition: Issue.inc.php:360
Issue\setDescription
setDescription($description, $locale)
Definition: Issue.inc.php:257
Issue\getOpenAccessDate
getOpenAccessDate()
Definition: Issue.inc.php:223
Issue\getPublished
getPublished()
Definition: Issue.inc.php:120
Issue\setNumber
setNumber($number)
Definition: Issue.inc.php:96
Issue\getShowVolume
getShowVolume()
Definition: Issue.inc.php:287
Issue\stampModified
stampModified()
Definition: Issue.inc.php:199
DataObject\getId
getId()
Definition: DataObject.inc.php:206
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
Issue\setLastModified
setLastModified($lastModified)
Definition: Issue.inc.php:192
Issue\getStoredPubId
getStoredPubId($pubIdType)
Definition: Issue.inc.php:268
Issue\getDateNotified
getDateNotified()
Definition: Issue.inc.php:168
Issue\getLocalizedDescription
getLocalizedDescription()
Definition: Issue.inc.php:239
Issue\setYear
setYear($year)
Definition: Issue.inc.php:112
Issue\getAccessStatus
getAccessStatus()
Definition: Issue.inc.php:207
Issue
Class for Issue.
Definition: Issue.inc.php:25
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
Issue\getJournalId
getJournalId()
Definition: Issue.inc.php:30
Issue\getBestIssueId
getBestIssueId()
Definition: Issue.inc.php:541
Issue\getShowTitle
getShowTitle()
Definition: Issue.inc.php:335
Issue\setCoverImage
setCoverImage($coverImage, $locale)
Definition: Issue.inc.php:369
Issue\getCoverImageUrls
getCoverImageUrls()
Definition: Issue.inc.php:414
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
Issue\setJournalId
setJournalId($journalId)
Definition: Issue.inc.php:38
Issue\setCoverImageAltText
setCoverImageAltText($coverImageAltText, $locale)
Definition: Issue.inc.php:438
DataObject\setData
setData($key, $value, $locale=null)
Definition: DataObject.inc.php:132
Issue\getDatePublished
getDatePublished()
Definition: Issue.inc.php:152