As the sun rises and the forest mist clears, and the clouds return and the caves darken, these changes of light and shadow are the morning and evening in the mountains. Wildflowers bloom with their subtle fragrance, fine trees flourish with their dense shade, the wind and frost are pure and clean, and the water recedes to reveal the rocks—these are the four seasons in the mountains. Going out in the morning and returning in the evening, the scenery of the four seasons is different, and the joy is endless.至于负者歌于途,行者休于树,前者呼,后者应,伛偻提携,往来而不绝者,滁人游也。临溪而渔,溪深而鱼肥,酿泉为酒,泉香而酒洌,山肴野蔌,杂然而前陈者,太守宴也。宴酣之乐,非丝非竹,射者中,弈者胜,觥筹交错,起坐而喧哗者,众宾欢也。苍颜白发,颓然乎其间者,太守醉也。 HEX
HEX
Server: Apache
System: Linux webd003.cluster106.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: labeautef (51223)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/labeautef/forcess-securit.fr/wp-content/plugins/jetpack-library/modules/shortcodes.php
<?php
/**
 * Module Name: Shortcode Embeds
 * Module Description: Easily embed rich media like YouTube videos and tweets using simple shortcodes.
 * Sort Order: 3
 * First Introduced: 1.1
 * Major Changes In: 1.2
 * Requires Connection: No
 * Auto Activate: No
 * Module Tags: Photos and Videos, Social, Writing, Appearance
 * Feature: Writing
 * Additional Search Queries: shortcodes, shortcode, embeds, media, bandcamp, dailymotion, facebook, flickr, google calendars, google maps, polldaddy, recipe, recipes, scribd, slideshare, slideshow, slideshows, soundcloud, ted, twitter, vimeo, vine, youtube
 *
 * @package automattic/jetpack
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit( 0 );
}

// Load shortcode utils.
require_once __DIR__ . '/shortcodes/shortcode-utils.php';

/**
 * Transforms the $atts array into a string that the old functions expected
 *
 * The old way was:
 * [shortcode a=1&b=2&c=3] or [shortcode=1]
 * This is parsed as array( a => '1&b=2&c=3' ) and array( 0 => '=1' ), which is useless
 *
 * @param array $params             Array of old shortcode parameters.
 * @param bool  $old_format_support true if [shortcode=foo] format is possible.
 *
 * @return string $params
 */
function shortcode_new_to_old_params( $params, $old_format_support = false ) {
	$str = '';

	if ( $old_format_support && isset( $params[0] ) ) {
		$str = ltrim( $params[0], '=' );
	} elseif ( is_array( $params ) ) {
		foreach ( array_keys( $params ) as $key ) {
			if ( ! is_numeric( $key ) ) {
				$str = $key . '=' . $params[ $key ];
			}
		}
	}

	return str_replace( array( '&amp;', '&#038;' ), '&', $str );
}

/**
 * Load all available Jetpack shortcode files.
 */
function jetpack_load_shortcodes() {
	// Prevent third-party shortcode plugins when loading shortcode files.
	// Format: shortcode => condition_when_to_skip
	$shortcode_skips = array(
		'shortcode-utils' => true, // Utils aren't shortcodes.
		'soundcloud'      => function_exists( 'soundcloud_shortcode' ), // SoundCloud Shortcodes plugin
	);

	$shortcode_includes = array();

	foreach ( Jetpack::glob_php( __DIR__ . '/shortcodes' ) as $file ) {
		$filename = substr( basename( $file ), 0, -4 );

		if ( empty( $shortcode_skips[ $filename ] ) ) {
			$shortcode_includes[ $filename ] = $file;
		}
	}

	/**
	 * This filter allows other plugins to override which shortcodes Jetpack loads.
	 *
	 * Fires as part of the `after_setup_theme` WP hook, so modifying code needs to be in a plugin, not in a theme's functions.php.
	 *
	 * @module shortcodes
	 *
	 * @since 2.2.1
	 * @since 4.2.0 Added filename without extension as array key.
	 *
	 * @param array $shortcode_includes An array of which shortcodes to include.
	 */
	$shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes );

	foreach ( $shortcode_includes as $include ) {
		include_once $include;
	}
}

/**
 * Runs preg_replace so that replacements don't happen within open tags.
 * Parameters are the same as preg_replace, with an added optional search param for improved performance
 *
 * @param string $pattern     Pattern to search for.
 * @param string $replacement String to replace.
 * @param string $content     Post content.
 * @param string $search      String to search for.
 *
 * @return string $content    Replaced post content.
 */
function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) {
	if ( $search && ! str_contains( $content, $search ) ) {
		return $content;
	}

	$textarr = wp_html_split( $content );
	unset( $content );
	foreach ( $textarr as &$element ) {
		if ( '' === $element || '<' === $element[0] ) {
			continue;
		}
		$element = preg_replace( $pattern, $replacement, $element );
	}

	return implode( $textarr );
}

/**
 * Runs preg_replace_callback so that replacements don't happen within open tags.
 * Parameters are the same as preg_replace, with an added optional search param for improved performance.
 *
 * @param string $pattern  Pattern to search for.
 * @param string $callback Callback returning the replacement string.
 * @param string $content  Post content.
 * @param string $search   String to search for.
 *
 * @return string $content Replaced post content.
 */
function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) {
	if ( $search && ! str_contains( $content, $search ) ) {
		return $content;
	}

	$textarr = wp_html_split( $content );
	unset( $content );
	foreach ( $textarr as &$element ) {
		if ( '' === $element || '<' === $element[0] ) {
			continue;
		}
		$element = preg_replace_callback( $pattern, $callback, $element );
	}

	return implode( $textarr );
}

if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) {
	/**
	 * Get VideoPress ID from wpvideo shortcode attributes.
	 *
	 * @param array $atts Shortcode attributes.
	 *
	 * @return string|int $id VideoPress ID.
	 */
	function jetpack_shortcode_get_wpvideo_id( $atts ) {
		if ( isset( $atts[0] ) ) {
			return $atts[0];
		} else {
			return 0;
		}
	}
}

if ( ! function_exists( 'jetpack_shortcode_get_videopress_id' ) ) {
	/**
	 * Get VideoPress ID from videopress shortcode attributes.
	 *
	 * @param array $atts Shortcode attributes.
	 * @return int  $id   VideoPress ID.
	 */
	function jetpack_shortcode_get_videopress_id( $atts ) {
		if ( isset( $atts[0] ) ) {
			return $atts[0];
		} else {
			return 0;
		}
	}
}

/**
 * Common element attributes parsing and sanitizing for src, width and height.
 *
 * @since 4.5.0
 *
 * @param array $attrs  With original values.
 *
 * @return array $attrs With sanitized values.
 */
function wpcom_shortcodereverse_parseattr( $attrs ) {
	$defaults = array(
		'src'    => false,
		'width'  => false,
		'height' => false,
	);

	$attrs = shortcode_atts( $defaults, $attrs );

	$attrs['src']    = wp_strip_all_tags( $attrs['src'] ); // For sanity.
	$attrs['width']  = ( is_numeric( $attrs['width'] ) ) ? abs( (int) $attrs['width'] ) : $defaults['width'];
	$attrs['height'] = ( is_numeric( $attrs['height'] ) ) ? abs( (int) $attrs['height'] ) : $defaults['height'];

	return $attrs;
}

/**
 * When an embed service goes away, we can use this handler
 * to output a link for history's sake.
 *
 * @param array  $matches Regex partial matches against the URL passed.
 * @param array  $attr    Attributes received in embed response.
 * @param string $url     Requested URL to be embedded.
 * @return string Link to output.
 */
function jetpack_deprecated_embed_handler( $matches, $attr, $url ) {
	return sprintf( '<a href="%s">%s</a>', esc_url( $url ), esc_html( esc_url( $url ) ) );
}

jetpack_load_shortcodes();