| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | 
							- <?php
 
- namespace Grav\Plugin;
 
- use Grav\Common\Plugin;
 
- use Grav\Common\Uri;
 
- use Grav\Plugin\Problems\Base\ProblemChecker;
 
- use RocketTheme\Toolbox\Event\Event;
 
- class ProblemsPlugin extends Plugin
 
- {
 
-     protected $checker;
 
-     protected $problems = [];
 
-     /**
 
-      * @return array
 
-      */
 
-     public static function getSubscribedEvents()
 
-     {
 
-         return [
 
-             'onPluginsInitialized' => ['onPluginsInitialized', 100001],
 
-             'onFatalException' => ['onFatalException', 0],
 
-             'onAdminGenerateReports' => ['onAdminGenerateReports', 0],
 
-         ];
 
-     }
 
-     public function onFatalException()
 
-     {
 
-         if (\defined('GRAV_CLI') || $this->isAdmin()) {
 
-             return;
 
-         }
 
-         // Run through potential issues
 
-         if ($this->problemsFound()) {
 
-             $this->renderProblems();
 
-         }
 
-     }
 
-     public function onPluginsInitialized()
 
-     {
 
-         require __DIR__ . '/vendor/autoload.php';
 
-         if (\defined('GRAV_CLI') || $this->isAdmin()) {
 
-             return;
 
-         }
 
-         $this->checker = new ProblemChecker();
 
-         if (!$this->checker->statusFileExists()) {
 
-             // If no issues remain, save a state file in the cache
 
-             if (!$this->problemsFound()) {
 
-                 // delete any existing validated files
 
-                 foreach (new \GlobIterator(CACHE_DIR . ProblemChecker::PROBLEMS_PREFIX . '*') as $fileInfo) {
 
-                     @unlink($fileInfo->getPathname());
 
-                 }
 
-                 // create a file in the cache dir so it only runs on cache changes
 
-                 $this->checker->storeStatusFile();
 
-             } else {
 
-                 $this->renderProblems();
 
-             }
 
-         }
 
-     }
 
-     private function renderProblems()
 
-     {
 
-         /** @var Uri $uri */
 
-         $uri = $this->grav['uri'];
 
-         /** @var \Twig_Environment $twig */
 
-         $twig = $this->getTwig();
 
-         $data = [
 
-             'problems' => $this->problems,
 
-             'base_url' => $baseUrlRelative = $uri->rootUrl(false),
 
-             'problems_url' => $baseUrlRelative . '/user/plugins/problems',
 
-         ];
 
-         echo $twig->render('problems.html.twig', $data);
 
-         http_response_code(500);
 
-         exit();
 
-     }
 
-     public function onAdminGenerateReports(Event $e)
 
-     {
 
-         $reports = $e['reports'];
 
-         $this->checker = new ProblemChecker();
 
-         // Check for problems
 
-         $this->problemsFound();
 
-         /** @var Uri $uri */
 
-         $uri = $this->grav['uri'];
 
-         /** @var \Twig_Environment $twig */
 
-         $twig = $this->getTwig();
 
-         $data = [
 
-             'problems' => $this->problems,
 
-             'base_url' => $baseUrlRelative = $uri->rootUrl(false),
 
-             'problems_url' => $baseUrlRelative . '/user/plugins/problems',
 
-         ];
 
-         $reports['Grav Potential Problems'] = $twig->render('reports/problems-report.html.twig', $data);
 
-         $this->grav['assets']->addCss('plugins://problems/css/admin.css');
 
-         $this->grav['assets']->addCss('plugins://problems/css/spectre-icons.css');
 
-     }
 
-     private function problemsFound()
 
-     {
 
-         if (is_null($this->checker)) {
 
-             $this->checker = new ProblemChecker();
 
-         }
 
-         $status = $this->checker->check(__DIR__ . '/classes/Problems');
 
-         $this->problems = $this->checker->getProblems();
 
-         
 
-         return $status;
 
-     }
 
-     private function getTwig()
 
-     {
 
-         $loader = new \Twig_Loader_Filesystem(__DIR__ . '/templates');
 
-         $twig = new \Twig_Environment($loader, ['debug' => true]);
 
-         $twig->addExtension(New \Twig_Extension_Debug());
 
-         return $twig;
 
-     }
 
- }
 
 
  |