Пример #1
0
 public function canUpload($filePath, $trimPath = true)
 {
     $params = JUDownloadHelper::getParams();
     $legal_upload_extensions = $params->get('legal_upload_extensions', 'bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,swf,txt,xcf,xls,zip,rar');
     $max_upload_file_size = (int) ($params->get('max_upload_file_size', 10) * 1024 * 1024);
     $check_mime = $params->get('check_mime_uploaded_file', 0);
     $legal_mime = $params->get('legal_mime_types', 'image/jpeg,image/gif,image/png,image/bmp,application/x-shockwave-flash,application/msword,application/excel,application/pdf,application/powerpoint,text/plain,application/zip,application/zip,application/x-rar-compressed');
     $ignored_extensions = $params->get('ignored_extensions', '');
     $image_extensions = $params->get('image_extensions', 'bmp,gif,jpg,png');
     $file = array();
     $file['tmp_name'] = $filePath;
     $file['name'] = basename($file['tmp_name']);
     if ($trimPath) {
         $file['name'] = substr($file['name'], 0, -5);
     }
     $file['size'] = filesize($file['tmp_name']);
     $error = array();
     return JUDownloadFrontHelperPermission::canUpload($file, $error, $legal_upload_extensions, $max_upload_file_size, $check_mime, $legal_mime, $ignored_extensions, $image_extensions);
 }
Пример #2
0
	public function filterField($values)
	{
		$oldImages = $values;
		$app       = JFactory::getApplication();
		$newImages = $app->input->files->get('field_' . $this->id);

		$gallery = $gallery['old'] = $gallery['new'] = array();

		$params         = JUDownloadHelper::getParams(null, $this->doc_id);
		$maxUploadImage = 4;
		$count          = 0;

		if ($this->doc_id)
		{
			$db    = JFactory::getDbo();
			$query = 'SELECT id FROM #__judownload_images WHERE doc_id = ' . (int) $this->doc_id;
			$db->setQuery($query);
			$imageIds = $db->loadColumn();

			foreach ($oldImages AS $key => $image)
			{
				if (!in_array($image['id'], $imageIds))
				{
					continue;
				}

				if ($maxUploadImage > 0 && $count >= $maxUploadImage)
				{
					break;
				}

				$gallery['old'][] = $image;

				if (!$image['remove'])
				{
					$count++;
				}
			}
		}

		$error = array();
		if ($newImages && (($count < $maxUploadImage && $maxUploadImage > 0) || $maxUploadImage <= 0))
		{
			$legal_extensions            = "jpeg,jpg,png,gif,bmp";
			$legal_mime                  = "image/jpeg,image/pjpeg,image/png,image/gif,image/bmp,image/x-windows-bmp";
			$image_min_width             = $params->get("image_min_width", 50);
			$image_min_height            = $params->get("image_min_height", 50);
			$image_max_width             = $params->get("image_max_width", 1024);
			$image_max_height            = $params->get("image_max_height", 1024);
			$image_max_size              = $params->get("image_max_size", 400) * 1024;
			$num_files_exceed_limit      = 0;
			$num_files_invalid_dimension = 0;
			foreach ($newImages AS $image)
			{
				if ($image['name'])
				{
					$image['name'] = str_replace(' ', '_', JFile::makeSafe($image['name']));

					if ($count >= $maxUploadImage)
					{
						$num_files_exceed_limit++;
						continue;
					}

					if (!JUDownloadFrontHelperPermission::canUpload($image, $error, $legal_extensions, $image_max_size, true, $legal_mime, '', $legal_extensions))
					{
						continue;
					}

					$image_dimension = getimagesize($image['tmp_name']);

					if ($image_dimension[0] < $image_min_width || $image_dimension[1] < $image_min_height || $image_dimension[0] > $image_max_width || $image_dimension[1] > $image_max_height)
					{
						$num_files_invalid_dimension++;
						continue;
					}

					$gallery['new'][] = $image;
					$count++;
				}
			}

			$app = JFactory::getApplication();

			if ($error)
			{
				foreach ($error AS $key => $count)
				{
					switch ($key)
					{
						case 'WARN_SOURCE':
						case 'WARN_FILENAME':
						case 'WARN_FILETYPE':
						case 'WARN_FILETOOLARGE' :
						case 'WARN_INVALID_IMG' :
						case 'WARN_INVALID_MIME' :
						case 'WARN_IEXSS' :
							$error_str = JText::plural("COM_JUDOWNLOAD_N_FILE_" . $key, $count);
							break;
					}

					$app->enqueueMessage($error_str, 'notice');
				}
			}

			if ($num_files_exceed_limit)
			{
				$image_upload_limit = JUDownloadHelper::formatBytes($image_max_size * 1024);
				$app->enqueueMessage(JText::plural('COM_JUDOWNLOAD_N_IMAGES_ARE_NOT_SAVED_BECAUSE_THEY_EXCEEDED_FILE_SIZE_LIMIT', $num_files_exceed_limit, $image_upload_limit), 'notice');
			}

			if ($num_files_invalid_dimension)
			{
				$app->enqueueMessage(JText::plural('COM_JUDOWNLOAD_N_IMAGES_ARE_NOT_SAVED_BECAUSE_THEY_ARE_NOT_VALID_DIMENSION', $num_files_invalid_dimension, $image_min_width, $image_max_width, $image_min_height, $image_max_height), 'notice');
			}
		}

		$gallery['count'] = $count;

		return $gallery;
	}