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

Revision: 90322
Author:   salvatoreingala
Date:     2011-06-17 21:55:54 +0000 (Fri, 17 Jun 2011)
Log Message:
-----------
- Using serialize()/unserialize() to save and retrieve from DB.
- Fixed a bug in preference retrieval.

Modified Paths:
--------------
    branches/salvatoreingala/Gadgets/Gadgets_body.php

Modified: branches/salvatoreingala/Gadgets/Gadgets_body.php
===================================================================
--- branches/salvatoreingala/Gadgets/Gadgets_body.php   2011-06-17 21:55:22 UTC 
(rev 90321)
+++ branches/salvatoreingala/Gadgets/Gadgets_body.php   2011-06-17 21:55:54 UTC 
(rev 90322)
@@ -172,7 +172,16 @@
                        $m = array();
                        if ( preg_match( '/gadget-([a-zA-Z](?:[-_:.\w\d 
]*[a-zA-Z0-9])?)-config/', $option, $m ) ) {
                                $gadgetName = $m[1];
-                               $preferencesCache[$gadgetName] = 
FormatJson::decode( $value, true );
+                               wfSuppressWarnings();                           
+                               $gadgetPrefs = unserialize( $value );
+                               wfRestoreWarnings();
+                               if ( $gadgetPrefs !== false ) {
+                                       $preferencesCache[$gadgetName] = 
$gadgetPrefs;
+                               } else {
+                                       //should not happen; just in case
+                                       wfDebug( __METHOD__ . ": couldn't 
unserialize settings for gadget " .
+                                                       "$gadgetName and user 
{$curUser->getID()}. Ignoring.\n" );
+                               }
                                unset( $options[$option] );
                        }
                }
@@ -180,20 +189,19 @@
                //Record preferences for each gadget
                $gadgets = Gadget::loadList();
                foreach ( $gadgets as $gadget ) {
-                       if ( isset( $preferencesCache[$gadget->getName()] ) ) {
-                               if ( $gadget->getPrefsDescription() !== null ) {
-                                       if ( isset( 
$preferencesCache[$gadget->getName()] ) ) {
-                                               $userPrefs = 
$preferencesCache[$gadget->getName()];
-                                       }
-                                       
-                                       if ( !isset( $userPrefs ) ) {
-                                               $userPrefs = array(); //no 
saved prefs (or invalid JSON), use defaults
-                                       }
-                                       
-                                       Gadget::matchPrefsWithDescription( 
$gadget->getPrefsDescription(), $userPrefs );
-                                       
-                                       $gadget->setPrefs( $userPrefs );
+                       $prefsDescription = $gadget->getPrefsDescription();
+                       if ( $prefsDescription !== null ) {
+                               if ( isset( 
$preferencesCache[$gadget->getName()] ) ) {
+                                       $userPrefs = 
$preferencesCache[$gadget->getName()];
                                }
+                               
+                               if ( !isset( $userPrefs ) ) {
+                                       $userPrefs = array(); //no saved prefs 
(or invalid entry in DB), use defaults
+                               }
+                               
+                               Gadget::matchPrefsWithDescription( 
$prefsDescription, $userPrefs );
+                               
+                               $gadget->setPrefs( $userPrefs );
                        }
                }
                
@@ -223,8 +231,8 @@
                        if ( $gadget->getPrefs() !== null ) {
                                //TODO: should remove prefs that equal their 
default
 
-                               $prefsJson = FormatJson::encode( 
$gadget->getPrefs() );
-                               $options["gadget-{$gadget->getName()}-config"] 
= $prefsJson;
+                               $prefsSerialized = serialize( 
$gadget->getPrefs() );
+                               $options["gadget-{$gadget->getName()}-config"] 
= $prefsSerialized;
                        }
                }
                


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to