[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/SimplePie/src/Cache/ -> DB.php (source)

   1  <?php
   2  
   3  // SPDX-FileCopyrightText: 2004-2023 Ryan Parman, Sam Sneddon, Ryan McCue
   4  // SPDX-License-Identifier: BSD-3-Clause
   5  
   6  declare(strict_types=1);
   7  
   8  namespace SimplePie\Cache;
   9  
  10  use SimplePie\Item;
  11  
  12  /**
  13   * Base class for database-based caches
  14   *
  15   * @deprecated since SimplePie 1.8.0, use implementation of "Psr\SimpleCache\CacheInterface" instead
  16   */
  17  abstract class DB implements Base
  18  {
  19      /**
  20       * Helper for database conversion
  21       *
  22       * Converts a given {@see SimplePie} object into data to be stored
  23       *
  24       * @param \SimplePie\SimplePie $data
  25       * @return array{string, array<string, Item>} First item is the serialized data for storage, second item is the unique ID for this item
  26       */
  27      protected static function prepare_simplepie_object_for_cache(\SimplePie\SimplePie $data)
  28      {
  29          $items = $data->get_items();
  30          $items_by_id = [];
  31  
  32          if (!empty($items)) {
  33              foreach ($items as $item) {
  34                  $items_by_id[$item->get_id()] = $item;
  35              }
  36  
  37              if (count($items_by_id) !== count($items)) {
  38                  $items_by_id = [];
  39                  foreach ($items as $item) {
  40                      $items_by_id[$item->get_id(true)] = $item;
  41                  }
  42              }
  43  
  44              if (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) {
  45                  $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0];
  46              } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) {
  47                  $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0];
  48              } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) {
  49                  $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0];
  50              } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0])) {
  51                  $channel = &$data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0];
  52              } else {
  53                  $channel = null;
  54              }
  55  
  56              if ($channel !== null) {
  57                  if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry'])) {
  58                      unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry']);
  59                  }
  60                  if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry'])) {
  61                      unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry']);
  62                  }
  63                  if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item'])) {
  64                      unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item']);
  65                  }
  66                  if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item'])) {
  67                      unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item']);
  68                  }
  69                  if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item'])) {
  70                      unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item']);
  71                  }
  72              }
  73              if (isset($data->data['items'])) {
  74                  unset($data->data['items']);
  75              }
  76              if (isset($data->data['ordered_items'])) {
  77                  unset($data->data['ordered_items']);
  78              }
  79          }
  80          return [serialize($data->data), $items_by_id];
  81      }
  82  }
  83  
  84  class_alias('SimplePie\Cache\DB', 'SimplePie_Cache_DB');


Generated : Wed Sep 17 08:20:04 2025 Cross-referenced by PHPXref