Файл: concrete5.7.5.6/concrete/src/Permission/Key/AddFileFileSetKey.php
Строк: 89
<?php
namespace ConcreteCorePermissionKey;
use ConcreteCoreFileFile;
use Loader;
use User;
use ConcreteCorePermissionDuration as PermissionDuration;
class AddFileFileSetKey extends FileSetKey
{
public function getAllowedFileExtensions()
{
$u = new User();
$extensions = array();
if ($u->isSuperUser()) {
$extensions = Loader::helper('concrete/file')->getAllowedFileExtensions();
return $extensions;
}
$pae = $this->getPermissionAccessObject();
if (!is_object($pae)) {
return array();
}
$accessEntities = $u->getUserAccessEntityObjects();
$accessEntities = $pae->validateAndFilterAccessEntities($accessEntities);
$list = $this->getAccessListItems(FileSetKey::ACCESS_TYPE_ALL, $accessEntities);
$list = PermissionDuration::filterByActive($list);
foreach ($list as $l) {
if ($l->getFileTypesAllowedPermission() == 'N') {
$extensions = array();
}
if ($l->getFileTypesAllowedPermission() == 'C') {
$extensions = array_unique(array_merge($extensions, $l->getFileTypesAllowedArray()));
}
if ($l->getFileTypesAllowedPermission() == 'A') {
$extensions = Loader::helper('concrete/file')->getAllowedFileExtensions();
}
}
$extensions = array_map('strtolower', $extensions);
return $extensions;
}
public function validate($file = false)
{
$extensions = $this->getAllowedFileExtensions();
if ($file instanceof File) {
$extension = $file->getExtension();
} else {
$extension = $file;
}
$extension = strtolower($extension);
if ($extension != false) {
return in_array($extension, $extensions);
} else {
return count($extensions) > 0;
}
}
}