Drush: commands/core/variable.drush.inc Source File

  1. 7.x doxygen/html/variable_8drush_8inc_source.html
  2. master doxygen/html/variable_8drush_8inc_source.html
1 <?php
2 
4 
5 /**
6  * Implementation of hook_drush_command().
7  *
8  * In this hook, you specify which commands your
9  * drush module makes available, what it does and
10  * description.
11  *
12  * Notice how this structure closely resembles how
13  * you define menu hooks.
14  *
15  * @return
16  * An associative array describing your command(s).
17  */
18 function variable_drush_command() {
19  $items['variable-get'] = array(
20  'description' => 'Get a list of some or all site variables and values.',
21  'core' => array(6,7),
22  'arguments' => array(
23  'name' => 'A string to filter the variables by. Variables whose name contains the string will be listed.',
24  ),
25  'examples' => array(
26  'drush vget' => 'List all variables and values.',
27  'drush vget user' => 'List all variables containing the string "user".',
28  'drush vget site_mail --exact' => 'Show only the value of the variable with the exact key "site_mail".',
29  'drush vget site_mail --exact --pipe' => 'Show only the variable with the exact key "site_mail" without changing the structure of the output.',
30  ),
31  'options' => array(
32  'exact' => "Only get the one variable that exactly matches the specified name. Output will contain only the variable's value.",
33  ),
34  'outputformat' => array(
35  'default' => 'yaml',
36  'pipe-format' => 'config',
37  'variable-name' => 'variables',
38  'table-metadata' => array(
39  'format' => 'var_export',
40  ),
41  ),
42  'aliases' => array('vget'),
43  );
44  $items['variable-set'] = array(
45  'description' => "Set a variable.",
46  'core' => array(6,7),
47  'arguments' => array(
48  'name' => 'The name of a variable or the first few letters of its name.',
49  'value' => 'The value to assign to the variable. Use \'-\' to read the object from STDIN.',
50  ),
51  'required-arguments' => TRUE,
52  'options' => array(
53  'yes' => 'Skip confirmation if only one variable name matches.',
54  'always-set' => array('description' => 'Older synonym for --exact; deprecated.', 'hidden' => TRUE),
55  'exact' => 'The exact name of the variable to set has been provided; do not prompt for similarly-named variables.',
56  'format' => array(
57  'description' => 'Type for the value. Use "auto" to detect format from value. Other recognized values are string, integer float, or boolean for corresponding primitive type, or json, yaml for complex types.',
58  'example-value' => 'boolean',
59  ),
60  ),
61  'examples' => array(
62  'drush vset --yes preprocess_css TRUE' => 'Set the preprocess_css variable to true. Skip confirmation if variable already exists.',
63  'drush vset --exact maintenance_mode 1' => 'Take the site offline; skips confirmation even if maintenance_mode variable does not exist. Variable is rewritten to site_offline for Drupal 6.',
64  'drush vset pr TRUE' => 'Choose from a list of variables beginning with "pr" to set to (bool)true.',
65  'php -r "print json_encode(array(\'drupal\', \'simpletest\'));" | drush vset --format=json project_dependency_excluded_dependencies -'=> 'Set a variable to a complex value (e.g. array)',
66  ),
67  'aliases' => array('vset'),
68  );
69  $items['variable-delete'] = array(
70  'core' => array(6,7),
71  'description' => "Delete a variable.",
72  'arguments' => array(
73  'name' => 'The name of a variable or the first few letters of its name.',
74  ),
75  'required-arguments' => TRUE,
76  'options' => array(
77  'yes' => 'Skip confirmation if only one variable name matches.',
78  'exact' => 'Only delete the one variable that exactly matches the specified name.',
79  ),
80  'examples' => array(
81  'drush vdel user_pictures' => 'Delete the user_pictures variable.',
82  'drush vdel u' => 'Choose from a list of variables beginning with "u" to delete.',
83  'drush vdel -y --exact maintenance_mode' => 'Bring the site back online, skipping confirmation. Variable is rewritten to site_offline for Drupal 6.',
84  ),
85  'aliases' => array('vdel'),
86  );
87 
88  return $items;
89 }
90 
91 /**
92  * Command argument complete callback.
93  */
96 }
97 
98 /**
99  * Command argument complete callback.
100  */
103 }
104 
105 /**
106  * Command argument complete callback.
107  */
110 }
111 
112 /**
113  * List variables for completion.
114  *
115  * @return
116  * Array of available variables.
117  */
118 function variable_complete_variables() {
120  global $conf;
121  return array('values' => array_keys($conf));
122  }
123 }
124 
125 /**
126  * Command callback.
127  * List your site's variables.
128  */
129 function drush_variable_get() {
130  global $conf;
131  $exact = drush_get_option('exact', FALSE);
132 
133  $keys = array_keys($conf);
134  if ($args = func_get_args()) {
135  $args[0] = drush_variable_name_adjust($args[0]);
136  if ($exact) {
137  $keys = in_array($args[0], $keys) ? array($args[0]) : array();
138  }
139  $keys = preg_grep("/{$args[0]}/", $keys);
140  }
141 
142  // In --exact mode, if --pipe is not set, then simplify the return type.
143  if ($exact && !drush_get_context('DRUSH_PIPE')) {
144  $key = reset($keys);
145  $returns = isset($conf[$key]) ? $conf[$key] : FALSE;
146  }
147  else {
148  foreach ($keys as $name) {
149  $value = $conf[$name];
150  $returns[$name] = $value;
151  }
152  }
153  if (empty($keys)) {
154  return drush_set_error('No matching variable found.');
155  }
156  else {
157  return $returns;
158  }
159 }
160 
161 /**
162  * Command callback.
163  * Set a variable.
164  */
165 function drush_variable_set() {
166  $args = func_get_args();
167  $value = $args[1];
168  if (!isset($value)) {
169  return drush_set_error('DRUSH_VARIABLE_ERROR', dt('No value specified.'));
170  }
171 
172  $args[0] = drush_variable_name_adjust($args[0]);
173  $result = drush_variable_like($args[0]);
174 
175  $options[] = "$args[0] ". dt('(new variable)');
176  $match = FALSE;
177  while (!$match && $name = drush_db_result($result)) {
178  if ($name == $args[0]) {
179  $options[0] = $name;
180  $match = TRUE;
181  }
182  else {
183  $options[] = $name;
184  }
185  }
186 
187  if ($value == '-') {
188  $value = stream_get_contents(STDIN);
189  }
190 
191  // If the value is a string (usual case, unless we are called from code),
192  // then format the input
193  if (is_string($value)) {
194  $value = drush_value_format($value, drush_get_option('format', 'auto'));
195  }
196 
197  // Format the output for display
198  if (is_array($value)) {
199  $display = "\n" . var_export($value, TRUE);
200  }
201  elseif (is_integer($value)) {
202  $display = $value;
203  }
204  elseif (is_bool($value)) {
205  $display = $value ? "TRUE" : "FALSE";
206  }
207  else {
208  $display = '"' . $value . '"';
209  }
210 
211  // Check 'always-set' for compatibility with older scripts; --exact is preferred.
212  $always_set = drush_get_option('always-set', FALSE) || drush_get_option('exact', FALSE);
213 
214  if ($always_set || count($options) == 1 || $match) {
215  variable_set($args[0], $value);
216  drush_log(dt('!name was set to !value.', array('!name' => $args[0], '!value' => $display)), LogLevel::SUCCESS);
217  return '';
218  }
219  else {
220  $choice = drush_choice($options, 'Enter a number to choose which variable to set.');
221  if ($choice === FALSE) {
222  return drush_user_abort();
223  }
224  $choice = $options[$choice];
225  $choice = str_replace(' ' . dt('(new variable)'), '', $choice);
226  drush_op('variable_set', $choice, $value);
227  drush_log(dt('!name was set to !value', array('!name' => $choice, '!value' => $display)), LogLevel::SUCCESS);
228  }
229 }
230 
231 /**
232  * Command callback.
233  * Delete a variable.
234  */
235 function drush_variable_delete() {
236  $args = func_get_args();
237  $args[0] = drush_variable_name_adjust($args[0]);
238  // Look for similar variable names.
239  $result = drush_variable_like($args[0]);
240 
241  $options = array();
242  while ($name = drush_db_result($result)) {
243  $options[] = $name;
244  }
245  if (drush_get_option('exact', FALSE)) {
246  $options = in_array($args[0], $options) ? array($args[0]) : array();
247  }
248 
249  if (count($options) == 0) {
250  drush_print(dt('!name not found.', array('!name' => $args[0])));
251  return '';
252  }
253 
254  if ((count($options) == 1) && drush_get_context('DRUSH_AFFIRMATIVE')) {
255  drush_op('variable_del', $args[0]);
256  drush_log(dt('!name was deleted.', array('!name' => $args[0])), LogLevel::SUCCESS);
257  return '';
258  }
259  else {
260  $choice = drush_choice($options, 'Enter a number to choose which variable to delete.');
261  if ($choice !== FALSE) {
262  $choice = $options[$choice];
263  drush_op('variable_del', $choice);
264  drush_log(dt('!choice was deleted.', array('!choice' => $choice)), LogLevel::SUCCESS);
265  }
266  }
267 }
268 
269 // Query for similar variable names.
270 function drush_variable_like($arg) {
271  return drush_db_select('variable', 'name', 'name LIKE :keyword', array(':keyword' => $arg . '%'), NULL, NULL, 'name');
272 }
273 
274 // Unify similar variable names across different versions of Drupal
275 function drush_variable_name_adjust($arg) {
276  if (($arg == 'maintenance_mode') && (drush_drupal_major_version() < 7)) {
277  $arg = 'site_offline';
278  }
279  if (($arg == 'site_offline') && (drush_drupal_major_version() >= 7)) {
280  $arg = 'maintenance_mode';
281  }
282  return $arg;
283 }

File

doxygen/html/variable_8drush_8inc_source.html
View source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Drush: commands/core/variable.drush.inc Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Drush
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_afac61274991793aa7e9133a8f4f291e.html">commands</a></li><li class="navelem"><a class="el" href="dir_5762b63965e3a68a35f77c23b4dd4668.html">core</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">variable.drush.inc</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;&lt;?php</div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;use <a class="code" href="classDrush_1_1Log_1_1LogLevel.html">Drush\Log\LogLevel</a>;</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Implementation of hook_drush_command().</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * In this hook, you specify which commands your</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * drush module makes available, what it does and</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * description.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Notice how this structure closely resembles how</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * you define menu hooks.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * @return</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *   An associative array describing your command(s).</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">function</span> variable_drush_command() {</div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;  $items[<span class="stringliteral">&#39;variable-get&#39;</span>] = array(</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Get a list of some or all site variables and values.&#39;</span>,</div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(6,7),</div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;      <span class="stringliteral">&#39;name&#39;</span> =&gt; <span class="stringliteral">&#39;A string to filter the variables by. Variables whose name contains the string will be listed.&#39;</span>,</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    ),</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;      <span class="stringliteral">&#39;drush vget&#39;</span> =&gt; <span class="stringliteral">&#39;List all variables and values.&#39;</span>,</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;      <span class="stringliteral">&#39;drush vget user&#39;</span> =&gt; <span class="stringliteral">&#39;List all variables containing the string &quot;user&quot;.&#39;</span>,</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;      <span class="stringliteral">&#39;drush vget site_mail --exact&#39;</span> =&gt; <span class="stringliteral">&#39;Show only the value of the variable with the exact key &quot;site_mail&quot;.&#39;</span>,</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <span class="stringliteral">&#39;drush vget site_mail --exact --pipe&#39;</span> =&gt; <span class="stringliteral">&#39;Show only the variable with the exact key &quot;site_mail&quot; without changing the structure of the output.&#39;</span>,</div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    ),</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="stringliteral">&#39;options&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;      <span class="stringliteral">&#39;exact&#39;</span> =&gt; <span class="stringliteral">&quot;Only get the one variable that exactly matches the specified name.  Output will contain only the variable&#39;s value.&quot;</span>,</div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    ),</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="stringliteral">&#39;outputformat&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;      <span class="stringliteral">&#39;default&#39;</span> =&gt; <span class="stringliteral">&#39;yaml&#39;</span>,</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;      <span class="stringliteral">&#39;pipe-format&#39;</span> =&gt; <span class="stringliteral">&#39;config&#39;</span>,</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;      <span class="stringliteral">&#39;variable-name&#39;</span> =&gt; <span class="stringliteral">&#39;variables&#39;</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;      <span class="stringliteral">&#39;table-metadata&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        <span class="stringliteral">&#39;format&#39;</span> =&gt; <span class="stringliteral">&#39;var_export&#39;</span>,</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;      ),</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    ),</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="stringliteral">&#39;aliases&#39;</span> =&gt; array(<span class="stringliteral">&#39;vget&#39;</span>),</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;  );</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  $items[<span class="stringliteral">&#39;variable-set&#39;</span>] = array(</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&quot;Set a variable.&quot;</span>,</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(6,7),</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="stringliteral">&#39;name&#39;</span> =&gt; <span class="stringliteral">&#39;The name of a variable or the first few letters of its name.&#39;</span>,</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      <span class="stringliteral">&#39;value&#39;</span> =&gt; <span class="stringliteral">&#39;The value to assign to the variable. Use \&#39;-\&#39; to read the object from STDIN.&#39;</span>,</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    ),</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="stringliteral">&#39;required-arguments&#39;</span> =&gt; TRUE,</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="stringliteral">&#39;options&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <span class="stringliteral">&#39;yes&#39;</span> =&gt; <span class="stringliteral">&#39;Skip confirmation if only one variable name matches.&#39;</span>,</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;      <span class="stringliteral">&#39;always-set&#39;</span> =&gt; array(<span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Older synonym for --exact; deprecated.&#39;</span>, <span class="stringliteral">&#39;hidden&#39;</span> =&gt; TRUE),</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      <span class="stringliteral">&#39;exact&#39;</span> =&gt; <span class="stringliteral">&#39;The exact name of the variable to set has been provided; do not prompt for similarly-named variables.&#39;</span>,</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;      <span class="stringliteral">&#39;format&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Type for  the value. Use &quot;auto&quot; to detect format from value. Other recognized values are string, integer float, or boolean for corresponding primitive type, or json, yaml for complex types.&#39;</span>,</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="stringliteral">&#39;example-value&#39;</span> =&gt; <span class="stringliteral">&#39;boolean&#39;</span>,</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      ),</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    ),</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="stringliteral">&#39;drush vset --yes preprocess_css TRUE&#39;</span> =&gt; <span class="stringliteral">&#39;Set the preprocess_css variable to true. Skip confirmation if variable already exists.&#39;</span>,</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="stringliteral">&#39;drush vset --exact maintenance_mode 1&#39;</span> =&gt; <span class="stringliteral">&#39;Take the site offline; skips confirmation even if maintenance_mode variable does not exist. Variable is rewritten to site_offline for Drupal 6.&#39;</span>,</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;      <span class="stringliteral">&#39;drush vset pr TRUE&#39;</span> =&gt; <span class="stringliteral">&#39;Choose from a list of variables beginning with &quot;pr&quot; to set to (bool)true.&#39;</span>,</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;      <span class="stringliteral">&#39;php -r &quot;print json_encode(array(\&#39;drupal\&#39;, \&#39;simpletest\&#39;));&quot;  | drush vset --format=json project_dependency_excluded_dependencies -&#39;</span>=&gt; <span class="stringliteral">&#39;Set a variable to a complex value (e.g. array)&#39;</span>,</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    ),</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="stringliteral">&#39;aliases&#39;</span> =&gt; array(<span class="stringliteral">&#39;vset&#39;</span>),</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  );</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  $items[<span class="stringliteral">&#39;variable-delete&#39;</span>] = array(</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(6,7),</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&quot;Delete a variable.&quot;</span>,</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;      <span class="stringliteral">&#39;name&#39;</span> =&gt; <span class="stringliteral">&#39;The name of a variable or the first few letters of its name.&#39;</span>,</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    ),</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="stringliteral">&#39;required-arguments&#39;</span> =&gt; TRUE,</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="stringliteral">&#39;options&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <span class="stringliteral">&#39;yes&#39;</span> =&gt; <span class="stringliteral">&#39;Skip confirmation if only one variable name matches.&#39;</span>,</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      <span class="stringliteral">&#39;exact&#39;</span> =&gt; <span class="stringliteral">&#39;Only delete the one variable that exactly matches the specified name.&#39;</span>,</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    ),</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;      <span class="stringliteral">&#39;drush vdel user_pictures&#39;</span> =&gt; <span class="stringliteral">&#39;Delete the user_pictures variable.&#39;</span>,</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="stringliteral">&#39;drush vdel u&#39;</span> =&gt; <span class="stringliteral">&#39;Choose from a list of variables beginning with &quot;u&quot; to delete.&#39;</span>,</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      <span class="stringliteral">&#39;drush vdel -y --exact maintenance_mode&#39;</span> =&gt; <span class="stringliteral">&#39;Bring the site back online, skipping confirmation. Variable is rewritten to site_offline for Drupal 6.&#39;</span>,</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    ),</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="stringliteral">&#39;aliases&#39;</span> =&gt; array(<span class="stringliteral">&#39;vdel&#39;</span>),</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  );</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">return</span> $items;</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;}</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keyword">function</span> variable_variable_get_complete() {</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keywordflow">return</span> variable_complete_variables();</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;}</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">function</span> variable_variable_set_complete() {</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="keywordflow">return</span> variable_complete_variables();</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;}</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">function</span> variable_variable_delete_complete() {</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="keywordflow">return</span> variable_complete_variables();</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;}</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="comment"> * List variables for completion.</span></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="comment"> * @return</span></div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment"> *  Array of available variables.</span></div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="keyword">function</span> variable_complete_variables() {</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="keywordflow">if</span> (drush_bootstrap_max(DRUSH_BOOTSTRAP_DRUPAL_FULL)) {</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    global $conf;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordflow">return</span> array(<span class="stringliteral">&#39;values&#39;</span> =&gt; array_keys($conf));</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  }</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment"> * Command callback.</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment"> * List your site&#39;s variables.</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">function</span> drush_variable_get() {</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  global $conf;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  $exact = <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;exact&#39;</span>, FALSE);</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  $keys = array_keys($conf);</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keywordflow">if</span> ($args = func_get_args()) {</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    $args[0] = drush_variable_name_adjust($args[0]);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">if</span> ($exact) {</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      $keys = in_array($args[0], $keys) ? array($args[0]) : array();</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    }</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    $keys = preg_grep(<span class="stringliteral">&quot;/{$args[0]}/&quot;</span>, $keys);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  }</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">// In --exact mode, if --pipe is not set, then simplify the return type.</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">if</span> ($exact &amp;&amp; !<a class="code" href="context_8inc.html#ad25559f8d7d753f636fbeac347c29fc5">drush_get_context</a>(<span class="stringliteral">&#39;DRUSH_PIPE&#39;</span>)) {</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    $key = reset($keys);</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    $returns = isset($conf[$key]) ? $conf[$key] : FALSE;</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  }</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">foreach</span> ($keys as $name) {</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      $value = $conf[$name];</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      $returns[$name] = $value;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    }</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  <span class="keywordflow">if</span> (empty($keys)) {</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="group__errorhandling.html#ga23fe9e1e8c1e5ade39256106044b6da4">drush_set_error</a>(<span class="stringliteral">&#39;No matching variable found.&#39;</span>);</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  }</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordflow">return</span> $returns;</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;}</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="comment"> * Command callback.</span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment"> * Set a variable.</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="keyword">function</span> drush_variable_set() {</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  $args = func_get_args();</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  $value = $args[1];</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  <span class="keywordflow">if</span> (!isset($value)) {</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="group__errorhandling.html#ga23fe9e1e8c1e5ade39256106044b6da4">drush_set_error</a>(<span class="stringliteral">&#39;DRUSH_VARIABLE_ERROR&#39;</span>, <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;No value specified.&#39;</span>));</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  }</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  $args[0] = drush_variable_name_adjust($args[0]);</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  $result = drush_variable_like($args[0]);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  $options[] = <span class="stringliteral">&quot;$args[0] &quot;</span>. <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;(new variable)&#39;</span>);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  $match = FALSE;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">while</span> (!$match &amp;&amp; $name = <a class="code" href="group__dbfunctions.html#ga5e868125411566a8b7f72cb2140bf45f">drush_db_result</a>($result)) {</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">if</span> ($name == $args[0]) {</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      $options[0] = $name;</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      $match = TRUE;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    }</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      $options[] = $name;</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    }</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  }</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  <span class="keywordflow">if</span> ($value == <span class="charliteral">&#39;-&#39;</span>) {</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    $value = stream_get_contents(STDIN);</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  }</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// If the value is a string (usual case, unless we are called from code),</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="comment">// then format the input</span></div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="keywordflow">if</span> (is_string($value)) {</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    $value = drush_value_format($value, <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;format&#39;</span>, <span class="stringliteral">&#39;auto&#39;</span>));</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  }</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <span class="comment">// Format the output for display</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keywordflow">if</span> (is_array($value)) {</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    $display = <span class="stringliteral">&quot;\n&quot;</span> . var_export($value, TRUE);</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  }</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  elseif (is_integer($value)) {</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    $display = $value;</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  }</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  elseif (is_bool($value)) {</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    $display = $value ? <span class="stringliteral">&quot;TRUE&quot;</span> : <span class="stringliteral">&quot;FALSE&quot;</span>;</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  }</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    $display = <span class="charliteral">&#39;&quot;&#39;</span> . $value . <span class="charliteral">&#39;&quot;&#39;</span>;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  }</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="comment">// Check &#39;always-set&#39; for compatibility with older scripts; --exact is preferred.</span></div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  $always_set = <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;always-set&#39;</span>, FALSE) || <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;exact&#39;</span>, FALSE);</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keywordflow">if</span> ($always_set || count($options) == 1 || $match) {</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    variable_set($args[0], $value);</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <a class="code" href="group__logging.html#ga47324b65808524558a488916b150dd51">drush_log</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!name was set to !value.&#39;</span>, array(<span class="stringliteral">&#39;!name&#39;</span> =&gt; $args[0], <span class="stringliteral">&#39;!value&#39;</span> =&gt; $display)), LogLevel::SUCCESS);</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">return</span> <span class="stringliteral">&#39;&#39;</span>;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  }</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    $choice = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>($options, <span class="stringliteral">&#39;Enter a number to choose which variable to set.&#39;</span>);</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordflow">if</span> ($choice === FALSE) {</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="group__errorhandling.html#ga366aaafdf8c774a58653c64a65b6d91c">drush_user_abort</a>();</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    }</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    $choice = $options[$choice];</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    $choice = str_replace(<span class="charliteral">&#39; &#39;</span> . <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;(new variable)&#39;</span>), <span class="stringliteral">&#39;&#39;</span>, $choice);</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;variable_set&#39;</span>, $choice, $value);</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <a class="code" href="group__logging.html#ga47324b65808524558a488916b150dd51">drush_log</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!name was set to !value&#39;</span>, array(<span class="stringliteral">&#39;!name&#39;</span> =&gt; $choice, <span class="stringliteral">&#39;!value&#39;</span> =&gt; $display)), LogLevel::SUCCESS);</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  }</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;}</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="comment"> * Command callback.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="comment"> * Delete a variable.</span></div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="keyword">function</span> drush_variable_delete() {</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  $args = func_get_args();</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  $args[0] = drush_variable_name_adjust($args[0]);</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">// Look for similar variable names.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  $result = drush_variable_like($args[0]);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  $options = array();</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="keywordflow">while</span> ($name = <a class="code" href="group__dbfunctions.html#ga5e868125411566a8b7f72cb2140bf45f">drush_db_result</a>($result)) {</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    $options[] = $name;</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  }</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;exact&#39;</span>, FALSE)) {</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    $options = in_array($args[0], $options) ? array($args[0]) : array();</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  }</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="keywordflow">if</span> (count($options) == 0) {</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <a class="code" href="group__outputfunctions.html#ga63acbb94925d6d2693e235e966bba740">drush_print</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!name not found.&#39;</span>, array(<span class="stringliteral">&#39;!name&#39;</span> =&gt; $args[0])));</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keywordflow">return</span> <span class="stringliteral">&#39;&#39;</span>;</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  }</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keywordflow">if</span> ((count($options) == 1) &amp;&amp; <a class="code" href="context_8inc.html#ad25559f8d7d753f636fbeac347c29fc5">drush_get_context</a>(<span class="stringliteral">&#39;DRUSH_AFFIRMATIVE&#39;</span>)) {</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;variable_del&#39;</span>, $args[0]);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="group__logging.html#ga47324b65808524558a488916b150dd51">drush_log</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!name was deleted.&#39;</span>, array(<span class="stringliteral">&#39;!name&#39;</span> =&gt; $args[0])), LogLevel::SUCCESS);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="keywordflow">return</span> <span class="stringliteral">&#39;&#39;</span>;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  }</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    $choice = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>($options, <span class="stringliteral">&#39;Enter a number to choose which variable to delete.&#39;</span>);</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">if</span> ($choice !== FALSE) {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      $choice = $options[$choice];</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;variable_del&#39;</span>, $choice);</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <a class="code" href="group__logging.html#ga47324b65808524558a488916b150dd51">drush_log</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!choice was deleted.&#39;</span>, array(<span class="stringliteral">&#39;!choice&#39;</span> =&gt; $choice)), LogLevel::SUCCESS);</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    }</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;}</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="comment">// Query for similar variable names.</span></div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="keyword">function</span> drush_variable_like($arg) {</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="group__dbfunctions.html#gaaf67a267a19ac63f7eb05721b2170f89">drush_db_select</a>(<span class="stringliteral">&#39;variable&#39;</span>, <span class="stringliteral">&#39;name&#39;</span>, <span class="stringliteral">&#39;name LIKE :keyword&#39;</span>, array(<span class="stringliteral">&#39;:keyword&#39;</span> =&gt; $arg . <span class="charliteral">&#39;%&#39;</span>), NULL, NULL, <span class="stringliteral">&#39;name&#39;</span>);</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;}</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="comment">// Unify similar variable names across different versions of Drupal</span></div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keyword">function</span> drush_variable_name_adjust($arg) {</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="keywordflow">if</span> (($arg == <span class="stringliteral">&#39;maintenance_mode&#39;</span>) &amp;&amp; (<a class="code" href="drupal_8inc.html#ad2ccab77d4bc8e7355186f26cd328ac0">drush_drupal_major_version</a>() &lt; 7)) {</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    $arg = <span class="stringliteral">&#39;site_offline&#39;</span>;</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  }</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  <span class="keywordflow">if</span> (($arg == <span class="stringliteral">&#39;site_offline&#39;</span>) &amp;&amp; (<a class="code" href="drupal_8inc.html#ad2ccab77d4bc8e7355186f26cd328ac0">drush_drupal_major_version</a>() &gt;= 7)) {</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    $arg = <span class="stringliteral">&#39;maintenance_mode&#39;</span>;</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  }</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="keywordflow">return</span> $arg;</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Nov 2 2016 07:28:54 for Drush by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body>
</html>