1<?php 2class ZoteroEntry 3{ 4 const AUTHOR_PLACEHOLDER = "AUTHOR"; 5 const TITLE_PLACEHOLDER = "TITLE"; 6 const DATE_PLACEHOLDER = "DATE"; 7 8 private $zoteroId; 9 private $citeKey; 10 private $title; 11 private $author; 12 private $date; 13 14 public function __construct($zoteroId) 15 { 16 $this->zoteroId = $zoteroId; 17 } 18 19 public function getZoteroId() 20 { 21 return $this->zoteroId; 22 } 23 24 public function setCiteKey($value) 25 { 26 $this->citeKey = $value; 27 } 28 29 public function getCiteKey() 30 { 31 return $this->citeKey; 32 } 33 34 public function setTitle($value) 35 { 36 $this->title = $value; 37 } 38 39 public function getTitle() 40 { 41 return $this->title; 42 } 43 44 public function setAuthor($value) 45 { 46 $this->author = $value; 47 } 48 49 public function getAuthor() 50 { 51 return $this->author; 52 } 53 54 public function setDate($value) 55 { 56 $this->date = $value; 57 } 58 59 public function getDate() 60 { 61 return $this->date; 62 } 63 64 public function getYear() 65 { 66 $year = 0; 67 $matches = array(); 68 if (preg_match("/([0-9]{4})/", $this->getDate(), $matches)) 69 { 70 return $matches[1]; 71 } 72 return $year; 73 } 74 75 public function getShortInfo($format = "") 76 { 77 $date = $this->getYear(); 78 if ($date === 0) 79 { 80 $date = $this->getDate(); 81 } 82 83 if ($format == "") 84 { 85 return $this->getAuthor() . ": " . $this->getTitle() . " (" . $date . ")"; 86 } 87 else 88 { 89 $title = str_replace(self::AUTHOR_PLACEHOLDER, $this->getAuthor(), $format); 90 $title = str_replace(self::TITLE_PLACEHOLDER, $this->getTitle(), $title); 91 $title = str_replace(self::DATE_PLACEHOLDER, $date, $title); 92 return $title; 93 } 94 } 95 96 public function __toString() 97 { 98 return $this->getShortInfo(); 99 } 100 101 public function equals(ZoteroEntry $other) 102 { 103 return $this->getZoteroId() === $other->getZoteroId() 104 && $this->getCiteKey() === $other->getCiteKey() 105 && $this->getAuthor() === $other->getAuthor() 106 && $this->getDate() === $other->getDate() 107 && $this->getTitle() === $other->getTitle(); 108 } 109} 110?>