$extension)), LogLevel::WARNING); continue; } if (drush_extension_get_type($info) == 'module') { $data = _drush_pm_info_module($info); } else { $data = _drush_pm_info_theme($info); } $result[$extension] = $data; } return $result; } /** * Output format formatter-filter callback. * * @see drush_parse_command() * @see drush_outputformat */ function _drush_pm_info_format_table_data($data) { $result = array(); foreach ($data as $extension => $info) { foreach($info as $key => $value) { if (is_array($value)) { if (empty($value)) { $value = 'none'; } else { $value = implode(', ', $value); } } $result[$extension][$key] = $value; } } return $result; } /** * Return an array with general info of an extension. */ function _drush_pm_info_extension($info) { $data['extension'] = drush_extension_get_name($info); $data['project'] = isset($info->info['project'])?$info->info['project']:dt('Unknown'); $data['type'] = drush_extension_get_type($info); $data['title'] = $info->info['name']; $data['config'] = isset($info->info['configure']) ? $info->info['configure'] : dt('None'); $data['description'] = $info->info['description']; $data['version'] = $info->info['version']; $data['date'] = isset($info->info['datestamp']) ? format_date($info->info['datestamp'], 'custom', 'Y-m-d') : NULL; $data['package'] = $info->info['package']; $data['core'] = $info->info['core']; $data['php'] = $info->info['php']; $data['status'] = drush_get_extension_status($info); $data['path'] = drush_extension_get_path($info); return $data; } /** * Return an array with info of a module. */ function _drush_pm_info_module($info) { $major_version = drush_drupal_major_version(); $data = _drush_pm_info_extension($info); if ($info->schema_version > 0) { $schema_version = $info->schema_version; } elseif ($info->schema_version == -1) { $schema_version = "no schema installed"; } else { $schema_version = "module has no schema"; } $data['schema_version'] = $schema_version; if ($major_version == 7) { $data['files'] = $info->info['files']; } $data['requires'] = $info->info['dependencies']; if ($major_version == 6) { $requiredby = $info->info['dependents']; } else { $requiredby = array_keys($info->required_by); } $data['required_by'] = $requiredby; if ($info->status == 1) { $role = drush_role_get_class(); $data['permissions'] = $role->getModulePerms(drush_extension_get_name($info)); } return $data; } /** * Return an array with info of a theme. */ function _drush_pm_info_theme($info) { $major_version = drush_drupal_major_version(); $data = _drush_pm_info_extension($info); $data['core'] = $info->info['core']; $data['php'] = $info->info['php']; $data['engine'] = $info->info['engine']; $data['base_theme'] = isset($info->base_themes) ? implode($info->base_themes, ', ') : ''; $regions = $info->info['regions']; $data['regions'] = $regions; $features = $info->info['features']; $data['features'] = $features; if (count($info->info['stylesheets']) > 0) { $data['stylesheets'] = ''; foreach ($info->info['stylesheets'] as $media => $files) { $files = array_keys($files); $data['media '.$media] = $files; } } if (count($info->info['scripts']) > 0) { $scripts = array_keys($info->info['scripts']); $data['scripts'] = $scripts; } return $data; }