From bda1afe818b863d3581694b6a3e779e78f2dab2e Mon Sep 17 00:00:00 2001
From: "kevin.dezaphi" <kevin.dezaphi@maarch.org>
Date: Wed, 17 Oct 2018 17:47:12 +0200
Subject: [PATCH] FIX #8408 order by priorities defined by admin

---
 apps/maarch_entreprise/documents_list_copies.php      | 11 +++++++++--
 .../documents_list_with_attachments.php               |  8 ++++++++
 .../documents_list_mlb_search_adv.php                 |  3 +++
 modules/attachments/frame_list_attachments.php        |  3 +++
 modules/avis/documents_list_with_avis.php             | 10 +++++++++-
 modules/export_seda/export_seda_list.php              | 10 +++++++++-
 modules/visa/documents_list_with_signatory.php        | 10 +++++++++-
 7 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/apps/maarch_entreprise/documents_list_copies.php b/apps/maarch_entreprise/documents_list_copies.php
index 21110f8b88a..224a3135ccc 100755
--- a/apps/maarch_entreprise/documents_list_copies.php
+++ b/apps/maarch_entreprise/documents_list_copies.php
@@ -137,6 +137,10 @@ if (count($arr_order) == 1) {
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$order;
     } else {
         $orderstr = 'order by '.$order_field.' '.$order;
     }
@@ -144,6 +148,10 @@ if (!empty($order_field) && !empty($order)) {
 } elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
     if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
+    } else if ($_SESSION['save_list']['order_field']) {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
     } else {
         $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
     }
@@ -154,7 +162,6 @@ if (!empty($order_field) && !empty($order)) {
             $list->setOrder();
             $list->setOrderField($arr_order[0]);
         }
-        $orderstr = 'order by '.str_replace('alt_identifier', 'order_alphanum(alt_identifier)', $_SESSION['current_basket']['basket_res_order']);
         $_SESSION['last_order_basket'] = $_SESSION['current_basket']['basket_res_order'];
     } else {
         $list->setOrder();
@@ -169,7 +176,7 @@ if (isset($_REQUEST['lines'])) {
     $limit = 'default';
 }
 //Request
-$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, 'distinct', $_SESSION['save_list']['start']);
+$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, false, $_SESSION['save_list']['start']);
 
 $_SESSION['current_basket']['last_query'] = array();
 $_SESSION['current_basket']['last_query']['select'] = $select;
diff --git a/apps/maarch_entreprise/documents_list_with_attachments.php b/apps/maarch_entreprise/documents_list_with_attachments.php
index 7c44d7a2b70..e03355a8694 100755
--- a/apps/maarch_entreprise/documents_list_with_attachments.php
+++ b/apps/maarch_entreprise/documents_list_with_attachments.php
@@ -136,6 +136,10 @@ if (count($arr_order) == 1) {
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$order;
     } else {
         $orderstr = 'order by '.$order_field.' '.$order;
     }
@@ -143,6 +147,10 @@ if (!empty($order_field) && !empty($order)) {
 } elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
     if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
+    } else if ($_SESSION['save_list']['order_field']) {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
     } else {
         $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
     }
diff --git a/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php b/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php
index 349f68cc0d9..24435e9cbbb 100755
--- a/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php
+++ b/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php
@@ -308,6 +308,9 @@ if ($mode == 'normal') {
     if (!empty($order_field) && !empty($order)) {
         if ($_REQUEST['order_field'] == 'alt_identifier') {
             $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+        } else if ($_REQUEST['order_field'] == 'priority') {
+            $select['priorities'] = ['order', 'id'];
+            $orderstr = 'order by (select priorities.order from priorities where priorities.id = priority) '.$order;
         } else {
             $orderstr = 'order by '.$order_field.' '.$order;
         }
diff --git a/modules/attachments/frame_list_attachments.php b/modules/attachments/frame_list_attachments.php
index 9e2c04f3775..7357f432760 100755
--- a/modules/attachments/frame_list_attachments.php
+++ b/modules/attachments/frame_list_attachments.php
@@ -114,6 +114,9 @@ $order_field = $list->getOrderField();
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'identifier') {
         $orderstr = "order by order_alphanum(identifier)"." ".$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by (select priorities.order from priorities where priorities.id = priority) '.$order;
     } else {
         $orderstr = "order by ".$order_field." ".$order;
     }
diff --git a/modules/avis/documents_list_with_avis.php b/modules/avis/documents_list_with_avis.php
index e464468c008..4c8476c8274 100755
--- a/modules/avis/documents_list_with_avis.php
+++ b/modules/avis/documents_list_with_avis.php
@@ -132,6 +132,10 @@ $order_field = $list->getOrderField();
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$order;
     } else {
         $orderstr = 'order by '.$order_field.' '.$order;
     }
@@ -139,6 +143,10 @@ if (!empty($order_field) && !empty($order)) {
 } elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
     if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
+    } else if ($_SESSION['save_list']['order_field']) {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
     } else {
         $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
     }
@@ -155,7 +163,7 @@ if (isset($_REQUEST['lines'])) {
     $limit = 'default';
 }
 //Request
-$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, 'distinct', $_SESSION['save_list']['start']);
+$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, false, $_SESSION['save_list']['start']);
 
 //Templates
 $defaultTemplate = 'documents_list_with_avis';
diff --git a/modules/export_seda/export_seda_list.php b/modules/export_seda/export_seda_list.php
index 9c6abdd4676..2482657349c 100644
--- a/modules/export_seda/export_seda_list.php
+++ b/modules/export_seda/export_seda_list.php
@@ -137,6 +137,10 @@ $order_field = $list->getOrderField();
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$order;
     } else {
         $orderstr = 'order by '.$order_field.' '.$order;
     }
@@ -144,6 +148,10 @@ if (!empty($order_field) && !empty($order)) {
 } elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
     if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
+    } else if ($_SESSION['save_list']['order_field']) {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
     } else {
         $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
     }
@@ -156,7 +164,7 @@ if (!empty($order_field) && !empty($order)) {
 }
 
 //Request
-$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $_SESSION['config']['databasesearchlimit'], false, '', '', '', false, false, 'distinct');
+$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $_SESSION['config']['databasesearchlimit'], false, '', '', '', false, false, false);
 // $request->show(); exit;
 //Templates
 $defaultTemplate = 'documents_list_with_attachments';
diff --git a/modules/visa/documents_list_with_signatory.php b/modules/visa/documents_list_with_signatory.php
index 614d41b85f2..7fbb39f26d7 100755
--- a/modules/visa/documents_list_with_signatory.php
+++ b/modules/visa/documents_list_with_signatory.php
@@ -134,6 +134,10 @@ if (count($arr_order) == 1) {
 if (!empty($order_field) && !empty($order)) {
     if ($_REQUEST['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
+    } else if ($_REQUEST['order_field'] == 'priority') {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$order;
     } else {
         $orderstr = 'order by '.$order_field.' '.$order;
     }
@@ -141,6 +145,10 @@ if (!empty($order_field) && !empty($order)) {
 } elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
     if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
         $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
+    } else if ($_SESSION['save_list']['order_field']) {
+        $where .= ' and '.$table.'.priority = priorities.id';
+        $select['priorities'] = ['order', 'id'];
+        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
     } else {
         $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
     }
@@ -168,7 +176,7 @@ if (isset($_REQUEST['lines'])) {
 }
 
 //Request
-$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, 'distinct', $_SESSION['save_list']['start']);
+$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, false, $_SESSION['save_list']['start']);
 // $request->show(); exit;
 //Templates
 $defaultTemplate = 'documents_list_with_signatory';
-- 
GitLab