Code

Updated pluglist
[gosa.git] / gosa-core / include / class_pluglist.inc
index 54b5c67644a0df08132bb5b74ba0615f1a5f1ef0..114ab5ddd21fe3cbf8b58558f1fcbee4e1c429ee 100644 (file)
@@ -31,6 +31,7 @@ class pluglist {
        var $current= "";
        var $info= array();
        var $headlines = array();
+  var $allowed_plugins = array();
 
        function pluglist(&$config, &$ui)
        {
@@ -113,7 +114,7 @@ class pluglist {
                
                                /* No self acls. Check if we have any acls for the given ACL type 
                  */
-                               $deps = $this->ui->get_module_departments($acl_to_check);
+                               $deps = $this->ui->get_module_departments($acl_to_check,TRUE);
                                if(count($deps)) return TRUE;
                        }
                }
@@ -141,6 +142,19 @@ class pluglist {
 
        function gen_menu()
        {
+    /* Check if class_location.inc has changed, this is the case 
+        if we have installed or removed plugins. 
+     */
+    if(!session::is_set("class_location.inc:timestamp")){
+      $tmp = stat("../include/class_location.inc");
+      session::set("class_location.inc:timestamp",$tmp['mtime']);
+    }else{
+      $tmp = stat("../include/class_location.inc");
+      if($tmp['mtime'] != session::get("class_location.inc:timestamp")){
+        $this->menu = "";
+      }
+    }
+
                if ($this->menu == ""){
                        $first= TRUE;
                        $cfg= $this->config->data['MENU'];
@@ -186,6 +200,8 @@ class pluglist {
 
                                        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')){
@@ -251,6 +267,19 @@ class pluglist {
        {
                global $class_mapping;
 
+    /* Check if class_location.inc has changed, this is the case 
+        if we have installed or removed plugins. 
+     */
+    if(!session::is_set("class_location.inc:timestamp")){
+      $tmp = stat("../include/class_location.inc");
+      session::set("class_location.inc:timestamp",$tmp['mtime']);
+    }else{
+      $tmp = stat("../include/class_location.inc");
+      if($tmp['mtime'] != session::get("class_location.inc:timestamp")){
+        $this->iconmenu = "";
+      }
+    }
+
                if ($this->iconmenu == ""){
                        $cfg= $this->config->data['MENU'];
 
@@ -377,6 +406,15 @@ class pluglist {
                 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]));
+  }
 }
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>