From 82a9275abcf2d85467ad0f0a818f53d5f18a960a Mon Sep 17 00:00:00 2001 From: Manuel Garcia Date: Fri, 18 Mar 2011 00:22:39 +0100 Subject: [PATCH 1/2] Moved views-revert drush command into views.drush.inc file --- views.drush.inc | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 149 insertions(+), 0 deletions(-) diff --git a/views.drush.inc b/views.drush.inc index 4a4c7a3..0354cbc 100644 --- a/views.drush.inc +++ b/views.drush.inc @@ -10,4 +10,153 @@ */ function views_drush_cache_clear(&$types) { $types['views'] = 'views_invalidate_cache'; +} + +/** + * Implement hook_drush_help(). + */ +function views_drush_help($section) { + switch ($section) { + case 'drush:revert-views': + return dt('Reverts all views in the drupal installation that have been overriden. Careful, use with care.'); + } +} + +/** + * Implement hook_drush_command(). + */ +function views_drush_command() { + $items = array(); + + $items['views-revert'] = array( + 'callback' => 'views_drush_revert_views', + 'drupal dependencies' => array('views'), + 'description' => dt('Revert overridden views to their default state. Make sure to backup first.'), + 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, + 'aliases' => array('vr'), + ); + + return $items; +} + +/** + * Callback function for views-revert command. + */ +function views_drush_revert_views() { + $views = views_get_all_views(); + $i = 0; + // The provided view names specified in the command. + $viewnames = _convert_csv_to_array(func_get_args()); + + // Find all overridden views. + foreach ($views as $view) { + if ($view->disabled) { + continue; + } + if ($view->type == dt('Overridden')) { + $overridden[$view->name] = $view->name; + } + } + + // Return early if there are no views overridden in the system. + if (empty($overridden)) { + return drush_set_error(dt('There are no overridden views in the system.')); + } + + // If the user specified in the command the views to be overridden. + if (!empty($viewnames)) { + foreach ($viewnames as $key => $viewname) { + $is_overridden = key_exists($viewname, $overridden); + // Check if the provided view name is in the system + if ($viewname && !key_exists($viewname, $views)) { + drush_set_error(dt("'@viewname' view is not present in the system.", array('@viewname' => $viewname))); + } + // Check if the provided view is overridden. + elseif (!$is_overridden) { + drush_set_error(dt("The view specified '@viewname' is not overridden.", array('@viewname' => $viewname))); + } + // If the view is overriden, revert it. + elseif ($is_overridden){ + views_drush_revert_view($views[$viewname]); + $i++; + } + // We should never get here but well... + else { + drush_set_error(dt("The view specified '@viewname' is not provided in code, and thus cannot be reverted.", array('@viewname' => $viewname))); + } + } + } + + // The user did not specify any views in the command, prompt the user + else { + // list of choices for the user + $overridden['all'] = dt('Revert all overridden views'); // add a choice at the end + $choice = drush_choice($overridden, 'Enter a number to choose which view to revert.', '!key'); // prompt the user + + if ($choice !== FALSE) { + // revert all views option + if ($choice == 'all') { + $i = views_drush_revert_allviews($views); + } + // else the user specified a single view + else { + views_drush_revert_view($views[$choice]); + $i++; + } + } + + } + + // final results output + if ($i == 0) { + drush_log(dt('No views were reverted.'), 'ok'); + } + else { + drush_log(dt('Reverted a total of @count views.', array('@count' => $i)), 'ok'); + } +} + +/** + * Reverts all views + * @param $views + * All views in the system as provided by views_get_all_views(). + */ +function views_drush_revert_allviews($views) { + $i = 0; + foreach ($views as $view) { + if ($view->disabled) { + continue; + } + + if ($view->type == t('Overridden')) { + views_drush_revert_view($view); + $i++; + } + } + return $i; +} + +/** + * Reverts a specified view + * @param $view + * The view object to be reverted + * + * Checks on wether or not the view is overridden is handled in views_revert_views_revert() + * We perform a check here anyway in case someone somehow calls this function on their own... + */ +function views_drush_revert_view($view) { + // check anyway just in case + if ($view->type == t('Overridden')) { + // Revert the view. + $view->delete(); + // Clear its cache. + views_object_cache_clear('view', $view->name); + // Give feedback. + $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->name)); + drush_log($message, 'success'); + // Reverted one more view. + } + else { + drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->name))); + } } \ No newline at end of file -- 1.7.1 From 521ec95e2fa489e06c2cf8f6c5b153dec7c5e816 Mon Sep 17 00:00:00 2001 From: Manuel Garcia Date: Fri, 18 Mar 2011 00:23:34 +0100 Subject: [PATCH 2/2] Removed views_revert.drush.inc file. We will do it in views.drush.inc from now on. --- views_revert.drush.inc | 154 ------------------------------------------------ 1 files changed, 0 insertions(+), 154 deletions(-) delete mode 100644 views_revert.drush.inc diff --git a/views_revert.drush.inc b/views_revert.drush.inc deleted file mode 100644 index b72fcc0..0000000 --- a/views_revert.drush.inc +++ /dev/null @@ -1,154 +0,0 @@ - 'views_revert_views', - 'drupal dependencies' => array('views'), - 'description' => dt('Revert overridden views to their default state. Make sure to backup first.'), - 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL, - 'aliases' => array('vr'), - ); - - return $items; -} - -/** - * Callback function for views-revert command. - */ -function views_revert_views() { - $views = views_get_all_views(); - $i = 0; - // The provided view names specified in the command. - $viewnames = _convert_csv_to_array(func_get_args()); - - // Find all overridden views. - foreach ($views as $view) { - if ($view->disabled) { - continue; - } - if ($view->type == dt('Overridden')) { - $overridden[$view->name] = $view->name; - } - } - - // Return early if there are no views overridden in the system. - if (empty($overridden)) { - return drush_set_error(dt('There are no overridden views in the system.')); - } - - // If the user specified in the command the views to be overridden. - if (!empty($viewnames)) { - foreach ($viewnames as $key => $viewname) { - $is_overridden = key_exists($viewname, $overridden); - // Check if the provided view name is in the system - if ($viewname && !key_exists($viewname, $views)) { - drush_set_error(dt("'@viewname' view is not present in the system.", array('@viewname' => $viewname))); - } - // Check if the provided view is overridden. - elseif (!$is_overridden) { - drush_set_error(dt("The view specified '@viewname' is not overridden.", array('@viewname' => $viewname))); - } - // If the view is overriden, revert it. - elseif ($is_overridden){ - views_revert_view($views[$viewname]); - $i++; - } - // We should never get here but well... - else { - drush_set_error(dt("The view specified '@viewname' is not provided in code, and thus cannot be reverted.", array('@viewname' => $viewname))); - } - } - } - - // The user did not specify any views in the command, prompt the user - else { - // list of choices for the user - $overridden['all'] = dt('Revert all overridden views'); // add a choice at the end - $choice = drush_choice($overridden, 'Enter a number to choose which view to revert.', '!key'); // prompt the user - - if ($choice !== FALSE) { - // revert all views option - if ($choice == 'all') { - $i = views_revert_allviews($views); - } - // else the user specified a single view - else { - views_revert_view($views[$choice]); - $i++; - } - } - - } - - // final results output - if ($i == 0) { - drush_log(dt('No views were reverted.'), 'ok'); - } - else { - drush_log(dt('Reverted a total of @count views.', array('@count' => $i)), 'ok'); - } -} - -/** - * Reverts all views - * @param $views - * All views in the system as provided by views_get_all_views(). - */ -function views_revert_allviews($views) { - $i = 0; - foreach ($views as $view) { - if ($view->disabled) { - continue; - } - - if ($view->type == t('Overridden')) { - views_revert_view($view); - $i++; - } - } - return $i; -} - -/** - * Revert a specified view - * @param $view - * The view object to be reverted - * - * Checks on wether or not the view is overridden is handled in views_revert_views_revert() - * We perform a check here anyway in case someone somehow calls this function on their own... - */ -function views_revert_view($view) { - // check anyway just in case - if ($view->type == t('Overridden')) { - // Revert the view. - $view->delete(); - // Clear its cache. - views_object_cache_clear('view', $view->name); - // Give feedback. - $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->name)); - drush_log($message, 'success'); - // Reverted one more view. - } - else { - drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->name))); - } -} -- 1.7.1