version 4.13.0

This commit is contained in:
2021-12-07 11:08:05 +00:00
commit cb26d2c0c4
1285 changed files with 254735 additions and 0 deletions
404.phpCREDITS.mdLICENSE.mdREADME.mdchangelog.txtcomments.php
core
_et_core_version.php_metadata.php
admin
components
functions.phpinit.php
json-data
php_functions.phpupdates_init.phpwp_functions.php
css
epanel
et-pagebuilder
footer.phpfunctions.phpheader.php
images
includes
block-editor-integration.php
builder
_et_builder_version.phpab-testing.php
api
autoload.phpclass-et-builder-dynamic-assets-feature.phpclass-et-builder-element.phpclass-et-builder-global-feature-base.phpclass-et-builder-google-fonts-feature.phpclass-et-builder-module-features.phpclass-et-builder-module-shortcode-manager.phpclass-et-builder-module-use-detection.phpclass-et-builder-plugin-compat-base.phpclass-et-builder-plugin-compat-loader.phpclass-et-builder-post-feature-base.phpclass-et-builder-settings.phpclass-et-builder-theme-compat-base.phpclass-et-builder-theme-compat-handler.phpclass-et-builder-value.phpclass-et-global-settings.phpcomments_template.php
compat
conditions.phpcore.phpdeprecations.php
feature
AjaxCache.phpBlockEditorIntegration.phpBlockTemplates.phpClassicEditor.phpCriticalCSS.phpDoNotCachePage.phpErrorReport.phpI18n.phpJQueryBody.phpLibrary.php
ajax-data
content-retriever
display-conditions
dynamic-assets
assets
css
accordion.cssaccordion_cpt.cssanimations.cssanimations_cpt.cssaudio.cssaudio_cpt.cssaudio_player-rtl.cssaudio_player.cssaudio_player_cpt-rtl.cssaudio_player_cpt.cssblog-rtl.cssblog.cssblog_cpt-rtl.cssblog_cpt.cssblurb.cssblurb_cpt.cssbutton.cssbutton_cpt.cssbuttons.cssbuttons_cpt.csscircle_counter.csscircle_counter_cpt.csscode.csscode_cpt.csscomments.csscomments_cpt.csscomments_shared.csscomments_shared_cpt.csscontact_form-rtl.csscontact_form.csscontact_form_cpt-rtl.csscontact_form_cpt.csscountdown_timer.csscountdown_timer_cpt.csscounter.csscounter_cpt.csscta.csscta_cpt.cssdivider.cssdivider_cpt.cssfields.cssfields_cpt.cssfilterable_portfolio.cssfilterable_portfolio_cpt.cssforms.cssforms_cpt.cssforms_specialty.cssforms_specialty_cpt.cssfullwidth_code.cssfullwidth_code_cpt.cssfullwidth_header.cssfullwidth_header_cpt.cssfullwidth_image.cssfullwidth_image_cpt.cssfullwidth_map.cssfullwidth_map_cpt.cssfullwidth_menu.cssfullwidth_menu_cpt.cssfullwidth_portfolio.cssfullwidth_portfolio_cpt.cssfullwidth_post_slider.cssfullwidth_post_slider_cpt.cssfullwidth_post_title.cssfullwidth_post_title_cpt.cssfullwidth_slider.cssfullwidth_slider_cpt.cssgallery.cssgallery_cpt.cssgrid_items.cssgrid_items_cpt.cssgutters1-rtl.cssgutters1.cssgutters1_cpt-rtl.cssgutters1_cpt.cssgutters1_grid_items.cssgutters1_grid_items_cpt.cssgutters1_specialty-rtl.cssgutters1_specialty.cssgutters1_specialty_cpt-rtl.cssgutters1_specialty_cpt.cssgutters1_specialty_grid_items.cssgutters1_specialty_grid_items_cpt.cssgutters2-rtl.cssgutters2.cssgutters2_cpt-rtl.cssgutters2_cpt.cssgutters2_grid_items.cssgutters2_grid_items_cpt.cssgutters2_specialty-rtl.cssgutters2_specialty.cssgutters2_specialty_cpt-rtl.cssgutters2_specialty_cpt.cssgutters2_specialty_grid_items.cssgutters2_specialty_grid_items_cpt.cssgutters3-rtl.cssgutters3.cssgutters3_cpt-rtl.cssgutters3_cpt.cssgutters3_grid_items.cssgutters3_grid_items_cpt.cssgutters3_specialty-rtl.cssgutters3_specialty.cssgutters3_specialty_cpt-rtl.cssgutters3_specialty_cpt.cssgutters3_specialty_grid_items.cssgutters3_specialty_grid_items_cpt.cssgutters4-rtl.cssgutters4.cssgutters4_cpt-rtl.cssgutters4_cpt.cssgutters4_grid_items.cssgutters4_grid_items_cpt.cssgutters4_specialty-rtl.cssgutters4_specialty.cssgutters4_specialty_cpt-rtl.cssgutters4_specialty_cpt.cssgutters4_specialty_grid_items.cssgutters4_specialty_grid_items_cpt.cssheader_animations.cssheader_animations_cpt.cssheader_shared.cssheader_shared_cpt.cssicon.cssicon_cpt.cssicons_all.cssicons_base.cssicons_base_social.cssicons_fa_all.cssimage.cssimage_cpt.csslegacy_animations.csslegacy_animations_cpt.csslogin.csslogin_cpt.cssmagnific_popup.cssmagnific_popup_cpt.cssmap.cssmap_cpt.cssmenu.cssmenu_cpt.cssmenus.cssmenus_cpt.cssnumber_counter.cssnumber_counter_cpt.cssoverlay.cssoverlay_cpt.cssportfolio.cssportfolio_cpt.csspost_formats.csspost_formats_cpt.csspost_nav.csspost_nav_cpt.csspost_slider.csspost_slider_cpt.csspost_title.csspost_title_cpt.cssposts.cssposts_cpt.csspricing_tables.csspricing_tables_cpt.cssrow.cssrow_cpt.csssearch.csssearch_cpt.csssection.csssection_cpt.cssshared-conditional-style-rtl.cssshared-conditional-style_cpt-rtl.cssshop.cssshop_cpt.csssidebar.csssidebar_cpt.csssignup-rtl.csssignup.csssignup_cpt-rtl.csssignup_cpt.cssslider.cssslider_base.cssslider_base_cpt.cssslider_controls.cssslider_controls_cpt.cssslider_cpt.cssslider_modules.cssslider_modules_cpt.csssocial_media_follow.csssocial_media_follow_cpt.csssticky_elements.csssticky_elements_cpt.csstabs.csstabs_cpt.cssteam_member.cssteam_member_cpt.csstestimonial.csstestimonial_cpt.csstext.csstext_cpt.csstoggle.csstoggle_cpt.cssvideo.cssvideo_cpt.cssvideo_player.cssvideo_player_cpt.cssvideo_slider.cssvideo_slider_cpt.csswidgets_shared.csswidgets_shared_cpt.csswoo_add_to_cart.csswoo_add_to_cart_cpt.csswoo_additional_info.csswoo_additional_info_cpt.csswoo_breadcrumb.csswoo_breadcrumb_cpt.csswoo_cart_notice.csswoo_cart_notice_cpt.csswoo_cart_products.csswoo_cart_products_cpt.csswoo_cart_totals.csswoo_cart_totals_cpt.csswoo_checkout_billing.csswoo_checkout_billing_cpt.csswoo_checkout_details.csswoo_checkout_details_cpt.csswoo_checkout_info.csswoo_checkout_info_cpt.csswoo_checkout_payment.csswoo_checkout_payment_cpt.csswoo_checkout_shipping.csswoo_checkout_shipping_cpt.csswoo_description.csswoo_description_cpt.csswoo_images.csswoo_images_cpt.csswoo_meta.csswoo_meta_cpt.csswoo_price.csswoo_price_cpt.csswoo_rating.csswoo_rating_cpt.csswoo_related_products_upsells.csswoo_related_products_upsells_cpt.csswoo_reviews.csswoo_reviews_cpt.csswoo_stock.csswoo_stock_cpt.csswoo_tabs.csswoo_tabs_cpt.csswoo_title.csswoo_title_cpt.csswoocommerce.csswoocommerce_cpt.csswoocommerce_shared.csswoocommerce_shared_cpt.csswp_gallery.csswp_gallery_cpt.css
js
class-dynamic-assets.phpdynamic-assets.php
dynamic-content.php
global-presets
gutenberg
icon-manager
post-content.phpsearch-posts.phpwindow.phpwoocommerce-modules.php
framework.php
frontend-builder
LICENSE.mdassets.php
assets
backports
css
img
scripts
vendors
LICENSE.md
langs
plugins
skins
themes
tinymce-skin
tinymce.min.js
bfb-template.php
build
helpers.phpi18n.php
i18n
init.phprtl.php
theme-builder
view.php
functions.php
images
languages
ar.mobg_BG.mocs_CZ.moda_DK.mode_DE.moel.moen_US.moes_ES.moet_builder-ar-et-builder-gutenberg.jsonet_builder-bg_BG-et-builder-gutenberg.jsonet_builder-cs_CZ-et-builder-gutenberg.jsonet_builder-da_DK-et-builder-gutenberg.jsonet_builder-de_DE-et-builder-gutenberg.jsonet_builder-el-et-builder-gutenberg.jsonet_builder-en_US-et-builder-gutenberg.jsonet_builder-es_ES-et-builder-gutenberg.jsonet_builder-fi-et-builder-gutenberg.jsonet_builder-fr_FR-et-builder-gutenberg.jsonet_builder-he_IL-et-builder-gutenberg.jsonet_builder-hu_HU-et-builder-gutenberg.jsonet_builder-id_ID-et-builder-gutenberg.jsonet_builder-it_IT-et-builder-gutenberg.jsonet_builder-ja-et-builder-gutenberg.jsonet_builder-ko_KR-et-builder-gutenberg.jsonet_builder-ms_MY-et-builder-gutenberg.jsonet_builder-nb_NO-et-builder-gutenberg.jsonet_builder-nl_NL-et-builder-gutenberg.jsonet_builder-pl_PL-et-builder-gutenberg.jsonet_builder-pt_BR-et-builder-gutenberg.jsonet_builder-ro_RO-et-builder-gutenberg.jsonet_builder-ru_RU-et-builder-gutenberg.jsonet_builder-sk_SK-et-builder-gutenberg.jsonet_builder-sr_RS-et-builder-gutenberg.jsonet_builder-sv_SE-et-builder-gutenberg.jsonet_builder-th-et-builder-gutenberg.jsonet_builder-tl-et-builder-gutenberg.jsonet_builder-tr_TR-et-builder-gutenberg.jsonet_builder-uk-et-builder-gutenberg.jsonet_builder-vi-et-builder-gutenberg.jsonet_builder-zh_CN-et-builder-gutenberg.jsonfi.mofr_FR.mohe_IL.mohu_HU.moid_ID.moit_IT.moja.moko_KR.moms_MY.monb_NO.monl_NL.mopl_PL.mopt_BR.moro_RO.moru_RU.mosk_SK.mosr_RS.mosv_SE.moth.motl.motr_TR.mouk.movi.mozh_CN.mo
main-structure-elements.php
module
Accordion.phpAccordionItem.phpAudio.phpBarCounters.phpBarCountersItem.phpBlog.phpBlurb.phpButton.phpCircleCounter.phpCode.phpComments.phpContactForm.phpContactFormItem.phpCountdownTimer.phpCta.phpDivider.phpFilterablePortfolio.phpFullwidthCode.phpFullwidthHeader.phpFullwidthImage.phpFullwidthMap.phpFullwidthMenu.phpFullwidthPortfolio.phpFullwidthPostContent.phpFullwidthPostSlider.phpFullwidthPostTitle.phpFullwidthSlider.phpGallery.phpIcon.phpImage.phpLogin.phpMap.phpMapItem.phpMenu.phpNumberCounter.phpPortfolio.phpPostContent.phpPostSlider.phpPostTitle.phpPostsNavigation.phpPricingTables.phpPricingTablesItem.phpSearch.phpShop.phpSidebar.phpSignup.phpSignupItem.phpSlider.phpSliderItem.phpSocialMediaFollow.phpSocialMediaFollowItem.phpTabs.phpTabsItem.phpTeamMember.phpTestimonial.phpText.phpToggle.phpVideo.phpVideoSlider.phpVideoSliderItem.php
field
helpers
settings
type
woocommerce
plugin-compat
post
scripts
styles
template-preview.php
templates
tests
codeception
theme-compat
functions
module-customizer
navigation.phpno-results.phpsocial_icons.phptheme-builder.phpwidgets.php
widgets
index.php
js
lang
options_divi.phppage-template-blank.phppage.phppost_thumbnails_divi.php
psd
screenshot.jpgsidebar-footer.phpsidebar.phpsingle-et_pb_layout.phpsingle-project.phpsingle.phpstyle-cpt-rtl.min.cssstyle-cpt.min.cssstyle-rtl.min.cssstyle-static-cpt-rtl.min.cssstyle-static-cpt.min.cssstyle-static-rtl.min.cssstyle-static.min.cssstyle.cssstyle.min.csstheme-after-footer.phptheme-after-header.phptheme-after-wrappers.phptheme-before-wrappers.phptheme-footer.phptheme-header.phpwpml-config.xml

@ -0,0 +1,207 @@
<?php
/**
* Module Use Detection class.
*
* @package Divi
* @subpackage Builder
* @since 4.10.0
*/
/**
* Handles Module Use Detection.
*
* @since 4.10.0
*/
class ET_Builder_Module_Use_Detection {
/**
* Module Slugs Used.
*
* @access protected
* @var array
*/
protected $_modules_used = [];
/**
* Module Attrs Used.
*
* @access protected
* @var array
*/
protected $_module_attrs_used = [];
/**
* Module Attr Values Used.
*
* @access protected
* @var array
*/
protected $_module_attr_values_used = [];
/**
* Valid Shortcode Slugs.
*
* @access protected
* @var array
*/
protected $_valid_slugs = [];
/**
* `ET_Builder_Module_Use_Detection` instance.
*
* @var ET_Builder_Module_Use_Detection
*/
private static $_instance;
/**
* Construct instance.
*/
public function __construct() {
add_filter( 'pre_do_shortcode_tag', [ $this, 'log_slug_used' ], 99, 3 );
add_action( 'wp_footer', [ $this, 'footer' ], 1000 );
add_action( 'et_builder_ready', array( $this, '_setup_valid_slugs' ), 100 );
}
/**
* Get instance.
*/
public static function instance() {
if ( ! self::$_instance ) {
self::$_instance = new static();
}
return self::$_instance;
}
/**
* Get valid slugs.
*/
public function _setup_valid_slugs() {
$this->_valid_slugs = ET_Builder_Element::get_all_module_slugs();
}
/**
* Log the Shortcode Tag/Slug.
*
* @since 4.10.0
* @access public
* @param mixed $override Whether to override do_shortcode return value or not.
* @param string $tag Shortcode tag.
* @param array $attrs Shortcode attrs.
* @return mixed
*/
public function log_slug_used( $override, $tag, $attrs ) {
$interested_attrs_and_values = apply_filters(
'et_builder_module_attrs_values_used',
[
'gutter_width',
'animation_style',
'sticky_position',
'specialty',
'use_custom_gutter',
'font_icon',
'button_icon',
'hover_icon',
'scroll_down_icon',
'social_network',
'show_in_lightbox',
'fullwidth',
'scroll_vertical_motion_enable',
'scroll_horizontal_motion_enable',
'scroll_fade_enable',
'scroll_scaling_enable',
'scroll_rotating_enable',
'scroll_blur_enable',
'show_content',
]
);
/**
* The "gallery" shortcode is not part of the Divi modules but is used for enqueuing MagnificPopup
* when Divi Gallery is enabled under Theme Options > Enable Divi Gallery, so we need to include
* it in late detection for edge cases such as shortcodes hardcoded into child themes.
*/
$additional_valid_slugs = apply_filters(
'et_builder_valid_module_slugs',
[
'gallery',
]
);
$valid_slugs = array_unique( array_merge( $this->_valid_slugs, $additional_valid_slugs ) );
// Log the shortcode tags used.
if ( in_array( $tag, $valid_slugs, true ) ) {
$this->_modules_used[] = $tag;
$this->_modules_used = array_unique( $this->_modules_used );
if ( ! is_null( $attrs ) && ! is_array( $attrs ) ) {
$attrs = (array) $attrs;
}
$found_interested_attr_and_values = array_intersect( array_keys( $attrs ), $interested_attrs_and_values );
foreach ( $found_interested_attr_and_values as $key => $attr_name ) {
if ( empty( $this->_module_attr_values_used[ $attr_name ] ) ) {
$this->_module_attr_values_used[ $attr_name ] = [];
}
$this->_module_attr_values_used[ $attr_name ][] = $attrs[ $attr_name ];
$this->_module_attr_values_used[ $attr_name ] = array_unique( $this->_module_attr_values_used[ $attr_name ] );
}
}
return $override;
}
/**
* Add footer actions.
*/
public function footer() {
/**
* Fires after wp_footer hook and contains unique array of
* slugs of the modules that were used on the page load.
*
* @param array $_used_modules Module slugs used on the page load.
*
* @since 4.10.0
*/
do_action( 'et_builder_modules_used', $this->_modules_used );
}
/**
* Get modules used.
*
* @return array List of module slugs used.
* @since 4.10.0
* @access public
*/
public function get_modules_used() {
return $this->_modules_used;
}
/**
* Get module attrs used.
*
* @return array List of interested module attrs used.
* @since 4.10.0
* @access public
*/
public function get_module_attrs_used() {
return $this->_module_attrs_used;
}
/**
* Get module attr values used.
*
* @return array List of interested module attrs and values used.
* @since 4.10.0
* @access public
*/
public function get_module_attr_values_used() {
return $this->_module_attr_values_used;
}
}
ET_Builder_Module_Use_Detection::instance();