123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- declare(strict_types = 1);
-
- /**
- * Feed start class
- *
- * Simplified version of script_start,
- * used for the sitewide RSS system.
- */
-
- # Let's prevent people from clearing feeds
- if (isset($_GET['clearcache'])) {
- unset($_GET['clearcache']);
- }
-
- require_once 'classes/config.php';
- $ENV = ENV::go();
-
- require_once "$ENV->SERVER_ROOT/classes/misc.class.php";
- require_once "$ENV->SERVER_ROOT/classes/cache.class.php";
- require_once "$ENV->SERVER_ROOT/classes/feed.class.php";
-
- # Load the caching class
- $Cache = new Cache($ENV->getPriv('MEMCACHED_SERVERS'));
-
- # Load the time class
- $Feed = new Feed;
-
-
- /**
- * check_perms
- */
- function check_perms()
- {
- return false;
- }
-
-
- /**
- * is_number
- */
- function is_number($Str)
- {
- if ($Str < 0) {
- return false;
- }
-
- # We're converting input to an int, then string, and comparing to the original
- return ($Str === strval(intval($Str)));
- }
-
-
- /**
- * display_str
- */
- function display_str($Str)
- {
- if ($Str !== '') {
- $Str = make_utf8($Str);
- $Str = mb_convert_encoding($Str, 'HTML-ENTITIES', 'UTF-8');
- $Str = preg_replace('/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/m', '&', $Str);
-
- $Replace = array(
- "'",'"','<','>',
- '€','‚','ƒ','„','…','†','‡','ˆ',
- '‰','Š','‹','Œ','Ž','‘','’','“',
- '”','•','–','—','˜','™','š','›',
- 'œ','ž','Ÿ'
- );
-
- $With = array(
- ''','"','<','>',
- '€','‚','ƒ','„','…','†','‡','ˆ',
- '‰','Š','‹','Œ','Ž','‘','’','“',
- '”','•','–','—','˜','™','š','›',
- 'œ','ž','Ÿ'
- );
-
- $Str = str_replace($Replace, $With, $Str);
- }
-
- return $Str;
- }
-
-
- /**
- * make_utf8
- */
- function make_utf8($Str)
- {
- if ($Str !== '') {
- if (is_utf8($Str)) {
- $Encoding = 'UTF-8';
- }
-
- if (empty($Encoding)) {
- $Encoding = mb_detect_encoding($Str, 'UTF-8, ISO-8859-1');
- }
-
- if (empty($Encoding)) {
- $Encoding = 'ISO-8859-1';
- }
-
- if ($Encoding === 'UTF-8') {
- return $Str;
- } else {
- return @mb_convert_encoding($Str, 'UTF-8', $Encoding);
- }
- }
- }
-
-
- /**
- * is_utf8
- */
- function is_utf8($Str)
- {
- return preg_match(
- '%^(?:
- [\x09\x0A\x0D\x20-\x7E] // ASCII
- | [\xC2-\xDF][\x80-\xBF] // Non-overlong 2-byte
- | \xE0[\xA0-\xBF][\x80-\xBF] // Excluding overlongs
- | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} // Straight 3-byte
- | \xED[\x80-\x9F][\x80-\xBF] // Excluding surrogates
- | \xF0[\x90-\xBF][\x80-\xBF]{2} // Planes 1-3
- | [\xF1-\xF3][\x80-\xBF]{3} // Planes 4-15
- | \xF4[\x80-\x8F][\x80-\xBF]{2} // Plane 16
- )*$%xs',
- $Str
- );
- }
-
-
- /**
- * display_array
- */
- function display_array($Array, $Escape = [])
- {
- foreach ($Array as $Key => $Val) {
- if ((!is_array($Escape) && $Escape === true) || !in_array($Key, $Escape)) {
- $Array[$Key] = display_str($Val);
- }
- }
-
- return $Array;
- }
-
-
- /**
- * site_url
- *
- * Print the site's URL and appropriate URI scheme,
- * including the trailing slash.
- */
- function site_url()
- {
- $ENV = ENV::go();
- return "https://$ENV->SITE_DOMAIN/";
- }
-
-
- # Set the headers
- header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0');
- header('Pragma:');
- header('Expires: '.date('D, d M Y H:i:s', time() + (2 * 60 * 60)).' GMT');
- header('Last-Modified: '.date('D, d M Y H:i:s').' GMT');
-
- # Load the feeds section
- require_once "$ENV->SERVER_ROOT/sections/feeds/index.php";
|