diff --git a/_sakura/components/Main.php b/_sakura/components/Main.php index 16f2d11..7aae7d7 100644 --- a/_sakura/components/Main.php +++ b/_sakura/components/Main.php @@ -1,164 +1,174 @@ -Upgrade your PHP Version to at least PHP 5.4!'); - - // Configuration Management and local configuration - Configuration::init($config); - - // Database - Database::init(); - - // "Dynamic" Configuration - Configuration::initDB(); - - // Create new session - Session::init(); - - // Templating engine - self::initTwig(); - - // Markdown Parser - self::initParsedown(); - - } - - // Initialise Twig - private static function initTwig() { - - // Initialise Twig Filesystem Loader - $twigLoader = new \Twig_Loader_Filesystem(Configuration::getLocalConfig('etc', 'templatesPath') .'/'. Configuration::getLocalConfig('etc', 'design')); - - // And now actually initialise the templating engine - self::$_TPL = new \Twig_Environment($twigLoader, array( - - // 'cache' => SATOKO_ROOT_DIRECTORY. self::getConfig('path', 'cache') // Set cache directory - - )); - - // Load String template loader - self::$_TPL->addExtension(new \Twig_Extension_StringLoader()); - - } - - // Initialise Parsedown - private static function initParsedown() { - - self::$_MD = new \Parsedown(); - - } - - // Verify ReCAPTCHA - public static function verifyCaptcha($response) { - - // Attempt to get the response - $resp = @file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='. Configuration::getConfig('recaptcha_private') .'&response='. $response); - - // In the highly unlikely case that it failed to get anything forge a false - if(!$resp) - return array('success' => false, 'error-codes' => array('Could not connect to the ReCAPTCHA server.')); - - // Decode the response JSON from the servers - $resp = json_decode($resp, true); - - // Return shit - return $resp; - - } - - // Error Handler - public static function ErrorHandler($errno, $errstr, $errfile, $errline) { - - // Set some variables to work with including A HUGE fallback hackjob for the templates folder - $errstr = str_replace(Configuration::getLocalConfig('etc', 'localPath'), '', $errstr); - $errfile = str_replace(Configuration::getLocalConfig('etc', 'localPath'), '', $errfile); - $templates = (Configuration::getLocalConfig('etc', 'templatesPath') !== null && !empty(Configuration::getLocalConfig('etc', 'templatesPath'))) ? Configuration::getLocalConfig('etc', 'templatesPath') : '/var/www/flashii.net/_sakuya/templates/'; - - switch ($errno) { - - case E_ERROR: - case E_USER_ERROR: - $error = 'FATAL ERROR: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; - break; - - case E_WARNING: - case E_USER_WARNING: - $error = 'WARNING: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; - break; - - case E_NOTICE: - case E_USER_NOTICE: - $error = 'NOTICE: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; - break; - - default: - $error = 'Unknown error type [' . $errno . ']: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; - - } - - // Use file_get_contents instead of Twig in case the problem is related to twig - $errorPage = file_get_contents($templates. 'errorPage.tpl'); - - // str_replace {{ error }} on the error page with the error data - $error = str_replace('{{ error }}', $error, $errorPage); - - // Truncate all previous outputs - ob_clean(); - - // Die and display error message - die($error); - - } - - // Legacy password hashing to be able to validate passwords from users on the old backend. - public static function legacyPasswordHash($data) { - - return hash('sha512', strrev(hash('sha512', $data))); - - } - - // Cleaning strings - public static function cleanString($string, $lower = false) { - - $string = htmlentities($string, ENT_QUOTES | ENT_IGNORE, Configuration::getConfig('charset')); - $string = stripslashes($string); - $string = strip_tags($string); - if($lower) - $string = strtolower($string); - - return $string; - - } - - // Getting news posts - public static function getNewsPosts($limit = null) { - - // Get news posts - $newsPosts = Database::fetch('news', true, null, ['id', true], ($limit ? [$limit] : null)); - - // Get user data - foreach($newsPosts as $newsId => $newsPost) { - $newsPosts[$newsId]['udata'] = Users::getUser($newsPost['uid']); - $newsPosts[$newsId]['gdata'] = Users::getGroup($newsPosts[$newsId]['udata']['group_main']); - } - - // Return posts - return $newsPosts; - - } - -} +Upgrade your PHP Version to at least PHP 5.4!'); + + // Configuration Management and local configuration + Configuration::init($config); + + // Database + Database::init(); + + // "Dynamic" Configuration + Configuration::initDB(); + + // Create new session + Session::init(); + + // Templating engine + self::initTwig(); + + // Markdown Parser + self::initParsedown(); + + } + + // Initialise Twig + private static function initTwig() { + + // Initialise Twig Filesystem Loader + $twigLoader = new \Twig_Loader_Filesystem(Configuration::getLocalConfig('etc', 'templatesPath') .'/'. Configuration::getLocalConfig('etc', 'design')); + + // And now actually initialise the templating engine + self::$_TPL = new \Twig_Environment($twigLoader, array( + + // 'cache' => SATOKO_ROOT_DIRECTORY. self::getConfig('path', 'cache') // Set cache directory + + )); + + // Load String template loader + self::$_TPL->addExtension(new \Twig_Extension_StringLoader()); + + } + + // Initialise Parsedown + private static function initParsedown() { + + self::$_MD = new \Parsedown(); + + } + + // Verify ReCAPTCHA + public static function verifyCaptcha($response) { + + // Attempt to get the response + $resp = @file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='. Configuration::getConfig('recaptcha_private') .'&response='. $response); + + // In the highly unlikely case that it failed to get anything forge a false + if(!$resp) + return array('success' => false, 'error-codes' => array('Could not connect to the ReCAPTCHA server.')); + + // Decode the response JSON from the servers + $resp = json_decode($resp, true); + + // Return shit + return $resp; + + } + + // Error Handler + public static function ErrorHandler($errno, $errstr, $errfile, $errline) { + + // Set some variables to work with including A HUGE fallback hackjob for the templates folder + $errstr = str_replace(Configuration::getLocalConfig('etc', 'localPath'), '', $errstr); + $errfile = str_replace(Configuration::getLocalConfig('etc', 'localPath'), '', $errfile); + $templates = (Configuration::getLocalConfig('etc', 'templatesPath') !== null && !empty(Configuration::getLocalConfig('etc', 'templatesPath'))) ? Configuration::getLocalConfig('etc', 'templatesPath') : '/var/www/flashii.net/_sakuya/templates/'; + + switch ($errno) { + + case E_ERROR: + case E_USER_ERROR: + $error = 'FATAL ERROR: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; + break; + + case E_WARNING: + case E_USER_WARNING: + $error = 'WARNING: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; + break; + + case E_NOTICE: + case E_USER_NOTICE: + $error = 'NOTICE: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; + break; + + default: + $error = 'Unknown error type [' . $errno . ']: ' . $errstr . ' on line ' . $errline . ' in ' . $errfile; + + } + + // Use file_get_contents instead of Twig in case the problem is related to twig + $errorPage = file_get_contents($templates. 'errorPage.tpl'); + + // str_replace {{ error }} on the error page with the error data + $error = str_replace('{{ error }}', $error, $errorPage); + + // Truncate all previous outputs + ob_clean(); + + // Die and display error message + die($error); + + } + + // Legacy password hashing to be able to validate passwords from users on the old backend. + public static function legacyPasswordHash($data) { + + return hash('sha512', strrev(hash('sha512', $data))); + + } + + // Cleaning strings + public static function cleanString($string, $lower = false) { + + $string = htmlentities($string, ENT_QUOTES | ENT_IGNORE, Configuration::getConfig('charset')); + $string = stripslashes($string); + $string = strip_tags($string); + if($lower) + $string = strtolower($string); + + return $string; + + } + + // Getting news posts + public static function getNewsPosts($limit = null) { + + // Get news posts + $newsPosts = Database::fetch('news', true, null, ['id', true], ($limit ? [$limit] : null)); + + // Get user data + foreach($newsPosts as $newsId => $newsPost) { + $newsPosts[$newsId]['udata'] = Users::getUser($newsPost['uid']); + $newsPosts[$newsId]['gdata'] = Users::getGroup($newsPosts[$newsId]['udata']['group_main']); + } + + // Return posts + return $newsPosts; + + } + + // Loading info pages + public static function loadInfoPage($id) { + + // Get contents from the database + $infopage = Database::fetch('infopages', false, ['shorthand' => [$id, '=']]); + + print_r($infopage); + + } + +} diff --git a/main/infopage.php b/main/infopage.php index d00b6c7..448ce71 100644 --- a/main/infopage.php +++ b/main/infopage.php @@ -9,11 +9,13 @@ namespace Sakura; // Include components require_once '/var/www/flashii.net/_sakura/sakura.php'; -// Do parsing etc. +// Set default variables $renderData['page'] = [ 'title' => 'Info pages', 'content' => 'Unable to load the requested info page.' ]; +$ipData = Main::loadInfoPage(isset($_GET['r']) ? strtolower($_GET['r']) : ''); + // Print page contents print Main::$_TPL->render('main/infopage.tpl', $renderData);