View source
<?php
define('TAXONOMY_NAME', 'event_calendar_status');
function event_calendar_views_api() {
return array(
'api' => 3.0,
);
}
function event_calendar_menu() {
$items['admin/config/date/manage-events'] = array(
'title' => 'Manage Events',
'description' => 'Find and manage Events.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'event_calendar_content',
),
'access arguments' => array(
'administer event status',
),
'weight' => -10,
'file' => 'event_calendar.list.inc',
);
$items['admin/config/date/event-settings'] = array(
'title' => 'Events Settings',
'description' => 'Configure default behavior of users, including registration requirements, e-mails, fields, and user pictures.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'event_calendar_settings',
),
'access arguments' => array(
'administer nodes',
),
'weight' => -10,
'file' => 'event_calendar.admin.inc',
);
return $items;
}
function event_calendar_permission() {
$perms = array(
'administer event status' => array(
'title' => t('Administer event status'),
'restrict access' => TRUE,
),
);
return $perms;
}
function event_calendar_node_insert($node) {
$all_reciepents = variable_get('event_calendar_email_reciepents_list', array());
$admin_rid = db_query("SELECT rid FROM {role} where name like :id", array(
':id' => 'administrator',
))
->fetchField(0);
$node_type = variable_get('event_calendar_node_type', 'event_calendar');
if ($node->type == $node_type) {
$to = implode(",", _event_calendar_email_reciepents('admin'));
if (!empty($to)) {
$from = (string) variable_get('site_mail', '');
$language = language_default();
$subject = _event_calendar_email_text('admin_subject');
$body = _event_calendar_email_text('admin_body');
$params['subject'] = token_replace($subject, array(
'event_calendar' => $node,
'node' => $node,
));
$params['body'] = token_replace($body, array(
'event_calendar' => $node,
'node' => $node,
));
drupal_mail('event_calendar', 'admin', $to, $language, $params, $from, $send = TRUE);
}
}
}
function event_calendar_node_update($node) {
$node_type = variable_get('event_calendar_node_type', 'event_calendar');
if ($node->type == $node_type) {
$author = user_load($node->uid);
$to = $author->mail;
if (!empty($to)) {
$from = (string) variable_get('site_mail', '');
$language = language_default();
$subject = _event_calendar_email_text('users_subject');
$body = _event_calendar_email_text('users_body');
$params['subject'] = token_replace($subject, array(
'event_calendar' => $node->original,
'node' => $node->original,
));
$params['body'] = token_replace($body, array(
'event_calendar' => $node->original,
'node' => $node->original,
));
drupal_mail('event_calendar', 'users', $to, $language, $params, $from, $send = TRUE);
}
}
}
function event_calendar_mail($key, &$message, $params) {
switch ($key) {
case 'admin':
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];
break;
case 'users':
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];
break;
}
}
function _event_calendar_email_reciepents($key) {
$all_reciepents = variable_get('event_calendar_email_reciepents_list', array());
$admin_rid = db_query("SELECT rid FROM {role} where name like :id", array(
':id' => 'administrator',
))
->fetchField(0);
$to = array();
switch ($key) {
case 'admin':
if (in_array($admin_rid, $all_reciepents)) {
$to = fetch_emails($admin_rid);
}
else {
$to = fetch_first_emails($admin_rid);
}
break;
case 'users':
if (in_array($admin_rid, $all_reciepents)) {
unset($all_reciepents[$admin_rid]);
}
foreach ($all_reciepents as $rid) {
$emails = fetch_emails($rid);
$to = array_merge($to, $emails);
}
break;
}
return $to;
}
function fetch_emails($rid) {
$query = db_select('users', 'u');
$query
->join('users_roles', 'ur', 'u.uid = ur.uid');
$query
->fields('u', array(
'mail',
))
->condition('ur.rid', $rid);
$users = $query
->execute();
$emails = array();
foreach ($users as $user) {
$emails[] = $user->mail;
}
return $emails;
}
function fetch_first_emails($rid) {
$query = db_select('users', 'u');
$query
->join('users_roles', 'ur', 'u.uid = ur.uid');
$query
->fields('u', array(
'mail',
))
->condition('ur.rid', $rid)
->orderBy('u.uid', 'ASC')
->range(0, 1);
$users = $query
->execute();
$emails = array();
foreach ($users as $user) {
$emails[] = $user->mail;
}
return $emails;
}
function _event_calendar_email_text($key) {
if ($admin_setting = variable_get('event_calendar_email_' . $key, FALSE)) {
$text = $admin_setting;
}
else {
switch ($key) {
case 'admin_body':
$text = t("Hello,\n\nA new event [node:title] is created at [site:name].\n\nStart Date: [event_calendar:start_date]\nEnd Date: [event_calendar:end_date]\nPlease give your approval to sucessfully organize this event at [event_calendar:approval_url].\n\n\n-- [site:name] team");
break;
case 'users_body':
$text = t("Hello,\n\nA new event [node:title] is created at [site:name].\n\nStart Date: [event_calendar:start_date]\nEnd Date: [event_calendar:end_date]\nPlease give your approval to sucessfully organize this event at [event_calendar:approval_url].\n\n\n-- [site:name] team");
break;
case 'admin_subject':
$text = t("New Event: [node:title]");
break;
case 'users_subject':
$text = t("New Event: [node:title]");
break;
}
}
return $text;
}
function event_calendar_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
$vid = db_query("SELECT vid FROM {taxonomy_vocabulary} WHERE machine_name = :machine_name", array(
':machine_name' => TAXONOMY_NAME,
))
->fetchField();
$terms = array(
'approved' => 'approved',
'pending' => 'pending',
'denied' => 'denied',
);
if (isset($form['#vocabulary']->vid) && $form['#vocabulary']->vid == $vid) {
if (@$form_state['values']['op'] != 'Delete') {
if (in_array($form['#term']['name'], $terms)) {
$form['name']['#attributes']['readonly'] = 'readonly';
$form['actions']['delete']['#access'] = FALSE;
}
}
}
}
function event_calendar_form_taxonomy_form_vocabulary_alter(&$form, &$form_state, $form_id) {
$vid = db_query("SELECT vid FROM {taxonomy_vocabulary} WHERE machine_name = :machine_name", array(
':machine_name' => TAXONOMY_NAME,
))
->fetchField();
if (isset($form['#vocabulary']->vid) && $form['#vocabulary']->vid == $vid) {
$form['machine_name']['#attributes']['readonly'] = 'readonly';
$form['actions']['delete']['#access'] = FALSE;
}
}
function event_calendar_form_alter(&$form, &$form_state, $form_id) {
$node_type = variable_get('event_calendar_node_type', 'event_calendar');
$id = $node_type . '_node_form';
if ($form_id == $id) {
$language = $form['event_calendar_status']['#language'];
$form['event_calendar_status'][$language]['#type'] = 'value';
}
}
function is_event_expired($node, $key) {
if ($key == 'load') {
$field_lang_code = field_language('node', $node, 'event_calendar_date', LANGUAGE_NONE);
$date1 = isset($node->event_calendar_date[$field_lang_code]['0']['value']) ? $node->event_calendar_date[$field_lang_code]['0']['value'] : NULL;
$date2 = isset($node->event_calendar_date[$field_lang_code]['0']['value2']) ? $node->event_calendar_date[$field_lang_code]['0']['value2'] : NULL;
}
elseif ($key == 'update') {
$dataObj = $node->original;
$field_lang_code = field_language('node', $dataObj, 'event_calendar_date', LANGUAGE_NONE);
$date1 = $node->original->event_calendar_date[$field_lang_code]['0']['value'];
$date2 = $node->original->event_calendar_date[$field_lang_code]['0']['value2'];
}
if (!empty($date2)) {
$event_end_time = $date2;
}
else {
$event_end_time = $date1;
}
$current_time = date("Y-m-d H:i:s");
if ($current_time > $event_end_time) {
return TRUE;
}
else {
return FALSE;
}
}