From 3a91b04ee79dbc1a109a40cfc71d2b8daea9e3e8 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Wed, 8 Jul 2020 14:08:14 +0200
Subject: [PATCH] FEAT #14247 TIME 2:20 fix note notifications

---
 modules/notifications/diffusion_types/copy_list.php  | 12 ++++++------
 .../notifications/diffusion_types/dest_entity.php    |  4 ++--
 .../notifications/diffusion_types/dest_user_sign.php |  8 ++++----
 .../notifications/diffusion_types/dest_user_visa.php |  8 ++++----
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/modules/notifications/diffusion_types/copy_list.php b/modules/notifications/diffusion_types/copy_list.php
index 090675d0b48..818a99cd774 100755
--- a/modules/notifications/diffusion_types/copy_list.php
+++ b/modules/notifications/diffusion_types/copy_list.php
@@ -19,7 +19,7 @@ switch ($request) {
         $select = 'SELECT distinct us.*';
         $from = ' FROM listinstance li '
             .' JOIN users us ON li.item_id = us.user_id';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   AND li.item_mode = 'cc'"
+        $where = " WHERE li.item_mode = 'cc'"
             ." AND item_type='user_id'";
 
         $arrayPDO = array(':recordid' => $event->record_id);
@@ -27,7 +27,7 @@ switch ($request) {
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id'
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)'
                     .' AND ('
                         .' notes.id not in (SELECT DISTINCT note_id FROM note_entities) '
                         .' OR us.user_id IN (SELECT ue.user_id FROM note_entities ne JOIN users_entities ue ON ne.item_id = ue.entity_id WHERE ne.note_id = :recordid)'
@@ -66,13 +66,13 @@ switch ($request) {
         $from = ' FROM listinstance li '
             .' LEFT JOIN users_entities ue ON li.item_id = ue.entity_id '
             .' JOIN users us ON ue.user_id = us.user_id';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   AND li.item_mode = 'cc'"
+        $where = " WHERE li.item_mode = 'cc'"
             ." AND item_type='entity_id'";
 
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id'
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)'
                     .' AND ('
                         .' notes.id not in (SELECT DISTINCT note_id FROM note_entities) '
                         .' OR us.user_id IN (SELECT ue.user_id FROM note_entities ne JOIN users_entities ue ON ne.item_id = ue.entity_id WHERE ne.note_id = :recordid)'
@@ -112,12 +112,12 @@ switch ($request) {
         $arrayPDO = array(':recordid' => $event->record_id);
         $select = 'SELECT li.res_id';
         $from = ' FROM listinstance li';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   ";
+        $where = " WHERE (1=1) ";
 
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id';
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)';
                 break;
 
             case 'res_letterbox':
diff --git a/modules/notifications/diffusion_types/dest_entity.php b/modules/notifications/diffusion_types/dest_entity.php
index 36c0ba1e974..5bcb538240c 100755
--- a/modules/notifications/diffusion_types/dest_entity.php
+++ b/modules/notifications/diffusion_types/dest_entity.php
@@ -40,14 +40,14 @@ switch ($request) {
     case 'res_id':
         $select = 'SELECT li.res_id';
         $from = ' FROM listinstance li';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   ";
+        $where = " WHERE (1=1) ";
 
         $arrayPDO = array(':recordid' => $event->record_id);
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
                 $from .= ' JOIN res_letterbox lb ON lb.res_id = notes.identifier';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id';
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)';
                 if ($notification->diffusion_properties != '') {
                     $status_tab = explode(',', $notification->diffusion_properties);
                     // $status_str=implode("','",$status_tab);
diff --git a/modules/notifications/diffusion_types/dest_user_sign.php b/modules/notifications/diffusion_types/dest_user_sign.php
index 25a79fa3a20..aa19a64dda4 100755
--- a/modules/notifications/diffusion_types/dest_user_sign.php
+++ b/modules/notifications/diffusion_types/dest_user_sign.php
@@ -17,7 +17,7 @@ switch ($request) {
 
         $select = 'SELECT distinct us.*';
         $from = ' FROM listinstance li JOIN users us ON li.item_id = us.user_id';
-        $where = " WHERE li.coll_id = 'letterbox_coll' AND li.item_mode = 'sign' "
+        $where = " WHERE AND li.item_mode = 'sign' "
             .'and process_date IS NULL ';
 
         $arrayPDO = array(':recordid' => $event->record_id);
@@ -25,7 +25,7 @@ switch ($request) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
                 $from .= ' JOIN res_letterbox lb ON lb.res_id = notes.identifier';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id'
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)'
                     .' AND ('
                         .' notes.id not in (SELECT DISTINCT note_id FROM note_entities) '
                         .' OR us.user_id IN (SELECT ue.user_id FROM note_entities ne JOIN '
@@ -83,14 +83,14 @@ switch ($request) {
     case 'res_id':
         $select = 'SELECT li.res_id';
         $from = ' FROM listinstance li';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   ";
+        $where = " WHERE (1=1)   ";
 
         $arrayPDO = array(':recordid' => $event->record_id);
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
                 $from .= ' JOIN res_letterbox lb ON lb.res_id = notes.identifier';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id';
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)';
                 if ($notification->diffusion_properties != '') {
                     $status_tab = explode(',', $notification->diffusion_properties);
                     // $status_str=implode("','",$status_tab);
diff --git a/modules/notifications/diffusion_types/dest_user_visa.php b/modules/notifications/diffusion_types/dest_user_visa.php
index ed9271505ef..1612ba04b7e 100755
--- a/modules/notifications/diffusion_types/dest_user_visa.php
+++ b/modules/notifications/diffusion_types/dest_user_visa.php
@@ -17,7 +17,7 @@ switch ($request) {
 
         $select = 'SELECT distinct us.*';
         $from = ' FROM listinstance li JOIN users us ON li.item_id = us.user_id';
-        $where = " WHERE li.coll_id = 'letterbox_coll' AND li.item_mode = 'visa' "
+        $where = " WHERE li.item_mode = 'visa' "
             .'and process_date IS NULL ';
 
         $arrayPDO = array(':recordid' => $event->record_id);
@@ -25,7 +25,7 @@ switch ($request) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
                 $from .= ' JOIN res_letterbox lb ON lb.res_id = notes.identifier';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id'
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)'
                     .' AND ('
                         .' notes.id not in (SELECT DISTINCT note_id FROM note_entities) '
                         .' OR us.user_id IN (SELECT ue.user_id FROM note_entities ne JOIN '
@@ -83,14 +83,14 @@ switch ($request) {
     case 'res_id':
         $select = 'SELECT li.res_id';
         $from = ' FROM listinstance li';
-        $where = " WHERE li.coll_id = 'letterbox_coll'   ";
+        $where = " WHERE (1=1) ";
 
         $arrayPDO = array(':recordid' => $event->record_id);
         switch ($event->table_name) {
             case 'notes':
                 $from .= ' JOIN notes ON notes.identifier = li.res_id';
                 $from .= ' JOIN res_letterbox lb ON lb.res_id = notes.identifier';
-                $where .= ' AND notes.id = :recordid AND li.item_id != notes.user_id';
+                $where .= ' AND notes.id = :recordid AND li.item_id != (SELECT user_id FROM users WHERE id = notes.user_id)';
                 if ($notification->diffusion_properties != '') {
                     $status_tab = explode(',', $notification->diffusion_properties);
                     // $status_str=implode("','",$status_tab);
-- 
GitLab