f55fc672e2a7a8c942ea12f373423cbbf43561f4
[yaffs-website] / vendor / drush / drush / commands / pm / info.pm.inc
1 <?php
2
3 /**
4  * @file
5  * pm-info command implementation.
6  */
7
8 use Drush\Log\LogLevel;
9
10 /**
11  * Command callback. Show detailed info for one or more extensions.
12  */
13 function drush_pm_info() {
14   $result = array();
15   $args = pm_parse_arguments(func_get_args());
16
17   $extension_info = drush_get_extensions(FALSE);
18   _drush_pm_expand_extensions($args, $extension_info);
19   // If no extensions are provided, show all.
20   if (count($args) == 0) {
21     $args = array_keys($extension_info);
22   }
23
24   foreach ($args as $extension) {
25     if (isset($extension_info[$extension])) {
26       $info = $extension_info[$extension];
27     }
28     else {
29       drush_log(dt('!extension was not found.', array('!extension' => $extension)), LogLevel::WARNING);
30       continue;
31     }
32     if (drush_extension_get_type($info) == 'module') {
33       $data = _drush_pm_info_module($info);
34     }
35     else {
36       $data = _drush_pm_info_theme($info);
37     }
38     $result[$extension] = $data;
39   }
40   return $result;
41 }
42
43 /**
44  * Output format formatter-filter callback.
45  *
46  * @see drush_parse_command()
47  * @see drush_outputformat
48  */
49 function _drush_pm_info_format_table_data($data) {
50   $result = array();
51   foreach ($data as $extension => $info) {
52     foreach($info as $key => $value) {
53       if (is_array($value)) {
54         if (empty($value)) {
55           $value = 'none';
56         }
57         else {
58           $value = implode(', ', $value);
59         }
60       }
61       $result[$extension][$key] = $value;
62     }
63   }
64   return $result;
65 }
66
67 /**
68  * Return an array with general info of an extension.
69  */
70 function _drush_pm_info_extension($info) {
71   $data['extension'] = drush_extension_get_name($info);
72   $data['project'] = isset($info->info['project'])?$info->info['project']:dt('Unknown');
73   $data['type'] = drush_extension_get_type($info);
74   $data['title'] = $info->info['name'];
75   $data['config'] = isset($info->info['configure']) ? $info->info['configure'] : dt('None');
76   $data['description'] = $info->info['description'];
77   $data['version'] = $info->info['version'];
78   $data['date'] = isset($info->info['datestamp']) ? format_date($info->info['datestamp'], 'custom', 'Y-m-d') : NULL;
79   $data['package'] = $info->info['package'];
80   $data['core'] = $info->info['core'];
81   $data['php'] = $info->info['php'];
82   $data['status'] = drush_get_extension_status($info);
83   $data['path'] = drush_extension_get_path($info);
84
85   return $data;
86 }
87
88 /**
89  * Return an array with info of a module.
90  */
91 function _drush_pm_info_module($info) {
92   $major_version = drush_drupal_major_version();
93
94   $data = _drush_pm_info_extension($info);
95   if ($info->schema_version > 0) {
96     $schema_version = $info->schema_version;
97   }
98   elseif ($info->schema_version == -1) {
99     $schema_version = "no schema installed";
100   }
101   else {
102     $schema_version = "module has no schema";
103   }
104   $data['schema_version'] = $schema_version;
105   if ($major_version == 7) {
106     $data['files'] = $info->info['files'];
107   }
108   $data['requires'] = $info->info['dependencies'];
109
110   if ($major_version == 6) {
111     $requiredby = $info->info['dependents'];
112   }
113   else {
114     $requiredby = array_keys($info->required_by);
115   }
116   $data['required_by'] = $requiredby;
117   if ($info->status == 1) {
118     $role = drush_role_get_class();
119     $data['permissions'] = $role->getModulePerms(drush_extension_get_name($info));
120   }
121   return $data;
122 }
123
124 /**
125  * Return an array with info of a theme.
126  */
127 function _drush_pm_info_theme($info) {
128   $major_version = drush_drupal_major_version();
129
130   $data = _drush_pm_info_extension($info);
131
132   $data['core'] = $info->info['core'];
133   $data['php'] = $info->info['php'];
134   $data['engine'] = $info->info['engine'];
135   $data['base_theme'] = isset($info->base_themes) ? implode($info->base_themes, ', ') : '';
136   $regions = $info->info['regions'];
137   $data['regions'] = $regions;
138   $features = $info->info['features'];
139   $data['features'] = $features;
140   if (count($info->info['stylesheets']) > 0) {
141     $data['stylesheets'] = '';
142     foreach ($info->info['stylesheets'] as $media => $files) {
143       $files = array_keys($files);
144       $data['media '.$media] = $files;
145     }
146   }
147   if (count($info->info['scripts']) > 0) {
148     $scripts = array_keys($info->info['scripts']);
149     $data['scripts'] = $scripts;
150   }
151   return $data;
152 }