diff options
Diffstat (limited to 'phpBB/phpbb/avatar/driver')
| -rw-r--r-- | phpBB/phpbb/avatar/driver/driver.php | 7 | ||||
| -rw-r--r-- | phpBB/phpbb/avatar/driver/gravatar.php | 12 | ||||
| -rw-r--r-- | phpBB/phpbb/avatar/driver/local.php | 8 | ||||
| -rw-r--r-- | phpBB/phpbb/avatar/driver/remote.php | 40 | ||||
| -rw-r--r-- | phpBB/phpbb/avatar/driver/upload.php | 44 | 
5 files changed, 61 insertions, 50 deletions
| diff --git a/phpBB/phpbb/avatar/driver/driver.php b/phpBB/phpbb/avatar/driver/driver.php index b3ced7edf7..c849533166 100644 --- a/phpBB/phpbb/avatar/driver/driver.php +++ b/phpBB/phpbb/avatar/driver/driver.php @@ -30,6 +30,9 @@ abstract class driver implements \phpbb\avatar\driver\driver_interface  	*/  	protected $config; +	/** @var \FastImageSize\FastImageSize */ +	protected $imagesize; +  	/**  	* Current $phpbb_root_path  	* @var string @@ -73,14 +76,16 @@ abstract class driver implements \phpbb\avatar\driver\driver_interface  	* Construct a driver object  	*  	* @param \phpbb\config\config $config phpBB configuration +	* @param \FastImageSize\FastImageSize $imagesize FastImageSize class  	* @param string $phpbb_root_path Path to the phpBB root  	* @param string $php_ext PHP file extension  	* @param \phpbb\path_helper $path_helper phpBB path helper  	* @param \phpbb\cache\driver\driver_interface $cache Cache driver  	*/ -	public function __construct(\phpbb\config\config $config, $phpbb_root_path, $php_ext, \phpbb\path_helper $path_helper, \phpbb\cache\driver\driver_interface $cache = null) +	public function __construct(\phpbb\config\config $config, \FastImageSize\FastImageSize $imagesize, $phpbb_root_path, $php_ext, \phpbb\path_helper $path_helper, \phpbb\cache\driver\driver_interface $cache = null)  	{  		$this->config = $config; +		$this->imagesize = $imagesize;  		$this->phpbb_root_path = $phpbb_root_path;  		$this->php_ext = $php_ext;  		$this->path_helper = $path_helper; diff --git a/phpBB/phpbb/avatar/driver/gravatar.php b/phpBB/phpbb/avatar/driver/gravatar.php index bb4977c30c..b8cf84424a 100644 --- a/phpBB/phpbb/avatar/driver/gravatar.php +++ b/phpBB/phpbb/avatar/driver/gravatar.php @@ -98,8 +98,8 @@ class gravatar extends \phpbb\avatar\driver\driver  			return false;  		} -		// Make sure getimagesize works... -		if (function_exists('getimagesize') && ($row['avatar_width'] <= 0 || $row['avatar_height'] <= 0)) +		// Get image dimensions if they are not set +		if ($row['avatar_width'] <= 0 || $row['avatar_height'] <= 0)  		{  			/**  			* default to the minimum of the maximum allowed avatar size if the size @@ -108,20 +108,20 @@ class gravatar extends \phpbb\avatar\driver\driver  			$row['avatar_width'] = $row['avatar_height'] = min($this->config['avatar_max_width'], $this->config['avatar_max_height']);  			$url = $this->get_gravatar_url($row); -			if (($row['avatar_width'] <= 0 || $row['avatar_height'] <= 0) && (($image_data = getimagesize($url)) === false)) +			if (($row['avatar_width'] <= 0 || $row['avatar_height'] <= 0) && (($image_data = $this->imagesize->getImageSize($url)) === false))  			{  				$error[] = 'UNABLE_GET_IMAGE_SIZE';  				return false;  			} -			if (!empty($image_data) && ($image_data[0] <= 0 || $image_data[1] <= 0)) +			if (!empty($image_data) && ($image_data['width'] <= 0 || $image_data['width'] <= 0))  			{  				$error[] = 'AVATAR_NO_SIZE';  				return false;  			} -			$row['avatar_width'] = ($row['avatar_width'] && $row['avatar_height']) ? $row['avatar_width'] : $image_data[0]; -			$row['avatar_height'] = ($row['avatar_width'] && $row['avatar_height']) ? $row['avatar_height'] : $image_data[1]; +			$row['avatar_width'] = ($row['avatar_width'] && $row['avatar_height']) ? $row['avatar_width'] : $image_data['width']; +			$row['avatar_height'] = ($row['avatar_width'] && $row['avatar_height']) ? $row['avatar_height'] : $image_data['height'];  		}  		if ($row['avatar_width'] <= 0 || $row['avatar_height'] <= 0) diff --git a/phpBB/phpbb/avatar/driver/local.php b/phpBB/phpbb/avatar/driver/local.php index 75c384f31e..f5547c4bc6 100644 --- a/phpBB/phpbb/avatar/driver/local.php +++ b/phpBB/phpbb/avatar/driver/local.php @@ -174,13 +174,15 @@ class local extends \phpbb\avatar\driver\driver  				// Match all images in the gallery folder  				if (preg_match('#^[^&\'"<>]+\.(?:' . implode('|', $this->allowed_extensions) . ')$#i', $image) && is_file($file_path . '/' . $image))  				{ -					if (function_exists('getimagesize')) +					$dims = $this->imagesize->getImageSize($file_path . '/' . $image); + +					if ($dims === false)  					{ -						$dims = getimagesize($file_path . '/' . $image); +						$dims = array(0, 0);  					}  					else  					{ -						$dims = array(0, 0); +						$dims = array($dims['width'], $dims['height']);  					}  					$cat = ($path == $file_path) ? $user->lang['NO_AVATAR_CATEGORY'] : str_replace("$path/", '', $file_path);  					$avatar_list[$cat][$image] = array( diff --git a/phpBB/phpbb/avatar/driver/remote.php b/phpBB/phpbb/avatar/driver/remote.php index 4b0ee3f06f..0526b9184e 100644 --- a/phpBB/phpbb/avatar/driver/remote.php +++ b/phpBB/phpbb/avatar/driver/remote.php @@ -92,38 +92,30 @@ class remote extends \phpbb\avatar\driver\driver  			return false;  		} -		// Make sure getimagesize works... -		if (function_exists('getimagesize')) +		// Get image dimensions +		if (($width <= 0 || $height <= 0) && (($image_data = $this->imagesize->getImageSize($url)) === false))  		{ -			if (($width <= 0 || $height <= 0) && (($image_data = @getimagesize($url)) === false)) -			{ -				$error[] = 'UNABLE_GET_IMAGE_SIZE'; -				return false; -			} - -			if (!empty($image_data) && ($image_data[0] <= 0 || $image_data[1] <= 0)) -			{ -				$error[] = 'AVATAR_NO_SIZE'; -				return false; -			} - -			$width = ($width && $height) ? $width : $image_data[0]; -			$height = ($width && $height) ? $height : $image_data[1]; +			$error[] = 'UNABLE_GET_IMAGE_SIZE'; +			return false;  		} -		if ($width <= 0 || $height <= 0) +		if (!empty($image_data) && ($image_data['width'] <= 0 || $image_data['height'] <= 0))  		{  			$error[] = 'AVATAR_NO_SIZE';  			return false;  		} -		if (!class_exists('fileupload')) +		$width = ($width && $height) ? $width : $image_data['width']; +		$height = ($width && $height) ? $height : $image_data['height']; + +		if ($width <= 0 || $height <= 0)  		{ -			include($this->phpbb_root_path . 'includes/functions_upload.' . $this->php_ext); +			$error[] = 'AVATAR_NO_SIZE'; +			return false;  		} -		$types = \fileupload::image_types(); -		$extension = strtolower(\filespec::get_extension($url)); +		$types = \phpbb\files\upload::image_types(); +		$extension = strtolower(\phpbb\files\filespec::get_extension($url));  		// Check if this is actually an image  		if ($file_stream = @fopen($url, 'r')) @@ -172,15 +164,15 @@ class remote extends \phpbb\avatar\driver\driver  			return false;  		} -		if (!empty($image_data) && (!isset($types[$image_data[2]]) || !in_array($extension, $types[$image_data[2]]))) +		if (!empty($image_data) && (!isset($types[$image_data['type']]) || !in_array($extension, $types[$image_data['type']])))  		{ -			if (!isset($types[$image_data[2]])) +			if (!isset($types[$image_data['type']]))  			{  				$error[] = 'UNABLE_GET_IMAGE_SIZE';  			}  			else  			{ -				$error[] = array('IMAGE_FILETYPE_MISMATCH', $types[$image_data[2]][0], $extension); +				$error[] = array('IMAGE_FILETYPE_MISMATCH', $types[$image_data['type']][0], $extension);  			}  			return false; diff --git a/phpBB/phpbb/avatar/driver/upload.php b/phpBB/phpbb/avatar/driver/upload.php index e44157294c..a0c23cb624 100644 --- a/phpBB/phpbb/avatar/driver/upload.php +++ b/phpBB/phpbb/avatar/driver/upload.php @@ -19,9 +19,9 @@ namespace phpbb\avatar\driver;  class upload extends \phpbb\avatar\driver\driver  {  	/** -	* @var \phpbb\mimetype\guesser -	*/ -	protected $mimetype_guesser; +	 * @var \phpbb\filesystem\filesystem_interface +	 */ +	protected $filesystem;  	/**  	* @var \phpbb\event\dispatcher_interface @@ -29,24 +29,31 @@ class upload extends \phpbb\avatar\driver\driver  	protected $dispatcher;  	/** +	 * @var \phpbb\files\factory +	 */ +	protected $files_factory; + +	/**  	* Construct a driver object  	*  	* @param \phpbb\config\config $config phpBB configuration  	* @param string $phpbb_root_path Path to the phpBB root  	* @param string $php_ext PHP file extension -	* @param \phpbb_path_helper $path_helper phpBB path helper -	* @param \phpbb\mimetype\guesser $mimetype_guesser Mimetype guesser +	* @param \phpbb\filesystem\filesystem_interface $filesystem phpBB filesystem helper +	* @param \phpbb\path_helper $path_helper phpBB path helper  	* @param \phpbb\event\dispatcher_interface $dispatcher phpBB Event dispatcher object +	* @param \phpbb\files\factory $files_factory File classes factory  	* @param \phpbb\cache\driver\driver_interface $cache Cache driver  	*/ -	public function __construct(\phpbb\config\config $config, $phpbb_root_path, $php_ext, \phpbb\path_helper $path_helper, \phpbb\mimetype\guesser $mimetype_guesser, \phpbb\event\dispatcher_interface $dispatcher, \phpbb\cache\driver\driver_interface $cache = null) +	public function __construct(\phpbb\config\config $config, $phpbb_root_path, $php_ext, \phpbb\filesystem\filesystem_interface $filesystem, \phpbb\path_helper $path_helper, \phpbb\event\dispatcher_interface $dispatcher, \phpbb\files\factory $files_factory, \phpbb\cache\driver\driver_interface $cache = null)  	{  		$this->config = $config;  		$this->phpbb_root_path = $phpbb_root_path;  		$this->php_ext = $php_ext; +		$this->filesystem = $filesystem;  		$this->path_helper = $path_helper; -		$this->mimetype_guesser = $mimetype_guesser;  		$this->dispatcher = $dispatcher; +		$this->files_factory = $files_factory;  		$this->cache = $cache;  	} @@ -92,19 +99,24 @@ class upload extends \phpbb\avatar\driver\driver  			return false;  		} -		if (!class_exists('fileupload')) -		{ -			include($this->phpbb_root_path . 'includes/functions_upload.' . $this->php_ext); -		} - -		$upload = new \fileupload('AVATAR_', $this->allowed_extensions, $this->config['avatar_filesize'], $this->config['avatar_min_width'], $this->config['avatar_min_height'], $this->config['avatar_max_width'], $this->config['avatar_max_height'], (isset($this->config['mime_triggers']) ? explode('|', $this->config['mime_triggers']) : false)); +		/** @var \phpbb\files\upload $upload */ +		$upload = $this->files_factory->get('upload') +			->set_error_prefix('AVATAR_') +			->set_allowed_extensions($this->allowed_extensions) +			->set_max_filesize($this->config['avatar_filesize']) +			->set_allowed_dimensions( +				$this->config['avatar_min_width'], +				$this->config['avatar_min_height'], +				$this->config['avatar_max_width'], +				$this->config['avatar_max_height']) +			->set_disallowed_content((isset($this->config['mime_triggers']) ? explode('|', $this->config['mime_triggers']) : false));  		$url = $request->variable('avatar_upload_url', '');  		$upload_file = $request->file('avatar_upload_file');  		if (!empty($upload_file['name']))  		{ -			$file = $upload->form_upload('avatar_upload_file', $this->mimetype_guesser); +			$file = $upload->handle_upload('files.types.form', 'avatar_upload_file');  		}  		else if (!empty($this->config['allow_avatar_remote_upload']) && !empty($url))  		{ @@ -134,7 +146,7 @@ class upload extends \phpbb\avatar\driver\driver  				return false;  			} -			$file = $upload->remote_upload($url, $this->mimetype_guesser); +			$file = $upload->handle_upload('files.types.remote', $url);  		}  		else  		{ @@ -278,6 +290,6 @@ class upload extends \phpbb\avatar\driver\driver  	*/  	protected function can_upload()  	{ -		return (file_exists($this->phpbb_root_path . $this->config['avatar_path']) && phpbb_is_writable($this->phpbb_root_path . $this->config['avatar_path']) && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')); +		return (file_exists($this->phpbb_root_path . $this->config['avatar_path']) && $this->filesystem->is_writable($this->phpbb_root_path . $this->config['avatar_path']) && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on'));  	}  } | 
