X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=gosa-core%2Fplugins%2Fadmin%2Fdepartments%2Fclass_localityGeneric.inc;h=5394bcbd8e09e86f680f8a45f754715492d0cf76;hb=10100c5c8d92e45a0719bc321a3767f65966d9d7;hp=b0c009018f489e647344df5c03410667dd089122;hpb=1ac21548468b419a2a6ca612a9e04f8abee05be3;p=gosa.git diff --git a/gosa-core/plugins/admin/departments/class_localityGeneric.inc b/gosa-core/plugins/admin/departments/class_localityGeneric.inc index b0c009018..5394bcbd8 100644 --- a/gosa-core/plugins/admin/departments/class_localityGeneric.inc +++ b/gosa-core/plugins/admin/departments/class_localityGeneric.inc @@ -23,20 +23,73 @@ class locality extends department { /* attribute list for save action */ - var $attributes = array( "l", "description"); - var $objectclasses = array("top", "locality"); - var $type ="l"; - var $l =""; - var $orgi_l =""; + var $attributes = array("l", "description", "ou", "gosaUnitTag"); + var $objectclasses = array("top", "gosaDepartment"); + var $structuralOC = array("locality"); + var $description= ""; + var $type = "locality"; + var $l = ""; + var $orig_l = ""; var $namingAttr = "l"; function check() { $message = plugin::check(); + + /* Check for presence of this department */ + $ldap= $this->config->get_ldap_link(); + $ldap->ls ("(&(l=".$this->l.")(objectClass=locality))", $this->base, array('dn')); + if ($this->orig_l == "new" && $ldap->count()){ + $message[]= msgPool::duplicated(_("Name")); + } elseif ($this->orig_dn != $this->dn && $ldap->count()){ + $message[]= msgPool::duplicated(_("Name")); + } + + /* All required fields are set? */ + if ($this->l == ""){ + $message[]= msgPool::required(_("Name")); + }elseif(tests::is_department_name_reserved($this->l,$this->base)){ + $message[]= msgPool::reserved(_("Name")); + }elseif(preg_match ('/[#+:=>\\\\\/]/', $this->l)){ + $message[]= msgPool::invalid(_("Name"), $this->l, "/[^#+:=>\\\\\/]/"); + } + + /* Check description */ + if ($this->description == ""){ + $message[]= msgPool::required(_("Description")); + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + return($message); } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array("plShortName" => _("Locality"), + "plDescription" => _("Locality"), + "plSelfModify" => FALSE, + "plPriority" => 3, + "plDepends" => array(), + "plSection" => array("administration"), + "plCategory" => array("department"), + + "plProvidedAcls" => array( + "l" => _("Location"), + "description" => _("Description"), + "base" => _("Base"), + "gosaUnitTag" => _("Administrative settings")) + )); + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: