diff options
Diffstat (limited to 'mod/lightpics/lib/upload.php')
| -rw-r--r-- | mod/lightpics/lib/upload.php | 119 | 
1 files changed, 119 insertions, 0 deletions
diff --git a/mod/lightpics/lib/upload.php b/mod/lightpics/lib/upload.php new file mode 100644 index 000000000..a83323f16 --- /dev/null +++ b/mod/lightpics/lib/upload.php @@ -0,0 +1,119 @@ +<?php +/** + * Helper library for working with uploads + */ + +/** + * Guess on the mimetype based on file extension + * + * @param string $originalName + * @return string + */ +function tp_upload_get_mimetype($originalName) { +	$extension = substr(strrchr($originalName, '.'), 1); +	switch (strtolower($extension)) { +		case 'png': +			return 'image/png'; +			break; +		case 'gif': +			return 'image/gif'; +			break; +		case 'jpg': +		case 'jpeg': +			return 'image/jpeg'; +			break; +		default: +			return 'unknown'; +			break; +	} +} + +/** + * Check if this is an image + *  + * @param string $mime + * @return bool false = not image + */ +function tp_upload_check_format($mime) { +	$accepted_formats = array( +		'image/jpeg', +		'image/png', +		'image/gif', +		'image/pjpeg', +		'image/x-png', +	); + +	if (!in_array($mime, $accepted_formats)) { +		return false; +	} +	return true; +} + +/** + * Check if there is enough memory to process this image + *  + * @param string $image_lib + * @param int $num_pixels + * @return bool false = not enough memory + */ +function tp_upload_memory_check($image_lib, $num_pixels) { +	if ($image_lib !== 'GD') { +		return true; +	} + +	$mem_avail = ini_get('memory_limit'); +	$mem_avail = rtrim($mem_avail, 'M'); +	$mem_avail = $mem_avail * 1024 * 1024; +	$mem_used = memory_get_usage(); +	$mem_required = ceil(5.35 * $num_pixels); + +	$mem_avail = $mem_avail - $mem_used - 2097152; // 2 MB buffer +	if ($mem_required > $mem_avail) { +		return false; +	} + +	return true; +} + +/** + * Check if image is within limits + * + * @param int $image_size + * @return bool false = too large + */ +function tp_upload_check_max_size($image_size) { +	$max_file_size = (float) elgg_get_plugin_setting('maxfilesize', 'tidypics'); +	if (!$max_file_size) { +		// default to 5 MB if not set +		$max_file_size = 5; +	} +	// convert to bytes from MBs +	$max_file_size = 1024 * 1024 * $max_file_size; +	return $image_size <= $max_file_size; +} + +/** + * Check if this image pushes user over quota + * + * @param int $image_size + * @param int $owner_guid + * @return bool false = exceed quota + */ +function tp_upload_check_quota($image_size, $owner_guid) { +	static $quota; +	 +	if (!isset($quota)) { +		$quota = elgg_get_plugin_setting('quota', 'tidypics'); +		$quota = 1024 * 1024 * $quota; +	} + +	if ($quota == 0) { +		// no quota +		return true; +	} + +	$owner = get_entity($owner_guid); +	$image_repo_size_md = (int)$owner->image_repo_size; +	 +	return ($image_repo_size + $image_size) < $quota; +}
\ No newline at end of file  | 
