From 87851264cb255ade0d1982c1acdc343ca10696a4 Mon Sep 17 00:00:00 2001 From: hickert Date: Wed, 12 Nov 2008 10:57:50 +0000 Subject: [PATCH] Added ability to send an object id via Post && Get. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@13007 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/html/main.php | 36 ++++++++++++++------ gosa-core/ihtml/themes/default/framework.tpl | 2 +- gosa-core/include/functions.inc | 25 ++++++++++++++ 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/gosa-core/html/main.php b/gosa-core/html/main.php index 5ffd3d92e..9a47467c4 100644 --- a/gosa-core/html/main.php +++ b/gosa-core/html/main.php @@ -32,6 +32,7 @@ header("Content-type: text/html; charset=UTF-8"); /* Set the text domain as 'messages' */ $domain = 'messages'; +$object_id = ""; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); @@ -177,18 +178,22 @@ if (session::is_set('plugin_dir')){ } else { $old_plugin_dir= ""; } -if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])){ - $plug= validate($_GET['plug']); - $plugin_dir= $plist->get_path($plug); - session::set('plugin_dir',$plugin_dir); - if ($plugin_dir == ""){ - new log("security","gosa","",array(),"main.php called with invalid plug parameter \"$plug\"") ; - header ("Location: logout.php"); - exit; + +if (isset($_GET['plug'])){ + $plug=preg_replace("/:.*$/","",validate($_GET['plug'])); + if($plist->plugin_access_allowed($plug)){ + $plugin_dir= $plist->get_path($plug); + session::set('plugin_dir',$plugin_dir); + if ($plugin_dir == ""){ + new log("security","gosa","",array(),"main.php called with invalid plug parameter \"$plug\"") ; + header ("Location: logout.php"); + exit; + } + }else{ + session::set('plugin_dir',"welcome"); + $plugin_dir= "$BASE_DIR/plugins/generic/welcome"; } } else { - - /* set to welcome page as default plugin */ session::set('plugin_dir',"welcome"); $plugin_dir= "$BASE_DIR/plugins/generic/welcome"; } @@ -358,6 +363,11 @@ if ($config->get_cfg_value("handleExpiredAccounts") == "true"){ /* Load plugin */ if (is_file("$plugin_dir/main.inc")){ + $o_id = get_current_object_id(); + if(!empty($o_id)){ + $plug .= ":".base64_encode($o_id); + $_GET['plug'] .= ":".base64_encode($o_id); + } require_once ("$plugin_dir/main.inc"); } else { msg_dialog::display( @@ -405,6 +415,12 @@ $focus= ''; $smarty->assign("focus", $focus); +$o_id = get_current_object_id(); +if(!empty($o_id)){ + $smarty->assign("object_id", base64_encode($o_id)); +}else{ + $smarty->assign("object_id", ""); +} $display= $header.$smarty->fetch(get_template_path('framework.tpl')); diff --git a/gosa-core/ihtml/themes/default/framework.tpl b/gosa-core/ihtml/themes/default/framework.tpl index 4d9f8f9b1..205a6abcc 100644 --- a/gosa-core/ihtml/themes/default/framework.tpl +++ b/gosa-core/ihtml/themes/default/framework.tpl @@ -52,4 +52,4 @@ -{$errors}{$focus} +{$errors}{$focus} diff --git a/gosa-core/include/functions.inc b/gosa-core/include/functions.inc index ba46e840d..0ab3e73c8 100644 --- a/gosa-core/include/functions.inc +++ b/gosa-core/include/functions.inc @@ -2817,5 +2817,30 @@ function cred_decrypt($input,$password) { } +function get_current_object_id() +{ + global $object_id; + if(empty($object_id)){ + if(isset($_POST['object_id']) && !empty($_POST['object_id'])){ + $object_id = base64_decode(validate($_POST['object_id'])); + }elseif(isset($_GET['plug'])){ + $object_id = base64_decode(preg_replace("/^.*:/","",validate($_GET['plug']))); + } + } + return($object_id); +} + + +function set_current_object($id,&$object) +{ + global $object_id; + if(!session::is_set('OBJECTS')){ + session::set('OBJECTS', array()); + } + $objs = &session::get('OBJECTS'); + $objs[$id] = $object; + $object_id = $id; +} + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> -- 2.30.2