123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- <?php
- namespace Drupal\admin_toolbar_tools\Controller;
- use Drupal\Component\Datetime\TimeInterface;
- use Drupal\Core\Cache\CacheBackendInterface;
- use Drupal\Core\Controller\ControllerBase;
- use Drupal\Core\CronInterface;
- use Drupal\Core\Menu\ContextualLinkManagerInterface;
- use Drupal\Core\Menu\LocalActionManagerInterface;
- use Drupal\Core\Menu\LocalTaskManagerInterface;
- use Drupal\Core\Menu\MenuLinkManagerInterface;
- use Drupal\Core\Plugin\CachedDiscoveryClearerInterface;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- use Symfony\Component\HttpFoundation\RedirectResponse;
- use Symfony\Component\HttpFoundation\RequestStack;
- use Drupal\Core\PhpStorage\PhpStorageFactory;
- /**
- * Class ToolbarController.
- *
- * @package Drupal\admin_toolbar_tools\Controller
- */
- class ToolbarController extends ControllerBase {
- /**
- * A cron instance.
- *
- * @var \Drupal\Core\CronInterface
- */
- protected $cron;
- /**
- * A menu link manager instance.
- *
- * @var \Drupal\Core\Menu\MenuLinkManagerInterface
- */
- protected $menuLinkManager;
- /**
- * A context link manager instance.
- *
- * @var \Drupal\Core\Menu\ContextualLinkManagerInterface
- */
- protected $contextualLinkManager;
- /**
- * A local task manager instance.
- *
- * @var \Drupal\Core\Menu\LocalTaskManagerInterface
- */
- protected $localTaskLinkManager;
- /**
- * A local action manager instance.
- *
- * @var \Drupal\Core\Menu\LocalActionManagerInterface
- */
- protected $localActionLinkManager;
- /**
- * A cache backend interface instance.
- *
- * @var \Drupal\Core\Cache\CacheBackendInterface
- */
- protected $cacheRender;
- /**
- * A date time instance.
- *
- * @var \Drupal\Component\Datetime\TimeInterface
- */
- protected $time;
- /**
- * A request stack symfony instance.
- *
- * @var \Symfony\Component\HttpFoundation\RequestStack
- */
- protected $requestStack;
- /**
- * A plugin cache clear instance.
- *
- * @var \Drupal\Core\Plugin\CachedDiscoveryClearerInterface
- */
- protected $pluginCacheClearer;
- /**
- * Constructs a ToolbarController object.
- *
- * @param \Drupal\Core\CronInterface $cron
- * A cron instance.
- * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menuLinkManager
- * A menu link manager instance.
- * @param \Drupal\Core\Menu\ContextualLinkManagerInterface $contextualLinkManager
- * A context link manager instance.
- * @param \Drupal\Core\Menu\LocalTaskManagerInterface $localTaskLinkManager
- * A local task manager instance.
- * @param \Drupal\Core\Menu\LocalActionManagerInterface $localActionLinkManager
- * A local action manager instance.
- * @param \Drupal\Core\Cache\CacheBackendInterface $cacheRender
- * A cache backend interface instance.
- * @param \Drupal\Component\Datetime\TimeInterface $time
- * A date time instance.
- * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
- * A request stack symfony instance.
- * @param \Drupal\Core\Plugin\CachedDiscoveryClearerInterface $plugin_cache_clearer
- * A plugin cache clear instance.
- */
- public function __construct(CronInterface $cron,
- MenuLinkManagerInterface $menuLinkManager,
- ContextualLinkManagerInterface $contextualLinkManager,
- LocalTaskManagerInterface $localTaskLinkManager,
- LocalActionManagerInterface $localActionLinkManager,
- CacheBackendInterface $cacheRender,
- TimeInterface $time,
- RequestStack $request_stack,
- CachedDiscoveryClearerInterface $plugin_cache_clearer) {
- $this->cron = $cron;
- $this->menuLinkManager = $menuLinkManager;
- $this->contextualLinkManager = $contextualLinkManager;
- $this->localTaskLinkManager = $localTaskLinkManager;
- $this->localActionLinkManager = $localActionLinkManager;
- $this->cacheRender = $cacheRender;
- $this->time = $time;
- $this->requestStack = $request_stack;
- $this->pluginCacheClearer = $plugin_cache_clearer;
- }
- /**
- * {@inheritdoc}
- */
- public static function create(ContainerInterface $container) {
- return new static(
- $container->get('cron'),
- $container->get('plugin.manager.menu.link'),
- $container->get('plugin.manager.menu.contextual_link'),
- $container->get('plugin.manager.menu.local_task'),
- $container->get('plugin.manager.menu.local_action'),
- $container->get('cache.render'),
- $container->get('datetime.time'),
- $container->get('request_stack'),
- $container->get('plugin.cache_clearer')
- );
- }
- /**
- * Reload the previous page.
- */
- public function reloadPage() {
- $request = $this->requestStack->getCurrentRequest();
- if ($request->server->get('HTTP_REFERER')) {
- return $request->server->get('HTTP_REFERER');
- }
- else {
- return '/';
- }
- }
- /**
- * Flushes all caches.
- */
- public function flushAll() {
- $this->messenger()->addMessage($this->t('All caches cleared.'));
- drupal_flush_all_caches();
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Flushes css and javascript caches.
- */
- public function flushJsCss() {
- $this->state()
- ->set('system.css_js_query_string', base_convert($this->time->getCurrentTime(), 10, 36));
- $this->messenger()->addMessage($this->t('CSS and JavaScript cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Flushes plugins caches.
- */
- public function flushPlugins() {
- $this->pluginCacheClearer->clearCachedDefinitions();
- $this->messenger()->addMessage($this->t('Plugins cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Resets all static caches.
- */
- public function flushStatic() {
- drupal_static_reset();
- $this->messenger()->addMessage($this->t('Static cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Clears all cached menu data.
- */
- public function flushMenu() {
- menu_cache_clear_all();
- $this->menuLinkManager->rebuild();
- $this->contextualLinkManager->clearCachedDefinitions();
- $this->localTaskLinkManager->clearCachedDefinitions();
- $this->localActionLinkManager->clearCachedDefinitions();
- $this->messenger()->addMessage($this->t('Routing and links cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Clears all cached views data.
- */
- public function flushViews() {
- views_invalidate_cache();
- $this->messenger()->addMessage($this->t('Views cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Clears the twig cache.
- */
- public function flushTwig() {
- // @todo Update once Drupal 8.6 will be released.
- // @see https://www.drupal.org/node/2908461
- PhpStorageFactory::get('twig')->deleteAll();
- $this->messenger()->addMessage($this->t('Twig cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Run the cron.
- */
- public function runCron() {
- $this->cron->run();
- $this->messenger()->addMessage($this->t('Cron ran successfully.'));
- return new RedirectResponse($this->reloadPage());
- }
- /**
- * Clear the rendered cache.
- */
- public function cacheRender() {
- $this->cacheRender->invalidateAll();
- $this->messenger()->addMessage($this->t('Render cache cleared.'));
- return new RedirectResponse($this->reloadPage());
- }
- }
|