rendered paste body /* * vim: syn=php * vim: background=dark */ //require_once('lib/classes/events.class.php'); require_once("lib/classes/calendar.class.php"); function events_node_name($node) { return t('Events'); } function events_help($section = "admin/help#comment") { switch ($section) { case 'admin/modules#description': return t('Events Node Module'); } } function events_menu() { $items = array(); if(arg(0) == 'events') { $items[] = array('path' => 'events', 'title' => t('Events'), 'callback' => 'events_page', 'access' => true, 'weight' => -10, 'type' => MENU_CALLBACK); } if(arg(0) == 'events' AND is_numeric(arg(1))) { $node = node_load(array('nid' => arg(1))); if ($node->nid) { $items[] = array('path' => 'events/'.arg(1), 'title' => t($node->title), 'callback' => 'events_page', 'access' => true, 'weight' => -10, 'type' => MENU_CALLBACK); $items[] = array('path' => 'events/'.arg(1).'/view', 'title' => t($node->title), 'callback' => 'events_page', 'access' => true, 'weight' => -9, 'type' => MENU_DEFAULT_LOCAL_TASK); $items[] = array('path' => 'events/'.arg(1).'/edit', 'title' => t('Edit '.$node->title), 'callback' => 'events_page', 'access' => true, 'weight' => -8, 'type' => MENU_LOCAL_TASK); } } return $items; } function events_perm() { return array('events content', 'administer events'); } function events_page() { $switch = arg(1); if(isset($_POST['edit'])) $edit = $_POST['edit']; if(isset($_POST['op'])) $switch = $_POST['op']; if(isset($_POST['edit']['op'])) $switch = $_POST['edit']['op']; switch($switch) { case '': events_eventlist(); break; case 'add': break; case 'Delete': print theme('events', node_delete($edit)); case 'Submit': if($nid = node_submit($edit)) { drupal_goto('events/'.$nid); } else { drupal_goto(); } break; default: switch(arg(2)) { case 'edit': if($nid = node_submit($edit)) { print theme('events', node_edit(arg(1))); } else { drupal_goto('events'); } break; case 'delete': events_delete(arg(1)); break; default: print theme('events', events_show()); } } } function theme_events($output) { return theme('page', $output); } function events_show() { $node = node_load(array('nid' => arg(1))); if ($node->nid) { drupal_set_title(check_plain($node->title)); return node_show($node, ''); } else { return false; } } function events_form_show($output, $show_section = false) { //set title if(is_numeric(arg(1))) { $node = node_load(array('nid' => arg(1))); if($node->nid) { $node->section_id = arg(3); drupal_set_title(check_plain($node->title)); } //end if } return $output; } function events_access($op, $node) { return TRUE; if($op == 'view') { if (user_access('events content')) return TRUE; } } function events_form(&$node) { $output = ''; if (function_exists('taxonomy_node_form')) { $output .= implode('', taxonomy_node_form('events', $node)); } /* All in one Events Page Fields: Title Event Type (Event/Conferenace/Other) Details Email Address Web Link Location Start Finish */ if(!empty($node->nid)) { //Load The Node In $sql = "SELECT *, unix_timestamp(start_date) as start_date, unix_timestamp(finish_date) as finish_date ". "FROM {events} ". "WHERE nid = '".$node->nid."'"; $sqlResult = db_query($sql); while($event_result = db_fetch_assoc($sqlResult)) { $event = $event_result; } } $event_types = array('event' => 'Event', 'conference' => 'Conference'); $output .= form_select(t('Event type'), 'event_type', $event['event_type'], $event_types, '', 0, '', ''); $output .= form_textarea(t('Details'), 'details', $event['details'], 100, 25, '', '', ''); $output .= form_textfield(t('Email Address'), 'email_address', $event['email_address'], 25, 255, '', '', ''); $output .= form_textfield(t('Web Link'), 'web_link', $event['web_link'], 25, 255, '', '', ''); $output .= form_textfield(t('Location'), 'location', $event['location'], 25, 255, '', '', ''); //Create The Two date/time fields $output .= form_item(t('Start Date'), _events_date('start_date', $event['start_date']), '', '', ''); $output .= form_item(t('End Date'), _events_date('finish_date', $event['finish_date']), '', '', ''); return $output; } function _events_date($name = '', $timestamp = '') { //Debug //print('<strong>Debug For _events_date</strong><br />'); //print('<strong>Timestamp:</strong> '.$timestamp.'<br />'); //print('<strong>Formatted:</strong> '.date('Y-n-j h-i', $timestamp).'<br />'); $year = ''; $month = ''; $day = ''; $hour = ''; $minute = ''; //Selected Values $year_selected = (!empty($timestamp) ? date('Y', $timestamp) : date('Y')); $month_selected = (!empty($timestamp) ? date('n', $timestamp) : date('n')); $day_selected = (!empty($timestamp) ? date('j', $timestamp) : date('j')); $hour_selected = (!empty($timestamp) ? date('H', $timestamp) : date('H')); $minute_selected = (!empty($timestamp) ? date('i', $timestamp) : date('i')); //$year_selected = (!empty($timestamp) ? date('Y', $timestamp) : date('Y')); for($y=date('Y')-10;$y<=date('Y')+10;$y++) { $year .= "<option value='$y' ".($y == $year_selected ? 'selected="selected"' : '').">$y</option>"; } for($m=1;$m<=12;$m++) { $month .= "<option value='$m' ".($m == $month_selected ? 'selected="selected"' : '').">".date('F', mktime(0,0,0,$m,1,date('Y')))."</option>"; } for($d=1;$d<=31;$d++) { $day .= "<option value='$d' ".($d == $day_selected ? 'selected="selected"' : '').">$d</option>"; } for($h=0;$h<24;$h++) { $hour .= "<option value='".date('H', mktime($h,0,0,1,date('m'),date('Y')))."' ".($h == $hour_selected ? 'selected="selected"' : '').">".date('H', mktime($h,0,0,1,date('m'),date('Y')))."</option>"; } for($min=0;$min<60;$min++) { $temp_min = date('i', mktime(0,$min,0,1,date('m'),date('Y'))); $minute .= "<option value='$min' ".($temp_min == $minute_selected ? 'selected="selected"' : '').">$temp_min</option>"; } //Create The Select Boxes $html = 'Date: '; $html .= "<select name='".$name."[day]' id='edit-".$name."-day'>".$day."</select> "; $html .= "<select name='".$name."[month]' id='edit-".$name."-month'>".$month."</select> "; $html .= "<select name='".$name."[year]' id='edit-".$name."-year'>".$year."</select> "; $html .= '<br />Time: '; $html .= "<select name='".$name."[hour]' id='edit-".$name."-hour'>".$hour."</select> "; $html .= "<select name='".$name."[minute]' id='edit-".$name."-minute'>".$minute."</select> "; return $html; } function events_insert($node) { //Construct Timestamps $start = $_POST['start_date']; $start_timestamp = date('Y-m-d H:i:s', mktime($start['hour'], $start['minute'], 0, $start['month'], $start['day'], $start['year'])); $finish = $_POST['finish_date']; $finish_timestamp = date('Y-m-d H:i:s', mktime($finish['hour'], $finish['mintue'], 0, $finish['month'], $finish['day'], $finish['year'])); $query = db_query("INSERT INTO {events} ". "(nid, title, event_type, details, email_address, web_link, location, start_date, finish_date) ". "VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ", $node->nid, $node->title, $node->event_type, $node->details, $node->email_address, $node->web_link, $node->location, $start_timestamp, $finish_timestamp); drupal_goto('events'); } function events_update($node) { //Construct Timestamps $start = $_POST['start_date']; $start_timestamp = date('Y-m-d H:i:s', mktime($start['hour'], $start['minute'], 0, $start['month'], $start['day'], $start['year'])); $finish = $_POST['finish_date']; $finish_timestamp = date('Y-m-d H:i:s', mktime($finish['hour'], $finish['mintue'], 0, $finish['month'], $finish['day'], $finish['year'])); $query = db_query("UPDATE {events} SET ". "title = '%s', event_type = '%s', details = '%s', email_address ='%s', web_link = '%s', location = '%s', start_date = '%s', finish_date = '%s' ". "WHERE nid = %d", $node->title, $node->event_type, $node->details, $node->email_address, $node->web_link, $node->location, $start_timestamp, $finish_timestamp, $node->nid); } function events_view(&$node, $teaser = FALSE, $page = FALSE) { $content = ''; $result = db_query("SELECT *, unix_timestamp(start_date) as start_date, unix_timestamp(finish_date) as finish_date ". "FROM {events} WHERE nid = '".$node->nid."'"); while($events = mysql_fetch_assoc($result)) { $event = $events; } $content .= '<p><strong>Meeting Type:</strong> '.ucfirst($event['type']).'</p>'; $content .= '<p><strong>Start Date:</strong> '.date('jS F Y h:ia', $event['start_date']).'</p>'; $content .= '<p><strong>Finish Date:</strong> '.date('jS F Y h:ia', $event['finish_date']).'</p>'; $content .= '<p><strong>Location:</strong> '.$event['location'].'</p>'; $content .= '<p><strong>Web Link:</strong> '.$event['web_link'].'</p>'; $content .= '<p><strong>Description:</strong> '.$event['details'].'</p>'; $node->body .= $content; } function events_eventlist() { $content = ''; //Event Listing Page With Snap calendar $Calendar = new Calendar($_GET); $Calendar->base_url = "/events/"; //Get events To Feed Into Calendar $result = db_query("SELECT nid, title, unix_timestamp(start_date) as date ". "FROM {events} "); while($event = mysql_fetch_assoc($result)) { $calendar_events[$event['nid']] = $event; $calendar_events[$event['nid']]['date'] = date('Y-n-d', $event['date']); } $Calendar->setItems($calendar_events); $content .= "<div id='ymcacalendar'>".$Calendar->returnCalendar()."</div>"; //Get Events $select = "SELECT *, unix_timestamp(start_date) as start_date, unix_timestamp(finish_date) as finish_date ". "FROM {events} "; //Construct Wehre Statement if(isset($_GET['day']) AND isset($_GET['month']) AND isset($_GET['year'])) { $where = "WHERE start_date between '".$_GET['year']."-".$_GET['month']."-".$_GET['day']." 00:00:00' and '".$_GET['year']."-".$_GET['month']."-".($_GET['day'] + 1)." 00:00:00'"; } elseif(isset($_GET['month']) AND isset($_GET['year'])) { $where = "WHERE start_date between '".$_GET['year']."-".$_GET['month']."-1' and '".$_GET['year']."-".$_GET['month']."-31'"; } else { $where = "WHERE start_date between '".date('Y-m')."-1' and '".date('Y-m')."-31' "; } //print('<p>'.$select.$where.'</p>'); $result = db_query($select.$where); while($event = mysql_fetch_assoc($result)) { $events[$event['nid']] = $event; } $header = array('Event Name', 'Start Date', 'Finish Date', 'Event Type', 'Testing'); foreach($events as $event) { $node = node_load(array('nid' => $event['nid'])); if ($node->nid) { $load = 'true'; } else { $load = 'false'; } $rows[] = array("<a href='/events/".$event['nid']."'>".$event['title']."</a>", date('d-m-Y', $event['start_date']), date('d-m-Y', $event['finish_date']), ucfirst($event['type']), $load); } $content .= theme('table', $header, $rows, array('cellpadding' => '2', 'cellspacing' => '2', 'width' => '90%')); print theme('page', $content); } function events_delete(&$node) { db_query('DELETE FROM {events} WHERE nid = %d', $node->nid); db_query('DELETE FROM {node} WHERE nid = %d', $node->nid); drupal_goto('events'); }