/[drupal]/contributions/modules/event/event_database.mysql.inc
ViewVC logotype

Contents of /contributions/modules/event/event_database.mysql.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.15 - (show annotations) (download) (as text)
Mon Jun 30 22:34:46 2008 UTC (16 months, 3 weeks ago) by killes
Branch: MAIN
CVS Tags: HEAD
Changes since 1.14: +10 -6 lines
File MIME type: text/x-php
fix notices for anon users
1 <?php
2 // $Id: event_database.mysql.inc,v 1.14 2008/04/08 09:09:55 killes Exp $
3
4 /**
5 * @param $nid node ID
6 *
7 * @return event object
8 */
9 function event_get_event_load($nid) {
10 global $user;
11 $shift = variable_get('date_default_timezone', 0);
12
13 return db_fetch_object(db_query('SELECT e.event_start, e.event_end, e.timezone, e.has_time, e.has_end_date, tz.offset AS offset, tz.offset_dst AS offset_dst, tz.dst_region, tz.is_dst, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_start_utc, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_end_utc, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_user, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_user, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_site, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_site, tz.name as timezone_name FROM {event} e INNER JOIN {event_timezones} tz ON tz.timezone = e.timezone WHERE nid = %d', (isset($user->timezone) ? $user->timezone : 0), (isset($user->timezone) ? $user->timezone : 0), $shift, $shift, $nid));
14 }
15
16 /**
17 * @param $first start date
18 * @param $last end date
19 * @param Whether to order the result set on the starting date.
20 * Valid values: FALSE, 'DESC', 'ASC'
21 * @param $rewrite_parameter optional array that is merged into the
22 * fourth argument of db_rewrite_sql.
23 *
24 * @return database resource
25 */
26 function event_get_events_user($first, $last, $order, $rewrite_parameter = array()) {
27 global $user;
28 $shift = variable_get('date_default_timezone', 0);
29 $before_first = event_implode_date(event_date_later(event_explode_date($first), -1));
30 $after_last = event_implode_date(event_date_later(event_explode_date($last), 1));
31
32 $query = "SELECT n.nid, n.uid, n.title, n.type, e.event_start AS event_start_orig, e.event_end AS event_end_orig, e.timezone, e.has_time, e.has_end_date, tz.offset AS offset, tz.offset_dst AS offset_dst, tz.dst_region, tz.is_dst, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_start_utc, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_end_utc, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_user, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_user, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_site, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_site, tz.name as timezone_name FROM {node} n INNER JOIN {event} e ON n.nid = e.nid INNER JOIN {event_timezones} tz ON tz.timezone = e.timezone WHERE n.status = 1 AND ((e.event_start >= '%s' AND e.event_start <= '%s') OR (e.event_end >= '%s' AND e.event_end <= '%s') OR (e.event_start <= '%s' AND e.event_end >= '%s')) GROUP BY n.nid HAVING (event_start >= '%s' AND event_start <= '%s') OR (event_end >= '%s' AND event_end <= '%s') OR (event_start <= '%s' AND event_end >= '%s')";
33
34 switch ($order) {
35 case 'DESC':
36 $query .= " ORDER BY event_start DESC";
37 break;
38 case 'ASC':
39 $query .= " ORDER BY event_start ASC";
40 break;
41 }
42
43 $timezone = (isset($user->timezone) ? $user->timezone : 0);
44 return db_query(db_rewrite_sql($query, 'n', 'nid', array_merge(array('event' => TRUE, 'event_get_events' => TRUE, 'event_get_events_user' => TRUE), $rewrite_parameter)), $timezone, $timezone, $timezone, $timezone, $shift, $shift, $before_first, $after_last, $before_first, $after_last, $before_first, $after_last, $first, $last, $first, $last, $first, $last);
45 }
46
47 /**
48 * @param $first start date
49 * @param $last end date
50 * @param Whether to order the result set on the starting date.
51 * Valid values: FALSE, 'DESC', 'ASC'
52 * @param $rewrite_parameter optional array that is merged into the
53 * fourth argument of db_rewrite_sql.
54 *
55 * @return database resource
56 */
57 function event_get_events_site($first, $last, $order, $rewrite_parameter = array()) {
58 $shift = variable_get('date_default_timezone', 0);
59 $before_first = event_implode_date(event_date_later(event_explode_date($first), -1));
60 $after_last = event_implode_date(event_date_later(event_explode_date($last), 1));
61
62 $query = "SELECT n.nid, n.uid, n.title, n.type, e.event_start AS event_start_orig, e.event_end AS event_end_orig, e.timezone, e.has_time, e.has_end_date, tz.offset AS offset, tz.offset_dst AS offset_dst, tz.dst_region, tz.is_dst, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_start_utc, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_end_utc, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_user, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_user, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_site, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_site, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end, tz.name as timezone_name FROM {node} n INNER JOIN {event} e ON n.nid = e.nid INNER JOIN {event_timezones} tz ON tz.timezone = e.timezone WHERE n.status = 1 AND ((e.event_start >= '%s' AND e.event_start <= '%s') OR (e.event_end >= '%s' AND e.event_end <= '%s') OR (e.event_start <= '%s' AND e.event_end >= '%s')) GROUP BY n.nid HAVING (event_start >= '%s' AND event_start <= '%s') OR (event_end >= '%s' AND event_end <= '%s') OR (event_start <= '%s' AND event_end >= '%s')";
63
64 switch ($order) {
65 case 'DESC':
66 $query .= " ORDER BY event_start DESC";
67 break;
68 case 'ASC':
69 $query .= " ORDER BY event_start ASC";
70 break;
71 }
72
73 $timezone = (isset($user->timezone) ? $user->timezone : 0);
74 return db_query(db_rewrite_sql($query, 'n', 'nid', array_merge(array('event' => TRUE, 'event_get_events' => TRUE, 'event_get_events_site' => TRUE), $rewrite_parameter)), $timezone, $timezone, $shift, $shift, $shift, $shift, $before_first, $after_last, $before_first, $after_last, $before_first, $after_last, $first, $last, $first, $last, $first, $last);
75 }
76
77 /**
78 * @param $first start date
79 * @param $last end date
80 * @param Whether to order the result set on the starting date.
81 * Valid values: FALSE, 'DESC', 'ASC'
82 * @param $rewrite_parameter optional array that is merged into the
83 * fourth argument of db_rewrite_sql.
84 *
85 * @return database resource
86 */
87 function event_get_events_event($first, $last, $order, $rewrite_parameter = array()) {
88 global $user;
89 $shift = variable_get('date_default_timezone', 0);
90 $before_first = event_implode_date(event_date_later(event_explode_date($first), -1));
91 $after_last = event_implode_date(event_date_later(event_explode_date($last), 1));
92
93 $query = "SELECT n.nid, n.uid, n.title, n.type, e.event_start, e.event_start AS event_start_orig, e.event_end, e.event_end AS event_end_orig, e.timezone, e.has_time, e.has_end_date, tz.offset AS offset, tz.offset_dst AS offset_dst, tz.dst_region, tz.is_dst, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_start_utc, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND AS event_end_utc, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_user, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_user, e.event_start - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_start_site, e.event_end - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND AS event_end_site, tz.name as timezone_name FROM {node} n INNER JOIN {event} e ON n.nid = e.nid INNER JOIN {event_timezones} tz ON tz.timezone = e.timezone WHERE n.status = 1 AND ((e.event_start >= '%s' AND e.event_start <= '%s') OR (e.event_end >= '%s' AND e.event_end <= '%s') OR (e.event_start <= '%s' AND e.event_end >= '%s')) GROUP BY n.nid HAVING (event_start >= '%s' AND event_start <= '%s') OR (event_end >= '%s' AND event_end <= '%s') OR (event_start <= '%s' AND event_end >= '%s')";
94
95 switch ($order) {
96 case 'DESC':
97 $query .= " ORDER BY event_start DESC";
98 break;
99 case 'ASC':
100 $query .= " ORDER BY event_start ASC";
101 break;
102 }
103
104 $timezone = (isset($user->timezone) ? $user->timezone : 0);
105 return db_query(db_rewrite_sql($query, 'n', 'nid', array_merge(array('event' => TRUE, 'event_get_events' => TRUE, 'event_get_events_event' => TRUE), $rewrite_parameter)), $timezone, $timezone, $shift, $shift, $before_first, $after_last, $before_first, $after_last, $before_first, $after_last, $first, $last, $first, $last, $first, $last);
106 }
107
108 /**
109 * @param $time current date
110 * @param $limit number of returned events
111 * @param $types The node types to get. If none given, all
112 * event-enabled types will be retrieved that are configured to show
113 * up in all calendars.
114 * @param $rewrite_parameter optional array that is merged into the
115 * fourth argument of db_rewrite_sql.
116 *
117 * @return database resource
118 */
119 function event_get_events_upcoming($time, $types, $limit, $rewrite_parameter = array()) {
120 $placeholders = implode(',', array_fill(0, count($types), "'%s'"));
121 $query = "SELECT n.nid, n.uid, n.title, n.type, n.status, n.changed, e.event_start, e.event_end, e.timezone, e.has_time, e.has_end_date, TIMEDIFF(e.event_start, '%s') AS time_left, DATEDIFF(e.event_start, '%s') AS days_left FROM {node} n INNER JOIN {event} e ON n.nid = e.nid WHERE n.status = 1 AND (((e.event_start <> e.event_end) AND ('%s' >= e.event_start AND '%s' < e.event_end)) OR ((e.event_start = e.event_end) AND ('%s' <= e.event_start + INTERVAL %d SECOND)) OR e.event_start >= '%s') AND n.type IN ($placeholders) ORDER BY event_start";
122 return db_query_range(db_rewrite_sql($query, 'n', 'nid', array_merge(array('event' => TRUE, 'event_get_events' => TRUE, 'event_get_events_upcoming' => TRUE, 'event_types' => $types), $rewrite_parameter)), array_merge(array($time, $time, $time, $time, $time, (60 * 60 * 2), $time), $types), 0, $limit);
123 }
124
125 /**
126 * @see event_where
127 * @ingroup event_support
128 * @param $type either 'start' or 'end'
129 */
130 function event_where_user($type = 'start') {
131 global $user;
132
133 switch ($type) {
134 case 'end':
135 case 'start':
136 $timezone = (isset($user->timezone) ? $user->timezone : 0);
137 return str_replace('%d', (int) $timezone, "(e.event_$type - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND)");
138 }
139 }
140
141 /**
142 * @see event_where
143 * @ingroup event_support
144 * @param $type either 'start' or 'end'
145 */
146 function event_where_utc($type = 'start') {
147 global $user;
148
149 switch ($type) {
150 case 'end':
151 case 'start':
152 return "(e.event_$type - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND)";
153 }
154 }
155
156 /**
157 * @see event_where
158 * @ingroup event_support
159 * @param $type either 'start' or 'end'
160 */
161 function event_where_site($type = 'start') {
162 switch ($type) {
163 case 'end':
164 case 'start':
165 return str_replace('%d', (int) variable_get('date_default_timezone', 0), "(e.event_$type - INTERVAL IF(tz.is_dst, tz.offset_dst, tz.offset) HOUR_SECOND + INTERVAL %d SECOND)");
166 }
167 }
168
169 /**
170 * @see event_where
171 * @ingroup event_support
172 * @param $type either 'start' or 'end'
173 */
174 function event_where_event($type = 'start') {
175 global $user;
176
177 switch ($type) {
178 case 'end':
179 case 'start':
180 return "e.event_$type";
181 }
182 }

  ViewVC Help
Powered by ViewVC 1.1.2