![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /proc/self/cwd/wp-content/plugins/colibri-page-builder/extend-builder/ |
<?php namespace ExtendBuilder; function colibri_user_can_customize() { return is_user_logged_in() && current_user_can( 'edit_theme_options' ); } function is_shortcode_refresh() { return apply_filters( 'mesmerize_is_shortcode_refresh', false ); } // we are in browser preview function is_customize_changeset_preview() { return \is_customize_preview() && ! isset( $_GET['customize_messenger_channel'] ); } function is_customize_preview() { $in_customizer = \is_customize_preview() && isset( $_GET['customize_messenger_channel'] ); $is_shortcode_render = apply_filters( 'mesmerize_is_shortcode_refresh', false ); return ( $in_customizer || $is_shortcode_render ); } function extend_builder_path() { return __DIR__; } require_once __DIR__ . '/utils.php'; require_once __DIR__ . '/filters/index.php'; require_once __DIR__ . '/updates.php'; require_once __DIR__ . '/custom-posts.php'; require_once __DIR__ . '/data/index.php'; require_once __DIR__ . '/save.php'; require_once __DIR__ . '/assets.php'; require_once __DIR__ . '/fonts.php'; require_once __DIR__ . '/partials/index.php'; require_once __DIR__ . '/api/index.php'; require_once __DIR__ . '/shortcodes/index.php'; require_once __DIR__ . '/register.php'; require_once __DIR__ . '/gutenberg.php'; require_once __DIR__ . '/import.php'; require_once __DIR__ . '/customizer/index.php'; require_once __DIR__ . '/admin/index.php'; require_once __DIR__ . '/features/index.php'; require_once __DIR__ . '/integrations/index.php'; if ( file_exists( __DIR__ . '/../pro/index.php' ) ) { require_once __DIR__ . '/../pro/index.php'; } function colibri_editor_add_editor_role() { if ( get_role( 'colibri_content_editor' ) ) { return; } $editor = get_role( 'editor' ); $capabilities = array_merge( $editor->capabilities, array( 'edit_theme_options' => true, 'customize' => true, ) ); add_role( 'colibri_content_editor', __( 'Content Editor' ), $capabilities ); } colibri_editor_add_editor_role(); function colibri_theme_default_theme_data() { $front_page_design = get_option( 'colibriwp_predesign_front_page_index', 0 ); if ( $front_page_design != 0 ) { return; } include( 'import_theme_data.php' ); colibri_theme_import_theme_data(); Regenerate::schedule(); } add_action( 'colibri_page_builder/default_theme_data', 'ExtendBuilder\colibri_theme_default_theme_data' ); add_filter( 'colibri_page_builder/plugin-activated', function ( $response, $slug, $plugin_data ) { if ( $slug === 'mailchimp-for-wp' ) { $response[ $slug ] = get_mailchimp_form_shortcode(); } return $response; }, 10, 3 ); add_action( 'admin_init', function () { add_action( 'admin_notices', array( Regenerate::class, 'printSiteImportedNotice' ) ); } ); //used to show cropped images in the media picker add_filter( 'add_post_metadata', function ( $check, $object_id, $meta_key, $meta_value, $unique ) { if ( $meta_key === '_wp_attachment_context' && preg_match( '/custom-image-cropper/i', $meta_value ) ) { return true; } return $check; }, 10, 5 ); function colibri_crop_image_copy_alt( $data, $new_attachment_id ) { $original_attachment_id = colibri_cache_get( 'colibri_crop_original_attachment_id' ); $image_alt = get_post_meta( $original_attachment_id, '_wp_attachment_image_alt', true ); if ( $image_alt ) { update_post_meta( $new_attachment_id, '_wp_attachment_image_alt', $image_alt ); } //remove the current function from the filter because it's not needed anymore. remove_filter( 'wp_update_attachment_metadata', 'ExtendBuilder\colibri_crop_image_copy_alt' ); return $data; } //when cropping copy the alt of the original image add_action( 'wp_ajax_crop_image_pre_save', function ( $context, $attachment_id, $cropped ) { if ( ! preg_match( '/custom-image-cropper/i', $context ) ) { return; } colibri_cache_set( 'colibri_crop_original_attachment_id', $attachment_id ); add_filter( 'wp_update_attachment_metadata', 'ExtendBuilder\colibri_crop_image_copy_alt', 10, 2 ); }, 10, 3 ); function get_attachment_id_by_url( $url ) { $attachment_id = 0; $dir = wp_upload_dir(); if ( false !== strpos( $url, $dir['baseurl'] . '/' ) ) { // Is URL in uploads directory? $file = basename( $url ); $query_args = array( 'post_type' => 'attachment', 'post_status' => 'inherit', 'fields' => 'ids', 'meta_query' => array( array( 'value' => $file, 'compare' => 'LIKE', 'key' => '_wp_attachment_metadata', ), ) ); $query = new \WP_Query( $query_args ); if ( $query->have_posts() ) { foreach ( $query->posts as $post_id ) { $meta = wp_get_attachment_metadata( $post_id ); $original_file = basename( $meta['file'] ); $cropped_image_files = wp_list_pluck( $meta['sizes'], 'file' ); if ( $original_file === $file || in_array( $file, $cropped_image_files ) ) { $attachment_id = $post_id; break; } } } } return $attachment_id; } function colibri_add_images_alts( $content ) { if ( ! preg_match_all( '/<img [^>]+>/', $content, $matches ) ) { return $content; } $selected_images = $attachment_ids = array(); foreach ( $matches[0] as $image ) { if ( false === strpos( $image, ' alt=' ) ) { $attachment_id = false; if ( preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) ) { $attachment_id = absint( $class_id[1] ); } if ( false !== strpos( $image, 'logo-image' ) ) { $attachment_id = get_theme_mod( 'custom_logo', false ); } if ( false !== strpos( $image, 'logo-alt-image' ) ) { preg_match( '/src=[\'|"](.*?)[\'|"]/i', $image, $url_match ); $url = $url_match[1]; $url_hash = md5( $url ); if ( $id = colibri_transient_cache_get( "logo.logo-alt-image.{$url_hash}", false ) ) { $attachment_id = $id; } else { $attachment_id = get_attachment_id_by_url( $url ); colibri_transient_cache_set( "logo.logo-alt-image.{$url_hash}", $attachment_id ); } } if ( $attachment_id ) { $selected_images[ $image ] = $attachment_id; // Overwrite the ID when the same image is included more than once. $attachment_ids[ $attachment_id ] = true; } } } if ( count( $attachment_ids ) > 1 ) { /* * Warm the object cache with post and meta information for all found * images to avoid making individual database calls. */ _prime_post_caches( array_keys( $attachment_ids ), false, true ); } foreach ( $selected_images as $image => $attachment_id ) { $image_alt = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ); $context = get_post_meta( $attachment_id, '_wp_attachment_context', true ); // fix already saved images missing from media gallery// if ( strpos( $context, "custom-image-cropper" ) !== false ) { delete_post_meta( $attachment_id, '_wp_attachment_context' ); } $image_alt = esc_attr($image_alt); $new_image = preg_replace( '/<img ([^>]+?)[\/ ]*>/', '<img $1 alt="' . $image_alt . '" />', $image ); $content = str_replace( $image, $new_image, $content ); } return $content; } add_action( 'init', function () { // remove the filter added by third party plugin 'Colibri alt text' to reduce overhead remove_filter( 'the_content', 'colibri_add_images_alts', 1 ); remove_filter( 'colibri_dynamic_content', 'colibri_add_images_alts', 1 ); $activate_theme_name = get_option( 'colibriwp_activate_theme_name', 0 ); if ( $activate_theme_name === 0 ) { add_option( 'colibriwp_activate_theme_name', get_stylesheet() ); } } ); add_filter( 'the_content', 'ExtendBuilder\colibri_add_images_alts' ); add_filter( 'colibri_dynamic_content', 'ExtendBuilder\colibri_add_images_alts' ); add_action("admin_init", function() { ThemeDataAccess::maybeEnableFs(); }); add_action("colibri_importer_after_import", function() { ThemeDataAccess::getInstance()->moveFromOptionToFile(); }); function colibri_add_kss_allowed_elements($allowed_html = array()) { $svg_elements = array( 'svg' => array( 'xmlns', 'viewbox', 'id', 'data-name', 'width', 'height', 'version', 'xmlns:xlink', 'x', 'y', 'enable-background', 'xml:space', ), 'path' => array( 'd', 'id', 'class', 'data-name', ), 'g' => array( 'id', 'stroke', 'stroke-width', 'fill', 'fill-rule', 'transform', ), 'title' => array(), 'polygon' => array( 'id', 'points', ), 'rect' => array( 'x', 'y', 'width', 'height', 'transform', ), 'circle' => array( 'cx', 'cy', 'r', ), 'ellipse' => array( 'cx', 'cy', 'rx', 'ry', ), ); $shared_attrs = array('data-*', 'id', 'class'); foreach ($svg_elements as $element => $attrs) { if (!isset($allowed_html[$element])) { $allowed_html[$element] = array(); } $allowed_html[$element] = array_merge($allowed_html[$element], array_fill_keys(array_merge($attrs, $shared_attrs), true)); } $allowed_html['input'] = array( 'type' => true, 'name' => true, 'value' => true, 'class' => true, ); return $allowed_html; } add_filter('wp_kses_allowed_html', '\ExtendBuilder\colibri_add_kss_allowed_elements');