diff --git a/.gitignore b/.gitignore index dd606ef4..35a8acbc 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ vendor/ tools/ www/composer.lock www/vendor +**/.env +**/.target diff --git a/4dev/tests/ACL/CoreLibsACLLoginTest.php b/4dev/tests/ACL/CoreLibsACLLoginTest.php index e6abe067..1062bb60 100644 --- a/4dev/tests/ACL/CoreLibsACLLoginTest.php +++ b/4dev/tests/ACL/CoreLibsACLLoginTest.php @@ -152,7 +152,6 @@ final class CoreLibsACLLoginTest extends TestCase // TARGET define('TARGET', 'test'); // LOGIN DB SCHEMA - // define('LOGIN_DB_SCHEMA', ''); // SHOULD SET // DEFAULT_ACL_LEVEL (d80) diff --git a/www/configs/.target.example b/www/configs/.target.example new file mode 100644 index 00000000..62f4277b --- /dev/null +++ b/www/configs/.target.example @@ -0,0 +1,3 @@ +# target can be live, stage, test, dev +# this overrides the SITE set "location" entry +TARGET= diff --git a/www/configs/config.master.php b/www/configs/config.master.php index da221c9b..9d5dbfa4 100644 --- a/www/configs/config.master.php +++ b/www/configs/config.master.php @@ -78,42 +78,11 @@ define('TEMPLATES_C', 'templates_c' . DIRECTORY_SEPARATOR); // template base define('TEMPLATES', 'templates' . DIRECTORY_SEPARATOR); -/************* HASH / ACL DEFAULT / ERROR SETTINGS / SMARTY *************/ +/************* HASH / ACL DEFAULT *************/ // default hash type define('DEFAULT_HASH', 'sha256'); // default acl level -define('DEFAULT_ACL_LEVEL', 80); -// SSL host name -// define('SSL_HOST', $_ENV['SSL_HOST'] ?? ''); -// error page strictness, Default is 3 -// 1: only show error page as the last mesure if really no mid & aid can be loaded and found at all -// 2: if template not found, do not search, show error template -// 3: if default template is not found, show error template, do not fall back to default tree -// 4: very strict, even on normal fixable errors through error -// define('ERROR_STRICT', 3); -// allow page caching in general, set to 'false' if you do debugging or development! -// define('ALLOW_SMARTY_CACHE', false); -// cache life time, in second', default here is 2 days (172800s) -// -1 is never expire cache -// define('SMARTY_CACHE_LIFETIME', -1); - -/************* LOGOUT ********************/ -// logout target -define('LOGOUT_TARGET', ''); - -/************* AJAX / ACCESS *************/ -// ajax request type -define('AJAX_REQUEST_TYPE', 'POST'); -// what AJAX type to use -define('USE_PROTOTYPE', false); -define('USE_SCRIPTACULOUS', false); -define('USE_JQUERY', true); - -/************* LAYOUT WIDTHS *************/ -define('PAGE_WIDTH', '100%'); -define('CONTENT_WIDTH', '100%'); -// the default template name -define('MASTER_TEMPLATE_NAME', 'main_body.tpl'); +define('DEFAULT_ACL_LEVEL', $ENV['DEFAULT_ACL_LEVEL'] ?? 80); /************* OVERALL CONTROL NAMES *************/ // BELOW has HAS to be changed @@ -136,24 +105,15 @@ define('COMPILE_ID', 'COMPILE_' . BASE_NAME . '_' . SERVER_NAME_HASH); /************* LANGUAGE / ENCODING *******/ // default lang + encoding -define('DEFAULT_LOCALE', 'en_US.UTF-8'); +define('DEFAULT_LOCALE', $_ENV['LOCALE'] ?? 'en_US.UTF-8'); // default web page encoding setting -define('DEFAULT_ENCODING', 'UTF-8'); +define('DEFAULT_ENCODING', array_pad(explode('.', DEFAULT_LOCALE, 2), 2, 'UTF-8')); -/************* QUEUE TABLE *************/ -// if we have a dev/live system -// set_live is a per page/per item -// live_queue is a global queue system -// define('QUEUE', 'live_queue'); - -/************* DB PATHS (PostgreSQL) *****************/ -// schema names, can also be defined per -define('PUBLIC_SCHEMA', 'public'); -define('DEV_SCHEMA', 'public'); -define('TEST_SCHEMA', 'public'); -define('LIVE_SCHEMA', 'public'); -define('GLOBAL_DB_SCHEMA', ''); -define('LOGIN_DB_SCHEMA', ''); +/************* HOST NAME *****************/ +// get the name without the port +list($HOST_NAME) = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null); +// set HOST name +define('HOST_NAME', $HOST_NAME); /************* CORE HOST SETTINGS *****************/ if (file_exists(BASE . CONFIGS . 'config.host.php')) { @@ -162,6 +122,14 @@ if (file_exists(BASE . CONFIGS . 'config.host.php')) { if (!isset($SITE_CONFIG)) { $SITE_CONFIG = []; } +// BAIL ON MISSING MASTER SITE CONFIG +if (!isset($SITE_CONFIG[HOST_NAME]['location'])) { + throw new \InvalidArgumentException( + 'Missing SITE_CONFIG entry for: "' . HOST_NAME . '". Contact Administrator' + ); +} +// set target first +define('TARGET', $_ENV['TARGET'] ?? $SITE_CONFIG[HOST_NAME]['location'] ?? 'test'); /************* DB ACCESS *****************/ if (file_exists(BASE . CONFIGS . 'config.db.php')) { require BASE . CONFIGS . 'config.db.php'; @@ -175,18 +143,6 @@ if (file_exists(BASE . CONFIGS . 'config.path.php')) { } /************* MASTER INIT *****************/ -// live frontend pages -// ** missing live domains ** -// get the name without the port -[$HOST_NAME] = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null); -// set HOST name -define('HOST_NAME', $HOST_NAME); -// BAIL ON MISSING MASTER SITE CONFIG -if (!isset($SITE_CONFIG[HOST_NAME]['location'])) { - throw new \InvalidArgumentException( - 'Missing SITE_CONFIG entry for: "' . HOST_NAME . '". Contact Administrator' - ); -} // 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 @@ -237,35 +193,31 @@ define('DB_CONFIG', $DB_CONFIG[DB_CONFIG_NAME] ?? [ ]); // because we can't change constant, but we want to for db debug flag $GLOBALS['DB_CONFIG_SET'] = DB_CONFIG; -// define('DB_CONFIG_TARGET', SITE_CONFIG[$HOST_NAME]['db_host_target']); -// define('DB_CONFIG_OTHER', SITE_CONFIG[$HOST_NAME]['db_host_other']); -// override for login and global schemas -// where the edit* tables are -// define('LOGIN_DB_SCHEMA', PUBLIC_SCHEMA); -// where global tables are that are used by all schemas (eg queue tables for online, etc) -// define('GLOBAL_DB_SCHEMA', PUBLIC_SCHEMA); // debug settings, site lang, etc -define('TARGET', $SITE_CONFIG[HOST_NAME]['location'] ?? 'test'); define('DEBUG_LEVEL', $SITE_CONFIG[HOST_NAME]['debug_level'] ?? 'debug'); define('SITE_LOCALE', $SITE_CONFIG[HOST_NAME]['site_locale'] ?? DEFAULT_LOCALE); define('SITE_DOMAIN', str_replace(DIRECTORY_SEPARATOR, '', CONTENT_PATH)); define('SITE_ENCODING', $SITE_CONFIG[HOST_NAME]['site_encoding'] ?? DEFAULT_ENCODING); define('LOGIN_ENABLED', $SITE_CONFIG[HOST_NAME]['login_enabled'] ?? false); define('AUTH', $SITE_CONFIG[HOST_NAME]['auth'] ?? false); -// paths -// define('CSV_PATH', $PATHS[TARGET]['csv_path'] ?? ''); -// define('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin'] ?? ''); -// define('REDIRECT_URL', $PATHS[TARGET]['redirect_url'] ?? ''); +// NOTE: everything below is smarty related and should be removed from here /************* GENERAL PAGE TITLE ********/ define('G_TITLE', $_ENV['G_TITLE'] ?? ''); - +/************* LAYOUT WIDTHS *************/ +define('PAGE_WIDTH', $_ENV['SMARTY.PAGE_WIDTH'] ?? '100%'); +define('CONTENT_WIDTH', $_ENV['SMARTY.CONTENT_WIDTH'] ?? '100%'); +// the default template name +define('MASTER_TEMPLATE_NAME', $_ENV['MASTER_TEMPLATE_NAME'] ?? 'main_body.tpl'); +/************* JS LIBRARIES *************/ +define('USE_PROTOTYPE', false); +define('USE_SCRIPTACULOUS', false); +define('USE_JQUERY', true); /************ STYLE SHEETS / JS **********/ -define('ADMIN_STYLESHEET', 'edit.css'); -define('ADMIN_JAVASCRIPT', 'edit.js'); +define('ADMIN_STYLESHEET', $_ENV['ADMIN.STYLESHEET'] ?? 'edit.css'); +define('ADMIN_JAVASCRIPT', $_ENV['ADMIN.JAVASCRIPT'] ?? 'edit.js'); define('STYLESHEET', $_ENV['STYLESHEET'] ?? 'frontend.css'); define('JAVASCRIPT', $_ENV['JAVASCRIPT'] ?? 'frontend.js'); - // anything optional /************* INTERNAL ******************/ // any other global definitons in the config.other.php diff --git a/www/configs/config.other.php b/www/configs/config.other.php index 3a02357d..f9f0320f 100644 --- a/www/configs/config.other.php +++ b/www/configs/config.other.php @@ -15,6 +15,12 @@ define('EDIT_BASE_STYLESHEET', 'edit.css'); // define('SOME_ID', ); +/************* QUEUE TABLE *************/ +// if we have a dev/live system +// set_live is a per page/per item +// live_queue is a global queue system +// define('QUEUE', 'live_queue'); + /************* CONVERT *******************/ // this only needed if the external thumbnail create is used $paths = [ diff --git a/www/configs/config.path.php b/www/configs/config.path.php index 69a78d00..c3f6cb84 100644 --- a/www/configs/config.path.php +++ b/www/configs/config.path.php @@ -35,4 +35,9 @@ define('CONTENT_PATH', $folder . DIRECTORY_SEPARATOR); ], ];*/ +// paths +// define('CSV_PATH', $PATHS[TARGET]['csv_path'] ?? ''); +// define('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin'] ?? ''); +// define('REDIRECT_URL', $PATHS[TARGET]['redirect_url'] ?? ''); + // __END__ diff --git a/www/configs/config.php b/www/configs/config.php index 9f884b73..9358099f 100644 --- a/www/configs/config.php +++ b/www/configs/config.php @@ -53,6 +53,11 @@ for ( \gullevek\dotEnv\DotEnv::readEnvFile( $__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH ); + // load target file if it exists + \gullevek\dotEnv\DotEnv::readEnvFile( + $__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH, + '.target' + ); // load master config file that loads all other config files require $__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php'; break; diff --git a/www/lib/CoreLibs/ACL/Login.php b/www/lib/CoreLibs/ACL/Login.php index 890119ff..205bd49f 100644 --- a/www/lib/CoreLibs/ACL/Login.php +++ b/www/lib/CoreLibs/ACL/Login.php @@ -423,14 +423,9 @@ class Login // LOGOUT TARGET if (!isset($options['logout_target'])) { - if (defined('LOGOUT_TARGET')) { - trigger_error( - 'loginMainCall: LOGOUT_TARGET should not be used', - E_USER_DEPRECATED - ); - $options['logout_target'] = LOGOUT_TARGET; - $this->logout_target = $options['logout_target']; - } + // defaults to '' + $options['logout_target'] = ''; + $this->logout_target = $options['logout_target']; } // *** PASSWORD SETTINGS diff --git a/www/lib/CoreLibs/Basic.php b/www/lib/CoreLibs/Basic.php index db57672a..c259bd79 100644 --- a/www/lib/CoreLibs/Basic.php +++ b/www/lib/CoreLibs/Basic.php @@ -103,11 +103,7 @@ class Basic 'VIDEOS', 'DOCUMENTS', 'PDFS', 'BINARIES', 'ICONS', 'UPLOADS', 'CSV', 'JS', 'CSS', 'TABLE_ARRAYS', 'SMARTY', 'LANG', 'CACHE', 'TMP', 'LOG', 'TEMPLATES', 'TEMPLATES_C', 'DEFAULT_LANG', 'DEFAULT_ENCODING', 'DEFAULT_HASH', - 'DEFAULT_ACL_LEVEL', 'LOGOUT_TARGET', 'PASSWORD_CHANGE', 'AJAX_REQUEST_TYPE', - 'USE_PROTOTYPE', 'USE_SCRIPTACULOUS', 'USE_JQUERY', 'PAGE_WIDTH', - 'MASTER_TEMPLATE_NAME', 'PUBLIC_SCHEMA', 'TEST_SCHEMA', 'DEV_SCHEMA', - 'LIVE_SCHEMA', 'DB_CONFIG_NAME', 'DB_CONFIG', 'TARGET', 'DEBUG', - 'SHOW_ALL_ERRORS' + 'DB_CONFIG_NAME', 'DB_CONFIG', 'TARGET' ] as $constant ) { if (!defined($constant)) { diff --git a/www/lib/CoreLibs/Language/GetLocale.php b/www/lib/CoreLibs/Language/GetLocale.php index d0e6f9e1..bedcea05 100644 --- a/www/lib/CoreLibs/Language/GetLocale.php +++ b/www/lib/CoreLibs/Language/GetLocale.php @@ -50,7 +50,6 @@ class GetLocale $locale = defined('SITE_LOCALE') && !empty(SITE_LOCALE) ? SITE_LOCALE : // else parse from default, if not 'en' - /** @phpstan-ignore-next-line DEFAULT_LOCALE could be empty */ (defined('DEFAULT_LOCALE') && !empty(DEFAULT_LOCALE) ? DEFAULT_LOCALE : 'en'); } @@ -97,7 +96,6 @@ class GetLocale $encoding = defined('SITE_ENCODING') && !empty(SITE_ENCODING) ? SITE_ENCODING : // or default encoding, if not 'UTF-8' - /** @phpstan-ignore-next-line DEFAULT_LOCALE could be empty */ (defined('DEFAULT_ENCODING') && !empty(DEFAULT_ENCODING) ? DEFAULT_ENCODING : 'UTF-8'); }