shapefile
This commit is contained in:
		
							
								
								
									
										108
									
								
								vendor/Shapefile/File/FileInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								vendor/Shapefile/File/FileInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,108 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * PHP Shapefile - PHP library to read and write ESRI Shapefiles, compatible with WKT and GeoJSON | ||||
|  * | ||||
|  * @package Shapefile | ||||
|  * @author  Gaspare Sganga | ||||
|  * @version 4.0.0dev | ||||
|  * @license MIT | ||||
|  * @link    https://gasparesganga.com/labs/php-shapefile/ | ||||
|  */ | ||||
|  | ||||
| namespace Shapefile\File; | ||||
|  | ||||
| /** | ||||
|  * Interface to interact with files in binary mode. | ||||
|  */ | ||||
| interface FileInterface | ||||
| { | ||||
|     /** | ||||
|      * Returns true if file is readable. | ||||
|      * | ||||
|      * @return  bool | ||||
|      */ | ||||
|     public function isReadable(); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Returns true if file is writable. | ||||
|      * | ||||
|      * @return  bool | ||||
|      */ | ||||
|     public function isWritable(); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Truncates file to given length. | ||||
|      * | ||||
|      * @param   int     $size   Size to truncate to. | ||||
|      * | ||||
|      * @return  void | ||||
|      */ | ||||
|     public function truncate($size); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Gets file size in bytes. | ||||
|      * | ||||
|      * @return  int | ||||
|      */ | ||||
|     public function getSize(); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Gets file current pointer position. | ||||
|      * | ||||
|      * @return  int | ||||
|      */ | ||||
|     public function getPointer(); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Sets file pointer to specified position. | ||||
|      * | ||||
|      * @param   int     $position   The position to set the pointer to. | ||||
|      * | ||||
|      * @return  void | ||||
|      */ | ||||
|     public function setPointer($position); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Resets file pointer position to its end. | ||||
|      * | ||||
|      * @return  void. | ||||
|      */ | ||||
|     public function resetPointer(); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Increases file pointer position of specified offset. | ||||
|      * | ||||
|      * @param   int     $offset     The offset to move the pointer for. | ||||
|      * | ||||
|      * @return  void | ||||
|      */ | ||||
|     public function setOffset($offset); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Reads raw binary string packed data from file. | ||||
|      * | ||||
|      * @param   int     $length     Number of bytes to read. | ||||
|      * | ||||
|      * @return  string|false    Returns binary string packed data, or false on failure. | ||||
|      */ | ||||
|     public function read($length); | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Writes raw binary string packed data to file. | ||||
|      * | ||||
|      * @param   string  $data       Binary string packed data to write. | ||||
|      * | ||||
|      * @return  bool        Returns true on success, or false on failure. | ||||
|      */ | ||||
|     public function write($data); | ||||
| } | ||||
							
								
								
									
										143
									
								
								vendor/Shapefile/File/StreamResourceFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								vendor/Shapefile/File/StreamResourceFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,143 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * PHP Shapefile - PHP library to read and write ESRI Shapefiles, compatible with WKT and GeoJSON | ||||
|  * | ||||
|  * @package Shapefile | ||||
|  * @author  Gaspare Sganga | ||||
|  * @version 4.0.0dev | ||||
|  * @license MIT | ||||
|  * @link    https://gasparesganga.com/labs/php-shapefile/ | ||||
|  */ | ||||
|  | ||||
| namespace Shapefile\File; | ||||
|  | ||||
| use Shapefile\Shapefile; | ||||
| use Shapefile\ShapefileException; | ||||
|  | ||||
| /** | ||||
|  * Default FileInterface implementation. | ||||
|  * It allows reading/writing of files in binary mode. | ||||
|  * It accepts both filepaths and stream resource handles. | ||||
|  */ | ||||
| class StreamResourceFile implements FileInterface | ||||
| { | ||||
|     /////////////////////////////// PRIVATE VARIABLES /////////////////////////////// | ||||
|     /** | ||||
|      * @var resource    File resource handle. | ||||
|      */ | ||||
|     private $handle = null; | ||||
|      | ||||
|     /** | ||||
|      * @var bool        Flag to store whether file was passed as resource handle or not. | ||||
|      */ | ||||
|     private $flag_resource = false; | ||||
|      | ||||
|      | ||||
|      | ||||
|     /////////////////////////////// PUBLIC /////////////////////////////// | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * Opens file with binary read or write access. | ||||
|      * | ||||
|      * @param   string|resource $file           Path to file or resource handle. | ||||
|      * @param   bool            $write_access   Access type: false = read; true = write. | ||||
|      */ | ||||
|     public function __construct($file, $write_access) | ||||
|     { | ||||
|         $this->flag_resource = is_resource($file); | ||||
|          | ||||
|         if ($this->flag_resource) { | ||||
|             $this->handle = $file; | ||||
|             if (get_resource_type($this->handle) !== 'stream' || !stream_get_meta_data($this->handle)['seekable']) { | ||||
|                 throw new ShapefileException(Shapefile::ERR_FILE_RESOURCE_NOT_VALID); | ||||
|             } | ||||
|             if ((!$write_access && !$this->isReadable()) || ($write_access && !$this->isWritable())) { | ||||
|                 throw new ShapefileException(Shapefile::ERR_FILE_PERMISSIONS); | ||||
|             } | ||||
|         } else { | ||||
|             $this->handle = @fopen($file, $write_access ? 'c+b' : 'rb'); | ||||
|             if ($this->handle === false) { | ||||
|                 throw new ShapefileException(Shapefile::ERR_FILE_OPEN); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|      * Destructor. | ||||
|      * | ||||
|      * Closes file if it was NOT passed as resource handle. | ||||
|      */ | ||||
|     public function __destruct() | ||||
|     { | ||||
|         if (!$this->flag_resource) { | ||||
|             fclose($this->handle); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|      | ||||
|     /** | ||||
|      * Gets canonicalized absolute pathname. | ||||
|      */ | ||||
|     public function getFilepath() | ||||
|     { | ||||
|         return realpath(stream_get_meta_data($this->handle)['uri']); | ||||
|     } | ||||
|      | ||||
|      | ||||
|     public function isReadable() | ||||
|     { | ||||
|         return in_array(stream_get_meta_data($this->handle)['mode'], ['rb', 'r+b', 'w+b', 'x+b', 'c+b']); | ||||
|     } | ||||
|      | ||||
|     public function isWritable() | ||||
|     { | ||||
|         return in_array(stream_get_meta_data($this->handle)['mode'], ['r+b', 'wb', 'w+b', 'xb', 'x+b', 'cb', 'c+b']); | ||||
|     } | ||||
|      | ||||
|      | ||||
|     public function truncate($size) | ||||
|     { | ||||
|         ftruncate($this->handle, $size); | ||||
|     } | ||||
|      | ||||
|     public function getSize() | ||||
|     { | ||||
|         return fstat($this->handle)['size']; | ||||
|     } | ||||
|      | ||||
|      | ||||
|     public function getPointer() | ||||
|     { | ||||
|         return ftell($this->handle); | ||||
|     } | ||||
|      | ||||
|     public function setPointer($position) | ||||
|     { | ||||
|         fseek($this->handle, $position, SEEK_SET); | ||||
|     } | ||||
|      | ||||
|     public function resetPointer() | ||||
|     { | ||||
|         fseek($this->handle, 0, SEEK_END); | ||||
|     } | ||||
|      | ||||
|     public function setOffset($offset) | ||||
|     { | ||||
|         fseek($this->handle, $offset, SEEK_CUR); | ||||
|     } | ||||
|      | ||||
|      | ||||
|     public function read($length) | ||||
|     { | ||||
|         return @fread($this->handle, $length); | ||||
|     } | ||||
|      | ||||
|     public function write($data) | ||||
|     { | ||||
|         if (@fwrite($this->handle, $data) === false) { | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user