/*
* 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('Debug For _events_date
');
//print('Timestamp: '.$timestamp.'
');
//print('Formatted: '.date('Y-n-j h-i', $timestamp).'
');
$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 .= "";
}
for($m=1;$m<=12;$m++)
{
$month .= "";
}
for($d=1;$d<=31;$d++)
{
$day .= "";
}
for($h=0;$h<24;$h++)
{
$hour .= "";
}
for($min=0;$min<60;$min++)
{
$temp_min = date('i', mktime(0,$min,0,1,date('m'),date('Y')));
$minute .= "";
}
//Create The Select Boxes
$html = 'Date: ';
$html .= " ";
$html .= " ";
$html .= " ";
$html .= '
Time: ';
$html .= " ";
$html .= " ";
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 .= '
Meeting Type: '.ucfirst($event['type']).'
'; $content .= 'Start Date: '.date('jS F Y h:ia', $event['start_date']).'
'; $content .= 'Finish Date: '.date('jS F Y h:ia', $event['finish_date']).'
'; $content .= 'Location: '.$event['location'].'
'; $content .= 'Web Link: '.$event['web_link'].'
'; $content .= 'Description: '.$event['details'].'
'; $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 .= "'.$select.$where.'
'); $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("".$event['title']."", 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'); }