· 7 years ago · Sep 05, 2018, 11:42 AM
1<?php
2
3/* * *********************************************************
4 file.move.managment.class.php
5 Product : DAM
6 Version : 1.0
7 Release : APPVER
8 Date Created : Thu Jul 07 12:33:23 EEST 2011
9 Developed By : Mohamad Mantach PHP Department Layout Intl
10 All Rights Reserved , Layout Intl COPYRIGHT 2011
11
12 Page Description :
13 {Enter page description Here}
14 * ********************************************************* */
15
16class FileMoveManagment_2 extends request
17{
18
19 /**
20 * Class Constructor
21 *
22 * @return FileMoveManagment
23 */
24 function FileMoveManagment_2()
25 {
26
27 }
28
29 /**
30 * Get GetFilesMoveData
31 *
32 * @param unknown_type $query_more
33 */
34 function GetFilesMoveData( $query_more = "" )
35 {
36 global $strings, $MY_DBH, $row, $databaseType, $tableCollab;
37
38 parent::PrepareQuery();
39
40 $this->query_sql .= ' FROM ' . $tableCollab["file_move_managment"] . ' fmm ';
41
42 $count = count( $this->query_joins_array );
43
44 for ( $index = 0; $index < $count; $index++ )
45 {
46 switch ($this->query_joins_array[$index])
47 {
48 default:
49 break;
50 }
51 }
52
53 $this->query_sql .= $query_more;
54
55 parent::GetSql();
56 }
57
58 /**
59 * Fill move files data
60 *
61 */
62 function FillMoveManagementData( $process_type , $process )
63 {
64 $this->members_array = array('fmm.fmm_id', 'fmm.fmm_new_dir_id', 'fmm.fmm_new_dir_path', 'fmm.fmm_new_sl_id', 'fmm.fmm_sf_id', 'fmm.fmm_sf_old_path', 'fmm.fmm_new_sf_name', 'fmm.fmm_old_sf_name', 'fmm.fmm_old_sl_id', 'fmm.fmm_user_id', 'fmm.fmm_action', 'fmm.fmm_new_status_id', 'fmm.fmm_new_collection', 'fmm.fmm_is_dir', 'fmm.fmm_same_folder_structure');
65 if( strlen( trim( $process_type ) ) > 0 && strlen( trim( $process ) ) > 0 && strpos($process_type, "p") !== FALSE )
66 {
67 $mod = $process_type[1];
68 $query_cond = " WHERE fmm.fmm_sf_id % " . $mod . " ='" . (Int)( $process - 1 ) . "'" ;
69 }
70 else
71 {
72 $query_cond = "";
73 }
74 $this->GetFilesMoveData( $query_more );
75 }
76
77 /**
78 * Fill ids
79 *
80 */
81 function FillSLIDS()
82 {
83 $storage_manager_obj = new StorageManager();
84 $storage_manager_obj->members_array = array("sl.sl_id", "sl.sl_path", "sl.sl_file_handler_method", "sl.sl_volume");
85 $query_more = "";
86 $storage_manager_obj->GetStorageLocations( $query_more );
87
88 for ( $i = 0; $i < $storage_manager_obj->count; $i++ )
89 {
90 $this->SetSLPaths( $storage_manager_obj->data["sl_sl_path"][$i], $storage_manager_obj->data["sl_sl_id"][$i] );
91 $this->SetSLVolumes( $storage_manager_obj->data["sl_sl_volume"][$i], $storage_manager_obj->data["sl_sl_id"][$i] );
92 $this->SetMoveMethod( $storage_manager_obj->data["sl_sl_file_handler_method"][$i], $storage_manager_obj->data["sl_sl_id"][$i] );
93 $this->SetCopyMethod( $storage_manager_obj->data["sl_sl_file_handler_method"][$i], $storage_manager_obj->data["sl_sl_id"][$i] );
94 }
95 }
96
97 /**
98 * Set SL Paths
99 *
100 * @param Int $row_date
101 */
102 function SetSLPaths( $sl_path, $sl_id )
103 {
104 $this->sl_paths[$sl_id] = $sl_path;
105 }
106
107 /**
108 * Set SL Volumes
109 *
110 * @param Int $row_date
111 */
112 function SetSLVolumes( $sl_volume, $sl_id )
113 {
114 $this->sl_volumes[$sl_id] = $sl_volume;
115 }
116
117 /**
118 * Set Move Method
119 *
120 * @param Int $row_date
121 */
122 function SetMoveMethod( $sl_move_method, $sl_id )
123 {
124 $this->sl_move_method[$sl_id] = $sl_move_method;
125 }
126
127 /**
128 * Set Move Method
129 *
130 * @param Int $row_date
131 */
132 function SetCopyMethod( $sl_copy_method, $sl_id )
133 {
134 $this->sl_copy_method[$sl_id] = $sl_copy_method;
135 }
136
137 /**
138 * Get SL Paths
139 *
140 * @return Int
141 */
142 function GetSLPaths()
143 {
144 return $this->sl_paths;
145 }
146
147 /**
148 * Get SL Volumes
149 *
150 * @return Int
151 */
152 function GetSLVolumes()
153 {
154 return $this->sl_volumes;
155 }
156
157 /**
158 * SavetmpData in database in the middle table
159 *
160 * @param array $params_array
161 */
162 public static function ManageCopyMoveDataAtRunTime( $params_array )
163 {
164 global $tableCollab;
165
166 $file_logs_obj = new FileLogs();
167 $folder_permission_obj = new FolderPermission();
168 //use $slash_or_not to add a slashe after file name if it was not empty
169 $slash_or_not = "/";
170 $results_array = array();
171 $new_filemanager_obj = new FileManager();
172 $storage_manager_obj = new StorageManager();
173
174 $action = ( $params_array['action'] == 1 ? 'copy' : 'move' );
175
176 $storage_manager_obj->members_array = array("sl.sl_id", "sl.sl_name", "sl.sl_path", "sl.sl_volume");
177 $query_more = "";
178 $storage_manager_obj->GetStorageLocations( $query_more );
179
180 for ( $i = 0; $i < $storage_manager_obj->count; $i++ )
181 {
182 $sl_names[$storage_manager_obj->data["sl_sl_id"][$i]] = $storage_manager_obj->data["sl_sl_name"][$i];
183 $sl_paths[$storage_manager_obj->data["sl_sl_id"][$i]] = $storage_manager_obj->data["sl_sl_path"][$i];
184 $sl_volumes[$storage_manager_obj->data["sl_sl_id"][$i]] = $storage_manager_obj->data["sl_sl_volume"][$i];
185 }
186
187 if ( $params_array['new_dir_id'] == "" )
188 {
189 $query_more = " WHERE sf.sf_path = './' and sf.sf_name='' ";
190 $slash_or_not = "";
191 }
192 else
193 {
194 $query_more = " WHERE sf.sf_id = '" . $params_array['new_dir_id'] . "' ";
195 }
196
197 $new_filemanager_obj->members_array = array("sf.sf_id", "sf.sf_path", "sf.sf_name", "sf.sf_is_dir", "sf.sf_type", "sf.sf_disable_file", "sf.fk_sl_id", "sf.sf_size", "sf.sf_is_preview", "sf.sf_modification_date", "sf.sf_creation_date");
198 $new_filemanager_obj->GetFiles( $query_more );
199
200 $params_array['new_dir_id'] = $new_filemanager_obj->data["sf_sf_id"][0];
201 $new_sl_id = isset( $params_array['new_sl_id'] ) && ( $params_array['new_sl_id'] > 0 ) ? $params_array['new_sl_id'] : $new_filemanager_obj->data["sf_fk_sl_id"][0];
202 $params_array['new_sl_id'] = $new_sl_id;
203 $files_array = explode( ",", $params_array["selected_files"] );
204 $list_filemanager_obj = new FileManager();
205
206 if ( ($params_array['selected_files']) != "" )
207 {
208 $query_more = "WHERE sf.sf_id IN(" . $params_array['selected_files'] . ")";
209 $list_filemanager_obj->members_array = array("sf.sf_id", "sf.sf_path", "sf.sf_name", "sf.sf_is_dir", "sf.sf_type", "sf.fk_sl_id", "sf.sf_size", "sf.sf_is_preview", "sf.sf_modification_date", "sf.sf_disable_file", "sf.sf_creation_date", "sf.sf_parent_id");
210 $list_filemanager_obj->GetFiles( $query_more );
211 }
212 else
213 {
214 $list_filemanager_obj->count = 0;
215 }
216
217 for ( $i = 0; $i < $list_filemanager_obj->count; $i++ )
218 {
219 {// Logs
220 $log_message = 'Copy move: ' . ( $params_array['action'] == 1 ? 'copy' : 'move' ) . ' ' . ( $list_filemanager_obj->data['sf_sf_is_dir'][$i] == '1' ? 'folder' : 'file' ) . ' id -> ' . $list_filemanager_obj->data['sf_sf_id'][$i] . ';'; // we dont want to log it, just initialize it and concatenate with results later then log it
221 $text_log_message = 'Copy move: ' . ( $params_array['action'] == 1 ? 'copy' : 'move' ) . ' ' . ( $list_filemanager_obj->data['sf_sf_is_dir'][$i] == '1' ? 'folder' : 'file' ) . ' id -> ' . $list_filemanager_obj->data['sf_sf_id'][$i] . ';';
222 $logs_params_array = array(
223 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
224 'log_message' => '', // we dont want to log it, just initialize it and concatenate with results later then log it
225 'text_log_message' => $text_log_message,
226 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
227 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
228 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
229 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
230 'screen_log_message' => ''
231 );
232 PrintHelper::ManageMaintenanceLogs($logs_params_array);
233 }
234
235 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['sf_id'] = $list_filemanager_obj->data['sf_sf_id'][$i];
236
237 if ( $params_array['skip_permissions'] != 1 )
238 {
239 $folder_permissions_source = FolderPermission::GetUserFolderPermissions( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i], $list_filemanager_obj->data["sf_fk_sl_id"][$i] );
240 $folder_permissions_destination = FolderPermission::GetUserFolderPermissions( $new_filemanager_obj->data["sf_sf_path"][0] . $new_filemanager_obj->data["sf_sf_name"][0], $new_filemanager_obj->data["sf_fk_sl_id"][0] );
241
242 $can_access = 1;
243
244 if( $action == "copy" )
245 {
246
247 if( $folder_permissions_source->copy_from == 0 || $folder_permissions_destination->copy_to == 0 )
248 {
249 $can_access = 0;
250 }
251 }
252 else
253 {
254 if( $folder_permissions_source->move_from == 0 || $folder_permissions_destination->move_to == 0 )
255 {
256 $can_access = 0;
257 }
258 }
259
260 if ( $can_access == 0 )
261 {
262 {// Logs
263 $log_message .= 'ERROR: no permission;';
264 $text_log_message = 'ERROR: no permission;';
265 $screen_log_message = '';
266 $logs_params_array = array(
267 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
268 'log_message' => $log_message,
269 'text_log_message' => $text_log_message,
270 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
271 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
272 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
273 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
274 'screen_log_message' => $screen_log_message
275 );
276 PrintHelper::ManageMaintenanceLogs($logs_params_array);
277 }
278
279 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 6;
280 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['msg'] = "";
281
282 continue;
283 }
284 }
285
286 $full_path = DirectoryHelper::ConvertSLPathFromRelativeToFull( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i], $sl_paths[$list_filemanager_obj->data["sf_fk_sl_id"][$i]] );
287
288 if ( $list_filemanager_obj->data["sf_sf_disable_file"][$i] == 1 )
289 {
290 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 3;
291 continue;
292 }
293
294 if ( $params_array["same_folder"] == 0 )
295 {
296 $new_dir_path = addslashes( $new_filemanager_obj->data['sf_sf_path'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . $new_filemanager_obj->data['sf_sf_name'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . $slash_or_not );
297 $new_name = addslashes( $list_filemanager_obj->data['sf_sf_name'][$i] );
298 $new_dir_id = $params_array['new_dir_id'];
299 }
300 else
301 {
302 $new_dir_path = $list_filemanager_obj->data["sf_sf_path"][$i];
303 $new_name = addslashes( $list_filemanager_obj->data['sf_sf_name'][$i] );
304 $new_dir_id = 0;
305 }
306
307 if ( ( ( ( substr( $new_dir_path . $new_name, 0, strlen( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data['sf_sf_name'][$i] ) ) == $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data['sf_sf_name'][$i] ) && $list_filemanager_obj->data['sf_sf_is_dir'][$i] ) || ( $new_dir_path == $list_filemanager_obj->data["sf_sf_path"][$i] && !$list_filemanager_obj->data['sf_sf_is_dir'][$i] ) ) && $list_filemanager_obj->data["sf_fk_sl_id"][$i] == $params_array['new_sl_id'] )
308 {
309 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 7;
310 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['msg'] = $result_data['msg'];
311 continue;
312 }
313
314 $array_data = array();
315 $array_data['sf_id'] = $list_filemanager_obj->data["sf_sf_id"][$i];
316
317 $result_data = FileHelper::CheckFileFolderLocked( $array_data );
318
319// if ( $result_data['success'] == 1 )
320// {
321// $array_data = array();
322// $array_data['dir_path'] = $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i] . "/";
323// $array_data['sl_id'] = $list_filemanager_obj->data["sf_fk_sl_id"][$i];
324//
325// $result_data = FileHelper::CheckInverseFileFolderLocked( $array_data );
326// }
327
328 $array_data = array();
329 $array_data['sf_id'] = $new_dir_id;
330
331 $result_data_1 = FileHelper::CheckFileFolderLocked( $array_data );
332
333// if ( $result_data_1['success'] == 1 )
334// {
335// $array_data = array();
336// $array_data['dir_path'] = $new_dir_path;
337// $array_data['sl_id'] = $params_array['new_sl_id'];
338//
339// $result_data_1 = FileHelper::CheckInverseFileFolderLocked( $array_data );
340// }
341
342 if ( $result_data['success'] != 1 )
343 {
344 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 6;
345 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['msg'] = $result_data['msg'] . " (in source)";
346
347 {// Logs
348 $log_message .= 'ERROR: source locked;';
349 $text_log_message = 'ERROR: source locked;';
350 $screen_log_message = '';
351 $logs_params_array = array(
352 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
353 'log_message' => $log_message,
354 'text_log_message' => $text_log_message,
355 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
356 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
357 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
358 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
359 'screen_log_message' => $screen_log_message
360 );
361 PrintHelper::ManageMaintenanceLogs($logs_params_array);
362 }
363
364 continue;
365 }
366
367 if ( $result_data_1['success'] != 1 )
368 {
369 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 6;
370 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['msg'] = $result_data_1['msg'] . " (in destination)";
371
372 {// Logs
373 $log_message .= 'ERROR: destination locked;';
374 $text_log_message = 'ERROR: destination locked;';
375 $screen_log_message = '';
376 $logs_params_array = array(
377 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
378 'log_message' => $log_message,
379 'text_log_message' => $text_log_message,
380 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
381 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
382 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
383 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
384 'screen_log_message' => $screen_log_message
385 );
386 PrintHelper::ManageMaintenanceLogs($logs_params_array);
387 }
388
389 continue;
390 }
391
392 if ( $res['query_error'] == 0 && $params_array['action'] == 2 )
393 {
394 {// update disabled flag in system_file table
395 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_disable_file` = 1 WHERE `sf_id` ='" . $list_filemanager_obj->data["sf_sf_id"][$i] . "' OR ( sf_path LIKE '" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i] ) . "/" . "%' AND fk_sl_id='" . $list_filemanager_obj->data['sf_fk_sl_id'][$i] . "' )";
396 AdvancedConnectSql( $update_query );
397 }
398 }
399
400 {// Update lock status for parent and destination
401 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_is_locked` = 1 WHERE `sf_id` ='" . $list_filemanager_obj->data['sf_sf_parent_id'][$i] . "' OR `sf_id` = '" . $params_array['new_dir_id'] . "'";
402 AdvancedConnectSql( $update_query );
403 }
404
405 {// Actually copy/move files
406
407 $sf_id = $list_filemanager_obj->data['sf_sf_id'][$i];
408 $is_dir = $list_filemanager_obj->data['sf_sf_is_dir'][$i];
409 $sl_id = $list_filemanager_obj->data['sf_fk_sl_id'][$i];
410
411 $source = $list_filemanager_obj->data["sf_sf_path"][$i] . $new_name;
412 $full_path = ( $params_array['method'] == 'mac_script2' ) ? $sl_volumes[$sl_id] : $sl_paths[$sl_id];
413 $source = DirectoryHelper::ConvertSLPathFromRelativeToFull( $source, $full_path );
414 //$source = DirectoryHelper::EscapeMacPath($source);
415
416 $destination = $new_dir_path;
417 $destination .= ( ( $action == 'copy' && $params_array['method'] == 'mac_script2' ) ? $list_filemanager_obj->data['sf_sf_name'][$i] : '' );
418 $destination .= ( ( $action == 'copy' && $params_array['method'] == 'batch_scripts' && $is_dir == 1 ) ? $list_filemanager_obj->data['sf_sf_name'][$i] : '' );
419 $destination .= ( ( $action == 'move' && $params_array['method'] == 'batch_scripts' && $is_dir == 1 ) ? $list_filemanager_obj->data['sf_sf_name'][$i] : '' );
420 $full_path = ( $params_array['method'] == 'mac_script2' ) ? $sl_volumes[$new_sl_id] : $sl_paths[$new_sl_id];
421 $destination = DirectoryHelper::ConvertSLPathFromRelativeToFull( $destination, $full_path );
422 $destination = addslashes($destination);
423
424 $destination_temp = '';
425
426 $array_data = array();
427
428 $data_array = array(
429 "source" => stripslashes( stripslashes( $source ) ),
430 "destination" => stripslashes( stripslashes( $destination ) ),//TextHelper::ConvertFromWIN1256ToUTF8( $destination ),
431 "destination_temp" => stripslashes( stripslashes( $new_dir_path . $list_filemanager_obj->data['sf_sf_name'][$i] ) ), // will be used in move_folder to check if a folder with the same name already exists in the destination
432 "action" => $action,
433 "sf_id" => $sf_id,
434 "sl_id" => $sl_id,
435 "cms_array_data" => $array_data,
436 "user_id" => 0,
437 "is_dir" => $is_dir
438 );
439
440 if ( $params_array['method'] == 'mac_script2' )
441 {
442 $res = CheckOutManager::SendMacScriptRequest( $data_array );
443 }
444 else if ( $params_array['method'] == 'batch_scripts' )
445 {
446 $res = CheckOutManager::SendBatchScriptRequest( $data_array );
447 }
448 PrintHelper::WriteArrayToFile($res, "");
449 if ( $res['status'] == 0 ) // Error
450 {
451 if ( $params_array['action'] == 1 ) // Copy | Failure
452 {
453 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 5;
454 if ( !empty($res['msg']) )
455 {
456 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['message'] = $res['msg'];
457 }
458 }
459 else // Move | Failure
460 {
461 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 1;
462 if ( !empty($res['msg']) )
463 {
464 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['message'] = $res['msg'];
465 }
466 }
467
468 {// Remove disable flag
469 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_disable_file`=0 WHERE `sf_id` = '" . $list_filemanager_obj->data["sf_sf_id"][$i] . "' OR ( sf_path LIKE '" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i] ) . "/" . "%' AND fk_sl_id='" . $list_filemanager_obj->data['sf_fk_sl_id'][$i] . "' )";
470 AdvancedConnectSql( $update_query );
471 }
472
473 {// Remove lock flag for parent and destination
474 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_is_locked` = 0 WHERE `sf_id` = '" . $list_filemanager_obj->data['sf_sf_parent_id'][$i] . "' OR `sf_id` = '" . $params_array['new_dir_id'] . "'";
475 AdvancedConnectSql( $update_query );
476 }
477
478 {// Logs
479 $log_message .= 'ERROR: operation failed;';
480 $text_log_message = 'ERROR: operation failed;';
481 $screen_log_message = '';
482 $logs_params_array = array(
483 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
484 'log_message' => $log_message,
485 'text_log_message' => $text_log_message,
486 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
487 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
488 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
489 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
490 'screen_log_message' => $screen_log_message
491 );
492 PrintHelper::ManageMaintenanceLogs($logs_params_array);
493 }
494
495 }
496 else // Success
497 {
498 if ( $params_array['action'] == 1 ) // Copy | Success
499 {
500 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 4;
501 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['path'] = $new_dir_path;
502 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
503 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['dir_id'] = $new_dir_id;
504 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['sl_id'] = $new_sl_id;
505
506 if ( $is_dir )
507 {
508 $file_manager_obj = new FileManager();
509
510 $parent_id = $params_array['new_dir_id'];
511
512 if ( $params_array['same_folder'] == 1 )
513 {
514 $array_values = array();
515 $array_values['relative_dir_path'] = $new_dir_path;
516 $array_values['full_dir_path'] = $destination;
517 $array_values['sl_id'] = $sl_id;
518 $array_values['user_id'] = 0;
519 $results = DirectoryHelper::CreateFolders( $array_values );
520
521 $parent_id = $file_manager_obj->RetrieveDirIdFromPath( $new_dir_path, $sl_id );
522
523 if ( $results['error'] )
524 {
525 $result_array['is_error'] = 1;
526 $log_string = "error create folder " . $new_path_plus_name;
527 $result_array['err_msg'] = $log_string;
528
529 return $result_array;
530 }
531 }
532
533 $file_manager_obj = new FileManager();
534
535 {
536 $old_path_relative = $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data['sf_sf_name'][$i] . '/';
537 $old_path_relative = addslashes( $old_path_relative );
538
539 $order_by_fields[] = "sf.sf_id";
540 $query_more = " WHERE sf.sf_path LIKE '%" . $old_path_relative . "%' AND fk_sl_id='" . $sl_id . "'";
541
542 $file_manager_obj->members_array = array("sf.sf_id", "sf.sf_title", "sf.sf_path", "sf.sf_name", "sf.sf_is_dir", "sf.sf_preview_base_source", "sf.sf_type", "sf.sf_size", "sf.sf_preview_page", "sf.sf_archive_element", "sf.sf_archive_description", "sf.sf_modification_date", "sf.sf_parent_id", "sf.sf_is_preview", "sf.sf_checkout_by", "sf.sf_np_is_copied", "sf.fk_sl_id", "sf.sf_disable_file", "sf.sf_indexing_flag", "sf.sf_fk_i_status");
543 $file_manager_obj->GetFiles( $query_more, $order_by_fields );
544
545 $old_sf_ids = array();
546 $old_sf_ids["id"] = $file_manager_obj->data["sf_sf_id"];
547 $old_sf_ids["file_path"] = $file_manager_obj->data["sf_sf_path"];
548 $old_sf_ids["name"] = $file_manager_obj->data["sf_sf_name"];
549 }
550
551 $insert_query_1 = "INSERT INTO " . $tableCollab["system_files"] . "(`sf_path`, `sf_name`, `sf_type`, `sf_size`, `sf_is_dir`, `fk_sl_id`, `sf_title`, `sf_preview_base_source`, `sf_is_preview`, `sf_inserting_date`, `sf_modification_date`, `sf_creation_date`, `sf_preview_retries`, `sf_indexing_flag`, `sf_meta_data_types`, `sf_is_text_extracted`, `sf_version_id`, `sf_is_exif_extracted`, `sf_doc_uuid`, `sf_doc_instance_id`, `sf_color`, `sf_is_indexing_error`, `sf_created_by`, `sf_preview_page`, `sf_archive_element`, `sf_archive_description`, `sf_parent_id`, `sf_is_updated`, `sf_checkout_by`, `sf_np_is_copied`, `sf_auto_keywords`, `sf_flagged_as_deleted_date`, `sf_disable_file`, `sf_categories_group`, `sf_fk_i_status`, sf_insert_from) SELECT REPLACE(sf_path,'" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] ) . "','" . addslashes( $new_dir_path ) . "'), `sf_name`, `sf_type`, `sf_size`, `sf_is_dir`, " . $sl_id . ", `sf_title`, `sf_preview_base_source`, `sf_is_preview`, `sf_inserting_date`, `sf_modification_date`, `sf_creation_date`, `sf_preview_retries`, 1, `sf_meta_data_types`, `sf_is_text_extracted`, `sf_version_id`, `sf_is_exif_extracted`, `sf_doc_uuid`, `sf_doc_instance_id`, `sf_color`, `sf_is_indexing_error`, `sf_created_by`, `sf_preview_page`, `sf_archive_element`, `sf_archive_description`, $parent_id, `sf_is_updated`, `sf_checkout_by`, `sf_np_is_copied`, `sf_auto_keywords`, `sf_flagged_as_deleted_date`, `sf_disable_file`, `sf_categories_group`, `sf_fk_i_status`, 7 FROM " . $tableCollab["system_files"] . " WHERE `sf_id` = '" . $sf_id . "'";
552 $res1 = AdvancedConnectSql( $insert_query_1 );
553 $new_sf_id = $res1["last_id"];
554
555 {
556 $query_more = " WHERE sf.sf_path LIKE '%" . $destination . "%' AND fk_sl_id='" . $sl_id . "'";
557 $file_manager_obj->GetFiles( $query_more );
558
559 $new_sf_ids["id"] = $sf_id;
560 $new_sf_ids["name"] = $new_name;
561 $new_sf_ids["path"] = $list_filemanager_obj->data["sf_sf_path"][$i];
562 }
563
564 {
565 $get_path_and_name = URLHelper::GetPathAndNameFromPath( $new_dir_path );
566 $tmp_update_files = "UPDATE " . $tableCollab["system_files"] . " SET sf_indexing_flag=1, sf_disable_file=0 WHERE ( ( sf_path LIKE '" . $new_dir_path . "%' ) OR ( sf_path = '" . $get_path_and_name['path'] . "' AND sf_name='" . $get_path_and_name['name'] . "' AND fk_sl_id='" . $sl_id . "' ) )";
567 $res = AdvancedConnectSql( $tmp_update_files );
568 }
569
570 self::DuplicateCategories( $new_sf_ids, $old_sf_ids );
571
572 $file_manager_obj = null;
573 unset( $file_manager_obj );
574
575 $new_sf_ids = null;
576 unset( $new_sf_ids );
577
578 $old_sf_ids = null;
579 unset( $old_sf_ids );
580 }
581 else
582 {// create file
583
584 $full_dir_path = DirectoryHelper::ConvertSLPathFromRelativeToFull( $new_dir_path, $sl_volumes[$list_filemanager_obj->data['sf_fk_sl_id'][$i]] );
585
586 if( is_numeric( $new_dir_id ) && $new_dir_id > 0 )
587 {
588 $file_info = array();
589 $file_info['dir_path'] = $new_dir_path;
590 $file_info['full_dir_path'] = $full_dir_path;
591 $file_info['file_name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
592 $file_info['sl_id'] = $new_sl_id;
593 $file_info['dir_id'] = $new_dir_id;
594 $file_info['metadata'] = "";
595 $file_info['querys_permissions'] = "";
596 $file_info['user_id'] = SessionHelper::GetUserFullName();
597 $file_info['new_status_id'] = 0;
598 $file_info['new_collection_id'] = 0;
599 $file_info['coming_from'] = 15;
600
601 $file_manager_obj = new FileManager();
602 $action_result = $file_manager_obj->CreateFile( $file_info, 0 );
603 }
604 else
605 {
606 DirectoryHelper::FlagLastExistFolderForIndexing( $new_dir_path, $new_sl_id );
607 }
608
609 FileManager::ResetExifExtractedFlag(array( $action_result['file_id'] ));
610
611 $new_sf_id = $action_result['file_id'];
612
613 $file_id = $action_result['file_id'];
614 $error = $action_result['error'];
615
616 // if file created successfuly
617 if ( !$error )
618 {
619 $result_array['is_error'] = 0;
620 // update folder counter
621 //DirectoryHelper::UpdateFolderCount( $new_dir_id );
622
623 {// relate files
624 $file_copy_obj = new FileRelated();
625 $query_more = " WHERE fk_sf_id='" . $list_filemanager_obj->data["sf_sf_id"][$i] . "'";
626 $file_copy_obj->members_array = array('sfrf.fk_scs_files_related_counter');
627 $file_copy_obj->GetFileRelatedData( $query_more );
628
629 if ( $file_copy_obj->count > 0 )
630 {
631 for ( $k = 0; $k < $file_copy_obj->count; $k++ )
632 {
633 $file_copy_obj->UpdateFilesRelated( $file_copy_obj->data["sfrf_fk_scs_files_related_counter"][$k], $file_id );
634 }
635 }
636 else
637 {
638 $query_more = "";
639 $file_copy_obj->members_array = array('sfrf.fk_scs_files_related_counter');
640 $file_copy_obj->GetFileRelatedData( $query_more );
641
642 $max_counter = max( $file_copy_obj->data['sfrf_fk_scs_files_related_counter'] );
643 $max_counter += 1;
644
645 $file_copy_obj->UpdateFilesRelated( $max_counter, $list_filemanager_obj->data["sf_sf_id"][$i] );
646 $file_copy_obj->UpdateFilesRelated( $max_counter, $file_id );
647 }
648
649 $new_sf_ids = array();
650 $new_sf_ids["id"][0] = $file_id;
651 $new_sf_ids["file_path"][0] = $new_dir_path;
652 $new_sf_ids["name"][0] = $list_filemanager_obj->data['sf_sf_name'][$i];
653
654 $old_sf_ids = array();
655 $old_sf_ids["id"][0] = $list_filemanager_obj->data["sf_sf_id"][$i];
656 $old_sf_ids["file_path"][0] = $list_filemanager_obj->data["sf_sf_path"][$i];
657 $old_sf_ids["name"][0] = $list_filemanager_obj->data["sf_sf_name"][$i];
658
659 self::DuplicateCategories( $new_sf_ids, $old_sf_ids );
660 }
661 }
662 }
663
664 {// Remove lock flag for parent and destination
665 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_is_locked` = 0 WHERE `sf_id` = '" . $list_filemanager_obj->data['sf_sf_parent_id'][$i] . "' OR `sf_id` = '" . $params_array['new_dir_id'] . "'";
666 AdvancedConnectSql( $update_query );
667 }
668
669 $extra_array = array();
670 $extra_array['sf_id'] = $list_filemanager_obj->data['sf_sf_id'][$i];
671 $extra_array['sf_path'] = $list_filemanager_obj->data["sf_sf_path"][$i];
672 $extra_array['sf_name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
673 $extra_array['is_dir'] = ( $list_filemanager_obj->data['sf_sf_is_dir'][$i] == 1 ? "Folder" : "File");
674 $extra_array['From'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( $list_filemanager_obj->data["sf_sf_path"][$i], $sl_names[$list_filemanager_obj->data['sf_fk_sl_id'][$i]] . "/" );
675 $extra_array['To'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( addslashes( $new_filemanager_obj->data['sf_sf_path'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . $new_filemanager_obj->data['sf_sf_name'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . "/" ), $sl_names[$params_array['new_sl_id']] . "/" );
676
677 $file_logs_obj->InsertLog( '', 24, $extra_array );
678
679 $extra_array = array();
680 $extra_array['sf_id'] = $new_sf_id;
681 $extra_array['sf_path'] = $new_dir_path;
682 $extra_array['sf_name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
683 $extra_array['is_dir'] = ( $list_filemanager_obj->data['sf_sf_is_dir'][$i] == 1 ? "Folder" : "File");
684 $extra_array['From'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( $list_filemanager_obj->data["sf_sf_path"][$i], $sl_names[$list_filemanager_obj->data['sf_fk_sl_id'][$i]] . "/" );
685 $extra_array['To'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( addslashes( $new_filemanager_obj->data['sf_sf_path'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . $new_filemanager_obj->data['sf_sf_name'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . "/" ), $sl_names[$params_array['new_sl_id']] . "/" );
686
687 $file_logs_obj->InsertLog( '', 24, $extra_array );
688 }
689 else // Move | Success
690 {
691 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['value'] = 0;
692 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['path'] = $new_dir_path;
693 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
694 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['dir_id'] = $new_dir_id;
695 $results_array[$list_filemanager_obj->data['sf_sf_name'][$i]]['sl_id'] = $new_sl_id;
696
697 {// Remove lock flag for parent and destination
698 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_is_locked` = 0 WHERE `sf_id` = '" . $list_filemanager_obj->data['sf_sf_parent_id'][$i] . "' OR `sf_id` = '" . $params_array['new_dir_id'] . "'";
699 AdvancedConnectSql( $update_query );
700 }
701
702 $extra_array = array();
703 $extra_array['sf_id'] = $list_filemanager_obj->data['sf_sf_id'][$i];
704 $extra_array['sl_id'] = $params_array['new_sl_id'];
705 $extra_array['sf_path'] = $list_filemanager_obj->data["sf_sf_path"][$i];
706 $extra_array['sf_name'] = $list_filemanager_obj->data['sf_sf_name'][$i];
707 $extra_array['is_dir'] = ( $list_filemanager_obj->data['sf_sf_is_dir'][$i] == 1 ? "Folder" : "File");
708 $extra_array['From'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( $list_filemanager_obj->data["sf_sf_path"][$i], $sl_names[$list_filemanager_obj->data['sf_fk_sl_id'][$i]] . "/" );
709 $extra_array['To'] = DirectoryHelper::ConvertSLPathFromRelativeToFull( addslashes( $new_filemanager_obj->data['sf_sf_path'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . $new_filemanager_obj->data['sf_sf_name'][array_search( $params_array['new_dir_id'], $new_filemanager_obj->data['sf_sf_id'] )] . "/" ), $sl_names[$params_array['new_sl_id']] . "/" );
710 $file_logs_obj->InsertLog( '', 23, $extra_array );
711 }
712
713 {// Query to reset file for the indexer
714 if ( $params_array['action'] == 1 ) // Copy
715 {
716 $update_system_file_1 = "
717 UPDATE " . $tableCollab["system_files"] . "
718 SET
719 sf_disable_file=0
720 WHERE sf_id='" . $sf_id . "'
721 OR ( sf_path LIKE '" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i] ) . "/" . "%' AND fk_sl_id='" . $list_filemanager_obj->data['sf_fk_sl_id'][$i] . "' )";
722
723 AdvancedConnectSql($update_system_file_1);
724
725 }
726 else // Move
727 {
728 {// Update folder
729 $update_system_file_1 = "
730 UPDATE " . $tableCollab["system_files"] . "
731 SET
732 sf_path='" . $new_dir_path . "',
733 fk_sl_id=" . $new_sl_id . ",
734 sf_disable_file=0,
735 sf_parent_id=" . $new_dir_id . "
736 WHERE sf_id='" . $sf_id . "'";
737
738 $update_folder_res = AdvancedConnectSql($update_system_file_1);
739 }
740
741 {// Update folder contents
742
743 $new_dir_path = stripslashes( $new_dir_path );
744 $new_dir_path = addslashes( $new_dir_path );
745
746 $update_system_file_2 = "
747 UPDATE " . $tableCollab["system_files"] . "
748 SET
749 sf_path= REPLACE( sf_path, '" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] ) . "', '" . $new_dir_path . "' ),
750 fk_sl_id=" . $new_sl_id . ",
751 sf_disable_file=0
752 WHERE ( sf_path LIKE '" . addslashes( $list_filemanager_obj->data["sf_sf_path"][$i] . $list_filemanager_obj->data["sf_sf_name"][$i] ) . "/" . "%' AND fk_sl_id='" . $list_filemanager_obj->data['sf_fk_sl_id'][$i] . "' )";
753
754 $update_folder_contents_res = AdvancedConnectSql($update_system_file_2);
755 }
756 }
757 }
758
759 {// Query to reset paths (old and new) for the indexer
760 $old_path_and_name = URLHelper::GetPathAndNameFromPath( $list_filemanager_obj->data["sf_sf_path"][$i] );
761
762 if ( $params_array["same_folder"] == 1 )
763 {
764 $new_paths_and_names = URLHelper::GetAllPathsAndNamesFromPath( $new_dir_path );
765 $new_path_cond = array();
766
767 for ( $k = 0; $k < count( $new_paths_and_names['path'] ); $k++ )
768 {
769 $new_path_cond[] = "( sf_path = '" . $new_paths_and_names['path'][$k] . "' AND sf_name='" . $new_paths_and_names['name'][$k] . "' AND fk_sl_id=" . $new_sl_id . " )";
770 }
771
772 $new_path_cond = implode( " OR ", $new_path_cond );
773 }
774 else
775 {
776 $new_path_and_name = URLHelper::GetPathAndNameFromPath( $new_dir_path );
777 $new_path_cond = "( sf_path = '" . addslashes( $new_path_and_name['path'] ) . "' AND sf_name='" . addslashes( $new_path_and_name['name'] ) . "' AND fk_sl_id=" . $new_sl_id . " )";
778 }
779
780 $new_path_and_name = URLHelper::GetPathAndNameFromPath( $new_dir_path );
781 $new_path_cond = "( sf_path = '" . addslashes( $new_path_and_name['path'] ) . "' AND sf_name='" . addslashes( $new_path_and_name['name'] ) . "' AND fk_sl_id=" . $new_sl_id . " )";
782
783 $update_system_file_2 = "
784 UPDATE " . $tableCollab["system_files"] . "
785 SET
786 sf_indexing_flag=1,
787 sf_disable_file=0
788 WHERE ( " . $new_path_cond . "
789 OR ( sf_path = '" . addslashes( $old_path_and_name['path'] ) . "'
790 AND sf_name='" . addslashes( $old_path_and_name['name'] ) . "'
791 AND fk_sl_id='" . $list_filemanager_obj->data['sf_fk_sl_id'][$i] . "' )
792 )";
793
794 AdvancedConnectSql($update_system_file_2);
795 }
796
797 {// Logs
798 $log_message .= 'success;';
799 $text_log_message = 'success;';
800 $screen_log_message = '';
801 $logs_params_array = array(
802 'm_type' => MaintenanceLogsManager::MM18_COPY_MOVE_MANAGER,
803 'log_message' => $log_message,
804 'text_log_message' => $text_log_message,
805 'sf_id' => $list_filemanager_obj->data["sf_sf_id"][$i],
806 'sl_id' => $list_filemanager_obj->data["sf_fk_sl_id"][$i],
807 'sf_path' => $list_filemanager_obj->data["sf_sf_path"][$i],
808 'sf_name' => $list_filemanager_obj->data["sf_sf_name"][$i],
809 'screen_log_message' => $screen_log_message
810 );
811 PrintHelper::ManageMaintenanceLogs($logs_params_array);
812 }
813
814 }
815
816 }
817
818 {// Remove lock flag for parent and destination
819 $update_query = " UPDATE " . $tableCollab["system_files"] . " SET `sf_is_locked` = 0 WHERE `sf_id` = '" . $list_filemanager_obj->data['sf_sf_parent_id'][$i] . "' OR `sf_id` = '" . $params_array['new_dir_id'] . "'";
820 AdvancedConnectSql( $update_query );
821 }
822 }
823 {/** unset objects variables */
824 $new_filemanager_obj = null;
825 unset( $new_filemanager_obj );
826 $list_filemanager_obj = null;
827 unset( $list_filemanager_obj );
828 }
829
830 return $results_array;
831 }
832
833 /**
834 * Set Log Folder Path
835 *
836 * @param Int $log_folder_path
837 */
838 function SetLogFolder( $log_folder_path )
839 {
840 $this->log_folder = $log_folder_path;
841 }
842
843 /**
844 * Get Log Folder Path
845 *
846 * @return String
847 */
848 function GetLogFolder()
849 {
850 return $this->log_folder;
851 }
852
853 /**
854 * Set Log File Name
855 *
856 * @param Int $log_file
857 */
858 function SetLogFile( $log_file )
859 {
860 $this->log_file = $log_file;
861 }
862
863 /**
864 * Get Log File Name
865 *
866 * @return String
867 */
868 function GetLogFile()
869 {
870 return $this->log_file;
871 }
872
873 public static function DuplicateCategories( $new_sf_ids, $old_sf_ids )
874 {
875 global $tableCollab, $config;
876
877 for ( $i = 0; $i < count( $old_sf_ids["id"] ); $i++ )
878 {
879 if( is_numeric( $new_sf_ids["id"][$i] ) && is_numeric( $old_sf_ids["id"][$i] ) )
880 {
881 $insert_query_1 = "INSERT IGNORE INTO " . $tableCollab["file_category_blocks_values"] . "(`fk_category_id`,`fcbv_value`, fk_sf_id ,`fcbv_meta_group_id`, fcbv_creation_date, fcbv_coming_from ) SELECT fk_category_id, `fcbv_value`, " . $new_sf_ids["id"][$i] . ", `fcbv_meta_group_id`, NOW(), 14 FROM " . $tableCollab["file_category_blocks_values"] . " WHERE `fk_sf_id` = '" . $old_sf_ids["id"][$i] . "'";
882 $res1 = AdvancedConnectSql( $insert_query_1 );
883 }
884
885 if ( !$res1['query_error'] )
886 {
887 //PrintHelper::printToCMD( " Copying meta data of " . $new_sf_ids["name"][$i] . " Success", 1 );
888 }
889 else
890 {
891 //PrintHelper::printToCMD( " Copying meta data of " . $old_sf_ids["name"][$i] . " failed", 1 );
892 }
893 }
894 }
895
896 /**
897 * Delete row from table move management
898 *
899 * @param unknown_type $fmm_id
900 */
901 function DeleteRowFromFileMoveManagment( $fmm_id )
902 {
903 global $tableCollab;
904
905 $delete_row = "DELETE FROM " . $tableCollab["file_move_managment"] . " WHERE fmm_id='" . $fmm_id . "'";
906 $res = AdvancedConnectSql( $delete_row );
907 }
908
909}
910
911?>