X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Fviews.d8.drush.inc;fp=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Fviews.d8.drush.inc;h=6b95c3d41ce66155fb099fb9bfd703507568051d;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/vendor/drush/drush/commands/core/views.d8.drush.inc b/vendor/drush/drush/commands/core/views.d8.drush.inc new file mode 100644 index 000000000..6b95c3d41 --- /dev/null +++ b/vendor/drush/drush/commands/core/views.d8.drush.inc @@ -0,0 +1,487 @@ + array('8+'), + 'drupal dependencies' => array('views'), + ); + + $items['views-dev'] = array( + 'description' => 'Set the Views settings to more developer-oriented values.', + 'aliases' => array('vd'), + ) + $base; + + $items['views-list'] = array( + 'description' => 'Get a list of all views in the system.', + 'aliases' => array('vl'), + 'options' => array( + 'name' => array( + 'description' => 'A string contained in the view\'s name to filter the results with.', + 'example-value' => 'node', + 'value' => 'required', + ), + 'tags' => array( + 'description' => 'A comma-separated list of views tags by which to filter the results.', + 'example-value' => 'default', + 'value' => 'required', + ), + 'status' => array( + 'description' => 'Status of the views by which to filter the results. Choices: enabled, disabled.', + 'example-value' => 'enabled', + 'value' => 'required', + ), + ), + 'examples' => array( + 'drush vl' => 'Show a list of all available views.', + 'drush vl --name=blog' => 'Show a list of views which names contain "blog".', + 'drush vl --tags=tag1,tag2' => 'Show a list of views tagged with "tag1" or "tag2".', + 'drush vl --status=enabled' => 'Show a list of enabled views.', + ), + 'outputformat' => array( + 'default' => 'table', + 'pipe-format' => 'list', + 'field-default' => array('name', 'label', 'description', 'status', 'tag'), + 'field-labels' => array('name' => 'Machine Name', 'label' => 'Name', 'description' => 'Description', 'status' => 'Status', 'tag' => 'Tag'), + 'output-data-type' => 'format-table', + ), + ) + $base; + + $items['views-execute'] = array( + 'description' => 'Execute a view and get the results.', + 'aliases' => array('vex'), + 'arguments' => array( + 'view' => 'The name of the view to execute.', + 'display' => 'The display ID to execute. If none specified, the default display will be used.', + ), + 'required-arguments' => 1, + 'options' => array( + 'count' => array( + 'description' => 'Display a count of the results instead of each row.', + ), + 'rendered' => array( + 'description' => 'Return the results as rendered HTML output for the display.', + ), + 'show-admin-links' => array( + 'description' => 'Show contextual admin links in the rendered markup.', + ), + ), + 'outputformat' => array( + 'default' => 'print-r', + 'pipe-format' => 'var_export', + ), + 'examples' => array( + 'drush views-execute my_view' => 'Show the result set of the default display for the my_view view.', + 'drush views-execute my_view page_1 --rendered' => 'Show the rendered output of the my_view:page_1 view.', + 'drush views-execute my_view page_1 3 --count' => 'Show a count of my_view:page_1 with an agument of 3 being passed.', + ), + ) + $base; + + $items['views-analyze'] = array( + 'drupal dependencies' => array('views', 'views_ui'), + 'description' => 'Get a list of all Views analyze warnings', + 'aliases' => array('va'), + 'options' => array( + 'format' => array( + 'description' => 'Define the output format. Known formats are: json, print_r, and export.', + ), + ), + ) + $base; + + $items['views-enable'] = array( + 'description' => 'Enable the specified views.', + 'arguments' => array( + 'views' => 'A space delimited list of view names.', + ), + 'required-arguments' => 1, + 'aliases' => array('ven'), + 'examples' => array( + 'drush ven frontpage taxonomy_term' => 'Enable the frontpage and taxonomy_term views.', + ), + ) + $base; + + $items['views-disable'] = array( + 'description' => 'Disable the specified views.', + 'arguments' => array( + 'views' => 'A space delimited list of view names.', + ), + 'required-arguments' => 1, + 'aliases' => array('vdis'), + 'examples' => array( + 'drush vdis frontpage taxonomy_term' => 'Disable the frontpage and taxonomy_term views.', + ), + ) + $base; + + return $items; +} + +/** + * Command callback function for views-dev command. + * + * Changes the settings to more developer oriented values. + */ +function drush_views_dev() { + $settings = array( + 'ui.show.listing_filters' => TRUE, + 'ui.show.master_display' => TRUE, + 'ui.show.advanced_column' => TRUE, + 'ui.always_live_preview' => FALSE, + 'ui.always_live_preview_button' => TRUE, + 'ui.show.preview_information' => TRUE, + 'ui.show.sql_query.enabled' => TRUE, + 'ui.show.sql_query.where' => 'above', + 'ui.show.performance_statistics' => TRUE, + 'ui.show.additional_queries' => TRUE, + 'debug.output' => TRUE, + 'debug.region' => 'message', + 'ui.show.display_embed' => TRUE, + ); + + $config = \Drupal::configFactory()->getEditable('views.settings'); + + foreach ($settings as $setting => $value) { + $config->set($setting, $value); + // Convert boolean values into a string to print. + if (is_bool($value)) { + $value = $value ? 'TRUE' : 'FALSE'; + } + // Wrap string values in quotes. + elseif (is_string($value)) { + $value = "\"$value\""; + } + drush_log(dt('!setting set to !value', array('!setting' => $setting, '!value' => $value))); + } + + // Save the new config. + $config->save(); + + drush_log(dt('New views configuration saved.'), LogLevel::SUCCESS); +} + +/** + * Callback function for views-list command. + */ +function drush_views_list() { + $disabled_views = array(); + $enabled_views = array(); + + $format = drush_get_option('format', FALSE); + + $views = \Drupal::entityManager()->getStorage('view')->loadMultiple(); + + // Get the --name option. + $name = array_filter(drush_get_option_list('name')); + $with_name = !empty($name) ? TRUE : FALSE; + + // Get the --tags option. + $tags = array_filter(drush_get_option_list('tags')); + $with_tags = !empty($tags) ? TRUE : FALSE; + + // Get the --status option. Store user input appart to reuse it after. + $status = drush_get_option('status', FALSE); + + // Throw an error if it's an invalid status. + if ($status && !in_array($status, array('enabled', 'disabled'))) { + return drush_set_error(dt('Invalid status: @status. Available options are "enabled" or "disabled"', array('@status' => $status))); + } + + // 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_name && !stristr($view->id(), $name[0])) { + continue; + } + if ($with_tags && !in_array($view->get('tag'), $tags)) { + continue; + } + + $status_bool = $status == 'enabled'; + if ($status && ($view->status() !== $status_bool)) { + continue; + } + + $row = array( + 'name' => $view->id(), + 'label' => $view->label(), + 'description' => $view->get('description'), + 'status' => $view->status() ? dt('Enabled') : dt('Disabled'), + 'tag' => $view->get('tag'), + ); + + // Place the row in the appropiate array, so we can have disabled views at + // the bottom. + if ($view->status()) { + $enabled_views[] = $row; + } + else{ + $disabled_views[] = $row; + } + } + + // Sort alphabeticaly. + asort($disabled_views); + asort($enabled_views); + + if (count($enabled_views) || count($disabled_views)) { + $rows = array_merge($enabled_views, $disabled_views); + return $rows; + } + else { + drush_log(dt('No views found.')); + } +} + +/** + * Drush views execute command. + */ +function drush_views_execute($view_name, $display_id = NULL) { + $args = func_get_args(); + $view_args = array(); + + // If it's more than 2, we have arguments. A display has to be specified in + // that case. + if (count($args) > 2) { + $view_args = array_slice($args, 2); + } + + if (!$view = Views::getView($view_name)) { + return drush_set_error(dt('View: "@view" not found.', array('@view' => $view_name))); + } + + // Set the display and execute the view. + $view->setDisplay($display_id); + $view->preExecute($view_args); + $view->execute(); + + if (drush_get_option('count', FALSE)) { + drush_set_default_outputformat('string'); + return count($view->result); + } + elseif (!empty($view->result)) { + if (drush_get_option('rendered', FALSE)) { + drush_set_default_outputformat('string'); + // Don't show admin links in markup by default. + $view->hide_admin_links = !drush_get_option('show-admin-links', FALSE); + $output = $view->preview(); + return drupal_render($output); + + } + else { + return $view->result; + } + } + else { + drush_log(dt('No results returned for this view.') ,LogLevel::WARNING); + return NULL; + } +} + +/** + * Drush views analyze command. + */ +function drush_views_analyze() { + $messages = NULL; + $messages_count = 0; + + $format = drush_get_option('format', FALSE); + + $views = \Drupal::entityManager()->getStorage('view')->loadMultiple(); + + if (!empty($views)) { + $analyzer = \Drupal::service('views.analyzer'); + foreach ($views as $view_name => $view) { + $view = $view->getExecutable(); + + if ($messages = $analyzer->getMessages($view)) { + if ($format) { + $output = drush_format($messages, $format); + drush_print($output); + return $output; + } + else { + drush_print($view_name); + foreach ($messages as $message) { + $messages_count++; + drush_print($message['type'] .': '. $message['message'], 2); + } + } + } + } + + drush_log(dt('A total of @total views were analyzed and @messages problems were found.', array('@total' => count($views), '@messages' => $messages_count)), LogLevel::OK); + return $messages; + } + else { + return drush_set_error(dt('There are no views to analyze')); + } +} + +/** + * Drush views enable command. + */ +function drush_views_enable() { + $view_names = func_get_args(); + _views_drush_op('enable', $view_names); +} + +/** + * Drush views disable command. + */ +function drush_views_disable() { + $view_names = func_get_args(); + _views_drush_op('disable', $view_names); +} + +/** + * Perform operations on view objects. + * + * @param string $op + * The operation to perform. + * @param array $view_names + * An array of view names to load and perform this operation on. + */ +function _views_drush_op($op = '', array $view_names = array()) { + $op_types = _views_drush_op_types(); + if (!in_array($op, array_keys($op_types))) { + return drush_set_error(dt('Invalid op type')); + } + + $view_names = array_combine($view_names, $view_names); + + if ($views = \Drupal::entityManager()->getStorage('view')->loadMultiple($view_names)) { + foreach ($views as $view) { + $tokens = array('@view' => $view->id(), '@action' => $op_types[$op]['action']); + + if ($op_types[$op]['validate']($view)) { + $function = 'views_' . $op . '_view'; + drush_op($function, $view); + drush_log(dt('View: @view has been @action', $tokens), LogLevel::SUCCESS); + } + else { + drush_log(dt('View: @view is already @action', $tokens), LogLevel::NOTICE); + } + // Remove this view from the viewnames input list. + unset($view_names[$view->id()]); + } + + return $views; + } + else { + drush_set_error(dt('No views have been loaded')); + } + + // If we have some unmatched/leftover view names that weren't loaded. + if (!empty($view_names)) { + foreach ($view_names as $viewname) { + drush_log(dt('View: @view could not be found.', array('@view' => $viewname)), LogLevel::ERROR); + } + } + +} + +/** + * Returns an array of op types that can be performed on views. + * + * @return array + * An associative array keyed by op type => action name. + */ +function _views_drush_op_types() { + return array( + 'enable' => array( + 'action' => dt('enabled'), + 'validate' => '_views_drush_view_is_disabled', + ), + 'disable' => array( + 'action' => dt('disabled'), + 'validate' => '_views_drush_view_is_enabled', + ), + ); +} + +/** + * Returns whether a view is enabled. + * + * @param Drupal\views\Entity\ViewDrupal\views\ $view + * The view object to check. + * + * @return bool + * TRUE if the View is enabled, FALSE otherwise. + */ +function _views_drush_view_is_enabled(View $view) { + return $view->status(); +} + +/** + * Returns whether a view is disabled. + * + * @param Drupal\views\Entity\View $view + * The view object to check. + * + * @return bool + * TRUE if the View is disabled, FALSE otherwise. + */ +function _views_drush_view_is_disabled(View $view) { + return !$view->status(); +} + +/** + * Implements hook_cache_clear. Adds a cache clear option for views. + */ +function views_drush_cache_clear(&$types, $include_bootstrapped_types) { + if ($include_bootstrapped_types && \Drupal::moduleHandler()->moduleExists('views')) { + $types['views'] = 'views_invalidate_cache'; + } +} + +/** + * Command argument complete callback. + */ +function views_views_enable_complete() { + return _drush_views_complete(); +} + +/** + * Command argument complete callback. + */ +function views_views_disable_complete() { + return _drush_views_complete(); +} + +/** + * Helper function to return a list of view names for complete callbacks. + * + * @return array + * An array of available view names. + */ +function _drush_views_complete() { + drush_bootstrap_max(); + return array('values' => array_keys(\Drupal::entityManager()->getStorage('view')->loadMultiple())); +}