From aff1b48c4445715abc7b350a0cdb6f815e89bdd0 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 18 May 2017 13:34:25 +0100
Subject: [PATCH] FEAT #5543 add "only_detail" parameter in custom field

---
 .../class/class_types_Abstract.php            | 52 ++++++++++---------
 .../indexing_searching/change_doctype.php     | 10 +++-
 .../maarch_entreprise/xml/index_letterbox.xml |  1 +
 3 files changed, 37 insertions(+), 26 deletions(-)
 mode change 100644 => 100755 apps/maarch_entreprise/indexing_searching/change_doctype.php
 mode change 100644 => 100755 apps/maarch_entreprise/xml/index_letterbox.xml

diff --git a/apps/maarch_entreprise/class/class_types_Abstract.php b/apps/maarch_entreprise/class/class_types_Abstract.php
index 4f11da36062..37cae27a605 100644
--- a/apps/maarch_entreprise/class/class_types_Abstract.php
+++ b/apps/maarch_entreprise/class/class_types_Abstract.php
@@ -987,13 +987,14 @@ abstract class types_Abstract extends database
                         );
                     }
                     $indexes[$col] = array(
-                        'label' => $label,
-                        'type' => (string) $item->type,
-                        'img' => $img,
-                        'type_field' => 'select',
-                        'values' => $values,
+                        'label'         => $label,
+                        'type'          => (string) $item->type,
+                        'img'           => $img,
+                        'type_field'    => 'select',
+                        'values'        => $values,
                         'default_value' => $default,
-						'origin' => 'document'
+                        'origin'        => 'document',
+                        'only_detail'   => $item->only_detail
                     );
                 } else if (isset($item->table)) {
                     $values = array();
@@ -1024,39 +1025,40 @@ abstract class types_Abstract extends database
                          );
                     }
                     $indexes[$col] = array(
-                        'label' => $label,
-                        'type' => (string) $item->type,
-                        'img' => $img,
-                        'type_field' => 'select',
-                        'values' => $values,
+                        'label'         => $label,
+                        'type'          => (string) $item->type,
+                        'img'           => $img,
+                        'type_field'    => 'select',
+                        'values'        => $values,
                         'default_value' => $default,
-						'origin' => 'document'
+                        'origin'        => 'document',
+                        'only_detail'   => $item->only_detail
                     );
                 } else {
                     $indexes[$col] = array(
-                        'label' => $label,
-                        'type' => (string) $item->type,
-                        'img' => $img,
-                        'type_field' => 'input',
+                        'label'         => $label,
+                        'type'          => (string) $item->type,
+                        'img'           => $img,
+                        'type_field'    => 'input',
                         'default_value' => $default,
-						'origin' => 'document'
+                        'origin'        => 'document',
+                        'only_detail'   => $item->only_detail
                     );
                 }
             }
         }
-        //print_r($indexes);
+
         foreach(array_keys($indexes) as $key) {
             if (is_array($indexes[$key])) {
-                //print_r($indexes[$key]);
-                $indexes[$key]['label'] = functions::xssafe($indexes[$key]['label']);
-                $indexes[$key]['type'] = functions::xssafe($indexes[$key]['type']);
-                $indexes[$key]['img'] = functions::xssafe($indexes[$key]['img']);
-                $indexes[$key]['type_field'] = functions::xssafe($indexes[$key]['type_field']);
+                $indexes[$key]['label']         = functions::xssafe($indexes[$key]['label']);
+                $indexes[$key]['type']          = functions::xssafe($indexes[$key]['type']);
+                $indexes[$key]['img']           = functions::xssafe($indexes[$key]['img']);
+                $indexes[$key]['type_field']    = functions::xssafe($indexes[$key]['type_field']);
                 $indexes[$key]['default_value'] = functions::xssafe($indexes[$key]['default_value']);
-                $indexes[$key]['origin'] = functions::xssafe($indexes[$key]['origin']);
+                $indexes[$key]['origin']        = functions::xssafe($indexes[$key]['origin']);
+                $indexes[$key]['only_detail']   = functions::xssafe($indexes[$key]['only_detail']);
                 if (is_array($indexes[$key]['values'])) {
                     for ($cpt=0;$cpt<count($indexes[$key]['values']);$cpt++) {
-                        //print_r($indexes[$key]['values'][$cpt]);
                         $indexes[$key]['values'][$cpt]['id'] = functions::xssafe($indexes[$key]['values'][$cpt]['id']);
                         $indexes[$key]['values'][$cpt]['label'] = functions::xssafe($indexes[$key]['values'][$cpt]['label']);
                     }
diff --git a/apps/maarch_entreprise/indexing_searching/change_doctype.php b/apps/maarch_entreprise/indexing_searching/change_doctype.php
old mode 100644
new mode 100755
index af0260a1736..76aa218f92c
--- a/apps/maarch_entreprise/indexing_searching/change_doctype.php
+++ b/apps/maarch_entreprise/indexing_searching/change_doctype.php
@@ -98,7 +98,15 @@ if ($core->service_is_enabled('param_mlb_doctypes')) {
 }
 $mandatory_indexes = $type->get_mandatory_indexes($_REQUEST['type_id'], $coll_id);
 $indexes = $type->get_indexes($_REQUEST['type_id'], $coll_id);
-//var_dump($coll_id);exit;
+
+if(is_array($indexes)){
+    foreach ($indexes as $key => $value) {
+        if(filter_var($value['only_detail'], FILTER_VALIDATE_BOOLEAN)){
+            unset($indexes[$key]);
+        }
+    }
+}
+
 $opt_indexes = '';
 if (preg_match("/MSIE 6.0/", $_SERVER["HTTP_USER_AGENT"])) {
     $browser_ie = true;
diff --git a/apps/maarch_entreprise/xml/index_letterbox.xml b/apps/maarch_entreprise/xml/index_letterbox.xml
old mode 100644
new mode 100755
index 0869c49d739..ab4d19fcfe6
--- a/apps/maarch_entreprise/xml/index_letterbox.xml
+++ b/apps/maarch_entreprise/xml/index_letterbox.xml
@@ -13,6 +13,7 @@
             <where_clause>enabled = 'Y'</where_clause>
             <order>order by lastname</order>
         </table>
+        <only_detail>true</only_detail> <!-- if true, field appear only in detail page and research.  Display in all page otherwise.
         <default_value></default_value>
     </INDEX>
 -->
-- 
GitLab