X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fpersonal%2Fenvironment%2Fclass_environment.inc;h=2f55230ef965415fd09cb6a0170ed40ae0180145;hb=11e7b07539dedd6a46919247dcf18e6ebd28aa7a;hp=0ef15be9aa12359830515909d54fc7cce0a39841;hpb=0d6c52550d085bd5c8c5789088f8a49a4bf98d91;p=gosa.git diff --git a/plugins/personal/environment/class_environment.inc b/plugins/personal/environment/class_environment.inc index 0ef15be9a..2f55230ef 100644 --- a/plugins/personal/environment/class_environment.inc +++ b/plugins/personal/environment/class_environment.inc @@ -74,9 +74,9 @@ class environment extends plugin var $cn; var $OrigCn; - function environment ($config, $dn= NULL) + function environment ($config, $dn= NULL, $parent= NULL) { - plugin::plugin ($config, $dn); + plugin::plugin ($config, $dn, $parent); /* Check : Are we currently editing a group or user dialog */ if((isset($this->attrs['cn'][0]))&&(!isset($this->attrs['uid'][0]))){ @@ -183,11 +183,6 @@ class environment extends plugin $this->useProfile = false; } - /* Set to group environment if we editing a group */ - if(!isset($this->parent)){ - $this->is_group = true; - } - /* Set resolutions */ $this->gotoXResolutions = array("auto"=>_("auto"), "640x480" => "640x480", @@ -222,6 +217,20 @@ class environment extends plugin } + + /* Detect type of edited object (user|group)*/ + function detect_grouptype() + { + if((!isset($this->parent))&&(!$this->is_account)){ + $this->is_group = false; + }elseif((isset($this->parent))&&(!isset($this->parent->by_object['posixAccount']))){ + $this->is_group = true; + }else{ + $this->is_group = false; + } + } + + function execute() { /* Call parent execute */ @@ -256,6 +265,8 @@ class environment extends plugin All these tab management is done here */ + $this->detect_grouptype(); + /* Working from Usermenu an the Account is currently disbled * this->parent : is only set if we are working in a list of tabs * is_account : is only true if the needed objectClass is given @@ -277,7 +288,6 @@ class environment extends plugin */ }elseif((isset($this->parent))&&(!isset($this->parent->by_object['posixAccount']))){ $smarty->assign("is_account","true"); - $this->is_group = true; $this->uid = $this->cn; $this->attrs['uid'] = $this->cn; @@ -314,7 +324,6 @@ class environment extends plugin */ $smarty->assign("is_account","true"); - $this->is_group = false; /* Do we need to flip is_account state? */ if (isset($_POST['modify_state'])){ @@ -536,6 +545,8 @@ class environment extends plugin /* We assign a share to this user, if we don't know where to mount the share */ if((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){ print_red(_("You must specify a valid mount point.")); + }elseif(preg_match('/ /', $_POST['gotoShareMountPoint'])){ + print_red(_("Spaces are not allowed in the mount path!")); }elseif(!( preg_match("/^\//",$_POST['gotoShareMountPoint']) || preg_match("/^~/",$_POST['gotoShareMountPoint']) || @@ -597,9 +608,17 @@ class environment extends plugin $divlistShares->SetHeight(100); $tmp = $this->printOutAssignedShares(); + foreach($tmp as $key => $value){ $img = ""; + $hide = false; + $background = ""; + if(chkacl($this->acl,"gotoShare") != ""){ + $background = "background: #D0D0D0; "; + $hide = true; + } + /* Check if entry starts with an ! */ if(preg_match("/^!/",$this->gotoShares[$key]['server'])){ @@ -607,12 +626,12 @@ class environment extends plugin if($this->is_group) continue; /* Create pwd reset images */ - if($this->gotoShares[$key]['PwdHash'] != ""){ + if($this->gotoShares[$key]['PwdHash'] != "" && !$hide){ $img.= ""; } - $field1 = array("string" => "".$value."" ); - $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + $field1 = array("string" => "".$value."" , "attach" => "style='".$background."'"); + $field2 = array("string" => $img , "attach" => "style='".$background."border-right:0px;'"); }else{ /* Create pwd reset img && delete image */ @@ -621,10 +640,12 @@ class environment extends plugin title='"._("Reset password hash")."'>"; $img.= " "; } + if(!$hide){ $img.= ""; - $field1 = array("string" => $value); - $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + } + $field1 = array("string" => $value , "attach" => "style='".$background."'"); + $field2 = array("string" => $img , "attach" => "style='".$background."border-right:0px;'"); } $divlistShares->AddEntry(array($field1,$field2)); } @@ -750,13 +771,15 @@ class environment extends plugin } } - if((isset($_POST['gotoPrinterDefault']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ - if ($this->gosaDefaultPrinter == $_POST['gotoPrinterSel'][0]){ - $this->gosaDefaultPrinter= ""; - } else { - $this->gosaDefaultPrinter= $_POST['gotoPrinterSel'][0]; + if(!$this->is_group){ + if((isset($_POST['gotoPrinterDefault']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ + if ($this->gosaDefaultPrinter == $_POST['gotoPrinterSel'][0]){ + $this->gosaDefaultPrinter= ""; + } else { + $this->gosaDefaultPrinter= $_POST['gotoPrinterSel'][0]; + } } - } + } $smarty->assign("gotoPrinter",$this->printOutPrinterDevices()); $smarty->assign("gotoPrinterKeys",array_flip($this->printOutPrinterDevices())); @@ -790,6 +813,8 @@ class environment extends plugin $smarty->assign("gotoProfileQuotaACL"," disabled "); } + $smarty->assign("is_group",$this->is_group); + /* Als smarty vars are set. Get smarty template and generate output */ $display.= $smarty->fetch(get_template_path('environment.tpl', TRUE,dirname(__FILE__))); return($display); @@ -825,7 +850,7 @@ class environment extends plugin show_ldap_error($ldap->get_error(), _("Removing environment information failed")); /* Optionally execute a command after we're done */ - $this->handle_post_events("remove"); + $this->handle_post_events("remove",array("uid" => $this->uid)); } @@ -872,6 +897,7 @@ class environment extends plugin function check() { /* Call common method to give check the hook */ + $this->detect_grouptype(); $message= plugin::check(); if(preg_match("/[^0-9]/",$this->gotoProfileQuota)) { @@ -940,60 +966,65 @@ class environment extends plugin /* Save usersettings to Printer */ + $skip_printer_changes = false; if(chkacl($this->acl,"gotoPrinter")!=""){ - $this->gotoPrinter = array(); + $this->gotoPrinter = array(); + $skip_printer_changes = true; } - /* 1. Search all printers that have our uid/cn as member - * 2. Delete this uid/cn from every single entry and save it again. - * 2.1 There are different types of members: Users / Groups, this will be defined in $suffix - * 2.2 And each type has two modes, Admin (e.g. 'gotoUserAdminPrinter') and Normal - */ - $types = array( "gotoUserPrinter" => "AddUser", - "gotoGroupPrinter" => "AddGroup", - "gotoUserAdminPrinter" => "AddAdminUser", - "gotoGroupAdminPrinter" => "AddAdminGroup"); - - if($this->is_group){ - $s_suffix = "Group"; - $useVar = "cn"; - }else{ - $useVar = "uid"; - $s_suffix = "User"; - } + if(!$skip_printer_changes){ + /* 1. Search all printers that have our uid/cn as member + * 2. Delete this uid/cn from every single entry and save it again. + * 2.1 There are different types of members: Users / Groups, this will be defined in $suffix + * 2.2 And each type has two modes, Admin (e.g. 'gotoUserAdminPrinter') and Normal + */ + $types = array( "gotoUserPrinter" => "AddUser", + "gotoGroupPrinter" => "AddGroup", + "gotoUserAdminPrinter" => "AddAdminUser", + "gotoGroupAdminPrinter" => "AddAdminGroup"); - /* Remove old entries */ - $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."Printer=".$this->uid."))",array("*")); - while($attr = $ldap->fetch()){ - $printerObj = NULL; - $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn']); - $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."Printer"],$this->uid); - $printerObj->by_object['printgeneric']->save(); - } + /* Detect type of edited object, sometimes this wasn't set correctly ... */ + $this->detect_grouptype(); - $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."AdminPrinter=".$this->uid."))",array("*")); - while($attr = $ldap->fetch()){ - $printerObj = NULL; - $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn']); - $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."AdminPrinter"],$this->uid); - $printerObj->by_object['printgeneric']->save(); - } + if($this->is_group){ + $s_suffix = "Group"; + $useVar = "cn"; + }else{ + $useVar = "uid"; + $s_suffix = "User"; + } - foreach($this->gotoPrinter as $printer){ - $printerObj = NULL; - $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$printer['dn']); + /* Remove old entries */ + $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."Printer=".$this->uid."))",array("*")); + while($attr = $ldap->fetch()){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn']); + $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."Printer"],$this->uid); + $printerObj->by_object['printgeneric']->save(); + } - if($printer['mode'] == "admin") { - $attribute = "goto".$s_suffix."AdminPrinter"; - }else{ - $attribute = "goto".$s_suffix."Printer"; + $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."AdminPrinter=".$this->uid."))",array("*")); + while($attr = $ldap->fetch()){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn']); + $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."AdminPrinter"],$this->uid); + $printerObj->by_object['printgeneric']->save(); } - $printerObj->by_object['printgeneric']->AddMember($types[$attribute],$this->dn); - $printerObj->by_object['printgeneric']->save(); - } + foreach($this->gotoPrinter as $printer){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$printer['dn']); + if($printer['mode'] == "admin") { + $attribute = "goto".$s_suffix."AdminPrinter"; + }else{ + $attribute = "goto".$s_suffix."Printer"; + } + $printerObj->by_object['printgeneric']->AddMember($types[$attribute],$this->dn); + $printerObj->by_object['printgeneric']->save(); + } + } /* Prepare HotPlug devices */ $this->attrs['gotoHotplugDevice'] = array(); @@ -1065,7 +1096,7 @@ class environment extends plugin $this->cleanup(); $ldap->$mode($this->attrs); show_ldap_error($ldap->get_error(), _("Adding environment information failed")); - $this->handle_post_events($mode); + $this->handle_post_events($mode,array("uid"=>$this->uid)); } /* Generate ListBox frindly output for the defined shares