Skip to content
Snippets Groups Projects
Select Git revision
  • a3da1483a9e689846179159355badfec8073dbec
  • main default protected
  • step-01354-5.5
  • biest-504
  • issue-3215
  • step-03209-bald-rapunzel
  • tic-3123
  • tic-2720-remove-less-compilation-in-plugins
  • step-1800
  • tic-2532
  • biest-561
  • tic-3225
  • 5.3
  • 5.4
  • step-2472
  • step-2660
  • step-1559
  • tic-3094
  • biest-3206
  • biest-3207
  • 5.0
  • v5.3.1
  • v5.2.3
  • v5.1.4
  • v5.0.6
  • v5.3
  • v5.2.2
  • v5.1.3
  • v5.0.5
  • v5.2.1
  • v5.1.2
  • v5.0.4
  • v5.2
  • v5.1.1
  • v5.0.3
  • v5.1
  • v5.0.2
  • v5.0.1
  • v5.0
39 results

files.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Authority.php 4.17 KiB
    <?php
    
    namespace JsonApi\Routes\Files;
    
    use User;
    use JsonApi\Routes\Courses\Authority as CoursesAuth;
    use JsonApi\Routes\Users\Authority as UsersAuth;
    
    /**
     * @SuppressWarnings(PHPMD.TooManyPublicMethods)
     * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
     */
    class Authority
    {
        public static function canShowFileArea(User $user, \SimpleORMap $resource): bool
        {
            if (
                $resource instanceof \Course &&
                !CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)
            ) {
                return false;
            }
    
            if ($resource instanceof \Course || $resource instanceof \Institute) {
                $info = \PluginManager::getInstance()->getPluginInfo('CoreDocuments');
                if (!\PluginManager::getInstance()->isPluginActivated($info['id'], $resource->id)) {
                    return false;
                }
            }
    
            return ($folder = \Folder::findTopFolder($resource->id)) &&
                ($rootFolder = $folder->getTypedFolder()) &&
                $rootFolder->isVisible($user->id);
        }
    
        public static function canShowFolder(User $user, \FolderType $folder)
        {
            return $folder->isReadable($user->id);
        }
    
        public static function canUpdateFolder(User $user, \FolderType $folder)
        {
            return $folder->isEditable($user->id);
        }
    
        public static function canDeleteFolder(User $user, \FolderType $folder)
        {
            return $folder->isEditable($user->id);
        }
    
        public static function canShowFileRef(User $user, \FileRef $fileRef)
        {
            return $fileRef->getFileType()->isVisible($user->id) || $fileRef->getFileType()->isDownloadable($user->id);
        }
    
        public static function canUpdateFileRef(User $user, \FileRef $fileRef)
        {
            return $fileRef->getFileType()->isWritable($user->id);
        }
    
        public static function canDeleteFileRef(User $user, \FileRef $fileRef)
        {
            return $fileRef->getFileType()->isWritable($user->id);
        }
    
        public static function canDownloadFileRef(User $user, \FileRef $fileRef)
        {
            return $fileRef->getFileType()->isDownloadable($user->id);
        }