forked from backdrop-contrib/rules
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrules.drush.inc
More file actions
134 lines (122 loc) · 3.73 KB
/
rules.drush.inc
File metadata and controls
134 lines (122 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/**
* @file
* Rules module drush integration.
*/
/**
* Implements hook_drush_command().
*
* @return
* An associative array describing your command(s).
*
* @see drush_parse_command()
*/
function rules_drush_command() {
$items = array();
$items['rules-list'] = array(
'description' => "List all the active and inactive rules for your site.",
'backdrop dependencies' => array('rules'),
'aliases' => array('rules'),
);
$items['rules-enable'] = array(
'description' => "Enable a rule on your site.",
'arguments' => array(
'rule' => 'Rule name to enable.',
),
'backdrop dependencies' => array('rules'),
'aliases' => array('re'),
);
$items['rules-disable'] = array(
'description' => "Disable a rule on your site.",
'arguments' => array(
'rule' => 'Rule name to export.',
),
'backdrop dependencies' => array('rules'),
'aliases' => array('rd'),
);
return $items;
}
/**
* Implements hook_drush_help().
*/
function rules_drush_help($section) {
switch ($section) {
case 'drush:rules':
return dt("List all the rules on your site.");
case 'drush:rules-enable':
return dt("Enable/activate a rule on your site.");
case 'drush:rules-disable':
return dt("Disable/deactivate a rule on your site.");
}
}
/**
* Get a list of all rules.
*/
function drush_rules_list() {
$rules = rules_config_load_multiple(FALSE);
$rows = array(array(dt('Rule'), dt('Label'), dt('Event'), dt('Active'), dt('Status')));
foreach ($rules as $rule) {
if (!empty($rule->name) && !empty($rule->label)) {
$events = array();
$event_info = rules_fetch_data('event_info');
if ($rule instanceof RulesTriggerableInterface) {
foreach ($rule->events() as $event_name) {
$event_info += array($event_name => array('label' => dt('Unknown event "!event_name"', array('!event_name' => $event_name))));
$events[] = check_plain($event_info[$event_name]['label']);
}
}
$rows[] = array(
$rule->name,
$rule->label,
implode(', ', $events),
$rule->active ? dt('Enabled') : dt('Disabled'),
$rule->status ? theme('entity_ui_entity_status', array('status' => $rule->status, 'html' => FALSE)) : '',
);
}
}
drush_print_table($rows, TRUE);
}
/**
* Enable a rule on the site.
*/
function drush_rules_enable() {
$args = func_get_args();
$rule_name = (!empty($args) && is_array($args)) ? array_shift($args) : '';
if (empty($rule_name)) {
return drush_set_error('', 'No rule name given.');
}
$rule = rules_config_load($rule_name);
if (empty($rule)) {
return drush_set_error('', dt('Could not load rule named "!rule-name".', array('!rule-name' => $rule_name)));
}
if (empty($rule->active)) {
$rule->active = TRUE;
$rule->save();
drush_log(dt('The rule "!name" has been enabled.', array('!name' => $rule_name)), 'success');
}
else {
drush_log(dt('The rule "!name" is already enabled.', array('!name' => $rule_name)), 'warning');
}
}
/**
* Disable a rule on the site.
*/
function drush_rules_disable() {
$args = func_get_args();
$rule_name = (!empty($args) && is_array($args)) ? array_shift($args) : '';
if (empty($rule_name)) {
return drush_set_error('', 'No rule name given.');
}
$rule = rules_config_load($rule_name);
if (empty($rule)) {
return drush_set_error('', dt('Could not load rule named "!rule-name".', array('!rule-name' => $rule_name)));
}
if (!empty($rule->active)) {
$rule->active = FALSE;
$rule->save();
drush_log(dt('The rule "!name" has been disabled.', array('!name' => $rule_name)), 'success');
}
else {
drush_log(dt('The rule "!name" is already disabled.', array('!name' => $rule_name)), 'warning');
}
}