"Eins ist toll", "zwei" => "Zwei ist noch besser"); /* application attributes */ var $base= ""; var $goFonMacroParameter =array(); /* attribute list for save action */ var $attributes= array("base","goFonMacroParameter"); var $objectclasses= array("top", "goFonMacro"); function macroParameter ($config, $dn= NULL) { plugin::plugin ($config, $dn); $tmp = array(); // temporary Var $tmp2 = array(); // temporary Var ... $tmp3 = ""; $ldap= $config->get_ldap_link(); $this->dn = $dn; /* This is always an account */ $this->is_account= TRUE; /* Edit or new one ?*/ if ($this->dn == "new"){ $ui= get_userinfo(); $this->base= dn2base($ui->dn); } else { $this->base= dn2base($this->dn); } /* initialising macro parameter */ unset($this->attrs['goFonMacroParameter']['count']); /* Set Parameters, or a new array if ther are no parameters */ if(isset($this->attrs['goFonMacroParameter'])){ $this->goFonMacroParameter = $this->attrs['goFonMacroParameter']; }else{ $this->goFonMacroParameter =array(); } /* Create an array for parameters if not given yet */ if(!is_array($this->goFonMacroParameter)){ $tmp3 = $this->goFonMacroParameter; $this->goFonMacroParameter =array(); if(!empty($tmp3)) { $this->goFonMacroParameter[] = $tmp3; } } foreach($this->goFonMacroParameter as $para){ $tmp = split("!",$para); $num = preg_replace("/[^0-9]/","",$tmp[1]); $tmp2[$num]['name'] = $tmp[1]; $tmp2[$num]['type'] = $tmp[2]; $tmp2[$num]['default'] = $tmp[3]; } /* Assign this array */ $this->goFonMacroParameter = $tmp2; } function check_paras($content,$goFonMacroParameter) { preg_match_all("/[$]\{ARG[0-9]*\}/",$content,$res,PREG_OFFSET_CAPTURE); $anz = count($res[0]); $new = array(); foreach($res[0] as $val){ $num = preg_replace("/[^0-9]/","",$val[0]); $new[$num]['val'] = $val[0]; $new[$num]['num'] = $num; } foreach($goFonMacroParameter as $gokey => $goval){ foreach($new as $nkey => $nval){ if($gokey == $nval['num']){ $goFonMacroParameter[$gokey]['check']= true; } } } foreach($new as $key => $val){ $goFonMacroParameter[$key]['check']= true; if((!isset($goFonMacroParameter[$key]['name']))||(empty($goFonMacroParameter[$key]['name']))){ $goFonMacroParameter[$key]['name']="\${ARG".$key."}"; } } foreach($goFonMacroParameter as $key => $val){ if(!isset($goFonMacroParameter[$key]['check'])){ $goFonMacroParameter[$key]['check']= false; } if(!isset($goFonMacroParameter[$key]['default'])){ $goFonMacroParameter[$key]['default'] = ""; } } asort($goFonMacroParameter); return($goFonMacroParameter); } function execute() { /* Variables */ $vars = ""; $tmp = array(); $number = 0; $content = $_SESSION['macroManagment']->macrotabs->by_object['macro']->goFonMacroContent; if(strstr($content,"ARG")){ $vorpos = strpos($content,"ARG"); $rest = substr($content,$vorpos, strlen($content)); } /* Do we represent a valid group? */ if (!$this->is_account && $this->parent == NULL){ $display= "\"\" ". _("This 'dn' is no application.").""; return ($display); } /* Fill templating stuff */ $smarty= get_smarty(); /* Assign all vars to Smarty */ foreach($this->attributes as $ar){ $smarty->assign($ar, $this->$ar); } /* Add an empty Parameter */ if(isset($_POST['addvar'])){ if(!is_array($this->goFonMacroParameter)){ $vars = $this->goFonMacroParameter; $this->goFonMacroParameter = array(); $this->goFonMacroParameter[]= $vars; } $number= count($this->goFonMacroParameter); $number++; $this->goFonMacroParameter[]=array("name"=>"new","type"=>"string","default"=>"test"); } /* read out post data, and assign it to the parameters */ /* And or delete */ foreach($_POST as $name=>$value){ /* Test if there is a variable begining with "del" */ if(preg_match("/del/",$name)){ /* Extract entry id to delete */ $nr = str_replace("del","",$name) ; /* unset entry */ unset($this->goFonMacroParameter[$nr]); }elseif(preg_match("/number/",$name)){ /* Set Post vars */ $key = $_POST[$name]; $this->goFonMacroParameter[$key]['name'] =$_POST["varname".$key]; $this->goFonMacroParameter[$key]['type'] =$_POST["vartype".$key]; $this->goFonMacroParameter[$key]['default'] =$_POST["default".$key]; } } /*generate Table which shows als parameters */ $FonParas = $this->check_paras($content,$this->goFonMacroParameter); foreach($FonParas as $key=>$para) { if(isset($para['type'])){ if($para['type']=="string") { $sel1 = "selected"; $sel2 = ""; $sel3 = ""; }elseif($para['type']=="combo"){ $sel1 = ""; $sel2 = "selected"; $sel3 = "" ; }else{ $sel1 = ""; $sel3 = "selected"; $sel2 = "" ; } }else{ $sel1 = ""; $sel3 = ""; $sel2 = "" ; } $vars .=" ".$para['name']." "; if($para['check']==true) { $vars.=_("Ok"); $vars.=" "; }else{ $vars.=""._("Unused").""; $vars.=" "; } $vars.=" "; } /* Checkboxes */ $smarty->assign("base_select", $this->base); $smarty->assign("vars", $vars); /* Show main page */ return($smarty->fetch (get_template_path('parameter.tpl', TRUE))); } function remove_from_parent() { /* $ldap= $this->config->get_ldap_link(); $ldap->rmDir($this->dn); /* Optionally execute a command after we're done * / $this->handle_post_events("remove"); /* Delete references to object groups * / $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".$this->dn."))", array("cn")); while ($ldap->fetch()){ $og= new ogroup($this->config, $ldap->getDN()); unset($og->member[$this->dn]); $og->save (); } */ } /* Save data to object */ function save_object() { if (isset($_POST['cn'])){ plugin::save_object(); } } /* Check values */ function check() { $message = array(); foreach($this->attributes as $attr){ if(chkacl($this->acl,$attr)){ $str = sprintf( _("Insufficient permissions, can't change attribute '%s' in goFonMacro"),$attr) ; return(array($str)); } } return $message; } /* Save to LDAP */ function save() { /* Post checks */ $this->execute(); plugin::save(); $this->attrs['goFonMacroParameter']=array(); foreach($this->goFonMacroParameter as $key=>$fonpara){ $this->attrs['goFonMacroParameter'][]=$key."!".$fonpara['name']."!".$fonpara['type']."!".$fonpara['default']; } unset($this->attrs['base']); /* Write back to ldap */ $ldap= $this->config->get_ldap_link(); $ldap->cat($this->dn); $a= $ldap->fetch(); if (count($a)){ $ldap->cd($this->dn); $ldap->modify($this->attrs); $this->handle_post_events("modify"); } else { if(count($this->attrs['goFonMacroParameter']==0)){ unset($this->attrs['goFonMacroParameter']); } $ldap->cd($this->dn); $ldap->create_missing_trees( $this->dn); $ldap->cd($this->dn); $ldap->add($this->attrs); $this->handle_post_events("add"); } show_ldap_error($ldap->get_error()); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>