
Improved readme removed contributing and code of conduct as they are basically just fluff when no one knows this repo exists removed composer.lock because this repo doesn't install anything to lock update copywrite to 2025 composer update to description comments
114 lines
3.7 KiB
PHP
114 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* functions/routes.php
|
|
*
|
|
* This class is used to return file and directory locations.
|
|
*
|
|
* @version 1.1
|
|
* @author Joey Kimsey <Joey@thetempusproject.com>
|
|
* @link https://TheTempusProject.com/libraries/Hermes
|
|
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
|
*/
|
|
|
|
namespace TheTempusProject\Hermes\Functions;
|
|
|
|
class Route {
|
|
public static function testRouting() {
|
|
// @todo - wtf
|
|
// $url = Routes::getAddress( true ) . DEFAULT_CONTROLLER_CLASS . '/' . DEFAULT_CONTROLLER_METHOD;
|
|
// echo '<pre>' . var_export( $url, true ) . '</pre>';
|
|
// $host = gethostbyname( $url );
|
|
// echo '<pre>' . var_export( $url, true ) . '</pre>';
|
|
// $host = dns_get_record( $url );
|
|
// echo '<pre>' . var_export( $url, true ) . '</pre>';
|
|
// $headers = @get_headers( $url );
|
|
// echo '<pre>' . var_export( $headers, true ) . '</pre>';
|
|
// $file = true;
|
|
// echo '<pre>' . var_export( $file, true ) . '</pre>';
|
|
// exit;
|
|
return true;
|
|
$headers = get_headers( $url );
|
|
if ( empty( $headers ) ) {
|
|
return false;
|
|
}
|
|
$response_code = substr( $headers[0], 9, 3 );
|
|
if ( $response_code != '200' ) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Determines if the server is using a secure transfer protocol or not.
|
|
*
|
|
* @return string - The string representation of the server's transfer protocol
|
|
*/
|
|
public static function getProtocol() {
|
|
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
|
|
return 'https';
|
|
}
|
|
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
|
|
return 'https';
|
|
}
|
|
if (!empty($_SERVER['HTTP_X_FORWARDED_PORT']) && $_SERVER['HTTP_X_FORWARDED_PORT'] == 443) {
|
|
return 'https';
|
|
}
|
|
if (!empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {
|
|
return 'https';
|
|
}
|
|
return 'http';
|
|
}
|
|
|
|
public static function getHost( $internal = false ) {
|
|
// @todo - wtf
|
|
$host = $_SERVER['HTTP_HOST'];
|
|
if ( true === $internal ) {
|
|
// if ( 'docker' === getenv( 'APP_ENV' ) ) {
|
|
// if ( Check::isNginx() ) {
|
|
// $host = 'webone';
|
|
// } elseif ( Check::isApache() ) {
|
|
// $host = 'webtwo';
|
|
// } else {
|
|
// $host = '127.0.0.1';
|
|
// }
|
|
// }
|
|
}
|
|
return $host;
|
|
}
|
|
|
|
/**
|
|
* Finds the root directory of the application.
|
|
*
|
|
* @return string - The applications root directory.
|
|
*/
|
|
public static function getRoot() {
|
|
$fullArray = explode( '/', $_SERVER['PHP_SELF'] );
|
|
array_pop( $fullArray ); // removes the current file name (index.php)
|
|
$route = implode( '/', $fullArray ) . '/';
|
|
return $route;
|
|
}
|
|
|
|
/**
|
|
* finds the physical location of the application
|
|
*
|
|
* @return string - The root file location for the application.
|
|
*/
|
|
public static function getAddress( $internal = false ) {
|
|
return self::getProtocol() . '://' . self::getHost( $internal ) . self::getRoot();
|
|
}
|
|
|
|
public static function getRequestUrl( $includeParams = true ) {
|
|
return self::getProtocol() . '://' . self::getHost() . self::getUri( $includeParams );
|
|
}
|
|
|
|
public static function getUri( $includeParams = true ) {
|
|
if ( true === $includeParams ) {
|
|
$out = $_SERVER['REQUEST_URI'];
|
|
} else {
|
|
$explodedSelect = explode( '?', $_SERVER['REQUEST_URI'] );
|
|
$out = $explodedSelect[0];
|
|
}
|
|
return $out;
|
|
}
|
|
}
|