Current Path: > home > codekrsu > > ameliagraphics.com > wp-content > plugins > > jetpack > modules > > shortcodes
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
css | Directory | - | - | |
images | Directory | - | - | |
img | Directory | - | - | |
js | Directory | - | - | |
archiveorg-book.php | File | 3394 bytes | June 29 2021 21:18:02. | |
archiveorg.php | File | 4015 bytes | June 29 2021 21:18:02. | |
archives.php | File | 2437 bytes | February 23 2021 21:08:42. | |
bandcamp.php | File | 7935 bytes | May 22 2023 19:04:58. | |
brightcove.php | File | 8980 bytes | October 27 2020 21:15:38. | |
cartodb.php | File | 803 bytes | February 23 2021 21:08:42. | |
class.filter-embedded-html-objects.php | File | 13324 bytes | November 25 2023 02:41:46. | |
codepen.php | File | 265 bytes | February 23 2021 21:08:42. | |
crowdsignal.php | File | 22379 bytes | June 02 2025 21:34:10. | |
dailymotion.php | File | 15634 bytes | December 06 2022 21:08:36. | |
descript.php | File | 3067 bytes | January 25 2022 23:38:06. | |
facebook.php | File | 7203 bytes | April 28 2025 19:38:34. | |
flatio.php | File | 383 bytes | February 23 2021 21:08:42. | |
flickr.php | File | 9601 bytes | June 24 2025 00:56:26. | |
getty.php | File | 7720 bytes | November 21 2023 01:33:54. | |
gist.php | File | 8630 bytes | June 03 2025 23:22:42. | |
googleapps.php | File | 10079 bytes | November 25 2023 02:41:46. | |
googlemaps.php | File | 8160 bytes | November 25 2023 02:41:46. | |
googleplus.php | File | 1054 bytes | February 23 2021 21:08:42. | |
gravatar.php | File | 6280 bytes | November 14 2023 22:55:08. | |
houzz.php | File | 920 bytes | February 23 2021 21:08:42. | |
inline-pdfs.php | File | 1168 bytes | January 11 2022 22:52:08. | |
instagram.php | File | 14854 bytes | December 23 2024 20:47:38. | |
kickstarter.php | File | 2448 bytes | December 06 2022 21:08:36. | |
mailchimp.php | File | 7194 bytes | January 17 2023 01:35:44. | |
medium.php | File | 3300 bytes | January 17 2023 01:35:44. | |
mixcloud.php | File | 3703 bytes | November 25 2023 02:41:46. | |
others.php | File | 2115 bytes | January 06 2025 22:47:52. | |
pinterest.php | File | 1834 bytes | November 21 2023 01:33:54. | |
presentations.php | File | 14881 bytes | September 20 2023 01:19:10. | |
quiz.php | File | 9378 bytes | March 29 2022 23:04:42. | |
recipe.php | File | 19461 bytes | June 16 2025 23:21:40. | |
scribd.php | File | 2504 bytes | February 23 2021 21:08:42. | |
sitemap.php | File | 562 bytes | February 23 2021 21:08:42. | |
slideshare.php | File | 3903 bytes | February 23 2021 21:08:42. | |
slideshow.php | File | 9493 bytes | October 07 2024 23:44:04. | |
smartframe.php | File | 3728 bytes | May 15 2023 20:47:16. | |
soundcloud.php | File | 8884 bytes | May 22 2023 19:04:58. | |
spotify.php | File | 3336 bytes | January 15 2024 23:54:22. | |
ted.php | File | 3429 bytes | February 23 2021 21:08:42. | |
tweet.php | File | 5148 bytes | September 20 2023 01:19:10. | |
twitchtv.php | File | 2688 bytes | February 23 2021 21:08:42. | |
twitter-timeline.php | File | 1979 bytes | February 23 2021 21:08:42. | |
twitter.php | File | 2615 bytes | March 31 2025 22:37:54. | |
unavailable.php | File | 3315 bytes | January 17 2023 01:35:44. | |
untappd-menu.php | File | 2464 bytes | January 17 2023 01:35:44. | |
upcoming-events.php | File | 1724 bytes | November 04 2024 17:29:56. | |
ustream.php | File | 3206 bytes | February 23 2021 21:08:42. | |
videopress.php | File | 423 bytes | August 17 2022 14:12:24. | |
vimeo.php | File | 11785 bytes | September 02 2024 18:34:18. | |
vine.php | File | 2674 bytes | February 23 2021 21:08:42. | |
vr.php | File | 5035 bytes | April 16 2024 00:40:26. | |
wufoo.php | File | 3463 bytes | October 11 2022 18:22:12. | |
youtube.php | File | 24018 bytes | May 05 2025 21:43:40. |
<?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName use Automattic\Jetpack\Assets; /** * Embed recipe 'cards' in post, with basic styling and print functionality * * To Do * - defaults settings * - basic styles/themecolor styles * - validation/sanitization * - print styles * * @package automattic/jetpack */ /** * Register and display Recipes in posts. */ class Jetpack_Recipes { /** * Have scripts and styles been enqueued already. * * @var bool */ private $scripts_and_style_included = false; /** * Constructor */ public function __construct() { add_action( 'init', array( $this, 'action_init' ) ); } /** * Returns KSES tags with Schema-specific attributes. * * @since 8.0.0 * * @return array Array to be used by KSES. */ private static function kses_tags() { $allowedtags = wp_kses_allowed_html( 'post' ); // Create an array of all the tags we'd like to add the itemprop attribute to. $tags = array( 'li', 'ol', 'ul', 'img', 'p', 'h3', 'time', 'span' ); foreach ( $tags as $tag ) { if ( ! isset( $allowedtags[ $tag ] ) ) { $allowedtags[ $tag ] = array(); } $allowedtags[ $tag ]['class'] = array(); $allowedtags[ $tag ]['itemprop'] = array(); $allowedtags[ $tag ]['datetime'] = array(); } // Allow the handler <a on=""> in AMP. $allowedtags['a']['on'] = array(); // Allow itemscope and itemtype for divs. if ( ! isset( $allowedtags['div'] ) ) { $allowedtags['div'] = array(); } $allowedtags['div']['class'] = array(); $allowedtags['div']['itemscope'] = array(); $allowedtags['div']['itemtype'] = array(); return $allowedtags; } /** * Register our shortcode and enqueue necessary files. */ public function action_init() { // Enqueue styles if [recipe] exists. add_action( 'wp_head', array( $this, 'add_scripts' ), 1 ); // Render [recipe], along with other shortcodes that can be nested within. add_shortcode( 'recipe', array( $this, 'recipe_shortcode' ) ); add_shortcode( 'recipe-notes', array( $this, 'recipe_notes_shortcode' ) ); add_shortcode( 'recipe-ingredients', array( $this, 'recipe_ingredients_shortcode' ) ); add_shortcode( 'recipe-directions', array( $this, 'recipe_directions_shortcode' ) ); add_shortcode( 'recipe-nutrition', array( $this, 'recipe_nutrition_shortcode' ) ); add_shortcode( 'recipe-image', array( $this, 'recipe_image_shortcode' ) ); } /** * Enqueue scripts and styles */ public function add_scripts() { if ( empty( $GLOBALS['posts'] ) || ! is_array( $GLOBALS['posts'] ) ) { return; } foreach ( $GLOBALS['posts'] as $p ) { if ( isset( $p->post_content ) && has_shortcode( $p->post_content, 'recipe' ) ) { $this->scripts_and_style_included = true; break; } } if ( ! $this->scripts_and_style_included ) { return; } wp_enqueue_style( 'jetpack-recipes-style', plugins_url( '/css/recipes.css', __FILE__ ), array(), '20130919' ); wp_style_add_data( 'jetpack-recipes-style', 'rtl', 'replace' ); // add $themecolors-defined styles. wp_add_inline_style( 'jetpack-recipes-style', self::themecolor_styles() ); if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) { return; } wp_enqueue_script( 'jetpack-recipes-printthis', Assets::get_file_url_for_environment( '_inc/build/shortcodes/js/recipes-printthis.min.js', 'modules/shortcodes/js/recipes-printthis.js' ), array( 'jquery' ), '20170202', false ); wp_enqueue_script( 'jetpack-recipes-js', Assets::get_file_url_for_environment( '_inc/build/shortcodes/js/recipes.min.js', 'modules/shortcodes/js/recipes.js' ), array( 'jquery', 'jetpack-recipes-printthis' ), '20131230', false ); $title_var = wp_title( '|', false, 'right' ); $rtl = is_rtl() ? '-rtl' : ''; $print_css_var = plugins_url( "/css/recipes-print{$rtl}.css", __FILE__ ); wp_localize_script( 'jetpack-recipes-js', 'jetpack_recipes_vars', array( 'pageTitle' => $title_var, 'loadCSS' => $print_css_var, ) ); } /** * Our [recipe] shortcode. * Prints recipe data styled to look good on *any* theme. * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML for recipe shortcode. */ public static function recipe_shortcode( $atts, $content = '' ) { $atts = shortcode_atts( array( 'title' => '', // string. 'servings' => '', // intval. 'time' => '', // strtotime-compatible time description. 'difficulty' => '', // string. 'print' => '', // URL for external print version. 'source' => '', // string. 'sourceurl' => '', // URL string. Only used if source set. 'image' => '', // URL or attachment ID. 'description' => '', // string. 'cooktime' => '', // strtotime-compatible time description. 'preptime' => '', // strtotime-compatible time description. 'rating' => '', // string. ), $atts, 'recipe' ); return self::recipe_shortcode_html( $atts, $content ); } /** * The recipe output * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML output */ private static function recipe_shortcode_html( $atts, $content = '' ) { $html = '<div class="hrecipe h-recipe jetpack-recipe" itemscope itemtype="https://schema.org/Recipe">'; // Print the recipe title if exists. if ( '' !== $atts['title'] ) { $html .= '<h3 class="p-name jetpack-recipe-title fn" itemprop="name">' . esc_html( $atts['title'] ) . '</h3>'; } // Print the recipe meta if exists. if ( '' !== $atts['servings'] || '' !== $atts['time'] || '' !== $atts['difficulty'] || '' !== $atts['print'] || '' !== $atts['preptime'] || '' !== $atts['cooktime'] || '' !== $atts['rating'] ) { $html .= '<ul class="jetpack-recipe-meta">'; if ( '' !== $atts['servings'] ) { $html .= sprintf( '<li class="jetpack-recipe-servings p-yield yield" itemprop="recipeYield"><strong>%1$s: </strong>%2$s</li>', esc_html_x( 'Servings', 'recipe', 'jetpack' ), esc_html( $atts['servings'] ) ); } $time_types = array( 'preptime', 'cooktime', 'time' ); foreach ( $time_types as $time_type ) { if ( '' === $atts[ $time_type ] ) { continue; } $html .= self::output_time( $atts[ $time_type ], $time_type ); } if ( '' !== $atts['difficulty'] ) { $html .= sprintf( '<li class="jetpack-recipe-difficulty"><strong>%1$s: </strong>%2$s</li>', esc_html_x( 'Difficulty', 'recipe', 'jetpack' ), esc_html( $atts['difficulty'] ) ); } if ( '' !== $atts['rating'] ) { $html .= sprintf( '<li class="jetpack-recipe-rating"> <strong>%1$s: </strong> <span itemprop="contentRating">%2$s</span> </li>', esc_html_x( 'Rating', 'recipe', 'jetpack' ), esc_html( $atts['rating'] ) ); } if ( '' !== $atts['source'] ) { $html .= sprintf( '<li class="jetpack-recipe-source"><strong>%1$s: </strong>', esc_html_x( 'Source', 'recipe', 'jetpack' ) ); if ( '' !== $atts['sourceurl'] ) : // Show the link if we have one. $html .= sprintf( '<a href="%2$s">%1$s</a>', esc_html( $atts['source'] ), esc_url( $atts['sourceurl'] ) ); else : // Skip the link. $html .= sprintf( '%1$s', esc_html( $atts['source'] ) ); endif; $html .= '</li>'; } if ( 'false' !== $atts['print'] ) { $is_amp = class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request(); $print_action = $is_amp ? 'on="tap:AMP.print"' : ''; $print_text = $is_amp ? esc_html__( 'Print page', 'jetpack' ) : esc_html_x( 'Print', 'recipe', 'jetpack' ); $html .= sprintf( '<li class="jetpack-recipe-print"><a href="#" %1$s>%2$s</a></li>', $print_action, $print_text ); } $html .= '</ul>'; } // Output the image if we have one and it's not shown elsewhere. if ( '' !== $atts['image'] ) { if ( ! has_shortcode( $content, 'recipe-image' ) ) { $html .= self::output_image_html( $atts['image'] ); } } // Output the description, if we have one. if ( '' !== $atts['description'] ) { $html .= sprintf( '<p class="jetpack-recipe-description" itemprop="description">%1$s</p>', esc_html( $atts['description'] ) ); } // Print content between codes. $html .= '<div class="jetpack-recipe-content">' . do_shortcode( $content ) . '</div>'; // Close it up. $html .= '</div>'; // If there is a recipe within a recipe, remove the shortcode. if ( has_shortcode( $html, 'recipe' ) ) { remove_shortcode( 'recipe' ); } // Sanitize html. $html = wp_kses( $html, self::kses_tags() ); // Return the HTML block. return $html; } /** * Our [recipe-image] shortcode. * Controls placement of image in recipe. * * @param array $atts Array of shortcode attributes. * * @return string HTML for recipe notes shortcode. */ public static function recipe_image_shortcode( $atts ) { $atts = shortcode_atts( array( 'image' => '', // string. 0 => '', // string. ), $atts, 'recipe-image' ); $src = $atts['image']; if ( ! empty( $atts[0] ) ) { $src = $atts[0]; } return self::output_image_html( $src ); } /** * Our [recipe-notes] shortcode. * Outputs ingredients, styled in a div. * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML for recipe notes shortcode. */ public static function recipe_notes_shortcode( $atts, $content = '' ) { $atts = shortcode_atts( array( 'title' => '', // string. ), $atts, 'recipe-notes' ); $html = ''; // Print a title if one exists. if ( '' !== $atts['title'] ) { $html .= '<h4 class="jetpack-recipe-notes-title">' . esc_html( $atts['title'] ) . '</h4>'; } $html .= '<div class="jetpack-recipe-notes">'; // Format content using list functionality, if desired. $html .= self::output_list_content( $content, 'notes' ); $html .= '</div>'; // Sanitize html. $html = wp_kses( $html, self::kses_tags() ); // Return the HTML block. return $html; } /** * Our [recipe-ingredients] shortcode. * Outputs notes, styled in a div. * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML for recipe ingredients shortcode. */ public static function recipe_ingredients_shortcode( $atts, $content = '' ) { $atts = shortcode_atts( array( 'title' => esc_html_x( 'Ingredients', 'recipe', 'jetpack' ), // string. ), $atts, 'recipe-ingredients' ); $html = '<div class="jetpack-recipe-ingredients">'; // Print a title unless the user has opted to exclude it. if ( 'false' !== $atts['title'] ) { $html .= '<h4 class="jetpack-recipe-ingredients-title">' . esc_html( $atts['title'] ) . '</h4>'; } // Format content using list functionality. $html .= self::output_list_content( $content, 'ingredients' ); $html .= '</div>'; // Sanitize html. $html = wp_kses( $html, self::kses_tags() ); // Return the HTML block. return $html; } /** * Our [recipe-nutrition] shortcode. * Outputs notes, styled in a div. * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML for recipe nutrition shortcode. */ public static function recipe_nutrition_shortcode( $atts, $content = '' ) { $atts = shortcode_atts( array( 'title' => esc_html_x( 'Nutrition', 'recipe', 'jetpack' ), // string. ), $atts, 'recipe-nutrition' ); $html = '<div class="jetpack-recipe-nutrition p-nutrition nutrition">'; // Print a title unless the user has opted to exclude it. if ( 'false' !== $atts['title'] ) { $html .= '<h4 class="jetpack-recipe-nutrition-title">' . esc_html( $atts['title'] ) . '</h4>'; } // Format content using list functionality. $html .= self::output_list_content( $content, 'nutrition' ); $html .= '</div>'; // Sanitize html. $html = wp_kses( $html, self::kses_tags() ); // Return the HTML block. return $html; } /** * Reusable function to check for shortened formatting. * Basically, users can create lists with the following shorthand: * - item one * - item two * - item three * And we'll magically convert it to a list. This has the added benefit * of including itemprops for the recipe schema. * * @param string $content HTML content. * @param string $type Type of list. * * @return string content formatted as a list item */ private static function output_list_content( $content, $type ) { $html = ''; switch ( $type ) { case 'directions': $list_item_replacement = '<li class="jetpack-recipe-directions">${1}</li>'; $itemprop = ' itemprop="recipeInstructions"'; $listtype = 'ol'; break; case 'ingredients': $list_item_replacement = '<li class="jetpack-recipe-ingredient p-ingredient ingredient" itemprop="recipeIngredient">${1}</li>'; $itemprop = ''; $listtype = 'ul'; break; case 'nutrition': $list_item_replacement = '<li class="jetpack-recipe-nutrition">${1}</li>'; $itemprop = ' itemprop="nutrition"'; $listtype = 'ul'; break; case 'nutrition': $list_item_replacement = '<li class="jetpack-recipe-nutrition nutrition">${1}</li>'; $itemprop = ' itemprop="nutrition"'; $listtype = 'ul'; break; default: $list_item_replacement = '<li class="jetpack-recipe-notes">${1}</li>'; $itemprop = ''; $listtype = 'ul'; } // Check to see if the user is trying to use shortened formatting. if ( str_contains( $content, '–' ) || str_contains( $content, '—' ) || str_contains( $content, '-' ) || str_contains( $content, '*' ) || str_contains( $content, '#' ) || str_contains( $content, '–' ) || // ndash. str_contains( $content, '—' ) || // mdash. preg_match( '/\d+\.\s/', $content ) ) { // Remove breaks and extra whitespace. $content = str_replace( "<br />\n", "\n", $content ); $content = trim( $content ); $ul_pattern = '/(?:^|\n|\<p\>)+(?:[\-–—]+|\–|\—|\*)+\h+(.*)/mi'; $ol_pattern = '/(?:^|\n|\<p\>)+(?:\d+\.|#+)+\h+(.*)/mi'; preg_match_all( $ul_pattern, $content, $ul_matches ); preg_match_all( $ol_pattern, $content, $ol_matches ); if ( ( is_countable( $ul_matches[0] ) && count( $ul_matches[0] ) > 0 ) || ( is_countable( $ol_matches[0] ) && count( $ol_matches[0] ) > 0 ) ) { if ( is_countable( $ol_matches[0] ) && count( $ol_matches[0] ) > 0 ) { $listtype = 'ol'; $list_item_pattern = $ol_pattern; } else { $listtype = 'ul'; $list_item_pattern = $ul_pattern; } $html .= '<' . $listtype . $itemprop . '>'; $html .= preg_replace( $list_item_pattern, $list_item_replacement, $content ); $html .= '</' . $listtype . '>'; // Strip out any empty <p> tags and stray </p> tags, because those are just silly. $empty_p_pattern = '/(<p>)*\s*<\/p>/mi'; $html = preg_replace( $empty_p_pattern, '', $html ); } else { $html .= do_shortcode( $content ); } } else { $html .= do_shortcode( $content ); } // Return our formatted content. return $html; } /** * Our [recipe-directions] shortcode. * Outputs directions, styled in a div. * * @param array $atts Array of shortcode attributes. * @param string $content Post content. * * @return string HTML for recipe directions shortcode. */ public static function recipe_directions_shortcode( $atts, $content = '' ) { $atts = shortcode_atts( array( 'title' => esc_html_x( 'Directions', 'recipe', 'jetpack' ), // string. ), $atts, 'recipe-directions' ); $html = '<div class="jetpack-recipe-directions e-instructions">'; // Print a title unless the user has specified to exclude it. if ( 'false' !== $atts['title'] ) { $html .= '<h4 class="jetpack-recipe-directions-title">' . esc_html( $atts['title'] ) . '</h4>'; } // Format content using list functionality. $html .= self::output_list_content( $content, 'directions' ); $html .= '</div>'; // Sanitize html. $html = wp_kses( $html, self::kses_tags() ); // Return the HTML block. return $html; } /** * Outputs time meta tag. * * @param string $time_str Raw time to output. * @param string $time_type Type of time to show. * * @return string HTML for recipe time meta. */ private static function output_time( $time_str, $time_type ) { // Get a time that's supported by Schema.org. $duration = WPCOM_JSON_API_Date::format_duration( $time_str ); // If no duration can be calculated, let's output what the user provided. if ( ! $duration ) { $duration = $time_str; } switch ( $time_type ) { case 'cooktime': $title = _x( 'Cook Time', 'recipe', 'jetpack' ); $itemprop = 'cookTime'; break; case 'preptime': $title = _x( 'Prep Time', 'recipe', 'jetpack' ); $itemprop = 'prepTime'; break; default: $title = _x( 'Time', 'recipe', 'jetpack' ); $itemprop = 'totalTime'; break; } return sprintf( '<li class="jetpack-recipe-%3$s"> <time itemprop="%4$s" datetime="%5$s"><strong>%1$s:</strong> <span class="%3$s">%2$s</span></time> </li>', esc_html( $title ), esc_html( $time_str ), esc_attr( $time_type ), esc_attr( $itemprop ), esc_attr( $duration ) ); } /** * Outputs image tag for recipe. * * @param string $src The image source. * * @return string */ private static function output_image_html( $src ) { // Exit if there is no provided source. if ( ! $src ) { return ''; } $image_attrs = array( 'class' => 'jetpack-recipe-image u-photo photo', 'itemprop' => 'image', ); if ( wp_lazy_loading_enabled( 'img', 'wp_get_attachment_image' ) ) { $image_attrs['loading'] = 'lazy'; } // If it's numeric, this may be an attachment. if ( is_numeric( $src ) ) { return wp_get_attachment_image( $src, 'full', false, $image_attrs ); } // Check if it's an absolute or relative URL, and return if not. if ( ! str_starts_with( $src, '/' ) && false === filter_var( $src, FILTER_VALIDATE_URL ) ) { return ''; } $image_attrs_markup = ''; foreach ( $image_attrs as $name => $value ) { $image_attrs_markup .= sprintf( ' %1$s="%2$s"', esc_attr( $name ), esc_attr( $value ) ); } return sprintf( '<img%1$s src="%2$s" />', $image_attrs_markup, esc_url( $src ) ); } /** * Use $themecolors array to style the Recipes shortcode * * @print style block * @return string $style */ public function themecolor_styles() { global $themecolors; $style = ''; if ( isset( $themecolors['border'] ) ) { $style .= '.jetpack-recipe { border-color: #' . esc_attr( $themecolors['border'] ) . '; }'; } if ( isset( $themecolors['link'] ) ) { $style .= '.jetpack-recipe-title { border-bottom-color: #' . esc_attr( $themecolors['link'] ) . '; }'; } return $style; } } new Jetpack_Recipes();
SILENT KILLER Tool