From: garvinhicking <garvinhicking>
Date: Sun, 6 Nov 2005 21:25:32 +0000 (+0000)
Subject: fix spartacus problems, document
X-Git-Tag: 0.9.1~41
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=6f6d237ec782ff680cd733446ee87823e366a146;p=s9y.git

fix spartacus problems, document
---

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 . '<br />', $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) {