From 3ff35db789defe5f5afc8cf543d10034f0b68323 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 27 Jun 2018 15:25:16 +0200
Subject: [PATCH] :ambulance: fix(core) Fix objects::ls fetch of
 fdTemplateField and Properties column for templates

issue #5135
---
 include/class_objects.inc                     | 19 +++++++++++++++++++
 .../columns/class_PropertiesColumn.inc        |  2 +-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/include/class_objects.inc b/include/class_objects.inc
index 6614ef860..030679039 100644
--- a/include/class_objects.inc
+++ b/include/class_objects.inc
@@ -100,6 +100,9 @@ class objects
 
     if (is_array($attrs)) {
       $search_attrs = array_keys($attrs);
+      if ($templateSearch) {
+        $search_attrs[] = 'fdTemplateField';
+      }
     } else {
       $search_attrs = array($attrs);
     }
@@ -142,6 +145,22 @@ class objects
             }
           }
         }
+        if ($templateSearch) {
+          $result[$key]['fdTemplateField'] = array();
+          foreach ($fetched_attrs['fdTemplateField'] as $templateField) {
+            $attr = explode(':', $templateField, 2)[0];
+            if (isset($attrs[$attr])) {
+              if (isset($attrsAcls[$attr]) &&
+                  (strpos($ui->get_permissions($key, $attrsAcls[$attr][0], $attrsAcls[$attr][1]), 'r') === FALSE)) {
+                continue;
+              }
+              $result[$key]['fdTemplateField'][] = $templateField;
+            }
+          }
+          if (empty($result[$key]['fdTemplateField'])) {
+            unset($result[$key]['fdTemplateField']);
+          }
+        }
         if (count($result[$key]) === 0) {
           unset($result[$key]);
         }
diff --git a/include/management/columns/class_PropertiesColumn.inc b/include/management/columns/class_PropertiesColumn.inc
index c07b3d11a..f16f14fe0 100644
--- a/include/management/columns/class_PropertiesColumn.inc
+++ b/include/management/columns/class_PropertiesColumn.inc
@@ -126,7 +126,7 @@ class PropertiesColumn extends Column
       } else {
         $attrs = $entry;
       }
-      foreach ($this->tabs[$entry->type] as $class) {
+      foreach ($this->tabs[$entry->getTemplatedType()] as $class) {
         $status = $class::isAccount($attrs);
         if ($status !== FALSE) {
           $pInfos = pluglist::pluginInfos($class);
-- 
GitLab