[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/rules/rules_admin/ -> rules_admin.module (source)

   1  <?php
   2  // $Id: rules_admin.module,v 1.1.2.8 2010/11/25 11:14:53 fago Exp $
   3  
   4  
   5  /**
   6   * @file Rules administration UI
   7   *
   8   * Only hook implementations should be inside the .module file.
   9   */
  10  
  11  // Defines paths of the admin interface
  12  define('RULES_ADMIN_PATH', 'admin/rules');
  13  define('RULES_ADMIN_TRIGGER_PATH', RULES_ADMIN_PATH .'/trigger');
  14  define('RULES_ADMIN_SET_PATH', RULES_ADMIN_PATH .'/rule_sets');
  15  define('RULES_ADMIN_RULE_PATH', RULES_ADMIN_PATH .'/rules');
  16  
  17  /**
  18   * Implementation of hook_help().
  19   */
  20  function rules_help($path, $arg) {
  21    switch ($path) {
  22      case RULES_ADMIN_SET_PATH:
  23        return '<p>'. t('Rule sets are similar in concept to subroutines and can be invoked by actions or manually by code or another module.') .'</p>';
  24  
  25      case RULES_ADMIN_TRIGGER_PATH:
  26        return '<p>'. t('This is an overview about rules that are triggered by a certain event. A rule may contain conditions and actions, which are executed only when the conditions are met.') .'</p>';
  27    }
  28  }
  29  
  30  /**
  31   * Implementation of hook_menu().
  32   */
  33  function rules_admin_menu() {
  34    $items = array();
  35    $items[RULES_ADMIN_PATH] = array(
  36      'title' => 'Rules',
  37      'description' => 'Rules administration links.',
  38      'position' => 'right',
  39      'weight' => 5,
  40      'page callback' => 'system_admin_menu_block_page',
  41      'access arguments' => array('administer rules'),
  42      'file' => 'system.admin.inc',
  43      'file path' => drupal_get_path('module', 'system'),
  44    );
  45    $items[RULES_ADMIN_PATH .'/autocomplete'] = array(
  46      'page callback' => 'rules_admin_categories_autocomplete',
  47      'access arguments' => array('administer rules'),
  48      'type' => MENU_CALLBACK,
  49      'file' => 'rules_admin.rule_forms.inc',
  50    );
  51    $items[RULES_ADMIN_TRIGGER_PATH] = array(
  52      'title' => 'Triggered rules',
  53      'description' => 'Customize your site by configuring rules that are evaluated on events.',
  54      'page callback' => 'drupal_get_form',
  55      'page arguments' => array('rules_admin_form_overview'),
  56      'access arguments' => array('administer rules'),
  57      'type' => MENU_NORMAL_ITEM,
  58      'weight' => -2,
  59      'file' => 'rules_admin.rule_forms.inc',
  60    );
  61    $items[RULES_ADMIN_TRIGGER_PATH .'/list'] = array(
  62      'title' => 'Overview',
  63      'weight' => -5,
  64      'type' => MENU_DEFAULT_LOCAL_TASK,
  65    );
  66    $items[RULES_ADMIN_TRIGGER_PATH .'/add'] = array(
  67      'title' => 'Add a new rule',
  68      'type' => MENU_LOCAL_TASK,
  69      'page callback' => 'drupal_get_form',
  70      'page arguments' => array('rules_admin_form_add_rule', FALSE),
  71      'access arguments' => array('administer rules'),
  72      'file' => 'rules_admin.rule_forms.inc',
  73    );
  74  
  75    foreach (rules_get_items() as $item_type => $info) {
  76      $items[RULES_ADMIN_PATH .'/'. $item_type .'/%rules_item/delete'] = array(
  77        'title' => 'Delete',
  78        'type' => MENU_CALLBACK,
  79        'page callback' => 'drupal_get_form',
  80        'page arguments' => array('rules_admin_item_form_delete', 2, 3),
  81        'access arguments' => array('administer rules'),
  82        'load arguments' => array(2),
  83        'file' => 'rules_admin.sets.inc',
  84      );
  85      $items[RULES_ADMIN_PATH .'/'. $item_type .'/%rules_item/revert'] = array(
  86        'title' => 'Revert',
  87        'type' => MENU_CALLBACK,
  88        'page callback' => 'drupal_get_form',
  89        'page arguments' => array('rules_admin_item_form_revert', 2, 3),
  90        'access arguments' => array('administer rules'),
  91        'load arguments' => array(2),
  92        'file' => 'rules_admin.sets.inc',
  93      );
  94    }
  95  
  96    $items[RULES_ADMIN_PATH .'/ie'] = array(
  97      'title' => 'Import / Export',
  98      'description' => 'Export your rules as text or import rules.',
  99      'page callback' => 'drupal_get_form',
 100      'page arguments' => array('rules_admin_form_export'),
 101      'access arguments' => array('administer rules'),
 102      'file' => 'rules_admin.export.inc',
 103      'weight' => 5,
 104      'type' => MENU_NORMAL_ITEM,
 105    );
 106    $items[RULES_ADMIN_PATH .'/ie/export'] = array(
 107      'title' => 'Export',
 108      'weight' => 0,
 109      'type' => MENU_DEFAULT_LOCAL_TASK,
 110    );
 111    $items[RULES_ADMIN_PATH .'/ie/import'] = array(
 112      'title' => 'Import',
 113      'page callback' => 'drupal_get_form',
 114      'page arguments' => array('rules_admin_form_import'),
 115      'access arguments' => array('administer rules'),
 116      'weight' => 7,
 117      'type' => MENU_LOCAL_TASK,
 118      'file' => 'rules_admin.export.inc',
 119    );
 120    $items[RULES_ADMIN_PATH .'/settings'] = array(
 121      'title' => 'Settings',
 122      'description' => 'Set display options, show/hide Rules messages.',
 123      'page callback' => 'drupal_get_form',
 124      'page arguments' => array('rules_admin_settings'),
 125      'access arguments' => array('administer rules'),
 126      'file' => 'rules_admin.rule_forms.inc',
 127      'weight' => 7,
 128      'type' => MENU_NORMAL_ITEM,
 129    );
 130    //paths for modifing rules
 131    $items[RULES_ADMIN_RULE_PATH .'/%rule'] = array(
 132      'title callback' => 'rules_admin_rule_title',
 133      'title arguments' => array('Editing rule @label', 3),
 134      'type' => MENU_CALLBACK,
 135      'page callback' => 'drupal_get_form',
 136      'page arguments' => array('rules_admin_form_edit_rule', 3),
 137      'access arguments' => array('administer rules'),
 138      'file' => 'rules_admin.rule_forms.inc',
 139    );
 140    $items[RULES_ADMIN_RULE_PATH .'/%rule/add'] = array(
 141      'title' => 'Add',
 142      'type' => MENU_CALLBACK,
 143      'page callback' => 'drupal_get_form',
 144      'page arguments' => array('rules_admin_form_add', 3),
 145      'access arguments' => array('administer rules'),
 146      'file' => 'rules_admin.rule_forms.inc',
 147    );
 148    $items[RULES_ADMIN_RULE_PATH .'/%rule/edit/%rule_element'] = array(
 149      'title' => 'Edit',
 150      'type' => MENU_CALLBACK,
 151      'page callback' => 'drupal_get_form',
 152      'page arguments' => array('rules_admin_form_edit', 3, 5),
 153      'access arguments' => array('administer rules'),
 154      'load arguments' => array(3),
 155      'file' => 'rules_admin.rule_forms.inc',
 156    );
 157    $items[RULES_ADMIN_RULE_PATH .'/%rule/delete/%rule_element'] = array(
 158      'title' => 'Delete',
 159      'type' => MENU_CALLBACK,
 160      'page callback' => 'drupal_get_form',
 161      'page arguments' => array('rules_admin_form_delete', 3, 5),
 162      'access arguments' => array('administer rules'),
 163      'load arguments' => array(3),
 164      'file' => 'rules_admin.rule_forms.inc',
 165    );
 166    $items[RULES_ADMIN_RULE_PATH .'/%rule/clone'] = array(
 167      'title' => 'Clone rule',
 168      'type' => MENU_CALLBACK,
 169      'page callback' => 'drupal_get_form',
 170      'page arguments' => array('rules_admin_form_clone', 3),
 171      'access arguments' => array('administer rules'),
 172      'file' => 'rules_admin.rule_forms.inc',
 173    );
 174    $items[RULES_ADMIN_SET_PATH] = array(
 175      'title' => 'Rule sets',
 176      'description' => 'Create and manage rule sets.',
 177      'page callback' => 'rules_admin_sets_overview',
 178      'access arguments' => array('administer rules'),
 179      'type' => MENU_NORMAL_ITEM,
 180      'weight' => 0,
 181      'file' => 'rules_admin.sets.inc',
 182    );
 183    $items[RULES_ADMIN_SET_PATH .'/list'] = array(
 184      'title' => 'Overview',
 185      'weight' => -5,
 186      'type' => MENU_DEFAULT_LOCAL_TASK,
 187    );
 188    $items[RULES_ADMIN_SET_PATH .'/add'] = array(
 189      'title' => 'Add a new rule set',
 190      'type' => MENU_LOCAL_TASK,
 191      'page callback' => 'drupal_get_form',
 192      'page arguments' => array('rules_admin_form_add_rule_set', 2),
 193      'access arguments' => array('administer rules'),
 194      'file' => 'rules_admin.sets.inc',
 195      'weight' => 3,
 196    );
 197  
 198    $items[RULES_ADMIN_SET_PATH .'/js'] = array(
 199      'type' => MENU_CALLBACK,
 200      'page callback' => 'rules_admin_form_js',
 201      'page arguments' => array('rules_admin_form_add_rule_set_add_arguments'),
 202      'access arguments' => array('administer rules'),
 203      'file' => 'rules_admin.sets.inc',
 204    );
 205    $items[RULES_ADMIN_SET_PATH .'/%rules_item'] = array(
 206      'type' => MENU_CALLBACK,
 207      'title callback' => 'rules_admin_item_title',
 208      'title arguments' => array(3),
 209      'page callback' => 'drupal_get_form',
 210      'page arguments' => array('rules_admin_form_edit_rule_set', 3),
 211      'access arguments' => array('administer rules'),
 212      'load arguments' => array(2),
 213      'file' => 'rules_admin.sets.inc',
 214    );
 215    $items[RULES_ADMIN_SET_PATH .'/%rules_item/list'] = array(
 216      'title' => 'Overview',
 217      'weight' => -5,
 218      'load arguments' => array(2),
 219      'type' => MENU_DEFAULT_LOCAL_TASK,
 220    );
 221    $items[RULES_ADMIN_SET_PATH .'/%rules_item/add'] = array(
 222      'title' => 'Add a new rule',
 223      'type' => MENU_LOCAL_TASK,
 224      'page callback' => 'drupal_get_form',
 225      'page arguments' => array('rules_admin_form_add_rule', 3),
 226      'access arguments' => array('administer rules'),
 227      'load arguments' => array(2),
 228      'file' => 'rules_admin.rule_forms.inc',
 229    );
 230    return $items;
 231  }
 232  
 233  /**
 234   * Loads the admin proxy of the rule with the given name
 235   */
 236  function rule_load($name) {
 237    static $proxies = array();
 238  
 239    if (!isset($proxies[$name])) {
 240      $proxies[$name] = FALSE;
 241      $rules = rules_get_configured_items('rules');
 242      // Let's make sure the #set actually exists
 243      if (isset($rules[$name]) && rules_get_rule_sets($rules[$name]['#set'])) {
 244        rules_include('rules_admin');
 245        $proxies[$name] = new rules_admin_rule_proxy($name, $rules[$name]);
 246        rules_admin_fix_breadcrumb($rules[$name], $name);
 247      }
 248    }
 249    return $proxies[$name];
 250  }
 251  
 252  function rule_element_load($id, $rule_name) {
 253    $proxy = rule_load($rule_name);
 254    $element = $proxy->get_element($id);
 255    return is_array($element) ? $element + array('#id' => intval($id)) : FALSE;
 256  }
 257  
 258  function rules_admin_rule_title($text, $proxy) {
 259    $rule = $proxy->get_rule();
 260    return t($text, array('@label' => $rule['#label']));
 261  }
 262  
 263  /**
 264   * Validate the machine name.
 265   */
 266  function rules_admin_validate_machine_name($item_type, $element_name, $machine_name) {
 267    // Check that the machine name is valid. We only
 268    if (!preg_match('/^[a-z][a-z0-9_]*$/', $machine_name)) {
 269      form_set_error($element_name, t('Machine name must be alphanumeric and underscores only, and the first character must be a lower case letter.'));
 270      return;
 271    }
 272    // Fetch information about table.
 273    $info = rules_get_items($item_type);
 274    // Check that the machine name doesn't exist.
 275    $count = db_result(db_query("SELECT COUNT(*) FROM {" . $info['db_table'] . "} WHERE name = '%s'", 'rules_' . $machine_name));
 276    if ($count) {
 277      form_set_error($element_name, t('The given machine name already exists.'));
 278    }
 279  }
 280  
 281  function rules_item_load($name, $item_type) {
 282    $items = rules_get_configured_items($item_type);
 283    if (!isset($items[$name])) {
 284      return FALSE;
 285    }
 286    return $items[$name] + array('name' => $name);
 287  }
 288  
 289  function rules_admin_item_title($item) {
 290    return check_plain(rules_get_element_label($item));
 291  }
 292  
 293  /**
 294   * Implementation of hook_perm().
 295   */
 296  function rules_admin_perm() {
 297    return array('administer rules');
 298  }
 299  
 300  /**
 301   * Implementation of hook_theme()
 302   */
 303  function rules_admin_theme() {
 304    foreach (array('rules_admin_rule_render', 'rule', 'condition', 'action', 'rules_icon', 'rules_operation', 'OR', 'AND', 'rules_logical_operation_label') as $name) {
 305      $items[$name] = array(
 306        'arguments' => array('elements' => NULL),
 307        'file' => 'rules_admin.render.inc',
 308      );
 309    }
 310    $items['rules_admin_form_arguments'] = array(
 311      'arguments' => array('elements' => NULL),
 312      'file' => 'rules_admin.sets.inc',
 313    );
 314    $items['rules_admin_unsatisfied_elements'] = array(
 315      'arguments' => array('element' => NULL),
 316      'file' => 'rules_admin.inc',
 317    );
 318    $items['rules_admin_unsatisfied_elements_group'] = array(
 319      'arguments' => array('grouped_rules' => NULL, 'elements' => array()),
 320      'file' => 'rules_admin.inc',
 321    );
 322    $items['rules_admin_unsatisfied_elements_group'] = array(
 323      'arguments' => array('grouped_rules' => NULL, 'elements' => array()),
 324      'file' => 'rules_admin.inc',
 325    );
 326    $items['rules_admin_configuration_status'] = array(
 327      'arguments' => array('status' => NULL),
 328      'file' => 'rules_admin.inc',
 329    );
 330    return $items;
 331  }
 332  


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