From 7b64efbc813baf4c1ce630005855139494953cd8 Mon Sep 17 00:00:00 2001
From: Alex Barth <alex_b@53995.no-reply.drupal.org>
Date: Thu, 16 Sep 2010 18:31:50 +0000
Subject: [PATCH] #887846 ekes: Make FeedsSimplePieEnclosure (un)serialization
 safe.

---
 CHANGELOG.txt                    |  1 +
 plugins/FeedsSimplePieParser.inc | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 4a09a92b..84644cc5 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 18aa23c8..d2267f98 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().
    */
-- 
GitLab