X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fhtml%2Fmain.php;h=7b17a5d3e8003bff320431e908a8b4a06fa53752;hb=90747e5966f031a8ab2ac19256c26cc037c838c2;hp=83f0a7e3d90255bbdcc12dac55a6bb4e51588473;hpb=95ac595f2472f40f2ca424bc5d86c27fa384a4f4;p=gosa.git diff --git a/gosa-core/html/main.php b/gosa-core/html/main.php index 83f0a7e3d..7b17a5d3e 100644 --- a/gosa-core/html/main.php +++ b/gosa-core/html/main.php @@ -23,6 +23,9 @@ /* Save start time */ $start = microtime(); +// Will be used in the "stats" plugin later, to be able calculate the elapsed render time. +$overallRenderTimer = microtime(TRUE); + /* Basic setup, remove eventually registered sessions */ require_once ("../include/php_setup.inc"); require_once ("functions.inc"); @@ -35,12 +38,33 @@ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); + /* Remember everything we did after the last click */ session::start(); session::set('errorsAlreadyPosted',array()); session::global_set('runtime_cache',array()); session::set('limit_exceeded',FALSE); +// Count number of page reloads +if(!session::is_set('clicks')){ + session::set('clicks', 0); +} +$clicks = session::get('clicks'); +$clicks ++ ; +session::set('clicks', $clicks); + + +/* On some systems we can not operate on uploaded tmp files. We need to + * explicitely copy them first + */ +foreach($_FILES as $postName => $entry){ + $tempfile = tempnam(sys_get_temp_dir(), 'GOsa'); + if(move_uploaded_file($_FILES[$postName]['tmp_name'], $tempfile)){ + $_FILES[$postName]['tmp_name'] = $tempfile; + } +} + + pathNavigator::clear(); if ($_SERVER["REQUEST_METHOD"] == "POST"){ @@ -65,7 +89,13 @@ if ($_SERVER['REMOTE_ADDR'] != $ui->ip){ $config= session::global_get('config'); $config->check_and_reload(); $config->configRegistry->reload(); -$config->configRegistry->validateSchemata($force=FALSE,$disableIncompatiblePlugins=TRUE,$errorMessages= TRUE); + +// Validate LDAP schema if not done already +if( $config->boolValueIsTrue('core','schemaCheck') && + !$config->configRegistry->schemaCheckFinished() && + !$config->configRegistry->validateSchemata($force=FALSE,$disableIncompatiblePlugins=TRUE)){ + $config->configRegistry->displayRequirementErrors(); +} /* Enable compressed output */ if ($config->get_cfg_value("core","sendCompressedOutput") == "true"){ @@ -184,6 +214,40 @@ if (session::global_is_set('plugin_dir')){ } else { $old_plugin_dir= ""; } + +// Generate menus +$plist->gen_headlines(); +$plist->gen_menu(); +$plist->genPathMenu(); + +/* check if we are using account expiration */ +$smarty->assign("hideMenus", FALSE); +if ($config->boolValueIsTrue("core","handleExpiredAccounts")){ + $expired= ldap_expired_account($config, $ui->dn, $ui->username); + + if ($expired == POSIX_WARN_ABOUT_EXPIRATION && !session::is_set('POSIX_WARN_ABOUT_EXPIRATION__DONE')){ + + // The users password is about to xpire soon, display a warning message. + new log("security","gosa","",array(),"password for user \"$ui->username\" is about to expire") ; + msg_dialog::display(_("Password change"), _("Your password is about to expire, please change your password!"), INFO_DIALOG); + session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE); + + } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE){ + + // The password is expired, we are now going to enforce a new one from the user. + + // Hide the GOsa menus to avoid leaving the enforced password change dialog. + $smarty->assign("hideMenus", TRUE); + $plug = (isset($_GET['plug'])) ? $_GET['plug'] : null; + + // Detect password plugin id: + $passId = array_search('password', $plist->pluginList); + if($passId !== FALSE){ + $_GET['plug'] = $passId; + } + } +} + if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])){ $plug= validate($_GET['plug']); $plugin_dir= $plist->get_path($plug); @@ -289,11 +353,14 @@ if (session::global_get('js')==FALSE){ $smarty->assign("help_method"," onclick=\"return popup('helpviewer.php$plug','GOsa help');\""); } + +$loggedin = sprintf(_("You're logged in as %s"), + "".$ui->cn." [".$ui->username."] / ".$config->current['NAME']."  "); if($ui->ignore_acl_for_current_user()){ - $smarty->assign ("loggedin", ""._("ACLs are disabled")." ".sprintf(_("You're logged in as %s"), "".$ui->cn." [".$ui->username."]")); -}else{ - $smarty->assign ("loggedin", sprintf(_("You're logged in as %s"), "".$ui->cn." [".$ui->username."]")); + $loggedin = ""._("ACLs are disabled")." ".$loggedin; } + +$smarty->assign ("loggedin", $loggedin); $smarty->assign ("go_logo", get_template_path('images/go_logo.png')); $smarty->assign ("go_base", get_template_path('images/dtree.png')); $smarty->assign ("go_home", get_template_path('images/gohome.png')); @@ -334,23 +401,13 @@ if ($_SERVER["REQUEST_METHOD"] == "POST"){ } } -/* check if we are using account expiration */ -if ($config->get_cfg_value("core","handleExpiredAccounts") == "true"){ - $expired= ldap_expired_account($config, $ui->dn, $ui->username); - - if ($expired == 2){ - new log("security","gosa","",array(),"password for user \"$ui->username\" is about to expire") ; - msg_dialog::display(_("Password change"), _("Your password is about to expire, please change your password!"), INFO_DIALOG); - } -} - /* Load plugin */ if (is_file("$plugin_dir/main.inc")){ $display =""; require ("$plugin_dir/main.inc"); } else { msg_dialog::display( - _("Plugin"), + _("Plug-in"), sprintf(_("FATAL: Cannot find any plugin definitions for plugin %s!"), bold($plug)), FATAL_ERROR_DIALOG); exit();