From fe24c27185efa6d702c87fc08eb1722b95eef39f Mon Sep 17 00:00:00 2001
From: Laurent Giovannoni <laurent.giovannoni@maarch.org>
Date: Fri, 6 Apr 2012 12:24:59 +0000
Subject: [PATCH] evo: link

---
 core/trunk/core/class/LinkController.php | 283 +++++++++++++++++++++++
 core/trunk/structure.sql                 | 167 +++++++------
 2 files changed, 376 insertions(+), 74 deletions(-)
 create mode 100755 core/trunk/core/class/LinkController.php

diff --git a/core/trunk/core/class/LinkController.php b/core/trunk/core/class/LinkController.php
new file mode 100755
index 00000000000..4f2e6ca8076
--- /dev/null
+++ b/core/trunk/core/class/LinkController.php
@@ -0,0 +1,283 @@
+<?php
+/*
+*    Copyright 2008,2009,2010 Maarch
+*
+*  This file is part of Maarch Framework.
+*
+*   Maarch Framework is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+*
+*   Maarch Framework is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU General Public License for more details.
+*
+*   You should have received a copy of the GNU General Public License
+*    along with Maarch Framework.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+* @brief  Contains the LinkController Class
+*
+*
+* @file
+* @author Arnaud Veber
+* @date $date$
+* @version $Revision$
+* @ingroup core
+*/
+
+//Loads the require class
+try {
+    //require_once('core/class/class_functions.php');
+    require_once('core/class/class_db.php');
+    require_once('core/class/class_history.php');
+} catch (Exception $e) {
+    echo $e->getMessage() . ' // ';
+}
+
+class LinkController
+{
+    private $previousId = ' ';
+
+    public function formatMap($arrayToFormat)
+    {
+        $return = '';
+
+        foreach ($arrayToFormat as $key => $value) {
+            $infos = $this->getDocInfos($key, $_SESSION['current_basket']['coll_id']);
+            $return .= '<div id="ged_'.$key.'" class="linkDiv">';
+                $return .= '<table>';
+                    $return .= '<tr>';
+                        $return .= '<td>';
+                            $return .= '<a href="index.php?display=true&dir=indexing_searching&page=view_resource_controler&id=' . $key . '" target="_blank">';
+                                $return .= '<img src="static.php?filename=picto_dld.gif">';
+                            $return .= '</a>';
+                        $return .= '</td>';
+                        $return .= '<td>';
+                            $return .= '<a href="index.php?page=details&dir=indexing_searching&id='.$key.'">';
+                                $return .= '<h2><b>' . $key . '</b></h2>';
+                            $return .= '</a>';
+                        $return .= '</td>';
+                        $return .= '<td class="barreLinks" width="2">';
+                            //$return .= '&nbsp;';
+                        $return .= '</td>';
+                        $return .= '<td align="center">';
+                            $return .= '<b>';
+                            /*if ($infos['category_id'] == 'incoming') {
+                                $return .= 'Entrant';
+                            } else {
+                                $return .= 'Sortant';
+                            }*/
+                            $return .= $_SESSION['mail_categories'][$infos['category_id']];
+                            $return .= '</b>';
+                        $return .= '</td>';
+                        $return .= '<td class="barreLinks" width="2">';
+                            //$return .= '&nbsp;';
+                        $return .= '</td>';
+                        $return .= '<td align="center">';
+                            $return .= '<b>';
+                                $date = explode('-', substr($infos['doc_date'], 0, 10));
+                                $return .= $date[2].' '.$date[1].' '.$date[0];
+                            $return .= '</b>';
+                        $return .= '</td>';
+                        $return .= '<td class="barreLinks" width="2">';
+                            //$return .= '&nbsp;';
+                        $return .= '</td>';
+                        $return .= '<td align="center">';
+                            $return .= '<a href="index.php?display=true&dir=indexing_searching&page=view_resource_controler&id=' . $key . '" target="_blank">';
+                                $return .= '<b>'.$infos['subject'].'</b>';
+                            $return .= '</a>';
+                        $return .= '</td>';
+                        $return .= '<td class="barreLinks" width="2">';
+                            //$return .= '&nbsp;';
+                        $return .= '</td>';
+                        $return .= '<td align="center">';
+                            $return .= '<b>';
+                                $return .= $infos['entity_label'].' ('.$infos['destination'].')';
+                            $return .= '</b>';
+                        $return .= '</td>';
+                        $return .= '<td class="barreLinks" width="2">';
+                            //$return .= '&nbsp;';
+                        $return .= '</td>';
+                        $return .= '<td align="center">';
+                            $return .= '<b>';
+                            $status = $this->getStatus($infos['status']);
+                                $return .= $status;
+                            $return .= '</b>';
+                        $return .= '</td>';
+                    $return .= '</tr>';
+                $return .= '</table>';
+                    if (is_array($value)) {
+                        $return .= $this->formatMap($value);
+                    }
+            $return .= '</div>';
+        }
+
+        return $return;
+    }
+
+    public function getMap($parentId, $collection, $sens)
+    {
+        if (!empty($parentId) && !empty($collection)) {
+            if ($sens == 'asc') {
+                $links = $this->getLinksAsc($parentId, $collection);
+            } else {
+                $links = $this->getLinksDesc($parentId, $collection);
+            }
+            $linksArray = explode('||', $links);
+
+            for ($i=0; $i<count($linksArray); $i++) {
+                if ($linksArray[$i] != '' ) {
+                    if (!preg_match("/".' ' . $linksArray[$i] . ' '."/", $this->previousId)) {
+                        $this->previousId .= $parentId . ' ';
+                        //echo $this->previousId . '<br />';
+                        $return[$linksArray[$i]] = $this->getMap($linksArray[$i], $collection, $sens);
+                    }
+                } else {
+                    $return = 'last';
+                }
+            }
+        }
+
+        return $return;
+    }
+
+    private function getLinks($parentId, $collection)
+    {
+        $db = new dbquery;
+        $db->connect();
+        $query = "SELECT res_child FROM res_linked WHERE coll_id='" . $collection . "' AND res_parent=" . $parentId;
+        $result = $db->query($query);
+        if ($result) {
+            $i = 0;
+            $links = '';
+            while ($row = pg_fetch_assoc($result)) {
+                $links .= $row['res_child'].'||';
+                $i++;
+            }
+            if ($i > 0) {
+                $return = substr($links, 0, -2);
+            }
+        } else {
+            $return = 'Problème lors de la requête : '.$query;
+        }
+
+        return $return;
+    }
+
+    private function getLinksDesc($parentId, $collection)
+    {
+        $db = new dbquery;
+        $db->connect();
+        $query = "SELECT res_child FROM res_linked WHERE coll_id='" . $collection . "' AND res_parent=" . $parentId;
+        $result = $db->query($query);
+        if ($result) {
+            $i = 0;
+            $links = '';
+            while ($row = pg_fetch_assoc($result)) {
+                $links .= $row['res_child'].'||';
+                $i++;
+            }
+            if ($i > 0) {
+                $return = substr($links, 0, -2);
+            }
+        } else {
+            $return = 'Problème lors de la requête : '.$query;
+        }
+
+        return $return;
+    }
+
+    private function getLinksAsc($parentId, $collection)
+    {
+        $db = new dbquery;
+        $db->connect();
+        $query = "SELECT res_parent FROM res_linked WHERE coll_id='" . $collection . "' AND res_child=" . $parentId;
+        $result = $db->query($query);
+        if ($result) {
+            $i = 0;
+            $links = '';
+            while ($row = pg_fetch_assoc($result)) {
+                $links .= $row['res_parent'].'||';
+                $i++;
+            }
+            if ($i > 0) {
+                $return = substr($links, 0, -2);
+            }
+        } else {
+            $return = 'Problème lors de la requête : '.$query;
+        }
+
+        return $return;
+    }
+
+    private function getDocInfos($id, $collection)
+    {
+        if ($collection = 'letterbox_coll') {
+            $vue = 'res_view_letterbox';
+        } else {
+            $vue = '';
+        }
+        $db = new dbquery;
+        $db->connect();
+        $query = "SELECT * FROM ".$vue." WHERE res_id = ".$id;
+        $result = $db->query($query);
+        if ($result) {
+            $i = 0;
+            while ($row = pg_fetch_assoc($result)) {
+                $return = $row;
+                $i++;
+            }
+        }
+
+        return $return;
+    }
+
+    public function getStatus($status)
+    {
+        $db = new dbquery;
+        $db->connect();
+        $query = "SELECT label_status FROM status WHERE id = '" . $status . "'";
+        $result = $db->query($query);
+        if ($result) {
+            $i = 0;
+            while ($row = pg_fetch_assoc($result)) {
+                $return = $row['label_status'];
+                $i++;
+            }
+        }
+
+        return $return;
+    }
+
+    public function nbDirectLink($id, $collection, $sens)
+    {
+        $i = 0;
+        $db = new dbquery;
+        $db->connect();
+        if ($sens == 'desc' || $sens == 'all') {
+            $query = "SELECT res_child FROM res_linked WHERE coll_id='" . $collection . "' AND res_parent=" . $id;
+            $result = $db->query($query);
+            if ($result) {
+                while ($row = pg_fetch_assoc($result)) {
+                    $i++;
+                }
+            }
+        }
+
+        if ($sens == 'asc' || $sens == 'all') {
+            $query = "SELECT res_parent FROM res_linked WHERE coll_id='" . $collection . "' AND res_child=" . $id;
+            $result = $db->query($query);
+            if ($result) {
+                while ($row = pg_fetch_assoc($result)) {
+                    $i++;
+                }
+            }
+        }
+
+        return $i;
+    }
+}
diff --git a/core/trunk/structure.sql b/core/trunk/structure.sql
index 0ff8149b92d..3e0bb93c6dc 100644
--- a/core/trunk/structure.sql
+++ b/core/trunk/structure.sql
@@ -1100,55 +1100,55 @@ WITH (
 
 CREATE TABLE lc_policies
 (
-   policy_id character varying(32) NOT NULL, 
+   policy_id character varying(32) NOT NULL,
    policy_name character varying(255) NOT NULL,
    policy_desc character varying(255) NOT NULL,
    CONSTRAINT lc_policies_pkey PRIMARY KEY (policy_id)
-) 
+)
 WITH (OIDS = FALSE);
 
 
 CREATE TABLE lc_cycles
 (
    policy_id character varying(32) NOT NULL,
-   cycle_id character varying(32) NOT NULL, 
+   cycle_id character varying(32) NOT NULL,
    cycle_desc character varying(255) NOT NULL,
    sequence_number integer NOT NULL,
-   where_clause text, 
+   where_clause text,
    break_key character varying(255) DEFAULT NULL,
-   validation_mode character varying(32) NOT NULL, 
+   validation_mode character varying(32) NOT NULL,
    CONSTRAINT lc_cycle_pkey PRIMARY KEY (policy_id, cycle_id)
-) 
+)
 WITH (OIDS = FALSE);
 
 CREATE TABLE lc_cycle_steps
 (
    policy_id character varying(32) NOT NULL,
-   cycle_id character varying(32) NOT NULL, 
-   cycle_step_id character varying(32) NOT NULL, 
+   cycle_id character varying(32) NOT NULL,
+   cycle_step_id character varying(32) NOT NULL,
    cycle_step_desc character varying(255) NOT NULL,
    docserver_type_id character varying(32) NOT NULL,
    is_allow_failure character(1) NOT NULL DEFAULT 'N'::bpchar,
    step_operation character varying(32) NOT NULL,
    sequence_number integer NOT NULL,
    is_must_complete character(1) NOT NULL DEFAULT 'N'::bpchar,
-   preprocess_script character varying(255) DEFAULT NULL, 
+   preprocess_script character varying(255) DEFAULT NULL,
    postprocess_script character varying(255) DEFAULT NULL,
    CONSTRAINT lc_cycle_steps_pkey PRIMARY KEY (policy_id, cycle_id, cycle_step_id, docserver_type_id)
-) 
+)
 WITH (OIDS = FALSE);
 
 CREATE TABLE lc_stack
 (
    policy_id character varying(32) NOT NULL,
-   cycle_id character varying(32) NOT NULL, 
-   cycle_step_id character varying(32) NOT NULL, 
+   cycle_id character varying(32) NOT NULL,
+   cycle_step_id character varying(32) NOT NULL,
    coll_id character varying(32) NOT NULL,
-   res_id bigint NOT NULL, 
-   cnt_retry integer DEFAULT NULL, 
+   res_id bigint NOT NULL,
+   cnt_retry integer DEFAULT NULL,
    status character(1) NOT NULL,
    CONSTRAINT lc_stack_pkey PRIMARY KEY (policy_id, cycle_id, cycle_step_id, res_id)
-) 
+)
 WITH (OIDS = FALSE);
 
 
@@ -1792,6 +1792,25 @@ CREATE TABLE res_letterbox
 )
 WITH (OIDS=FALSE);
 
+CREATE SEQUENCE res_linked_mlb_seq
+  INCREMENT 1
+  MINVALUE 1
+  MAXVALUE 9223372036854775807
+  START 171
+  CACHE 1;
+
+CREATE TABLE res_linked
+(
+  id bigint NOT NULL DEFAULT nextval('res_linked_mlb_seq'::regclass),
+  res_parent bigint NOT NULL,
+  res_child bigint NOT NULL,
+  coll_id character varying(50) NOT NULL,
+  CONSTRAINT res_linked_primary PRIMARY KEY (id)
+)
+WITH (
+  OIDS=FALSE
+);
+
 CREATE TABLE mlb_coll_ext (
   res_id bigint NOT NULL,
   category_id character varying(50)  NOT NULL,
@@ -1861,82 +1880,82 @@ CREATE OR REPLACE VIEW res_view AS
  -- WHERE r.type_id = d.type_id AND d.doctypes_first_level_id = dfl.doctypes_first_level_id AND d.doctypes_second_level_id = dsl.doctypes_second_level_id;
 
 CREATE VIEW res_view_letterbox AS
-    SELECT r.tablename, r.is_multi_docservers, r.res_id, r.type_id, 
-    d.description AS type_label, d.doctypes_first_level_id, 
+    SELECT r.tablename, r.is_multi_docservers, r.res_id, r.type_id,
+    d.description AS type_label, d.doctypes_first_level_id,
     dfl.doctypes_first_level_label, dfl.css_style as doctype_first_level_style,
-    d.doctypes_second_level_id, dsl.doctypes_second_level_label, 
-    dsl.css_style as doctype_second_level_style, r.format, r.typist, 
-    r.creation_date, r.relation, r.docserver_id, r.folders_system_id, 
-    f.folder_id, f.is_frozen as folder_is_frozen, r.path, r.filename, r.fingerprint, r.offset_doc, r.filesize, 
-    r.status, r.work_batch, r.arbatch_id, r.arbox_id, r.page_count, r.is_paper, 
+    d.doctypes_second_level_id, dsl.doctypes_second_level_label,
+    dsl.css_style as doctype_second_level_style, r.format, r.typist,
+    r.creation_date, r.relation, r.docserver_id, r.folders_system_id,
+    f.folder_id, f.is_frozen as folder_is_frozen, r.path, r.filename, r.fingerprint, r.offset_doc, r.filesize,
+    r.status, r.work_batch, r.arbatch_id, r.arbox_id, r.page_count, r.is_paper,
     r.doc_date, r.scan_date, r.scan_user, r.scan_location, r.scan_wkstation,
-    r.scan_batch, r.doc_language, r.description, r.source, r.author, 
-    r.custom_t1 AS doc_custom_t1, r.custom_t2 AS doc_custom_t2, 
-    r.custom_t3 AS doc_custom_t3, r.custom_t4 AS doc_custom_t4, 
+    r.scan_batch, r.doc_language, r.description, r.source, r.author,
+    r.custom_t1 AS doc_custom_t1, r.custom_t2 AS doc_custom_t2,
+    r.custom_t3 AS doc_custom_t3, r.custom_t4 AS doc_custom_t4,
     r.custom_t5 AS doc_custom_t5, r.custom_t6 AS doc_custom_t6,
-    r.custom_t7 AS doc_custom_t7, r.custom_t8 AS doc_custom_t8, 
-    r.custom_t9 AS doc_custom_t9, r.custom_t10 AS doc_custom_t10, 
-    r.custom_t11 AS doc_custom_t11, r.custom_t12 AS doc_custom_t12, 
-    r.custom_t13 AS doc_custom_t13, r.custom_t14 AS doc_custom_t14, 
+    r.custom_t7 AS doc_custom_t7, r.custom_t8 AS doc_custom_t8,
+    r.custom_t9 AS doc_custom_t9, r.custom_t10 AS doc_custom_t10,
+    r.custom_t11 AS doc_custom_t11, r.custom_t12 AS doc_custom_t12,
+    r.custom_t13 AS doc_custom_t13, r.custom_t14 AS doc_custom_t14,
     r.custom_t15 AS doc_custom_t15, r.custom_d1 AS doc_custom_d1,
     r.custom_d2 AS doc_custom_d2, r.custom_d3 AS doc_custom_d3,
-    r.custom_d4 AS doc_custom_d4, r.custom_d5 AS doc_custom_d5, 
-    r.custom_d6 AS doc_custom_d6, r.custom_d7 AS doc_custom_d7, 
-    r.custom_d8 AS doc_custom_d8, r.custom_d9 AS doc_custom_d9, 
+    r.custom_d4 AS doc_custom_d4, r.custom_d5 AS doc_custom_d5,
+    r.custom_d6 AS doc_custom_d6, r.custom_d7 AS doc_custom_d7,
+    r.custom_d8 AS doc_custom_d8, r.custom_d9 AS doc_custom_d9,
     r.custom_d10 AS doc_custom_d10, r.custom_n1 AS doc_custom_n1,
-    r.custom_n2 AS doc_custom_n2, r.custom_n3 AS doc_custom_n3, 
-    r.custom_n4 AS doc_custom_n4, r.custom_n5 AS doc_custom_n5, 
-    r.custom_f1 AS doc_custom_f1, r.custom_f2 AS doc_custom_f2, 
-    r.custom_f3 AS doc_custom_f3, r.custom_f4 AS doc_custom_f4, 
-    r.custom_f5 AS doc_custom_f5, f.foldertype_id, ft.foldertype_label, 
-    f.custom_t1 AS fold_custom_t1, f.custom_t2 AS fold_custom_t2, 
+    r.custom_n2 AS doc_custom_n2, r.custom_n3 AS doc_custom_n3,
+    r.custom_n4 AS doc_custom_n4, r.custom_n5 AS doc_custom_n5,
+    r.custom_f1 AS doc_custom_f1, r.custom_f2 AS doc_custom_f2,
+    r.custom_f3 AS doc_custom_f3, r.custom_f4 AS doc_custom_f4,
+    r.custom_f5 AS doc_custom_f5, f.foldertype_id, ft.foldertype_label,
+    f.custom_t1 AS fold_custom_t1, f.custom_t2 AS fold_custom_t2,
     f.custom_t3 AS fold_custom_t3, f.custom_t4 AS fold_custom_t4,
-    f.custom_t5 AS fold_custom_t5, f.custom_t6 AS fold_custom_t6, 
-    f.custom_t7 AS fold_custom_t7, f.custom_t8 AS fold_custom_t8, 
-    f.custom_t9 AS fold_custom_t9, f.custom_t10 AS fold_custom_t10, 
+    f.custom_t5 AS fold_custom_t5, f.custom_t6 AS fold_custom_t6,
+    f.custom_t7 AS fold_custom_t7, f.custom_t8 AS fold_custom_t8,
+    f.custom_t9 AS fold_custom_t9, f.custom_t10 AS fold_custom_t10,
     f.custom_t11 AS fold_custom_t11, f.custom_t12 AS fold_custom_t12,
-    f.custom_t13 AS fold_custom_t13, f.custom_t14 AS fold_custom_t14, 
-    f.custom_t15 AS fold_custom_t15, f.custom_d1 AS fold_custom_d1, 
-    f.custom_d2 AS fold_custom_d2, f.custom_d3 AS fold_custom_d3, 
-    f.custom_d4 AS fold_custom_d4, f.custom_d5 AS fold_custom_d5, 
-    f.custom_d6 AS fold_custom_d6, f.custom_d7 AS fold_custom_d7, 
-    f.custom_d8 AS fold_custom_d8, f.custom_d9 AS fold_custom_d9, 
-    f.custom_d10 AS fold_custom_d10, f.custom_n1 AS fold_custom_n1, 
+    f.custom_t13 AS fold_custom_t13, f.custom_t14 AS fold_custom_t14,
+    f.custom_t15 AS fold_custom_t15, f.custom_d1 AS fold_custom_d1,
+    f.custom_d2 AS fold_custom_d2, f.custom_d3 AS fold_custom_d3,
+    f.custom_d4 AS fold_custom_d4, f.custom_d5 AS fold_custom_d5,
+    f.custom_d6 AS fold_custom_d6, f.custom_d7 AS fold_custom_d7,
+    f.custom_d8 AS fold_custom_d8, f.custom_d9 AS fold_custom_d9,
+    f.custom_d10 AS fold_custom_d10, f.custom_n1 AS fold_custom_n1,
     f.custom_n2 AS fold_custom_n2, f.custom_n3 AS fold_custom_n3,
     f.custom_n4 AS fold_custom_n4, f.custom_n5 AS fold_custom_n5,
-    f.custom_f1 AS fold_custom_f1, f.custom_f2 AS fold_custom_f2, 
-    f.custom_f3 AS fold_custom_f3, f.custom_f4 AS fold_custom_f4, 
-    f.custom_f5 AS fold_custom_f5, f.is_complete AS fold_complete, 
+    f.custom_f1 AS fold_custom_f1, f.custom_f2 AS fold_custom_f2,
+    f.custom_f3 AS fold_custom_f3, f.custom_f4 AS fold_custom_f4,
+    f.custom_f5 AS fold_custom_f5, f.is_complete AS fold_complete,
     f.status AS fold_status, f.subject AS fold_subject,
-    f.parent_id AS fold_parent_id, f.folder_level, f.folder_name, 
-    f.creation_date AS fold_creation_date, r.initiator, r.destination, 
-    r.dest_user, mlb.category_id, mlb.exp_contact_id, mlb.exp_user_id, 
-    mlb.dest_user_id, mlb.dest_contact_id, mlb.nature_id, mlb.alt_identifier, 
+    f.parent_id AS fold_parent_id, f.folder_level, f.folder_name,
+    f.creation_date AS fold_creation_date, r.initiator, r.destination,
+    r.dest_user, mlb.category_id, mlb.exp_contact_id, mlb.exp_user_id,
+    mlb.dest_user_id, mlb.dest_contact_id, mlb.nature_id, mlb.alt_identifier,
     mlb.admission_date, mlb.answer_type_bitmask, mlb.other_answer_desc,
-    mlb.process_limit_date, mlb.closing_date, mlb.alarm1_date, mlb.alarm2_date, 
+    mlb.process_limit_date, mlb.closing_date, mlb.alarm1_date, mlb.alarm2_date,
     mlb.flag_notif, mlb.flag_alarm1, mlb.flag_alarm2, r.video_user, r.video_time,
     r.video_batch, r.subject, r.identifier, r.title, r.priority, mlb.process_notes,
-    ca.case_id, ca.case_label, ca.case_description, en.entity_label, 
-    cont.firstname AS contact_firstname, cont.lastname AS contact_lastname, 
+    ca.case_id, ca.case_label, ca.case_description, en.entity_label,
+    cont.firstname AS contact_firstname, cont.lastname AS contact_lastname,
     cont.society AS contact_society, u.lastname AS user_lastname,
     u.firstname AS user_firstname, list.item_id AS dest_user_from_listinstance,
-    r.is_frozen as res_is_frozen 
+    r.is_frozen as res_is_frozen
     FROM doctypes d, doctypes_first_level dfl, doctypes_second_level dsl,
-    ((((((((((ar_batch a RIGHT JOIN res_letterbox r ON ((r.arbatch_id = a.arbatch_id))) 
-    LEFT JOIN entities en ON (((r.destination)::text = (en.entity_id)::text))) 
-    LEFT JOIN folders f ON ((r.folders_system_id = f.folders_system_id))) 
+    ((((((((((ar_batch a RIGHT JOIN res_letterbox r ON ((r.arbatch_id = a.arbatch_id)))
+    LEFT JOIN entities en ON (((r.destination)::text = (en.entity_id)::text)))
+    LEFT JOIN folders f ON ((r.folders_system_id = f.folders_system_id)))
     LEFT JOIN cases_res cr ON ((r.res_id = cr.res_id)))
-    LEFT JOIN mlb_coll_ext mlb ON ((mlb.res_id = r.res_id))) 
+    LEFT JOIN mlb_coll_ext mlb ON ((mlb.res_id = r.res_id)))
     LEFT JOIN foldertypes ft ON (((f.foldertype_id = ft.foldertype_id)
         AND ((f.status)::text <> 'DEL'::text))))
-    LEFT JOIN cases ca ON ((cr.case_id = ca.case_id))) 
-    LEFT JOIN contacts cont ON (((mlb.exp_contact_id = cont.contact_id) 
-        OR (mlb.dest_contact_id = cont.contact_id)))) 
-    LEFT JOIN users u ON ((((mlb.exp_user_id)::text = (u.user_id)::text) 
-        OR ((mlb.dest_user_id)::text = (u.user_id)::text)))) 
+    LEFT JOIN cases ca ON ((cr.case_id = ca.case_id)))
+    LEFT JOIN contacts cont ON (((mlb.exp_contact_id = cont.contact_id)
+        OR (mlb.dest_contact_id = cont.contact_id))))
+    LEFT JOIN users u ON ((((mlb.exp_user_id)::text = (u.user_id)::text)
+        OR ((mlb.dest_user_id)::text = (u.user_id)::text))))
     LEFT JOIN listinstance list ON (((r.res_id = list.res_id)
         AND ((list.item_mode)::text = 'dest'::text))))
-    WHERE (((r.type_id = d.type_id) AND 
+    WHERE (((r.type_id = d.type_id) AND
     (d.doctypes_first_level_id = dfl.doctypes_first_level_id))
     AND (d.doctypes_second_level_id = dsl.doctypes_second_level_id));
 CREATE OR REPLACE VIEW res_view_apa AS
@@ -1985,15 +2004,15 @@ CREATE OR REPLACE VIEW af_view_customer_target_view AS
    FROM af_view_customer_target af ;
 
 -- Views for postindexing
- CREATE OR REPLACE VIEW view_folders AS 
+ CREATE OR REPLACE VIEW view_folders AS
  SELECT folders.folders_system_id, folders.folder_id, folders.foldertype_id, foldertypes.foldertype_label, (folders.folder_id::text || ' - '::text) || folders.folder_name::text AS folder_full_label, folders.parent_id, folders.folder_name, folders.subject, folders.description, folders.author, folders.typist, folders.status, folders.folder_level, folders.creation_date, folders.folder_out_id, folders.custom_t1, folders.custom_n1, folders.custom_f1, folders.custom_d1, folders.custom_t2, folders.custom_n2, folders.custom_f2, folders.custom_d2, folders.custom_t3, folders.custom_n3, folders.custom_f3, folders.custom_d3, folders.custom_t4, folders.custom_n4, folders.custom_f4, folders.custom_d4, folders.custom_t5, folders.custom_n5, folders.custom_f5, folders.custom_d5, folders.custom_t6, folders.custom_d6, folders.custom_t7, folders.custom_d7, folders.custom_t8, folders.custom_d8, folders.custom_t9, folders.custom_d9, folders.custom_t10, folders.custom_d10, folders.custom_t11, folders.custom_d11, folders.custom_t12, folders.custom_d12, folders.custom_t13, folders.custom_d13, folders.custom_t14, folders.custom_d14, folders.custom_t15, folders.is_complete, folders.is_folder_out, folders.last_modified_date, count(res_view_letterbox.folders_system_id) AS count_document, folders.video_status
    FROM foldertypes, folders
    LEFT JOIN res_view_letterbox ON res_view_letterbox.folders_system_id = folders.folders_system_id
   WHERE folders.foldertype_id = foldertypes.foldertype_id
   GROUP BY folders.folders_system_id, folders.folder_id, folders.foldertype_id, foldertypes.foldertype_label, folder_full_label, folders.parent_id, folders.folder_name, folders.subject, folders.description, folders.author, folders.typist, folders.status, folders.folder_level, folders.creation_date, folders.folder_out_id, folders.custom_t1, folders.custom_n1, folders.custom_f1, folders.custom_d1, folders.custom_t2, folders.custom_n2, folders.custom_f2, folders.custom_d2, folders.custom_t3, folders.custom_n3, folders.custom_f3, folders.custom_d3, folders.custom_t4, folders.custom_n4, folders.custom_f4, folders.custom_d4, folders.custom_t5, folders.custom_n5, folders.custom_f5, folders.custom_d5, folders.custom_t6, folders.custom_d6, folders.custom_t7, folders.custom_d7, folders.custom_t8, folders.custom_d8, folders.custom_t9, folders.custom_d9, folders.custom_t10, folders.custom_d10, folders.custom_t11, folders.custom_d11, folders.custom_t12, folders.custom_d12, folders.custom_t13, folders.custom_d13, folders.custom_t14, folders.custom_d14, folders.custom_t15, folders.is_complete, folders.is_folder_out, folders.last_modified_date, folders.video_status;
 
-  
-  CREATE OR REPLACE VIEW view_postindexing AS 
+
+  CREATE OR REPLACE VIEW view_postindexing AS
  SELECT res_view_letterbox.video_user, (users.firstname::text || ' '::text) || users.lastname::text AS user_name, res_view_letterbox.video_batch, res_view_letterbox.video_time, count(res_view_letterbox.res_id) AS count_documents, res_view_letterbox.folders_system_id, (folders.folder_id::text || ' / '::text) || folders.folder_name::text AS folder_full_label, folders.video_status
    FROM res_view_letterbox
    LEFT JOIN users ON res_view_letterbox.video_user::text = users.user_id::text
@@ -2001,7 +2020,7 @@ CREATE OR REPLACE VIEW af_view_customer_target_view AS
   WHERE res_view_letterbox.video_batch IS NOT NULL
   GROUP BY res_view_letterbox.video_user, (users.firstname::text || ' '::text) || users.lastname::text, res_view_letterbox.video_batch, res_view_letterbox.video_time, res_view_letterbox.folders_system_id, (folders.folder_id::text || ' / '::text) || folders.folder_name::text, folders.video_status;
 
-  
+
 CREATE TABLE groupbasket_status
 (
   system_id serial NOT NULL,
@@ -2015,4 +2034,4 @@ WITH (
   OIDS=FALSE
 );
 ALTER TABLE groupbasket_status OWNER TO postgres;
-   
+
-- 
GitLab