| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
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
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 |