diff --git a/db/update20.7.sql b/db/update20.7.sql index 579e5f1422..be6d5098cc 100644 --- a/db/update20.7.sql +++ b/db/update20.7.sql @@ -1 +1,3 @@ ALTER TABLE `zt_auditresult` ADD `severity` char(30) NOT NULL DEFAULT '' AFTER `comment`; + +REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) SELECT `group`, 'file', 'download' FROM `zt_grouppriv` WHERE `module` = 'file' AND `method` = 'preview'; diff --git a/module/file/model.php b/module/file/model.php index 6792c972c5..b1f6ad2749 100755 --- a/module/file/model.php +++ b/module/file/model.php @@ -1104,7 +1104,7 @@ class fileModel extends model */ public function printFile(object $file, string $method, bool $showDelete, bool $showEdit, object|null $object): string { - if(!common::hasPriv('file', 'download')) return ''; + if(!common::hasPriv('file', 'download') && !common::hasPriv('file', 'preview')) return ''; $html = ''; @@ -1123,10 +1123,11 @@ class fileModel extends model $downloadLink = helper::createLink('file', 'download', "fileID=$file->id"); $downloadLink .= strpos($downloadLink, '?') === false ? '?' : '&'; $downloadLink .= $sessionString; + $fileTitleLink = common::hasPriv('file', 'download') ? html::a($downloadLink, $fileTitle . " ({$fileSize})", '_blank', "id='fileTitle$file->id'") : "
" . $fileTitle . " ({$fileSize})
"; $objectType = zget($this->config->file->objectType, $file->objectType); - $html .= "
  • " . html::a($downloadLink, $fileTitle . " ({$fileSize})", '_blank', "id='fileTitle$file->id'"); + $html .= "
  • " . $fileTitleLink; if(strpos('view,edit', $method) !== false) { if(common::hasPriv($objectType, 'view', $object)) $html = $this->buildFileActions($html, $downloadLink, $imageWidth, $showEdit, $showDelete, $file, $object); diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php index 33e8f1624d..0a555ccbe3 100644 --- a/module/group/packagemanager.php +++ b/module/group/packagemanager.php @@ -2940,7 +2940,7 @@ $config->group->package->file->privs['file-edit'] = array('edition' => ' $config->group->package->file->privs['file-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 2, 'depend' => array(), 'recommend' => array('file-edit')); $config->group->package->file->privs['file-uploadImages'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 3, 'depend' => array(), 'recommend' => array()); $config->group->package->file->privs['file-setPublic'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 25, 'depend' => array(), 'recommend' => array()); -$config->group->package->file->privs['file-preview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 26, 'depend' => array(), 'recommend' => array()); +$config->group->package->file->privs['file-preview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 26, 'depend' => array('file-download'), 'recommend' => array()); $config->group->package->commonEffort = new stdclass(); $config->group->package->commonEffort->order = 5;