public function filterField($values) { $oldImages = $values ? $values : array(); $app = JFactory::getApplication(); $newImages = $app->input->files->get('field_' . $this->id); $gallery = $gallery['old'] = $gallery['new'] = array(); $params = JUDirectoryHelper::getParams(null, $this->listing_id); $maxUploadImage = 4; $count = 0; if ($this->listing_id) { $db = JFactory::getDbo(); $query = 'SELECT id FROM #__judirectory_images WHERE listing_id = ' . (int) $this->listing_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 (!JUDirectoryFrontHelperPermission::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_JUDIRECTORY_N_FILE_" . $key, $count); break; } $app->enqueueMessage($error_str, 'notice'); } } if ($num_files_exceed_limit) { $image_upload_limit = JUDirectoryHelper::formatBytes($image_max_size * 1024); $app->enqueueMessage(JText::plural('COM_JUDIRECTORY_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_JUDIRECTORY_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; }