View source
<?php
function casetracker_notifications_menu() {
$items['user/%user/notifications/casetracker'] = array(
'type' => MENU_LOCAL_TASK,
'access callback' => FALSE,
'title' => 'Case Tracker',
'page callback' => 'notifications_user_subscription_list_page',
'page arguments' => array(
'casetracker_project',
1,
),
'weight' => 10,
);
return $items;
}
function casetracker_notifications_permission() {
return array(
'subscribe to cases' => array(
'title' => t('Administer CaseTracker'),
'description' => t('Perform administration tasks for CaseTracker.'),
),
);
}
function casetracker_notifications_notifications($op) {
switch ($op) {
case 'subscription types':
$types['casetracker_assigned'] = array(
'event_type' => 'node',
'object_type' => 'node',
'title' => t('Cases assigned'),
'access' => 'subscribe to cases',
'fields' => array(
'casetracker_assign',
),
'description' => t('Subscribe to all cases assigned to a user.'),
);
$types['casetracker_project'] = array(
'event_type' => 'node',
'object_type' => 'node',
'title' => t('Project cases'),
'access' => 'subscribe to cases',
'page callback' => 'casetracker_notifications_projects_page',
'user page' => 'user/%user/notifications/casetracker',
'fields' => array(
'casetracker_project',
),
'description' => t('Subscribe to all cases for a project.'),
);
return $types;
case 'subscription fields':
$fields['casetracker_assign'] = array(
'name' => t('Assigned to'),
'field' => 'assign_to',
'type' => 'int',
'object_type' => 'user',
);
$fields['casetracker_project'] = array(
'name' => t('Project'),
'field' => 'casetracker_project',
'type' => 'int',
'object_type' => 'node',
);
return $fields;
}
}
function casetracker_notifications_notifications_object_node($op, $node, $account = NULL) {
switch ($op) {
case 'conditions':
if (casetracker_is_case($node) && user_access('subscribe to cases')) {
$conditions = array();
if (isset($node->casetracker->assign_to)) {
$conditions['casetracker_assign'] = (int) $node->casetracker->assign_to;
}
if (!empty($node->casetracker->pid)) {
$conditions['casetracker_project'] = $node->casetracker->pid;
}
return $conditions;
}
break;
case 'subscriptions':
if (casetracker_is_project($node) && user_access('subscribe to cases')) {
$options[] = array(
'name' => t('Cases for this project'),
'type' => 'casetracker_project',
'fields' => array(
'casetracker_project' => $node->nid,
),
);
}
if (casetracker_is_case($node) && user_access('subscribe to cases')) {
$options[] = array(
'name' => t('Cases assigned to me'),
'type' => 'casetracker_assigned',
'fields' => array(
'casetracker_assign' => $GLOBALS['user']->uid,
),
);
return $options;
}
}
}