PageRenderTime 39ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/posted_img_list_thumbnail.php

https://github.com/igorw-forks/icy_phoenix
PHP | 324 lines | 251 code | 26 blank | 47 comment | 47 complexity | 21489a1c69ff76bb398c7f0d489591a0 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /**
  3. *
  4. * @package Icy Phoenix
  5. * @version $Id$
  6. * @copyright (c) 2008 Icy Phoenix
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. define('IN_ICYPHOENIX', true);
  11. define('IMG_THUMB', true);
  12. define('CT_SECLEVEL', 'MEDIUM');
  13. $ct_ignoregvar = array('');
  14. if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', './');
  15. if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
  16. include(IP_ROOT_PATH . 'common.' . PHP_EXT);
  17. // Start session management
  18. $userdata = session_pagestart($user_ip);
  19. init_userprefs($userdata);
  20. // End session management
  21. // Get general album information
  22. include(ALBUM_MOD_PATH . 'album_common.' . PHP_EXT);
  23. require(ALBUM_MOD_PATH . 'album_image_class.' . PHP_EXT);
  24. // ------------------------------------
  25. // Check the request
  26. // ------------------------------------
  27. $pic_id = request_var('pic_id', '');
  28. if (empty($pic_id))
  29. {
  30. message_die(GENERAL_MESSAGE, 'No pics specified');
  31. }
  32. $pic_id = urldecode($pic_id);
  33. $tmp_split = explode('/', $pic_id);
  34. $pic_user_id = intval((int) $tmp_split[0]);
  35. if ($pic_user_id > 0)
  36. {
  37. $pic_user_id = $pic_user_id;
  38. }
  39. else
  40. {
  41. message_die(GENERAL_MESSAGE, 'No pics specified');
  42. }
  43. // I have prefixed an underscore to the image thumbnail name because this thumb should remain small and it is not using the mid size like the standard posted_img_thumbnail
  44. // Without that prefix thumbnails with different size will get mixed
  45. $pic_filename = $tmp_split[1];
  46. $pic_fullpath = POSTED_IMAGES_PATH . $pic_user_id . '/' . $pic_filename;
  47. $pic_thumbnail = '_thumb_' . $pic_filename;
  48. $pic_thumbnail_fullpath = POSTED_IMAGES_THUMBS_PATH . $pic_thumbnail;
  49. $file_part = explode('.', strtolower($pic_filename));
  50. $pic_filetype = $file_part[sizeof($file_part) - 1];
  51. $pic_title = substr($pic_filename, 0, strlen($pic_filename) - strlen($pic_filetype) - 1);
  52. $pic_title_reg = preg_replace('/[^A-Za-z0-9]+/', '_', $pic_title);
  53. if (USERS_SUBFOLDERS_IMG == true)
  54. {
  55. $pic_thumbnail_path = POSTED_IMAGES_THUMBS_PATH . $pic_user_id . '/';
  56. if (is_dir($pic_thumbnail_path))
  57. {
  58. $pic_thumbnail = '_' . $pic_filename;
  59. $pic_thumbnail_fullpath = $pic_thumbnail_path . '/' . $pic_thumbnail;
  60. }
  61. else
  62. {
  63. $dir_creation = @mkdir($pic_thumbnail_path, 0777);
  64. if ($dir_creation == true)
  65. {
  66. $pic_thumbnail = '_' . $pic_filename;
  67. $pic_thumbnail_fullpath = $pic_thumbnail_path . '/' . $pic_thumbnail;
  68. }
  69. }
  70. }
  71. switch ($pic_filetype)
  72. {
  73. case 'gif':
  74. break;
  75. case 'jpg':
  76. break;
  77. case 'png':
  78. break;
  79. default:
  80. header('Content-type: image/jpeg');
  81. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  82. readfile($images['no_thumbnail']);
  83. exit;
  84. break;
  85. }
  86. // --------------------------------
  87. // Check thumbnail cache. If cache is available we will SEND & EXIT
  88. // --------------------------------
  89. if( ($album_config['thumbnail_cache'] == 1) && file_exists($pic_thumbnail_fullpath))
  90. {
  91. /*
  92. $Image = new ImgObj();
  93. $Image->ReadSourceFile($pic_thumbnail_fullpath);
  94. $Image->SendToBrowser($pic_title_reg, $pic_filetype, 'thumb_', '', $album_config['thumbnail_quality']);
  95. $Image->Destroy();
  96. exit;
  97. */
  98. switch ($pic_filetype)
  99. {
  100. case 'gif':
  101. $file_header = 'Content-type: image/gif';
  102. break;
  103. case 'jpg':
  104. $file_header = 'Content-type: image/jpeg';
  105. break;
  106. case 'png':
  107. $file_header = 'Content-type: image/png';
  108. break;
  109. default:
  110. header('Content-type: image/jpeg');
  111. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  112. readfile($images['no_thumbnail']);
  113. exit;
  114. break;
  115. }
  116. header($file_header);
  117. header('Content-Disposition: filename=thumb_' .$pic_title_reg . '.' . $pic_filetype);
  118. readfile($pic_thumbnail_fullpath);
  119. exit;
  120. }
  121. if(!file_exists($pic_fullpath))
  122. {
  123. message_die(GENERAL_MESSAGE, $lang['Pic_not_exist']);
  124. }
  125. $pic_size = @getimagesize($pic_fullpath);
  126. $pic_width = $pic_size[0];
  127. $pic_height = $pic_size[1];
  128. if(($pic_width < $album_config['thumbnail_size']) && ($pic_height < $album_config['thumbnail_size']))
  129. {
  130. $copy_success = @copy($pic_fullpath, $pic_thumbnail_fullpath);
  131. @chmod($pic_thumbnail_fullpath, 0777);
  132. /*
  133. $Image = new ImgObj();
  134. $Image->ReadSourceFile($pic_fullpath);
  135. $Image->SendToBrowser($pic_title_reg, $pic_filetype, '', '', $album_config['thumbnail_quality']);
  136. $Image->Destroy();
  137. exit;
  138. */
  139. switch ($pic_filetype)
  140. {
  141. case 'gif':
  142. $file_header = 'Content-type: image/gif';
  143. break;
  144. case 'jpg':
  145. $file_header = 'Content-type: image/jpeg';
  146. break;
  147. case 'png':
  148. $file_header = 'Content-type: image/png';
  149. break;
  150. default:
  151. header('Content-type: image/jpeg');
  152. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  153. readfile($images['no_thumbnail']);
  154. exit;
  155. break;
  156. }
  157. header($file_header);
  158. header('Content-Disposition: filename=thumb_' .$pic_title_reg . '.' . $pic_filetype);
  159. readfile($pic_fullpath);
  160. exit;
  161. }
  162. else
  163. {
  164. // --------------------------------
  165. // Cache is empty. Try to re-generate!
  166. // --------------------------------
  167. if ($pic_width > $pic_height)
  168. {
  169. $thumbnail_width = $album_config['thumbnail_size'];
  170. $thumbnail_height = $album_config['thumbnail_size'] * ($pic_height/$pic_width);
  171. }
  172. else
  173. {
  174. $thumbnail_height = $album_config['thumbnail_size'];
  175. $thumbnail_width = $album_config['thumbnail_size'] * ($pic_width/$pic_height);
  176. }
  177. // Old Thumbnails - BEGIN
  178. // Old thumbnail generation functions, for GD1 and some strange servers...
  179. if (($album_config['gd_version'] == 1) || ($album_config['use_old_pics_gen'] == 1))
  180. {
  181. switch ($pic_filetype)
  182. {
  183. case 'gif':
  184. header('Content-type: image/jpeg');
  185. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  186. readfile($images['no_thumbnail']);
  187. exit;
  188. break;
  189. }
  190. if($album_config['show_pic_size_on_thumb'] == 1)
  191. {
  192. $thumbnail = ($album_config['gd_version'] == 1) ? @imagecreate($thumbnail_width, $thumbnail_height + 16) : @imagecreatetruecolor($thumbnail_width, $thumbnail_height + 16);
  193. }
  194. else
  195. {
  196. $thumbnail = ($album_config['gd_version'] == 1) ? @imagecreate($thumbnail_width, $thumbnail_height) : @imagecreatetruecolor($thumbnail_width, $thumbnail_height);
  197. }
  198. $resize_function = ($album_config['gd_version'] == 1) ? 'imagecopyresized' : 'imagecopyresampled';
  199. @$resize_function($thumbnail, $pic_fullpath, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);
  200. if($album_config['show_pic_size_on_thumb'] == 1)
  201. {
  202. $dimension_font = 1;
  203. $dimension_filesize = filesize($pic_fullpath);
  204. $dimension_string = intval($pic_width) . 'x' . intval($pic_height) . '(' . intval($dimension_filesize / 1024) . 'KB)';
  205. $dimension_colour = ImageColorAllocate($thumbnail, 255, 255, 255);
  206. $dimension_height = imagefontheight($dimension_font);
  207. $dimension_width = imagefontwidth($dimension_font) * strlen($dimension_string);
  208. $dimension_x = ($thumbnail_width - $dimension_width) / 2;
  209. $dimension_y = $thumbnail_height + ((16 - $dimension_height) / 2);
  210. imagestring($thumbnail, 1, $dimension_x, $dimension_y, $dimension_string, $dimension_colour);
  211. }
  212. if ($album_config['thumbnail_cache'] == 1)
  213. {
  214. // ------------------------
  215. // Re-generate successfully. Write it to disk!
  216. // ------------------------
  217. switch ($pic_filetype)
  218. {
  219. case 'jpg':
  220. @imagejpeg($thumbnail, $pic_thumbnail_fullpath, $album_config['thumbnail_quality']);
  221. break;
  222. case 'png':
  223. @imagepng($thumbnail, $pic_thumbnail_fullpath);
  224. break;
  225. }
  226. @chmod($pic_thumbnail_fullpath, 0777);
  227. }
  228. // ----------------------------
  229. // After write to disk, donot forget to send to browser also
  230. // ----------------------------
  231. switch ($pic_filetype)
  232. {
  233. case 'jpg':
  234. @imagejpeg($thumbnail, '', $album_config['thumbnail_quality']);
  235. break;
  236. case 'png':
  237. @imagepng($thumbnail);
  238. break;
  239. default:
  240. header('Content-type: image/jpeg');
  241. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  242. readfile($images['no_thumbnail']);
  243. break;
  244. }
  245. exit;
  246. }
  247. // Old Thumbnails - END
  248. $Image = new ImgObj();
  249. if ($pic_filetype == 'jpg')
  250. {
  251. $Image->ReadSourceFileJPG($pic_fullpath);
  252. }
  253. else
  254. {
  255. $Image->ReadSourceFile($pic_fullpath);
  256. }
  257. $Image->Resize($thumbnail_width, $thumbnail_height);
  258. if($album_config['show_pic_size_on_thumb'] == 1)
  259. {
  260. $dimension_string = intval($pic_width) . 'x' . intval($pic_height) . '(' . intval(filesize($pic_fullpath) / 1024) . 'KB)';
  261. $Image->Text($dimension_string);
  262. }
  263. if ($album_config['thumbnail_cache'] == 1)
  264. {
  265. if ($pic_filetype == 'jpg')
  266. {
  267. $Image->SendToFileJPG($pic_thumbnail_fullpath, $album_config['thumbnail_quality']);
  268. }
  269. else
  270. {
  271. $Image->SendToFile($pic_thumbnail_fullpath, $album_config['thumbnail_quality']);
  272. }
  273. //$Image->SendToFile($pic_thumbnail_fullpath, $album_config['thumbnail_quality']);
  274. //@chmod($pic_thumbnail_fullpath, 0777);
  275. }
  276. if ($pic_filetype == 'jpg')
  277. {
  278. $Image->SendToBrowserJPG($pic_title_reg, $pic_filetype, 'thumb_', '', $album_config['thumbnail_quality']);
  279. }
  280. else
  281. {
  282. $Image->SendToBrowser($pic_title_reg, $pic_filetype, 'thumb_', '', $album_config['thumbnail_quality']);
  283. }
  284. if ($Image == true)
  285. {
  286. $Image->Destroy();
  287. exit;
  288. }
  289. else
  290. {
  291. $Image->Destroy();
  292. header('Content-type: image/jpeg');
  293. header('Content-Disposition: filename=thumb_' . $pic_title_reg . '.' . $pic_filetype);
  294. readfile($images['no_thumbnail']);
  295. exit;
  296. }
  297. }
  298. ?>