Quote:
Originally Posted by reebosak
After some debugging i found that the $vbulletin->wol_spiders is a serialized array, but the plugin code is using it as if it is unserialized. i've made some modifications to your code to unserialize() the data before accessing it and since then it's been running like a charm
|
Actually, the datastore fetch should unserialize it automatically - the problem is a bit more complicated - as follows ;
In vb 3.6 a new column was added to the datastore table, telling vb if the data should be automatically unserialised when loaded = a value of 0 = no, 1 = yes, 2 = detect (it tries to work it out from the contents). The entry for "wol_spiders" should be 1 - and when you install this mod, it will delete the existing entry and rebuild it with the correct value.
Now the problem is that the new 'unserialize' value is taken from the build_datastore() function (as an added third parameter) but they have defaulted it to 0 if it's not supplied. Code written for vb3.5 does not supply a third parameter (as it didn't exist) so what happens is some old code somewhere runs, and rebuilds the wol_spiders entry with an unserialze value of 0 (due to the missing parameter) - and because of this, subsequent datastore fetches do not unserialise the data, and everything breaks. (This happens a lot to the 'maxloggedin' datastore entry as well - which is why a lot of people who have upgraded to 3.6 have problems with their WOL data resetting to 1 and 1970).
I posted/requested a change to fix this
here, but it got zero response.
I hope you understood all that - I think the solution for me will be to add a bit of code to detect if the data was unserialised correctly, and if not, do it myself and rebuild the datastore entry correctly.