���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/rickpfrv/tie.cx/app/core/Router.php
���ѧ٧ѧ�
<?php namespace Altum\Routing; use Altum\Database\Database; class Router { public static $params = []; public static $original_request = ''; public static $path = ''; public static $controller_key = 'index'; public static $controller = 'Index'; public static $controller_settings = [ 'menu_margin' => true, 'body_white' => true, 'wrapper' => 'wrapper', 'no_authentication_check' => false, /* Should we see a view for the controller? */ 'has_view' => true, /* If set on yes, ads wont show on these pages at all */ 'no_ads' => false, /* Authentication guard check (potential values: null, 'guest', 'user', 'admin') */ 'authentication' => null ]; public static $method = 'index'; public static $data = []; public static $routes = [ 'l' => [ 'link' => [ 'controller' => 'Link', 'settings' => [ 'no_authentication_check' => true ] ], ], '' => [ 'index' => [ 'controller' => 'Index', 'settings' => [ 'menu_margin' => false, ] ], 'login' => [ 'controller' => 'Login', 'settings' => [ 'wrapper' => 'basic_wrapper', 'no_ads' => true ] ], 'register' => [ 'controller' => 'Register', 'settings' => [ 'wrapper' => 'basic_wrapper', 'no_ads' => true ] ], 'pages' => [ 'controller' => 'Pages' ], 'page' => [ 'controller' => 'Page' ], 'api-documentation' => [ 'controller' => 'ApiDocumentation', ], 'activate-user' => [ 'controller' => 'ActivateUser' ], 'lost-password' => [ 'controller' => 'LostPassword', 'settings' => [ 'wrapper' => 'basic_wrapper', 'no_ads' => true ] ], 'reset-password' => [ 'controller' => 'ResetPassword', 'settings' => [ 'wrapper' => 'basic_wrapper', 'no_ads' => true ] ], 'resend-activation' => [ 'controller' => 'ResendActivation', 'settings' => [ 'wrapper' => 'basic_wrapper', 'no_ads' => true ] ], 'logout' => [ 'controller' => 'Logout' ], 'notfound' => [ 'controller' => 'NotFound' ], /* Logged in */ 'dashboard' => [ 'controller' => 'Dashboard', 'settings' => [ 'body_white' => false ] ], 'links' => [ 'controller' => 'Links', 'settings' => [ 'body_white' => false ] ], 'projects' => [ 'controller' => 'Projects', 'settings' => [ 'menu_no_margin' => false, 'body_white' => false ] ], 'pixels' => [ 'controller' => 'Pixels', 'settings' => [ 'menu_no_margin' => false, 'body_white' => false ] ], 'link' => [ 'controller' => 'Link', 'settings' => [ 'body_white' => false ] ], 'biolink-block' => [ 'controller' => 'BiolinkBlock', 'settings' => [ 'body_white' => false ] ], 'account' => [ 'controller' => 'Account', 'settings' => [ 'body_white' => false ] ], 'domains' => [ 'controller' => 'Domains', 'settings' => [ 'body_white' => false ] ], 'account-plan' => [ 'controller' => 'AccountPlan', 'settings' => [ 'body_white' => false, 'no_ads' => true ] ], 'account-payments' => [ 'controller' => 'AccountPayments', 'settings' => [ 'body_white' => false, 'no_ads' => true ] ], 'account-logs' => [ 'controller' => 'AccountLogs', 'settings' => [ 'body_white' => false, 'no_ads' => true ] ], 'account-api' => [ 'controller' => 'AccountApi', 'settings' => [ 'body_white' => false, 'no_ads' => true ] ], 'account-delete' => [ 'controller' => 'AccountDelete', 'settings' => [ 'body_white' => false, 'no_ads' => true ] ], 'invoice' => [ 'controller' => 'Invoice', 'settings' => [ 'wrapper' => 'invoice/invoice_wrapper', 'body_white' => false, 'no_ads' => true ] ], 'plan' => [ 'controller' => 'Plan', 'settings' => [ 'no_ads' => true ] ], 'pay' => [ 'controller' => 'Pay', 'settings' => [ 'no_ads' => true, 'body_white' => false, ] ], 'pay-thank-you' => [ 'controller' => 'PayThankYou', 'settings' => [ 'no_ads' => true ] ], /* Webhooks */ 'webhook-paypal' => [ 'controller' => 'WebhookPaypal', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'webhook-stripe' => [ 'controller' => 'WebhookStripe', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], /* Ajax */ 'project-ajax' => [ 'controller' => 'ProjectAjax' ], 'pixel-ajax' => [ 'controller' => 'PixelAjax' ], 'biolink-block-ajax' => [ 'controller' => 'BiolinkBlockAjax' ], 'link-ajax' => [ 'controller' => 'LinkAjax' ], /* Others */ 'sitemap' => [ 'controller' => 'Sitemap', 'settings' => [ 'no_authentication_check' => true ] ], 'cron' => [ 'controller' => 'Cron', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], ], 'api' => [ 'links' => [ 'controller' => 'ApiLinks', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'statistics' => [ 'controller' => 'ApiStatistics', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'projects' => [ 'controller' => 'ApiProjects', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'domains' => [ 'controller' => 'ApiDomains', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'user' => [ 'controller' => 'ApiUser', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'payments' => [ 'controller' => 'ApiPayments', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], 'logs' => [ 'controller' => 'ApiLogs', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], ], /* Admin Panel */ 'admin' => [ 'index' => [ 'controller' => 'AdminIndex' ], 'users' => [ 'controller' => 'AdminUsers' ], 'user-create' => [ 'controller' => 'AdminUserCreate' ], 'user-view' => [ 'controller' => 'AdminUserView' ], 'user-update' => [ 'controller' => 'AdminUserUpdate' ], 'links' => [ 'controller' => 'AdminLinks' ], 'projects' => [ 'controller' => 'AdminProjects' ], 'pixels' => [ 'controller' => 'AdminPixels' ], 'domains' => [ 'controller' => 'AdminDomains' ], 'domain-create' => [ 'controller' => 'AdminDomainCreate' ], 'domain-update' => [ 'controller' => 'AdminDomainUpdate' ], 'pages-categories' => [ 'controller' => 'AdminPagesCategories' ], 'pages-category-create' => [ 'controller' => 'AdminPagesCategoryCreate' ], 'pages-category-update' => [ 'controller' => 'AdminPagesCategoryUpdate' ], 'pages' => [ 'controller' => 'AdminPages' ], 'page-create' => [ 'controller' => 'AdminPageCreate' ], 'page-update' => [ 'controller' => 'AdminPageUpdate' ], 'plans' => [ 'controller' => 'AdminPlans' ], 'plan-create' => [ 'controller' => 'AdminPlanCreate' ], 'plan-update' => [ 'controller' => 'AdminPlanUpdate' ], 'codes' => [ 'controller' => 'AdminCodes' ], 'code-create' => [ 'controller' => 'AdminCodeCreate' ], 'code-update' => [ 'controller' => 'AdminCodeUpdate' ], 'taxes' => [ 'controller' => 'AdminTaxes' ], 'tax-create' => [ 'controller' => 'AdminTaxCreate' ], 'tax-update' => [ 'controller' => 'AdminTaxUpdate' ], 'payments' => [ 'controller' => 'AdminPayments' ], 'statistics' => [ 'controller' => 'AdminStatistics' ], 'settings' => [ 'controller' => 'AdminSettings' ], 'api-documentation' => [ 'controller' => 'AdminApiDocumentation', ], ], 'admin-api' => [ 'users' => [ 'controller' => 'AdminApiUsers', 'settings' => [ 'no_authentication_check' => true, 'has_view' => false ] ], ], ]; public static function parse_url() { $params = self::$params; if(isset($_GET['altum'])) { $params = explode('/', filter_var(rtrim($_GET['altum'], '/'), FILTER_SANITIZE_URL)); } self::$params = $params; return $params; } public static function get_params() { return self::$params = array_values(self::$params); } public static function parse_controller() { self::$original_request = implode('/', self::$params); /* Check if the current link accessed is actually the original url or not (multi domain use) */ $original_url_host = parse_url(url())['host']; $request_url_host = Database::clean_string($_SERVER['HTTP_HOST']); if($original_url_host != $request_url_host) { /* Make sure the custom domain is attached */ $domain = (new \Altum\Models\Domain())->get_domain_by_host($request_url_host);; if($domain && $domain->is_enabled) { self::$controller_key = 'link'; self::$controller = 'Link'; self::$path = 'l'; /* Set some route data */ self::$data['domain'] = $domain; } } /* Check for potential other paths than the default one (admin panel) */ if(!empty(self::$params[0])) { if(in_array(self::$params[0], ['admin', 'admin-api', 'l', 'api']) && $original_url_host == $request_url_host) { self::$path = self::$params[0]; unset(self::$params[0]); self::$params = array_values(self::$params); } } if(!empty(self::$params[0])) { if(array_key_exists(self::$params[0], self::$routes[self::$path]) && file_exists(APP_PATH . 'controllers/' . (self::$path != '' ? self::$path . '/' : null) . self::$routes[self::$path][self::$params[0]]['controller'] . '.php')) { self::$controller_key = self::$params[0]; unset(self::$params[0]); } else { /* Try to check if the link exists via the cache */ $cache_instance = \Altum\Cache::$adapter->getItem('link?url=' . md5(self::$params[0]) . (isset(self::$data['domain']) ? '&domain_id=' . self::$data['domain']->domain_id : null)); /* Set cache if not existing */ if(!$cache_instance->get()) { /* Get data from the database */ if(isset(self::$data['domain'])) { $link = db()->where('url', self::$params[0])->where('domain_id', self::$data['domain']->domain_id)->getOne('links'); } else { $link = db()->where('url', self::$params[0])->where('domain_id', 0)->getOne('links'); } if($link) { \Altum\Cache::$adapter->save($cache_instance->set($link)->expiresAfter(86400)->addTag('link_id=' . $link->link_id)); /* Set some route data */ self::$data['link'] = $link; } } else { /* Get cache */ $link = $cache_instance->get(); /* Set some route data */ self::$data['link'] = $link; } /* Check if there is any link available in the database */ if($link) { self::$controller_key = 'link'; self::$controller = 'Link'; self::$path = 'l'; } else { /* Check for a custom domain 404 redirect */ if(isset(self::$data['domain']) && self::$data['domain']->custom_not_found_url) { header('Location: ' . self::$data['domain']->custom_not_found_url); die(); } else { /* Not found controller */ self::$path = ''; self::$controller_key = 'notfound'; } } } } /* Check for a custom index url redirect in case there is no link requested */ if(!isset(self::$params[0]) && !isset(self::$params[1]) && self::$path == 'l' && $original_url_host != $request_url_host && isset(self::$data['domain']) && self::$data['domain']->custom_index_url) { header('Location: ' . self::$data['domain']->custom_index_url); die(); } /* Save the current controller */ self::$controller = self::$routes[self::$path][self::$controller_key]['controller']; /* Admin path authentication force check */ if(self::$path == 'admin' && !isset(self::$routes[self::$path][self::$controller_key]['settings'])) { self::$routes[self::$path][self::$controller_key]['settings'] = ['authentication' => 'admin']; } /* Make sure we also save the co ntroller specific settings */ if(isset(self::$routes[self::$path][self::$controller_key]['settings'])) { self::$controller_settings = array_merge(self::$controller_settings, self::$routes[self::$path][self::$controller_key]['settings']); } return self::$controller; } public static function get_controller($controller_name, $path = '') { require_once APP_PATH . 'controllers/' . ($path != '' ? $path . '/' : null) . $controller_name . '.php'; /* Create a new instance of the controller */ $class = 'Altum\\Controllers\\' . $controller_name; /* Instantiate the controller class */ $controller = new $class; return $controller; } public static function parse_method($controller) { $method = self::$method; /* Make sure to check the class method if set in the url */ if(isset(self::get_params()[0]) && method_exists($controller, self::get_params()[0])) { /* Make sure the method is not private */ $reflection = new \ReflectionMethod($controller, self::get_params()[0]); if($reflection->isPublic()) { $method = self::get_params()[0]; unset(self::$params[0]); } } return $method; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0.1 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�