File Manager

Current Directory: /home/astoriaah/www/templates/yootheme/vendor/yootheme/framework/src/Http/Message
Viewing File: /home/astoriaah/www/templates/yootheme/vendor/yootheme/framework/src/Http/Message/UploadedFile.php
<?php namespace YOOtheme\Http\Message; use Psr\Http\Message\StreamInterface; use Psr\Http\Message\UploadedFileInterface; class UploadedFile implements UploadedFileInterface { /** * @var string */ protected $file; /** * @var string */ protected $name; /** * @var string */ protected $type; /** * @var int */ protected $size; /** * @var int */ protected $error; /** * @var bool */ protected $moved = false; /** * @var StreamInterface */ protected $stream; /** * Constructor. * * @param string $file * @param string $name * @param string $type * @param int $size * @param int $error */ public function __construct($file, $name = null, $type = null, $size = null, $error = UPLOAD_ERR_OK) { $this->file = $file; $this->name = $name; $this->type = $type; $this->size = $size; $this->error = $error; } /** * {@inheritdoc} */ public function getStream() { if ($this->moved) { throw new \RuntimeException(sprintf('Uploaded file %1s has already been moved', $this->name)); } if (!$this->stream) { $this->stream = new Stream($this->file); } return $this->stream; } /** * {@inheritdoc} */ public function getSize() { return $this->size; } /** * {@inheritdoc} */ public function getError() { return $this->error; } /** * {@inheritdoc} */ public function getClientFilename() { return $this->name; } /** * {@inheritdoc} */ public function getClientMediaType() { return $this->type; } /** * {@inheritdoc} */ public function moveTo($targetPath) { if ($this->moved) { throw new \RuntimeException('Uploaded file already moved'); } if (!is_writable(dirname($targetPath))) { throw new \InvalidArgumentException('Upload target path is not writable'); } $targetIsStream = strpos($targetPath, '://') > 0; if ($targetIsStream) { if (!copy($this->file, $targetPath)) { throw new \RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); } if (!unlink($this->file)) { throw new \RuntimeException(sprintf('Error removing uploaded file %1s', $this->name)); } } elseif ($this->sapi) { if (!is_uploaded_file($this->file)) { throw new \RuntimeException(sprintf('%1s is not a valid uploaded file', $this->file)); } if (!move_uploaded_file($this->file, $targetPath)) { throw new \RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); } } else { if (!rename($this->file, $targetPath)) { throw new \RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); } } $this->moved = true; } /** * Normalize uploaded files, i.e. $_FILES. * * @param array $files * @return array */ public static function normalizeFiles(array $files) { $parsed = []; foreach ($files as $field => $file) { if (!isset($file['error'])) { if (is_array($file)) { $parsed[$field] = static::normalizeFiles($file); } continue; } $parsed[$field] = []; if (!is_array($file['error'])) { $parsed[$field] = new static( $file['tmp_name'], isset($file['name']) ? $file['name'] : null, isset($file['type']) ? $file['type'] : null, isset($file['size']) ? $file['size'] : null, $file['error']); } else { $subArray = []; foreach ($file['error'] as $i => $error) { $subArray[$i]['name'] = $file['name'][$i]; $subArray[$i]['type'] = $file['type'][$i]; $subArray[$i]['tmp_name'] = $file['tmp_name'][$i]; $subArray[$i]['error'] = $file['error'][$i]; $subArray[$i]['size'] = $file['size'][$i]; $parsed[$field] = static::normalizeFiles($subArray); } } } return $parsed; } }