Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 48 additions & 23 deletions includes/Config/Init.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,107 +22,132 @@

$this->actions = $actions;

$this->setup_environment();

// Abort initialization here if fast init wanted (for tests/debug/do not use)
if ($this->actions->return_if_fast_init === true && defined('YOURLS_FAST_INIT') && YOURLS_FAST_INIT){

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is a missing space between the closing parenthesis and the opening brace ){ which is inconsistent with the rest of the file's formatting and standard PSR-12 style guidelines. Adding a space improves readability.

        if ($this->actions->return_if_fast_init === true && defined('YOURLS_FAST_INIT') && YOURLS_FAST_INIT) {

return;
}

$this->setup_core();
$this->setup_plugins();
}

/**
* Set up the initial environment.
*
* @return void
*/
private function setup_environment() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The newly introduced helper method setup_environment is declared as private. Since the Init class is not marked as final and can be extended, and all other helper methods in this class (such as redirect_ssl_if_needed, include_db_files, etc.) are public, using private restricts extensibility and is inconsistent with the rest of the class design. Changing this method to protected allows subclasses to override or hook into specific initialization phases if needed (e.g., during testing or custom bootstrapping).

    protected function setup_environment() {

// Include core files
if ($actions->include_core_funcs === true) {
if ($this->actions->include_core_funcs === true) {
$this->include_core_functions();
}

// Enforce UTC timezone. Date/time can be adjusted with a plugin.
if ($actions->default_timezone === true) {
if ($this->actions->default_timezone === true) {
date_default_timezone_set( 'UTC' );
}

// Check if we are in maintenance mode - if yes, it will die here.
if ($actions->check_maintenance_mode === true) {
if ($this->actions->check_maintenance_mode === true) {
yourls_check_maintenance_mode();
}

// Compatibility: REQUEST_URI for IIS
if ($actions->fix_request_uri === true) {
if ($this->actions->fix_request_uri === true) {
yourls_fix_request_uri();
}

// If request for an admin page is http:// and SSL is required, redirect
if ($actions->redirect_ssl === true) {
if ($this->actions->redirect_ssl === true) {
$this->redirect_ssl_if_needed();
}

// Create the YOURLS object $ydb that will contain everything we globally need
if ($actions->include_db === true) {
if ($this->actions->include_db === true) {
$this->include_db_files();
}

// Allow early and unconditional inclusion of custom code
if ($actions->include_cache === true) {
if ($this->actions->include_cache === true) {
$this->include_cache_files();
}
}

// Abort initialization here if fast init wanted (for tests/debug/do not use)
if ($actions->return_if_fast_init === true && defined('YOURLS_FAST_INIT') && YOURLS_FAST_INIT){
return;
}

/**
* Load core options and check for install/upgrade.
*
* @return void
*/
private function setup_core() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The newly introduced helper method setup_core is declared as private. For consistency and to allow subclasses to override or hook into specific initialization phases, it is recommended to change its visibility to protected.

    protected function setup_core() {

// Read options right from start
if ($actions->get_all_options === true) {
if ($this->actions->get_all_options === true) {
yourls_get_all_options();
}

// Register shutdown function
if ($actions->register_shutdown === true) {
if ($this->actions->register_shutdown === true) {
register_shutdown_function( 'yourls_shutdown' );
}

// Core now loaded
if ($actions->core_loaded === true) {
if ($this->actions->core_loaded === true) {
yourls_do_action( 'init' ); // plugins can't see this, not loaded yet
}

// Check if need to redirect to install procedure
if ($actions->redirect_to_install === true) {
if ($this->actions->redirect_to_install === true) {
if (!yourls_is_installed() && !yourls_is_installing()) {
yourls_no_cache_headers();
yourls_redirect( yourls_admin_url('install.php'), 307 );
exit();
}
}

// Check if upgrade is needed (bypassed if upgrading or installing)
if ($actions->check_if_upgrade_needed === true) {
if ($this->actions->check_if_upgrade_needed === true) {
if (!yourls_is_upgrading() && !yourls_is_installing() && yourls_upgrade_is_needed()) {
yourls_no_cache_headers();
yourls_redirect( yourls_admin_url('upgrade.php'), 307 );
exit();
}
}
}

Check warning

Code scanning / PHPMD

Code Size Rules: CyclomaticComplexity Warning

The method setup_core() has a Cyclomatic Complexity of 11. The configured cyclomatic complexity threshold is 10.
Comment on lines 83 to 116

/**
* Load plugins, locales, and admin updates.
*
* @return void
*/
private function setup_plugins() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The newly introduced helper method setup_plugins is declared as private. For consistency and to allow subclasses to override or hook into specific initialization phases, it is recommended to change its visibility to protected.

    protected function setup_plugins() {

// Load all plugins
if ($actions->load_plugins === true) {
if ($this->actions->load_plugins === true) {
yourls_load_plugins();
}

// Trigger plugin loaded action
if ($actions->plugins_loaded_action === true) {
if ($this->actions->plugins_loaded_action === true) {
yourls_do_action( 'plugins_loaded' );
}

// Load locale
if ($actions->load_default_textdomain === true) {
if ($this->actions->load_default_textdomain === true) {
yourls_load_default_textdomain();
}

// Is there a new version of YOURLS ?
if ($actions->check_new_version === true) {
if ($this->actions->check_new_version === true) {
if (yourls_is_installed() && !yourls_is_upgrading()) {
yourls_tell_if_new_version();
}
}

if ($actions->init_admin === true) {
if ($this->actions->init_admin === true) {
if (yourls_is_admin()) {
yourls_do_action( 'admin_init' );
}
}

}

/**
Expand Down
Loading