Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Permission/Assignment/FileAssignment.php
Строк: 133
<?php

namespace ConcreteCorePermissionAssignment;

use 
ConcreteCoreFileSetSet;
use 
PermissionAccess;
use 
FileSet;
use 
ConcreteCoreFileFile;
use 
Database;

class 
FileAssignment extends Assignment
{
    protected 
$permissionObjectToCheck;

    protected 
$inheritedPermissions = array(
        
'view_file' => 'view_file_set_file',
        
'view_file_in_file_manager' => 'search_file_set',
        
'edit_file_properties' => 'edit_file_set_file_properties',
        
'edit_file_contents' => 'edit_file_set_file_contents',
        
'copy_file' => 'copy_file_set_files',
        
'edit_file_permissions' => 'edit_file_set_permissions',
        
'delete_file' => 'delete_file_set_files',
    );

    public function 
getPermissionAccessObject()
    {
        
$db Database::connection();
        if (
$this->permissionObjectToCheck instanceof File) {
            
$r $db->GetCol(
                
'select paID from FilePermissionAssignments where fID = ? and pkID = ?',
                array(
                    
$this->permissionObject->getFileID(),
                    
$this->pk->getPermissionKeyID(),
                )
            );
        } elseif (
is_array($this->permissionObjectToCheck)) { // sets
            
$sets = array();
            foreach (
$this->permissionObjectToCheck as $fs) {
                
$sets[] = $fs->getFileSetID();
            }
            
$inheritedPKID $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
            
$r $db->GetCol(
                
'select distinct paID from FileSetPermissionAssignments where fsID in (' implode(','$sets) . ') and pkID = ? ',
                array(
                    
$inheritedPKID,
                )
            );
        } elseif (
$this->permissionObjectToCheck instanceof Set && isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
            
$inheritedPKID $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
            
$r $db->GetCol(
                
'select distinct paID from FileSetPermissionAssignments where fsID = ? and pkID = ?',
                array(
                    
$this->permissionObjectToCheck->getFileSetID(),
                    
$inheritedPKID,
                )
            );
        } else {
            return 
false;
        }

        if (
count($r) == 1) {
            
$permID $r[0];
        }
        if (
count($r) > 1) {
            
$permID $r;
        }

        if (
is_array($permID)) {
            foreach (
$permID as $paID) {
                
$pa PermissionAccess::getByID($paID$this->pk);
                if (
is_object($pa)) {
                    
$perms[] = $pa;
                }
            }

            return 
PermissionAccess::createByMerge($perms);
        } else {
            return 
PermissionAccess::getByID($permID$this->pk);
        }
    }

    
/**
     * @param File $f
     */
    
public function setPermissionObject($f)
    {
        
$this->permissionObject $f;

        if (
$f->overrideFileSetPermissions()) {
            
$this->permissionObjectToCheck $f;
        } else {
            
$sets $f->getFileSets();
            
$permsets = array();
            foreach (
$sets as $fs) {
                if (
$fs->overrideGlobalPermissions()) {
                    
$permsets[] = $fs;
                }
            }
            if (
count($permsets) > 0) {
                
$this->permissionObjectToCheck $permsets;
            } else {
                
$fs FileSet::getGlobal();
                
$this->permissionObjectToCheck $fs;
            }
        }
    }

    public function 
clearPermissionAssignment()
    {
        
$db Database::connection();
        
$db->Execute('update FilePermissionAssignments set paID = 0 where pkID = ? and fID = ?', array($this->pk->getPermissionKeyID(), $this->permissionObject->getFileID()));
    }

    public function 
assignPermissionAccess(PermissionAccess $pa)
    {
        
$db Database::connection();
        
$db->Replace('FilePermissionAssignments', array('fID' => $this->getPermissionObject()->getFileID(), 'paID' => $pa->getPermissionAccessID(), 'pkID' => $this->pk->getPermissionKeyID()), array('fID''pkID'), true);
        
$pa->markAsInUse();
    }

    public function 
getPermissionKeyToolsURL($task false)
    {
        return 
parent::getPermissionKeyToolsURL($task) . '&fID=' $this->getPermissionObject()->getFileID();
    }
}
Онлайн: 3
Реклама