diff --git a/contrib/fusiondirectory.conf b/contrib/fusiondirectory.conf index 5571000e000e619f2ff361061b92dca2f1de2bd3..39b9d823ecb18278129a54dcebfec24023835592 100644 --- a/contrib/fusiondirectory.conf +++ b/contrib/fusiondirectory.conf @@ -103,86 +103,14 @@ every "tab" defined "class" and will show it inside of a tabbed dialog with the header defined in "name". --> - - <!-- ACL dialog --> - <acltab> - <tab class="acl" name="ACL" /> - </acltab> - - <aclroletab> - <tab class="aclRole" name="ACL Role" /> - </aclroletab> - - <!-- Group dialog --> - <grouptabs> - <tab class="group" name="Generic" /> - <tab class="environment" name="Environment" /> - <tab class="appgroup" name="Applications" /> - <tab class="mailgroup" name="Mail" /> - </grouptabs> - - <!-- Sudo dialog --> - <sudotabs> - <tab class="sudo" name="Generic" /> - <tab class="sudoOption" name="Options" /> - </sudotabs> - - <!-- GOfax plugins --> - <faxblocktabs> - <tab class="blocklistGeneric" name="Generic" /> - </faxblocktabs> - - <!-- GOfon plugins --> - <conferencetabs> - <tab class="conference" name="Generic" /> - </conferencetabs> - - <macrotabs> - <tab class="macro" name="Generic" /> - <tab class="macroParameter" name="Parameter" /> - </macrotabs> - - <phonetabs> - <tab class="phoneGeneric" name="Generic" /> - </phonetabs> - - <!-- GOto plugins --> - <appstabs> - <tab class="application" name="Generic" /> - <tab class="applicationParameters" name="Options" /> - </appstabs> - - <mimetabs> - <tab class="mimetype" name="Generic" /> - </mimetabs> - - <devicetabs> - <tab class="deviceGeneric" name="Generic" /> - </devicetabs> - <arpnewdevicetabs> <tab class="ArpNewDevice" name="Generic" /> </arpnewdevicetabs> - <termtabs> - <tab class="termgeneric" name="Generic" /> - <tab class="termstartup" name="Startup" /> - <tab class="termservice" name="Devices" /> - <tab class="terminfo" name="Information" /> - </termtabs> - <servertabs> <tab class="ServerService" name="Services" /> </servertabs> - <componenttabs> - <tab class="componentGeneric" name="Generic" /> - </componenttabs> - - <netgrouptabs> - <tab class="netgroup" name="Generic" /> - </netgrouptabs> - <wintabs> <tab class="wingeneric" name="Generic" /> </wintabs> @@ -245,15 +173,6 @@ <tab class="entite" name="Generic" /> </entite_tabs> - <!-- Role tabs --> - <roletabs> - <tab class="roleGeneric" name="Generic"/> - </roletabs> - - <ogrouptabs> - <tab class="ogroup" name="Generic" /> - </ogrouptabs> - <!-- Connectivity plugins --> <connectivity> <tab class='kolabAccount' /> @@ -279,40 +198,10 @@ <tab class="csvimport" name="CSV Import" /> </ldiftab> - <faipartitiontabs> - <tab class="faiPartitionTable" name="Partitions" /> - </faipartitiontabs> - - <faiscripttabs> - <tab class="faiScript" name="Script" /> - </faiscripttabs> - - <faihooktabs> - <tab class="faiHook" name="Hooks" /> - </faihooktabs> - - <faivariabletabs> - <tab class="faiVariable" name="Variables" /> - </faivariabletabs> - - <faitemplatetabs> - <tab class="faiTemplate" name="Templates" /> - </faitemplatetabs> - <faiprofiletabs> - <tab class="faiProfile" name="Profiles" /> <tab class="faiSummaryTab" name="Summary" /> </faiprofiletabs> - <faipackagetabs> - <tab class="faiPackage" name="Packages" /> - </faipackagetabs> - - <!-- rSyslog plugin --> - <rsyslogtabs> - <tab class="rsyslog" name="System logs" /> - </rsyslogtabs> - <!-- board plugin --> <boardtabs> <tab class="board" name="Overview"/> diff --git a/include/class_acl.inc b/include/class_acl.inc index f82bfce9544ccd1a93f58a4c48cf96b7d7ef4e80..f15c7bf5d355d5c24294c20113777a01dce6b349 100644 --- a/include/class_acl.inc +++ b/include/class_acl.inc @@ -28,7 +28,7 @@ /*! * \brief This class contains all the function needed to manage acl * \see class_plugin - */ + */ class acl extends plugin { /* Definitions */ @@ -64,11 +64,11 @@ class acl extends plugin /*! * \brief Acl contructor - * + * * \param String $config Configuration file for ACL - * - * \param String $parent - * + * + * \param String $parent + * * \param String $dn The DN */ function acl (&$config, $parent, $dn= NULL) @@ -253,7 +253,7 @@ class acl extends plugin /* Finally - we want to get saved... */ $this->is_account= TRUE; } - + /*! * \brief Generates the html output for this node */ @@ -381,7 +381,7 @@ class acl extends plugin } if($this->acl_is_writeable("")){ - + /* Only be interested in new acl's, if we're in the right _POST place */ if ($aclDialog && $this->aclObject != "" && is_array($this->ocMapping[$this->aclObject])){ @@ -494,35 +494,35 @@ class acl extends plugin /* Draw list */ $aclList= new divSelectBox("aclList"); $aclList->SetHeight(450); - + /* Fill in entries */ foreach ($this->gosaAclEntry as $key => $entry){ if(!$this->acl_is_readable("")) continue; - $action =""; + $action =""; if($this->acl_is_readable("")){ $link = "<a href=?plug=".$_GET['plug']."&id=".$key."&act=edit>".$this->assembleAclSummary($entry)."</a>"; }else{ $link = $this->assembleAclSummary($entry); } - + $field1= array("string" => $this->aclTypes[$entry['type']], "attach" => "style='width:150px'"); $field2= array("string" => $link); if($this->acl_is_writeable("")){ - $action.= "<input type='image' name='sortup_$key' alt='up' + $action.= "<input type='image' name='sortup_$key' alt='up' title='"._("Up")."' src='images/lists/sort-up.png' align='top'>"; - $action.= "<input type='image' name='sortdown_$key' alt='down' + $action.= "<input type='image' name='sortdown_$key' alt='down' title='"._("Down")."' src='images/lists/sort-down.png'>"; - } - + } + if($this->acl_is_readable("")){ - $action.= "<input class='center' type='image' src='images/lists/edit.png' + $action.= "<input class='center' type='image' src='images/lists/edit.png' alt='"._("Edit")."' name='acl_edit_$key' title='".msgPool::editButton(_("ACL"))."'>"; } if($this->acl_is_removeable("")){ - $action.= "<input class='center' type='image' src='images/lists/trash.png' + $action.= "<input class='center' type='image' src='images/lists/trash.png' alt='"._("Delete")."' name='acl_del_$key' title='".msgPool::delButton(_("ACL"))."'>"; } @@ -566,13 +566,13 @@ class acl extends plugin $actions =""; if($this->acl_is_readable("")){ - $actions= "<input class='center' type='image' src='images/lists/edit.png' + $actions= "<input class='center' type='image' src='images/lists/edit.png' alt='"._("Edit")."' name='cat_edit_$section' title='".msgPool::editButton(_("category ACL"))."'>"; } if($this->acl_is_removeable()){ - $actions.= "<input class='center' type='image' src='images/lists/trash.png' + $actions.= "<input class='center' type='image' src='images/lists/trash.png' alt='"._("Delete")."' name='cat_del_$section' title='".msgPool::delButton(_("category ACL"))."'>"; - } + } $field1= array("string" => $dsc, "attach" => "style='width:100px'"); $field2= array("string" => $summary); @@ -647,8 +647,8 @@ class acl extends plugin /* Show main page */ $smarty->assign("dialogState", $this->dialogState); - - /* Assign acls */ + + /* Assign acls */ $smarty->assign("acl_createable",$this->acl_is_createable()); $smarty->assign("acl_writeable" ,$this->acl_is_writeable("")); $smarty->assign("acl_readable" ,$this->acl_is_readable("")); @@ -659,7 +659,7 @@ class acl extends plugin /*! * \brief Function sort an array by elements priority - * + * * \param Array $list Array to be sorted */ function sort_by_priority($list) @@ -690,13 +690,13 @@ class acl extends plugin /*! * \brief Build a role selector from a list - * + * * \param Array $list - */ + */ function buildRoleSelector($list) { $D_List =new divSelectBox("Acl_Roles"); - + $selected = $this->aclContents; if(!is_string($this->aclContents) || !isset($list[$this->aclContents])){ $selected = key($list); @@ -705,12 +705,12 @@ class acl extends plugin $str =""; foreach($list as $dn => $values){ - if($dn == $selected){ + if($dn == $selected){ $option = "<input type='radio' name='selected_role' value='".base64_encode($dn)."' checked>"; }else{ $option = "<input type='radio' name='selected_role' value='".base64_encode($dn)."'>"; } - + $field1 = array("string" => $option) ; $field2 = array("string" => $values['cn'], "attach" => "style='width:200px;'") ; $field3 = array("string" => $values['description'],"attach" => "style='border-right:0px;'") ; @@ -718,15 +718,15 @@ class acl extends plugin $D_List->AddEntry(array($field1,$field2,$field3)); } return($D_List->DrawList()); - } + } /*! * \brief Build an acl selector form - * + * * \param Array $list - * + * * \return the acl selector form - */ + */ function buildAclSelector($list) { $display= "<input type='hidden' name='acl_dummy_0_0_0' value='1'>"; @@ -782,7 +782,7 @@ class acl extends plugin $currentAcl= $this->aclContents[$key]; - /* Get the overall plugin acls + /* Get the overall plugin acls */ $overall_acl =""; if(isset($currentAcl[0])){ @@ -802,8 +802,8 @@ class acl extends plugin } if(session::global_get('js')) { - if(isset($_SERVER['HTTP_USER_AGENT']) && - (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || + if(isset($_SERVER['HTTP_USER_AGENT']) && + (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT']))) { $display.= "\n<table style='width:100%;border:1px solid #A0A0A0' cellspacing=0 cellpadding=2>". "\n <tr>". @@ -853,7 +853,7 @@ class acl extends plugin $cnt= 1; $splist= $plist[preg_replace('%^.*/%', '', $key)]['plProvidedAcls']; if(session::global_get('js')) { - if(isset($_SERVER['HTTP_USER_AGENT']) && + if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT']))) { $display.= "\n <tr id='tr_$tname' style='vertical-align:top;height:0px;'>". "\n <td colspan=".$cols.">". @@ -868,7 +868,7 @@ class acl extends plugin } } - + foreach($splist as $attr => $dsc){ /* Skip pl* attributes, they are internal... */ @@ -900,16 +900,16 @@ class acl extends plugin $display.= "\n <td style='border-top:1px solid #A0A0A0;${rb}width:".(int)(100/$cols)."%'>". "\n <b>$dsc</b> ($attr)<br>".$this->mkrwbx($key."_".$attr, $state)."</td>$end"; } - + /* Fill missing td's if needed */ if (--$cnt != $cols && $cnt != 0){ - $display.= str_repeat("\n <td style='border-top:1px solid #A0A0A0; width:".(int)(100/$cols)."%'> </td>", $cols-$cnt); + $display.= str_repeat("\n <td style='border-top:1px solid #A0A0A0; width:".(int)(100/$cols)."%'> </td>", $cols-$cnt); } if(session::global_get('js')) { - if(isset($_SERVER['HTTP_USER_AGENT']) && - (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || - (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT'])) || + if(isset($_SERVER['HTTP_USER_AGENT']) && + (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || + (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT'])) || (preg_match("/ie/i",$_SERVER['HTTP_USER_AGENT']))) { $display.= "\n </table>". "\n </div>". @@ -926,15 +926,15 @@ class acl extends plugin /*! * \brief Create a checkbox - * + * * \param String $name Name of the acl checkbox - * + * * \param String $text Label for the checkbox - * + * * \param boolean $state false - * + * * \return String containing checkbox - */ + */ function mkchkbx($name, $text, $state= FALSE) { $state= $state?"checked":""; @@ -949,19 +949,19 @@ class acl extends plugin /*! * \brief Make a read and write box - * + * * \param String $name Name of the box - * + * * \param boolean $state false - * + * * \return String containing checkbox - */ + */ function mkrwbx($name, $state= "") { $rstate= preg_match('/r/', $state)?'checked':''; $wstate= preg_match('/w/', $state)?'checked':''; $tname= preg_replace("/[^a-z0-9]/i","_",$name); - + if($this->acl_is_writeable("")){ return ("\n <input id='acl_".$tname."_r' type=checkbox name='acl_${name}_r' $rstate>". "\n <label for='acl_".$tname."_r'>"._("read")."</label>". @@ -975,9 +975,9 @@ class acl extends plugin /*! * \brief Explode an acl - * + * * \param string $acl ACL to be exploded - */ + */ static function explodeACL($acl) { @@ -993,7 +993,7 @@ class acl extends plugin $a= array( $index => array("type" => $type, "filter"=> $filter, "members" => acl::extractMembers($acl,$type == "role"))); - + /* Handle different types */ switch ($type){ @@ -1003,14 +1003,14 @@ class acl extends plugin case 'base': $a[$index]['acl']= acl::extractACL($acl); break; - + case 'role': $a[$index]['acl']= base64_decode(preg_replace('/^[^:]+:[^:]+:([^:]+).*$/', '\1', $acl)); break; case 'reset': break; - + default: msg_dialog::display(_("Internal error"), sprintf(_("Unkown ACL type '%s'!"), $type), ERROR_DIALOG); $a= array(); @@ -1020,13 +1020,13 @@ class acl extends plugin /*! * \brief Extract members of an acl - * + * * \param $acl The acl to be extracted - * + * * \param $role Boolean false - * + * * \return an array with members - */ + */ static function extractMembers($acl,$role = FALSE) { global $config; @@ -1078,8 +1078,8 @@ class acl extends plugin /*! * \brief Extract an acl - * - * \param string $acl The acl to be extracted + * + * \param string $acl The acl to be extracted */ static function extractACL($acl) { @@ -1090,7 +1090,7 @@ class acl extends plugin /* Dis-assemble single ACLs */ foreach($aa as $sacl){ - + /* Dis-assemble field ACLs */ $ao= explode('#', $sacl); $gobject= ""; @@ -1123,9 +1123,9 @@ class acl extends plugin /*! * \brief Summarize ACL and members - * - * \param Array $entry - */ + * + * \param Array $entry + */ function assembleAclSummary($entry) { $summary= ""; @@ -1136,7 +1136,7 @@ class acl extends plugin if($entry['type'] == "role"){ - if(isset($this->roles[$entry['acl']])){ + if(isset($this->roles[$entry['acl']])){ $summary.= sprintf(_("Role: %s"), $this->roles[$entry['acl']]['cn']); }else{ $summary.= sprintf(_("Role: %s"), "<i>"._("unknown role")."</i>"); @@ -1172,9 +1172,9 @@ class acl extends plugin /*! * \brief Load an ACL - * + * * \param boolean $new false - */ + */ function loadAclEntry($new= FALSE) { /* New entry gets presets... */ @@ -1196,9 +1196,9 @@ class acl extends plugin /*! * \brief Save an ACL after it's handle - * + * * \return boolean true if the acl is saved, else return false - */ + */ function aclPostHandler() { if (isset($_POST['save_acl'])){ @@ -1211,15 +1211,15 @@ class acl extends plugin /*! * \brief Prepare for Copy & Paste - * + * * \see plugin::PrepareForCopyPaste($source) - * + * * \param string $source Source to prepare for copy and paste */ function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); - + $dn = $source['dn']; $acl_c = new acl($this->config, $this->parent,$dn); $this->gosaAclEntry = $acl_c->gosaAclEntry; @@ -1232,7 +1232,7 @@ class acl extends plugin { /* Assemble ACL's */ $tmp_acl= array(); - + foreach ($this->gosaAclEntry as $prio => $entry){ $final= ""; $members= ""; @@ -1270,20 +1270,20 @@ class acl extends plugin } $acl.= ','; } - + } } $final.= preg_replace('/,$/', '', $acl); } - /* Append additional filter options + /* Append additional filter options */ if(!empty($entry['filter'])){ $final .= ":".base64_encode($entry['filter']); } $tmp_acl[]= $final; - } + } /* Call main method */ plugin::save(); @@ -1304,7 +1304,7 @@ class acl extends plugin /* Remove object class */ $this->attrs['objectClass']= array_remove_entries(array('gosaAcl'), $this->attrs['objectClass']); - } + } /* Do LDAP modifications */ $ldap= $this->config->get_ldap_link(); @@ -1326,7 +1326,7 @@ class acl extends plugin session::global_set('ui',$ui); } - /*! + /*! * \brief Removes object from parent */ function remove_from_parent() @@ -1346,31 +1346,31 @@ class acl extends plugin $this->handle_post_events("remove",array("uid" => $this->uid)); } - + /* - * \brief Return plugin informations for acl handling + * \brief Return plugin informations for acl handling */ static function plInfo() { - return (array( - "plShortName" => _("ACL"), - "plDescription" => _("ACL")." ("._("Access control list").")", - "plSelfModify" => FALSE, - "plDepends" => array(), - "plPriority" => 0, - "plSection" => array("administration"), - "plCategory" => array("acl" => array("description" => _("ACL")." & "._("ACL roles"), - "objectClass" => array("gosaAcl","gosaRole"))), - "plProvidedAcls"=> array( -// "cn" => _("Role name"), -// "description" => _("Role description") - ) - - )); + return array( + "plShortName" => _("ACL"), + "plDescription" => _("ACL")." ("._("Access control list").")", + "plSelfModify" => FALSE, + "plSection" => array("administration"), + "plCategory" => array("acl" => array("description" => _("ACL")." & "._("ACL roles"), + "objectClass" => array("gosaAcl","gosaRole"))), + "plObjectType" => array("acl" => array("name" => _("ACL"), + "filter" => "objectClass=gosaAcl")), + + "plProvidedAcls"=> array( +// "cn" => _("Role name"), +// "description" => _("Role description") + ) + ); } - /*! + /*! * \brief Remove acls defined for $src */ function remove_acl() @@ -1379,44 +1379,44 @@ class acl extends plugin } - /*! - * \brief Remove acls defined for $src - * + /*! + * \brief Remove acls defined for $src + * * \param String $dn The DN */ static function remove_acl_for($dn) - { - global $config; + { + global $config; $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($dn)."*))",array("gosaAclEntry","dn")); - $new_entries= array(); - while($attrs = $ldap->fetch()){ - if (!isset($attrs['gosaAclEntry'])) { - continue; - } - unset($attrs['gosaAclEntry']['count']); + $new_entries= array(); + while($attrs = $ldap->fetch()){ + if (!isset($attrs['gosaAclEntry'])) { + continue; + } + unset($attrs['gosaAclEntry']['count']); // Remove entry directly foreach($attrs['gosaAclEntry'] as $id => $entry){ - $parts= explode(':',$entry); - $members= explode(',',$parts[2]); - $new_members= array(); - foreach($members as $member) { - if (base64_decode($member) != $dn) { - $new_members[]= $member; - } else { + $parts= explode(':',$entry); + $members= explode(',',$parts[2]); + $new_members= array(); + foreach($members as $member) { + if (base64_decode($member) != $dn) { + $new_members[]= $member; + } else { fusiondirectory_log("modify","users/acl",$attrs['dn'],array(),sprintf("Removed acl for %s on object %s.",$dn,$attrs['dn'])); - } - } + } + } /* We can completely remove the entry if there are no members anymore */ - if (count($new_members)) { - $parts[2]= implode(",", $new_members); - $new_entries[]= implode(":", $parts); - } - } + if (count($new_members)) { + $parts[2]= implode(",", $new_members); + $new_entries[]= implode(":", $parts); + } + } // There should be a modification, so write it back $ldap->cd($attrs['dn']); @@ -1430,11 +1430,11 @@ class acl extends plugin /*! * \brief Update the acl membership - * + * * \param String $src The source - * + * * \param String $dst The destination - */ + */ function update_acl_membership($src,$dst) { $ldap = $this->config->get_ldap_link(); diff --git a/plugins/admin/acl/class_aclRole.inc b/plugins/admin/acl/class_aclRole.inc index 7232442adf56468f3f03e0823ad24933a3b89c16..1768fbb67b5982c7c93de4646cb56952f5348579 100644 --- a/plugins/admin/acl/class_aclRole.inc +++ b/plugins/admin/acl/class_aclRole.inc @@ -68,7 +68,7 @@ class aclrole extends acl $this->base = preg_replace("/^[^,]+,[^,]+,/","",$this->dn); new log("view","acl/".get_class($this),$this->dn); } - + /* Load ACL's */ $this->gosaAclTemplate= array(); if (isset($this->attrs["gosaAclTemplate"])){ @@ -262,11 +262,11 @@ class aclrole extends acl } } } - + if(isset($_POST['acl_dummy_0_0_0'])){ $aclDialog= TRUE; } - + /* Only be interested in new acl's, if we're in the right _POST place */ if ($aclDialog && $this->aclObject != "" && is_array($this->ocMapping[$this->aclObject])){ @@ -368,17 +368,17 @@ class aclrole extends acl $action =""; if($this->acl_is_writeable("gosaAclEntry")){ - $action.= "<input type='image' name='sortup_$key' alt='up' + $action.= "<input type='image' name='sortup_$key' alt='up' title='"._("Up")."' src='images/lists/sort-up.png' align='top'>"; - $action.= "<input type='image' name='sortdown_$key' alt='down' + $action.= "<input type='image' name='sortdown_$key' alt='down' title='"._("Down")."' src='images/lists/sort-down.png'>"; } if($this->acl_is_readable("gosaAclEntry")){ - $action.= "<input class='center' type='image' src='images/lists/edit.png' alt='"._("Edit")."' name='acl_edit_$key' + $action.= "<input class='center' type='image' src='images/lists/edit.png' alt='"._("Edit")."' name='acl_edit_$key' title='".msgPool::editButton(_("ACL"))."'>"; } if($this->acl_is_writeable("gosaAclEntry")){ - $action.= "<input class='center' type='image' src='images/lists/trash.png' alt='"._("Delete")."' name='acl_del_$key' + $action.= "<input class='center' type='image' src='images/lists/trash.png' alt='"._("Delete")."' name='acl_del_$key' title='".msgPool::delButton(_("ACL"))."'>"; } @@ -422,11 +422,11 @@ class aclrole extends acl $action = ""; if($this->acl_is_readable("gosaAclEntry")){ - $action.= "<input class='center' type='image' src='images/lists/edit.png' + $action.= "<input class='center' type='image' src='images/lists/edit.png' alt='"._("Edit")."' name='cat_edit_$section' title='"._("Edit category ACL")."'>"; } if($this->acl_is_writeable("gosaAclEntry")){ - $action.= "<input class='center' type='image' src='images/lists/trash.png' + $action.= "<input class='center' type='image' src='images/lists/trash.png' alt='"._("Delete")."' name='cat_del_$section' title='"._("Reset category ACL")."'>"; } @@ -564,14 +564,14 @@ class aclrole extends acl } $acl.= ','; } - + } } $final.= preg_replace('/,$/', '', $acl); } $tmp_acl[]= $final; - } + } /* Call main method */ plugin::save(); @@ -623,7 +623,7 @@ class aclrole extends acl function remove_from_parent() { $ldap = $this->config->get_ldap_link(); - $serach_for = "*:role:".base64_encode($this->dn).":*"; + $serach_for = "*:role:".base64_encode($this->dn).":*"; $ldap->search ("(&(objectClass=gosaACL)(gosaAclEntry=".$serach_for."))",array('dn','cn','sn','givenName','uid')); $all_names = ""; @@ -646,7 +646,7 @@ class aclrole extends acl msg_dialog::display(_("Object in use"), sprintf(_("This role cannot be removed while it is in use by these objects:")."<br><br>%s", $all_names), WARNING_DIALOG); return; } - + $ldap->rmDir($this->dn); new log("remove","acl/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if (!$ldap->success()){ @@ -674,7 +674,7 @@ class aclrole extends acl { plugin::save_object(); if(isset($_POST['acl_role_posted'])){ - + /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { @@ -695,7 +695,7 @@ class aclrole extends acl $this->cn = $_POST['cn']; } } - + function getCopyDialog() { @@ -708,33 +708,34 @@ class aclrole extends acl return($ret); } - + function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); - + $source_o = new aclrole($this->config,$source['dn']); $this->gosaAclTemplate = $source_o->gosaAclTemplate; } - + /* Return plugin informations for acl handling */ static function plInfo() { - return (array( - "plShortName" => _("Role"), - "plDescription" => _("Access control roles"), - "plSelfModify" => FALSE, - "plDepends" => array(), - "plPriority" => 0, - "plSection" => array("administration"), - "plCategory" => array("acl"), - "plProvidedAcls" => array( - "cn" => _("Name"), - "base" => _("Base"), - "description" => _("Description"), - "gosaAclEntry" => _("Permissions")) - )); + return array( + "plShortName" => _("Role"), + "plDescription" => _("Access control roles"), + "plSelfModify" => FALSE, + "plSection" => array("administration"), + "plCategory" => array("acl"), + "plObjectType" => array("aclRole" => array("name" => _("ACL role"), "filter" => "objectClass=gosaRole")), + + "plProvidedAcls" => array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "gosaAclEntry" => _("Permissions") + ) + ); } function check() @@ -744,7 +745,7 @@ class aclrole extends acl if(empty($this->cn)){ $message[] = msgPool::required(_("Name")); } - + $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); if($this->cn != $this->orig_cn){ @@ -756,8 +757,8 @@ class aclrole extends acl } } } - } - + } + if(!count($this->gosaAclTemplate)){ $message[] = msgPool::required(_("ACL")); } @@ -766,7 +767,7 @@ class aclrole extends acl if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } - + /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ diff --git a/plugins/admin/groups/class_group.inc b/plugins/admin/groups/class_group.inc index 93f419e4f90946e018b0dec7047d594707b3f209..4d763cd0540a551522be42f8a0d18beffa4bd497 100644 --- a/plugins/admin/groups/class_group.inc +++ b/plugins/admin/groups/class_group.inc @@ -1174,30 +1174,30 @@ class group extends plugin /* Return plugin informations for acl handling */ static function plInfo() { - return (array( - "plShortName" => _("Generic"), - "plDescription" => _("Generic group settings"), - "plSelfModify" => FALSE, - "plDepends" => array(), - "plPriority" => 0, - "plSection" => array("administration"), - "plCategory" => array("groups" => array("objectClass" => "posixGroup", "description" => _("Groups"))), - - "plProvidedAcls" => array( - "cn" => _("Name"), - "description" => _("Description"), - "base" => _("Base"), - - "gidNumber" => _("GID"), - - "sambaGroupType" => _("Samba group type"), - "sambaDomainName" => _("Samba domain name"), - "trustModel" => _("System trust"), - "fonGroup" => _("Phone pickup group"), - "nagiosGroup" => _("Nagios group"), - - "memberUid" => _("Group member")) - )); + return array( + "plShortName" => _("Generic"), + "plDescription" => _("Generic group settings"), + "plSelfModify" => FALSE, + "plSection" => array("administration"), + "plCategory" => array("groups" => array("objectClass" => "posixGroup", "description" => _("Groups"))), + "plObjectType" => array("group" => array("name" => _("Group"), "filter" => "objectClass=posixGroup")), + + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "base" => _("Base"), + + "gidNumber" => _("GID"), + + "sambaGroupType" => _("Samba group type"), + "sambaDomainName" => _("Samba domain name"), + "trustModel" => _("System trust"), + "fonGroup" => _("Phone pickup group"), + "nagiosGroup" => _("Nagios group"), + + "memberUid" => _("Group member") + ) + ); } diff --git a/plugins/admin/ogroups/class_ogroup.inc b/plugins/admin/ogroups/class_ogroup.inc index d464ca394c812b6c32a5075b1b5224cce55161cb..9627ae58b3c3c1fc398915445d8ff5d9f0068dab 100644 --- a/plugins/admin/ogroups/class_ogroup.inc +++ b/plugins/admin/ogroups/class_ogroup.inc @@ -936,22 +936,25 @@ class ogroup extends plugin static function plInfo() { - return (array( - "plShortName" => _("Generic"), - "plDescription" => _("Object group generic"), - "plSelfModify" => FALSE, - "plDepends" => array(), - "plPriority" => 1, - "plSection" => array("administration"), - "plCategory" => array("ogroups" => array("description" => _("Object groups"), - "objectClass" => "gosaGroupOfNames")), - "plProvidedAcls"=> array( - "cn" => _("Name"), - "base" => _("Base"), - "description" => _("Description"), - "trustModel" => _("System trust"), - "member" => _("Member")) - )); + return array( + "plShortName" => _("Generic"), + "plDescription" => _("Object group generic"), + "plSelfModify" => FALSE, + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("ogroups" => array("description" => _("Object groups"), + "objectClass" => "gosaGroupOfNames")), + "plObjectType" => array("ogroup" => array("name" => _("Object group"), + "filter" => "objectClass=gosaGroupOfNames")), + + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "trustModel" => _("System trust"), + "member" => _("Member") + ) + ); } } diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc index a4d0ed96b2a0b0529f32c2a37e307e7f5c7ff140..351fd589556505becc09f1852a1b507a56854a08 100644 --- a/plugins/personal/generic/class_user.inc +++ b/plugins/personal/generic/class_user.inc @@ -1638,7 +1638,7 @@ class user extends plugin "plSection" => array("personal" => _("My account")), "plCategory" => array("users" => array("description" => _("Users"), "objectClass" => "gosaAccount")), - "plObjectType" => array("user" => array("description" => _("User"), + "plObjectType" => array("user" => array("name" => _("User"), "filter" => "objectClass=gosaAccount")), "plProvidedAcls" => array(