| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: rules_scheduler.admin.inc,v 1.1.2.2 2010/12/15 13:55:48 fago Exp $ 3 4 /** 5 * @file 6 * Admin form for scheduling 7 */ 8 9 function rules_scheduler_scheduling() { 10 return drupal_get_form('rules_scheduler_form'); 11 } 12 13 /** 14 * Builds the scheduling page with a form for manual scheduling and deletion of tasks. 15 */ 16 function rules_scheduler_form($form_state) { 17 $form = array(); 18 // Display view for all scheduled tasks 19 if (module_exists('views')) { 20 $task_list = views_embed_view('rules_scheduler'); 21 } 22 else { 23 $task_list = t('To display scheduled tasks you have to install the <a href="http://drupal.org/project/views">Views</a> module.'); 24 } 25 $form['task_view'] = array( 26 '#type' => 'markup', 27 '#value' => $task_list, 28 ); 29 30 // form fieldset for manual scheduling 31 $form['manual_scheduling'] = array( 32 '#type' => 'fieldset', 33 '#title' => t('Manual scheduling of rule sets without arguments'), 34 '#collapsible' => TRUE, 35 '#collapsed' => FALSE, 36 ); 37 $rulesets = rules_scheduler_rulesets_without_arguments(); 38 if (empty($rulesets)) { 39 $form['manual_scheduling']['#description'] = t('There are currently no rule sets without arguments available.'); 40 } 41 else { 42 $form['manual_scheduling']['ruleset_manual'] = array( 43 '#title' => t('Rule set name'), 44 '#type' => 'select', 45 '#options' => $rulesets, 46 '#multiple' => FALSE, 47 ); 48 $form['manual_scheduling']['task_identifier'] = array( 49 '#title' => t('Identifier'), 50 '#type' => 'textfield', 51 '#description' => t('User provided string to identify the task. Existing tasks for this rule set with the same identifier will be replaced.'), 52 ); 53 $rules_date = new rules_data_type_date(); 54 $form['manual_scheduling']['date'] = $rules_date->get_default_input_form(array('label' => 'Execution date'), NULL, $form_state); 55 $form['manual_scheduling']['submit'] = array( 56 '#type' => 'submit', 57 '#value' => t('Schedule'), 58 '#submit' => array('rules_scheduler_manual_submit'), 59 '#validate' => array('rules_scheduler_manual_validate'), 60 ); 61 } 62 63 // form fieldset for deleting by rule set name 64 $result = db_query("SELECT DISTINCT set_name FROM {rules_scheduler}"); 65 $ruleset_names = array(); 66 while ($name = db_fetch_array($result)) { 67 $ruleset_names[$name['set_name']] = $name['set_name']; 68 } 69 70 $form['delete_by_ruleset_name'] = array( 71 '#type' => 'fieldset', 72 '#title' => t('Delete tasks by rule set name'), 73 '#collapsible' => TRUE, 74 '#collapsed' => TRUE, 75 ); 76 if (empty($ruleset_names)) { 77 $form['delete_by_ruleset_name']['#description'] = t('There are currently no scheduled tasks available to delete.'); 78 } 79 else { 80 $form['delete_by_ruleset_name']['ruleset_delete'] = array( 81 '#title' => t('Rule set name'), 82 '#type' => 'select', 83 '#options' => $ruleset_names, 84 '#multiple' => FALSE, 85 ); 86 $form['delete_by_ruleset_name']['submit'] = array( 87 '#type' => 'submit', 88 '#value' => t('Delete'), 89 '#submit' => array('rules_scheduler_delete_submit'), 90 ); 91 } 92 93 return $form; 94 } 95 96 /** 97 * Retrieves all rule sets that do not have arguments attached. 98 */ 99 function rules_scheduler_rulesets_without_arguments() { 100 $rule_sets = array(); 101 foreach (rules_get_configured_items('rule_sets') as $name => $set_info) { 102 if (empty($set_info['arguments'])) { 103 $rule_sets[$name] = $set_info['label'] .' ('. $name .')'; 104 } 105 } 106 return $rule_sets; 107 } 108 109 /** 110 * Submit handler for manual scheduling of tasks. 111 */ 112 function rules_scheduler_manual_submit($form, &$form_state) { 113 rules_scheduler_schedule_task( $form_state['values']['ruleset_manual'], $form_state['values']['date'], $form_state['values']['task_identifier']); 114 drupal_set_message(t('The rule set %name has been scheduled on %date (GMT).', array('%name' => $form_state['values']['ruleset_manual'], '%date' => $form_state['values']['date']))); 115 } 116 117 /** 118 * Submit handler for deletion/cancellation of future scheduled tasks. 119 */ 120 function rules_scheduler_delete_submit($form, &$form_state) { 121 module_load_include('inc', 'rules_scheduler', 'rules_scheduler.rules'); 122 rules_scheduler_action_delete(NULL, $form_state['values']['ruleset_delete']); 123 drupal_set_message(t('All tasks associated with %ruleset have been deleted.', array('%ruleset' => $form_state['values']['ruleset_delete']))); 124 } 125 126 /** 127 * Confirmation form for deleting single tasks. 128 */ 129 function rules_scheduler_delete_task(&$form_state, $task) { 130 $form = array(); 131 $form_state['task'] = $task; 132 133 $path = array(); 134 $path['path'] = isset($_GET['destination']) ? $_GET['destination'] : RULES_SCHEDULER_PATH; 135 136 $title = t('Are you sure you want to delete task %tid?', array('%tid' => $task['tid'])); 137 if (!empty($task['identifier'])) { 138 $msg = t('This task refers to the custom identifier %id and rule set %ruleset, it will be executed on %date. The delete action cannot be undone.', array( 139 '%ruleset' => $task['set_name'], 140 '%id' => $task['identifier'], 141 '%date' => format_date(rules_gmstrtotime($task['date'])), 142 )); 143 } 144 else { 145 $msg = t('This task refers to the rule set %ruleset and will be executed on %date. The delete action cannot be undone.', array( 146 '%ruleset' => $task['set_name'], 147 '%id' => $task['identifier'], 148 '%date' => $task['date'], 149 )); 150 } 151 return confirm_form($form, $title, $path, $msg, t('Delete'), t('Cancel')); 152 } 153 154 /** 155 * Submit handler for deleting single tasks. 156 */ 157 function rules_scheduler_delete_task_submit($form, &$form_state) { 158 db_query("DELETE FROM {rules_scheduler} WHERE tid = %d", $form_state['task']['tid']); 159 drupal_set_message(t("Task %label has been deleted.", array('%label' => $form_state['task']['tid']))); 160 $form_state['redirect'] = RULES_SCHEDULER_PATH; 161 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |