Code

Added ability to send an object id via Post && Get.
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 12 Nov 2008 10:57:50 +0000 (10:57 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Wed, 12 Nov 2008 10:57:50 +0000 (10:57 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@13007 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/html/main.php
gosa-core/ihtml/themes/default/framework.tpl
gosa-core/include/functions.inc

index 5ffd3d92e0c71ac3d47b793c2a3d7fd465f64712..9a47467c43fe7d2fa71a62f3bbe3c8d4b75138ad 100644 (file)
@@ -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= '<script language="JavaScript" type="text/javascript">';
 $focus.= 'next_msg_dialog();';
 $focus.= '</script>';
 $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'));
 
index 4d9f8f9b1e87208f37c18944268836135d2e8883..205a6abccf15ee03c2e2e5fce3ff25b21bae5eed 100644 (file)
@@ -52,4 +52,4 @@
      </table>
     </td>
   </tr>
-</table>{$errors}{$focus}<input type="hidden" name="php_c_check" value="1"></form></body></html>
+</table>{$errors}{$focus}<input type='hidden' name='object_id' value='{$object_id}'><input type="hidden" name="php_c_check" value="1"></form></body></html>
index ba46e840db640eba6469a22e0dd6418e9ac46c74..0ab3e73c862605342ab18e6969d3868ca21845f5 100644 (file)
@@ -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:
 ?>