[ Index ] |
|
Code source de Serendipity 1.2 |
1 <?php # $Id: images.inc.php 1767 2007-07-12 09:36:32Z 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 if (IN_serendipity !== true) { 6 die ("Don't hack!"); 7 } 8 9 if (!serendipity_checkPermission('adminImages')) { 10 return; 11 } 12 13 switch ($serendipity['GET']['adminAction']) { 14 case 'imgedit': 15 echo '<div class="warning js_warning"><em>' . PREFERENCE_USE_JS_WARNING . '</em></div>'; 16 17 if (!isset($serendipity['eyecandy']) || serendipity_db_bool($serendipity['eyecandy'])) { 18 } else { 19 return true; 20 } 21 22 include (S9Y_INCLUDE_PATH . "include/functions_images_crop.inc.php"); 23 $media['is_imgedit'] = true; 24 $media['css_imgedit'] = serendipity_getTemplateFile('admin/imgedit.css'); 25 26 if (isset($serendipity['GET']['fid'])) { 27 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 28 if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 29 return; 30 } 31 32 $fullfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . '.' . $file['extension']; 33 $httpfile = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] . '.' . $file['extension']; 34 35 $img = new imgedit($fullfile, $httpfile); 36 37 // Set the filenames used for the cropping areas. Width/Height are automagically detected. Orientation is either horizontal or vertical. 38 $img->setArea('imgedit_area.gif', 'h'); 39 $img->setArea('imgedit_varea.gif', 'v'); 40 41 // Let the IMGEditor do its magic. It will parse its results straightly into a template variable array. 42 $img->main(); 43 $serendipity['smarty']->assign('imgedit', $img->imgedit_smarty); 44 serendipity_smarty_fetch('IMGEDIT', $img->output_template); 45 } 46 break; 47 48 case 'sync': 49 if (!serendipity_checkPermission('adminImagesSync')) { 50 break; 51 } 52 53 if (function_exists('set_time_limit')) { 54 @set_time_limit(0); 55 } 56 @ignore_user_abort(); 57 58 echo '<p class="image_synch"><b>' . SYNCING . '</b></p><br />'; 59 flush(); 60 61 $i = serendipity_syncThumbs(); 62 printf(SYNC_DONE, $i); 63 64 echo '<p class="image_resize"><b>' . RESIZING . '</b></p><br />'; 65 flush(); 66 67 $i = serendipity_generateThumbs(); 68 printf(RESIZE_DONE, $i); 69 70 break; 71 72 case 'DoDelete': 73 if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDelete')) { 74 break; 75 } 76 77 $file = $serendipity['GET']['fname']; 78 serendipity_deleteImage($serendipity['GET']['fid']); 79 break; 80 81 case 'delete': 82 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 83 84 if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 85 return; 86 } 87 88 if (!isset($serendipity['adminFile'])) { 89 $serendipity['adminFile'] = 'serendipity_admin.php'; 90 } 91 $abortLoc = $serendipity['serendipityHTTPPath'] . $serendipity['adminFile'] . '?serendipity[adminModule]=images'; 92 $newLoc = $abortLoc . '&serendipity[adminAction]=DoDelete&serendipity[fid]=' . (int)$serendipity['GET']['fid'] . '&' . serendipity_setFormToken('url'); 93 94 printf('<div class="image_notify_delete">' . ABOUT_TO_DELETE_FILE . '</div>', $file['name'] .'.'. $file['extension']); 95 ?> 96 <form method="get" id="delete_image"> 97 <div> 98 <a href="<?php echo $newLoc; ?>" class="serendipityPrettyButton input_button"><?php echo DUMP_IT ?></a> 99 100 <a href="<?php echo $abortLoc; ?>" class="serendipityPrettyButton input_button"><?php echo ABORT_NOW ?></a> 101 </div> 102 </form> 103 <?php 104 break; 105 106 case 'rename': 107 $serendipity['GET']['fid'] = (int)$serendipity['GET']['fid']; 108 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 109 $serendipity['GET']['newname'] = serendipity_uploadSecure($serendipity['GET']['newname'], true); 110 111 if (!is_array($file) || !serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 112 return; 113 } 114 115 if (!serendipity_moveMediaDirectory(null, $serendipity['GET']['newname'], 'file', $serendipity['GET']['fid'], $file)) { 116 ?> 117 <br /> 118 <input type="button" onclick="history.go(-1);" value="<?php echo BACK; ?>" class="serendipityPrettyButton input_button" /> 119 <?php 120 break; 121 } 122 123 // if we successfully rename 124 ?> 125 <script language="javascript" type="text/javascript"> 126 location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default"; 127 </script> 128 <noscript> 129 <a href="?serendipity[adminModule]=images&serendipity[adminAction]=default"><?php echo DONE ?></a> 130 </noscript> 131 <?php 132 break; 133 134 case 'properties': 135 $new_media = array(array('image_id' => $serendipity['GET']['fid'])); 136 serendipity_showPropertyForm($new_media); 137 break; 138 139 case 'add': 140 if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesAdd')) { 141 return; 142 } 143 144 if ($serendipity['POST']['adminSubAction'] == 'properties') { 145 $properties = serendipity_parsePropertyForm(); 146 $image_id = $properties['image_id']; 147 $created_thumbnail = true; 148 ?> 149 <script language="javascript" type="text/javascript"> 150 location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default"; 151 </script> 152 <noscript> 153 <a href="?serendipity[adminModule]=images&serendipity[adminAction]=default"><?php echo DONE ?></a> 154 </noscript> 155 <?php 156 break; 157 } 158 159 ?> 160 <div class="image_add"><b><?php echo ADDING_IMAGE; ?></b></div> 161 <br /><br /> 162 <?php 163 164 $authorid = (isset($serendipity['POST']['all_authors']) && $serendipity['POST']['all_authors'] == 'true') ? '0' : $serendipity['authorid']; 165 166 $new_media = array(); 167 // First find out whether to fetch a file or accept an upload 168 if ($serendipity['POST']['imageurl'] != '' && $serendipity['POST']['imageurl'] != 'http://') { 169 if (!empty($serendipity['POST']['target_filename'][2])) { 170 // Faked hidden form 2 when submitting with JavaScript 171 $tfile = $serendipity['POST']['target_filename'][2]; 172 $tindex = 2; 173 } elseif (!empty($serendipity['POST']['target_filename'][1])) { 174 // Fallback key when not using JavaScript 175 $tfile = $serendipity['POST']['target_filename'][1]; 176 $tindex = 1; 177 } else { 178 $tfile = $serendipity['POST']['imageurl']; 179 $tindex = 1; 180 } 181 182 $tfile = serendipity_uploadSecure(basename($tfile)); 183 184 if (serendipity_isActiveFile($tfile)) { 185 printf(ERROR_FILE_FORBIDDEN, $tfile); 186 break; 187 } 188 189 $serendipity['POST']['target_directory'][$tindex] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$tindex], true, true); 190 $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$tindex] . $tfile; 191 192 if (!serendipity_checkDirUpload($serendipity['POST']['target_directory'][$tindex])) { 193 echo PERM_DENIED; 194 return; 195 } 196 197 $realname = $tfile; 198 if (file_exists($target)) { 199 echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY . '<br />'; 200 $realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$tindex]); 201 } 202 203 require_once S9Y_PEAR_PATH . 'HTTP/Request.php'; 204 $options = array(); 205 serendipity_plugin_api::hook_event('backend_http_request', $options, 'image'); 206 serendipity_request_start(); 207 $req = &new HTTP_Request($serendipity['POST']['imageurl'], $options); 208 // Try to get the URL 209 210 if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') { 211 printf(REMOTE_FILE_NOT_FOUND, $serendipity['POST']['imageurl']); 212 } else { 213 // Fetch file 214 $fContent = $req->getResponseBody(); 215 216 if ($serendipity['POST']['imageimporttype'] == 'hotlink') { 217 $tempfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . '/hotlink_' . time(); 218 $fp = fopen($tempfile, 'w'); 219 fwrite($fp, $fContent); 220 fclose($fp); 221 222 $image_id = @serendipity_insertHotlinkedImageInDatabase($tfile, $serendipity['POST']['imageurl'], $authorid, null, $tempfile); 223 printf(HOTLINK_DONE. '<br />', $serendipity['POST']['imageurl'], $tfile); 224 serendipity_plugin_api::hook_event('backend_image_addHotlink', $tempfile); 225 } else { 226 $fp = fopen($target, 'w'); 227 fwrite($fp, $fContent); 228 fclose($fp); 229 230 printf(FILE_FETCHED . '<br />', $serendipity['POST']['imageurl'], $tfile); 231 232 if (serendipity_checkMediaSize($target)) { 233 $thumbs = array(array( 234 'thumbSize' => $serendipity['thumbSize'], 235 'thumb' => $serendipity['thumbSuffix'] 236 )); 237 serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs); 238 239 foreach($thumbs as $thumb) { 240 // Create thumbnail 241 if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$tindex], $thumb['thumbSize'], $thumb['thumb']) ) { 242 echo THUMB_CREATED_DONE . '<br />'; 243 } 244 } 245 246 // Insert into database 247 $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$tindex], $authorid, null, $realname); 248 serendipity_plugin_api::hook_event('backend_image_add', $target); 249 $new_media[] = array( 250 'image_id' => $image_id, 251 'target' => $target, 252 'created_thumbnail' => $created_thumbnail 253 ); 254 } 255 } 256 serendipity_request_end(); 257 } 258 } else { 259 if (!is_array($serendipity['POST']['target_filename'])) { 260 break; 261 } 262 263 foreach($serendipity['POST']['target_filename'] AS $idx => $target_filename) { 264 $uploadfile = &$_FILES['serendipity']['name']['userfile'][$idx]; 265 $uploadtmp = &$_FILES['serendipity']['tmp_name']['userfile'][$idx]; 266 if (!empty($target_filename)) { 267 $tfile = $target_filename; 268 } elseif (!empty($uploadfile)) { 269 $tfile = $uploadfile; 270 } else { 271 // skip empty array 272 continue; 273 } 274 275 $tfile = serendipity_uploadSecure(basename($tfile)); 276 277 if (serendipity_isActiveFile($tfile)) { 278 printf(ERROR_FILE_FORBIDDEN, $tfile); 279 echo '<br />'; 280 continue; 281 } 282 283 $serendipity['POST']['target_directory'][$idx] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$idx], true, true); 284 285 if (!serendipity_checkDirUpload($serendipity['POST']['target_directory'][$idx])) { 286 echo PERM_DENIED; 287 continue; 288 } 289 290 $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx] . $tfile; 291 292 $realname = $tfile; 293 if (file_exists($target)) { 294 echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY . '<br />'; 295 $realname = serendipity_imageAppend($tfile, $target, $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx]); 296 } 297 298 // Accept file 299 if (is_uploaded_file($uploadtmp) && serendipity_checkMediaSize($uploadtmp) && move_uploaded_file($uploadtmp, $target)) { 300 printf(FILE_UPLOADED . '<br />', $uploadfile, $target); 301 @umask(0000); 302 @chmod($target, 0664); 303 304 $thumbs = array(array( 305 'thumbSize' => $serendipity['thumbSize'], 306 'thumb' => $serendipity['thumbSuffix'] 307 )); 308 serendipity_plugin_api::hook_event('backend_media_makethumb', $thumbs); 309 310 foreach($thumbs as $thumb) { 311 // Create thumbnail 312 if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx], $thumb['thumbSize'], $thumb['thumb']) ) { 313 echo THUMB_CREATED_DONE . '<br />'; 314 } 315 } 316 317 // Insert into database 318 $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid, null, $realname); 319 serendipity_plugin_api::hook_event('backend_image_add', $target, $created_thumbnail); 320 $new_media[] = array( 321 'image_id' => $image_id, 322 'target' => $target, 323 'created_thumbnail' => $created_thumbnail 324 ); 325 } else { 326 echo ERROR_UNKNOWN_NOUPLOAD . '<br />'; 327 } 328 } 329 } 330 331 if (isset($_REQUEST['go_properties'])) { 332 serendipity_showPropertyForm($new_media); 333 } else { 334 $hidden = array( 335 'author' => $serendipity['serendipityUser'], 336 'authorid' => $serendipity['authorid'] 337 ); 338 339 foreach($new_media AS $nm) { 340 serendipity_insertMediaProperty('base_hidden', '', $nm['image_id'], $hidden); 341 } 342 } 343 break; 344 345 346 case 'directoryDoDelete': 347 if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDirectories')) { 348 return; 349 } 350 351 $new_dir = serendipity_uploadSecure($serendipity['GET']['dir'], true); 352 if (is_dir($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) { 353 if (!is_writable($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) { 354 printf(DIRECTORY_WRITE_ERROR, $new_dir); 355 } else { 356 // Directory exists and is writable. Now dive within subdirectories and kill 'em all. 357 serendipity_killPath($serendipity['serendipityPath'] . $serendipity['uploadPath'], $new_dir, (isset($serendipity['POST']['nuke']) ? true : false)); 358 } 359 } else { 360 printf(ERROR_NO_DIRECTORY, $new_dir); 361 } 362 363 break; 364 365 case 'directoryEdit': 366 if (!serendipity_checkPermission('adminImagesDirectories')) { 367 return; 368 } 369 370 $use_dir = serendipity_uploadSecure($serendipity['GET']['dir']); 371 $checkpath = array( 372 array( 373 'relpath' => $use_dir 374 ) 375 ); 376 377 if (!serendipity_directoryACL($checkpath, 'write')) { 378 return; 379 } 380 381 if (!empty($serendipity['POST']['save'])) { 382 $newDir = serendipity_uploadSecure($serendipity['POST']['newDir']); 383 $oldDir = serendipity_uploadSecure($serendipity['POST']['oldDir']); 384 385 if ($oldDir != $newDir) { 386 serendipity_moveMediaDirectory($oldDir, $newDir); 387 $use_dir = $newDir; 388 } 389 serendipity_ACLGrant(0, 'directory', 'read', $serendipity['POST']['read_authors'], $use_dir); 390 serendipity_ACLGrant(0, 'directory', 'write', $serendipity['POST']['write_authors'], $use_dir); 391 echo '<div>' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%H:%M:%S')) . '</div>'; 392 } 393 394 $groups = serendipity_getAllGroups(); 395 $read_groups = serendipity_ACLGet(0, 'directory', 'read', $use_dir); 396 $write_groups = serendipity_ACLGet(0, 'directory', 'write', $use_dir); 397 398 if (!empty($serendipity['POST']['update_children'])) { 399 $dir_list = serendipity_traversePath($serendipity['serendipityPath'] . $serendipity['uploadPath'], $use_dir, true, NULL, 1, NULL, 'write', NULL); 400 foreach($dir_list AS $f => $dir) { 401 // Apply parent ACL to children. 402 serendipity_ACLGrant(0, 'directory', 'read', $serendipity['POST']['read_authors'], $dir['relpath']); 403 serendipity_ACLGrant(0, 'directory', 'write', $serendipity['POST']['write_authors'], $dir['relpath']); 404 } 405 } 406 ?> 407 408 <div class="image_directory_edit"><strong><?php echo MANAGE_DIRECTORIES ?></strong></div> 409 <br /> 410 <form id="image_directory_edit_form" method="POST" action="?serendipity[adminModule]=images&serendipity[adminAction]=directoryEdit&serendipity[dir]=<?php echo htmlspecialchars($serendipity['GET']['dir']) ?>"> 411 <?php echo serendipity_setFormToken(); ?> 412 <input type="hidden" name="serendipity[oldDir]" value="<?php echo $use_dir; ?>" /> 413 <table cellpadding="5"> 414 <tr> 415 <td width="100"><strong><?php echo NAME ?></strong></td> 416 <td><input class="input_textbox" type="text" name="serendipity[newDir]" value="<?php echo $use_dir; ?>" /></td> 417 </tr> 418 <tr> 419 <td><label for="read_authors"><?php echo PERM_READ; ?></label></td> 420 <td> 421 <select size="6" id="read_authors" multiple="multiple" name="serendipity[read_authors][]"> 422 <option value="0" <?php echo (isset($read_groups[0])) ? 'selected="selected"' : ''; ?>><?php echo ALL_AUTHORS; ?></option> 423 <?php 424 foreach($groups AS $group) { 425 echo '<option value="' . $group['confkey'] . '" ' . (isset($read_groups[$group['confkey']]) ? 'selected="selected"' : '') . '>' . htmlspecialchars($group['confvalue']) . '</option>' . "\n"; 426 } 427 ?> 428 </select> 429 </td> 430 </tr> 431 432 <tr> 433 <td><label for="write_authors"><?php echo PERM_WRITE; ?></label></td> 434 <td> 435 <select size="6" id="write_authors" multiple="multiple" name="serendipity[write_authors][]"> 436 <option value="0" <?php echo (isset($write_groups[0])) ? 'selected="selected"' : ''; ?>><?php echo ALL_AUTHORS; ?></option> 437 <?php 438 foreach($groups AS $group) { 439 echo '<option value="' . $group['confkey'] . '" ' . (isset($write_groups[$group['confkey']]) ? 'selected="selected"' : '') . '>' . htmlspecialchars($group['confvalue']) . '</option>' . "\n"; 440 } 441 ?> 442 </select> 443 </td> 444 </tr> 445 <tr> 446 <td> 447 <input class="input_checkbox" id="setchild" value="true" type="checkbox" name="serendipity[update_children]" <?php echo (!empty($serendipity['POST']['update_children']) == 'on' ? 'checked="checked"' : ''); ?> /> <label for="setchild"><?php echo PERM_SET_CHILD; ?></label> 448 <td> 449 </tr> 450 </table> 451 <br /> 452 <br /> 453 <div align="center"> 454 <input name="serendipity[save]" value="<?php echo SAVE ?>" class="serendipityPrettyButton input_button" type="submit" /> 455 </div> 456 </form> 457 458 <?php 459 break; 460 461 case 'directoryDelete': 462 if (!serendipity_checkPermission('adminImagesDirectories')) { 463 return; 464 } 465 ?> 466 467 <div class="image_directory_delete"><strong><?php echo DELETE_DIRECTORY ?></strong></div> 468 <div class="image_directory_delete_desc"><?php echo DELETE_DIRECTORY_DESC ?></div> 469 <br /> 470 <br /> 471 <form id="image_directory_delete_form" method="POST" action="?serendipity[adminModule]=images&serendipity[adminAction]=directoryDoDelete&serendipity[dir]=<?php echo htmlspecialchars($serendipity['GET']['dir']) ?>"> 472 <?php echo serendipity_setFormToken(); ?> 473 <table cellpadding="5"> 474 <tr> 475 <td width="100"><strong><?php echo NAME ?></strong></td> 476 <td><?php echo basename(htmlspecialchars($serendipity['GET']['dir'])) ?></td> 477 </tr> 478 <tr> 479 <td colspan="2"><input class="input_checkbox" type="checkbox" name="serendipity[nuke]" value="true" style="margin: 0"> <?php echo FORCE_DELETE ?></td> 480 </tr> 481 </table> 482 <br /> 483 <br /> 484 <div align="center"> 485 <?php echo sprintf(CONFIRM_DELETE_DIRECTORY, htmlspecialchars($serendipity['GET']['dir'])) ?><br /> 486 <input name="SAVE" value="<?php echo DELETE_DIRECTORY ?>" class="serendipityPrettyButton input_button" type="submit" /> 487 </div> 488 </form> 489 490 <?php 491 break; 492 493 case 'directoryDoCreate': 494 if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDirectories')) { 495 return; 496 } 497 498 $new_dir = serendipity_uploadSecure($serendipity['POST']['parent'] . '/' . $serendipity['POST']['name'], true); 499 $new_dir = str_replace(array('..', '//'), array('', '/'), $new_dir); 500 501 /* TODO: check if directory already exist */ 502 if (@mkdir($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) { 503 printf(DIRECTORY_CREATED, $serendipity['POST']['name']); 504 @umask(0000); 505 @chmod($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir, 0777); 506 507 // Apply parent ACL to new child. 508 $array_parent_read = serendipity_ACLGet(0, 'directory', 'read', $serendipity['POST']['parent']); 509 $array_parent_write = serendipity_ACLGet(0, 'directory', 'write', $serendipity['POST']['parent']); 510 if (!is_array($array_parent_read) || count($array_parent_read) < 1) { 511 $parent_read = array(0); 512 } else { 513 $parent_read = array_keys($array_parent_read); 514 } 515 if (!is_array($array_parent_write) || count($array_parent_write) < 1) { 516 $parent_write = array(0); 517 } else { 518 $parent_write = array_keys($array_parent_write); 519 } 520 521 serendipity_ACLGrant(0, 'directory', 'read', $parent_read, $new_dir . '/'); 522 serendipity_ACLGrant(0, 'directory', 'write', $parent_write, $new_dir . '/'); 523 } else { 524 printf(DIRECTORY_WRITE_ERROR, $new_dir); 525 } 526 527 break; 528 529 case 'directoryCreate': 530 if (!serendipity_checkPermission('adminImagesDirectories')) { 531 return; 532 } 533 534 $folders = serendipity_traversePath( 535 $serendipity['serendipityPath'] . $serendipity['uploadPath'], 536 '', 537 true, 538 NULL, 539 1, 540 NULL, 541 'write' 542 ); 543 usort($folders, 'serendipity_sortPath'); 544 ?> 545 <div class="image_directory_create"><strong><?php echo CREATE_DIRECTORY ?></strong></div> 546 <div class="image_directory_create_desc"><?php echo CREATE_DIRECTORY_DESC ?></div> 547 <br /> 548 <br /> 549 <form id="image_directory_create_form" method="POST" action="?serendipity[step]=directoryDoCreate&serendipity[adminModule]=images&serendipity[adminAction]=directoryDoCreate"> 550 <?php echo serendipity_setFormToken(); ?> 551 <table cellpadding="5"> 552 <tr> 553 <td><?php echo NAME ?></td> 554 <td><input class="input_textbox" type="text" name="serendipity[name]" value="" /></td> 555 </tr> 556 <tr> 557 <td><?php echo PARENT_DIRECTORY ?></td> 558 <td><select name="serendipity[parent]"> 559 <option value=""><?php echo BASE_DIRECTORY ?></option> 560 <?php foreach ( $folders as $folder ) { ?> 561 <option <?php echo ($folder['relpath'] == $serendipity['GET']['only_path'] ? 'selected="selected"' : ''); ?> value="<?php echo $folder['relpath'] ?>"><?php echo str_repeat(' ', $folder['depth']*2) . ' '. $folder['name'] ?></option> 562 <?php } ?> 563 </select> 564 </td> 565 </tr> 566 </table> 567 <div><input name="SAVE" value="<?php echo CREATE_DIRECTORY ?>" class="serendipityPrettyButton input_button" type="submit"></div> 568 </form> 569 <?php 570 break; 571 572 case 'directorySelect': 573 if (!serendipity_checkPermission('adminImagesDirectories')) { 574 return; 575 } 576 577 $folders = serendipity_traversePath( 578 $serendipity['serendipityPath'] . $serendipity['uploadPath'], 579 '', 580 true, 581 NULL, 582 1, 583 NULL, 584 'write' 585 ); 586 usort($folders, 'serendipity_sortPath'); 587 ?> 588 <div class="image_directory_list"><?php echo DIRECTORIES_AVAILABLE; ?></div> 589 <br /> 590 <table id="image_directory_listing" border="0" cellspacing="0" cellpadding="4" width="100%"> 591 <tr> 592 <td colspan="4"><strong><?php echo BASE_DIRECTORY ?></strong></td> 593 </tr> 594 <?php foreach ($folders as $folder) { ?> 595 <tr> 596 <td width="16"><a href="?serendipity[adminModule]=images&serendipity[adminAction]=directoryEdit&serendipity[dir]=<?php echo htmlspecialchars($folder['relpath']) ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/edit.png') ?>" border="0" alt="<?php echo EDIT ?>" /></a></td> 597 <td width="16"><a href="?serendipity[adminModule]=images&serendipity[adminAction]=directoryDelete&serendipity[dir]=<?php echo htmlspecialchars($folder['relpath']) ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/delete.png') ?>" alt="<?php echo DELETE ?>" border="0"></a></td> 598 <td style="padding-left: <?php echo $folder['depth']*10 ?>"><?php echo $folder['name'] ?></td> 599 </tr> 600 <?php } ?> 601 </table> 602 <br /> 603 <div><a href="?serendipity[adminModule]=images&serendipity[adminAction]=directoryCreate" class="serendipityPrettyButton input_button"><?php echo CREATE_NEW_DIRECTORY ?></a></div> 604 605 <?php 606 break; 607 608 case 'addSelect': 609 if (!serendipity_checkPermission('adminImagesAdd')) { 610 return; 611 } 612 613 serendipity_restoreVar($serendipity['COOKIE']['addmedia_directory'], $serendipity['GET']['only_path']); 614 $folders = serendipity_traversePath( 615 $serendipity['serendipityPath'] . $serendipity['uploadPath'], 616 '', 617 true, 618 NULL, 619 1, 620 NULL, 621 'write' 622 ); 623 usort($folders, 'serendipity_sortPath'); 624 625 $form_hidden = ''; 626 if (isset($image_selector_addvars) && is_array($image_selector_addvars)) { 627 // These variables may come from serendipity_admin_image_selector.php to show embedded upload form 628 foreach($image_selector_addvars AS $imgsel_key => $imgsel_val) { 629 $form_hidden .= ' <input type="hidden" name="serendipity[' . htmlspecialchars($imgsel_key) . ']" value="' . htmlspecialchars($imgsel_val) . '" />' . "\n"; 630 } 631 } 632 633 serendipity_smarty_init(); 634 $mediaFiles = array( 635 'token' => serendipity_setFormToken(), 636 'form_hidden' => $form_hidden, 637 'folders' => $folders, 638 'only_path' => $serendipity['GET']['only_path'], 639 'max_file_size' => $serendipity['maxFileSize'], 640 'maxImgHeight' => $serendipity['maxImgHeight'], 641 'maxImgWidth' => $serendipity['maxImgWidth'], 642 ); 643 $serendipity['smarty']->assign('media', $mediaFiles); 644 $serendipity['smarty']->display(serendipity_getTemplateFile('admin/media_upload.tpl', 'serendipityPath')); 645 break; 646 647 case 'rotateCW': 648 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 649 if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 650 return; 651 } 652 653 if (empty($serendipity['adminFile_redirect'])) { 654 $serendipity['adminFile_redirect'] = htmlspecialchars($_SERVER['HTTP_REFERER']); 655 } 656 657 if (serendipity_rotateImg($serendipity['GET']['fid'], -90)) { 658 ?> 659 <script language="javascript" type="text/javascript"> 660 location.href="<?php echo $serendipity['adminFile_redirect'] ?>"; 661 </script> 662 <noscript><a href="<?php echo $serendipity['adminFile_redirect'] ?>"><?php echo DONE ?></a></noscript> 663 <?php 664 } 665 break; 666 667 case 'rotateCCW': 668 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 669 if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 670 return; 671 } 672 673 if (empty($serendipity['adminFile_redirect'])) { 674 $serendipity['adminFile_redirect'] = htmlspecialchars($_SERVER['HTTP_REFERER']); 675 } 676 677 if (serendipity_rotateImg($serendipity['GET']['fid'], 90)) { 678 ?> 679 <script language="javascript" type="text/javascript"> 680 location.href="<?php echo $serendipity['adminFile_redirect'] ?>"; 681 </script> 682 <noscript><a href="<?php echo $serendipity['adminFile_redirect'] ?>"><?php echo DONE ?></a></noscript> 683 <?php 684 } 685 break; 686 687 case 'scale': 688 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 689 690 if (!is_array($file) || !serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 691 return; 692 } 693 694 printf( 695 SCALING_IMAGE . '<br />', 696 697 $file['path'] . $file['name'] .'.'. $file['extension'], 698 (int)$serendipity['GET']['width'], 699 (int)$serendipity['GET']['height'] 700 ); 701 702 echo serendipity_scaleImg($serendipity['GET']['fid'], $serendipity['GET']['width'], $serendipity['GET']['height']) . '<br />'; 703 echo DONE . '<br />'; 704 // Forward user to overview (we don't want the user's back button to rename things again) 705 ?> 706 <script language="javascript" type="text/javascript"> 707 location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default"; 708 </script> 709 <noscript><a href="?serendipity[adminModule]=images&serendipity[adminAction]=default"><?php echo DONE ?></a></noscript> 710 <?php 711 break; 712 713 case 'scaleSelect': 714 $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']); 715 716 if (!is_array($file) || !serendipity_checkPermission('adminImagesDelete') || (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid'])) { 717 return; 718 } 719 720 $s = getimagesize($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] .'.'. $file['extension']); 721 ?> 722 <script type="text/javascript" language="javascript"> 723 <!-- 724 function rescale(dim, newval) { 725 var originalWidth = <?php echo $s[0]; ?>; 726 var originalHeight = <?php echo $s[1]; ?>; 727 var ratio = originalHeight/originalWidth; 728 var trans = new Array(); 729 trans['width'] = new Array('serendipity[height]', ratio); 730 trans['height'] = new Array('serendipity[width]', 1/ratio); 731 732 if (document.serendipityScaleForm.elements['auto'].checked == true) { 733 document.serendipityScaleForm.elements[trans[dim][0]].value=Math.round(trans[dim][1]*newval); 734 } 735 736 document.getElementsByName('serendipityScaleImg')[0].style.width = 737 document.serendipityScaleForm.elements['serendipity[width]'].value+'px'; 738 739 document.getElementsByName('serendipityScaleImg')[0].style.height = 740 document.serendipityScaleForm.elements['serendipity[height]'].value+'px'; 741 } 742 //--> 743 </script> 744 <?php 745 746 printf(RESIZE_BLAHBLAH, htmlspecialchars($serendipity['GET']['fname'])); 747 printf(ORIGINAL_SIZE, $s[0],$s[1]); 748 echo HERE_YOU_CAN_ENTER_BLAHBLAH; 749 ?> 750 <form name="serendipityScaleForm" action="?" method="GET"> 751 <div> 752 <?php echo NEWSIZE; ?> 753 754 <?php echo serendipity_setFormToken(); ?> 755 <input type="hidden" name="serendipity[adminModule]" value="images" /> 756 <input type="hidden" name="serendipity[adminAction]" value="scale" /> 757 <input type="hidden" name="serendipity[fid]" value="<?php echo $serendipity["GET"]["fid"]; ?>" /> 758 759 <input class="input_textbox" type="text" size="4" name="serendipity[width]" onchange="rescale('width' , value);" value="<?php echo $s[0]; ?>" />x 760 <input class="input_textbox" type="text" size="4" name="serendipity[height]" onchange="rescale('height', value);" value="<?php echo $s[1]; ?>" /> 761 <br /> 762 763 <?php echo KEEP_PROPORTIONS; ?>: 764 <!-- <input type='button' value='preview'>--> 765 <input class="input_checkbox" type="checkbox" name="auto" checked="checked" /><br /> 766 <input type="button" name="scale" value="<?php echo IMAGE_RESIZE; ?>" onclick="if (confirm('<?php echo REALLY_SCALE_IMAGE; ?>')) document.serendipityScaleForm.submit();" class="serendipityPrettyButton input_button" /> 767 </div> 768 </form> 769 770 <img src="<?php echo $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] .'.'. $file['extension'] ; ?>" name="serendipityScaleImg" style="width: <?php echo $s[0]; ?>px; height: <?php echo $s[1]; ?>px;" alt="" /> 771 <?php 772 break; 773 774 default: 775 if (!serendipity_checkPermission('adminImagesView')) { 776 return; 777 } 778 779 ?> 780 <script type="text/javascript" language="javascript"> 781 <!-- 782 function rename(id, fname) { 783 if(newname = prompt('<?php echo ENTER_NEW_NAME; ?>' + fname, fname)) { 784 location.href='?<?php echo serendipity_setFormToken('url'); ?>&serendipity[adminModule]=images&serendipity[adminAction]=rename&serendipity[fid]='+ escape(id) + '&serendipity[newname]='+ escape(newname); 785 } 786 } 787 //--> 788 </script> 789 790 <?php 791 if (!isset($serendipity['thumbPerPage'])) { 792 $serendipity['thumbPerPage'] = 2; 793 } 794 serendipity_displayImageList( 795 isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1, 796 $serendipity['thumbPerPage'], 797 true 798 ); 799 800 break; 801 } 802 /* 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 |
![]() |