function drush_views_list
Same name in other branches
- 6.x-3.x drush/views.drush.inc \drush_views_list()
Callback function for views-list command.
File
-
drush/
views.drush.inc, line 279
Code
function drush_views_list() {
// Initialize stuff.
$rows = array();
$disabled_views = array();
$enabled_views = array();
$overridden = 0;
$indb = 0;
$incode = 0;
$disabled = 0;
$total = 0;
$views = views_get_all_views();
// Get the --name option.
// @todo Take into account the case off a comma-separated list of names.
$name = drush_get_option_list('name');
$with_name = !empty($name) ? TRUE : FALSE;
// Get the --tags option.
$tags = drush_get_option_list('tags');
$with_tags = !empty($tags) ? TRUE : FALSE;
// Get the --status option. Store user input appart to reuse it after.
$status_opt = drush_get_option_list('status');
// Use the same logic than $view->disabled.
if (in_array('disabled', $status_opt)) {
$status = TRUE;
$with_status = TRUE;
}
elseif (in_array('enabled', $status_opt)) {
$status = FALSE;
$with_status = TRUE;
}
else {
$status = NULL;
// Wrong or empty --status option.
$with_status = FALSE;
}
// Get the --type option.
$type = drush_get_option_list('type');
// Use the same logic than $view->type.
$with_type = FALSE;
if (in_array('normal', $type) || in_array('default', $type) || in_array('overridden', $type)) {
$with_type = TRUE;
}
// Set the table headers.
$header = array(
dt('Machine name'),
dt('Description'),
dt('Type'),
dt('Status'),
dt('Tag'),
);
// Setup a row for each view.
foreach ($views as $view) {
// If options were specified, check that first mismatch push the loop to
// the next view.
if ($with_tags && !in_array($view->tag, $tags)) {
continue;
}
if ($with_status && !$view->disabled == $status) {
continue;
}
if ($with_type && strtolower($view->type) !== $type[0]) {
continue;
}
if ($with_name && !stristr($view->name, $name[0])) {
continue;
}
$row = array();
// Each row entry should be in the same order as the header.
$row[] = $view->name;
$row[] = $view->description;
$row[] = $view->type;
$row[] = $view->disabled ? dt('Disabled') : dt('Enabled');
$row[] = $view->tag;
// Place the row in the appropiate array so we can have disabled views at
// the bottom.
if ($view->disabled) {
$disabled_views[] = $row;
}
else {
$enabled_views[] = $row;
}
unset($row);
// Gather some statistics.
switch ($view->type) {
case dt('Normal'):
$indb++;
break;
case dt('Overridden'):
$overridden++;
break;
case dt('Default'):
$incode++;
break;
}
$total++;
}
$disabled = count($disabled_views);
// Sort alphabeticaly.
asort($disabled_views);
asort($enabled_views);
// If options were used.
$summary = "";
if ($with_name || $with_tags || $with_status || $with_type) {
$summary = "Views";
if ($with_name) {
$summary .= " named {$name[0]}";
}
if ($with_tags) {
$tags = implode(" or ", $tags);
$summary .= " tagged {$tags}";
}
if ($with_status) {
$status_opt = implode("", $status_opt);
$summary .= " which status is '{$status_opt}'";
}
if ($with_type) {
$type = ucfirst($type[0]);
$summary .= " of type '{$type}'";
}
}
if (!empty($summary)) {
drush_print($summary . "\n");
}
// Print all rows as a table.
if ($total > 0) {
$rows = array_merge($enabled_views, $disabled_views);
// Put the headers as first row.
array_unshift($rows, $header);
drush_print_table($rows, TRUE);
}
// Print the statistics messages.
drush_print(dt("A total of @total views were found in this Drupal installation:", array(
'@total' => $total,
)));
drush_print(dt(" @indb views reside only in the database", array(
'@indb' => $indb,
)));
drush_print(dt(" @over views are overridden", array(
'@over' => $overridden,
)));
drush_print(dt(" @incode views are in their default state", array(
'@incode' => $incode,
)));
drush_print(dt(" @dis views are disabled\n", array(
'@dis' => $disabled,
)));
}