You are here

protected function S3fsStream::stat in S3 File System 8.3

Same name and namespace in other branches
  1. 4.0.x src/StreamWrapper/S3fsStream.php \Drupal\s3fs\StreamWrapper\S3fsStream::stat()

Get the status of the file with the specified URI.

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

Parameters

string $uri: The uri of the resource.

Return value

array|bool An array with file status, or FALSE if the file doesn't exist.

See also

http://php.net/manual/en/streamwrapper.stream-stat.php

1 call to S3fsStream::stat()
S3fsStream::url_stat in src/StreamWrapper/S3fsStream.php

File

src/StreamWrapper/S3fsStream.php, line 1205

Class

S3fsStream
Defines a Drupal s3 (s3://) stream wrapper class.

Namespace

Drupal\s3fs\StreamWrapper

Code

protected function stat($uri) {
  $metadata = $this
    ->getS3fsObject($uri);
  if ($metadata) {
    $stat = [];
    $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;
}