renaming for composer
This commit is contained in:
263
bin/Bedrock.php
Normal file
263
bin/Bedrock.php
Normal file
@ -0,0 +1,263 @@
|
||||
<?php
|
||||
/**
|
||||
* app.php
|
||||
*
|
||||
* This file parses any given url and separates it into controller,
|
||||
* method, and data. This allows the application to direct the user
|
||||
* to the desired location and provide the controller any additional
|
||||
* information it may require to run.
|
||||
*
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com/Core
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Bedrock\bin;
|
||||
|
||||
use TheTempusProject\Canary\Canary as Debug;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Token;
|
||||
use TheTempusProject\Bedrock\Functions\Sanitize;
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\Hermes\Classes\Autoloader;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
|
||||
class Bedrock {
|
||||
public static $controllerName = '';
|
||||
public static $methodName = '';
|
||||
public static $activeConfig = [];
|
||||
protected $controllerObject = null;
|
||||
protected $controllerClass = '';
|
||||
protected $params = [];
|
||||
|
||||
/**
|
||||
* The constructor handles the entire process of parsing the url,
|
||||
* finding the controller/method, and calling the appropriate
|
||||
* class/function for the application.
|
||||
*
|
||||
* @param string $url - A custom URL to be parsed to determine
|
||||
* controller/method. (GET) url is used by
|
||||
* default if none is provided
|
||||
*/
|
||||
public function __construct( $url = '' ) {
|
||||
Debug::group( 'Bedrock Application' );
|
||||
ob_start();
|
||||
self::$activeConfig = new Config( CONFIG_JSON );
|
||||
set_error_handler( [ 'TheTempusProject\\Canary\\Canary', 'handle_error' ] );
|
||||
set_exception_handler( [ 'TheTempusProject\\Canary\\Canary', 'handle_exception' ] );
|
||||
self::$controllerName = DEFAULT_CONTROLLER_CLASS;
|
||||
self::$methodName = DEFAULT_CONTROLLER_METHOD;
|
||||
$this->setUrl( $url );
|
||||
}
|
||||
|
||||
public function setUrl( $url ) {
|
||||
if ( empty( $url ) ) {
|
||||
Debug::log( 'Using GET url.' );
|
||||
$url = Input::get( 'url' );
|
||||
}
|
||||
$trimmedUrl = trim( $url, '/' );
|
||||
$url = str_ireplace( '.php', '', $trimmedUrl );
|
||||
$urlArray = explode( '/', Sanitize::url( $url ) );
|
||||
$this->setVarsFromUrlArray( $urlArray );
|
||||
}
|
||||
|
||||
public function load() {
|
||||
$this->loadController();
|
||||
$this->loadPage();
|
||||
}
|
||||
|
||||
public static function getUrl() {
|
||||
return Routes::getAddress() . Input::get( 'url' );
|
||||
}
|
||||
|
||||
protected function loadPage() {
|
||||
if ( !method_exists( $this->controllerClass, self::$methodName ) ) {
|
||||
return false;
|
||||
}
|
||||
Components::set( 'META_IMAGE', Routes::getAddress() . Config::getValue( 'main/logoLarge' ) );
|
||||
Components::set( 'CURRENT_URL', self::getCurrentUrl() );
|
||||
Components::set( 'SITENAME', Config::getValue( 'main/name' ) );
|
||||
Components::set( 'AUTHOR', '<meta name="author" content="' . Config::getValue( 'main/name' ) . '">' );
|
||||
call_user_func_array( [ $this->controllerObject, self::$methodName ], $this->params );
|
||||
Components::set( 'TITLE', Template::parse( $this->controllerObject::$title ) );
|
||||
Components::set( 'PAGE_DESCRIPTION', Template::parse( $this->controllerObject::$pageDescription ) );
|
||||
Template::render();
|
||||
Debug::closeAllGroups();
|
||||
// self::$session->updatePage( self::getUrl() ); // where did this method go?
|
||||
}
|
||||
|
||||
protected function loadController() {
|
||||
if ( empty( $this->controllerClass ) ) {
|
||||
$this->controllerClass = (string) APP_SPACE . '\\Controllers\\' . self::$controllerName;
|
||||
}
|
||||
$this->controllerObject = new $this->controllerClass;
|
||||
}
|
||||
|
||||
protected function setController( $name, $namespace ) {
|
||||
$controllerClass = $namespace . ucfirst( $name );
|
||||
if ( Autoloader::testLoad( $controllerClass ) ) {
|
||||
$this->controllerClass = $controllerClass;
|
||||
self::$controllerName = $name;
|
||||
}
|
||||
}
|
||||
|
||||
protected function setPage( $name ) {
|
||||
$name = strtolower( $name );
|
||||
if ( !method_exists( $this->controllerClass, $name ) ) {
|
||||
Debug::info( 'setPage - Method not found: ' . $name );
|
||||
return false;
|
||||
}
|
||||
self::$methodName = $name;
|
||||
}
|
||||
|
||||
protected function setVarsFromUrlArray( $urlArray ) {
|
||||
if ( !empty( $urlArray[0] ) ) {
|
||||
$urlPart = array_shift( $urlArray );
|
||||
if ( $urlPart == 'admin' ) {
|
||||
$namespace = APP_SPACE . '\\Controllers\\Admin\\';
|
||||
if ( empty( $urlArray[0] ) ) {
|
||||
// if there is no second param, assume they want the home controller
|
||||
$urlPart = 'home';
|
||||
} else {
|
||||
$urlPart = array_shift( $urlArray ); // to drop the admin
|
||||
}
|
||||
if ( $urlPart == 'index' ) {
|
||||
// if its admin/index, again, assume the home controller
|
||||
$urlPart = 'home';
|
||||
}
|
||||
} elseif ( $urlPart == 'api' ) {
|
||||
$namespace = APP_SPACE . '\\Controllers\\Api\\';
|
||||
if ( empty( $urlArray[0] ) ) {
|
||||
// if there is no second param, assume they want the home controller
|
||||
$urlPart = 'home';
|
||||
} else {
|
||||
$urlPart = array_shift( $urlArray ); // to drop the admin
|
||||
}
|
||||
if ( $urlPart == 'index' ) {
|
||||
// if its admin/index, again, assume the home controller
|
||||
$urlPart = 'home';
|
||||
}
|
||||
} else {
|
||||
$namespace = APP_SPACE . '\\Controllers\\';
|
||||
}
|
||||
$this->setController( $urlPart, $namespace );
|
||||
}
|
||||
if ( !empty( $urlArray[0] ) ) {
|
||||
$urlPart = array_shift( $urlArray );
|
||||
$this->setPage( $urlPart );
|
||||
}
|
||||
if ( !empty( $urlArray ) ) {
|
||||
$this->params = array_values( $urlArray );
|
||||
}
|
||||
}
|
||||
|
||||
public static function getCurrentUrl() {
|
||||
return Sanitize::url( Input::get( 'url' ) );
|
||||
}
|
||||
|
||||
protected function printDebug() {
|
||||
echo '<div style="margin: 0 auto; padding-bottom: 25px; background: #eee; width: 1000px;">';
|
||||
echo '<h1 style="text-align: center;">PHP Info</h1>';
|
||||
echo '<table style="margin: 0 auto; padding-bottom: 25px; background: #eee; width: 950px;">';
|
||||
echo '<tr><td>PHP version: </td><td><code>' . phpversion() . '</code><br></td></tr>';
|
||||
echo '<tr><td>PDO Loaded version: </td><td><code>' . extension_loaded( 'pdo' ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>PHP extensions: </td><td><pre>';
|
||||
foreach ( get_loaded_extensions() as $i => $ext ) {
|
||||
echo $ext . ' => ' . phpversion( $ext ) . '<br/>';
|
||||
}
|
||||
echo '</pre><br></td></tr>';
|
||||
echo '</table>';
|
||||
echo '<h1 style="text-align: center;">Tempus Core Info</h1>';
|
||||
echo '<table style="margin: 0 auto; padding-bottom: 25px; background: #eee; width: 950px;">';
|
||||
// Just in case
|
||||
echo '<tr><td>_SERVER: </td><td><pre>';
|
||||
echo var_export( $_SERVER, true );
|
||||
echo '</pre><br></td></tr>';
|
||||
// Checks
|
||||
echo '<tr><td style="text-align: center; padding-top: 25px; padding-bottom: 10px;" colspan="2"><h2>Checks</h2></td></tr>';
|
||||
echo '<tr><td>Uploads work?: </td><td><code>' . var_export( Check::uploads(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>PHP: </td><td><code>' . var_export( Check::php(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Mail works?: </td><td><code>' . var_export( Check::mail(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Is safe mode?: </td><td><code>' . var_export( Check::safe(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Sessions work?: </td><td><code>' . var_export( Check::sessions(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Cookies work?: </td><td><code>' . var_export( Check::cookies(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>is Apache?: </td><td><code>' . var_export( Check::isApache(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>is Nginx?: </td><td><code>' . var_export( Check::isNginx(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Is token enabled?: </td><td><code>' . var_export( Token::isTokenEnabled(), true ) . '</code><br></td></tr>';
|
||||
// Routes
|
||||
echo '<tr><td style="text-align: center; padding-top: 25px; padding-bottom: 10px;" colspan="2"><h2>Routes</h2></td></tr>';
|
||||
echo '<tr><td>Root: </td><td><code>' . var_export( Routes::getRoot(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Address: </td><td><code>' . var_export( Routes::getAddress(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Protocol: </td><td><code>' . var_export( Routes::getProtocol(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>App URL: </td><td><code>' . var_export( self::getUrl(), true ) . '</code><br></td></tr>';
|
||||
// Debugging
|
||||
echo '<tr><td style="text-align: center; padding-top: 25px; padding-bottom: 10px;" colspan="2"><h2>Debugging</h2></td></tr>';
|
||||
echo '<tr><td>Console Debugging Enabled: </td><td><code>' . var_export( Debug::status( 'console' ), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Debug Trace Enabled: </td><td><code>' . var_export( Debug::status( 'trace' ), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Debugging Enabled: </td><td><code>' . var_export( Debug::status( 'debug' ), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Rendering Enabled: </td><td><code>' . var_export( Debug::status( 'render' ), true ) . '</code><br></td></tr>';
|
||||
// Main
|
||||
echo '<tr><td style="text-align: center; padding-top: 25px; padding-bottom: 10px;" colspan="2"><h2>Main App Variables</h2></td></tr>';
|
||||
echo '<tr><td>Template Location: </td><td><code>' . var_export( Template::getLocation(), true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>Configuration: </td><td><pre>' . var_export( Config::$config, true ) . '</pre></td></tr>';
|
||||
echo '<tr><td>Check Errors: </td><td><pre>' . var_export( Check::systemErrors(), true ) . '</pre></td></tr>';
|
||||
echo '<tr><td>GET: </td><td><pre>' . var_export( $_GET, true ) . '</pre></td></tr>';
|
||||
// Constants
|
||||
echo '<tr><td style="text-align: center; padding-top: 25px; padding-bottom: 10px;" colspan="2"><h2>Constants</h2></td></tr>';
|
||||
// Debugging
|
||||
echo '<tr><td style="text-align: center;"><b>Debugging:</b></td><td></td></tr>';
|
||||
echo '<tr><td>HERMES_REDIRECTS_ENABLED: </td><td><code>' . var_export( HERMES_REDIRECTS_ENABLED, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CANARY_TRACE_ENABLED: </td><td><code>' . var_export( CANARY_TRACE_ENABLED, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CANARY_ENABLED: </td><td><code>' . var_export( CANARY_ENABLED, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CANARY_DEBUG_TO_CONSOLE: </td><td><code>' . var_export( CANARY_DEBUG_TO_CONSOLE, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CANARY_DEBUG_TO_FILE: </td><td><code>' . var_export( CANARY_DEBUG_TO_FILE, true ) . '</code><br></td></tr>';
|
||||
// Tempus Debugger
|
||||
echo '<tr><td style="text-align: center;"><b>Tempus Debugger:</b></td><td></td></tr>';
|
||||
echo '<tr><td>CANARY_SECURE_HASH: </td><td><code>' . var_export( CANARY_SECURE_HASH, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CANARY_SHOW_LINES: </td><td><code>' . var_export( CANARY_SHOW_LINES, true ) . '</code><br></td></tr>';
|
||||
// Tokens
|
||||
echo '<tr><td style="text-align: center;"><b>Tokens:</b></td><td></td></tr>';
|
||||
echo '<tr><td>DEFAULT_TOKEN_NAME: </td><td><code>' . var_export( DEFAULT_TOKEN_NAME, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>TOKEN_ENABLED: </td><td><code>' . var_export( TOKEN_ENABLED, true ) . '</code><br></td></tr>';
|
||||
// Cookies
|
||||
echo '<tr><td style="text-align: center;"><b>Cookies:</b></td><td></td></tr>';
|
||||
echo '<tr><td>DEFAULT_COOKIE_EXPIRATION: </td><td><code>' . var_export( DEFAULT_COOKIE_EXPIRATION, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>DEFAULT_COOKIE_PREFIX: </td><td><code>' . var_export( DEFAULT_COOKIE_PREFIX, true ) . '</code><br></td></tr>';
|
||||
// Directories
|
||||
echo '<tr><td style="text-align: center;"><b>Directories:</b></td><td></td></tr>';
|
||||
echo '<tr><td>APP_ROOT_DIRECTORY: </td><td><code>' . var_export( APP_ROOT_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BIN_DIRECTORY: </td><td><code>' . var_export( BIN_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>UPLOAD_DIRECTORY: </td><td><code>' . var_export( UPLOAD_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>IMAGE_UPLOAD_DIRECTORY: </td><td><code>' . var_export( IMAGE_UPLOAD_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CLASSES_DIRECTORY: </td><td><code>' . var_export( CLASSES_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>CONFIG_DIRECTORY: </td><td><code>' . var_export( CONFIG_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>FUNCTIONS_DIRECTORY: </td><td><code>' . var_export( FUNCTIONS_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>TEMPLATE_DIRECTORY: </td><td><code>' . var_export( TEMPLATE_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>VIEW_DIRECTORY: </td><td><code>' . var_export( VIEW_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>ERRORS_DIRECTORY: </td><td><code>' . var_export( ERRORS_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>RESOURCES_DIRECTORY: </td><td><code>' . var_export( RESOURCES_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_ROOT_DIRECTORY: </td><td><code>' . var_export( BEDROCK_ROOT_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_BIN_DIRECTORY: </td><td><code>' . var_export( BEDROCK_BIN_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_CLASSES_DIRECTORY: </td><td><code>' . var_export( BEDROCK_CLASSES_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_CONFIG_DIRECTORY: </td><td><code>' . var_export( BEDROCK_CONFIG_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_FUNCTIONS_DIRECTORY: </td><td><code>' . var_export( BEDROCK_FUNCTIONS_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_RESOURCES_DIRECTORY: </td><td><code>' . var_export( BEDROCK_RESOURCES_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_VIEW_DIRECTORY: </td><td><code>' . var_export( BEDROCK_VIEW_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>BEDROCK_ERRORS_DIRECTORY: </td><td><code>' . var_export( BEDROCK_ERRORS_DIRECTORY, true ) . '</code><br></td></tr>';
|
||||
// other
|
||||
echo '<tr><td style="text-align: center;"><b>Other:</b></td><td></td></tr>';
|
||||
echo '<tr><td>MINIMUM_PHP_VERSION: </td><td><code>' . var_export( MINIMUM_PHP_VERSION, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>DATA_TITLE_PREG: </td><td><code>' . var_export( DATA_TITLE_PREG, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>PATH_PREG_REQS: </td><td><code>' . var_export( PATH_PREG_REQS, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>SIMPLE_NAME_PREG: </td><td><code>' . var_export( SIMPLE_NAME_PREG, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>ALLOWED_IMAGE_UPLOAD_EXTENTIONS: </td><td><code>' . var_export( ALLOWED_IMAGE_UPLOAD_EXTENTIONS, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>MAX_RESULTS_PER_PAGE: </td><td><code>' . var_export( MAX_RESULTS_PER_PAGE, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>DEFAULT_RESULTS_PER_PAGE: </td><td><code>' . var_export( DEFAULT_RESULTS_PER_PAGE, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>DEFAULT_SESSION_PREFIX: </td><td><code>' . var_export( DEFAULT_SESSION_PREFIX, true ) . '</code><br></td></tr>';
|
||||
echo '<tr><td>DEFAULT_CONTROLLER_CLASS: </td><td><code>' . var_export( DEFAULT_CONTROLLER_CLASS, true ) . '</code><br></td></tr>';
|
||||
echo '</table></div>';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user