WordPress 4.3-scripts
[autoinstalls/wordpress.git] / wp-includes / rss.php
index 6feefdcbda9a0a214ec8da359183e5c909209a20..67bac6bd5582b55d35eceb5c676a8ac81abfa342 100644 (file)
@@ -10,6 +10,7 @@
  *
  * @package External
  * @subpackage MagpieRSS
+ * @deprecated 3.0.0 Use SimplePie instead.
  */
 
 /**
  */
 _deprecated_file( basename( __FILE__ ), '3.0', WPINC . '/class-simplepie.php' );
 
-/*
- * Hook to use another RSS object instead of MagpieRSS
+/**
+ * Fires before MagpieRSS is loaded, to optionally replace it.
+ *
+ * @since 2.3.0
+ * @deprecated 3.0.0
  */
-do_action('load_feed_engine');
+do_action( 'load_feed_engine' );
 
 /** RSS feed constant. */
 define('RSS', 'RSS');
@@ -51,7 +55,10 @@ class MagpieRSS {
 
        var $_CONTENT_CONSTRUCTS = array('content', 'summary', 'info', 'title', 'tagline', 'copyright');
 
-       function MagpieRSS ($source) {
+       /**
+        * PHP5 constructor.
+        */
+       function __construct( $source ) {
 
                # if PHP xml isn't compiled in, die
                #
@@ -63,7 +70,6 @@ class MagpieRSS {
                if ( !is_resource($parser) )
                        trigger_error( "Failed to create an instance of PHP's XML parser. http://www.php.net/manual/en/ref.xml.php");
 
-
                $this->parser = $parser;
 
                # pass in parser, and a reference to this object
@@ -94,6 +100,13 @@ class MagpieRSS {
                $this->normalize();
        }
 
+       /**
+        * PHP4 constructor.
+        */
+       public function MagpieRSS( $source ) {
+               self::__construct( $source );
+       }
+
        function feed_start_element($p, $element, &$attrs) {
                $el = $element = strtolower($element);
                $attrs = array_change_key_case($attrs, CASE_LOWER);
@@ -167,7 +180,6 @@ class MagpieRSS {
 
                        $this->incontent = $el;
 
-
                }
 
                // if inside an Atom content construct (e.g. content or summary) field treat tags as text
@@ -206,8 +218,6 @@ class MagpieRSS {
                }
        }
 
-
-
        function feed_cdata ($p, $text) {
 
                if ($this->feed_type == ATOM and $this->incontent)
@@ -247,7 +257,7 @@ class MagpieRSS {
                }
                elseif ($this->feed_type == ATOM and $this->incontent  ) {
                        // balance tags properly
-                       // note:  i don't think this is actually neccessary
+                       // note: This may not actually be necessary
                        if ( $this->stack[0] == $el )
                        {
                                $this->append_content("</$el>");
@@ -394,7 +404,7 @@ if ( !function_exists('fetch_rss') ) :
 /**
  * Build Magpie object based on RSS from URL.
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  *
@@ -426,7 +436,7 @@ function fetch_rss ($url) {
        else {
                // Flow
                // 1. check cache
-               // 2. if there is a hit, make sure its fresh
+               // 2. if there is a hit, make sure it's fresh
                // 3. if cached obj fails freshness check, fetch remote
                // 4. if remote fails, return stale object, or error
 
@@ -436,7 +446,6 @@ function fetch_rss ($url) {
                        debug($cache->ERROR, E_USER_WARNING);
                }
 
-
                $cache_status    = 0;           // response of check_cache
                $request_headers = array(); // HTTP headers to send with fetch
                $rss                     = 0;           // parsed RSS object
@@ -532,7 +541,7 @@ endif;
 /**
  * Retrieve URL headers and content using WP HTTP Request API.
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  *
@@ -541,7 +550,7 @@ endif;
  * @return Snoopy style response
  */
 function _fetch_remote_file($url, $headers = "" ) {
-       $resp = wp_remote_request($url, array('headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT));
+       $resp = wp_safe_remote_request( $url, array( 'headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT ) );
        if ( is_wp_error($resp) ) {
                $error = array_shift($resp->errors);
 
@@ -555,7 +564,7 @@ function _fetch_remote_file($url, $headers = "" ) {
        // Snoopy returns headers unprocessed.
        // Also note, WP_HTTP lowercases all keys, Snoopy did not.
        $return_headers = array();
-       foreach ( $resp['headers'] as $key => $value ) {
+       foreach ( wp_remote_retrieve_headers( $resp ) as $key => $value ) {
                if ( !is_array($value) ) {
                        $return_headers[] = "$key: $value";
                } else {
@@ -565,10 +574,10 @@ function _fetch_remote_file($url, $headers = "" ) {
        }
 
        $response = new stdClass;
-       $response->status = $resp['response']['code'];
-       $response->response_code = $resp['response']['code'];
+       $response->status = wp_remote_retrieve_response_code( $resp );
+       $response->response_code = wp_remote_retrieve_response_code( $resp );
        $response->headers = $return_headers;
-       $response->results = $resp['body'];
+       $response->results = wp_remote_retrieve_body( $resp );
 
        return $response;
 }
@@ -576,12 +585,12 @@ function _fetch_remote_file($url, $headers = "" ) {
 /**
  * Retrieve
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  *
- * @param unknown_type $resp
- * @return unknown
+ * @param array $resp
+ * @return MagpieRSS|bool
  */
 function _response_to_rss ($resp) {
        $rss = new MagpieRSS( $resp->results );
@@ -626,7 +635,7 @@ function _response_to_rss ($resp) {
 /**
  * Set up constants with default values, unless user overrides.
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  */
@@ -710,7 +719,10 @@ class RSSCache {
        var $MAX_AGE    = 43200;                // when are files stale, default twelve hours
        var $ERROR              = '';                   // accumulate error messages
 
-       function RSSCache ($base='', $age='') {
+       /**
+        * PHP5 constructor.
+        */
+       function __construct( $base = '', $age = '' ) {
                $this->BASE_CACHE = WP_CONTENT_DIR . '/cache';
                if ( $base ) {
                        $this->BASE_CACHE = $base;
@@ -721,11 +733,18 @@ class RSSCache {
 
        }
 
+       /**
+        * PHP4 constructor.
+        */
+       public function RSSCache( $base = '', $age = '' ) {
+               self::__construct( $base, $age );
+       }
+
 /*=======================================================================*\
        Function:       set
        Purpose:        add an item to the cache, keyed on url
        Input:          url from wich the rss file was fetched
-       Output:         true on sucess
+       Output:         true on success
 \*=======================================================================*/
        function set ($url, $rss) {
                $cache_option = 'rss_' . $this->file_name( $url );
@@ -871,7 +890,7 @@ if ( !function_exists('wp_rss') ) :
 /**
  * Display all RSS items in a HTML ordered list.
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  *
@@ -891,7 +910,7 @@ function wp_rss( $url, $num_items = -1 ) {
                                '<li><a href="%1$s" title="%2$s">%3$s</a></li>',
                                esc_url( $item['link'] ),
                                esc_attr( strip_tags( $item['description'] ) ),
-                               htmlentities( $item['title'] )
+                               esc_html( $item['title'] )
                        );
                }
 
@@ -911,7 +930,7 @@ if ( !function_exists('get_rss') ) :
  * to display. You can't display all of them like you can with wp_rss()
  * function.
  *
- * @since unknown
+ * @since 1.5.0
  * @package External
  * @subpackage MagpieRSS
  *
@@ -926,7 +945,7 @@ function get_rss ($url, $num_items = 5) { // Like get posts, but for RSS
                foreach ( (array) $rss->items as $item ) {
                        echo "<li>\n";
                        echo "<a href='$item[link]' title='$item[description]'>";
-                       echo htmlentities($item['title']);
+                       echo esc_html($item['title']);
                        echo "</a><br />\n";
                        echo "</li>\n";
                }
@@ -935,5 +954,3 @@ function get_rss ($url, $num_items = 5) { // Like get posts, but for RSS
        }
 }
 endif;
-
-?>