From cc7ef05991bb1e520041fb41f776c8e4e9c82ec9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Mon, 19 Jun 2017 16:18:17 +0200
Subject: [PATCH] Fixes #5625 Add a flag to force a tabClass to bypass ACLs

---
 include/simpleplugin/class_simplePlugin.inc | 3 +++
 include/simpleplugin/class_simpleTabs.inc   | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index 6af36cad0..a09f7317b 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -942,6 +942,9 @@ class simplePlugin
   /*! \brief Get the acl permissions for an attribute or the plugin itself */
   function aclGetPermissions($attribute = '0', $base = NULL, $skipWrite = FALSE)
   {
+    if (isset($this->parent) && isset($this->parent->ignoreAcls) && $this->parent->ignoreAcls) {
+      return 'cdmr'.($skipWrite ? '' : 'w');
+    }
     $ui         = get_userinfo();
     $skipWrite  |= $this->readOnly();
     if ($base === NULL) {
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index eac23ff64..02bd7bf91 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -49,6 +49,8 @@ class simpleTabs
 
   var $baseclass = "";
 
+  public $ignoreAcls = FALSE;
+
   /*!
    * \brief Tabs classes constructor
    * */
@@ -512,6 +514,11 @@ class simpleTabs
     unset($obj);
   }
 
+  public function setIgnoreAcls($bool)
+  {
+    $this->ignoreAcls = $bool;
+  }
+
   public function dialogOpened ()
   {
     return $this->by_object[$this->current]->is_modal_dialog();
-- 
GitLab