From 8b51c37b9810a581c7707b1d55c41417f92e0be4 Mon Sep 17 00:00:00 2001 From: Garvin Hicking Date: Thu, 15 Jan 2015 10:13:53 +0100 Subject: [PATCH] Address issue #261 Prevent resetting entryproperties when using serendipity_updertEntry --- docs/NEWS | 4 ++++ .../serendipity_event_entryproperties.php | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/NEWS b/docs/NEWS index a0c1c7e5..9f6afeea 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,10 @@ Version 2.0 () ------------------------------------------------------------------------ + * Fix entryproperties being removed when publishing an article + from the dashboard and by specific plugins (freetag, trackback) + that modify entry data. + * Fix deleting comments when user is not an admin, but the entry belongs to him. Thanks to berberic. diff --git a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php index 1b618400..4f1b652c 100644 --- a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php +++ b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php @@ -15,7 +15,7 @@ class serendipity_event_entryproperties extends serendipity_event $propbag->add('description', PLUGIN_EVENT_ENTRYPROPERTIES_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.35'); + $propbag->add('version', '1.36'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -210,6 +210,7 @@ class serendipity_event_entryproperties extends serendipity_event function addProperties(&$properties, &$eventData) { global $serendipity; + // Get existing data $property = serendipity_fetchEntryProperties($eventData['id']); $supported_properties = serendipity_event_entryproperties::getSupportedProperties(); @@ -233,6 +234,15 @@ class serendipity_event_entryproperties extends serendipity_event serendipity_plugin_api::hook_event('backend_entryproperties', $supported_properties); foreach($supported_properties AS $prop_key) { + // Do not delete a property if it is not subbmitted to this function, because serendipity_updertEntry + // possibly only wants to update entry metadata and left out any specific properties, which need to be kept. + // An empty string like "" will properly remove an entryproperty, and POST values will always set an array index to an empty string. + // $serendipipty['POST']['propertyform'] will be set whenever the entryeditor was properly displayed and unticked checkboxes shall remain. + // (Not for checkboxes, but checkboxes are not used for entryproperties) + if (!isset($properties[$prop_key]) && !isset($serendipity['POST']['propertyform'])) { + continue; + } + $prop_val = (isset($properties[$prop_key]) ? $properties[$prop_key] : null); $prop_key = 'ep_' . $prop_key; @@ -561,6 +571,7 @@ class serendipity_event_entryproperties extends serendipity_event ?>
+