1: <?php
2: 3: 4: 5: 6: 7:
8: class Kronolith_View_Event
9: {
10: 11: 12: 13:
14: protected $_event;
15:
16: 17: 18:
19: public function __construct(Kronolith_Event $event)
20: {
21: $this->_event = $event;
22: }
23:
24: public function __get($property)
25: {
26: switch ($property) {
27: case 'event':
28: return $this->_event;
29: default:
30: throw new Kronolith_Exception('Property does not exist.');
31: }
32: }
33:
34: public function getTitle()
35: {
36: if (!$this->_event) {
37: return _("Not Found");
38: }
39: if (is_string($this->_event)) {
40: return $this->_event;
41: }
42: return $this->_event->getTitle();
43: }
44:
45: public function link()
46: {
47: return $this->_event->getViewUrl();
48: }
49:
50: public function html($active = true)
51: {
52: if (!$this->_event) {
53: echo '<h3>' . _("Event not found") . '</h3>';
54: exit;
55: }
56: if (is_string($this->_event)) {
57: echo '<h3>' . $this->_event . '</h3>';
58: exit;
59: }
60:
61: global $conf, $prefs;
62:
63: $createdby = '';
64: $modifiedby = '';
65: $userId = $GLOBALS['registry']->getAuth();
66: if ($this->_event->uid) {
67:
68: try {
69: $log = $GLOBALS['injector']->getInstance('Horde_History')
70: ->getHistory('kronolith:' . $this->_event->calendar . ':' . $this->_event->uid);
71: foreach ($log as $entry) {
72: switch ($entry['action']) {
73: case 'add':
74: $created = new Horde_Date($entry['ts']);
75: if ($userId != $entry['who']) {
76: $createdby = sprintf(_("by %s"), Kronolith::getUserName($entry['who']));
77: } else {
78: $createdby = _("by me");
79: }
80: break;
81:
82: case 'modify':
83: $modified = new Horde_Date($entry['ts']);
84: if ($userId != $entry['who']) {
85: $modifiedby = sprintf(_("by %s"), Kronolith::getUserName($entry['who']));
86: } else {
87: $modifiedby = _("by me");
88: }
89: break;
90: }
91: }
92: } catch (Exception $e) {}
93: }
94:
95: $creatorId = $this->_event->creator;
96: $description = $this->_event->description;
97: $location = $this->_event->location;
98: $eventurl = $this->_event->url;
99: $private = $this->_event->isPrivate();
100: $owner = Kronolith::getUserName($creatorId);
101: $status = Kronolith::statusToString($this->_event->status);
102: $attendees = $this->_event->attendees;
103: $resources = $this->_event->getResources();
104: if ($datetime = Horde_Util::getFormData('datetime')) {
105: $datetime = new Horde_Date($datetime);
106: $month = $datetime->month;
107: $year = $datetime->year;
108: } else {
109: $month = (int)Horde_Util::getFormData('month', date('n'));
110: $year = (int)Horde_Util::getFormData('year', date('Y'));
111: }
112:
113: $dateFormat = $prefs->getValue('date_format');
114: $timeFormat = $prefs->getValue('twentyFour') ? 'G:i' : 'g:ia';
115:
116:
117: $tags = implode(', ', $this->_event->tags);
118:
119:
120: echo '<div id="Event"' . ($active ? '' : ' style="display:none"') . '>';
121: require KRONOLITH_TEMPLATES . '/view/view.inc';
122: echo '</div>';
123:
124: if ($active && $GLOBALS['browser']->hasFeature('dom')) {
125: 126:
127: if ($this->_event->hasPermission(Horde_Perms::READ) &&
128: Kronolith::getDefaultCalendar(Horde_Perms::EDIT)) {
129: $edit = new Kronolith_View_EditEvent($this->_event);
130: $edit->html(false);
131: }
132: if ($this->_event->hasPermission(Horde_Perms::DELETE)) {
133: $delete = new Kronolith_View_DeleteEvent($this->_event);
134: $delete->html(false);
135: }
136: }
137: }
138:
139: public function getName()
140: {
141: return 'Event';
142: }
143:
144: }
145: