Blame | Last modification | View Log | RSS feed
<?php/*** Copyright 2017 Facebook, Inc.** You are hereby granted a non-exclusive, worldwide, royalty-free license to* use, copy, modify, and distribute this software in source code or binary* form for use in connection with the web services and APIs provided by* Facebook.** As with any software that integrates with the Facebook platform, your use* of this software is subject to the Facebook Developer Principles and* Policies [http://developers.facebook.com/policy/]. This copyright notice* shall be included in all copies or substantial portions of the software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER* DEALINGS IN THE SOFTWARE.**/namespace Facebook\FileUpload;use Facebook\Exceptions\FacebookSDKException;/*** Class FacebookFile** @package Facebook*/class FacebookFile{/*** @var string The path to the file on the system.*/protected $path;/*** @var int The maximum bytes to read. Defaults to -1 (read all the remaining buffer).*/private $maxLength;/*** @var int Seek to the specified offset before reading. If this number is negative, no seeking will occur and reading will start from the current position.*/private $offset;/*** @var resource The stream pointing to the file.*/protected $stream;/*** Creates a new FacebookFile entity.** @param string $filePath* @param int $maxLength* @param int $offset** @throws FacebookSDKException*/public function __construct($filePath, $maxLength = -1, $offset = -1){$this->path = $filePath;$this->maxLength = $maxLength;$this->offset = $offset;$this->open();}/*** Closes the stream when destructed.*/public function __destruct(){$this->close();}/*** Opens a stream for the file.** @throws FacebookSDKException*/public function open(){if (!$this->isRemoteFile($this->path) && !is_readable($this->path)) {throw new FacebookSDKException('Failed to create FacebookFile entity. Unable to read resource: ' . $this->path . '.');}$this->stream = fopen($this->path, 'r');if (!$this->stream) {throw new FacebookSDKException('Failed to create FacebookFile entity. Unable to open resource: ' . $this->path . '.');}}/*** Stops the file stream.*/public function close(){if (is_resource($this->stream)) {fclose($this->stream);}}/*** Return the contents of the file.** @return string*/public function getContents(){return stream_get_contents($this->stream, $this->maxLength, $this->offset);}/*** Return the name of the file.** @return string*/public function getFileName(){return basename($this->path);}/*** Return the path of the file.** @return string*/public function getFilePath(){return $this->path;}/*** Return the size of the file.** @return int*/public function getSize(){return filesize($this->path);}/*** Return the mimetype of the file.** @return string*/public function getMimetype(){return Mimetypes::getInstance()->fromFilename($this->path) ?: 'text/plain';}/*** Returns true if the path to the file is remote.** @param string $pathToFile** @return boolean*/protected function isRemoteFile($pathToFile){return preg_match('/^(https?|ftp):\/\/.*/', $pathToFile) === 1;}}