[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

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

   1  <?php # $Id: plugins.inc.php 1823 2007-08-07 13:59:43Z 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('adminPlugins')) {
  10      return;
  11  }
  12  
  13  include_once  S9Y_INCLUDE_PATH . 'include/plugin_api.inc.php';
  14  include_once  S9Y_INCLUDE_PATH . 'include/plugin_internal.inc.php';
  15  include_once  S9Y_INCLUDE_PATH . 'include/functions_entries_admin.inc.php';
  16  include_once  S9Y_INCLUDE_PATH . 'include/functions_plugins_admin.inc.php';
  17  
  18  if (isset($_GET['serendipity']['plugin_to_move']) && isset($_GET['submit']) && serendipity_checkFormToken()) {
  19      if (isset($_GET['serendipity']['event_plugin'])) {
  20          $plugins = serendipity_plugin_api::enum_plugins('event', false);
  21      } else {
  22          $plugins = serendipity_plugin_api::enum_plugins('event', true);
  23      }
  24  
  25      /* Renumber the sort order to be certain that one actually exists
  26          Also look for the one we're going to move */
  27      $idx_to_move = -1;
  28      for($idx = 0; $idx < count($plugins); $idx++) {
  29          $plugins[$idx]['sort_order'] = $idx;
  30  
  31          if ($plugins[$idx]['name'] == $_GET['serendipity']['plugin_to_move']) {
  32              $idx_to_move = $idx;
  33          }
  34      }
  35  
  36      /* If idx_to_move is still -1 then we never found it (shouldn't happen under normal conditions)
  37          Also make sure the swaping idx is around */
  38      if ($idx_to_move >= 0 && (($_GET['submit'] == 'move down' && $idx_to_move < (count($plugins)-1)) || ($_GET['submit'] == 'move up' && $idx_to_move > 0))) {
  39  
  40          /* Swap the one were moving with the one that's in the spot we're moving to */
  41          $tmp = $plugins[$idx_to_move]['sort_order'];
  42  
  43          $plugins[$idx_to_move]['sort_order'] = (int)$plugins[$idx_to_move + ($_GET['submit'] == 'move down' ? 1 : -1)]['sort_order'];
  44          $plugins[$idx_to_move + ($_GET['submit'] == 'move down' ? 1 : -1)]['sort_order'] = (int)$tmp;
  45  
  46          /* Update table */
  47          foreach($plugins as $plugin) {
  48              $key = serendipity_db_escape_string($plugin['name']);
  49              serendipity_db_query("UPDATE {$serendipity['dbPrefix']}plugins SET sort_order = {$plugin['sort_order']} WHERE name='$key'");
  50          }
  51      }
  52  
  53      /* TODO: Moving The first Right oriented plugin up,
  54              or the last left oriented plugin down
  55              should not be displayed to the user as an option.
  56              It's a behavior which really has no meaning. */
  57  }
  58  
  59  if (isset($_GET['serendipity']['plugin_to_conf'])) {
  60      /* configure a specific instance */
  61      $plugin =& serendipity_plugin_api::load_plugin($_GET['serendipity']['plugin_to_conf']);
  62  
  63      if (!($plugin->protected === FALSE || $plugin->serendipity_owner == '0' || $plugin->serendipity_owner == $serendipity['authorid'] || serendipity_checkPermission('adminPluginsMaintainOthers'))) {
  64          return;
  65      }
  66  
  67      $bag  = new serendipity_property_bag;
  68      $plugin->introspect($bag);
  69  
  70      if (method_exists($plugin, 'performConfig')) {
  71          $plugin->performConfig($bag);
  72      }
  73  
  74      $name = htmlspecialchars($bag->get('name'));
  75      $desc = htmlspecialchars($bag->get('description'));
  76  
  77      $config_names = $bag->get('configuration');
  78  
  79      if (isset($_POST['SAVECONF']) && serendipity_checkFormToken()) {
  80          /* enum properties and set their values */
  81  
  82          $save_errors = array();
  83          foreach ($config_names as $config_item) {
  84              $cbag = new serendipity_property_bag;
  85              if ($plugin->introspect_config_item($config_item, $cbag)) {
  86                  $value    = $_POST['serendipity']['plugin'][$config_item];
  87  
  88                  $validate = $plugin->validate($config_item, $cbag, $value);
  89  
  90                  if ($validate === true) {
  91  //                    echo $config_item . " validated: $validate<br />\n";
  92                      $plugin->set_config($config_item, $value);
  93                  } else {
  94                      $save_errors[] = $validate;
  95                  }
  96              }
  97          }
  98  
  99          $plugin->cleanup();
 100      }
 101  ?>
 102  
 103  <?php if ( isset($save_errors) && is_array($save_errors) && count($save_errors) > 0 ) { ?>
 104      <div class="serendipityAdminMsgError">
 105      <img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="<?php echo serendipity_getTemplateFile('admin/img/admin_msg_error.png'); ?>" alt="" />
 106      <?php
 107      echo ERROR . ":<br />\n";
 108      echo "<ul>\n";
 109      foreach($save_errors AS $save_error) {
 110          echo '<li>' . $save_error . "</li>\n";
 111      }
 112      echo "</ul>\n";
 113      ?>
 114      </div>
 115  <?php } elseif ( isset($_POST['SAVECONF'])) { ?>
 116      <div class="serendipityAdminMsgSuccess"><img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="<?php echo serendipity_getTemplateFile('admin/img/admin_msg_success.png'); ?>" alt="" /><?php echo DONE .': '. sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%H:%M:%S')); ?></div>
 117  <?php } ?>
 118  
 119  <form method="post" name="serendipityPluginConfigure">
 120      <?php echo serendipity_setFormToken(); ?>
 121      <table cellpadding="5" style="border: 1px dashed" width="90%" align="center">
 122          <tr>
 123              <th width="100"><?php echo NAME; ?></th>
 124              <td><?php echo $name; ?></td>
 125          </tr>
 126  
 127          <tr>
 128              <th><?php echo DESCRIPTION; ?></th>
 129              <td><?php echo $desc; ?></td>
 130          </tr>
 131      </table>
 132  <br />
 133  <?php serendipity_plugin_config($plugin, $bag, $name, $desc, $config_names); ?>
 134  </form>
 135  <?php
 136  
 137  } elseif ( $serendipity['GET']['adminAction'] == 'addnew' ) {
 138  ?>
 139  <?php if ( $serendipity['GET']['type'] == 'event' ) { ?>
 140      <h2><?php echo EVENT_PLUGINS ?></h2>
 141  <?php } else { ?>
 142      <h2><?php echo SIDEBAR_PLUGINS ?></h2>
 143  <?php } ?>
 144  <br />
 145  <?php
 146      $foreignPlugins = $pluginstack = $errorstack = array();
 147      serendipity_plugin_api::hook_event('backend_plugins_fetchlist', $foreignPlugins);
 148      $pluginstack = array_merge((array)$foreignPlugins['pluginstack'], $pluginstack);
 149      $errorstack  = array_merge((array)$foreignPlugins['errorstack'], $errorstack);
 150  
 151      $plugins = serendipity_plugin_api::get_installed_plugins();
 152      $classes = serendipity_plugin_api::enum_plugin_classes(($serendipity['GET']['type'] == 'event'));
 153      usort($classes, 'serendipity_pluginListSort');
 154  
 155      $counter    = 0;
 156      foreach ($classes as $class_data) {
 157          $pluginFile =  serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
 158          $plugin     =& serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $serendipity['GET']['type']);
 159  
 160          if (is_object($plugin)) {
 161              // Object is returned when a plugin could not be cached.
 162              $bag = new serendipity_property_bag;
 163              $plugin->introspect($bag);
 164  
 165              // If a foreign plugin is upgradable, keep the new version number.
 166              if (isset($foreignPlugins['pluginstack'][$class_data['name']]) && $foreignPlugins['pluginstack'][$class_data['name']]['upgradable']) {
 167                  $class_data['upgrade_version'] = $foreignPlugins['pluginstack'][$class_data['name']]['upgrade_version'];
 168              }
 169  
 170              $props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $foreignPlugins);
 171  
 172              $counter++;
 173          } elseif (is_array($plugin)) {
 174              // Array is returned if a plugin could be fetched from info cache
 175              $props = $plugin;
 176          } else {
 177              $props = false;
 178          }
 179  
 180          if (is_array($props)) {
 181              if (version_compare($props['version'], $props['upgrade_version'], '<')) {
 182                  $props['upgradable']      = true;
 183                  $props['customURI']      .= $foreignPlugins['baseURI'] . $foreignPlugins['upgradeURI'];
 184              }
 185  
 186              $props['installable']  = !($props['stackable'] === false && in_array($class_data['true_name'], $plugins));
 187              $props['requirements'] = unserialize($props['requirements']);
 188  
 189              $pluginstack[$class_data['true_name']] = $props;
 190          } else {
 191              // False is returned if a plugin could not be instantiated
 192              $errorstack[] = $class_data['true_name'];
 193          }
 194      }
 195  
 196      usort($pluginstack, 'serendipity_pluginListSort');
 197      $pluggroups     = array();
 198      $pluggroups[''] = array();
 199      foreach($pluginstack AS $plugname => $plugdata) {
 200          if ($serendipity['GET']['only_group'] == 'ALL') {
 201              $pluggroups['ALL'][] = $plugdata;
 202          } elseif ($serendipity['GET']['only_group'] == 'UPGRADE' && $plugdata['upgradable']) {
 203              $pluggroups['UPGRADE'][] = $plugdata;
 204          } elseif (is_array($plugdata['groups'])) {
 205              foreach($plugdata['groups'] AS $group) {
 206                  $pluggroups[$group][] = $plugdata;
 207              }
 208          } else {
 209              $pluggroups[''][] = $plugdata;
 210          }
 211      }
 212      ksort($pluggroups);
 213  
 214      foreach($errorstack as $e_idx => $e_name) {
 215          echo ERROR . ': ' . $e_name . '<br />';
 216      }
 217  
 218      if ($serendipity['GET']['only_group'] == 'UPGRADE') {
 219          serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups);
 220      }
 221  ?>
 222  <table cellspacing="0" cellpadding="0" border="0" width="100%">
 223  <?php
 224      $available_groups = array_keys($pluggroups);
 225      foreach($pluggroups AS $pluggroup => $groupstack) {
 226          if (empty($pluggroup)) {
 227          ?>
 228      <tr>
 229          <td colspan="2" class="serendipity_pluginlist_header">
 230              <form action="serendipity_admin.php" method="get">
 231                  <?php echo serendipity_setFormToken(); ?>
 232                  <input type="hidden" name="serendipity[adminModule]" value="plugins" />
 233                  <input type="hidden" name="serendipity[adminAction]" value="addnew" />
 234                  <input type="hidden" name="serendipity[type]" value="<?php echo htmlspecialchars($serendipity['GET']['type']); ?>" />
 235                  <?php echo FILTERS; ?>: <select name="serendipity[only_group]">
 236              <?php foreach((array)$available_groups AS $available_group) {
 237                      ?>
 238                      <option value="<?php echo $available_group; ?>" <?php echo ($serendipity['GET']['only_group'] == $available_group ? 'selected="selected"' : ''); ?>><?php echo serendipity_groupname($available_group); ?>
 239              <?php } ?>
 240                      <option value="ALL" <?php echo ($serendipity['GET']['only_group'] == 'ALL' ? 'selected="selected"' : ''); ?>><?php echo ALL_CATEGORIES; ?>
 241                      <option value="UPGRADE" <?php echo ($serendipity['GET']['only_group'] == 'UPGRADE' ? 'selected="selected"' : ''); ?>><?php echo WORD_NEW; ?>
 242                  </select>
 243                  <input class="serendipityPrettyButton input_button" type="submit" value="<?php echo GO; ?>" />
 244              </form>
 245          </td>
 246      </tr>
 247          <?php
 248              if (!empty($serendipity['GET']['only_group'])) {
 249                  continue;
 250              }
 251          } elseif (!empty($serendipity['GET']['only_group']) && $pluggroup != $serendipity['GET']['only_group']) {
 252              continue;
 253          } else {
 254          ?>
 255      <tr>
 256          <td colspan="2" class="serendipity_pluginlist_section"><strong><?php echo serendipity_groupname($pluggroup); ?></strong></td>
 257      </tr>
 258          <?php
 259          }
 260  ?>
 261      <tr>
 262          <td><strong>Plugin</strong></td>
 263          <td width="100" align="center"><strong>Action</strong></td>
 264      </tr>
 265  <?php
 266          foreach ($groupstack as $plug) {
 267              $jsLine = " onmouseout=\"document.getElementById('serendipity_plugin_". $plug['class_name'] ."').className='';\"";
 268              $jsLine .= " onmouseover=\"document.getElementById('serendipity_plugin_". $plug['class_name'] ."').className='serendipity_PluginAdminHighlight';\"";
 269  
 270              $pluginInfo = $notice = array();
 271              if (!empty($plug['author'])) {
 272                  $pluginInfo[] = AUTHOR  . ': ' . $plug['author'];
 273              }
 274  
 275              if (!empty($plug['version'])) {
 276                  $pluginInfo[] = VERSION  . ': ' . $plug['version'];
 277              }
 278  
 279              if (!empty($plug['upgrade_version']) && $plug['upgrade_version'] != $plug['version']) {
 280                  $pluginInfo[] = sprintf(UPGRADE_TO_VERSION, $plug['upgrade_version']);
 281              }
 282  
 283              if (!empty($plug['pluginlocation']) && $plug['pluginlocation'] != 'local') {
 284                  $pluginInfo[] = '(' . htmlspecialchars($plug['pluginlocation']) . ')';
 285                  $installimage = serendipity_getTemplateFile('admin/img/install_now_' . strtolower($plug['pluginlocation']) . '.png');
 286              } else {
 287                  $installimage = serendipity_getTemplateFile('admin/img/install_now.png');
 288              }
 289  
 290              if (!isset($plug['customURI'])) {
 291                  $plug['customURI'] = '';
 292              }
 293  
 294              if ( !empty($plug['requirements']['serendipity']) && version_compare($plug['requirements']['serendipity'], serendipity_getCoreVersion($serendipity['version']), '>') ) {
 295                  $notice['requirements_failures'][] = 's9y ' . $plug['requirements']['serendipity'];
 296              }
 297  
 298              if ( !empty($plug['requirements']['php']) && version_compare($plug['requirements']['php'], phpversion(), '>') ) {
 299                  $notice['requirements_failures'][] = 'PHP ' . $plug['requirements']['php'];
 300              }
 301  
 302              /* Enable after Smarty 2.6.7 upgrade.
 303               * TODO: How can we get current Smarty version here? $smarty is not created!
 304              if ( !empty($plug['requirements']['smarty']) && version_compare($plug['requirements']['smarty'], '2.6.7', '>') ) {
 305                  $notice['requirements_failures'][] = 'Smarty: ' . $plug['requirements']['smarty'];
 306              }
 307              */
 308  
 309              if (count($notice['requirements_failures']) > 0) {
 310                  $plug['requirements_fail'] = true;
 311              }
 312  
 313  ?>
 314      <tr id="serendipity_plugin_<?php echo $plug['class_name']; ?>">
 315          <td colspan="2" <?php echo $jsLine ?>>
 316              <table width="100%" cellpadding="3" cellspacing="0" border="0">
 317                  <tr>
 318                      <td><strong><?php echo $plug['name'] ?></strong></td>
 319                      <td width="100" align="center" valign="middle" rowspan="3">
 320                          <?php if ( $plug['requirements_fail'] == true ) { ?>
 321                              <span style="color: #cccccc"><?php printf(UNMET_REQUIREMENTS, implode(', ', $notice['requirements_failures'])); ?></span>
 322                          <?php } elseif ( $plug['upgradable'] == true ) { ?>
 323                              <a href="?serendipity[adminModule]=plugins&amp;serendipity[pluginPath]=<?php echo $plug['pluginPath']; ?>&amp;serendipity[install_plugin]=<?php echo $plug['plugin_class'] . $plug['customURI'] ?>"><img src="<?php echo serendipity_getTemplateFile('admin/img/upgrade_now.png') ?>" title="<?php echo UPGRADE ?>" alt="<?php echo UPGRADE ?>" border="0" /></a>
 324                          <?php } elseif ($plug['installable'] == true) { ?>
 325                              <a href="?serendipity[adminModule]=plugins&amp;serendipity[pluginPath]=<?php echo $plug['pluginPath']; ?>&amp;serendipity[install_plugin]=<?php echo $plug['plugin_class'] . $plug['customURI'] ?>"><img src="<?php echo $installimage ?>" title="<?php echo INSTALL ?>" alt="<?php echo INSTALL ?>" border="0" /></a>
 326                          <?php } else { ?>
 327                              <span style="color: #cccccc"><?php echo ALREADY_INSTALLED ?></span>
 328                          <?php } ?>
 329                      </td>
 330                  </tr>
 331                  <tr>
 332                      <td style="padding-left: 10px"><?php echo $plug['description'] ?></td>
 333                  </tr>
 334  <?php       if (count($pluginInfo) > 0) { ?>
 335                  <tr>
 336                      <td style="padding-left: 10px; font-size: x-small"><?php echo implode('; ', $pluginInfo); ?></td>
 337                  </tr>
 338  <?php       } ?>
 339              </table>
 340          </td>
 341      </tr>
 342  <?php
 343          }
 344      }
 345  ?>
 346      <tr>
 347          <td colspan="2" align="right"><?php printf(PLUGIN_AVAILABLE_COUNT, count($pluginstack)); ?></td>
 348      </tr>
 349  </table>
 350  
 351  <?php
 352  } else {
 353      /* show general plugin list */
 354  
 355      /* get sidebar locations */
 356      serendipity_smarty_init();
 357  
 358      if (is_array($template_config)) {
 359          $template_vars =& serendipity_loadThemeOptions($template_config);
 360      }
 361  
 362      $col_assoc = array(
 363          'event_col'  => 'event',
 364          'eventh_col' => 'eventh'
 365      );
 366      if (isset($template_vars['sidebars'])) {
 367          $sidebars = explode(',', $template_vars['sidebars']);
 368      } elseif (isset($serendipity['sidebars'])) {
 369          $sidebars = $serendipity['sidebars'];
 370      } else {
 371          $sidebars = array('left', 'hide', 'right');
 372      }
 373  
 374      foreach($sidebars AS $sidebar) {
 375          $col_assoc[$sidebar . '_col'] = $sidebar;
 376      }
 377  
 378      /* preparse Javascript-generated input */
 379      if (isset($_POST['SAVE']) && !empty($_POST['serendipity']['pluginorder'])) {
 380          $parts = explode(':', $_POST['serendipity']['pluginorder']);
 381  
 382          foreach($parts AS $sidepart) {
 383              preg_match('@^(.+)\((.*)\)$@imsU', $sidepart, $matches);
 384              if (!isset($col_assoc[$matches[1]])) {
 385                  continue;
 386              }
 387              $pluginsidelist = explode(',', $matches[2]);
 388              foreach($pluginsidelist AS $pluginname) {
 389                  $pluginname = trim(urldecode(str_replace(array('s9ycid', '-'), array('', '%'), $pluginname)));
 390  
 391                  if (empty($pluginname)) {
 392                      continue;
 393                  }
 394                  $serendipity['POST']['placement'][$pluginname] = $col_assoc[$matches[1]];
 395                  $new_order[] = $pluginname;
 396  
 397              }
 398          }
 399  
 400          if (is_array($new_order)) {
 401              foreach($new_order AS $new_order_pos => $order_plugin) {
 402                  serendipity_db_query("UPDATE {$serendipity['dbPrefix']}plugins SET sort_order = ". (int)$new_order_pos . " WHERE name='" . serendipity_db_escape_string($order_plugin) . "'");
 403              }
 404          }
 405      }
 406  
 407      if (isset($_POST['SAVE']) && isset($_POST['serendipity']['placement']) && serendipity_checkFormToken()) {
 408          foreach ($_POST['serendipity']['placement'] as $plugin_name => $placement) {
 409              serendipity_plugin_api::update_plugin_placement(
 410                  addslashes($plugin_name),
 411                  addslashes($placement)
 412              );
 413  
 414              serendipity_plugin_api::update_plugin_owner(
 415                  addslashes($plugin_name),
 416                  addslashes($_POST['serendipity']['ownership'][$plugin_name])
 417              );
 418          }
 419      }
 420  
 421      if (isset($serendipity['GET']['install_plugin'])) {
 422          $authorid = $serendipity['authorid'];
 423          if (serendipity_checkPermission('adminPluginsMaintainOthers')) {
 424              $authorid = '0';
 425          }
 426  
 427          $fetchplugin_data = array('GET'     => &$serendipity['GET'],
 428                                    'install' => true);
 429          serendipity_plugin_api::hook_event('backend_plugins_fetchplugin', $fetchplugin_data);
 430  
 431          if ($fetchplugin_data['install']) {
 432              $serendipity['debug']['pluginload'] = array();
 433              $inst = serendipity_plugin_api::create_plugin_instance($serendipity['GET']['install_plugin'], null, (serendipity_plugin_api::is_event_plugin($serendipity['GET']['install_plugin']) ? 'event': 'right'), $authorid, serendipity_db_escape_string($serendipity['GET']['pluginPath']));
 434  
 435              /* Load the new plugin */
 436              $plugin = &serendipity_plugin_api::load_plugin($inst);
 437              if (!is_object($plugin)) {
 438                  echo "DEBUG: Plugin $inst not an object: " . print_r($plugin, true) . ".<br />Input: " . print_r($serendipity['GET'], true) . ".<br /><br />\n\nThis error can happen if a plugin was not properly downloaded (check your plugins directory if the requested plugin was downloaded) or the inclusion of a file failed (permissions?)<br />\n";
 439                  echo "Backtrace:<br />\n" . implode("<br />\n", $serendipity['debug']['pluginload']) . "<br />";
 440              }
 441              $bag  = new serendipity_property_bag;
 442              $plugin->introspect($bag);
 443  
 444              if ($bag->is_set('configuration')) {
 445                  /* Only play with the plugin if there is something to play with */
 446                  echo '<script type="text/javascript">location.href = \'' . $serendipity['baseurl'] . '?serendipity[adminModule]=plugins&serendipity[plugin_to_conf]=' . $inst . '\';</script>';
 447                  die();
 448              } else {
 449                  /* If no config is available, redirect to plugin overview, because we do not want that a user can install the plugin a second time via accidental browser refresh */
 450                  echo '<script type="text/javascript">location.href = \'' . $serendipity['baseurl'] . '?serendipity[adminModule]=plugins\';</script>';
 451                  die();
 452              }
 453          }
 454      }
 455  
 456      if (isset($_POST['REMOVE']) && serendipity_checkFormToken()) {
 457          if (is_array($_POST['serendipity']['plugin_to_remove'])) {
 458              foreach ($_POST['serendipity']['plugin_to_remove'] as $key) {
 459                  $plugin =& serendipity_plugin_api::load_plugin($key);
 460  
 461                  if ($plugin->serendipity_owner == '0' || $plugin->serendipity_owner == $serendipity['authorid'] || serendipity_checkPermission('adminPluginsMaintainOthers')) {
 462                      serendipity_plugin_api::remove_plugin_instance($key);
 463                  }
 464              }
 465          }
 466      }
 467  ?>
 468  
 469  <?php if (isset($_POST['SAVE'])) { ?>
 470      <div class="serendipityAdminMsgSuccess"><img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="<?php echo serendipity_getTemplateFile('admin/img/admin_msg_success.png'); ?>" alt="" /><?php echo DONE .': '. sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%H:%M:%S')); ?></div>
 471  <?php } ?>
 472  
 473      <div><?php echo BELOW_IS_A_LIST_OF_INSTALLED_PLUGINS ?></div>
 474  <?php
 475      if (!isset($serendipity['eyecandy']) || serendipity_db_bool($serendipity['eyecandy'])) {
 476          echo '<script src="' . serendipity_getTemplateFile('dragdrop.js') . '" type="text/javascript"></script>';
 477          echo '<div class="warning js_warning"><em>' . PREFERENCE_USE_JS_WARNING . '</em></div>';
 478      }
 479  
 480      serendipity_plugin_api::hook_event('backend_pluginlisting_header', $serendipity['eyecandy']);
 481  ?>
 482      <br />
 483  
 484      <h3><?php echo SIDEBAR_PLUGINS ?></h3>
 485      <a href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew" class="serendipityIconLink"><img src="<?php echo serendipity_getTemplateFile('admin/img/install.png') ?>" style="border: 0px none ; vertical-align: middle; display: inline;" alt="" /><?php echo sprintf(CLICK_HERE_TO_INSTALL_PLUGIN, SIDEBAR_PLUGIN) ?></a>
 486      <?php serendipity_plugin_api::hook_event('backend_plugins_sidebar_header', $serendipity); ?>
 487      <?php show_plugins(false, $sidebars); ?>
 488  
 489      <br />
 490      <br />
 491  
 492      <h3><?php echo EVENT_PLUGINS ?></h3>
 493      <a href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[type]=event" class="serendipityIconLink"><img src="<?php echo serendipity_getTemplateFile('admin/img/install.png') ?>" style="border: 0px none ; vertical-align: middle; display: inline;" alt="" /><?php echo sprintf(CLICK_HERE_TO_INSTALL_PLUGIN, EVENT_PLUGIN) ?></a>
 494      <?php serendipity_plugin_api::hook_event('backend_plugins_event_header', $serendipity); ?>
 495      <?php show_plugins(true); ?>
 496  
 497      <?php if (count($serendipity['memSnaps']) > 0) { ?>
 498      <h3>Memory Usage</h3>
 499      <div>
 500          <pre><?php print_r($serendipity['memSnaps']); ?></pre>
 501      </div>
 502      <?php } ?>
 503  <?php
 504  }
 505  /* 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