setTitle($title); $content->setBody($body); return $content; } /** * Get the content for a given URL (by a call to FullTextFeed) * * @param Url $url * @return mixed */ public static function getPageContent(Url $url) { // Saving and clearing context $REAL = array(); foreach ($GLOBALS as $key => $value) { if ($key != 'GLOBALS' && $key != '_SESSION' && $key != 'HTTP_SESSION_VARS') { $GLOBALS[$key] = array(); $REAL[$key] = $value; } } // Saving and clearing session if (isset($_SESSION)) { $REAL_SESSION = array(); foreach ($_SESSION as $key => $value) { $REAL_SESSION[$key] = $value; unset($_SESSION[$key]); } } // Running code in different context $scope = function () { extract(func_get_arg(1)); $_GET = $_REQUEST = array( "url" => $url->getUrl(), "max" => 5, "links" => "preserve", "exc" => "", "format" => "json", "submit" => "Create Feed", ); ob_start(); require func_get_arg(0); $json = ob_get_contents(); ob_end_clean(); return $json; }; // Silence $scope function to avoid // issues with FTRSS when error_reporting is to high // FTRSS generates PHP warnings which break output $json = @$scope(__DIR__."/../../../../vendor/wallabag/Fivefilters_Libraries/makefulltextfeed.php", array("url" => $url)); // Clearing and restoring context foreach ($GLOBALS as $key => $value) { if ($key != "GLOBALS" && $key != "_SESSION") { unset($GLOBALS[$key]); } } foreach ($REAL as $key => $value) { $GLOBALS[$key] = $value; } // Clearing and restoring session if (isset($REAL_SESSION)) { foreach ($_SESSION as $key => $value) { unset($_SESSION[$key]); } foreach ($REAL_SESSION as $key => $value) { $_SESSION[$key] = $value; } } return json_decode($json, true); } }