www.jdownloads.com

0 Members and 1 Guest are viewing this topic.

*
Hello

(For jd3.9.7.2) The "Batch Move" on the backend doesn't seem to be moving the files to the target folder (the category ids for the downloads are being changed ok).

In administrator/components/com_jdownloads/models/download.php, method batchMove, there doesn't seem to be any code to move the files.

I assume batchMove _should_ be moving files (as it used to). I've applied an emergency patch (basically copying code from batchCopy), but haven't tested it carefully:

Code: [Select]
diff --git a/htdocs/administrator/components/com_jdownloads/models/download.php b/htdocs/administrator/components/com_jdownloads/models/download.php
index c66604df..18fc75fd 100644
--- a/htdocs/administrator/components/com_jdownloads/models/download.php
+++ b/htdocs/administrator/components/com_jdownloads/models/download.php
@@ -886,6 +886,14 @@ class jdownloadsModelDownload extends JModelAdmin
                     return false;
                 }
             }
+
+            // Build the file path from the Downloads target category
+            if ($categoryTable->cat_dir_parent != ''){
+                $target_path = $categoryTable->cat_dir_parent.'/'.$categoryTable->cat_dir;
+            } else {
+                $target_path = $categoryTable->cat_dir;
+            }
+
         }
 
         if (empty($categoryId)) {
@@ -923,6 +931,50 @@ class jdownloadsModelDownload extends JModelAdmin
                 }
             }
 
+            // Move file
+            $source_path = '';
+           
+            if ($categoryId > 1 && $table->url_download != ''){
+                $copy_filename       = $table->url_download;
+                $source_cat_id       = $table->catid;
+                $target_cat_id       = $categoryId;
+               
+                // We must only move when we have a different cat id.
+                if ($source_cat_id != $target_cat_id){
+         
+                    // Get the data from the source category
+                    $sourceCategoryTable = JTable::getInstance('category', 'jdownloadsTable');
+                    if (!$sourceCategoryTable->load($source_cat_id)){
+                        if ($error = $sourceCategoryTable->getError()){
+                            // Fatal error
+                            $this->setError($error);
+                            return false;
+                        } else {
+                            // Category not found
+                            $this->setError(JText::_('COM_JDOWNLOADS_BATCH_MOVE_ROW_NOT_FOUND'));
+                            return false;
+                        }
+                    }
+                   
+                    // Build the file path from the Downloads source category
+                    if ($sourceCategoryTable->cat_dir_parent != ''){
+                        $source_path = $sourceCategoryTable->cat_dir_parent.'/'.$sourceCategoryTable->cat_dir.'/'.$copy_filename;
+                    } else {
+                        $source_path = $sourceCategoryTable->cat_dir.'/'.$copy_filename;
+                    }
+                   
+                    if ($source_path && $target_path){
+                        if (!JFile::exists($params->get('files_uploaddir') . '/'. $source_path)){
+                            $this->setError(JText::sprintf('COM_JDOWNLOADS_BATCH_CANNOT_FIND_COPY_FILE', $source_path));
+                        }
+
+                        if (!JFile::move($params->get('files_uploaddir') . '/' . $source_path, $params->get('files_uploaddir') . '/' . $target_path.'/'.$copy_filename)){
+                            $this->setError(JText::sprintf('COM_JDOWNLOADS_BATCH_CANNOT_COPY_FILES', $source_path));
+                        }
+                    }
+                }   
+            }   
+
             // Set the new category ID
             $table->catid = $categoryId;

Thanks, David
« Last Edit: 20.12.2020 22:23:53 by Arno »
*
Re: Batch move not actually moving files
« Reply #1 on: 18.12.2020 22:24:16 »
DavidI confirm that the batch move does not move the actual files as it should do!! :(   It does create what appears to be Downloads in the target category.

For refererence a simple recovery is to delete the apparently moved Downloads from the target directory.  Then use the control panel to check the Download area for new files.  The missing files are still in the original directory so Downloads will be recreated.  This however will loose any other information in the original Download.
Colin





Colin M
*
Re: Batch move not actually moving files
« Reply #2 on: 19.12.2020 19:06:56 »
Hi,
okay I will fix it shortly.  :-[
Best Regards / Gruß
Arno
Please make a Donation for jDownloads and/or write a review on the Joomla! Extensions directory!
*
Re: Batch move not actually moving files
« Reply #3 on: 19.12.2020 19:51:09 »
Hi,
I hope I could fix it. Please test the unzipped file below and copy it to your jdownloads admin subfolder /models. Overwrite the old file.
Please post here your result. Thanks.
Best Regards / Gruß
Arno
Please make a Donation for jDownloads and/or write a review on the Joomla! Extensions directory!
*
Re: Batch move not actually moving files
« Reply #4 on: 20.12.2020 21:25:02 »
That looks ok, now. Thank you.

David
*
Re: Batch move not actually moving files - [Fixed in 3.9.8]
« Reply #5 on: 28.12.2020 11:19:16 »
Hi
Have also checked and all OK

Colin
Colin M