All pastes #348178 Raw Edit

Xedecimal

public php v1 · immutable
·published 2007-02-09 23:54 UTC
rendered paste body
	/**	 * Creates a new FileInfo from an existing file. Filter manages how this	 * information will be handled, manipulated or displayed.	 *	 * @param string $source Filename to gather information on.	 * @param string $DefaultFilter Associated directory filter.	 * @return FileInfo	 */	function FileInfo($source, $DefaultFilter = 'Default')	{		global $user_root;		if (!file_exists($source))			Error("FileInfo: File/Directory does not exist. ({$source})<br/>\n");		$this->owned = strlen(strstr($source, $user_root)) > 0;		$this->bitpos = 0;		$this->path = $source;		$this->dir = dirname($source);		$this->filename = basename($source);		$this->show = true;		$finfo = $this->dir.'/.'.$this->filename;		if (file_exists($finfo))			$this->info = @unserialize(file_get_contents($finfo));		else $this->info = array();		$this->GetFilter($source, $DefaultFilter);		if (is_dir($source)) $this->type = 'folder';		if (!$this->Filter->GetInfo($this)) $this->show = false;	}	/**	 * Returns the filter that was explicitely set on this object, object's	 * directory, or fall back on the default filter.	 *	 * @param string $path Path to file to get filter of.	 * @param string $default Default filter to fall back on.	 * @return DirFilter	 */	function GetFilter($path, $default = 'Default')	{		if (is_file($path))		{			$dirname = substr(strrchr('/'.$this->dir, '/'), 1);			$dinfo = dirname($path).'/../.'.$dirname;			if (file_exists($dinfo))			{				$dinfo = unserialize(file_get_contents($dinfo));				$this->info = array_merge($dinfo, $this->info);			}		}		if (isset($this->info['type']))		{			$name = $this->info['type'];			if (class_exists("Filter{$name}"))			{				$objname = "Filter$name";				return $this->Filter = new $objname();			}		}		if (isset($default))		{			$name = $default;			if (class_exists("Filter$name"))			{				$objname = "Filter$name";				return $this->Filter = new $objname();			}		}		return $this->Filter = new FilterDefault();	}