diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 4a09a92b277d9fa887ce3d43aacdc2a99da85cfe..84644cc54069d5623431f0f1e992757d3e94ddc6 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ Feeds 6.x xxxxxxxxxxxxxxxxxxxxxx -------------------------------- +- #887846 ekes: Make FeedsSimplePieEnclosure (un)serialization safe. - #908582 XiaN Vizjereij, alex_b: Fix "Cannot use object of type stdClass as array" error in mappers/taxonomy.inc. - #906654 alex_b: Fix phantom subscriptions. diff --git a/plugins/FeedsSimplePieParser.inc b/plugins/FeedsSimplePieParser.inc index 18aa23c812f6f01ce2a0eae2951b612095fb55d4..d2267f983b95980bbe3128087edd52bb9a8c0f02 100644 --- a/plugins/FeedsSimplePieParser.inc +++ b/plugins/FeedsSimplePieParser.inc @@ -6,6 +6,7 @@ */ class FeedsSimplePieEnclosure extends FeedsEnclosure { protected $simplepie_enclosure; + private $_serialized_simplepie_enclosure; /** * Constructor requires SimplePie enclosure object. @@ -14,6 +15,26 @@ class FeedsSimplePieEnclosure extends FeedsEnclosure { $this->simplepie_enclosure = $enclosure; } + /** + * Serialization helper. + * + * Handle the simplepie enclosure class seperately ourselves. + */ + public function __sleep() { + $this->_serialized_simplepie_enclosure = serialize($this->simplepie_enclosure); + return array('_serialized_simplepie_enclosure'); + } + + /** + * Unserialization helper. + * + * Ensure that the simplepie class definitions are loaded for the enclosure when unserializing. + */ + public function __wakeup() { + feeds_include_library('simplepie.inc', 'simplepie'); + $this->simplepie_enclosure = unserialize($this->_serialized_simplepie_enclosure); + } + /** * Override parent::getValue(). */