142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Chumper\Zipper;
 | |
| 
 | |
| use Chumper\Zipper\Repositories\RepositoryInterface;
 | |
| 
 | |
| class ArrayArchive implements RepositoryInterface
 | |
| {
 | |
|     private $entries = [];
 | |
| 
 | |
|     /**
 | |
|      * Construct with a given path
 | |
|      *
 | |
|      * @param $filePath
 | |
|      * @param bool $new
 | |
|      * @param $archiveImplementation
 | |
|      */
 | |
|     public function __construct($filePath, $new = false, $archiveImplementation = null)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add a file to the opened Archive
 | |
|      *
 | |
|      * @param $pathToFile
 | |
|      * @param $pathInArchive
 | |
|      */
 | |
|     public function addFile($pathToFile, $pathInArchive)
 | |
|     {
 | |
|         $this->entries[$pathInArchive] = $pathInArchive;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add a file to the opened Archive using its contents
 | |
|      *
 | |
|      * @param $name
 | |
|      * @param $content
 | |
|      */
 | |
|     public function addFromString($name, $content)
 | |
|     {
 | |
|         $this->entries[$name] = $name;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Remove a file permanently from the Archive
 | |
|      *
 | |
|      * @param $pathInArchive
 | |
|      */
 | |
|     public function removeFile($pathInArchive)
 | |
|     {
 | |
|         unset($this->entries[$pathInArchive]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the content of a file
 | |
|      *
 | |
|      * @param $pathInArchive
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function getFileContent($pathInArchive)
 | |
|     {
 | |
|         return $this->entries[$pathInArchive];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the stream of a file
 | |
|      *
 | |
|      * @param $pathInArchive
 | |
|      *
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function getFileStream($pathInArchive)
 | |
|     {
 | |
|         return $this->entries[$pathInArchive];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Will loop over every item in the archive and will execute the callback on them
 | |
|      * Will provide the filename for every item
 | |
|      *
 | |
|      * @param $callback
 | |
|      */
 | |
|     public function each($callback)
 | |
|     {
 | |
|         foreach ($this->entries as $entry) {
 | |
|             call_user_func_array($callback, [
 | |
|                 'file' => $entry,
 | |
|             ]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Checks whether the file is in the archive
 | |
|      *
 | |
|      * @param $fileInArchive
 | |
|      *
 | |
|      * @return bool
 | |
|      */
 | |
|     public function fileExists($fileInArchive)
 | |
|     {
 | |
|         return array_key_exists($fileInArchive, $this->entries);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns the status of the archive as a string
 | |
|      *
 | |
|      * @return string
 | |
|      */
 | |
|     public function getStatus()
 | |
|     {
 | |
|         return 'OK';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Closes the archive and saves it
 | |
|      */
 | |
|     public function close()
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add an empty directory
 | |
|      *
 | |
|      * @param $dirName
 | |
|      */
 | |
|     public function addEmptyDir($dirName)
 | |
|     {
 | |
|         // CODE...
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Sets the password to be used for decompressing
 | |
|      *
 | |
|      * @param $password
 | |
|      */
 | |
|     public function usePassword($password)
 | |
|     {
 | |
|         // CODE...
 | |
|     }
 | |
| }
 | 
