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); }
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; }