= 0 && (($_GET['submit'] == 'move down' && $idx_to_move < (count($plugins)-1)) || ($_GET['submit'] == 'move up' && $idx_to_move > 0))) {
/* Swap the one were moving with the one that's in the spot we're moving to */
$tmp = $plugins[$idx_to_move]['sort_order'];
$plugins[$idx_to_move]['sort_order'] = (int)$plugins[$idx_to_move + ($_GET['submit'] == 'move down' ? 1 : -1)]['sort_order'];
$plugins[$idx_to_move + ($_GET['submit'] == 'move down' ? 1 : -1)]['sort_order'] = (int)$tmp;
/* Update table */
foreach($plugins as $plugin) {
$key = serendipity_db_escape_string($plugin['name']);
serendipity_db_query("UPDATE {$serendipity['dbPrefix']}plugins SET sort_order = {$plugin['sort_order']} WHERE name='$key'");
}
}
/* TODO: Moving The first Right oriented plugin up,
or the last left oriented plugin down
should not be displayed to the user as an option.
It's a behavior which really has no meaning. */
}
if (isset($_GET['serendipity']['plugin_to_conf'])) {
/* configure a specific instance */
$plugin =& serendipity_plugin_api::load_plugin($_GET['serendipity']['plugin_to_conf']);
if (!($plugin->protected === FALSE || $plugin->serendipity_owner == '0' || $plugin->serendipity_owner == $serendipity['authorid'] || serendipity_checkPermission('adminPluginsMaintainOthers'))) {
return;
}
$bag = new serendipity_property_bag;
$plugin->introspect($bag);
if (method_exists($plugin, 'performConfig')) {
$plugin->performConfig($bag);
}
$name = htmlspecialchars($bag->get('name'));
$desc = htmlspecialchars($bag->get('description'));
$license = htmlspecialchars($bag->get('license'));
$documentation = $bag->get('website');
$config_names = $bag->get('configuration');
$config_groups = $bag->get('config_groups');
if (isset($_POST['SAVECONF']) && serendipity_checkFormToken()) {
/* enum properties and set their values */
$save_errors = array();
foreach ($config_names as $config_item) {
$cbag = new serendipity_property_bag;
if ($plugin->introspect_config_item($config_item, $cbag)) {
$value = $_POST['serendipity']['plugin'][$config_item];
$validate = $plugin->validate($config_item, $cbag, $value);
if ($validate === true) {
// echo $config_item . " validated: $validate
\n";
if (!empty($_POST['serendipity']['plugin']['override'][$config_item])) {
$value = $_POST['serendipity']['plugin']['override'][$config_item];
}
if (is_array($_POST['serendipity']['plugin']['activate'][$config_item])) {
$values = explode(',', $value);
$out_values = array();
foreach($values AS $out_value) {
if (!isset($_POST['serendipity']['plugin']['activate'][$config_item][$out_value])) {
continue;
}
$out_values[] = $out_value;
}
$value = implode(',', $out_values);
}
$plugin->set_config($config_item, $value);
} else {
$save_errors[] = $validate;
}
}
}
$plugin->cleanup();
}
?>
0 ) { ?>
; ?>)
\n";
echo "
\n";
foreach($save_errors AS $save_error) {
echo '- ' . $save_error . "
\n";
}
echo "
\n";
?>
; ?>)
introspect($bag);
// If a foreign plugin is upgradable, keep the new version number.
if (isset($foreignPlugins['pluginstack'][$class_data['name']]) && $foreignPlugins['pluginstack'][$class_data['name']]['upgradable']) {
$class_data['upgrade_version'] = $foreignPlugins['pluginstack'][$class_data['name']]['upgrade_version'];
}
$props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $foreignPlugins);
$counter++;
} elseif (is_array($plugin)) {
// Array is returned if a plugin could be fetched from info cache
$props = $plugin;
} else {
$props = false;
}
if (is_array($props)) {
if (version_compare($props['version'], $props['upgrade_version'], '<')) {
$props['upgradable'] = true;
$props['customURI'] .= $foreignPlugins['baseURI'] . $foreignPlugins['upgradeURI'];
}
$props['installable'] = !($props['stackable'] === false && in_array($class_data['true_name'], $plugins));
$props['requirements'] = unserialize($props['requirements']);
if (empty($props['changelog']) && @file_exists(dirname($plugin->pluginFile) . '/ChangeLog')) {
$props['changelog'] = 'plugins/' . $props['pluginPath'] . '/ChangeLog';
}
if (empty($props['local_documentation'])) {
if (@file_exists(dirname($props['plugin_file']) . '/documentation_' . $serendipity['lang'] . '.html')) {
$props['local_documentation'] = 'plugins/' . $props['pluginPath'] . '/documentation_' . $serendipity['lang'] . '.html';
} elseif (@file_exists(dirname($props['plugin_file']) . '/documentation_en.html')) {
$props['local_documentation'] = 'plugins/' . $props['pluginPath'] . '/documentation_en.html';
} elseif (@file_exists(dirname($props['plugin_file']) . '/documentation.html')) {
$props['local_documentation'] = 'plugins/' . $props['pluginPath'] . '/documentation.html';
} elseif (@file_exists(dirname($props['plugin_file']) . '/README')) {
$props['local_documentation'] = 'plugins/' . $props['pluginPath'] . '/README';
}
}
$pluginstack[$class_data['true_name']] = $props;
} else {
// False is returned if a plugin could not be instantiated
$errorstack[] = $class_data['true_name'];
}
}
usort($pluginstack, 'serendipity_pluginListSort');
$pluggroups = array();
$pluggroups[''] = array();
foreach($pluginstack AS $plugname => $plugdata) {
if ($serendipity['GET']['only_group'] == 'ALL') {
$pluggroups['ALL'][] = $plugdata;
} elseif ($serendipity['GET']['only_group'] == 'UPGRADE' && $plugdata['upgradable']) {
$pluggroups['UPGRADE'][] = $plugdata;
} elseif (is_array($plugdata['groups'])) {
foreach($plugdata['groups'] AS $group) {
$pluggroups[$group][] = $plugdata;
}
} else {
$pluggroups[''][] = $plugdata;
}
}
ksort($pluggroups);
foreach($errorstack as $e_idx => $e_name) {
echo ERROR . ': ' . $e_name . '
';
}
if ($serendipity['GET']['only_group'] == 'UPGRADE') {
serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups);
}
?>
$groupstack) {
if (empty($pluggroup)) {
?>
|
Plugin |
Action |
' . PLUGIN_DOCUMENTATION . '';
}
if (!empty($plug['local_documentation'])) {
$pluginInfo[] = '' . PLUGIN_DOCUMENTATION_LOCAL . '';
}
if (!empty($plug['changelog'])) {
$pluginInfo[] = '' . PLUGIN_DOCUMENTATION_CHANGELOG . '';
}
if (!empty($plug['upgrade_version']) && $plug['upgrade_version'] != $plug['version']) {
$pluginInfo[] = sprintf(UPGRADE_TO_VERSION, $plug['upgrade_version']);
}
if (!empty($plug['pluginlocation']) && $plug['pluginlocation'] != 'local') {
$pluginInfo[] = '(' . htmlspecialchars($plug['pluginlocation']) . ')';
$installimage = serendipity_getTemplateFile('admin/img/install_now_' . strtolower($plug['pluginlocation']) . '.png');
} else {
$installimage = serendipity_getTemplateFile('admin/img/install_now.png');
}
if (!isset($plug['customURI'])) {
$plug['customURI'] = '';
}
if ( !empty($plug['requirements']['serendipity']) && version_compare($plug['requirements']['serendipity'], serendipity_getCoreVersion($serendipity['version']), '>') ) {
$notice['requirements_failures'][] = 's9y ' . $plug['requirements']['serendipity'];
}
if ( !empty($plug['requirements']['php']) && version_compare($plug['requirements']['php'], phpversion(), '>') ) {
$notice['requirements_failures'][] = 'PHP ' . $plug['requirements']['php'];
}
/* Enable after Smarty 2.6.7 upgrade.
* TODO: How can we get current Smarty version here? $smarty is not created!
if ( !empty($plug['requirements']['smarty']) && version_compare($plug['requirements']['smarty'], '2.6.7', '>') ) {
$notice['requirements_failures'][] = 'Smarty: ' . $plug['requirements']['smarty'];
}
*/
if (count($notice['requirements_failures']) > 0) {
$plug['requirements_fail'] = true;
}
?>
>
|
|
|
0) { ?>
() |
|
|
'event',
'eventh_col' => 'eventh'
);
if (isset($template_vars['sidebars'])) {
$sidebars = explode(',', $template_vars['sidebars']);
} elseif (isset($serendipity['sidebars'])) {
$sidebars = $serendipity['sidebars'];
} else {
$sidebars = array('left', 'hide', 'right');
}
foreach($sidebars AS $sidebar) {
$col_assoc[$sidebar . '_col'] = $sidebar;
}
/* preparse Javascript-generated input */
if (isset($_POST['SAVE']) && !empty($_POST['serendipity']['pluginorder'])) {
$parts = explode(':', $_POST['serendipity']['pluginorder']);
foreach($parts AS $sidepart) {
preg_match('@^(.+)\((.*)\)$@imsU', $sidepart, $matches);
if (!isset($col_assoc[$matches[1]])) {
continue;
}
$pluginsidelist = explode(',', $matches[2]);
foreach($pluginsidelist AS $pluginname) {
$pluginname = trim(urldecode(str_replace(array('s9ycid', '-'), array('', '%'), $pluginname)));
if (empty($pluginname)) {
continue;
}
$serendipity['POST']['placement'][$pluginname] = $col_assoc[$matches[1]];
$new_order[] = $pluginname;
}
}
if (is_array($new_order)) {
foreach($new_order AS $new_order_pos => $order_plugin) {
serendipity_db_query("UPDATE {$serendipity['dbPrefix']}plugins SET sort_order = ". (int)$new_order_pos . " WHERE name='" . serendipity_db_escape_string($order_plugin) . "'");
}
}
}
if (isset($_POST['SAVE']) && isset($_POST['serendipity']['placement']) && serendipity_checkFormToken()) {
foreach ($_POST['serendipity']['placement'] as $plugin_name => $placement) {
serendipity_plugin_api::update_plugin_placement(
addslashes($plugin_name),
addslashes($placement)
);
serendipity_plugin_api::update_plugin_owner(
addslashes($plugin_name),
addslashes($_POST['serendipity']['ownership'][$plugin_name])
);
}
}
if (isset($serendipity['GET']['install_plugin'])) {
$authorid = $serendipity['authorid'];
if (serendipity_checkPermission('adminPluginsMaintainOthers')) {
$authorid = '0';
}
$fetchplugin_data = array('GET' => &$serendipity['GET'],
'install' => true);
serendipity_plugin_api::hook_event('backend_plugins_fetchplugin', $fetchplugin_data);
if ($fetchplugin_data['install']) {
$serendipity['debug']['pluginload'] = array();
$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']));
/* Load the new plugin */
$plugin = &serendipity_plugin_api::load_plugin($inst);
if (!is_object($plugin)) {
echo "DEBUG: Plugin $inst not an object: " . print_r($plugin, true) . ".
Input: " . print_r($serendipity['GET'], true) . ".
\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?)
\n";
echo "Backtrace:
\n" . implode("
\n", $serendipity['debug']['pluginload']) . "
";
}
$bag = new serendipity_property_bag;
$plugin->introspect($bag);
if ($bag->is_set('configuration')) {
/* Only play with the plugin if there is something to play with */
echo '';
die();
} else {
/* 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 */
echo '';
die();
}
}
}
if (isset($_POST['REMOVE']) && serendipity_checkFormToken()) {
if (is_array($_POST['serendipity']['plugin_to_remove'])) {
foreach ($_POST['serendipity']['plugin_to_remove'] as $key) {
$plugin =& serendipity_plugin_api::load_plugin($key);
if ($plugin->serendipity_owner == '0' || $plugin->serendipity_owner == $serendipity['authorid'] || serendipity_checkPermission('adminPluginsMaintainOthers')) {
serendipity_plugin_api::remove_plugin_instance($key);
}
}
}
}
?>
; ?>)
';
echo '' . PREFERENCE_USE_JS_WARNING . '
';
}
serendipity_plugin_api::hook_event('backend_pluginlisting_header', $serendipity['eyecandy']);
?>
0) { ?>
Memory Usage