[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/rules/rules_scheduler/ -> rules_scheduler.admin.inc (source)

   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  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7