]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Event/eventlistitem.php
Localisation updates from http://translatewiki.net.
[quix0rs-gnu-social.git] / plugins / Event / eventlistitem.php
1 <?php
2 /**
3  * StatusNet - the distributed open-source microblogging tool
4  * Copyright (C) 2011, StatusNet, Inc.
5  *
6  * Notice-list representation of an event
7  *
8  * PHP version 5
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Affero General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Affero General Public License for more details.
19  *
20  * You should have received a copy of the GNU Affero General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  *
23  * @category  Event
24  * @package   StatusNet
25  * @author    Evan Prodromou <evan@status.net>
26  * @copyright 2011 StatusNet, Inc.
27  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
28  * @link      http://status.net/
29  */
30
31 if (!defined('STATUSNET')) {
32     // This check helps protect against security problems;
33     // your code file can't be executed directly from the web.
34     exit(1);
35 }
36
37 /**
38  * Notice-list representation of an event
39  *
40  * @category  General
41  * @package   StatusNet
42  * @author    Evan Prodromou <evan@status.net>
43  * @copyright 2011 StatusNet, Inc.
44  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
45  * @link      http://status.net/
46  */
47 class EventListItem extends NoticeListItemAdapter
48 {
49     function showNotice()
50     {
51         $this->nli->out->elementStart('div', 'entry-title');
52         $this->nli->showAuthor();
53         $this->showContent();
54         $this->nli->out->elementEnd('div');
55     }
56
57     function showContent()
58     {
59         $notice = $this->nli->notice;
60         $out    = $this->nli->out;
61
62         $profile = $notice->getProfile();
63         $event   = Happening::fromNotice($notice);
64
65         if (empty($event)) {
66             // TRANS: Content for a deleted RSVP list item (RSVP stands for "please respond").
67             $out->element('p', null, _m('Deleted.'));
68             return;
69         }
70
71         $out->elementStart('div', 'vevent event'); // VEVENT IN
72
73         $out->elementStart('h3');  // VEVENT/H3 IN
74
75         if (!empty($event->url)) {
76             $out->element('a',
77                           array('href' => $event->url,
78                                 'class' => 'event-title entry-title summary'),
79                           $event->title);
80         } else {
81             $out->text($event->title);
82         }
83
84         $out->elementEnd('h3'); // VEVENT/H3 OUT
85
86         $startDate = strftime("%x", strtotime($event->start_time));
87         $startTime = strftime("%R", strtotime($event->start_time));
88
89         $endDate = strftime("%x", strtotime($event->end_time));
90         $endTime = strftime("%R", strtotime($event->end_time));
91
92         // FIXME: better dates
93
94         $out->elementStart('div', 'event-times'); // VEVENT/EVENT-TIMES IN
95
96         // TRANS: Field label for event description.
97         $out->element('strong', null, _m('Time:'));
98
99         $out->element('abbr', array('class' => 'dtstart',
100                                     'title' => common_date_iso8601($event->start_time)),
101                       $startDate . ' ' . $startTime);
102         $out->text(' - ');
103         if ($startDate == $endDate) {
104             $out->element('span', array('class' => 'dtend',
105                                         'title' => common_date_iso8601($event->end_time)),
106                           $endTime);
107         } else {
108             $out->element('span', array('class' => 'dtend',
109                                         'title' => common_date_iso8601($event->end_time)),
110                           $endDate . ' ' . $endTime);
111         }
112
113         $out->elementEnd('div'); // VEVENT/EVENT-TIMES OUT
114
115         if (!empty($event->location)) {
116             $out->elementStart('div', 'event-location');
117             // TRANS: Field label for event description.
118             $out->element('strong', null, _m('Location:'));
119             $out->element('span', 'location', $event->location);
120             $out->elementEnd('div');
121         }
122
123         if (!empty($event->description)) {
124             $out->elementStart('div', 'event-description');
125             // TRANS: Field label for event description.
126             $out->element('strong', null, _m('Description:'));
127             $out->element('span', 'description', $event->description);
128             $out->elementEnd('div');
129         }
130
131         $rsvps = $event->getRSVPs();
132
133         $out->elementStart('div', 'event-rsvps');
134         // TRANS: Field label for event description.
135         $out->element('strong', null, _m('Attending:'));
136         $out->element('span', 'event-rsvps',
137                       // TRANS: RSVP counts.
138                       // TRANS: %1$d, %2$d and %3$d are numbers of RSVPs.
139                       sprintf(_m('Yes: %1$d No: %2$d Maybe: %3$d'),
140                               count($rsvps[RSVP::POSITIVE]),
141                               count($rsvps[RSVP::NEGATIVE]),
142                               count($rsvps[RSVP::POSSIBLE])));
143         $out->elementEnd('div');
144
145         $user = common_current_user();
146
147         if (!empty($user)) {
148             $rsvp = $event->getRSVP($user->getProfile());
149
150             if (empty($rsvp)) {
151                 $form = new RSVPForm($event, $out);
152             } else {
153                 $form = new CancelRSVPForm($rsvp, $out);
154             }
155
156             $form->show();
157         }
158
159         $out->elementEnd('div'); // vevent out
160     }
161 }