index f92b573b4f9a1c1553677f6ceaf8afd05df10a11..57444b14c5d75e6396696e503e1337294319363e 100644 (file)
$this->base = $_SESSION['CurrentMainBase'];
}
- /* set permissions */
- $ui= get_userinfo();
- $acl= get_permissions ($ui->dn, $ui->subtreeACL);
- $this->acl= get_module_permission($acl, "ogroup", $ui->dn);
-
-
/* Load member data */
$this->reload();
}
/* Load templating engine */
$smarty= get_smarty();
+ $tmp = $this->plInfo();
+ foreach($tmp['plProvidedAcls'] as $name => $translation){
+ $smarty->assign($name."ACL",$this->getacl($name));
+ }
+
+ /* Create base acls */
+ $baseACL = $this->getacl("base",(!is_object($this->parent) && !isset($_SESSION['edit'])));
+ if(!$this->acl_is_moveable()) {
+ $baseACL = preg_replace("/w/","",$baseACL);
+ }
+ $smarty->assign("baseACL", $baseACL);
+
+
+ /* Get bases */
+ $ui = get_userinfo();
+ $check = $ui->get_module_departments("ogroups");
+ $bases = array();
+ foreach($check as $dn_allowed){
+ $bases[$dn_allowed] = $this->config->idepartments[$dn_allowed];
+ }
+
/* Base select dialog */
$once = true;
foreach($_POST as $name => $value){
- if(preg_match("/^chooseBase/",$name) && $once){
+ if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_moveable()){
$once = false;
- $this->dialog = new baseSelectDialog($this->config);
+ $this->dialog = new baseSelectDialog($this->config,$this,$bases);
$this->dialog->setCurrentBase($this->base);
}
}
/* Dialog handling */
- if(is_object($this->dialog)){
+ if(is_object($this->dialog) && $this->acl_is_moveable()){
/* Must be called before save_object */
$this->dialog->save_object();
}
/* Bases / Departments */
-
- if (isset($_POST['base'])){
+ if ((isset($_POST['base'])) && ($this->acl_is_moveable())){
$this->base= $_POST['base'];
}
}
/* Assign variables */
- $smarty->assign("bases", $this->config->idepartments);
+ $smarty->assign("bases", $bases);
$smarty->assign("base_select", $this->base);
$smarty->assign("department", $this->department);
$smarty->assign("members", $this->convert_list($this->memberList));
/* Fields */
foreach ($this->attributes as $val){
$smarty->assign("$val", $this->$val);
- $smarty->assign("$val"."ACL", chkacl($this->acl, "$val"));
- }
-
- /* Assign ACL's */
- foreach (array("base", "members") as $val){
- $smarty->assign("$val"."ACL", chkacl($this->acl, "$val"));
}
return ($smarty->fetch (get_template_path('generic.tpl', TRUE)));
/* Save additional values for possible next step */
if (isset($_POST['ogroupedit'])){
plugin::save_object();
-
- if (chkacl ($this->acl, "base") == "" && isset($_POST["base"])){
- $this->base= $_POST["base"];
- }
-
+
}
}
/* It has failed, add entry with type flag I (Invalid)*/
if ($ldap->error != "success"){
- $this->memberList[$dn]= array('text' => _("Non existing dn: ")."$dn","type" => "I");
+ $this->memberList[$dn]= array('text' => _("Non existing dn:")." ".@LDAP::fix($dn),"type" => "I");
} else {
$ldap = $this->config->get_ldap_link();
if($this->dn != $new_dn){
- $ldap->cat ($new_dn);
+ $ldap->cat ($new_dn, array('dn'));
}
if($ldap->count() !=0){
$message[]= _("There is already an object with this cn.");
}
- $ui= get_userinfo();
- $acl= get_permissions ($new_dn, $ui->subtreeACL);
- $acl= get_module_permission($acl, "group", $new_dn);
- if (chkacl($acl, "create") != ""){
+ if ($this->orig_dn == "new" && !$this->acl_is_createable()){
$message[]= _("You have no permissions to create a group on this 'Base'.");
}
/* must: cn */
- if ($this->cn == "" && chkacl ($this->acl, "cn") == ""){
+ if ($this->cn == "" && $this->acl_is_writeable("cn")){
$message[]= "The required field 'Name' is not set.";
}
/* Save data. Using 'modify' implies that the entry is already present, use 'add' for
new entries. So do a check first... */
- $ldap->cat ($this->dn);
+ $ldap->cat ($this->dn, array('dn'));
if ($ldap->fetch()){
/* Modify needs array() to remove values :-( */
if (!count ($this->member)){
$this->handle_post_events($mode);
$ret= 0;
- if (show_ldap_error($ldap->get_error())){
+ if (show_ldap_error($ldap->get_error(), sprintf(_("Saving of object group/generic with dn '%s' failed."),$this->dn))){
$ret= 1;
}
$ldap= $this->config->get_ldap_link();
$ldap->rmdir($this->dn);
- show_ldap_error($ldap->get_error());
+ show_ldap_error($ldap->get_error(), sprintf(_("Removing of object group/generic with dn '%s' failed."),$this->dn));
/* Trigger remove signal */
$this->handle_post_events("remove");
$this->cn = $_POST['cn'];
}
}
+
+
+ function plInfo()
+ {
+ return (array(
+ "plShortName" => _("Generic"),
+ "plDescription" => _("Object group generic"),
+ "plSelfModify" => FALSE,
+ "plDepends" => array(),
+ "plPriority" => 0,
+ "plSection" => array("administration"),
+ "plCategory" => array("ogroups" => array("description" => _("Object groups"),
+ "objectClass" => "gosaGroupOfNames")),
+ "plProvidedAcls"=> array(
+ "cn" => _("Name"),
+ "base" => _("Base"),
+ "description" => _("Description"),
+ "member" => _("Member"))
+ ));
+ }
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: