X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=initialize.php;h=5dcd6fffde274cb27359f164c10df1a6055a9c11;hb=3f7ed883e1c7d75aacc49900b403f8e84a68dc3f;hp=c6226fcec8037b12507f08f6db09e28c98cb22c3;hpb=5ef582473f6b329be18ad83c61e053fdcd9c6ed5;p=timetracker.git diff --git a/initialize.php b/initialize.php index c6226fce..5dcd6fff 100644 --- a/initialize.php +++ b/initialize.php @@ -67,14 +67,13 @@ check_extension('mbstring'); // If auth params are not defined (in config.php) - initialize with an empty array. if (!isset($GLOBALS['AUTH_MODULE_PARAMS']) || !is_array($GLOBALS['AUTH_MODULE_PARAMS'])) $GLOBALS['AUTH_MODULE_PARAMS'] = array(); - + // Smarty initialization. import('smarty.Smarty'); $smarty = new Smarty; $smarty->use_sub_dirs = false; $smarty->template_dir = TEMPLATE_DIR; $smarty->compile_dir = TEMPLATE_DIR.'_c'; -$GLOBALS['SMARTY'] = &$smarty; // Note: these 3 settings below used to be in .htaccess file. Moved them here to eliminate "error 500" problems // with some shared hostings that do not have AllowOverride Options or AllowOverride All in their apache configurations. @@ -84,6 +83,12 @@ session_cache_expire(1); $phpsessid_ttl = defined('PHPSESSID_TTL') ? PHPSESSID_TTL : 60*60*24; // Set lifetime for garbage collection. ini_set('session.gc_maxlifetime', $phpsessid_ttl); +// Set PHP session path, if defined to avoid garbage collection interference from other scripts. +if (defined('PHP_SESSION_PATH')) { + ini_set('session.save_path', PHP_SESSION_PATH); + ini_set('session.gc_probability', 1); +} + // Set session cookie lifetime. session_set_cookie_params($phpsessid_ttl); if (isset($_COOKIE['tt_PHPSESSID'])) { @@ -93,7 +98,7 @@ if (isset($_COOKIE['tt_PHPSESSID'])) { } // Start or resume PHP session. -session_name('tt_PHPSESSID'); // "tt_" prefix is to avoid sharing session with other PHP apps that do not name session. +session_name('tt_PHPSESSID'); // "tt_" prefix is to avoid sharing session with other PHP apps that do not name session. @session_start(); // Authorization. @@ -120,6 +125,12 @@ define('TYPE_ALL', 0); // Time record can be specified with either duration or s define('TYPE_START_FINISH', 1); // Time record has start and finish times. define('TYPE_DURATION', 2); // Time record has only duration, no start and finish times. +// TODO: redesign of user rights and roles is currently ongoing. +// As we run our of bits for sure at some point, rights should be strings instead, +// for example: "data_entry". +// Also, we need rights editor page and team-customized roles. +// Move this stuff from here to ttUser class. +// // User access rights - bits that collectively define an access mask to the system (a role). // We'll have some bits here (1,2, etc...) reserved for future use. define('right_data_entry', 4); // Right to enter work hours and expenses. @@ -152,8 +163,8 @@ import('html.HttpRequest'); $request = new ttHttpRequest(); import('form.ActionErrors'); -$errors = new ActionErrors(); -$messages = new ActionErrors(); +$err = new ActionErrors(); // Error messages for user. +$msg = new ActionErrors(); // Notification messages (not errrors) for user. // Create an instance of ttUser class. This gets us most of user details. import('ttUser'); @@ -173,11 +184,11 @@ $lang = $user->lang; if (!$lang) { if (defined('LANG_DEFAULT')) $lang = LANG_DEFAULT; - + // If we still do not have the language get it from the browser. if (!$lang) { $lang = $i18n->getBrowserLanguage(); - + // Finally - English is the default. if (!$lang) { $lang = 'en'; @@ -187,17 +198,21 @@ if (!$lang) { // Load i18n file. $i18n->load($lang); -$GLOBALS['I18N'] = &$i18n; -$GLOBALS['USER'] = &$user; +// Temporary code to assign role_id to users who don't yet have it. +if ($user->login && !$user->role_id) { + $user->migrateLegacyRole(); // Note: this requires initialized $i18n. + // Recycle User object, now with proper role_id. + $user = new ttUser(null, $auth->getUserId()); +} // Assign things for smarty to use in template files. $smarty->assign('i18n', $i18n->keys); -$smarty->assign('errors', $errors); -$smarty->assign('messages', $messages); +$smarty->assign('err', $err); +$smarty->assign('msg', $msg); + +// TODO: move this code out of here to the files that use it. -// TODO: move this code out of here to the files that use it. - // We use js/strftime.js to print dates in JavaScript (in DateField controls). // One of our date formats (%d.%m.%Y %a) prints a localized short weekday name (%a). // The init_js_date_locale function iniitializes Date.ext.locales array in js/strftime.js for our language