http://www.mediawiki.org/wiki/Special:Code/MediaWiki/90708

Revision: 90708
Author:   salvatoreingala
Date:     2011-06-24 10:22:21 +0000 (Fri, 24 Jun 2011)
Log Message:
-----------
- GadgetHooks::userSaveOptions now omits gadget preferences if they equal their 
default value
- Gadget::setPrefsDescription invalidates gadget's preferences, if they had 
previously been set

Modified Paths:
--------------
    branches/salvatoreingala/Gadgets/backend/Gadget.php
    branches/salvatoreingala/Gadgets/backend/GadgetHooks.php

Modified: branches/salvatoreingala/Gadgets/backend/Gadget.php
===================================================================
--- branches/salvatoreingala/Gadgets/backend/Gadget.php 2011-06-24 10:00:35 UTC 
(rev 90707)
+++ branches/salvatoreingala/Gadgets/backend/Gadget.php 2011-06-24 10:22:21 UTC 
(rev 90708)
@@ -648,6 +648,8 @@
         * Sets the description of preferences for this gadget. If the given 
array is not valid,
         * then internal preference description is set to null.
         * 
+        * Invalidates any previous preference value set with setPrefs().
+        * 
         * @param $prefsDescription mixed an array with new preferences 
description, or null.
         * 
         */
@@ -657,6 +659,9 @@
                } else {
                        $this->prefsDescription = null;
                }
+               
+               //Any previously set of preferences has no meaning now, set 
back to null
+               $this->preferences = null;
        }
 
        //Check if a preference is valid, according to description

Modified: branches/salvatoreingala/Gadgets/backend/GadgetHooks.php
===================================================================
--- branches/salvatoreingala/Gadgets/backend/GadgetHooks.php    2011-06-24 
10:00:35 UTC (rev 90707)
+++ branches/salvatoreingala/Gadgets/backend/GadgetHooks.php    2011-06-24 
10:22:21 UTC (rev 90708)
@@ -236,11 +236,18 @@
                }
                
                foreach ( $gadgets as $gadget ) {
-                       if ( $gadget->getPrefs() !== null ) {
-                               //TODO: should remove prefs that equal their 
default
-
-                               $prefsSerialized = serialize( 
$gadget->getPrefs() );
-                               $options["gadget-{$gadget->getName()}-config"] 
= $prefsSerialized;
+                       $prefs = $gadget->getPrefs();
+                       if ( $prefs !== null ) {
+                               $prefsDescription = 
$gadget->getPrefsDescription();
+                               
+                               //Remove preferences that equal their default
+                               foreach ( $prefs as $prefName => $value ) {
+                                       if ( 
$prefsDescription['fields'][$prefName]['default'] === $value ) {
+                                               unset( $prefs[$prefName] );
+                                       }
+                               }
+                               
+                               $options["gadget-{$gadget->getName()}-config"] 
= serialize( $prefs );
                        }
                }
                


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to