Esempio n. 1
0
 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;
 }