Доработать хак

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Доработать хак ресайза изображений

#1 22 сентября 2015 в 17:45
Необходимо исправить отображение пресетов изображений в списках контента и фотоальбомах. Чтобы соответствовали изображениям, указанным в компоненте «загрузка изображений», который передаёт данные об изображениях в «поля контента» (Till мне делал верстку, сделал это с помощью хака по пути /system/core/uploader.php, внеся в uploader.php хак ресайза изображений, в данный момент этот разработчик не выходит на связь и игнорирует запросы в isq и на почту) Этот хак неправильно работает с загрузкой изображений в других компонентах, в том числе платных (использующих markitUp – чат, форум, комментарии и т.д.), а это на всем сайте, он их делает все квадратными. В данный момент хак с сайта я удалил.
Задача: доработать хак так, чтобы он при ресайзе изображений, если для этой картинки нет набора пресетов — не трогал ее.

Готов обсудить ТЗ и оплату в личке или в icq

Оригинал файла uploader.php

  1. <?php
  2.  
  3. class cmsUploader {
  4.  
  5. public function __construct(){ }
  6.  
  7. //============================================================================//
  8. //============================================================================//
  9.  
  10. /**
  11.   * Возвращает строку с максимальный размером загружаемых файлов,
  12.   * установленным в php.ini
  13.   * @return string
  14.   */
  15. public function getMaxUploadSize(){
  16. $max_size = ini_get('upload_max_filesize');
  17. $max_size = str_replace('M', 'Мb', $max_size);
  18. $max_size = str_replace('K', 'Kb', $max_size);
  19. return $max_size;
  20. }
  21.  
  22. public function isUploaded($name){
  23. if (!isset($_FILES[$name])) { return false; }
  24. if (!$_FILES[$name]['size']) { return false; }
  25. return true;
  26. }
  27.  
  28. public function isUploadedXHR($name){
  29. return isset($_GET['qqfile']);
  30. }
  31.  
  32. //============================================================================//
  33. //============================================================================//
  34.  
  35. public function resizeImage($source_file, $size){
  36.  
  37. $cfg = cmsConfig::getInstance();
  38. $user = cmsUser::getInstance();
  39.  
  40. $dest_dir = $this->getUploadDestinationDirectory();
  41.  
  42. $dest_info = pathinfo($source_file);
  43. $dest_ext = $dest_info['extension'];
  44. $dest_file = substr(md5( $user->id . $user->files_count . microtime(true) . $size['width'] ), 0, 8) . '.' . $dest_ext;
  45. $dest_file = $dest_dir . '/' . $dest_file;
  46.  
  47. $user->increaseFilesCount();
  48.  
  49. if (!isset($size['height'])) { $size['height'] = $size['width']; }
  50.  
  51. if ($this->imageCopyResized($source_file, $dest_file, $size['width'], $size['height'], $size['square'])) {
  52.  
  53. $url = str_replace($cfg->upload_path, '', $dest_file);
  54.  
  55. return $url;
  56.  
  57. }
  58.  
  59. return false;
  60.  
  61. }
  62.  
  63. //============================================================================//
  64. //============================================================================//
  65.  
  66. /**
  67.   * Загружает файл на сервер
  68.   * @param string $post_filename Название поля с файлом в массиве $_FILES
  69.   * @param string $allowed_ext Список допустимых расширений (через запятую)
  70.   * @param string $allowed_size Максимальный размер файла (в байтах)
  71.   * @param string $destination Папка назначения (внутри пути upload)
  72.   * @return array
  73.   */
  74. public function upload($post_filename, $allowed_ext = false, $allowed_size = 0, $destination = false){
  75.  
  76. if ($this->isUploadedXHR($post_filename)){
  77. return $this->uploadXHR($post_filename, $allowed_ext, $allowed_size, $destination);
  78. }
  79.  
  80. if ($this->isUploaded($post_filename)){
  81. return $this->uploadForm($post_filename, $allowed_ext, $allowed_size, $destination);
  82. }
  83.  
  84. return array(
  85. 'success' => false,
  86. 'error' => LANG_UPLOAD_ERR_NO_FILE
  87. );
  88.  
  89. }
  90.  
  91. //============================================================================//
  92. //============================================================================//
  93.  
  94. /**
  95.   * Загружает файл на сервер переданный через input типа file
  96.   * @param string $post_filename Название поля с файлом в массиве $_FILES
  97.   * @param string $allowed_ext Список допустимых расширений (через запятую)
  98.   * @param string $allowed_size Максимальный размер файла (в байтах)
  99.   * @param string $destination Папка назначения (внутри пути upload)
  100.   * @return array
  101.   */
  102. public function uploadForm($post_filename, $allowed_ext = false, $allowed_size = 0, $destination = false){
  103.  
  104. $config = cmsConfig::getInstance();
  105. $user = cmsUser::getInstance();
  106.  
  107. $source = $_FILES[$post_filename]['tmp_name'];
  108. $error_code = $_FILES[$post_filename]['error'];
  109.  
  110. $dest_size = $_FILES[$post_filename]['size'];
  111. $dest_name = basename(files_sanitize_name($_FILES[$post_filename]['name']));
  112. $dest_ext = mb_strtolower(pathinfo($dest_name, PATHINFO_EXTENSION));
  113.  
  114. if ($allowed_ext !== false){
  115. $allowed_ext = explode(",", $allowed_ext);
  116. foreach($allowed_ext as $idx=>$ext){ $allowed_ext[$idx] = mb_strtolower(trim(trim($ext, '., '))); }
  117. if (!in_array($dest_ext, $allowed_ext)){
  118. return array(
  119. 'error' => LANG_UPLOAD_ERR_MIME,
  120. 'success' => false,
  121. 'name' => $dest_name
  122. );
  123. }
  124. }
  125.  
  126. if ($allowed_size){
  127. if ($dest_size > $allowed_size){
  128. return array(
  129. 'error' => sprintf(LANG_UPLOAD_ERR_INI_SIZE, files_format_bytes($allowed_size)),
  130. 'success' => false,
  131. 'name' => $dest_name
  132. );
  133. }
  134. }
  135.  
  136. if (!$destination){
  137.  
  138. $user->increaseFilesCount();
  139. $dest_dir = $this->getUploadDestinationDirectory();
  140. $dest_file = substr(md5( $user->id . $user->files_count . microtime(true) ), 0, 8) . '.' . $dest_ext;
  141. $destination = $dest_dir . '/' . $dest_file;
  142.  
  143. } else {
  144.  
  145. $destination = $config->upload_path . $destination . '/' . $dest_name;
  146.  
  147. }
  148.  
  149. return $this->moveUploadedFile($source, $destination, $error_code, $dest_name, $dest_size);
  150.  
  151. }
  152.  
  153. //============================================================================//
  154. //============================================================================//
  155.  
  156. /**
  157.   * Загружает файл на сервер переданный через XHR
  158.   * @param string $post_filename Название поля с файлом в массиве $_GET
  159.   * @param string $allowed_ext Список допустимых расширений (через запятую)
  160.   * @param string $allowed_size Максимальный размер файла (в байтах)
  161.   * @param string $destination Папка назначения (внутри пути upload)
  162.   * @return array
  163.   */
    Прикрепленный файл
    _6nmqf.doc 26 Кб
#2 24 сентября 2015 в 00:57
Проблема решена! jokeKreator помог! Спасибо ему большое!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.