From 6f6d237ec782ff680cd733446ee87823e366a146 Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Sun, 6 Nov 2005 21:25:32 +0000 Subject: [PATCH] fix spartacus problems, document --- docs/NEWS | 5 +++ include/admin/images.inc.php | 10 ++++-- include/plugin_api.inc.php | 34 +++++++++++++++++-- .../serendipity_event_spartacus.php | 9 ++--- 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/docs/NEWS b/docs/NEWS index d465d5c..666691b 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,11 @@ Version 0.9.1 () ------------------------------------------------------------------------ + * Fix spartacus plugin to not properly indicate updatable versions + of plugins (garvinhicking) + + * Fix multi-media upload in Safari browser (jhermanns) + * Make calendar plugin also accept links to external events (garvinhicking) diff --git a/include/admin/images.inc.php b/include/admin/images.inc.php index 4918029..a32badb 100644 --- a/include/admin/images.inc.php +++ b/include/admin/images.inc.php @@ -446,8 +446,8 @@ switch ($serendipity['GET']['adminAction']) { fields.style.display = 'block'; // Get the DOM outline be uncommenting this: - // document.getElementById('debug').innerHTML = showNodes(fields); - + //document.getElementById('debug').innerHTML = showNodes(fields); + // garvin: This gets a bit weird. Opera, Mozilla and IE all have their own numbering. // We cannot operate on "ID" basis, since a unique ID is not yet set before instancing. if (fields.childNodes[0].nodeValue == null) { @@ -464,6 +464,12 @@ switch ($serendipity['GET']['adminAction']) { targetfilename = fields.childNodes[1].childNodes[0].childNodes[2].childNodes[1].childNodes[0]; targetdir = fields.childNodes[1].childNodes[0].childNodes[3].childNodes[1].childNodes[0]; columncount = fields.childNodes[3].childNodes[0]; + } else if (fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3] == null) { + // This is Safari. + userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[1].childNodes[0]; + targetfilename = fields.childNodes[1].childNodes[1].childNodes[2].childNodes[1].childNodes[0]; + targetdir = fields.childNodes[1].childNodes[1].childNodes[3].childNodes[1].childNodes[0]; + columncount = fields.childNodes[3].childNodes[0]; } else { // This is Mozilla. userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3].childNodes[0]; diff --git a/include/plugin_api.inc.php b/include/plugin_api.inc.php index 3193e17..76c2e02 100644 --- a/include/plugin_api.inc.php +++ b/include/plugin_api.inc.php @@ -467,6 +467,24 @@ class serendipity_plugin_api { function &setPluginInfo(&$plugin, &$pluginFile, &$bag, &$class_data, $pluginlocation = 'local') { global $serendipity; + + static $dbfields = array( + 'plugin_file', + 'class_name', + 'plugin_class', + 'pluginPath', + 'name', + 'description', + 'version', + 'upgrade_version', + 'plugintype', + 'pluginlocation', + 'stackable', + 'author', + 'requirements', + 'website', + 'last_modified' + ); serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}pluginlist WHERE plugin_file = '" . serendipity_db_escape_string($pluginFile) . "' AND pluginlocation = '" . serendipity_db_escape_string($pluginlocation) . "'"); @@ -508,9 +526,19 @@ class serendipity_plugin_api { if (!isset($data['stackable']) || empty($data['stackable'])) { $data['stackable'] = '0'; } - - // TODO: Check right columns! "upgradable" not existing? - serendipity_db_insert('pluginlist', $data); + + // Only insert data keys that exist in the DB. + $insertdata = array(); + foreach($dbfields AS $field) { + $insertdata[$field] = $data[$field]; + } + + if ($data['upgradable']) { + serendipity_db_query("UPDATE {$serendipity['dbPrefix']}pluginlist + SET upgrade_version = '" . serendipity_db_escape_string($data['upgrade_version']) . "' + WHERE plugin_class = '" . serendipity_db_escape_string($data['plugin_class']) . "'"); + } + serendipity_db_insert('pluginlist', $insertdata); serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}plugincategories WHERE class_name = '" . serendipity_db_escape_string($data['class_name']) . "'"); foreach((array)$groups AS $group) { diff --git a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php index c6766a0..2aa7d19 100644 --- a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php +++ b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php @@ -50,7 +50,7 @@ class serendipity_event_spartacus extends serendipity_event $propbag->add('description', PLUGIN_EVENT_SPARTACUS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '2.4'); + $propbag->add('version', '2.5'); $propbag->add('requirements', array( 'serendipity' => '0.9', 'smarty' => '2.6.7', @@ -74,6 +74,10 @@ class serendipity_event_spartacus extends serendipity_event function cleanup() { global $serendipity; + // Purge DB cache + serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}pluginlist"); + serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}plugincategories"); + // Purge cached XML files. $files = serendipity_traversePath($serendipity['serendipityPath'] . PATH_SMARTY_COMPILE, '', false, '/package_.+\.xml$/'); @@ -85,9 +89,6 @@ class serendipity_event_spartacus extends serendipity_event printf(DELETING_FILE . '
', $file['name']); @unlink($serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/' . $file['name']); } - - serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}pluginlist"); - serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}plugincategories"); } function &getMirrors($type = 'xml', $loc = false) { -- 2.39.5