index 095620859bb274fa94c9980fad2961105ff08d62..714a3afc76a63da0b7d4886586643312e2f6b3eb 100644 (file)
var $current= "";
var $info= array();
var $headlines = array();
var $current= "";
var $info= array();
var $headlines = array();
+ var $allowed_plugins = array();
function pluglist(&$config, &$ui)
{
function pluglist(&$config, &$ui)
{
}
}
+ /*! \brief Check whether we are allowed to modify the given acl or nit..
+ This function is used to check which plugins are visible.
+
+ @param The acl tag to test, eg. "users/user:self", "systems", ...
+ @return Boolean TRUE on success else FALSE
+ */
function check_access($aclname)
{
function check_access($aclname)
{
+ /* Split given acl string into an array.
+ e.g. "user,systems" => array("users","systems");
+ */
$acls_to_check = array();
if(preg_match("/,/",$aclname)){
$acls_to_check = split(",",$aclname);
$acls_to_check = array();
if(preg_match("/,/",$aclname)){
$acls_to_check = split(",",$aclname);
}
foreach($acls_to_check as $acl_to_check){
}
foreach($acls_to_check as $acl_to_check){
- $deps = $this->ui->get_module_departments($acl_to_check);
- if(count($deps)) return TRUE;
+
+ /* Check if the given acl tag is only valid for self acl entries
+ <plugin acl="users/user:self" class="user"...
+ */
+ if(preg_match("/:self$/",$acl_to_check)){
+ $acl_to_check = preg_replace("/:self$/","",$acl_to_check);
+ if($this->ui->get_permissions($this->ui->dn,$acl_to_check,"") != ""){
+ return(TRUE);
+ }
+ return(FALSE);
+ }else{
+
+ /* No self acls. Check if we have any acls for the given ACL type
+ */
+ $deps = $this->ui->get_module_departments($acl_to_check,TRUE);
+ if(count($deps)) return TRUE;
+ }
}
return (FALSE);
}
}
return (FALSE);
}
+
function gen_headlines()
{
$ret = array();
function gen_headlines()
{
$ret = array();
if ($this->check_access($info['ACL'])){
if ($this->check_access($info['ACL'])){
+ $this->allowed_plugins[$index] = $index;
+
$entries= $entries."<p class=\"menuitem\" ".
"onClick='return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\", \"$href\");'>";
if(session::get('js')){
$entries= $entries."<p class=\"menuitem\" ".
"onClick='return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\", \"$href\");'>";
if(session::get('js')){
function show_iconmenu()
{
global $class_mapping;
function show_iconmenu()
{
global $class_mapping;
-
if ($this->iconmenu == ""){
$cfg= $this->config->data['MENU'];
if ($this->iconmenu == ""){
$cfg= $this->config->data['MENU'];
if (isset($info['ICON'])){
$image= get_template_path('images/'.$info['ICON']);
} else {
if (isset($info['ICON'])){
$image= get_template_path('images/'.$info['ICON']);
} else {
+ if(!preg_match("/\//",$plIcon)){
$image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$info['CLASS']])."/images/$plIcon");
$image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$info['CLASS']])."/images/$plIcon");
+ }else{
+ $image = $plIcon;
+ }
}
if ($col > 5){
$entries= $entries."</tr><tr>";
}
if ($col > 5){
$entries= $entries."</tr><tr>";
return (0);
}
return (0);
}
+
+ /*! \brief This function checks if we are allowed to view the plugin with the given id
+ @param $plug_id Integer The ID of the plugin.
+ @return Boolean TRUE if we are allowed to view the plugin else FASLE
+ */
+ function plugin_access_allowed($plug_id)
+ {
+ return(isset($this->allowed_plugins[$plug_id]));
+ }
+
+
+ /*! \brief Force the menu to be recreated
+ */
+ function reset_menus()
+ {
+ $this->menu = "";
+ $this->iconmenu ="";
+ }
+
}
}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>
?>