X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fpersonal%2Fenvironment%2Fclass_environment.inc;h=6bc6cbd6ee3112b507d3870896d9ebf63c1fdee8;hb=888379c40b3c70d44df945cf181a2d9fedbc5d9f;hp=3e436a886dbfc3f4dc1a0b2329ec7d4bc6d9dd63;hpb=a3cd9078dfbefad330825e923faf06cd60ddb1ad;p=gosa.git diff --git a/plugins/personal/environment/class_environment.inc b/plugins/personal/environment/class_environment.inc index 3e436a886..6bc6cbd6e 100644 --- a/plugins/personal/environment/class_environment.inc +++ b/plugins/personal/environment/class_environment.inc @@ -40,6 +40,7 @@ class environment extends plugin /* Printer */ var $gotoPrinter = array();// All available Printer, with their configurations var $gotoPrinterSel = ""; // The selected Printer + var $gosaDefaultPrinter = ""; // Default printer /* Share */ var $gotoShares = array();// Current Share Options @@ -62,13 +63,13 @@ class environment extends plugin var $CopyPasteVars = array("gotoHotplugDevices","newKioskProfiles","gotoAvailableShares","gotoShareSelections","gotoPrinterSel","gotoProfileFlag_L","gotoXResolutions","gotoProfileFlag_C","gotoProfileServers","useProfile","is_group","in_dialog","OrigCn"); - var $attributes = array("uid","gotoProfileServer","gotoProfileFlags", + var $attributes = array("uid","gotoProfileServer","gotoProfileFlags","gotoHotplugDevice", "gotoXResolution","gotoProfileQuota", "gotoLogonScripts","gotoLogonScript", - "gotoPrinter", + "gotoPrinter", "gosaDefaultPrinter", "gotoShares","gotoShare", - "gotoKioskProfile","gotoKioskProfiles", - "gotoHotplugDevice"); + "gotoKioskProfile","gotoKioskProfiles" + ); var $objectclasses = array("gotoEnvironment"); // Specifies the objectClass which contains the attributes edited here var $cn; var $OrigCn; @@ -148,11 +149,18 @@ class environment extends plugin $tmp = split("\|",$share); $tmp2['server'] =$tmp[0]; $tmp2['name'] =$tmp[1]; - $tmp2['mountPoint'] =$tmp[2]; + + /* Decode base64 if needed */ + if (!preg_match('%/%', $tmp[2])){ + $tmp2['mountPoint'] =base64_decode($tmp[2]); + } else { + $tmp2['mountPoint'] =$tmp[2]; + } + if(isset($tmp[3])){ - $tmp2['OtherStuff'] =$tmp[3]; + $tmp2['PwdHash'] =$tmp[3]; }else{ - $tmp2['OtherStuff'] =""; + $tmp2['PwdHash'] =""; } if(isset($tmp[4])){ $tmp2['Username'] =$tmp[4]; @@ -175,17 +183,54 @@ 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", + "800x600" => "800x600", + "1024x768" => "1024x768", + "1152x864" => "1152x864", + "1280x768" => "1280x768", + "1280x1024" => "1280x1024"); + + if(isset($this->config->data['MAIN']['RESOLUTION_HOOK'])){ + $file = $this->config->data['MAIN']['RESOLUTION_HOOK']; + + if(is_readable($file)){ + $str = file_get_contents($file); + $lines = split("\n",$str); + foreach($lines as $line){ + $line = trim($line); + if(!empty($line)){ + $this->gotoXResolutions[$line]=$line; + } + } + //natcasesort($this->gotoXResolutions); + }else{ + print_red(sprintf(_("You have specified an external resolution hook which can't be read, please check the permission of the file '%s'."),$file)); + } } + $this->gotoProfileServers= $config->getShareServerList() ; $this->gotoShareSelections= $config->getShareList(true); $this->gotoAvailableShares= $config->getShareList(false); } + + /* 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 */ @@ -220,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 @@ -241,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; @@ -278,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'])){ @@ -380,13 +425,6 @@ class environment extends plugin $smarty->assign("gotoProfileFlag_CCHK"," checked "); } - $this->gotoXResolutions = array("auto"=>_("auto"), - "640x480" => "640x480", - "800x600" => "800x600", - "1024x768" => "1024x768", - "1154x864" => "1154x864", - "1280x768" => "1280x768", - "1280x1024" => "1280x1024"); $smarty->assign("gotoXResolutions" , $this->gotoXResolutions); $smarty->assign("gotoXResolutionKeys" , array_flip($this->gotoXResolutions)); @@ -410,17 +448,6 @@ class environment extends plugin $this->dialog=NULL; $this->is_dialog = false; } - $tmp = new kioskManagementDialog($this->config,$this->dn); - $list = $tmp->getKioskProfiles($this->newKioskProfiles); - - $list['none']=_("None"); - - $list = array_reverse($list); - - if(!isset($list[$this->gotoKioskProfile])){ - print_red(sprintf(_("The selected kiosk profile '%s' is no longer available, setting current profile to 'none'."),$this->gotoKioskProfile)); - $this->gotoKioskProfile = 'none'; - } /* Reassign help class */ $_SESSION['current_class_for_help'] = get_class($this); @@ -432,7 +459,10 @@ class environment extends plugin $this->dialog->acl = $this->acl; $this->is_dialog = true; } - + $tmp = new kioskManagementDialog($this->config,$this->dn); + $list = $tmp->getKioskProfiles($this->newKioskProfiles); + $list['none']=_("None"); + $list = array_reverse($list); $smarty->assign("gotoKioskProfiles",$list); $smarty->assign("gotoKioskProfileKeys",array_flip($list)); @@ -515,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']) || @@ -533,7 +565,7 @@ class environment extends plugin /* Preparing the new assignment */ $this->gotoShares[$a_share['name']."|".$a_share['server']]=$a_share; $this->gotoShares[$a_share['name']."|".$a_share['server']]['Username']=$s_user; - $this->gotoShares[$a_share['name']."|".$a_share['server']]['OtherStuff']=""; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['PwdHash']=""; $this->gotoShares[$a_share['name']."|".$a_share['server']]['mountPoint']=$s_mount; } } @@ -541,12 +573,73 @@ class environment extends plugin /* if the Post gotoShareDel is set, someone asked GOsa to delete the selected entry (if there is one selected) * If there is no defined share selected, we will abort the deletion without any message */ - if((isset($_POST['gotoShareDel']))&&(isset($_POST['gotoShare']))){ - unset($this->gotoShares[$_POST['gotoShare']]); + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^gotoShareDel_/",$name)) && ($once)){ + $once = false; + $key = preg_replace("/^gotoShareDel_/","",$name); + $key = preg_replace("/_+[xy]$/","",$key); + $key = base64_decode($key); + if(isset($this->gotoShares[$key])) { + unset($this->gotoShares[$key]); + } + + /* Remove corresponding password entry, too. This is a workaround + to get rid of old-style entries. */ + $key= base64_decode($key); + if(isset($this->gotoShares[$key])) { + unset($this->gotoShares[$key]); + } + + } + if((preg_match("/^gotoShareResetPwd_/",$name)) && ($once)){ + $once = false; + $key = preg_replace("/^gotoShareResetPwd_/","",$name); + $key = preg_replace("/_+[xy]$/","",$key); + $key = base64_decode($key); + $this->gotoShares[$key]['PwdHash'] = ""; + if(preg_match("/^!/",$this->gotoShares[$key]['server'])){ + unset($this->gotoShares[$key]); + } + } } - $smarty->assign("gotoShares",$this->printOutAssignedShares()); - $smarty->assign("gotoShareKeys",array_flip($this->printOutAssignedShares())); + $divlistShares = new divSelectBox("gotoShares"); + $divlistShares->SetHeight(100); + $tmp = $this->printOutAssignedShares(); + + foreach($tmp as $key => $value){ + $img = ""; + + /* Check if entry starts with an ! */ + if(preg_match("/^!/",$this->gotoShares[$key]['server'])){ + + /* If we are currently editing groups environment, skip those ! entries */ + if($this->is_group) continue; + + /* Create pwd reset images */ + if($this->gotoShares[$key]['PwdHash'] != ""){ + $img.= ""; + } + $field1 = array("string" => "".$value."" ); + $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + }else{ + + /* Create pwd reset img && delete image */ + if($this->gotoShares[$key]['PwdHash'] != ""){ + $img.= ""; + $img.= " "; + } + $img.= ""; + $field1 = array("string" => $value); + $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + } + $divlistShares->AddEntry(array($field1,$field2)); + } + $smarty->assign("divlistShares",$divlistShares->DrawList()); /* Hotplug devices will be handled here * There are 3 possible methods for this feature @@ -563,7 +656,9 @@ class environment extends plugin /* We have to delete the selected hotplug from the list*/ if((isset($_POST['gotoHotplugDeviceDel']))&&(isset($_POST['gotoHotplugDevice']))){ - unset($this->gotoHotplugDevices[$_POST['gotoHotplugDevice']]); + foreach($_POST['gotoHotplugDevice'] as $name){ + unset($this->gotoHotplugDevices[$name]); + } } /* There are already defined hotplugs from other users we could use */ @@ -589,8 +684,11 @@ class environment extends plugin }else{ $this->dialog->save_object(); $a_tmp = $this->dialog->save(); + if(is_array($a_tmp)){ - $this->gotoHotplugDevices[$a_tmp['name']]= $a_tmp; + foreach($a_tmp as $name => $hotplug){ + $this->gotoHotplugDevices[$name]= $hotplug; + } } unset($this->dialog); $this->dialog= NULL; @@ -611,7 +709,7 @@ class environment extends plugin /* First handle Add Post. Open a dialog that allows us to select a printer or two */ if(isset($_POST['gotoPrinterAdd'])){ $this->is_dialog=true; - $this->dialog = new selectPrinterDialog($this->config,$this->dn); + $this->dialog = new selectPrinterDialog($this->config,$this->dn,$this->gotoPrinter); } if(isset($_POST['PrinterCancel'])){ @@ -630,8 +728,12 @@ class environment extends plugin $this->dialog->save_object(); $tmp = $this->dialog->save(); $tmp2= $this->dialog->getPrinter(true); - $this->gotoPrinter[$tmp]=$tmp2[$tmp]; - $this->gotoPrinter[$tmp]['mode']="user"; + + foreach($tmp as $pname){ + $this->gotoPrinter[$pname]=$tmp2[$pname]; + $this->gotoPrinter[$pname]['mode']="user"; + } + $this->is_dialog=false; unset($this->dialog); $this->dialog =NULL; @@ -640,15 +742,30 @@ class environment extends plugin if((isset($_POST['gotoPrinterDel']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ $printer = $_POST['gotoPrinterSel']; - unset($this->gotoPrinter[$printer]); + foreach($printer as $pname){ + unset($this->gotoPrinter[$pname]); + } } if((isset($_POST['gotoPrinterEdit']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ - $printer = $_POST['gotoPrinterSel']; - if($this->gotoPrinter[$printer]['mode']=="user"){ - $this->gotoPrinter[$printer]['mode']="admin"; - }else{ - $this->gotoPrinter[$printer]['mode']="user"; + + + $printers = $_POST['gotoPrinterSel']; + + foreach($printers as $printer){ + if($this->gotoPrinter[$printer]['mode']=="user"){ + $this->gotoPrinter[$printer]['mode']="admin"; + }else{ + $this->gotoPrinter[$printer]['mode']="user"; + } + } + } + + if((isset($_POST['gotoPrinterDefault']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ + if ($this->gosaDefaultPrinter == $_POST['gotoPrinterSel'][0]){ + $this->gosaDefaultPrinter= ""; + } else { + $this->gosaDefaultPrinter= $_POST['gotoPrinterSel'][0]; } } @@ -658,7 +775,17 @@ class environment extends plugin /* General behavior */ if((isset($this->dialog))&&($this->dialog!=NULL)&&(!empty($this->dialog))){ $this->dialog->save_object(); - return ($this->dialog->execute()); + $disp =$this->dialog->execute(); + + $tmp = new kioskManagementDialog($this->config,$this->dn); + $list = $tmp->getKioskProfiles($this->newKioskProfiles); + $list['none']=_("None"); + $list = array_reverse($list); + if(!isset($list[$this->gotoKioskProfile])){ + print_red(sprintf(_("The selected kiosk profile '%s' is no longer available, setting current profile to 'none'."),$this->gotoKioskProfile)); + $this->gotoKioskProfile = 'none'; + } + return($disp); } if($this->acl != "#none#"){ $smarty->assign("useProfileACL",""); @@ -676,7 +803,6 @@ class environment extends plugin /* Als smarty vars are set. Get smarty template and generate output */ $display.= $smarty->fetch(get_template_path('environment.tpl', TRUE,dirname(__FILE__))); - return($display); } @@ -705,13 +831,12 @@ class environment extends plugin $ldap->cd($this->dn); $this->cleanup(); - $ldap->modify ($this->attrs); - + $ldap->modify ($this->attrs); - show_ldap_error($ldap->get_error()); + 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)); } @@ -721,8 +846,6 @@ class environment extends plugin /* Get all Posted vars * Setup checkboxes */ - - if(isset($_POST['iamposted'])){ if(isset($_POST['useProfile'])){ @@ -741,6 +864,7 @@ class environment extends plugin $this->gotoProfileFlag_L = false; } + $tmp= $this->gosaDefaultPrinter; plugin::save_object(); foreach($this->attributes as $s_attr){ if(in_array($s_attr,array("gotoShares","gotoHotplugDevices","gotoPrinter","gotoLogonScripts","uid"))) continue; @@ -750,6 +874,7 @@ class environment extends plugin $this->$s_attr = false; } } + $this->gosaDefaultPrinter= $tmp; } } @@ -758,6 +883,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)) { @@ -826,155 +952,66 @@ 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; } - if($this->is_group){ - $s_suffix = "Group"; - }else{ - $s_suffix = "User"; - } - - - /* 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 - */ - $ldap->search("(&(objectClass=gotoPrinter)(|(goto".$s_suffix."Printer=".$this->uid.")(goto".$s_suffix."AdminPrinter=".$this->uid.")))",array("*")); - while($attr = $ldap->fetch()){ - - /* Walk trough all printers and check if our user id used, if so remove it. - * Later we will insert our uid at the right place. - */ - - /* Remove normal entries (User)*/ - if(isset($attr['goto'.$s_suffix.'Printer'])) { - foreach($attr['goto'.$s_suffix.'Printer'] as $key => $user){ - if($this->uid==$user){ - unset($attr['goto'.$s_suffix.'Printer'][$key]); - } - } - } - - /* Remove administrational entries (Admin)*/ - if(isset($attr['goto'.$s_suffix.'AdminPrinter'])){ - foreach($attr['goto'.$s_suffix.'AdminPrinter'] as $key => $user){ - if($this->uid==$user){ - unset($attr['goto'.$s_suffix.'AdminPrinter'][$key]); - } - } - } - - /* Extract useable tags, to be able to save all changes + 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 */ - $attrs_used = array(); - foreach($attr as $key=>$val){ + $types = array( "gotoUserPrinter" => "AddUser", + "gotoGroupPrinter" => "AddGroup", + "gotoUserAdminPrinter" => "AddAdminUser", + "gotoGroupAdminPrinter" => "AddAdminGroup"); - /* If index is numeric, skip it ...*/ - if((!is_numeric($key))&&($key!="count")){ + /* Detect type of edited object, sometimes this wasn't set correctly ... */ + $this->detect_grouptype(); - /* If entry contains 'count' remove it */ - if(is_array($val)&&isset($val['count'])){ - unset($val['count']); - } - $attrs_used[$key]=$val; - } + if($this->is_group){ + $s_suffix = "Group"; + $useVar = "cn"; + }else{ + $useVar = "uid"; + $s_suffix = "User"; } - /* the result of cleaning the entry is - * to be able to directly save this again, - * if all changes are made - */ - $attr= $attrs_used; -#fix : Id don't know why such an entry was set ... - if(isset($attr['GOTOADMINPRINTER'])){ - unset($attr['GOTOADMINPRINTER']); + /* 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(); } - /* Save changes */ - $ldap->cd($attr['dn']); - unset($attr['dn']); -$ldap->modify ($attr); - - if($ldap->get_error()!="Success"){ - print_red(_("Error while writing printer")." : ".$ldap->get_error()); + $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(); } - } - /* All printers are cleaned, (our cn/uid removed) - * now we must add our uid / cn - * to the new configured printers. - */ - foreach($this->gotoPrinter as $printer) { - $ldap->cd($printer['dn']); - $ldap->cat($printer['dn']); - $attrs= $ldap->fetch(); - $attrs_used = array(); - foreach($attrs as $key=>$val){ - if((!is_numeric($key))&&($key!="count")){ - if(is_array($val)&&isset($val['count'])){ - unset($val['count']); - } - $attrs_used[$key]=$val; - } - } - /* $attrs contains all values - * we need, to save the entry lateron - */ - $attrs= $attrs_used; - - /* Depending on the type (User/Admin) - * switch these attributes, that makes it easier - */ - if($printer['mode'] == "user"){ - $attribute = "goto".$s_suffix."Printer"; - $attribute2 = "goto".$s_suffix."AdminPrinter"; - }else{ - $attribute = "goto".$s_suffix."AdminPrinter"; - $attribute2 = "goto".$s_suffix."Printer"; - } + foreach($this->gotoPrinter as $printer){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$printer['dn']); - /* If this user is already assigned to $attribute2 - * delete user from $attribute2, to be albe to attach him to $attribute - * A user can't be admin and normal user for one printer - */ - if(!isset($printer[$attribute2])){ - $printer[$attribute2]=array(); - }else{ - if(in_array($this->uid,$printer[$attribute2])){ - $tmp = array_flip($printer[$attribute2]); - unset($tmp[$this->uid]); - $attrs[$attribute2]=array_flip($tmp); - } - /* If Last entry removed, clear attribute*/ - if(empty($attrs[$attribute2])){ - $attrs[$attribute2]=array(); - } - } - - /* Attach user to the $attribute, if he is'nt already attached - */ - if(!isset($attrs[$attribute])){ - $attrs[$attribute]=array($this->uid); - }else{ - unset($attrs[$attribute]['count']); - if(!in_array($this->uid,$attrs[$attribute])){ - $attrs[$attribute][]=$this->uid; + if($printer['mode'] == "admin") { + $attribute = "goto".$s_suffix."AdminPrinter"; + }else{ + $attribute = "goto".$s_suffix."Printer"; } - } - - $ldap->cd($attrs['dn']); - unset($attrs['dn']); -$ldap->modify ($attrs); - if($ldap->get_error()!="Success"){ - print_red(_("Error while writing printer settings")." : ".$ldap->get_error()); + $printerObj->by_object['printgeneric']->AddMember($types[$attribute],$this->dn); + $printerObj->by_object['printgeneric']->save(); } } - + /* Prepare HotPlug devices */ $this->attrs['gotoHotplugDevice'] = array(); foreach($this->gotoHotplugDevices as $name => $device){ @@ -994,12 +1031,16 @@ $ldap->modify ($attrs); /* Prepare Shares */ $this->attrs['gotoShare']=array(); foreach($this->gotoShares as $name => $share){ - $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$share['mountPoint']."|".$share['OtherStuff']."|".$share['Username']; + $mntp= $share['mountPoint']; + if (!preg_match('=^[a-z0-9+\._/%-]+$=i', $mntp)){ + $mntp= base64_encode($mntp); + } + $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$mntp."|".$share['PwdHash']."|".$share['Username']; } if($this->gotoXResolution == "auto") $this->gotoXResolution =""; - $saveThis = array("gotoProfileQuota","gotoXResolution","gotoProfileServer","gotoKioskProfile"); + $saveThis = array("gotoProfileQuota","gotoXResolution","gotoProfileServer","gotoKioskProfile","gosaDefaultPrinter"); foreach($saveThis as $tosave){ if(!empty($this->$tosave)){ @@ -1028,7 +1069,7 @@ $ldap->modify ($attrs); } } - $ldap->cat ($this->dn); + $ldap->cat ($this->dn, array('dn')); if ($ldap->fetch()){ $mode= "modify"; } else { @@ -1040,10 +1081,8 @@ $ldap->modify ($attrs); $ldap->cd($this->dn); $this->cleanup(); $ldap->$mode($this->attrs); - if($ldap->get_error()!="Success"){ - print_red($ldap->get_error()); - } - $this->handle_post_events($mode); + show_ldap_error($ldap->get_error(), _("Adding environment information failed")); + $this->handle_post_events($mode,array("uid"=>$this->uid)); } /* Generate ListBox frindly output for the defined shares @@ -1054,7 +1093,9 @@ $ldap->modify ($attrs); $a_return = array(); if(is_array($this->gotoShares)){ foreach($this->gotoShares as $share){ - if (!preg_match('/^!/', $share['server'])){ + if(preg_match("/^!/",$share['server'])){ + $a_return[$share['name']."|".$share['server']]= preg_replace("/^!/","",$share['server'])."://".$share['name']." - "._("group share"); + }else{ $a_return[$share['name']."|".$share['server']]= $share['server']."://".$share['name']." on ".$share['mountPoint']." as ".$share['Username']; } } @@ -1085,10 +1126,13 @@ function printOutHotPlugDevices() if(is_array($this->gotoPrinter)){ foreach($this->gotoPrinter as $printer){ if($printer['mode'] == "admin"){ - $a_return[$printer['cn'][0]]= $printer['cn'][0]." - "._("Admin"); + $a_return[$printer['cn'][0]]= $printer['cn'][0]." - "._("Administrator"); }else{ $a_return[$printer['cn'][0]]= $printer['cn'][0]; } + if ($printer['cn'][0] == $this->gosaDefaultPrinter){ + $a_return[$printer['cn'][0]].=" - "._("Default printer"); + } } } return($a_return);