chcreaimages.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. include_once _PS_MODULE_DIR_.'chcreateur/config/define.inc.php';
  3. class Chcreaimages extends ObjectModel
  4. {
  5. public $id;
  6. public $id_images;
  7. public $id_chcreaposts;
  8. public $name;
  9. public $type;
  10. public static $definition = [
  11. 'table' => 'chcrea_images',
  12. 'primary' => 'id_images',
  13. 'multilang' => false,
  14. 'fields' => [
  15. 'id_chcreaposts' => ['type' => self::TYPE_INT, 'validate' => 'isunsignedInt'],
  16. 'name' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => false],
  17. 'type' => ['type' => self::TYPE_STRING, 'validate' => 'isString', 'lang' => false],
  18. ],
  19. ];
  20. public function __construct($id = null, $id_lang = null, $id_shop = null)
  21. {
  22. parent::__construct($id, $id_lang, $id_shop);
  23. }
  24. public function record()
  25. {
  26. }
  27. public function addUnique()
  28. {
  29. $exist = $this->getByPosts();
  30. if ( count($exist) > 0 ) {
  31. $ids = [];
  32. foreach($exist as $img) {
  33. $ids[] = $img['id_images'];
  34. }
  35. $this->deleteSelection($ids);
  36. }
  37. return $this->add();
  38. }
  39. public function getByPosts()
  40. {
  41. $sql = ' SELECT * ';
  42. $sql .= ' FROM `'._DB_PREFIX_.'chcrea_images` ';
  43. $sql .= ' WHERE `id_chcreaposts` = '.$this->id_chcreaposts;
  44. $sql .= ' AND `type` = "'.$this->type.'"';
  45. return Db::getInstance()->executeS($sql);
  46. }
  47. public function getGallery($id_chcreaposts)
  48. {
  49. $this->id_chcreaposts = $id_chcreaposts;
  50. $this->type = 'gallery';
  51. return $this->getByPosts();
  52. }
  53. public function getUrls($id_chcreaposts, $type = 'post')
  54. {
  55. $this->id_chcreaposts = $id_chcreaposts;
  56. $this->type = $type;
  57. $result = $this->getByPosts();
  58. $imgs = [];
  59. foreach($result as $img) {
  60. $imgs[] = chcrea_img_uri.$this->id_chcreaposts.'/'.$img['name'];
  61. }
  62. return $imgs;
  63. }
  64. public function getAllUrls($id_chcreaposts, $type = 'post')
  65. {
  66. $this->id_chcreaposts = $id_chcreaposts;
  67. $this->type = $type;
  68. $result = $this->getByPosts();
  69. $imgs = [];
  70. $GetAllImageTypes = Chcreaimagetypeclass::GetAllImageTypes($this->type);
  71. if ( count($result) == 1 ) {
  72. if (isset($GetAllImageTypes) && !empty($GetAllImageTypes)) {
  73. foreach ($GetAllImageTypes as $imagetype) {
  74. $name = $imagetype['name'].'-'.$result[0]['name'];
  75. $imgs[0][$imagetype['name']] = chcrea_img_uri.$this->id_chcreaposts.'/'.$name;
  76. if (!$this->ImageExists($name)) {
  77. $imgs[0][$imagetype['name']] = chcrea_img_uri.$this->id_chcreaposts.'/'.$imagetype['name'].'-noimage.jpg';
  78. }
  79. }
  80. }
  81. }
  82. if ( count($result) > 1 ) {
  83. if (isset($GetAllImageTypes) && !empty($GetAllImageTypes)) {
  84. foreach($result as $key => $img) {
  85. foreach ($GetAllImageTypes as $imagetype) {
  86. $name = $imagetype['name'].'-'.$img['name'];
  87. $imgs[$key][$imagetype['name']] = chcrea_img_uri.$this->id_chcreaposts.'/'.$name;
  88. if (!$this->ImageExists($name)) {
  89. $imgs[$key][$imagetype['name']] = chcrea_img_uri.$this->id_chcreaposts.'/'.$imagetype['name'].'-noimage.jpg';
  90. }
  91. }
  92. }
  93. }
  94. }
  95. return $imgs;
  96. }
  97. public function ImageExists($file = null)
  98. {
  99. if (null == $file) {
  100. return false;
  101. }
  102. $image = chcrea_img_dir.$this->id_chcreaposts.'/'.$file;
  103. if (file_exists($image)) {
  104. return true;
  105. }
  106. return false;
  107. }
  108. public function getPath($dir=null)
  109. {
  110. if($dir == null) {
  111. $dir = chcrea_img_dir.$this->id_chcreaposts.'/';
  112. if ( !file_exists($dir) ) {
  113. $oldmask = umask(000);
  114. mkdir($dir );
  115. chmod($dir, 0775);
  116. umask($oldmask);
  117. }
  118. }
  119. return $dir;
  120. }
  121. /**
  122. * @param mixed $name
  123. * @param mixed $dir=null
  124. *
  125. * @return $array
  126. */
  127. public function uploadGallery($name, $id_chcreaposts, $dir=null)
  128. {
  129. $this->id_chcreaposts = $id_chcreaposts;
  130. $this->type = 'gallery';
  131. $dir = $this->getPath($dir);
  132. $results_imgs = false;
  133. if (isset($_FILES[$name]) && isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name'])) {
  134. $GetAllImageTypes = Chcreaimagetypeclass::GetAllImageTypes('gallery');
  135. foreach ($_FILES[$name]['name'] as $fileskey => $filesvalue) {
  136. // start upload
  137. if (isset($_FILES[$name]) && isset($_FILES[$name]['tmp_name'][$fileskey]) && !empty($_FILES[$name]['tmp_name'][$fileskey])) {
  138. $ext = substr($_FILES[$name]['name'][$fileskey], strrpos($_FILES[$name]['name'][$fileskey], '.') + 1);
  139. $basename_file_name = basename($_FILES[$name]["name"][$fileskey]);
  140. $strlen = strlen($basename_file_name);
  141. $strlen_ext = strlen($ext);
  142. $basename_file_name = substr($basename_file_name, 0, ($strlen-$strlen_ext));
  143. $link_rewrite_file_name = Tools::link_rewrite($basename_file_name);
  144. $file_name = $link_rewrite_file_name.'.'.$ext;
  145. $path = $dir.$file_name;
  146. if(move_uploaded_file($_FILES[$name]['tmp_name'][$fileskey], $path)) {
  147. if(isset($GetAllImageTypes) && !empty($GetAllImageTypes)) {
  148. foreach($GetAllImageTypes as $imagetype) {
  149. ImageManager::resize(
  150. $path,
  151. $dir.$imagetype['name'].'-'.$file_name,
  152. (int)$imagetype['width'],
  153. (int)$imagetype['height'], $ext
  154. );
  155. }
  156. }
  157. $this->name = $file_name;
  158. if ( $this->add() ) {
  159. $results_imgs = true;
  160. }
  161. }
  162. }
  163. // end upload
  164. }
  165. return $results_imgs;
  166. } else {
  167. return $results_imgs;
  168. }
  169. }
  170. /**
  171. * @param mixed $name
  172. * @param mixed $dir=null
  173. *
  174. * @return $string
  175. */
  176. public function uploadMedia($name, $id_chcreaposts, $dir=null)
  177. {
  178. $this->id_chcreaposts = $id_chcreaposts;
  179. $this->type = 'post';
  180. $dir = $this->getPath($dir);
  181. $file_name = false;
  182. if (isset($_FILES[$name]) && isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name'])) {
  183. $ext = substr($_FILES[$name]['name'], strrpos($_FILES[$name]['name'], '.') + 1);
  184. $basename_file_name = basename($_FILES[$name]["name"]);
  185. $strlen = strlen($basename_file_name);
  186. $strlen_ext = strlen($ext);
  187. $basename_file_name = substr($basename_file_name, 0, ($strlen-$strlen_ext));
  188. $link_rewrite_file_name = Tools::link_rewrite($basename_file_name);
  189. $file_name = $link_rewrite_file_name.'.'.$ext;
  190. $path = $dir.$file_name;
  191. $GetAllImageTypes = Chcreaimagetypeclass::GetAllImageTypes('main');
  192. if(!move_uploaded_file($_FILES[$name]['tmp_name'], $path)) {
  193. return false;
  194. } else {
  195. if(isset($GetAllImageTypes) && !empty($GetAllImageTypes)) {
  196. foreach($GetAllImageTypes as $imagetype) {
  197. ImageManager::resize($path, $dir.$imagetype['name'].'-'.$file_name, (int)$imagetype['width'], (int)$imagetype['height'], $ext);
  198. }
  199. }
  200. $this->name = $file_name;
  201. if ( $this->addUnique() ) {
  202. return true;
  203. }
  204. return false;
  205. }
  206. } else {
  207. return $file_name;
  208. }
  209. }
  210. }