You are here

protected function S3fsStreamWrapper::_stat in S3 File System 7.3

Same name and namespace in other branches
  1. 7 S3fsStreamWrapper.inc \S3fsStreamWrapper::_stat()
  2. 7.2 S3fsStreamWrapper.inc \S3fsStreamWrapper::_stat()

Implementation of a stat method to ensure that remote files don't fail checks when they should pass.

Parameters

$uri:

Return value

array|bool

1 call to S3fsStreamWrapper::_stat()
S3fsStreamWrapper::url_stat in ./S3fsStreamWrapper.inc

File

./S3fsStreamWrapper.inc, line 939
Drupal stream wrapper implementation for S3 File System.

Class

S3fsStreamWrapper
The stream wrapper class.

Code

protected function _stat($uri) {
  $metadata = $this
    ->_s3fs_get_object($uri);
  if ($metadata) {
    $stat = array();
    $stat[0] = $stat['dev'] = 0;
    $stat[1] = $stat['ino'] = 0;

    // Use the S_IFDIR posix flag for directories, S_IFREG for files.
    // All files are considered writable, so OR in 0777.
    $stat[2] = $stat['mode'] = ($metadata['dir'] ? 040000 : 0100000) | 0777;
    $stat[3] = $stat['nlink'] = 0;
    $stat[4] = $stat['uid'] = 0;
    $stat[5] = $stat['gid'] = 0;
    $stat[6] = $stat['rdev'] = 0;
    $stat[7] = $stat['size'] = 0;
    $stat[8] = $stat['atime'] = 0;
    $stat[9] = $stat['mtime'] = 0;
    $stat[10] = $stat['ctime'] = 0;
    $stat[11] = $stat['blksize'] = 0;
    $stat[12] = $stat['blocks'] = 0;
    if (!$metadata['dir']) {
      $stat[4] = $stat['uid'] = 's3fs';
      $stat[7] = $stat['size'] = $metadata['filesize'];
      $stat[8] = $stat['atime'] = $metadata['timestamp'];
      $stat[9] = $stat['mtime'] = $metadata['timestamp'];
      $stat[10] = $stat['ctime'] = $metadata['timestamp'];
    }
    return $stat;
  }
  return FALSE;
}