protected function taskGetNewsFeed() { $cache = $this->grav['cache']; if ($this->post['refresh'] == 'true') { $cache->delete('news-feed'); } $feed_data = $cache->fetch('news-feed'); if (!$feed_data) { try { $feed = $this->admin->getFeed(); if (is_object($feed)) { require_once __DIR__ . '/../twig/AdminTwigExtension.php'; $adminTwigExtension = new AdminTwigExtension(); $feed_items = $feed->getItems(); // Feed should only every contain 10, but just in case! if (count($feed_items > 10)) { $feed_items = array_slice($feed_items, 0, 10); } foreach ($feed_items as $item) { $datetime = $adminTwigExtension->adminNicetimeFilter($item->getDate()->getTimestamp()); $feed_data[] = '<li><span class="date">' . $datetime . '</span> <a href="' . $item->getUrl() . '" target="_blank" title="' . str_replace('"', '″', $item->getTitle()) . '">' . $item->getTitle() . '</a></li>'; } } // cache for 1 hour $cache->save('news-feed', $feed_data, 60 * 60); } catch (\Exception $e) { $this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()]; return; } } $this->admin->json_response = ['status' => 'success', 'feed_data' => $feed_data]; }