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 | 33 | ||||
| -rw-r--r-- | phpBB/phpbb/avatar/driver/upload.php | 15 | 
5 files changed, 43 insertions, 32 deletions
| diff --git a/phpBB/phpbb/avatar/driver/driver.php b/phpBB/phpbb/avatar/driver/driver.php index b3ced7edf7..b6fd380bda 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 2082e0fd02..badbd9421d 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 36087f8ba0..88a139f81e 100644 --- a/phpBB/phpbb/avatar/driver/local.php +++ b/phpBB/phpbb/avatar/driver/local.php @@ -172,13 +172,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..90443c9b4e 100644 --- a/phpBB/phpbb/avatar/driver/remote.php +++ b/phpBB/phpbb/avatar/driver/remote.php @@ -92,25 +92,22 @@ 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; -			} +			$error[] = 'UNABLE_GET_IMAGE_SIZE'; +			return false; +		} -			$width = ($width && $height) ? $width : $image_data[0]; -			$height = ($width && $height) ? $height : $image_data[1]; +		if (!empty($image_data) && ($image_data['width'] <= 0 || $image_data['height'] <= 0)) +		{ +			$error[] = 'AVATAR_NO_SIZE'; +			return false;  		} +		$width = ($width && $height) ? $width : $image_data['width']; +		$height = ($width && $height) ? $height : $image_data['height']; +  		if ($width <= 0 || $height <= 0)  		{  			$error[] = 'AVATAR_NO_SIZE'; @@ -172,15 +169,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 a1d84345e1..1939a91cfe 100644 --- a/phpBB/phpbb/avatar/driver/upload.php +++ b/phpBB/phpbb/avatar/driver/upload.php @@ -19,6 +19,11 @@ namespace phpbb\avatar\driver;  class upload extends \phpbb\avatar\driver\driver  {  	/** +	 * @var \phpbb\filesystem\filesystem_interface +	 */ +	protected $filesystem; + +	/**  	* @var \phpbb\mimetype\guesser  	*/  	protected $mimetype_guesser; @@ -34,16 +39,18 @@ class upload extends \phpbb\avatar\driver\driver  	* @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\filesystem\filesystem_interface phpBB filesystem helper +	* @param \phpbb\path_helper $path_helper phpBB path helper  	* @param \phpbb\mimetype\guesser $mimetype_guesser Mimetype guesser  	* @param \phpbb\event\dispatcher_interface $dispatcher phpBB Event dispatcher object  	* @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\mimetype\guesser $mimetype_guesser, \phpbb\event\dispatcher_interface $dispatcher, \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; @@ -97,7 +104,7 @@ class upload extends \phpbb\avatar\driver\driver  			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)); +		$upload = new \fileupload($this->filesystem, '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));  		$url = $request->variable('avatar_upload_url', '');  		$upload_file = $request->file('avatar_upload_file'); @@ -278,6 +285,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'));  	}  } | 
