3 namespace Drupal\admin_toolbar_tools\Controller;
5 use Drupal\Component\Datetime\Time;
6 use Drupal\Core\Cache\CacheBackendInterface;
7 use Drupal\Core\Controller\ControllerBase;
8 use Drupal\Core\CronInterface;
9 use Drupal\Core\Menu\ContextualLinkManager;
10 use Drupal\Core\Menu\LocalActionManager;
11 use Drupal\Core\Menu\LocalTaskManager;
12 use Drupal\Core\Menu\MenuLinkManager;
13 use Drupal\Core\Plugin\CachedDiscoveryClearerInterface;
14 use Symfony\Component\DependencyInjection\ContainerInterface;
15 use Symfony\Component\HttpFoundation\RedirectResponse;
16 use Symfony\Component\HttpFoundation\RequestStack;
19 * Class ToolbarController.
21 * @package Drupal\admin_toolbar_tools\Controller
23 class ToolbarController extends ControllerBase {
28 * @var \Drupal\Core\CronInterface
33 * A menu link manager instance.
35 * @var \Drupal\Core\Menu\MenuLinkManager
37 protected $menuLinkManager;
40 * A context link manager instance.
42 * @var \Drupal\Core\Menu\ContextualLinkManager
44 protected $contextualLinkManager;
47 * A local task manager instance.
49 * @var \Drupal\Core\Menu\LocalTaskManager
51 protected $localTaskLinkManager;
54 * A local action manager instance.
56 * @var \Drupal\Core\Menu\LocalActionManager
58 protected $localActionLinkManager;
61 * A cache backend interface instance.
63 * @var \Drupal\Core\Cache\CacheBackendInterface
65 protected $cacheRender;
68 * A date time instance.
70 * @var \Drupal\Component\Datetime\Time
75 * A request stack symfony instance.
77 * @var \Symfony\Component\HttpFoundation\RequestStack
79 protected $requestStack;
82 * A plugin cache clear instance.
84 * @var \Drupal\Core\Plugin\CachedDiscoveryClearerInterface
86 protected $pluginCacheClearer;
91 public function __construct(CronInterface $cron,
92 MenuLinkManager $menuLinkManager,
93 ContextualLinkManager $contextualLinkManager,
94 LocalTaskManager $localTaskLinkManager,
95 LocalActionManager $localActionLinkManager,
96 CacheBackendInterface $cacheRender,
98 RequestStack $request_stack,
99 CachedDiscoveryClearerInterface $plugin_cache_clearer) {
101 $this->menuLinkManager = $menuLinkManager;
102 $this->contextualLinkManager = $contextualLinkManager;
103 $this->localTaskLinkManager = $localTaskLinkManager;
104 $this->localActionLinkManager = $localActionLinkManager;
105 $this->cacheRender = $cacheRender;
107 $this->requestStack = $request_stack;
108 $this->pluginCacheClearer = $plugin_cache_clearer;
114 public static function create(ContainerInterface $container) {
116 $container->get('cron'),
117 $container->get('plugin.manager.menu.link'),
118 $container->get('plugin.manager.menu.contextual_link'),
119 $container->get('plugin.manager.menu.local_task'),
120 $container->get('plugin.manager.menu.local_action'),
121 $container->get('cache.render'),
122 $container->get('datetime.time'),
123 $container->get('request_stack'),
124 $container->get('plugin.cache_clearer')
129 * Reload the previous page.
131 public function reloadPage() {
132 $request = $this->requestStack->getCurrentRequest();
133 if ($request->server->get('HTTP_REFERER')) {
134 return $request->server->get('HTTP_REFERER');
142 * Flushes all caches.
144 public function flushAll() {
145 drupal_flush_all_caches();
146 drupal_set_message($this->t('All caches cleared.'));
147 return new RedirectResponse($this->reloadPage());
151 * Flushes css and javascript caches.
153 public function flushJsCss() {
155 ->set('system.css_js_query_string', base_convert($this->time->getCurrentTime(), 10, 36));
156 drupal_set_message($this->t('CSS and JavaScript cache cleared.'));
157 return new RedirectResponse($this->reloadPage());
161 * Flushes plugins caches.
163 public function flushPlugins() {
164 $this->pluginCacheClearer->clearCachedDefinitions();
165 drupal_set_message($this->t('Plugins cache cleared.'));
166 return new RedirectResponse($this->reloadPage());
170 * Resets all static caches.
172 public function flushStatic() {
173 drupal_static_reset();
174 drupal_set_message($this->t('Static cache cleared.'));
175 return new RedirectResponse($this->reloadPage());
179 * Clears all cached menu data.
181 public function flushMenu() {
182 menu_cache_clear_all();
183 $this->menuLinkManager->rebuild();
184 $this->contextualLinkManager->clearCachedDefinitions();
185 $this->localTaskLinkManager->clearCachedDefinitions();
186 $this->localActionLinkManager->clearCachedDefinitions();
187 drupal_set_message($this->t('Routing and links cache cleared.'));
188 return new RedirectResponse($this->reloadPage());
192 * Clears all cached views data.
194 public function flushViews() {
195 views_invalidate_cache();
196 drupal_set_message($this->t('Views cache cleared.'));
197 return new RedirectResponse($this->reloadPage());
203 public function runCron() {
205 drupal_set_message($this->t('Cron ran successfully.'));
206 return new RedirectResponse($this->reloadPage());
210 * Clear the rendered cache.
212 public function cacheRender() {
213 $this->cacheRender->invalidateAll();
214 drupal_set_message($this->t('Render cache cleared.'));
215 return new RedirectResponse($this->reloadPage());