Select Git revision
scanner.php
scanner.php 3.54 KiB
<?php
/**
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC\Files\Cache;
class Scanner {
/**
* @var \OC\Files\Storage\Storage $storage
*/
private $storage;
/**
* @var string $storageId
*/
private $storageId;
/**
* @var \OC\Files\Cache\Cache $cache
*/
private $cache;
/**
* @var \OC\Files\Cache\Permissions $permissionsCache
*/
private $permissionsCache;
const SCAN_RECURSIVE = true;
const SCAN_SHALLOW = false;
public function __construct(\OC\Files\Storage\Storage $storage) {
$this->storage = $storage;
$this->storageId = $this->storage->getId();
$this->cache = $storage->getCache();
$this->permissionsCache = $storage->getPermissionsCache();
}
/**
* get all the metadata of a file or folder
* *
*
* @param string $path
* @return array with metadata of the file
*/
public function getData($path) {
$data = array();
if (!$this->storage->isReadable($path)) return null; //cant read, nothing we can do
$data['mimetype'] = $this->storage->getMimeType($path);
$data['mtime'] = $this->storage->filemtime($path);
if ($data['mimetype'] == 'httpd/unix-directory') {
$data['size'] = -1; //unknown
$data['permissions'] = $this->storage->getPermissions($path . '/');
} else {
$data['size'] = $this->storage->filesize($path);
$data['permissions'] = $this->storage->getPermissions($path);
}
return $data;
}
/**
* scan a single file and store it in the cache
*
* @param string $file
* @return array with metadata of the scanned file
*/
public function scanFile($file) {