[ Index ] |
|
Code source de Serendipity 1.2 |
1 <?php # $Id: serendipity_admin_image_selector.php 1427 2006-09-14 08:45:13Z garvinhicking $ 2 # Copyright (c) 2003-2005, Jannis Hermanns (on behalf the Serendipity Developer Team) 3 # All rights reserved. See LICENSE file for licensing details 4 5 include ('serendipity_config.inc.php'); 6 7 if (IN_serendipity !== true) { 8 die ("Don't hack!"); 9 } 10 11 header('Content-Type: text/html; charset=' . LANG_CHARSET); 12 13 if ($_SESSION['serendipityAuthedUser'] !== true && $serendipity['GET']['step'] != 'showItem') { 14 die(HAVE_TO_BE_LOGGED_ON); 15 } 16 17 if (!isset($serendipity['GET']['adminModule'])) { 18 $serendipity['GET']['adminModule'] = (isset($serendipity['POST']['adminModule']) ? $serendipity['POST']['adminModule'] : ''); 19 } 20 21 if (!isset($serendipity['GET']['step'])) { 22 $serendipity['GET']['step'] = (isset($serendipity['POST']['step']) ? $serendipity['POST']['step'] : ''); 23 } 24 25 if (empty($serendipity['GET']['step']) && isset($serendipity['GET']['adminAction'])) { 26 $serendipity['GET']['step'] = $serendipity['GET']['adminAction']; 27 } 28 29 serendipity_smarty_init(); 30 if (empty($serendipity['GET']['step']) && $serendipity['GET']['page'] < 1) { 31 $media = array( 32 'GET_STRING' => serendipity_build_query($_GET), 33 'frameset' => true 34 ); 35 $serendipity['smarty']->assign_by_ref('media', $media); 36 $serendipity['smarty']->display(serendipity_getTemplateFile('admin/media_choose.tpl', 'serendipityPath')); 37 return; 38 } 39 40 $import_vars = $serendipity['GET']; 41 unset($import_vars['step']); 42 unset($import_vars['only_path']); 43 44 $showFile = 'admin/media_choose.tpl'; 45 $body_id = 'serendipityAdminBodyImageSelector'; 46 if ($serendipity['GET']['step'] === 'tree') { 47 $body_id = 'serendipityAdminBodyImageSelectorTree'; 48 } 49 50 $media = array( 51 'body_id' => $body_id, 52 'only_path' => $serendipity['GET']['only_path'], 53 'css' => serendipity_rewriteURL('serendipity_admin.css'), 54 'css_tree' => serendipity_getTemplateFile('treeview/tree.css'), 55 'css_front' => serendipity_rewriteURL('serendipity.css'), 56 'token_url' => serendipity_setFormToken('url'), 57 'imgID' => (int)$serendipity['GET']['image'], 58 'from' => $serendipity['GET']['from'], 59 'GET_STRING' => serendipity_build_query($import_vars, 'serendipity', '&'), 60 'paths' => serendipity_getMediaPaths() 61 ); 62 63 switch ($serendipity['GET']['step']) { 64 case '1': 65 if (isset($serendipity['GET']['adminAction'])) { // Embedded upload form 66 if (!empty($serendipity['POST']['textarea'])) { 67 $serendipity['GET']['textarea'] = $serendipity['POST']['textarea']; 68 } 69 70 if (!empty($serendipity['POST']['htmltarget'])) { 71 $serendipity['GET']['htmltarget'] = $serendipity['POST']['htmltarget']; 72 } 73 74 if (!empty($serendipity['POST']['filename_only'])) { 75 $serendipity['GET']['filename_only'] = $serendipity['POST']['filename_only']; 76 } 77 78 $image_selector_addvars = array( 79 'step' => 1, 80 'textarea' => (!empty($serendipity['GET']['textarea']) ? $serendipity['GET']['textarea'] : ''), 81 'htmltarget' => (!empty($serendipity['GET']['htmltarget']) ? $serendipity['GET']['htmltarget'] : ''), 82 'filename_only' => (!empty($serendipity['GET']['filename_only']) ? $serendipity['GET']['filename_only'] : '') 83 ); 84 85 switch ($serendipity['GET']['adminAction']) { 86 case 'addSelect': 87 $media['case'] = 'external'; 88 ob_start(); 89 include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php'; 90 $media['external'] = ob_get_contents(); 91 ob_end_clean(); 92 break 2; 93 94 case 'add': 95 $media['case'] = 'external'; 96 ob_start(); 97 include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php'; 98 $media['external'] = ob_get_contents(); 99 ob_end_clean(); 100 if (isset($created_thumbnail) && isset($image_id)) { 101 $media['is_uploaded'] = true; 102 $serendipity['GET']['image'] = $media['imgID'] = (int)$image_id; // $image_id is passed from images.inc.php 103 break; 104 } else { 105 break 2; 106 } 107 } 108 } 109 $media['case'] = 'choose'; 110 111 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['image']); 112 $media['file'] = &$file; 113 if (!is_array($file)) { 114 $media['perm_denied'] = true; 115 break; 116 } 117 118 serendipity_prepareMedia($file); 119 120 $media['file']['props'] =& serendipity_fetchMediaProperties((int)$serendipity['GET']['image']); 121 serendipity_plugin_api::hook_event('media_getproperties_cached', $media['file']['props']['base_metadata'], $media['file']['realfile']); 122 123 if ($file['is_image']) { 124 $file['finishJSFunction'] = $file['origfinishJSFunction'] = 'serendipity_imageSelector_done(\'' . htmlspecialchars($serendipity['GET']['textarea']) . '\')'; 125 126 if (!empty($serendipity['GET']['filename_only']) && $serendipity['GET']['filename_only'] !== 'true') { 127 $file['fast_select'] = true; 128 } 129 } 130 break; 131 132 case 'directoryDoCreate': 133 case 'directoryDoDelete': 134 $is_created = true; 135 if ($serendipity['GET']['step'] == 'directoryDoDelete') { 136 $is_deleted = true; 137 } 138 case 'directoryCreate': 139 $serendipity['GET']['adminAction'] = $serendipity['GET']['step']; 140 $media['case'] = 'external'; 141 ob_start(); 142 include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php'; 143 if ($is_created || $is_deleted) { 144 $media['is_created'] = $is_created; 145 $media['is_deleted'] = $is_deleted; 146 $media['new_dir'] = $new_dir; 147 } 148 $media['external'] = ob_get_contents(); 149 ob_end_clean(); 150 break; 151 152 case 'tree': 153 $media['case'] = 'tree'; 154 break; 155 156 case 'showItem': 157 serendipity_plugin_api::hook_event('frontend_media_showitem_init', $media); 158 159 if ($media['perm_denied']) { 160 break; 161 } 162 $media['case'] = 'showitem'; 163 $file = serendipity_fetchImageFromDatabase((int)$serendipity['GET']['image']); 164 $media['file'] = &$file; 165 $keywords = $dprops = ''; 166 167 if (!is_array($file)) { 168 $media['perm_denied'] = true; 169 break; 170 } 171 172 serendipity_prepareMedia($file); 173 174 $showfile = null; 175 if (($serendipity['GET']['resizeWidth'] || $serendipity['GET']['resizeHeight']) && $serendipity['dynamicResize'] && $media['file']['is_image']) { 176 $width = (int)$serendipity['GET']['resizeWidth']; 177 $height = (int)$serendipity['GET']['resizeHeight']; 178 if (empty($width)) { 179 $width = NULL; 180 } 181 if (empty($height)) { 182 $height = NULL; 183 } 184 185 $showfile = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/mediacache/cache_img' . (int)$serendipity['GET']['image'] . '_' . $width . '_' . $height; 186 187 if (!file_exists($showfile)) { 188 serendipity_makeThumbnail( 189 $media['file']['realname'], 190 $media['file']['path'], 191 array( 192 'width' => $width, 193 'height' => $height 194 ), 195 $showfile, 196 true 197 ); 198 } 199 } 200 201 $hit = serendipity_db_query("SELECT id 202 FROM {$serendipity['dbPrefix']}references 203 WHERE link = '" . serendipity_db_escape_string($_SERVER['HTTP_REFERER']) . "' 204 AND entry_id = " . (int)$serendipity['GET']['image'] . " 205 AND type = 'media'", true, 'assoc'); 206 if (!is_array($hit) || !isset($hit['id'])) { 207 serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}references 208 (entry_id, link, name, type) 209 VALUES (" . (int)$serendipity['GET']['image'] . ", '" . serendipity_db_escape_string($_SERVER['HTTP_REFERER']) . "', 1, 'media')"); 210 } else { 211 serendipity_db_query("UPDATE {$serendipity['dbPrefix']}references 212 SET name = name + 1 213 WHERE id = " . (int)$hit['id']); 214 } 215 216 $curl = ($_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . ($_SERVER['HTTP_PORT'] != 80 ? ':' . $_SERVER['HTTP_PORT'] : ''); 217 switch($serendipity['GET']['show']) { 218 case 'redirect': 219 header('Location: ' . $curl . $file['links']['imagelinkurl']); 220 exit; 221 break; 222 223 case 'redirectThumb': 224 header('Location: ' . $curl . $file['show_thumb']); 225 exit; 226 break; 227 228 case 'full': 229 $showfile = $file['realfile']; 230 break; 231 232 case 'thumb': 233 $showfile = $file['location']; 234 break; 235 } 236 237 if (!empty($showfile) && file_exists($showfile)) { 238 header('Content-Type: ' . $file['displaymime']); 239 header('Content-Length: ' . filesize($showfile)); 240 header('Content-Disposition: ' . ($serendipity['GET']['disposition'] == 'attachment' ? 'attachment' : 'inline') . '; filename=' . basename($showfile)); 241 $fp = fopen($showfile, 'rb'); 242 fpassthru($fp); 243 exit; 244 } 245 246 $media['file']['props'] =& serendipity_fetchMediaProperties((int)$serendipity['GET']['image']); 247 serendipity_plugin_api::hook_event('media_getproperties_cached', $media['file']['props']['base_metadata'], $media['file']['realfile']); 248 249 serendipity_parseMediaProperties($keywords, $dprops, $media['file'], $media['file']['props'], 0, false); 250 serendipity_plugin_api::hook_event('frontend_media_showitem', $media); 251 if ($media['perm_denied']) { 252 unset($media['file']); 253 unset($file); 254 } 255 $showFile = 'admin/media_showitem.tpl'; 256 break; 257 258 case 'start': 259 $media['case'] = 'start'; 260 break; 261 262 case 'default': 263 default: 264 if (!empty($serendipity['GET']['adminAction']) && $serendipity['GET']['adminModule'] == 'images' && $serendipity['GET']['adminAction'] != 'default') { 265 // Might need to set $serendipity['adminFile_redirect'] here. 266 $serendipity['adminFile'] = 'serendipity_admin_image_selector.php'; 267 ob_start(); 268 include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php'; 269 $media['external'] = ob_get_contents(); 270 $media['case'] = 'external'; 271 ob_end_clean(); 272 break; 273 } 274 275 $media['case'] = 'default'; 276 $add_url = ''; 277 if (!empty($serendipity['GET']['htmltarget'])) { 278 $add_url .= '&serendipity[htmltarget]=' . htmlspecialchars($serendipity['GET']['htmltarget']); 279 } 280 281 if (!empty($serendipity['GET']['filename_only'])) { 282 $add_url .= '&serendipity[filename_only]=' . htmlspecialchars($serendipity['GET']['filename_only']); 283 } 284 285 if (!isset($serendipity['thumbPerPage2'])) { 286 $serendipity['thumbPerPage2'] = 3; 287 } 288 289 ob_start(); 290 $block = serendipity_displayImageList( 291 isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1, 292 $serendipity['thumbPerPage2'], 293 ($serendipity['showMediaToolbar'] ? true : false), 294 '?serendipity[step]=1' . $add_url . '&serendipity[textarea]='. $serendipity['GET']['textarea'], 295 true, 296 null, 297 false 298 ); 299 $media['external'] = ob_get_contents(); 300 ob_end_clean(); 301 serendipity_smarty_fetch('MEDIA_LIST', $block); 302 } 303 304 $media = array_merge($serendipity['GET'], $media); 305 $serendipity['smarty']->assign_by_ref('media', $media); 306 $serendipity['smarty']->display(serendipity_getTemplateFile($showFile, 'serendipityPath')); 307 308 /* vim: set sts=4 ts=4 expandtab : */
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Nov 24 09:00:37 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |