nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							134 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							134 lines
						
					
					
						
							2.5 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace League\Flysystem;
							 | 
						|
								
							 | 
						|
								use BadMethodCallException;
							 | 
						|
								
							 | 
						|
								abstract class Handler
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     * @var string
							 | 
						|
								     */
							 | 
						|
								    protected $path;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @var FilesystemInterface
							 | 
						|
								     */
							 | 
						|
								    protected $filesystem;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Constructor.
							 | 
						|
								     *
							 | 
						|
								     * @param FilesystemInterface $filesystem
							 | 
						|
								     * @param string              $path
							 | 
						|
								     */
							 | 
						|
								    public function __construct(FilesystemInterface $filesystem = null, $path = null)
							 | 
						|
								    {
							 | 
						|
								        $this->path = $path;
							 | 
						|
								        $this->filesystem = $filesystem;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Check whether the entree is a directory.
							 | 
						|
								     *
							 | 
						|
								     * @return bool
							 | 
						|
								     */
							 | 
						|
								    public function isDir()
							 | 
						|
								    {
							 | 
						|
								        return $this->getType() === 'dir';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Check whether the entree is a file.
							 | 
						|
								     *
							 | 
						|
								     * @return bool
							 | 
						|
								     */
							 | 
						|
								    public function isFile()
							 | 
						|
								    {
							 | 
						|
								        return $this->getType() === 'file';
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Retrieve the entree type (file|dir).
							 | 
						|
								     *
							 | 
						|
								     * @return string file or dir
							 | 
						|
								     */
							 | 
						|
								    public function getType()
							 | 
						|
								    {
							 | 
						|
								        $metadata = $this->filesystem->getMetadata($this->path);
							 | 
						|
								
							 | 
						|
								        return $metadata['type'];
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Set the Filesystem object.
							 | 
						|
								     *
							 | 
						|
								     * @param FilesystemInterface $filesystem
							 | 
						|
								     *
							 | 
						|
								     * @return $this
							 | 
						|
								     */
							 | 
						|
								    public function setFilesystem(FilesystemInterface $filesystem)
							 | 
						|
								    {
							 | 
						|
								        $this->filesystem = $filesystem;
							 | 
						|
								
							 | 
						|
								        return $this;
							 | 
						|
								    }
							 | 
						|
								    
							 | 
						|
								    /**
							 | 
						|
								     * Retrieve the Filesystem object.
							 | 
						|
								     *
							 | 
						|
								     * @return FilesystemInterface
							 | 
						|
								     */
							 | 
						|
								    public function getFilesystem()
							 | 
						|
								    {
							 | 
						|
								        return $this->filesystem;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Set the entree path.
							 | 
						|
								     *
							 | 
						|
								     * @param string $path
							 | 
						|
								     *
							 | 
						|
								     * @return $this
							 | 
						|
								     */
							 | 
						|
								    public function setPath($path)
							 | 
						|
								    {
							 | 
						|
								        $this->path = $path;
							 | 
						|
								
							 | 
						|
								        return $this;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Retrieve the entree path.
							 | 
						|
								     *
							 | 
						|
								     * @return string path
							 | 
						|
								     */
							 | 
						|
								    public function getPath()
							 | 
						|
								    {
							 | 
						|
								        return $this->path;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Plugins pass-through.
							 | 
						|
								     *
							 | 
						|
								     * @param string $method
							 | 
						|
								     * @param array  $arguments
							 | 
						|
								     *
							 | 
						|
								     * @return mixed
							 | 
						|
								     */
							 | 
						|
								    public function __call($method, array $arguments)
							 | 
						|
								    {
							 | 
						|
								        array_unshift($arguments, $this->path);
							 | 
						|
								        $callback = [$this->filesystem, $method];
							 | 
						|
								
							 | 
						|
								        try {
							 | 
						|
								            return call_user_func_array($callback, $arguments);
							 | 
						|
								        } catch (BadMethodCallException $e) {
							 | 
						|
								            throw new BadMethodCallException(
							 | 
						|
								                'Call to undefined method '
							 | 
						|
								                . get_called_class()
							 | 
						|
								                . '::' . $method
							 | 
						|
								            );
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |