From 27d9ae0fcb6725241dfa405ab8471ce29e1d1591 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Wed, 18 Jul 2018 10:05:08 +0000
Subject: [PATCH] FIX #8150 [dest_to_copy_during_redirect] dest was not put in
 copy if there is no copy

---
 modules/entities/redirect.php | 42 +++++++++++++++++++++--------------
 1 file changed, 25 insertions(+), 17 deletions(-)

diff --git a/modules/entities/redirect.php b/modules/entities/redirect.php
index 26cc4a2b65e..e8cfb687cc4 100755
--- a/modules/entities/redirect.php
+++ b/modules/entities/redirect.php
@@ -429,35 +429,43 @@ function manage_form($arr_id, $history, $id_action, $label_action, $status, $col
 
             $old_dest = $stmt->fetchObject();
             
-            if ($old_dest && isset($new_difflist['copy']['users'])) {
+            if ($old_dest) {
                 // try to find old dest in copies already
                 $found = false;
-                for ($ci=0; $ci<count($new_difflist['copy']['users']);$ci++) {
+                if (isset($new_difflist['copy']['users'])) {
+                    for ($ci=0; $ci<count($new_difflist['copy']['users']);$ci++) {
                     
-                    // If in copies before, add number of views as dest to number of views as copy
-                    if ($new_difflist['copy']['users'][$ci]['user_id'] == $old_dest->item_id) {
-                        $found = true;
-                        $new_difflist['copy']['users'][$ci]['viewed'] = $new_difflist['copy']['users'][$ci]['viewed'] + (integer)$old_dest->viewed;
-                        break;
+                        // If in copies before, add number of views as dest to number of views as copy
+    			if ($new_difflist['copy']['users'][$ci]['user_id'] == $old_dest->item_id) {
+                            $found = true;
+                            $new_difflist['copy']['users'][$ci]['viewed'] = 
+                                $new_difflist['copy']['users'][$ci]['viewed'] + (integer)$old_dest->viewed;
+                            break;
+                        }
                     }
-                }
                 
-                //re-built session without dest in copy
-                $tab=array();
-                for ($ci=0; $ci<count($new_difflist['copy']['users']);$ci++) {
-                    if ($new_difflist['copy']['users'][$ci]['user_id'] != $new_dest) {
+                    //re-built session without dest in copy
+                    $tab=array();
+                    for ($ci=0; $ci<count($new_difflist['copy']['users']);$ci++) {
+                        if ($new_difflist['copy']['users'][$ci]['user_id'] != $new_dest) {
                         array_push(
                             $tab, 
                             array(
-                                'user_id' => $new_difflist['copy']['users'][$ci]['user_id'], 
-                                'viewed' => (integer)$new_difflist['copy']['users'][$ci]['viewed'],
-                                'visible' => 'Y',
-                                'difflist_type' => $new_difflist['copy']['users'][$ci]['viewed']
+    					'user_id' => $new_difflist['copy']['users'][$ci]['user_id'], 
+    					'viewed' => (integer)$new_difflist['copy']['users'][$ci]['viewed'],
+    					'visible' => 'Y',
+    					'difflist_type' => $new_difflist['copy']['users'][$ci]['viewed']
                             )
                         );
+                        }
+                    }
+                    $new_difflist['copy']['users']=$tab;
+                } else {
+                    if (!isset($new_difflist['copy'])) {
+                        $new_difflist['copy'] = array();
                     }
+                    $new_difflist['copy']['users'] = array();
                 }
-                $new_difflist['copy']['users']=$tab;
                 
                 if (!$found) {
                     array_push(
-- 
GitLab