Alex Trofimov 9 лет назад
Родитель
Сommit
40b8138cdb

+ 10 - 0
inc/classes/BxDolStorage.php

@@ -278,6 +278,16 @@ abstract class BxDolStorage extends BxDolFactory implements iBxDolFactoryObject
         return BxDolStorageQuery::isQueuedFilesForDeletion($sPrefix);
     }
 
+    /**
+     * Get file token for private files.
+     * @param $iFileId file
+     * @return file token string
+     */
+    public function genToken($iFileId)
+    {
+        return $this->_oDb->genToken($iFileId);
+    }
+    
     /**
      * Change storage engine. It's possible to change it when there is no files in storage engine.
      * @param $sEngine new storage engine

+ 22 - 0
modules/boonex/files/classes/BxFilesMenuView.php

@@ -19,6 +19,28 @@ class BxFilesMenuView extends BxBaseModTextMenuView
         $this->MODULE = 'bx_files';
         parent::__construct($aObject, $oTemplate);
     }
+
+    public function setContentId($iContentId)
+    {
+        parent::setContentId($iContentId);
+
+        $CNF = $this->_oModule->_oConfig->CNF;
+
+        $aFile = $this->_oModule->getContentFile($this->_aContentInfo);
+        if (!$aFile || !$aFile['private']) {
+            $this->addMarkers(array('file_download_token' => ''));
+            return;
+        }
+
+        $oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE']);
+        if (!$oStorage) {
+            $this->addMarkers(array('file_download_token' => ''));
+            return;
+        }
+
+        $this->addMarkers(array('file_download_token' => $oStorage->genToken($aFile['id'])));
+    }
+
 }
 
 /** @} */

+ 2 - 2
modules/boonex/files/classes/BxFilesModule.php

@@ -34,7 +34,7 @@ class BxFilesModule extends BxBaseModTextModule
             return;
         }
 
-        if (CHECK_ACTION_RESULT_ALLOWED === $this->checkAllowedView($aData)) {
+        if (CHECK_ACTION_RESULT_ALLOWED !== $this->checkAllowedView($aData)) {
             $this->_oTemplate->displayAccessDenied();
             return;
         }
@@ -44,7 +44,7 @@ class BxFilesModule extends BxBaseModTextModule
             $this->_oTemplate->displayPageNotFound();
             return;
         }
-            
+
         $oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE']);
         if (!$oStorage) {
             $this->_oTemplate->displayErrorOccured();

+ 1 - 1
modules/boonex/files/install/sql/enable.sql

@@ -172,7 +172,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_files_view', 'bx_files', '_bx_files_menu_set_title_view_entry', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_files_view', 'bx_files', 'download-file', '_bx_files_menu_item_title_system_download_file', '_bx_files_menu_item_title_download_file', 'modules/?r=files/download/{content_id}', '', '_blank', 'download', '', 2147483647, 1, 0, 1),
+('bx_files_view', 'bx_files', 'download-file', '_bx_files_menu_item_title_system_download_file', '_bx_files_menu_item_title_download_file', 'modules/?r=files/download/{content_id}/{file_download_token}', '', '_blank', 'download', '', 2147483647, 1, 0, 1),
 ('bx_files_view', 'bx_files', 'edit-file', '_bx_files_menu_item_title_system_edit_entry', '_bx_files_menu_item_title_edit_entry', 'page.php?i=edit-file&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 2),
 ('bx_files_view', 'bx_files', 'delete-file', '_bx_files_menu_item_title_system_delete_entry', '_bx_files_menu_item_title_delete_entry', 'page.php?i=delete-file&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 3);