Вход Регистрация
Файл: forsoc.ru/manul/classes/FileInfo.inc.php
Строк: 75
<?php

class FileInfo
{
    public function 
__construct($filePath)
    {
        
$this->web_root_dir = $_SERVER['DOCUMENT_ROOT'];
        
$this->getInfoByName($filePath);
    }

    public function 
getInfoByName($filePath)
    {
        
$this->MAX_FILE_SIZE_FOR_HASHING = 1024 * 1024;

        
$this->absoluteName = $filePath;
        
$this->name = str_replace($this->web_root_dir, '.', $filePath);
        
$this->ctime = 0;
        
$this->mtime = 0;
        
$this->owner = '-';
        
$this->group = '-';
        
$this->access = 0;
        
$this->size = -1;
        
$this->md5 = '-';

        if (
file_exists($filePath)) {
            
$this->ctime = filectime($filePath);
            
$this->mtime = filemtime($filePath);

            
$owner = fileowner($filePath);
            
$ownerInfo = function_exists('posix_getpwuid') ? posix_getpwuid($owner) : array('name' => $owner);
            
$this->owner = $ownerInfo['name'];

            
$group = filegroup($filePath);
            
$groupInfo = function_exists('posix_getgrgid') ? posix_getgrgid($group) : array('name' => $group);
            
$this->group = $groupInfo['name'];

            
$this->access = substr(sprintf('%o', fileperms($filePath)), -4);

            if (
is_file($filePath)) {
                
$this->size = filesize($filePath);

                if (
$this->size <= $this->MAX_FILE_SIZE_FOR_HASHING) {
                    
$this->md5 = hash_file('md5', $filePath);
                }
            }
        }

        return 
true;
    }

    public function 
getXMLNode()
    {
        
$dom = new DOMDocument('1.0', 'utf-8');
        
$fileinfoNode = $dom->createElement('file');
        
$fileinfoNode->appendChild($dom->createElement('path', $this->name));
        
$fileinfoNode->appendChild($dom->createElement('size', $this->size));
        
$fileinfoNode->appendChild($dom->createElement('ctime', $this->ctime));
        
$fileinfoNode->appendChild($dom->createElement('mtime', $this->mtime));
        
$fileinfoNode->appendChild($dom->createElement('owner', $this->owner));
        
$fileinfoNode->appendChild($dom->createElement('group', $this->group));
        
$fileinfoNode->appendChild($dom->createElement('access', $this->access));
        
$fileinfoNode->appendChild($dom->createElement('md5', $this->md5));
        
$dom->appendChild($fileinfoNode);
        return 
$dom->getElementsByTagName('file')->item(0);
    }

    public function 
__toString()
    {
        
$data = array($this->name, $this->size, $this->ctime, $this->mtime, $this->owner, $this->group, $this->access, $this->md5);
        return 
implode(';', $data);
    }
}
Онлайн: 2
Реклама