b1f275a79b487aa16f7d2ade42c18b2f57eb6364
[yaffs-website] / web / modules / contrib / admin_toolbar / admin_toolbar_tools / src / Controller / ToolbarController.php
1 <?php
2
3 namespace Drupal\admin_toolbar_tools\Controller;
4
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;
17
18 /**
19  * Class ToolbarController.
20  *
21  * @package Drupal\admin_toolbar_tools\Controller
22  */
23 class ToolbarController extends ControllerBase {
24
25   /**
26    * A cron instance.
27    *
28    * @var \Drupal\Core\CronInterface
29    */
30   protected $cron;
31
32   /**
33    * A menu link manager instance.
34    *
35    * @var \Drupal\Core\Menu\MenuLinkManager
36    */
37   protected $menuLinkManager;
38
39   /**
40    * A context link manager instance.
41    *
42    * @var \Drupal\Core\Menu\ContextualLinkManager
43    */
44   protected $contextualLinkManager;
45
46   /**
47    * A local task manager instance.
48    *
49    * @var \Drupal\Core\Menu\LocalTaskManager
50    */
51   protected $localTaskLinkManager;
52
53   /**
54    * A local action manager instance.
55    *
56    * @var \Drupal\Core\Menu\LocalActionManager
57    */
58   protected $localActionLinkManager;
59
60   /**
61    * A cache backend interface instance.
62    *
63    * @var \Drupal\Core\Cache\CacheBackendInterface
64    */
65   protected $cacheRender;
66
67   /**
68    * A date time instance.
69    *
70    * @var \Drupal\Component\Datetime\Time
71    */
72   protected $time;
73
74   /**
75    * A request stack symfony instance.
76    *
77    * @var \Symfony\Component\HttpFoundation\RequestStack
78    */
79   protected $requestStack;
80
81   /**
82    * A plugin cache clear instance.
83    *
84    * @var \Drupal\Core\Plugin\CachedDiscoveryClearerInterface
85    */
86   protected $pluginCacheClearer;
87
88   /**
89    * {@inheritdoc}
90    */
91   public function __construct(CronInterface $cron,
92                               MenuLinkManager $menuLinkManager,
93                               ContextualLinkManager $contextualLinkManager,
94                               LocalTaskManager $localTaskLinkManager,
95                               LocalActionManager $localActionLinkManager,
96                               CacheBackendInterface $cacheRender,
97                               Time $time,
98                               RequestStack $request_stack,
99                               CachedDiscoveryClearerInterface $plugin_cache_clearer) {
100     $this->cron = $cron;
101     $this->menuLinkManager = $menuLinkManager;
102     $this->contextualLinkManager = $contextualLinkManager;
103     $this->localTaskLinkManager = $localTaskLinkManager;
104     $this->localActionLinkManager = $localActionLinkManager;
105     $this->cacheRender = $cacheRender;
106     $this->time = $time;
107     $this->requestStack = $request_stack;
108     $this->pluginCacheClearer = $plugin_cache_clearer;
109   }
110
111   /**
112    * {@inheritdoc}
113    */
114   public static function create(ContainerInterface $container) {
115     return new static(
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')
125     );
126   }
127
128   /**
129    * Reload the previous page.
130    */
131   public function reloadPage() {
132     $request = $this->requestStack->getCurrentRequest();
133     if ($request->server->get('HTTP_REFERER')) {
134       return $request->server->get('HTTP_REFERER');
135     }
136     else {
137       return '/';
138     }
139   }
140
141   /**
142    * Flushes all caches.
143    */
144   public function flushAll() {
145     drupal_flush_all_caches();
146     drupal_set_message($this->t('All caches cleared.'));
147     return new RedirectResponse($this->reloadPage());
148   }
149
150   /**
151    * Flushes css and javascript caches.
152    */
153   public function flushJsCss() {
154     $this->state()
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());
158   }
159
160   /**
161    * Flushes plugins caches.
162    */
163   public function flushPlugins() {
164     $this->pluginCacheClearer->clearCachedDefinitions();
165     drupal_set_message($this->t('Plugins cache cleared.'));
166     return new RedirectResponse($this->reloadPage());
167   }
168
169   /**
170    * Resets all static caches.
171    */
172   public function flushStatic() {
173     drupal_static_reset();
174     drupal_set_message($this->t('Static cache cleared.'));
175     return new RedirectResponse($this->reloadPage());
176   }
177
178   /**
179    * Clears all cached menu data.
180    */
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());
189   }
190
191   /**
192    * Clears all cached views data.
193    */
194   public function flushViews() {
195     views_invalidate_cache();
196     drupal_set_message($this->t('Views cache cleared.'));
197     return new RedirectResponse($this->reloadPage());
198   }
199
200   /**
201    * Run the cron.
202    */
203   public function runCron() {
204     $this->cron->run();
205     drupal_set_message($this->t('Cron ran successfully.'));
206     return new RedirectResponse($this->reloadPage());
207   }
208
209   /**
210    * Clear the rendered cache.
211    */
212   public function cacheRender() {
213     $this->cacheRender->invalidateAll();
214     drupal_set_message($this->t('Render cache cleared.'));
215     return new RedirectResponse($this->reloadPage());
216   }
217
218 }