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