annotate sites/all/modules/custom/solrconnect/drush/apachesolr.drush.inc @ 0:015d06b10d37 default tip

initial
author dwinter
date Wed, 31 Jul 2013 13:49:13 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
015d06b10d37 initial
dwinter
parents:
diff changeset
1 <?php
015d06b10d37 initial
dwinter
parents:
diff changeset
2
015d06b10d37 initial
dwinter
parents:
diff changeset
3 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
4 * @file
015d06b10d37 initial
dwinter
parents:
diff changeset
5 * drush integration for apachesolr.
015d06b10d37 initial
dwinter
parents:
diff changeset
6 */
015d06b10d37 initial
dwinter
parents:
diff changeset
7
015d06b10d37 initial
dwinter
parents:
diff changeset
8 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
9 * Implements hook_drush_command().
015d06b10d37 initial
dwinter
parents:
diff changeset
10 *
015d06b10d37 initial
dwinter
parents:
diff changeset
11 * @return array
015d06b10d37 initial
dwinter
parents:
diff changeset
12 * An associative array describing your command(s).
015d06b10d37 initial
dwinter
parents:
diff changeset
13 */
015d06b10d37 initial
dwinter
parents:
diff changeset
14 function apachesolr_drush_command() {
015d06b10d37 initial
dwinter
parents:
diff changeset
15 $items = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
16
015d06b10d37 initial
dwinter
parents:
diff changeset
17 $items['solr-delete-index'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
18 'callback' => 'apachesolr_drush_solr_delete_index',
015d06b10d37 initial
dwinter
parents:
diff changeset
19 'description' => dt('Deletes the content from the index. Can take content types as parameters.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
20 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
21 'types' => dt('Optional. A space delimited list of content types to be deleted from the index.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
22 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
23 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
24 'environment-id' => 'The environment ID',
015d06b10d37 initial
dwinter
parents:
diff changeset
25 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
26 'examples' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
27 'drush solr-delete-index node' => 'Delete all node content from the index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
28 'drush solr-delete-index node:article' => 'Delete all content of the article content type from the index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
29 'drush solr-delete-index node:article node:blog' => 'Delete all content of the article and blog content types from the index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
30 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
31 );
015d06b10d37 initial
dwinter
parents:
diff changeset
32 $items['solr-mark-all'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
33 'callback' => 'apachesolr_drush_solr_mark_for_reindex',
015d06b10d37 initial
dwinter
parents:
diff changeset
34 'description' => dt('Marks content for reindexing. Can take content types as parameters.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
35 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
36 'types' => dt('Optional. A space delimited list of content types to be marked for reindexing.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
37 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
38 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
39 'environment-id' => 'The environment ID',
015d06b10d37 initial
dwinter
parents:
diff changeset
40 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
41 );
015d06b10d37 initial
dwinter
parents:
diff changeset
42 $items['solr-index'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
43 'callback' => 'apachesolr_drush_solr_index',
015d06b10d37 initial
dwinter
parents:
diff changeset
44 'description' => dt('Reindexes content marked for (re)indexing.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
45 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
46 'environment-id' => 'The environment ID',
015d06b10d37 initial
dwinter
parents:
diff changeset
47 'limit' => 'The total number of documents to index',
015d06b10d37 initial
dwinter
parents:
diff changeset
48 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
49 );
015d06b10d37 initial
dwinter
parents:
diff changeset
50 $items['solr-get-last-indexed'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
51 'callback' => 'apachesolr_drush_solr_get_last_indexed',
015d06b10d37 initial
dwinter
parents:
diff changeset
52 'description' => dt('Get the ID of the last document indexed.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
53 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
54 'environment-id' => dt('Optional. The environment ID, uses the default if not passed.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
55 'entity-type' => dt('Optional. The machine name of the entity, defaults to "node".'),
015d06b10d37 initial
dwinter
parents:
diff changeset
56 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
57 );
015d06b10d37 initial
dwinter
parents:
diff changeset
58 $items['solr-get-next-indexed'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
59 'callback' => 'apachesolr_drush_solr_get_next_indexed',
015d06b10d37 initial
dwinter
parents:
diff changeset
60 'description' => dt('Get the ID of the next document to be indexed.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
61 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
62 'environment-id' => dt('Optional. The environment ID, uses the default if not passed.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
63 'entity-type' => dt('Optional. The machine name of the entity, defaults to "node".'),
015d06b10d37 initial
dwinter
parents:
diff changeset
64 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
65 );
015d06b10d37 initial
dwinter
parents:
diff changeset
66 $items['solr-search'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
67 'callback' => 'apachesolr_drush_solr_search',
015d06b10d37 initial
dwinter
parents:
diff changeset
68 'description' => dt('Search the site for keywords using Apache Solr'),
015d06b10d37 initial
dwinter
parents:
diff changeset
69 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
70 'keywords' => dt('One or more keywords, separated by spaces.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
71 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
72 );
015d06b10d37 initial
dwinter
parents:
diff changeset
73 $items['solr-get-env-id'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
74 'callback' => 'apachesolr_drush_solr_get_env_id',
015d06b10d37 initial
dwinter
parents:
diff changeset
75 'description' => dt('Get the default Apache Solr environment ID, or all IDs and names'),
015d06b10d37 initial
dwinter
parents:
diff changeset
76 'arguments' => array(),
015d06b10d37 initial
dwinter
parents:
diff changeset
77 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
78 'all' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
79 'description' => 'List all environment IDs',
015d06b10d37 initial
dwinter
parents:
diff changeset
80 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
81 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
82 );
015d06b10d37 initial
dwinter
parents:
diff changeset
83 $items['solr-get-env-name'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
84 'callback' => 'apachesolr_drush_solr_get_env_name',
015d06b10d37 initial
dwinter
parents:
diff changeset
85 'description' => dt('Get the Apache Solr environment name.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
86 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
87 'id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
88 'description' => 'Apache Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
89 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
90 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
91 );
015d06b10d37 initial
dwinter
parents:
diff changeset
92 $items['solr-get-env-url'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
93 'callback' => 'apachesolr_drush_solr_get_env_url',
015d06b10d37 initial
dwinter
parents:
diff changeset
94 'description' => dt('Get the Apache Solr environment url.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
95 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
96 'id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
97 'description' => 'Apache Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
98 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
99 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
100 );
015d06b10d37 initial
dwinter
parents:
diff changeset
101 $items['solr-set-env-url'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
102 'callback' => 'apachesolr_drush_solr_set_env_url',
015d06b10d37 initial
dwinter
parents:
diff changeset
103 'description' => dt('Set the url for an Apache Solr environment.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
104 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
105 'url' => dt('Apache Solr server url string.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
106 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
107 'required-arguments' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
108 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
109 'id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
110 'description' => 'Apache Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
111 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
112 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
113 );
015d06b10d37 initial
dwinter
parents:
diff changeset
114 $items['solr-variable-get'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
115 'description' => 'Get a list of Apache Solr environment variable names and values.',
015d06b10d37 initial
dwinter
parents:
diff changeset
116 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
117 'name' => 'A string to filter the variables by. Variables that have any part of their name matching the string will b listed.',
015d06b10d37 initial
dwinter
parents:
diff changeset
118 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
119 'examples' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
120 'drush solr-vget' => 'List all variables and values.',
015d06b10d37 initial
dwinter
parents:
diff changeset
121 'drush solr-vget user' => 'List all variables containing the string "user".',
015d06b10d37 initial
dwinter
parents:
diff changeset
122 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
123 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
124 'id' => 'Apache Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
125 'format' => 'Format to output the object. Use "print_r" for print_r (default), "export" for var_export, and "json" for JSON.',
015d06b10d37 initial
dwinter
parents:
diff changeset
126 'pipe' => 'A synonym for --format=export. Useful for pasting into code.',
015d06b10d37 initial
dwinter
parents:
diff changeset
127 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
128 'aliases' => array('solr-vget'),
015d06b10d37 initial
dwinter
parents:
diff changeset
129 );
015d06b10d37 initial
dwinter
parents:
diff changeset
130 $items['solr-variable-set'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
131 'description' => "Set an Apache Solr environment variable.",
015d06b10d37 initial
dwinter
parents:
diff changeset
132 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
133 'name' => 'The name of a variable or the first few letters of its name.',
015d06b10d37 initial
dwinter
parents:
diff changeset
134 'value' => 'The value to assign to the variable. Use \'-\' to read the object from STDIN.',
015d06b10d37 initial
dwinter
parents:
diff changeset
135 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
136 'required-arguments' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
137 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
138 'id' => 'Apache Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
139 'yes' => 'Skip confirmation if only one variable name matches.',
015d06b10d37 initial
dwinter
parents:
diff changeset
140 'always-set' => 'Always skip confirmation.',
015d06b10d37 initial
dwinter
parents:
diff changeset
141 'format' => 'Format to parse the object. Use "auto" to detect format from value (default), "string", "integer" or "boolean" for corresponding primitive type, and "json" for JSON.',
015d06b10d37 initial
dwinter
parents:
diff changeset
142 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
143 'examples' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
144 'drush solr-vset --yes apachesolr_read_only 1' => 'Set the apachesolr_read_only variable to 1. Skip confirmation if variable already exists.',
015d06b10d37 initial
dwinter
parents:
diff changeset
145 'drush solr-vset pr TRUE' => 'Choose from a list of variables beginning with "pr" to set to (bool)true.',
015d06b10d37 initial
dwinter
parents:
diff changeset
146 'php -r "print json_encode(array(\'drupal\', \'simpletest\'));" | drush solr-vset --format=json project_dependency_excluded_dependencies -'=> 'Set a variable to a complex value (e.g. array)',
015d06b10d37 initial
dwinter
parents:
diff changeset
147 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
148 'aliases' => array('solr-vset'),
015d06b10d37 initial
dwinter
parents:
diff changeset
149 );
015d06b10d37 initial
dwinter
parents:
diff changeset
150 $items['solr-variable-delete'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
151 'description' => "Delete an Apache Solr environment variable.",
015d06b10d37 initial
dwinter
parents:
diff changeset
152 'arguments' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
153 'name' => 'The name of a variable or the first few letters of its name.',
015d06b10d37 initial
dwinter
parents:
diff changeset
154 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
155 'required-arguments' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
156 'options' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
157 'id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
158 'description' => 'Apaches Solr environment ID to use (uses the default environment if not specified)',
015d06b10d37 initial
dwinter
parents:
diff changeset
159 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
160 'yes' => 'Skip confirmation if only one variable name matches.',
015d06b10d37 initial
dwinter
parents:
diff changeset
161 'exact' => 'Only delete the one variable that exactly matches the specified name.',
015d06b10d37 initial
dwinter
parents:
diff changeset
162 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
163 'examples' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
164 'drush solr-vdel apachesolr_read_only --id=solr2' => 'Delete the apachesolr_read_only variable for the solr2 environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
165 'drush solr-vdel apa' => 'Choose from a list of variables beginning with "u" to delete.',
015d06b10d37 initial
dwinter
parents:
diff changeset
166 'drush solr-vdel -y --exact apachesolr_read_only' => 'Delete variable, skipping confirmation.',
015d06b10d37 initial
dwinter
parents:
diff changeset
167 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
168 'aliases' => array('solr-vdel'),
015d06b10d37 initial
dwinter
parents:
diff changeset
169 );
015d06b10d37 initial
dwinter
parents:
diff changeset
170 return $items;
015d06b10d37 initial
dwinter
parents:
diff changeset
171 }
015d06b10d37 initial
dwinter
parents:
diff changeset
172
015d06b10d37 initial
dwinter
parents:
diff changeset
173 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
174 * Implements hook_drush_help().
015d06b10d37 initial
dwinter
parents:
diff changeset
175 *
015d06b10d37 initial
dwinter
parents:
diff changeset
176 * This function is called whenever a drush user calls
015d06b10d37 initial
dwinter
parents:
diff changeset
177 * 'drush help <name-of-your-command>'
015d06b10d37 initial
dwinter
parents:
diff changeset
178 *
015d06b10d37 initial
dwinter
parents:
diff changeset
179 * @param string $section
015d06b10d37 initial
dwinter
parents:
diff changeset
180 * A string with the help section (prepend with 'drush:')
015d06b10d37 initial
dwinter
parents:
diff changeset
181 *
015d06b10d37 initial
dwinter
parents:
diff changeset
182 * @return string
015d06b10d37 initial
dwinter
parents:
diff changeset
183 * A string with the help text for your command.
015d06b10d37 initial
dwinter
parents:
diff changeset
184 */
015d06b10d37 initial
dwinter
parents:
diff changeset
185 function apachesolr_drush_help($section) {
015d06b10d37 initial
dwinter
parents:
diff changeset
186 switch ($section) {
015d06b10d37 initial
dwinter
parents:
diff changeset
187 case 'drush:solr-delete-index':
015d06b10d37 initial
dwinter
parents:
diff changeset
188 return dt("Used without parameters, this command deletes the entire Solr index.
015d06b10d37 initial
dwinter
parents:
diff changeset
189 Used with parameters for content type, it deletes just the content types that are specified.
015d06b10d37 initial
dwinter
parents:
diff changeset
190 After the index has been deleted, all content will be indexed again on future cron runs.");
015d06b10d37 initial
dwinter
parents:
diff changeset
191 case 'drush:solr-mark-all':
015d06b10d37 initial
dwinter
parents:
diff changeset
192 return dt("Used without parameters, this command marks all of the content in the Solr index for
015d06b10d37 initial
dwinter
parents:
diff changeset
193 reindexing. Used with parameters for content type, it marks just the content types that are specified.
015d06b10d37 initial
dwinter
parents:
diff changeset
194 Reindexing is different than deleting as the content is still searchable while it is in queue to be reindexed.
015d06b10d37 initial
dwinter
parents:
diff changeset
195 Reindexing is done on future cron runs.");
015d06b10d37 initial
dwinter
parents:
diff changeset
196 case 'drush:solr-index':
015d06b10d37 initial
dwinter
parents:
diff changeset
197 return dt("Reindexes content marked for (re)indexing. If you want to reindex all content or content
015d06b10d37 initial
dwinter
parents:
diff changeset
198 of a specific type, use solr-reindex first to mark that content.");
015d06b10d37 initial
dwinter
parents:
diff changeset
199 case 'drush:solr-search':
015d06b10d37 initial
dwinter
parents:
diff changeset
200 return dt('Executes a search against the site\'s Apache Solr search index and returns the results.');
015d06b10d37 initial
dwinter
parents:
diff changeset
201 case 'error:APACHESOLR_ENV_ID_ERROR':
015d06b10d37 initial
dwinter
parents:
diff changeset
202 return dt('Not a valid environment ID.');
015d06b10d37 initial
dwinter
parents:
diff changeset
203 }
015d06b10d37 initial
dwinter
parents:
diff changeset
204 return '';
015d06b10d37 initial
dwinter
parents:
diff changeset
205 }
015d06b10d37 initial
dwinter
parents:
diff changeset
206
015d06b10d37 initial
dwinter
parents:
diff changeset
207 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
208 * Selectively delete content from the apachesolr index.
015d06b10d37 initial
dwinter
parents:
diff changeset
209 *
015d06b10d37 initial
dwinter
parents:
diff changeset
210 * Each argument is a filter on what to delete from the index.
015d06b10d37 initial
dwinter
parents:
diff changeset
211 * They are of the form entity (to delete all content of that
015d06b10d37 initial
dwinter
parents:
diff changeset
212 * entity) or entity:bundle (to delete all content of that
015d06b10d37 initial
dwinter
parents:
diff changeset
213 * bundle).
015d06b10d37 initial
dwinter
parents:
diff changeset
214 */
015d06b10d37 initial
dwinter
parents:
diff changeset
215 function apachesolr_drush_solr_delete_index() {
015d06b10d37 initial
dwinter
parents:
diff changeset
216 module_load_include('inc', 'apachesolr', 'apachesolr.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
217 $args = func_get_args();
015d06b10d37 initial
dwinter
parents:
diff changeset
218 $env_id = drush_get_option('environment-id');
015d06b10d37 initial
dwinter
parents:
diff changeset
219 if (empty($env_id)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
220 $env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
221 }
015d06b10d37 initial
dwinter
parents:
diff changeset
222
015d06b10d37 initial
dwinter
parents:
diff changeset
223 if (count($args) > 0) {
015d06b10d37 initial
dwinter
parents:
diff changeset
224 foreach ($args as $type) {
015d06b10d37 initial
dwinter
parents:
diff changeset
225 $parts = explode(':', $type);
015d06b10d37 initial
dwinter
parents:
diff changeset
226 if (count($parts) === 1) {
015d06b10d37 initial
dwinter
parents:
diff changeset
227 apachesolr_index_delete_index($env_id, $type);
015d06b10d37 initial
dwinter
parents:
diff changeset
228 }
015d06b10d37 initial
dwinter
parents:
diff changeset
229 elseif (count($parts) == 2) {
015d06b10d37 initial
dwinter
parents:
diff changeset
230 apachesolr_index_delete_index($env_id, $parts[0], $parts[1]);
015d06b10d37 initial
dwinter
parents:
diff changeset
231 }
015d06b10d37 initial
dwinter
parents:
diff changeset
232 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
233 drush_set_error('The syntax for each type is either entity or entity:bundle');
015d06b10d37 initial
dwinter
parents:
diff changeset
234 }
015d06b10d37 initial
dwinter
parents:
diff changeset
235 }
015d06b10d37 initial
dwinter
parents:
diff changeset
236 }
015d06b10d37 initial
dwinter
parents:
diff changeset
237 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
238 apachesolr_index_delete_index($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
239 }
015d06b10d37 initial
dwinter
parents:
diff changeset
240
015d06b10d37 initial
dwinter
parents:
diff changeset
241 drush_print(t('Deleted the Solr index'));
015d06b10d37 initial
dwinter
parents:
diff changeset
242 }
015d06b10d37 initial
dwinter
parents:
diff changeset
243
015d06b10d37 initial
dwinter
parents:
diff changeset
244 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
245 * Mark all of a specific environment id for reindexing
015d06b10d37 initial
dwinter
parents:
diff changeset
246 */
015d06b10d37 initial
dwinter
parents:
diff changeset
247 function apachesolr_drush_solr_mark_for_reindex() {
015d06b10d37 initial
dwinter
parents:
diff changeset
248 module_load_include('inc', 'apachesolr', 'apachesolr.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
249 $args = func_get_args();
015d06b10d37 initial
dwinter
parents:
diff changeset
250 $env_id = drush_get_option('environment-id');
015d06b10d37 initial
dwinter
parents:
diff changeset
251 if (empty($env_id)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
252 $env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
253 }
015d06b10d37 initial
dwinter
parents:
diff changeset
254 if (count($args) > 0) {
015d06b10d37 initial
dwinter
parents:
diff changeset
255 foreach ($args as $type) {
015d06b10d37 initial
dwinter
parents:
diff changeset
256 apachesolr_index_mark_for_reindex($env_id, $type);
015d06b10d37 initial
dwinter
parents:
diff changeset
257 }
015d06b10d37 initial
dwinter
parents:
diff changeset
258 }
015d06b10d37 initial
dwinter
parents:
diff changeset
259 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
260 apachesolr_index_mark_for_reindex($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
261 }
015d06b10d37 initial
dwinter
parents:
diff changeset
262 drush_print(t('Marked content for reindexing'));
015d06b10d37 initial
dwinter
parents:
diff changeset
263 }
015d06b10d37 initial
dwinter
parents:
diff changeset
264
015d06b10d37 initial
dwinter
parents:
diff changeset
265 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
266 * Index all the items in the queue using a batch command
015d06b10d37 initial
dwinter
parents:
diff changeset
267 */
015d06b10d37 initial
dwinter
parents:
diff changeset
268 function apachesolr_drush_solr_index() {
015d06b10d37 initial
dwinter
parents:
diff changeset
269 module_load_include('inc', 'apachesolr', 'apachesolr.admin');
015d06b10d37 initial
dwinter
parents:
diff changeset
270 module_load_include('inc', 'apachesolr', 'apachesolr.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
271 $env_id = drush_get_option('environment-id');
015d06b10d37 initial
dwinter
parents:
diff changeset
272 if (empty($env_id)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
273 $env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
274 }
015d06b10d37 initial
dwinter
parents:
diff changeset
275 $total_limit = intval(drush_get_option('limit'));
015d06b10d37 initial
dwinter
parents:
diff changeset
276 apachesolr_index_batch_index_remaining($env_id, $total_limit);
015d06b10d37 initial
dwinter
parents:
diff changeset
277 drush_backend_batch_process();
015d06b10d37 initial
dwinter
parents:
diff changeset
278 }
015d06b10d37 initial
dwinter
parents:
diff changeset
279
015d06b10d37 initial
dwinter
parents:
diff changeset
280 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
281 * Get the last indexed document
015d06b10d37 initial
dwinter
parents:
diff changeset
282 *
015d06b10d37 initial
dwinter
parents:
diff changeset
283 * @param string $env_id
015d06b10d37 initial
dwinter
parents:
diff changeset
284 * @param string $entity_type
015d06b10d37 initial
dwinter
parents:
diff changeset
285 */
015d06b10d37 initial
dwinter
parents:
diff changeset
286 function apachesolr_drush_solr_get_last_indexed($env_id = NULL, $entity_type = 'node') {
015d06b10d37 initial
dwinter
parents:
diff changeset
287 if (NULL === $env_id) {
015d06b10d37 initial
dwinter
parents:
diff changeset
288 $env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
289 }
015d06b10d37 initial
dwinter
parents:
diff changeset
290 $return = apachesolr_get_last_index_position($env_id, $entity_type);
015d06b10d37 initial
dwinter
parents:
diff changeset
291 drush_print($return['last_entity_id']);
015d06b10d37 initial
dwinter
parents:
diff changeset
292 }
015d06b10d37 initial
dwinter
parents:
diff changeset
293
015d06b10d37 initial
dwinter
parents:
diff changeset
294 function apachesolr_drush_solr_get_next_indexed($env_id = NULL, $entity_type = 'node') {
015d06b10d37 initial
dwinter
parents:
diff changeset
295 module_load_include('inc', 'apachesolr', 'apachesolr.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
296 if (NULL === $env_id) {
015d06b10d37 initial
dwinter
parents:
diff changeset
297 $env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
298 }
015d06b10d37 initial
dwinter
parents:
diff changeset
299 $return = apachesolr_index_get_entities_to_index($env_id, $entity_type, 1);
015d06b10d37 initial
dwinter
parents:
diff changeset
300 $output = (isset($return[0]->entity_id)) ? $return[0]->entity_id : '0';
015d06b10d37 initial
dwinter
parents:
diff changeset
301 drush_print($output);
015d06b10d37 initial
dwinter
parents:
diff changeset
302 }
015d06b10d37 initial
dwinter
parents:
diff changeset
303
015d06b10d37 initial
dwinter
parents:
diff changeset
304 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
305 * Search the solr index using Drush
015d06b10d37 initial
dwinter
parents:
diff changeset
306 */
015d06b10d37 initial
dwinter
parents:
diff changeset
307 function apachesolr_drush_solr_search() {
015d06b10d37 initial
dwinter
parents:
diff changeset
308 $args = func_get_args();
015d06b10d37 initial
dwinter
parents:
diff changeset
309 $keys = implode(' ', $args);
015d06b10d37 initial
dwinter
parents:
diff changeset
310 foreach (apachesolr_search_search_execute($keys) as $result) {
015d06b10d37 initial
dwinter
parents:
diff changeset
311 $output = $result['fields']['path'];
015d06b10d37 initial
dwinter
parents:
diff changeset
312 if(isset($result['user']) && isset($result['node']->is_uid)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
313 $output .= ' ' . dt('by @name (user/@uid)', array('@name' => strip_tags($result['user']), '@uid' => $result['node']->is_uid));
015d06b10d37 initial
dwinter
parents:
diff changeset
314 }
015d06b10d37 initial
dwinter
parents:
diff changeset
315 $output .= "\n";
015d06b10d37 initial
dwinter
parents:
diff changeset
316 $output .= dt('title: ') . $result['title'] . "\n";
015d06b10d37 initial
dwinter
parents:
diff changeset
317 $output .= trim(preg_replace('/\s+/', ' ', strip_tags($result['snippet']))) . "\n\n";
015d06b10d37 initial
dwinter
parents:
diff changeset
318 drush_print($output);
015d06b10d37 initial
dwinter
parents:
diff changeset
319 }
015d06b10d37 initial
dwinter
parents:
diff changeset
320 }
015d06b10d37 initial
dwinter
parents:
diff changeset
321
015d06b10d37 initial
dwinter
parents:
diff changeset
322 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
323 * Get all the environments (using option all) or get the default environment id
015d06b10d37 initial
dwinter
parents:
diff changeset
324 */
015d06b10d37 initial
dwinter
parents:
diff changeset
325 function apachesolr_drush_solr_get_env_id() {
015d06b10d37 initial
dwinter
parents:
diff changeset
326 $all = drush_get_option('all');
015d06b10d37 initial
dwinter
parents:
diff changeset
327
015d06b10d37 initial
dwinter
parents:
diff changeset
328 if ($all) {
015d06b10d37 initial
dwinter
parents:
diff changeset
329 foreach (apachesolr_load_all_environments() as $id => $env) {
015d06b10d37 initial
dwinter
parents:
diff changeset
330 drush_print(drush_format($env['name'], $id));
015d06b10d37 initial
dwinter
parents:
diff changeset
331 }
015d06b10d37 initial
dwinter
parents:
diff changeset
332 }
015d06b10d37 initial
dwinter
parents:
diff changeset
333 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
334 $solr_env_id = apachesolr_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
335 drush_print($solr_env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
336 }
015d06b10d37 initial
dwinter
parents:
diff changeset
337 }
015d06b10d37 initial
dwinter
parents:
diff changeset
338
015d06b10d37 initial
dwinter
parents:
diff changeset
339 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
340 * Get the environment name based on the environment ID
015d06b10d37 initial
dwinter
parents:
diff changeset
341 *
015d06b10d37 initial
dwinter
parents:
diff changeset
342 * @print The environment name
015d06b10d37 initial
dwinter
parents:
diff changeset
343 *
015d06b10d37 initial
dwinter
parents:
diff changeset
344 * @return mixed APACHESOLR_ENV_ID_ERROR
015d06b10d37 initial
dwinter
parents:
diff changeset
345 * Only return error if the environment can't be found
015d06b10d37 initial
dwinter
parents:
diff changeset
346 */
015d06b10d37 initial
dwinter
parents:
diff changeset
347 function apachesolr_drush_solr_get_env_name() {
015d06b10d37 initial
dwinter
parents:
diff changeset
348 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
349 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
350 $environment = _apachesolr_drush_environment_load_and_validate($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
351 }
015d06b10d37 initial
dwinter
parents:
diff changeset
352 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
353 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
354 }
015d06b10d37 initial
dwinter
parents:
diff changeset
355 drush_print($environment['name']);
015d06b10d37 initial
dwinter
parents:
diff changeset
356 }
015d06b10d37 initial
dwinter
parents:
diff changeset
357
015d06b10d37 initial
dwinter
parents:
diff changeset
358 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
359 * Get the environment url based on the environment ID
015d06b10d37 initial
dwinter
parents:
diff changeset
360 *
015d06b10d37 initial
dwinter
parents:
diff changeset
361 * @print The environment url
015d06b10d37 initial
dwinter
parents:
diff changeset
362 *
015d06b10d37 initial
dwinter
parents:
diff changeset
363 * @return mixed APACHESOLR_ENV_ID_ERROR
015d06b10d37 initial
dwinter
parents:
diff changeset
364 * Only return error if the environment can't be found
015d06b10d37 initial
dwinter
parents:
diff changeset
365 */
015d06b10d37 initial
dwinter
parents:
diff changeset
366 function apachesolr_drush_solr_get_env_url() {
015d06b10d37 initial
dwinter
parents:
diff changeset
367 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
368 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
369 $environment = _apachesolr_drush_environment_load_and_validate($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
370 }
015d06b10d37 initial
dwinter
parents:
diff changeset
371 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
372 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
373 }
015d06b10d37 initial
dwinter
parents:
diff changeset
374 drush_print($environment['url']);
015d06b10d37 initial
dwinter
parents:
diff changeset
375 }
015d06b10d37 initial
dwinter
parents:
diff changeset
376
015d06b10d37 initial
dwinter
parents:
diff changeset
377 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
378 * Set the environment url based on the environment ID
015d06b10d37 initial
dwinter
parents:
diff changeset
379 *
015d06b10d37 initial
dwinter
parents:
diff changeset
380 * @param $url
015d06b10d37 initial
dwinter
parents:
diff changeset
381 *
015d06b10d37 initial
dwinter
parents:
diff changeset
382 * @return mixed APACHESOLR_ENV_ID_ERROR
015d06b10d37 initial
dwinter
parents:
diff changeset
383 * Only return error if the environment can't be found
015d06b10d37 initial
dwinter
parents:
diff changeset
384 */
015d06b10d37 initial
dwinter
parents:
diff changeset
385 function apachesolr_drush_solr_set_env_url($url) {
015d06b10d37 initial
dwinter
parents:
diff changeset
386 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
387 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
388 $environment = _apachesolr_drush_environment_load_and_validate($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
389 }
015d06b10d37 initial
dwinter
parents:
diff changeset
390 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
391 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
392 }
015d06b10d37 initial
dwinter
parents:
diff changeset
393 $environment['url'] = $url;
015d06b10d37 initial
dwinter
parents:
diff changeset
394 apachesolr_environment_save($environment);
015d06b10d37 initial
dwinter
parents:
diff changeset
395 }
015d06b10d37 initial
dwinter
parents:
diff changeset
396
015d06b10d37 initial
dwinter
parents:
diff changeset
397 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
398 * Command callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
399 *
015d06b10d37 initial
dwinter
parents:
diff changeset
400 * List your site's variables.
015d06b10d37 initial
dwinter
parents:
diff changeset
401 * much of it copied from drush core
015d06b10d37 initial
dwinter
parents:
diff changeset
402 *
015d06b10d37 initial
dwinter
parents:
diff changeset
403 * @param string $arg_name
015d06b10d37 initial
dwinter
parents:
diff changeset
404 *
015d06b10d37 initial
dwinter
parents:
diff changeset
405 * @return array|mixed Could be the variable or a drush error
015d06b10d37 initial
dwinter
parents:
diff changeset
406 */
015d06b10d37 initial
dwinter
parents:
diff changeset
407 function drush_apachesolr_solr_variable_get($arg_name = NULL) {
015d06b10d37 initial
dwinter
parents:
diff changeset
408 $output = NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
409
015d06b10d37 initial
dwinter
parents:
diff changeset
410 $found = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
411
015d06b10d37 initial
dwinter
parents:
diff changeset
412 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
413 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
414 $found = _apachesolr_drush_variable_like($env_id, $arg_name);
015d06b10d37 initial
dwinter
parents:
diff changeset
415 }
015d06b10d37 initial
dwinter
parents:
diff changeset
416 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
417 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
418 }
015d06b10d37 initial
dwinter
parents:
diff changeset
419
015d06b10d37 initial
dwinter
parents:
diff changeset
420 foreach ($found as $name => $value) {
015d06b10d37 initial
dwinter
parents:
diff changeset
421 drush_print_pipe(drush_format($value, $name, 'export'));
015d06b10d37 initial
dwinter
parents:
diff changeset
422 drush_print(drush_format($value, $name));
015d06b10d37 initial
dwinter
parents:
diff changeset
423 }
015d06b10d37 initial
dwinter
parents:
diff changeset
424
015d06b10d37 initial
dwinter
parents:
diff changeset
425 if (empty($found)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
426 return drush_set_error('DRUSH_VARIABLE_ERROR', 'No matching variable found.');
015d06b10d37 initial
dwinter
parents:
diff changeset
427 }
015d06b10d37 initial
dwinter
parents:
diff changeset
428 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
429 return $found;
015d06b10d37 initial
dwinter
parents:
diff changeset
430 }
015d06b10d37 initial
dwinter
parents:
diff changeset
431 }
015d06b10d37 initial
dwinter
parents:
diff changeset
432
015d06b10d37 initial
dwinter
parents:
diff changeset
433 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
434 * Command callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
435 * Set a variable.
015d06b10d37 initial
dwinter
parents:
diff changeset
436 *
015d06b10d37 initial
dwinter
parents:
diff changeset
437 * @param string $arg_name
015d06b10d37 initial
dwinter
parents:
diff changeset
438 * @param mixed $value
015d06b10d37 initial
dwinter
parents:
diff changeset
439 *
015d06b10d37 initial
dwinter
parents:
diff changeset
440 * @return mixed
015d06b10d37 initial
dwinter
parents:
diff changeset
441 */
015d06b10d37 initial
dwinter
parents:
diff changeset
442 function drush_apachesolr_solr_variable_set($arg_name, $value) {
015d06b10d37 initial
dwinter
parents:
diff changeset
443 $args = func_get_args();
015d06b10d37 initial
dwinter
parents:
diff changeset
444
015d06b10d37 initial
dwinter
parents:
diff changeset
445 if (!isset($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
446 return drush_set_error('DRUSH_VARIABLE_ERROR', dt('No value specified.'));
015d06b10d37 initial
dwinter
parents:
diff changeset
447 }
015d06b10d37 initial
dwinter
parents:
diff changeset
448
015d06b10d37 initial
dwinter
parents:
diff changeset
449 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
450 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
451 $found = _apachesolr_drush_variable_like($env_id, $arg_name, TRUE);
015d06b10d37 initial
dwinter
parents:
diff changeset
452 }
015d06b10d37 initial
dwinter
parents:
diff changeset
453 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
454 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
455 }
015d06b10d37 initial
dwinter
parents:
diff changeset
456
015d06b10d37 initial
dwinter
parents:
diff changeset
457 $options[] = "$arg_name ". dt('(new variable)');
015d06b10d37 initial
dwinter
parents:
diff changeset
458 $match = isset($found[$arg_name]);
015d06b10d37 initial
dwinter
parents:
diff changeset
459 if (!$match && $found) {
015d06b10d37 initial
dwinter
parents:
diff changeset
460 $options = array_merge($options, array_keys($found));
015d06b10d37 initial
dwinter
parents:
diff changeset
461 }
015d06b10d37 initial
dwinter
parents:
diff changeset
462
015d06b10d37 initial
dwinter
parents:
diff changeset
463 if ($value == '-') {
015d06b10d37 initial
dwinter
parents:
diff changeset
464 $value = stream_get_contents(STDIN);
015d06b10d37 initial
dwinter
parents:
diff changeset
465 }
015d06b10d37 initial
dwinter
parents:
diff changeset
466
015d06b10d37 initial
dwinter
parents:
diff changeset
467 // If the value is a string (usual case, unless we are called from code),
015d06b10d37 initial
dwinter
parents:
diff changeset
468 // then format the input
015d06b10d37 initial
dwinter
parents:
diff changeset
469 if (is_string($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
470 $value = _apachesolr_drush_variable_format($value, drush_get_option('format', 'auto'));
015d06b10d37 initial
dwinter
parents:
diff changeset
471 }
015d06b10d37 initial
dwinter
parents:
diff changeset
472
015d06b10d37 initial
dwinter
parents:
diff changeset
473 // Format the output for display
015d06b10d37 initial
dwinter
parents:
diff changeset
474 if (is_array($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
475 $display = "\n" . var_export($value, TRUE);
015d06b10d37 initial
dwinter
parents:
diff changeset
476 }
015d06b10d37 initial
dwinter
parents:
diff changeset
477 elseif (is_integer($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
478 $display = $value;
015d06b10d37 initial
dwinter
parents:
diff changeset
479 }
015d06b10d37 initial
dwinter
parents:
diff changeset
480 elseif (is_bool($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
481 $display = $value ? "TRUE" : "FALSE";
015d06b10d37 initial
dwinter
parents:
diff changeset
482 }
015d06b10d37 initial
dwinter
parents:
diff changeset
483 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
484 $display = '"' . $value . '"';
015d06b10d37 initial
dwinter
parents:
diff changeset
485 }
015d06b10d37 initial
dwinter
parents:
diff changeset
486
015d06b10d37 initial
dwinter
parents:
diff changeset
487 $name = NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
488 if (drush_get_option('always-set', FALSE) || $match) {
015d06b10d37 initial
dwinter
parents:
diff changeset
489 $name = $arg_name;
015d06b10d37 initial
dwinter
parents:
diff changeset
490 }
015d06b10d37 initial
dwinter
parents:
diff changeset
491 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
492 $choice = drush_choice($options, 'Enter a number to choose which variable to set.');
015d06b10d37 initial
dwinter
parents:
diff changeset
493 if ($choice !== FALSE) {
015d06b10d37 initial
dwinter
parents:
diff changeset
494 $name = ($choice == 0) ? $arg_name : $options[$choice];
015d06b10d37 initial
dwinter
parents:
diff changeset
495 }
015d06b10d37 initial
dwinter
parents:
diff changeset
496 }
015d06b10d37 initial
dwinter
parents:
diff changeset
497 if ($name) {
015d06b10d37 initial
dwinter
parents:
diff changeset
498 drush_op('apachesolr_environment_variable_set', $env_id, $name, $value);
015d06b10d37 initial
dwinter
parents:
diff changeset
499 drush_log(dt('!name was set to !value', array('!name' => $name, '!value' => $display)), 'success');
015d06b10d37 initial
dwinter
parents:
diff changeset
500 }
015d06b10d37 initial
dwinter
parents:
diff changeset
501 }
015d06b10d37 initial
dwinter
parents:
diff changeset
502
015d06b10d37 initial
dwinter
parents:
diff changeset
503 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
504 *
015d06b10d37 initial
dwinter
parents:
diff changeset
505 * Format a specific variable
015d06b10d37 initial
dwinter
parents:
diff changeset
506 *
015d06b10d37 initial
dwinter
parents:
diff changeset
507 * @param $value
015d06b10d37 initial
dwinter
parents:
diff changeset
508 * @param $format
015d06b10d37 initial
dwinter
parents:
diff changeset
509 *
015d06b10d37 initial
dwinter
parents:
diff changeset
510 * @return bool|int|string
015d06b10d37 initial
dwinter
parents:
diff changeset
511 */
015d06b10d37 initial
dwinter
parents:
diff changeset
512 function _apachesolr_drush_variable_format($value, $format) {
015d06b10d37 initial
dwinter
parents:
diff changeset
513 if ($format == 'auto') {
015d06b10d37 initial
dwinter
parents:
diff changeset
514 if (is_numeric($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
515 $format = 'integer';
015d06b10d37 initial
dwinter
parents:
diff changeset
516 }
015d06b10d37 initial
dwinter
parents:
diff changeset
517 elseif (($value == 'TRUE') || ($value == 'FALSE')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
518 $format = 'bool';
015d06b10d37 initial
dwinter
parents:
diff changeset
519 }
015d06b10d37 initial
dwinter
parents:
diff changeset
520 }
015d06b10d37 initial
dwinter
parents:
diff changeset
521
015d06b10d37 initial
dwinter
parents:
diff changeset
522 // Now, we parse the object.
015d06b10d37 initial
dwinter
parents:
diff changeset
523 switch ($format) {
015d06b10d37 initial
dwinter
parents:
diff changeset
524 case 'integer':
015d06b10d37 initial
dwinter
parents:
diff changeset
525 $value = (integer)$value;
015d06b10d37 initial
dwinter
parents:
diff changeset
526 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
527
015d06b10d37 initial
dwinter
parents:
diff changeset
528 case 'bool':
015d06b10d37 initial
dwinter
parents:
diff changeset
529 case 'boolean':
015d06b10d37 initial
dwinter
parents:
diff changeset
530 if ($value == 'TRUE') {
015d06b10d37 initial
dwinter
parents:
diff changeset
531 $value = TRUE;
015d06b10d37 initial
dwinter
parents:
diff changeset
532 }
015d06b10d37 initial
dwinter
parents:
diff changeset
533 elseif ($value == 'FALSE') {
015d06b10d37 initial
dwinter
parents:
diff changeset
534 $value = FALSE;
015d06b10d37 initial
dwinter
parents:
diff changeset
535 }
015d06b10d37 initial
dwinter
parents:
diff changeset
536 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
537 $value = (bool)$value;
015d06b10d37 initial
dwinter
parents:
diff changeset
538 }
015d06b10d37 initial
dwinter
parents:
diff changeset
539 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
540
015d06b10d37 initial
dwinter
parents:
diff changeset
541 case 'json':
015d06b10d37 initial
dwinter
parents:
diff changeset
542 $value = drush_json_decode($value);
015d06b10d37 initial
dwinter
parents:
diff changeset
543 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
544 }
015d06b10d37 initial
dwinter
parents:
diff changeset
545 return $value;
015d06b10d37 initial
dwinter
parents:
diff changeset
546 }
015d06b10d37 initial
dwinter
parents:
diff changeset
547
015d06b10d37 initial
dwinter
parents:
diff changeset
548 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
549 * Command callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
550 * Delete a variable.
015d06b10d37 initial
dwinter
parents:
diff changeset
551 * @param $arg_name
015d06b10d37 initial
dwinter
parents:
diff changeset
552 *
015d06b10d37 initial
dwinter
parents:
diff changeset
553 * @return string
015d06b10d37 initial
dwinter
parents:
diff changeset
554 */
015d06b10d37 initial
dwinter
parents:
diff changeset
555 function drush_apachesolr_solr_variable_delete($arg_name) {
015d06b10d37 initial
dwinter
parents:
diff changeset
556
015d06b10d37 initial
dwinter
parents:
diff changeset
557 $env_id = drush_get_option('id', apachesolr_default_environment());
015d06b10d37 initial
dwinter
parents:
diff changeset
558 // Look for similar variable names.
015d06b10d37 initial
dwinter
parents:
diff changeset
559 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
560 $found = _apachesolr_drush_variable_like($env_id, $arg_name, TRUE);
015d06b10d37 initial
dwinter
parents:
diff changeset
561 }
015d06b10d37 initial
dwinter
parents:
diff changeset
562 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
563 return drush_set_error('APACHESOLR_ENV_ID_ERROR', $e->getMessage());
015d06b10d37 initial
dwinter
parents:
diff changeset
564 }
015d06b10d37 initial
dwinter
parents:
diff changeset
565 drush_log(dt('Using environment ID "!env_id"', array('!env_id' => $env_id)), 'success');
015d06b10d37 initial
dwinter
parents:
diff changeset
566 $options = array_keys($found);
015d06b10d37 initial
dwinter
parents:
diff changeset
567
015d06b10d37 initial
dwinter
parents:
diff changeset
568 if (drush_get_option('exact', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
569 $options = isset($found[$arg_name]) ? array($arg_name) : array();
015d06b10d37 initial
dwinter
parents:
diff changeset
570 }
015d06b10d37 initial
dwinter
parents:
diff changeset
571
015d06b10d37 initial
dwinter
parents:
diff changeset
572 if (empty($options)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
573 drush_print(dt('!name not found.', array('!name' => $arg_name)));
015d06b10d37 initial
dwinter
parents:
diff changeset
574 return '';
015d06b10d37 initial
dwinter
parents:
diff changeset
575 }
015d06b10d37 initial
dwinter
parents:
diff changeset
576
015d06b10d37 initial
dwinter
parents:
diff changeset
577 $name = NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
578 if ((count($options) == 1) && drush_get_context('DRUSH_AFFIRMATIVE')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
579 $name = $arg_name;
015d06b10d37 initial
dwinter
parents:
diff changeset
580 }
015d06b10d37 initial
dwinter
parents:
diff changeset
581 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
582 $choice = drush_choice($options, 'Enter a number to choose which variable to delete.');
015d06b10d37 initial
dwinter
parents:
diff changeset
583 if ($choice !== FALSE) {
015d06b10d37 initial
dwinter
parents:
diff changeset
584 $name = $options[$choice];
015d06b10d37 initial
dwinter
parents:
diff changeset
585 }
015d06b10d37 initial
dwinter
parents:
diff changeset
586 }
015d06b10d37 initial
dwinter
parents:
diff changeset
587 if ($name) {
015d06b10d37 initial
dwinter
parents:
diff changeset
588 drush_op('apachesolr_environment_variable_del', $env_id, $name);
015d06b10d37 initial
dwinter
parents:
diff changeset
589 drush_log(dt('!choice was deleted.', array('!choice' => $name)), 'success');
015d06b10d37 initial
dwinter
parents:
diff changeset
590 }
015d06b10d37 initial
dwinter
parents:
diff changeset
591 }
015d06b10d37 initial
dwinter
parents:
diff changeset
592
015d06b10d37 initial
dwinter
parents:
diff changeset
593 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
594 * Load an environment from an id and validate the result.
015d06b10d37 initial
dwinter
parents:
diff changeset
595 *
015d06b10d37 initial
dwinter
parents:
diff changeset
596 * @param string $env_id
015d06b10d37 initial
dwinter
parents:
diff changeset
597 *
015d06b10d37 initial
dwinter
parents:
diff changeset
598 * @return array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
599 * @throws Exception
015d06b10d37 initial
dwinter
parents:
diff changeset
600 */
015d06b10d37 initial
dwinter
parents:
diff changeset
601 function _apachesolr_drush_environment_load_and_validate($env_id) {
015d06b10d37 initial
dwinter
parents:
diff changeset
602 $environment = apachesolr_environment_load($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
603 if (!$environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
604 throw new Exception(dt('!env_id is not a valid environment ID.', array('!env_id' => $env_id)));
015d06b10d37 initial
dwinter
parents:
diff changeset
605 }
015d06b10d37 initial
dwinter
parents:
diff changeset
606 drush_log(dt('Using environment ID: "!env_id"', array('!env_id' => $env_id)), 'success');
015d06b10d37 initial
dwinter
parents:
diff changeset
607 return $environment;
015d06b10d37 initial
dwinter
parents:
diff changeset
608 }
015d06b10d37 initial
dwinter
parents:
diff changeset
609
015d06b10d37 initial
dwinter
parents:
diff changeset
610 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
611 * Search for similar variable names.
015d06b10d37 initial
dwinter
parents:
diff changeset
612 *
015d06b10d37 initial
dwinter
parents:
diff changeset
613 * @param string $env_id
015d06b10d37 initial
dwinter
parents:
diff changeset
614 * @param string $arg
015d06b10d37 initial
dwinter
parents:
diff changeset
615 * @param bool|string $starts_with
015d06b10d37 initial
dwinter
parents:
diff changeset
616 *
015d06b10d37 initial
dwinter
parents:
diff changeset
617 * @throws Exception
015d06b10d37 initial
dwinter
parents:
diff changeset
618 *
015d06b10d37 initial
dwinter
parents:
diff changeset
619 * @return array $variable
015d06b10d37 initial
dwinter
parents:
diff changeset
620 * Only return it if found
015d06b10d37 initial
dwinter
parents:
diff changeset
621 */
015d06b10d37 initial
dwinter
parents:
diff changeset
622 function _apachesolr_drush_variable_like($env_id, $arg = NULL, $starts_with = FALSE) {
015d06b10d37 initial
dwinter
parents:
diff changeset
623 $found = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
624 $environment = _apachesolr_drush_environment_load_and_validate($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
625 if (!isset($arg)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
626 return $environment['conf'];
015d06b10d37 initial
dwinter
parents:
diff changeset
627 }
015d06b10d37 initial
dwinter
parents:
diff changeset
628 if ($starts_with) {
015d06b10d37 initial
dwinter
parents:
diff changeset
629 $pattern = "/^{$arg}/i";
015d06b10d37 initial
dwinter
parents:
diff changeset
630 }
015d06b10d37 initial
dwinter
parents:
diff changeset
631 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
632 $pattern = "/{$arg}/i";
015d06b10d37 initial
dwinter
parents:
diff changeset
633 }
015d06b10d37 initial
dwinter
parents:
diff changeset
634 foreach ($environment['conf'] as $name => $value) {
015d06b10d37 initial
dwinter
parents:
diff changeset
635 // Find all variable that start with $arg.
015d06b10d37 initial
dwinter
parents:
diff changeset
636 if (preg_match($pattern, $name)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
637 $found[$name] = $value;
015d06b10d37 initial
dwinter
parents:
diff changeset
638 }
015d06b10d37 initial
dwinter
parents:
diff changeset
639 }
015d06b10d37 initial
dwinter
parents:
diff changeset
640 return $found;
015d06b10d37 initial
dwinter
parents:
diff changeset
641 }
015d06b10d37 initial
dwinter
parents:
diff changeset
642