diff --git a/www/admin/class_test.debug.php b/www/admin/class_test.debug.php
index 9ecbd919..340c2383 100644
--- a/www/admin/class_test.debug.php
+++ b/www/admin/class_test.debug.php
@@ -24,9 +24,7 @@ define('USE_DATABASE', false);
// sample config
require 'config.php';
// set session name
-if (!defined('SET_SESSION_NAME')) {
- define('SET_SESSION_NAME', EDIT_SESSION_NAME);
-}
+$GLOBALS['SET_SESSION_NAME'] = EDIT_SESSION_NAME;
// define log file id
$LOG_FILE_ID = 'classTest-debug';
ob_end_flush();
@@ -37,7 +35,13 @@ use CoreLibs\Debug\Support as DebugSupport;
use CoreLibs\Debug\FileWriter;
$basic = new CoreLibs\Basic();
-$debug = new CoreLibs\Debug\Logging();
+$debug = new CoreLibs\Debug\Logging([
+ 'log_folder' => BASE . LOG,
+ 'file_id' => $LOG_FILE_ID,
+ 'debug_all' => $DEBUG_ALL,
+ 'print_all' => $PRINT_ALL,
+ 'echo_all' => $ECHO_ALL,
+]);
$debug_support_class = 'CoreLibs\Debug\Support';
$debug_logging_class = 'CoreLibs\Debug\Logging';
diff --git a/www/lib/CoreLibs/ACL/Login.php b/www/lib/CoreLibs/ACL/Login.php
index 8e5fe10a..484758b5 100644
--- a/www/lib/CoreLibs/ACL/Login.php
+++ b/www/lib/CoreLibs/ACL/Login.php
@@ -69,6 +69,7 @@ declare(strict_types=1);
namespace CoreLibs\ACL;
use CoreLibs\Check\Password;
+use CoreLibs\Create\Session;
class Login extends \CoreLibs\DB\IO
{
@@ -184,12 +185,13 @@ class Login extends \CoreLibs\DB\IO
}
// initial the session if there is no session running already
- // TODO: move that to outside
- \CoreLibs\Create\Session::startSession();
- // check if session exists
- if (!session_id()) {
- echo 'Session not started!
Use \'session_start();\'.
';
- echo 'For less problems with other session, you can set a session name with \'session_name("name");\'.
';
+ // check if session exists and could be created
+ // TODO: move session creation and check to outside?
+ if (Session::startSession() === false) {
+ echo 'Session not started or could not be started!
'
+ . 'Use \'\CoreLibs\Create\Session::startSession();\'.
'
+ . 'For less problems with other session, you can set a '
+ . 'session name with \'\CoreLibs\Create\Session::startSession(\'name\');\'.
';
exit;
}
@@ -209,7 +211,7 @@ class Login extends \CoreLibs\DB\IO
$this->login_is_ajax_page = isset($GLOBALS['AJAX_PAGE']) && $GLOBALS['AJAX_PAGE'] ? true : false;
// set the default lang
$lang = 'en_utf8';
- if (session_id() !== false && !empty($_SESSION['DEFAULT_LANG'])) {
+ if (Session::getSessionId() !== false && !empty($_SESSION['DEFAULT_LANG'])) {
$lang = $_SESSION['DEFAULT_LANG'];
} else {
$lang = defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG;
@@ -408,11 +410,12 @@ class Login extends \CoreLibs\DB\IO
$this->login_error = 102;
} else {
// we have to get the themes in here too
- $q = "SELECT eu.edit_user_id, username, password, eu.edit_group_id, "
+ $q = "SELECT eu.edit_user_id, eu.username, eu.password, "
+ . "eu.edit_group_id, "
. "eg.name AS edit_group_name, admin, "
. "eu.login_error_count, eu.login_error_date_last, "
. "eu.login_error_date_first, eu.strict, eu.locked, "
- . "debug, db_debug, "
+ . "eu.debug, eu.db_debug, "
. "eareu.level AS user_level, eareu.type AS user_type, "
. "eareg.level AS group_level, eareg.type AS group_type, "
. "eu.enabled, el.short_name AS lang_short, el.iso_name AS lang_iso, "
@@ -477,8 +480,9 @@ class Login extends \CoreLibs\DB\IO
$this->loginCheckPermissions();
if ($this->login_error == 0) {
// now set all session vars and read page permissions
- $GLOBALS['DEBUG_ALL'] = $_SESSION['DEBUG_ALL'] = $res['debug'];
- $GLOBALS['DB_DEBUG'] = $_SESSION['DB_DEBUG'] = $res['db_debug'];
+ $_SESSION['DEBUG_ALL'] = $this->dbBoolean($res['debug']);
+ $_SESSION['DB_DEBUG'] = $this->dbBoolean($res['db_debug']);
+ // general info for user logged in
$_SESSION['USER_NAME'] = $res['username'];
$_SESSION['ADMIN'] = $res['admin'];
$_SESSION['GROUP_NAME'] = $res['edit_group_name'];
@@ -687,14 +691,6 @@ class Login extends \CoreLibs\DB\IO
$this->permission_okay = false;
return $this->permission_okay;
}
- // unset mem limit if debug is set to 1
- // if (
- // ($GLOBALS["DEBUG_ALL"] || $GLOBALS["DB_DEBUG"] ||
- // $_SESSION["DEBUG_ALL"] || $_SESSION["DB_DEBUG"]) &&
- // ini_get('memory_limit') != -1
- // ) {
- // ini_set('memory_limit', '-1');
- // }
if (isset($res['filename']) && $res['filename'] == $this->page_name) {
$this->permission_okay = true;
} else {
@@ -714,21 +710,39 @@ class Login extends \CoreLibs\DB\IO
{
if ($this->logout || $this->login_error) {
// unregister and destroy session vars
- unset($_SESSION['EUID']);
- unset($_SESSION['GROUP_ACL_LEVEL']);
- unset($_SESSION['USER_ACL_LEVEL']);
- unset($_SESSION['PAGES']);
- unset($_SESSION['USER_NAME']);
- unset($_SESSION['UNIT']);
- unset($_SESSION['DEBUG_ALL']);
- unset($_SESSION['DB_DEBUG']);
- unset($GLOBALS['DEBUG_ALL']);
- unset($GLOBALS['DB_DEBUG']);
- unset($_SESSION['LANG']);
- unset($_SESSION['DEFAULT_CHARSET']);
- unset($_SESSION['DEFAULT_LANG']);
- unset($_SESSION['GROUP_NAME']);
- unset($_SESSION['HEADER_COLOR']);
+ foreach (
+ // TODO move this into some global array for easier update
+ [
+ 'ADMIN',
+ 'BASE_ACL_LEVEL',
+ 'DB_DEBUG',
+ 'DEBUG_ALL',
+ 'DEFAULT_ACL_LIST',
+ 'DEFAULT_CHARSET',
+ 'DEFAULT_LANG',
+ 'EAID',
+ 'EUID',
+ 'GROUP_ACL_LEVEL',
+ 'GROUP_ACL_TYPE',
+ 'GROUP_NAME',
+ 'HEADER_COLOR',
+ 'LANG',
+ 'PAGES_ACL_LEVEL',
+ 'PAGES',
+ 'TEMPLATE',
+ 'UNIT_ACL_LEVEL',
+ 'UNIT_DEFAULT',
+ 'UNIT',
+ 'USER_ACL_LEVEL',
+ 'USER_ACL_TYPE',
+ 'USER_NAME',
+ ] as $session_var
+ ) {
+ unset($_SESSION[$session_var]);
+ }
+ // final unset all
+ session_unset();
+ // final destroy session
session_destroy();
// then prints the login screen again
$this->permission_okay = false;
@@ -1384,7 +1398,7 @@ EOM;
$q .= "NULL, ";
}
}
- $q .= "'" . session_id() . "', ";
+ $q .= "'" . Session::getSessionId() . "', ";
$q .= "'" . $this->dbEscapeString($this->action) . "', ";
$q .= "'" . $this->dbEscapeString($this->username) . "', ";
$q .= "NULL, ";
diff --git a/www/lib/CoreLibs/Admin/Backend.php b/www/lib/CoreLibs/Admin/Backend.php
index ad0649c8..0a176f4a 100644
--- a/www/lib/CoreLibs/Admin/Backend.php
+++ b/www/lib/CoreLibs/Admin/Backend.php
@@ -252,7 +252,10 @@ class Backend extends \CoreLibs\DB\IO
. "'" . $this->dbEscapeString($_SERVER['HTTP_ACCEPT'] ?? '') . "', "
. "'" . $this->dbEscapeString($_SERVER['HTTP_ACCEPT_CHARSET'] ?? '') . "', "
. "'" . $this->dbEscapeString($_SERVER['HTTP_ACCEPT_ENCODING'] ?? '') . "', "
- . "'" . session_id() . "', "
+ . (\CoreLibs\Create\Session::getSessionId() === false ?
+ "NULL" :
+ "'" . \CoreLibs\Create\Session::getSessionId() . "'")
+ . ", "
. "'" . $this->dbEscapeString($this->action) . "', "
. "'" . $this->dbEscapeString($this->action_id) . "', "
. "'" . $this->dbEscapeString($this->action_yes) . "', "
diff --git a/www/lib/CoreLibs/Create/Session.php b/www/lib/CoreLibs/Create/Session.php
index 2318b4a9..5cebe210 100644
--- a/www/lib/CoreLibs/Create/Session.php
+++ b/www/lib/CoreLibs/Create/Session.php
@@ -1,10 +1,15 @@
db_type = $db_config['db_type'] ?? '';
$this->db_ssl = !empty($db_config['db_ssl']) ? $db_config['db_ssl'] : 'allow';
// set debug, either via global var, or from config, else set to false
- $this->dbSetDebug($GLOBALS['DB_DEBUG'] ?? $db_config['db_debug'] ?? false);
+ $this->dbSetDebug(
+ $db_config['db_debug'] ??
+ // should be handled from outside
+ $_SESSION['DB_DEBUG'] ??
+ // globals should be deprecated
+ $GLOBALS['DB_DEBUG'] ??
+ false
+ );
// set the target encoding to the DEFAULT_ENCODING if it is one of them: EUC, Shift_JIS, UTF-8
// @ the moment set only from outside
@@ -2040,10 +2047,13 @@ class IO
}
/**
- * if the input is a single char 't' or 'f' it will return the boolean value instead
- * @param string|bool $string 't' / 'f' or any string, or bool true/false
- * @param boolean $rev do reverse (bool to string)
- * @return bool|string correct php boolean true/false or postgresql 't'/'f'
+ * if the input is a single char 't' or 'f
+ * it will return the boolean value instead
+ * also converts smallint 1/0 to true false
+ * @param string|bool|int $string 't' / 'f' or any string, or bool true/false
+ * @param boolean $rev do reverse (bool to string)
+ * @return bool|string correct php boolean true/false
+ * or postgresql 't'/'f'
*/
public function dbBoolean($string, $rev = false)
{
diff --git a/www/lib/CoreLibs/Debug/Logging.php b/www/lib/CoreLibs/Debug/Logging.php
index e4be8498..786ba37d 100644
--- a/www/lib/CoreLibs/Debug/Logging.php
+++ b/www/lib/CoreLibs/Debug/Logging.php
@@ -177,9 +177,19 @@ class Logging
} elseif (!empty($GLOBALS['LOG_FILE_ID'])) {
// legacy flow, should be removed and only set via options
$this->setLogId($GLOBALS['LOG_FILE_ID']);
+ // TODO trigger deprecation error
+ // trigger_error(
+ // 'Debug\Logging: Do not use globals LOG_FILE_ID to set log id for Logging',
+ // E_USER_DEPRECATED
+ // );
} elseif (defined('LOG_FILE_ID')) {
// legacy flow, should be removed and only set via options
$this->setLogId(LOG_FILE_ID);
+ // trigger deprecation error
+ // trigger_error(
+ // 'Debug\Logging: Do not use constant LOG_FILE_ID to set log id for Logging',
+ // E_USER_DEPRECATED
+ // );
}
// init the log levels
@@ -214,37 +224,45 @@ class Logging
isset($GLOBALS[$up_type]) &&
is_array($GLOBALS[$up_type])
) {
+ // TODO trigger deprecation error
$this->setLogLevel($type, $flag, $GLOBALS[$up_type]);
}
}
}
+ // TODO remove all $GLOBALS call and only use options
// all overrule
$this->setLogLevelAll(
'debug',
$this->options['debug_all'] ??
+ // for user login, should be handled outside like globals
+ $_SESSION['DEBUG_ALL'] ??
$GLOBALS['DEBUG_ALL'] ??
false
);
+ $this->setLogLevelAll(
+ 'print',
+ $this->options['print_all'] ??
+ // for user login, should be handled outside like globals
+ $_SESSION['DEBUG_ALL'] ??
+ $GLOBALS['PRINT_ALL'] ??
+ false
+ );
$this->setLogLevelAll(
'echo',
$this->options['echo_all'] ??
$GLOBALS['ECHO_ALL'] ??
false
);
- $this->setLogLevelAll(
- 'print',
- $this->options['print_all'] ??
- $GLOBALS['PRINT_ALL'] ??
- false
- );
// GLOBAL rules for log writing
+ // add file date is default on
$this->setGetLogPrintFileDate(
$this->options['print_file_date'] ??
$GLOBALS['LOG_PRINT_FILE_DATE'] ??
true
);
+ // all other logging file name flags are off
$this->setLogPer(
'level',
$this->options['per_level'] ??