Skip to content

Commit 9e9cc9d

Browse files
committed
Feed: move 'WP_Feed_Cache', 'WP_Feed_Cache_Transient', WP_SimplePie_File and WP_SimplePie_Sanitize_KSES into their own files via svn cp. If we move forard with autoloading, class-feed.php is useless. We could even remove it now, and just load these new files in wp-settings.php. That can be decided post-mortem. class-feed.php is an interesting name: there is no Feed or WP_Feed class.
See #37827. git-svn-id: https://develop.svn.wordpress.org/trunk@38354 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 9c722d9 commit 9e9cc9d

5 files changed

Lines changed: 314 additions & 271 deletions

File tree

src/wp-includes/class-feed.php

Lines changed: 9 additions & 271 deletions
Original file line numberDiff line numberDiff line change
@@ -1,277 +1,15 @@
11
<?php
2-
3-
if ( ! class_exists( 'SimplePie', false ) )
4-
require_once( ABSPATH . WPINC . '/class-simplepie.php' );
5-
6-
/**
7-
* Core class used to implement a feed cache.
8-
*
9-
* @since 2.8.0
10-
*
11-
* @see SimplePie_Cache
12-
*/
13-
class WP_Feed_Cache extends SimplePie_Cache {
14-
15-
/**
16-
* Creates a new SimplePie_Cache object.
17-
*
18-
* @since 2.8.0
19-
* @access public
20-
*
21-
* @param string $location URL location (scheme is used to determine handler).
22-
* @param string $filename Unique identifier for cache object.
23-
* @param string $extension 'spi' or 'spc'.
24-
* @return WP_Feed_Cache_Transient Feed cache handler object that uses transients.
25-
*/
26-
public function create($location, $filename, $extension) {
27-
return new WP_Feed_Cache_Transient($location, $filename, $extension);
28-
}
29-
}
30-
31-
/**
32-
* Core class used to implement feed cache transients.
33-
*
34-
* @since 2.8.0
35-
*/
36-
class WP_Feed_Cache_Transient {
37-
38-
/**
39-
* Holds the transient name.
40-
*
41-
* @since 2.8.0
42-
* @access public
43-
* @var string
44-
*/
45-
public $name;
46-
47-
/**
48-
* Holds the transient mod name.
49-
*
50-
* @since 2.8.0
51-
* @access public
52-
* @var string
53-
*/
54-
public $mod_name;
55-
56-
/**
57-
* Holds the cache duration in seconds.
58-
*
59-
* Defaults to 43200 seconds (12 hours).
60-
*
61-
* @since 2.8.0
62-
* @access public
63-
* @var int
64-
*/
65-
public $lifetime = 43200;
66-
67-
/**
68-
* Constructor.
69-
*
70-
* @since 2.8.0
71-
* @since 3.2.0 Updated to use a PHP5 constructor.
72-
* @access public
73-
*
74-
* @param string $location URL location (scheme is used to determine handler).
75-
* @param string $filename Unique identifier for cache object.
76-
* @param string $extension 'spi' or 'spc'.
77-
*/
78-
public function __construct($location, $filename, $extension) {
79-
$this->name = 'feed_' . $filename;
80-
$this->mod_name = 'feed_mod_' . $filename;
81-
82-
$lifetime = $this->lifetime;
83-
/**
84-
* Filters the transient lifetime of the feed cache.
85-
*
86-
* @since 2.8.0
87-
*
88-
* @param int $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours).
89-
* @param string $filename Unique identifier for the cache object.
90-
*/
91-
$this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $filename);
92-
}
93-
94-
/**
95-
* Sets the transient.
96-
*
97-
* @since 2.8.0
98-
* @access public
99-
*
100-
* @param SimplePie $data Data to save.
101-
* @return true Always true.
102-
*/
103-
public function save($data) {
104-
if ( $data instanceof SimplePie ) {
105-
$data = $data->data;
106-
}
107-
108-
set_transient($this->name, $data, $this->lifetime);
109-
set_transient($this->mod_name, time(), $this->lifetime);
110-
return true;
111-
}
112-
113-
/**
114-
* Gets the transient.
115-
*
116-
* @since 2.8.0
117-
* @access public
118-
*
119-
* @return mixed Transient value.
120-
*/
121-
public function load() {
122-
return get_transient($this->name);
123-
}
124-
125-
/**
126-
* Gets mod transient.
127-
*
128-
* @since 2.8.0
129-
* @access public
130-
*
131-
* @return mixed Transient value.
132-
*/
133-
public function mtime() {
134-
return get_transient($this->mod_name);
135-
}
136-
137-
/**
138-
* Sets mod transient.
139-
*
140-
* @since 2.8.0
141-
* @access public
142-
*
143-
* @return bool False if value was not set and true if value was set.
144-
*/
145-
public function touch() {
146-
return set_transient($this->mod_name, time(), $this->lifetime);
147-
}
148-
149-
/**
150-
* Deletes transients.
151-
*
152-
* @since 2.8.0
153-
* @access public
154-
*
155-
* @return true Always true.
156-
*/
157-
public function unlink() {
158-
delete_transient($this->name);
159-
delete_transient($this->mod_name);
160-
return true;
161-
}
162-
}
163-
1642
/**
165-
* Core class for fetching remote files and reading local files with SimplePie.
166-
*
167-
* @since 2.8.0
3+
* Feed API
1684
*
169-
* @see SimplePie_File
5+
* @package WordPress
6+
* @subpackage Feed
1707
*/
171-
class WP_SimplePie_File extends SimplePie_File {
172-
173-
/**
174-
* Constructor.
175-
*
176-
* @since 2.8.0
177-
* @since 3.2.0 Updated to use a PHP5 constructor.
178-
* @access public
179-
*
180-
* @param string $url Remote file URL.
181-
* @param integer $timeout Optional. How long the connection should stay open in seconds.
182-
* Default 10.
183-
* @param integer $redirects Optional. The number of allowed redirects. Default 5.
184-
* @param string|array $headers Optional. Array or string of headers to send with the request.
185-
* Default null.
186-
* @param string $useragent Optional. User-agent value sent. Default null.
187-
* @param boolean $force_fsockopen Optional. Whether to force opening internet or unix domain socket
188-
* connection or not. Default false.
189-
*/
190-
public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) {
191-
$this->url = $url;
192-
$this->timeout = $timeout;
193-
$this->redirects = $redirects;
194-
$this->headers = $headers;
195-
$this->useragent = $useragent;
196-
197-
$this->method = SIMPLEPIE_FILE_SOURCE_REMOTE;
198-
199-
if ( preg_match('/^http(s)?:\/\//i', $url) ) {
200-
$args = array(
201-
'timeout' => $this->timeout,
202-
'redirection' => $this->redirects,
203-
);
204-
205-
if ( !empty($this->headers) )
206-
$args['headers'] = $this->headers;
207-
208-
if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified
209-
$args['user-agent'] = $this->useragent;
210-
211-
$res = wp_safe_remote_request($url, $args);
212-
213-
if ( is_wp_error($res) ) {
214-
$this->error = 'WP HTTP Error: ' . $res->get_error_message();
215-
$this->success = false;
216-
} else {
217-
$this->headers = wp_remote_retrieve_headers( $res );
218-
$this->body = wp_remote_retrieve_body( $res );
219-
$this->status_code = wp_remote_retrieve_response_code( $res );
220-
}
221-
} else {
222-
$this->error = '';
223-
$this->success = false;
224-
}
225-
}
8+
if ( ! class_exists( 'SimplePie', false ) ) {
9+
require_once( ABSPATH . WPINC . '/class-simplepie.php' );
22610
}
22711

228-
/**
229-
* Core class used to implement SimpliePie feed sanitization.
230-
*
231-
* Extends the SimplePie_Sanitize class to use KSES, because
232-
* we cannot universally count on DOMDocument being available.
233-
*
234-
* @since 3.5.0
235-
*
236-
* @see SimplePie_Sanitize
237-
*/
238-
class WP_SimplePie_Sanitize_KSES extends SimplePie_Sanitize {
239-
240-
/**
241-
* WordPress SimplePie sanitization using KSES.
242-
*
243-
* Sanitizes the incoming data, to ensure that it matches the type of data expected, using KSES.
244-
*
245-
* @since 3.5.0
246-
* @access public
247-
*
248-
* @param mixed $data The data that needs to be sanitized.
249-
* @param integer $type The type of data that it's supposed to be.
250-
* @param string $base Optional. The `xml:base` value to use when converting relative
251-
* URLs to absolute ones. Default empty.
252-
* @return mixed Sanitized data.
253-
*/
254-
public function sanitize( $data, $type, $base = '' ) {
255-
$data = trim( $data );
256-
if ( $type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML ) {
257-
if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) {
258-
$type |= SIMPLEPIE_CONSTRUCT_HTML;
259-
}
260-
else {
261-
$type |= SIMPLEPIE_CONSTRUCT_TEXT;
262-
}
263-
}
264-
if ( $type & SIMPLEPIE_CONSTRUCT_BASE64 ) {
265-
$data = base64_decode( $data );
266-
}
267-
if ( $type & ( SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML ) ) {
268-
$data = wp_kses_post( $data );
269-
if ( $this->output_encoding !== 'UTF-8' ) {
270-
$data = $this->registry->call( 'Misc', 'change_encoding', array( $data, 'UTF-8', $this->output_encoding ) );
271-
}
272-
return $data;
273-
} else {
274-
return parent::sanitize( $data, $type, $base );
275-
}
276-
}
277-
}
12+
require_once( ABSPATH . WPINC . '/class-wp-feed-cache.php' );
13+
require_once( ABSPATH . WPINC . '/class-wp-feed-cache-transient.php' );
14+
require_once( ABSPATH . WPINC . '/class-wp-simplepie-file.php' );
15+
require_once( ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php' );

0 commit comments

Comments
 (0)