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

  1. 7.x doxygen/html/field_8drush_8inc_source.html
  2. master doxygen/html/field_8drush_8inc_source.html
field.drush.inc
Go to the documentation of this file.
1 <?php
2 
3 /**
4  * @file
5  * Field API's drush integration
6  */
7 
8 /**
9  * Implementation of hook_drush_help().
10  */
11 function field_drush_help($section) {
12  switch ($section) {
13  case 'meta:field:title':
14  return dt('Field commands');
15  case 'meta:field:summary':
16  return dt('Manipulate Drupal 7+ fields.');
17  }
18 }
19 
20 /**
21  * Implementation of hook_drush_command().
22  */
23 function field_drush_command() {
24  $items['field-create'] = array(
25  'description' => 'Create fields and instances. Returns urls for field editing.',
26  'core' => array('7+'),
27  'arguments' => array(
28  'bundle' => 'Content type (for nodes). Name of bundle to attach fields to. Required.',
29  'field_spec' => 'Comma delimited triple in the form: field_name,field_type,widget_name. If widget_name is omitted, the default widget will be used. Separate multiple fields by space. If omitted, a wizard will prompt you.'
30  ),
31  'required-arguments' => 1,
32  'options' => array(
33  'entity_type' => 'Type of entity (e.g. node, user, comment). Defaults to node.',
34  ),
35  'examples' => array(
36  'drush field-create article' => 'Define new article fields via interactive prompts.',
37  'open `drush field-create article`' => 'Define new article fields and then open field edit form for refinement.',
38  'drush field-create article city,text,text_textfield subtitle,text,text_textfield' => 'Create two new fields.'
39  ),
40  );
41  $items['field-update'] = array(
42  'description' => 'Return URL for field editing web page.',
43  'core' => array('7+'),
44  'arguments' => array(
45  'field_name' => 'Name of field that needs updating.',
46  ),
47  'examples' => array(
48  'field-update comment_body' => 'Quickly navigate to a field edit web page.',
49  ),
50  );
51  $items['field-delete'] = array(
52  'description' => 'Delete a field and its instances.',
53  'core' => array('7+'),
54  'arguments' => array(
55  'field_name' => 'Name of field to delete.',
56  ),
57  'options' => array(
58  'bundle' => 'Only delete the instance attached to this bundle. If omitted, admin can choose to delete one instance or whole field.',
59  'entity_type' => 'Disambiguate a particular bundle from identically named bundles. Usually not needed.'
60  ),
61  'examples' => array(
62  'field-delete city' => 'Delete the city field and any instances it might have.',
63  'field-delete city --bundle=article' => 'Delete the city instance on the article bundle',
64  ),
65  );
66  $items['field-clone'] = array(
67  'description' => 'Clone a field and all its instances.',
68  'core' => array('7+'),
69  'arguments' => array(
70  'source_field_name' => 'Name of field that will be cloned',
71  'target_field_name' => 'Name of new, cloned field.',
72  ),
73  'examples' => array(
74  'field-clone tags labels' => 'Copy \'tags\' field into a new field \'labels\' field which has same instances.',
75  'open `field-clone tags labels`' => 'Clone field and then open field edit forms for refinement.',
76  ),
77  );
78  $items['field-info'] = array(
79  'description' => 'View information about fields, field_types, and widgets.',
80  'core' => array('7+'),
81  'arguments' => array(
82  'type' => 'Recognized values: fields, types. If omitted, a choice list appears.',
83  ),
84  'examples' => array(
85  'field-info types' => 'Show a table which lists all field types and their available widgets',
86  ),
87  'outputformat' => array(
88  'default' => 'table',
89  'pipe-format' => 'csv',
90  'field-labels' => array(
91  'field-name' => 'Field name',
92  'type' => 'Field type',
93  'bundle' => 'Field bundle',
94  'type-name' => 'Type name',
95  'widget' => 'Default widget',
96  'widgets' => 'Widgets',
97  ),
98  'table-metadata' => array(
99  'process-cell' => '_drush_field_info_process_cell',
100  ),
101  'output-data-type' => 'format-table',
102  ),
103  );
104  return $items;
105 }
106 
107 /**
108  * Command argument complete callback.
109  */
112  $all = array();
113  $info = field_info_bundles();
114  foreach ($info as $entity_type => $bundles) {
115  $all = array_merge($all, array_keys($bundles));
116  }
117  return array('values' => array_unique($bundles));
118  }
119 }
120 
121 /**
122  * Command argument complete callback.
123  */
126 }
127 
128 /**
129  * Command argument complete callback.
130  */
133 }
134 
135 /**
136  * Command argument complete callback.
137  */
140 }
141 
142 /**
143  * Command argument complete callback.
144  */
146  return array('values' => array('fields', 'types'));
147 }
148 
149 /**
150  * List field names for completion.
151  *
152  * @return
153  * Array of available site aliases.
154  */
157  $info = field_info_fields();
158  return array('values' => array_keys($info));
159  }
160 }
161 
162 function drush_field_create($bundle) {
163  $entity_type = drush_get_option('entity_type', 'node');
164 
165  $args = func_get_args();
166  array_shift($args);
167  if (empty($args)) {
168  // Just one item in this array for now.
169  $args[] = drush_field_create_wizard();
170  }
171 
172  // Iterate over each field spec.
173  foreach ($args as $string) {
174  list($name, $type, $widget) = explode(',', $string);
175  $info = field_info_field($name);
176  if (empty($info)) {
177  // Field does not exist already. Create it.
178  $field = array(
179  'field_name' => $name,
180  'type' => $type,
181  );
182  drush_op('field_create_field', $field);
183  }
184 
185  // Create the instance.
186  $instance = array(
187  'field_name' => $name,
188  'entity_type' => $entity_type,
189  'bundle' => $bundle,
190  );
191  if ($widget) {
192  $instance['widget'] = array('type' => $widget);
193  }
194  drush_op('field_create_instance', $instance);
195 
196  $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . '/fields/' . $name, array('absolute' => TRUE));
197  }
198  drush_print(implode(' ', $urls));
199 }
200 
201 // Copy of function _field_ui_bundle_admin_path() since we don't want to load UI module.
202 function drush_field_ui_bundle_admin_path($entity_type, $bundle_name) {
203  $bundles = field_info_bundles($entity_type);
204  $bundle_info = $bundles[$bundle_name];
205  if (isset($bundle_info['admin'])) {
206  return isset($bundle_info['admin']['real path']) ? $bundle_info['admin']['real path'] : $bundle_info['admin']['path'];
207  }
208 }
209 
210 function drush_field_update($field_name) {
211  $info = field_info_field($field_name);
212  foreach ($info['bundles'] as $entity_type => $bundles) {
213  foreach ($bundles as $bundle) {
214  $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . '/fields/' . $field_name, array('absolute' => TRUE));
215  }
216  }
217  drush_print(implode(' ', $urls));
218 }
219 
220 function drush_field_delete($field_name) {
221  $info = field_info_field($field_name);
222  $confirm = TRUE;
223 
224  if (!$bundle = drush_get_option('bundle')) {
225  foreach ($info['bundles'] as $entity_type => $bundles) {
226  foreach ($bundles as $bundle) {
227  $all_bundles[] = $bundle;
228  }
229  }
230  if (count($all_bundles) > 1) {
231  $options = array_merge(array('all' => dt('All bundles')), array_combine($all_bundles, $all_bundles));
232  $bundle = drush_choice($options, dt("Choose a particular bundle or 'All bundles'"));
233  if (!$bundle) {
234  return drush_user_abort();
235  }
236  $confirm = FALSE;
237  }
238  else {
239  if (!drush_confirm(dt('Do you want to delete the !field_name field?', array('!field_name' => $field_name)))) {
240  return drush_user_abort();
241  }
242  }
243  }
244 
245  if ($bundle == 'all') {
246  foreach ($info['bundles'] as $entity_type => $bundles) {
247  foreach ($bundles as $bundle) {
248  $instance = field_info_instance($entity_type, $field_name, $bundle);
249  drush_op('field_delete_instance', $instance);
250  }
251  }
252  }
253  else {
254  $entity_type = drush_field_get_entity_from_bundle($bundle);
255  $instance = field_info_instance($entity_type, $field_name, $bundle);
256  drush_op('field_delete_instance', $instance);
257  }
258 
259  // If there are no more bundles, delete the field.
260  $info = field_info_field($field_name);
261  if (empty($info['bundles'])) {
262  drush_op('field_delete_field', $field_name);
263  }
264 }
265 
266 function drush_field_clone($source_field_name, $target_field_name) {
267  if (!$info = field_info_field($source_field_name)) {
268  return drush_set_error(dt('!source not found in field list.', array('!source' => $source_field_name)));
269  }
270 
271  unset($info['id']);
272  $info['field_name'] = $target_field_name;
273  $target = drush_op('field_create_field', $info);
274 
275  foreach ($info['bundles'] as $entity_type => $bundles) {
276  foreach ($bundles as $bundle) {
277  $instance = field_info_instance($entity_type, $source_field_name, $bundle);
278  $instance['field_name'] = $target_field_name;
279  unset($instance['id']);
280  $instance['field_id'] = $target['id'];
281  drush_op('field_create_instance', $instance);
282  $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . '/fields/' . $target_field_name, array('absolute' => TRUE));
283  }
284  }
285 
286  drush_print(implode(' ', $urls));
287 }
288 
289 function drush_field_info($type = NULL) {
290  if (!isset($type)) {
291  // Don't ask in 'pipe' mode -- just default to 'fields'.
292  if (drush_get_context('DRUSH_PIPE')) {
293  $type = 'fields';
294  }
295  else {
296  $type = drush_choice(array_combine(array('types', 'fields'), array('types', 'fields')), dt('Which information do you wish to see?'));
297  }
298  }
299 
300  $result = array();
301  switch ($type) {
302  case 'fields':
303  drush_hide_output_fields(array('type-name', 'widget', 'widgets'));
304  $info = field_info_fields();
305  foreach ($info as $field_name => $field) {
306  $bundle_strs = array();
307  foreach ($field['bundles'] as $entity_type => $bundles) {
308  $bundle_strs += $bundles;
309  }
310  $result[$field_name] = array(
311  'field-name' => $field_name,
312  'type' => $field['type'],
313  'bundle' => $bundle_strs,
314  );
315  }
316  break;
317  case 'types':
318  drush_hide_output_fields(array('field-name', 'type', 'bundle'));
319  $info = field_info_field_types();
320  module_load_include('inc', 'field_ui', 'field_ui.admin');
321  $widgets = field_info_widget_types();
322  foreach ($info as $type_name => $type) {
323  $widgets = field_ui_widget_type_options($type_name);
324  $result[$type_name] = array(
325  'type-name' => $type_name,
326  'widget' => $type['default_widget'],
327  'widgets' => $widgets,
328  );
329  }
330  break;
331  default:
332  return drush_set_error('DRUSH_FIELD_INVALID_SELECTION', dt("Argument for drush field-info must be 'fields' or 'types'"));
333  }
334 
335  return $result;
336 }
337 
338 /**
339  * We need to handle the formatting of cells in table-format
340  * output specially. In 'types' output, the output data is a simple
341  * associative array of machine names => human-readable names.
342  * We choose to show the machine names. In 'fields' output, the
343  * output data is a list of entity types, each of which contains a list
344  * of bundles. We comma-separate the bundles, and space-separate
345  * the entities.
346  */
347 function _drush_field_info_process_cell($data, $metadata) {
348  $first = reset($data);
349  if (is_array($first)) {
350  foreach($data as $entity => $bundles) {
351  $list[] = drush_format($bundles, array(), 'csv');
352  }
353  return drush_format($list, array(), 'list');
354  }
355  return drush_format(array_keys($data), array(), 'csv');
356 }
357 
358 /**
359  * Prompt user enough to create basic field and instance.
360  *
361  * @return array $field_spec
362  * An array of brief field specifications.
363  */
365  $specs[] = drush_prompt(dt('Field name'));
366  module_load_include('inc', 'field_ui', 'field_ui.admin');
367  $types = field_ui_field_type_options();
368  $field_type = drush_choice($types, dt('Choose a field type'));
369  $specs[] = $field_type;
370  $widgets = field_ui_widget_type_options($field_type);
371  $specs[] = drush_choice($widgets, dt('Choose a widget'));
372  return implode(',', $specs);
373 }
374 
375 function drush_field_get_entity_from_bundle($bundle) {
376  if (drush_get_option('entity_type')) {
377  return drush_get_option('entity_type');
378  }
379  else {
380  $info = field_info_bundles();
381  foreach ($info as $entity_type => $bundles) {
382  if (isset($bundles[$bundle])) {
383  return $entity_type;
384  }
385  }
386  }
387 }

File

doxygen/html/field_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/field.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">field.drush.inc</div>  </div>
</div><!--header-->
<div class="contents">
<a href="field_8drush_8inc.html">Go to the documentation of this file.</a><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;<span class="comment"></span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * @file</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Field API&#39;s drush integration</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> */</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">/**</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * Implementation of hook_drush_help().</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#af51a2d428f99cd39e1a51651f93f5391">   11</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#af51a2d428f99cd39e1a51651f93f5391">field_drush_help</a>($section) {</div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;  <span class="keywordflow">switch</span> ($section) {</div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;    <span class="keywordflow">case</span> <span class="stringliteral">&#39;meta:field:title&#39;</span>:</div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Field commands&#39;</span>);</div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;    <span class="keywordflow">case</span> <span class="stringliteral">&#39;meta:field:summary&#39;</span>:</div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Manipulate Drupal 7+ fields.&#39;</span>);</div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;  }</div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;}</div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * Implementation of hook_drush_command().</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a33651a206b85bedf4d3628fe0dc12a92">   23</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a33651a206b85bedf4d3628fe0dc12a92">field_drush_command</a>() {</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;  $items[<span class="stringliteral">&#39;field-create&#39;</span>] = array(</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Create fields and instances. Returns urls for field editing.&#39;</span>,</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(<span class="stringliteral">&#39;7+&#39;</span>),</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;      <span class="stringliteral">&#39;bundle&#39;</span> =&gt; <span class="stringliteral">&#39;Content type (for nodes). Name of bundle to attach fields to. Required.&#39;</span>,</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;      <span class="stringliteral">&#39;field_spec&#39;</span> =&gt; <span class="stringliteral">&#39;Comma delimited triple in the form: field_name,field_type,widget_name. If widget_name is omitted, the default widget will be used. Separate multiple fields by space. If omitted, a wizard will prompt you.&#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;required-arguments&#39;</span> =&gt; 1,</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="stringliteral">&#39;options&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;      <span class="stringliteral">&#39;entity_type&#39;</span> =&gt; <span class="stringliteral">&#39;Type of entity (e.g. node, user, comment). Defaults to node.&#39;</span>,</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    ),</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;      <span class="stringliteral">&#39;drush field-create article&#39;</span> =&gt; <span class="stringliteral">&#39;Define new article fields via interactive prompts.&#39;</span>,</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;      <span class="stringliteral">&#39;open `drush field-create article`&#39;</span> =&gt; <span class="stringliteral">&#39;Define new article fields and then open field edit form for refinement.&#39;</span>,</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;      <span class="stringliteral">&#39;drush field-create article city,text,text_textfield subtitle,text,text_textfield&#39;</span> =&gt; <span class="stringliteral">&#39;Create two new fields.&#39;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    ),</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;  $items[<span class="stringliteral">&#39;field-update&#39;</span>] = array(</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Return URL for field editing web page.&#39;</span>,</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(<span class="stringliteral">&#39;7+&#39;</span>),</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="stringliteral">&#39;field_name&#39;</span> =&gt; <span class="stringliteral">&#39;Name of field that needs updating.&#39;</span>,</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    ),</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="stringliteral">&#39;field-update comment_body&#39;</span> =&gt; <span class="stringliteral">&#39;Quickly navigate to a field edit web page.&#39;</span>,</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    ),</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;  $items[<span class="stringliteral">&#39;field-delete&#39;</span>] = array(</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Delete a field and its instances.&#39;</span>,</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(<span class="stringliteral">&#39;7+&#39;</span>),</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;      <span class="stringliteral">&#39;field_name&#39;</span> =&gt; <span class="stringliteral">&#39;Name of field to delete.&#39;</span>,</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    ),</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="stringliteral">&#39;options&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="stringliteral">&#39;bundle&#39;</span> =&gt; <span class="stringliteral">&#39;Only delete the instance attached to this bundle. If omitted, admin can choose to delete one instance or whole field.&#39;</span>,</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;      <span class="stringliteral">&#39;entity_type&#39;</span> =&gt; <span class="stringliteral">&#39;Disambiguate a particular bundle from identically named bundles. Usually not needed.&#39;</span></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;field-delete city&#39;</span> =&gt; <span class="stringliteral">&#39;Delete the city field and any instances it might have.&#39;</span>,</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;      <span class="stringliteral">&#39;field-delete city --bundle=article&#39;</span> =&gt; <span class="stringliteral">&#39;Delete the city instance on the article bundle&#39;</span>,</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    ),</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  );</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  $items[<span class="stringliteral">&#39;field-clone&#39;</span>] = array(</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;Clone a field and all its instances.&#39;</span>,</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(<span class="stringliteral">&#39;7+&#39;</span>),</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;      <span class="stringliteral">&#39;source_field_name&#39;</span> =&gt; <span class="stringliteral">&#39;Name of field that will be cloned&#39;</span>,</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      <span class="stringliteral">&#39;target_field_name&#39;</span> =&gt; <span class="stringliteral">&#39;Name of new, cloned field.&#39;</span>,</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    ),</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;      <span class="stringliteral">&#39;field-clone tags labels&#39;</span> =&gt; <span class="stringliteral">&#39;Copy \&#39;tags\&#39; field into a new field \&#39;labels\&#39; field which has same instances.&#39;</span>,</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;      <span class="stringliteral">&#39;open `field-clone tags labels`&#39;</span> =&gt; <span class="stringliteral">&#39;Clone field and then open field edit forms for refinement.&#39;</span>,</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    ),</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  );</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  $items[<span class="stringliteral">&#39;field-info&#39;</span>] = array(</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="stringliteral">&#39;description&#39;</span> =&gt; <span class="stringliteral">&#39;View information about fields, field_types, and widgets.&#39;</span>,</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="stringliteral">&#39;core&#39;</span> =&gt; array(<span class="stringliteral">&#39;7+&#39;</span>),</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="stringliteral">&#39;arguments&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      <span class="stringliteral">&#39;type&#39;</span> =&gt; <span class="stringliteral">&#39;Recognized values: fields, types. If omitted, a choice list appears.&#39;</span>,</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    ),</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="stringliteral">&#39;examples&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      <span class="stringliteral">&#39;field-info types&#39;</span> =&gt; <span class="stringliteral">&#39;Show a table which lists all field types and their available widgets&#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;    <span class="stringliteral">&#39;outputformat&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      <span class="stringliteral">&#39;default&#39;</span> =&gt; <span class="stringliteral">&#39;table&#39;</span>,</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;      <span class="stringliteral">&#39;pipe-format&#39;</span> =&gt; <span class="stringliteral">&#39;csv&#39;</span>,</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;      <span class="stringliteral">&#39;field-labels&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <span class="stringliteral">&#39;field-name&#39;</span> =&gt; <span class="stringliteral">&#39;Field name&#39;</span>,</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="stringliteral">&#39;type&#39;</span> =&gt; <span class="stringliteral">&#39;Field type&#39;</span>,</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="stringliteral">&#39;bundle&#39;</span> =&gt; <span class="stringliteral">&#39;Field bundle&#39;</span>,</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="stringliteral">&#39;type-name&#39;</span> =&gt; <span class="stringliteral">&#39;Type name&#39;</span>,</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="stringliteral">&#39;widget&#39;</span> =&gt; <span class="stringliteral">&#39;Default widget&#39;</span>,</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="stringliteral">&#39;widgets&#39;</span> =&gt; <span class="stringliteral">&#39;Widgets&#39;</span>,</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      ),</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      <span class="stringliteral">&#39;table-metadata&#39;</span> =&gt; array(</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="stringliteral">&#39;process-cell&#39;</span> =&gt; <span class="stringliteral">&#39;_drush_field_info_process_cell&#39;</span>,</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      ),</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      <span class="stringliteral">&#39;output-data-type&#39;</span> =&gt; <span class="stringliteral">&#39;format-table&#39;</span>,</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    ),</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="keywordflow">return</span> $items;</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;}</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="comment"></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="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a3b9c0d18418e620dd2561341c5daf350">  110</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a3b9c0d18418e620dd2561341c5daf350">field_field_create_complete</a>() {</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="keywordflow">if</span> (drush_bootstrap_max(DRUSH_BOOTSTRAP_DRUPAL_FULL)) {</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    $all = array();</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    $info = field_info_bundles();</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">foreach</span> ($info as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      $all = array_merge($all, array_keys($bundles));</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    }</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordflow">return</span> array(<span class="stringliteral">&#39;values&#39;</span> =&gt; array_unique($bundles));</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  }</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;}</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#aad91205da579ccc4938835bc5fbe0da5">  124</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#aad91205da579ccc4938835bc5fbe0da5">field_field_update_complete</a>() {</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="field_8drush_8inc.html#a4c1167a0ddfcac9e81383991832d77c5">field_field_complete_field_names</a>();</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment"></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="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a310e8c1aa572a5ee32afb5ea5801bce4">  131</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a310e8c1aa572a5ee32afb5ea5801bce4">field_field_delete_complete</a>() {</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="field_8drush_8inc.html#a4c1167a0ddfcac9e81383991832d77c5">field_field_complete_field_names</a>();</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;}</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a936e8ba705f6948c31ee111d01ddf39b">  138</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a936e8ba705f6948c31ee111d01ddf39b">field_field_clone_complete</a>() {</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="field_8drush_8inc.html#a4c1167a0ddfcac9e81383991832d77c5">field_field_complete_field_names</a>();</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;<span class="comment"></span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="comment"> * Command argument complete callback.</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a6ca713f12f3e3018ec73fc1ef01b1955">  145</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a6ca713f12f3e3018ec73fc1ef01b1955">field_field_info_complete</a>() {</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordflow">return</span> array(<span class="stringliteral">&#39;values&#39;</span> =&gt; array(<span class="stringliteral">&#39;fields&#39;</span>, <span class="stringliteral">&#39;types&#39;</span>));</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;}</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="comment"> * List field names for completion.</span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="comment"> * @return</span></div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="comment"> *  Array of available site aliases.</span></div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a4c1167a0ddfcac9e81383991832d77c5">  155</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a4c1167a0ddfcac9e81383991832d77c5">field_field_complete_field_names</a>() {</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="keywordflow">if</span> (drush_bootstrap_max(DRUSH_BOOTSTRAP_DRUPAL_FULL)) {</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    $info = field_info_fields();</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keywordflow">return</span> array(<span class="stringliteral">&#39;values&#39;</span> =&gt; array_keys($info));</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;}</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="keyword">function</span> drush_field_create($bundle) {</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  $entity_type = <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;entity_type&#39;</span>, <span class="stringliteral">&#39;node&#39;</span>);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  $args = func_get_args();</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  array_shift($args);</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">if</span> (empty($args)) {</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="comment">// Just one item in this array for now.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    $args[] = <a class="code" href="field_8drush_8inc.html#a3e930ec03cf0c5762790d73681f71f8f">drush_field_create_wizard</a>();</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;  <span class="comment">// Iterate over each field spec.</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="keywordflow">foreach</span> ($args as $string) {</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    list($name, $type, $widget) = explode(<span class="charliteral">&#39;,&#39;</span>, $string);</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    $info = field_info_field($name);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">if</span> (empty($info)) {</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <span class="comment">// Field does not exist already. Create it.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      $field = array(</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="stringliteral">&#39;field_name&#39;</span> =&gt; $name,</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        <span class="stringliteral">&#39;type&#39;</span> =&gt; $type,</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;      <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_create_field&#39;</span>, $field);</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    }</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;    <span class="comment">// Create the instance.</span></div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    $instance = array(</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;      <span class="stringliteral">&#39;field_name&#39;</span> =&gt; $name,</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="stringliteral">&#39;entity_type&#39;</span> =&gt; $entity_type,</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;      <span class="stringliteral">&#39;bundle&#39;</span> =&gt; $bundle,</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="keywordflow">if</span> ($widget) {</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;      $instance[<span class="stringliteral">&#39;widget&#39;</span>] = array(<span class="stringliteral">&#39;type&#39;</span> =&gt; $widget);</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    }</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_create_instance&#39;</span>, $instance);</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;    $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . <span class="stringliteral">&#39;/fields/&#39;</span> . $name, array(<span class="stringliteral">&#39;absolute&#39;</span> =&gt; TRUE));</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  }</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <a class="code" href="group__outputfunctions.html#ga63acbb94925d6d2693e235e966bba740">drush_print</a>(implode(<span class="charliteral">&#39; &#39;</span>, $urls));</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;}</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;<span class="comment">// Copy of function _field_ui_bundle_admin_path() since we don&#39;t want to load UI module.</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="keyword">function</span> drush_field_ui_bundle_admin_path($entity_type, $bundle_name) {</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  $bundles = field_info_bundles($entity_type);</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  $bundle_info = $bundles[$bundle_name];</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <span class="keywordflow">if</span> (isset($bundle_info[<span class="stringliteral">&#39;admin&#39;</span>])) {</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordflow">return</span> isset($bundle_info[<span class="stringliteral">&#39;admin&#39;</span>][<span class="stringliteral">&#39;real path&#39;</span>]) ? $bundle_info[<span class="stringliteral">&#39;admin&#39;</span>][<span class="stringliteral">&#39;real path&#39;</span>] : $bundle_info[<span class="stringliteral">&#39;admin&#39;</span>][<span class="stringliteral">&#39;path&#39;</span>];</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  }</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;}</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;<span class="keyword">function</span> drush_field_update($field_name) {</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;   $info = field_info_field($field_name);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;   <span class="keywordflow">foreach</span> ($info[<span class="stringliteral">&#39;bundles&#39;</span>] as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;     <span class="keywordflow">foreach</span> ($bundles as $bundle) {</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;       $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . <span class="stringliteral">&#39;/fields/&#39;</span> . $field_name, array(<span class="stringliteral">&#39;absolute&#39;</span> =&gt; TRUE));</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;     }</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;   }</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <a class="code" href="group__outputfunctions.html#ga63acbb94925d6d2693e235e966bba740">drush_print</a>(implode(<span class="charliteral">&#39; &#39;</span>, $urls));</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;</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keyword">function</span> drush_field_delete($field_name) {</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  $info = field_info_field($field_name);</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  $confirm = TRUE;</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;  <span class="keywordflow">if</span> (!$bundle = <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;bundle&#39;</span>)) {</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">foreach</span> ($info[<span class="stringliteral">&#39;bundles&#39;</span>] as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <span class="keywordflow">foreach</span> ($bundles as $bundle) {</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        $all_bundles[] = $bundle;</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="keywordflow">if</span> (count($all_bundles) &gt; 1) {</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      $options = array_merge(array(<span class="stringliteral">&#39;all&#39;</span> =&gt; <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;All bundles&#39;</span>)), array_combine($all_bundles, $all_bundles));</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      $bundle = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>($options, <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&quot;Choose a particular bundle or &#39;All bundles&#39;&quot;</span>));</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      <span class="keywordflow">if</span> (!$bundle) {</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</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="l00235"></a><span class="lineno">  235</span>&#160;      }</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      $confirm = FALSE;</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    }</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      <span class="keywordflow">if</span> (!<a class="code" href="group__userinput.html#gaa4169b83ff9dc4222af95d376b21268b">drush_confirm</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Do you want to delete the !field_name field?&#39;</span>, array(<span class="stringliteral">&#39;!field_name&#39;</span> =&gt; $field_name)))) {</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</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="l00241"></a><span class="lineno">  241</span>&#160;      }</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    }</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  }</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> ($bundle == <span class="stringliteral">&#39;all&#39;</span>) {</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keywordflow">foreach</span> ($info[<span class="stringliteral">&#39;bundles&#39;</span>] as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;       <span class="keywordflow">foreach</span> ($bundles as $bundle) {</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;         $instance = field_info_instance($entity_type, $field_name, $bundle);</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;         <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_delete_instance&#39;</span>, $instance);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;       }</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;     }</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;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    $entity_type = drush_field_get_entity_from_bundle($bundle);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    $instance = field_info_instance($entity_type, $field_name, $bundle);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_delete_instance&#39;</span>, $instance);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  }</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="comment">// If there are no more bundles, delete the field.</span></div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  $info = field_info_field($field_name);</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="keywordflow">if</span> (empty($info[<span class="stringliteral">&#39;bundles&#39;</span>])) {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_delete_field&#39;</span>, $field_name);</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  }</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;}</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;<span class="keyword">function</span> drush_field_clone($source_field_name, $target_field_name) {</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;   <span class="keywordflow">if</span> (!$info = field_info_field($source_field_name)) {</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;     <span class="keywordflow">return</span> <a class="code" href="group__errorhandling.html#ga23fe9e1e8c1e5ade39256106044b6da4">drush_set_error</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;!source not found in field list.&#39;</span>, array(<span class="stringliteral">&#39;!source&#39;</span> =&gt; $source_field_name)));</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;   }</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;   unset($info[<span class="stringliteral">&#39;id&#39;</span>]);</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;   $info[<span class="stringliteral">&#39;field_name&#39;</span>] = $target_field_name;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;   $target = <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_create_field&#39;</span>, $info);</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;   <span class="keywordflow">foreach</span> ($info[<span class="stringliteral">&#39;bundles&#39;</span>] as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;     <span class="keywordflow">foreach</span> ($bundles as $bundle) {</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;       $instance = field_info_instance($entity_type, $source_field_name, $bundle);</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;       $instance[<span class="stringliteral">&#39;field_name&#39;</span>] = $target_field_name;</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;       unset($instance[<span class="stringliteral">&#39;id&#39;</span>]);</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;       $instance[<span class="stringliteral">&#39;field_id&#39;</span>] = $target[<span class="stringliteral">&#39;id&#39;</span>];</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;       <a class="code" href="drush_8inc.html#acebe9ed4e4825e6d33ab8dff2157b676">drush_op</a>(<span class="stringliteral">&#39;field_create_instance&#39;</span>, $instance);</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;       $urls[] = drush_url(drush_field_ui_bundle_admin_path($entity_type, $bundle) . <span class="stringliteral">&#39;/fields/&#39;</span> . $target_field_name, array(<span class="stringliteral">&#39;absolute&#39;</span> =&gt; TRUE));</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;     }</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;   }</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <a class="code" href="group__outputfunctions.html#ga63acbb94925d6d2693e235e966bba740">drush_print</a>(implode(<span class="charliteral">&#39; &#39;</span>, $urls));</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;}</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="keyword">function</span> drush_field_info($type = NULL) {</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (!isset($type)) {</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="comment">// Don&#39;t ask in &#39;pipe&#39; mode -- just default to &#39;fields&#39;.</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordflow">if</span> (<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="l00293"></a><span class="lineno">  293</span>&#160;      $type = <span class="stringliteral">&#39;fields&#39;</span>;</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    }</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      $type = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>(array_combine(array(<span class="stringliteral">&#39;types&#39;</span>, <span class="stringliteral">&#39;fields&#39;</span>), array(<span class="stringliteral">&#39;types&#39;</span>, <span class="stringliteral">&#39;fields&#39;</span>)), <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Which information do you wish to see?&#39;</span>));</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    }</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  $result = array();</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keywordflow">switch</span> ($type) {</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordflow">case</span> <span class="stringliteral">&#39;fields&#39;</span>:</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <a class="code" href="outputformat_8drush_8inc.html#aa114eb117d61d2a796e638caf91f92d6">drush_hide_output_fields</a>(array(<span class="stringliteral">&#39;type-name&#39;</span>, <span class="stringliteral">&#39;widget&#39;</span>, <span class="stringliteral">&#39;widgets&#39;</span>));</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      $info = field_info_fields();</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;      <span class="keywordflow">foreach</span> ($info as $field_name =&gt; $field) {</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        $bundle_strs = array();</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordflow">foreach</span> ($field[<span class="stringliteral">&#39;bundles&#39;</span>] as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;          $bundle_strs += $bundles;</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        }</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        $result[$field_name] = array(</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;          <span class="stringliteral">&#39;field-name&#39;</span> =&gt; $field_name,</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;          <span class="stringliteral">&#39;type&#39;</span> =&gt; $field[<span class="stringliteral">&#39;type&#39;</span>],</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;          <span class="stringliteral">&#39;bundle&#39;</span> =&gt; $bundle_strs,</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        );</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      }</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keywordflow">case</span> <span class="stringliteral">&#39;types&#39;</span>:</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;      <a class="code" href="outputformat_8drush_8inc.html#aa114eb117d61d2a796e638caf91f92d6">drush_hide_output_fields</a>(array(<span class="stringliteral">&#39;field-name&#39;</span>, <span class="stringliteral">&#39;type&#39;</span>, <span class="stringliteral">&#39;bundle&#39;</span>));</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;      $info = field_info_field_types();</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;      module_load_include(<span class="stringliteral">&#39;inc&#39;</span>, <span class="stringliteral">&#39;field_ui&#39;</span>, <span class="stringliteral">&#39;field_ui.admin&#39;</span>);</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;      $widgets = field_info_widget_types();</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;      <span class="keywordflow">foreach</span> ($info as $type_name =&gt; $type) {</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        $widgets = field_ui_widget_type_options($type_name);</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        $result[$type_name] = array(</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;          <span class="stringliteral">&#39;type-name&#39;</span> =&gt; $type_name,</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;          <span class="stringliteral">&#39;widget&#39;</span> =&gt; $type[<span class="stringliteral">&#39;default_widget&#39;</span>],</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;          <span class="stringliteral">&#39;widgets&#39;</span> =&gt; $widgets,</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;        );</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      }</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="group__errorhandling.html#ga23fe9e1e8c1e5ade39256106044b6da4">drush_set_error</a>(<span class="stringliteral">&#39;DRUSH_FIELD_INVALID_SELECTION&#39;</span>, <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&quot;Argument for drush field-info must be &#39;fields&#39; or &#39;types&#39;&quot;</span>));</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  }</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <span class="keywordflow">return</span> $result;</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;}</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="comment"> * We need to handle the formatting of cells in table-format</span></div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="comment"> * output specially.  In &#39;types&#39; output, the output data is a simple</span></div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="comment"> * associative array of machine names =&gt; human-readable names.</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="comment"> * We choose to show the machine names.  In &#39;fields&#39; output, the</span></div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<span class="comment"> * output data is a list of entity types, each of which contains a list</span></div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="comment"> * of bundles.  We comma-separate the bundles, and space-separate</span></div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="comment"> * the entities.</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a62c877acd4e998705c2c41a8c0b59830">  347</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a62c877acd4e998705c2c41a8c0b59830">_drush_field_info_process_cell</a>($data, $metadata) {</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  $first = reset($data);</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">if</span> (is_array($first)) {</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keywordflow">foreach</span>($data as $entity =&gt; $bundles) {</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;      $list[] = <a class="code" href="group__outputfunctions.html#ga9949217d2df2776bd355c4a3d50bba79">drush_format</a>($bundles, array(), <span class="stringliteral">&#39;csv&#39;</span>);</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    }</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="group__outputfunctions.html#ga9949217d2df2776bd355c4a3d50bba79">drush_format</a>($list, array(), <span class="stringliteral">&#39;list&#39;</span>);</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;  }</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="group__outputfunctions.html#ga9949217d2df2776bd355c4a3d50bba79">drush_format</a>(array_keys($data), array(), <span class="stringliteral">&#39;csv&#39;</span>);</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;}</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="comment"> * Prompt user enough to create basic field and instance.</span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment"> * @return array $field_spec</span></div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="comment"> *   An array of brief field specifications.</span></div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="code" href="field_8drush_8inc.html#a3e930ec03cf0c5762790d73681f71f8f">  364</a></span>&#160;<span class="keyword">function</span> <a class="code" href="field_8drush_8inc.html#a3e930ec03cf0c5762790d73681f71f8f">drush_field_create_wizard</a>() {</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  $specs[] = <a class="code" href="group__userinput.html#gabbb9a40c8f7e0ba5ec384ccf86305a20">drush_prompt</a>(<a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Field name&#39;</span>));</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;  module_load_include(<span class="stringliteral">&#39;inc&#39;</span>, <span class="stringliteral">&#39;field_ui&#39;</span>, <span class="stringliteral">&#39;field_ui.admin&#39;</span>);</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  $types = field_ui_field_type_options();</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  $field_type = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>($types, <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Choose a field type&#39;</span>));</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  $specs[] = $field_type;</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  $widgets = field_ui_widget_type_options($field_type);</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  $specs[] = <a class="code" href="group__userinput.html#ga7e823bcd58051b17e6e5601340f0c784">drush_choice</a>($widgets, <a class="code" href="group__outputfunctions.html#ga1218abcb1e27dd3bb412113d1e344d96">dt</a>(<span class="stringliteral">&#39;Choose a widget&#39;</span>));</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  <span class="keywordflow">return</span> implode(<span class="charliteral">&#39;,&#39;</span>, $specs);</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;}</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keyword">function</span> drush_field_get_entity_from_bundle($bundle) {</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;entity_type&#39;</span>)) {</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="context_8inc.html#afe91fb3e5219ecb2208c3b036b1f0cb8">drush_get_option</a>(<span class="stringliteral">&#39;entity_type&#39;</span>);</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  }</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    $info = field_info_bundles();</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keywordflow">foreach</span> ($info as $entity_type =&gt; $bundles) {</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;      <span class="keywordflow">if</span> (isset($bundles[$bundle])) {</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <span class="keywordflow">return</span> $entity_type;</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;      }</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    }</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  }</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 7 2016 07:27:45 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>