[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ -> serendipity_admin_image_selector.php (source)

   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 .= '&amp;serendipity[htmltarget]=' . htmlspecialchars($serendipity['GET']['htmltarget']);
 279          }
 280  
 281          if (!empty($serendipity['GET']['filename_only'])) {
 282              $add_url .= '&amp;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 . '&amp;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 : */


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