[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/include/admin/ -> images.inc.php (source)

   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                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 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&amp;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&amp;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&amp;serendipity[adminAction]=directoryEdit&amp;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&amp;serendipity[adminAction]=directoryDoDelete&amp;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&amp;serendipity[adminModule]=images&amp;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('&nbsp;', $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&amp;serendipity[adminAction]=directoryEdit&amp;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&amp;serendipity[adminAction]=directoryDelete&amp;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&amp;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&amp;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 : */


Généré le : Sat Nov 24 09:00:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics