# Upgrade to Version 6 * remove old `lib/CoreLibs` and copy the new over * copy `config/config.php` * install composer if not installed `composer init` and `composer install` * update composer.json ```json "autoload": { "classmap": [ "lib/" ] }, ``` Run to update autoloader list ```sh composer dump-autoload ``` * copy `includes/edit_base.inc` * add session start in the top header block where the `header()` calls are ```php // start session CoreLibs\Create\Session::startSession(); ``` * update all header calls if needed to add new log type call ```php // create logger $log = new CoreLibs\Debug\Logging([ 'log_folder' => BASE . LOG, 'file_id' => LOG_FILE_ID, 'print_file_date' => true, 'debug_all' => $DEBUG_ALL ?? false, 'echo_all' => $ECHO_ALL ?? false, 'print_all' => $PRINT_ALL ?? false, ]); ``` * add a db class ```php // db config with logger $db = new CoreLibs\DB\IO(DB_CONFIG, $log); ``` * login class needs to have db and logger added ```php // login & page access check $login = new CoreLibs\ACL\Login($db, $log); ``` * update language class ```php // pre auto detect language after login $locale = \CoreLibs\Language\GetLocale::setLocale(); // set lang and pass to smarty/backend $l10n = new \CoreLibs\Language\L10n( $locale['locale'], $locale['domain'], $locale['path'], ); ``` * smarty needs language ```php $smarty = new CoreLibs\Template\SmartyExtend($l10n, $locale); ``` * admin backend also needs logger ```php $cms = new CoreLibs\Admin\Backend($db, $log, $l10n, $locale); ``` * update and `$cms` or similar calls so db is in `$cms->db->...` and log are in `$cms->log->...` * update all `config.*.php` files where needed * check config.master.php for `BASE_NAME` and `G_TITLE` and set them in the `.env` file so the `config.master.php` can be copied as os * If not doable, see changed below in `config.master.php` must remove old auto loder and `FLASH` constant at least **REMOVE:** ```php /************* AUTO LOADER *******************/ // read auto loader require BASE . LIB . 'autoloader.php'; ``` **UPDATE:** ```php // po langs [DEPRECAED: use LOCALE] define('LANG', 'lang' . DIRECTORY_SEPARATOR); // po locale file define('LOCALE', 'locale' . DIRECTORY_SEPARATOR); ``` ```php // SSL host name // define('SSL_HOST', $_ENV['SSL_HOST'] ?? ''); ``` ```php // define full regex define('PASSWORD_REGEX', "/^" . (defined('PASSWORD_LOWER') ? PASSWORD_LOWER : '') . (defined('PASSWORD_UPPER') ? PASSWORD_UPPER : '') . (defined('PASSWORD_NUMBER') ? PASSWORD_NUMBER : '') . (defined('PASSWORD_SPECIAL') ? PASSWORD_SPECIAL : '') . "[A-Za-z\d" . PASSWORD_SPECIAL_RANGE . "]{" . PASSWORD_MIN_LENGTH . "," . PASSWORD_MAX_LENGTH . "}$/"); ``` ```php /************* LAYOUT WIDTHS *************/ define('PAGE_WIDTH', '100%'); define('CONTENT_WIDTH', '100%'); ``` ```php /************* OVERALL CONTROL NAMES *************/ // BELOW has HAS to be changed // base name for all session and log names // only alphanumeric characters, strip all others define('BASE_NAME', preg_replace('/[^A-Za-z0-9]/', '', $_ENV['BASE_NAME'] ?? '')); ``` ```php /************* LANGUAGE / ENCODING *******/ // default lang + encoding define('DEFAULT_LOCALE', 'en_US.UTF-8'); // default web page encoding setting define('DEFAULT_ENCODING', 'UTF-8'); ``` ```php // BAIL ON MISSING DB CONFIG: // we have either no db selction for this host but have db config entries // or we have a db selection but no db config as array or empty // or we have a selection but no matching db config entry if ( (!isset($SITE_CONFIG[HOST_NAME]['db_host']) && count($DB_CONFIG)) || (isset($SITE_CONFIG[HOST_NAME]['db_host']) && // missing DB CONFIG ((is_array($DB_CONFIG) && !count($DB_CONFIG)) || !is_array($DB_CONFIG) || // has DB CONFIG but no match empty($DB_CONFIG[$SITE_CONFIG[HOST_NAME]['db_host']])) ) ) { echo 'No matching DB config found for: "' . HOST_NAME . '". Contact Administrator'; exit; } ``` ```php // remove SITE_LANG define('SITE_LOCALE', $SITE_CONFIG[HOST_NAME]['site_locale'] ?? DEFAULT_LOCALE); define('SITE_ENCODING', $SITE_CONFIG[HOST_NAME]['site_encoding'] ?? DEFAULT_ENCODING); ``` ```php /************* GENERAL PAGE TITLE ********/ define('G_TITLE', $_ENV['G_TITLE'] ?? ''); ``` * move all login passweords into the `.env` file in the `configs/` folder in the `.env` file ```sql DB_NAME.TEST=some_database ... ``` In the config then ```php 'db_name' => $_ENV['DB_NAME.TEST'] ?? '', ``` * config.host.php update must add site_locale (site_lang + site_encoding) remove site_lang ```php // lang + encoding 'site_locale' => 'en_US.UTF-8', // site language 'site_encoding' => 'UTF-8', ``` * copy `layout/admin/javascript/edit.jq.js` * check other javacsript files if needed (`edit.jq.js`) ## IMPORTANT NOTE If no upgrade to V5 was done all calls that refered to `CoreLibs\Basic` will now fail and no longer be warned as deprected See the old file for all methods and where they have moved