/[drupal]/contributions/modules/signup/includes/event.6x-2.inc
ViewVC logotype

Contents of /contributions/modules/signup/includes/event.6x-2.inc

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


Revision 1.3 - (show annotations) (download) (as text)
Fri Jan 9 03:49:50 2009 UTC (10 months, 2 weeks ago) by dww
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +3 -3 lines
File MIME type: text/x-php
#350548 by dww: Fixed logic bug in the support for Event module which
would close signups prematurely if you edited event nodes in the future.
1 <?php
2 // $Id: event.6x-2.inc,v 1.2 2008/11/25 17:54:05 dww Exp $
3
4
5 /**
6 *
7 * @return Array of SQL clauses for cron reminder email query builder.
8 */
9 function _signup_event_reminder_sql($content_type) {
10 global $db_type;
11 event_include_files();
12 switch ($db_type) {
13 case 'mysql':
14 case 'mysqli':
15 $where = array(
16 "('". gmdate('Y-m-d H:i:s') ."' > (". event_where_utc() ." - INTERVAL s.reminder_days_before DAY))",
17 "('". gmdate('Y-m-d H:i:s') ."' <= (". event_where_utc() ."))",
18 );
19 break;
20
21 case 'pgsql':
22 $where = array(
23 "('". gmdate('Y-m-d H:i:s') ."' > (". event_where_utc() ." - INTERVAL 's.reminder_days_before days'))",
24 "('". gmdate('Y-m-d H:i:s') ."' <= (". event_where_utc() ."))",
25 );
26 break;
27 }
28 return array(
29 'fields' => array(event_select(), 'e.timezone'),
30 'joins' => array(event_join()),
31 'where' => $where,
32 );
33 }
34
35 /**
36 *
37 * @return Array of SQL clauses for cron auto-close query builder.
38 */
39 function _signup_event_autoclose_sql($content_type) {
40 event_include_files();
41 return array(
42 'fields' => array(event_select(), 'e.timezone'),
43 'joins' => array(event_join('s')),
44 'where' => array(event_where_utc() ." < '". gmdate('Y-m-d H:i:s', time() + (variable_get('signup_close_early', 1) * 3600)) ."'"),
45 );
46 }
47
48 /**
49 *
50 * @return Array of SQL clauses for admin overview page query builder.
51 */
52 function _signup_event_admin_sql($content_type = NULL) {
53 // Since all event node types store their event data in the same table, we
54 // need to make sure we only JOIN on this table once. It doesn't matter
55 // which node type we use to add this JOIN.
56 static $did_event_join = FALSE;
57 if ($did_event_join) {
58 return array();
59 }
60 $did_event_join = TRUE;
61 return array(
62 'fields' => array(event_select(), 'e.timezone'),
63 'group_by' => array('event_start', 'e.timezone'),
64 'joins' => array(event_join('n', 'LEFT')),
65 );
66 }
67
68 /**
69 * Returns true if the given node is event-enabled, and the start time
70 * has already passed the "Close x hours before" setting.
71 */
72 function _signup_event_node_completed($node) {
73 if (isset($node->event)) {
74 $closing_time = gmdate('Y-m-d H:i:s', time() + (variable_get('signup_close_early', 1) * 3600));
75 if (event_is_later($closing_time, $node->event['start_utc'], 'string')) {
76 return TRUE;
77 }
78 }
79 return FALSE;
80 }
81
82 function _signup_event_format_date($node) {
83 $event_date = array();
84 if (!empty($node->event['start'])) {
85 $event_date = event_explode_date($node->event['start']);
86 }
87 elseif (!empty($node->event_start)) {
88 $event_date = event_explode_date($node->event_start);
89 }
90 return !empty($event_date) ? event_format_date($event_date, variable_get('signup_date_format', 'medium')) : t('[Untimed]');
91 }
92
93 /**
94 * Determine if the given node has a start time managed by the event.module.
95 *
96 * @param $node
97 * Fully loaded node object to test.
98 *
99 * @return
100 * 'event' if this is an event node, otherwise 'none'.
101 *
102 * @see _signup_get_node_scheduler()
103 */
104 function _signup_event_get_node_scheduler($node) {
105 if (isset($node->event) && isset($node->event['start'])) {
106 return 'event';
107 }
108 return isset($node->event_start) ? 'event' : 'none';
109 }
110

  ViewVC Help
Powered by ViewVC 1.1.2