Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../themes/Divi/includes/builder
File: class-et-builder-element.php
[1500] Fix | Delete
$processed_attr_value = str_replace( array( '%22', '%92', '%91', '%93', '%5c' ), array( '"', '\\', '[', ']', '\\' ),$processed_attr_value );
[1501] Fix | Delete
[1502] Fix | Delete
// Restore string for font icon attribute from "##xx##" to "%%xx%%".
[1503] Fix | Delete
$processed_attr_value = preg_replace( '/##([0-9]+)##/', '%%$1%%', $processed_attr_value );
[1504] Fix | Delete
[1505] Fix | Delete
$shortcode_attributes[ $attribute_key ] = $processed_attr_value;
[1506] Fix | Delete
}
[1507] Fix | Delete
}
[1508] Fix | Delete
[1509] Fix | Delete
$this->props = $shortcode_attributes;
[1510] Fix | Delete
}
[1511] Fix | Delete
[1512] Fix | Delete
/**
[1513] Fix | Delete
* Provide a way for sub-class to access $this->_render_count without a chance to alter its value
[1514] Fix | Delete
*
[1515] Fix | Delete
* @return int
[1516] Fix | Delete
*/
[1517] Fix | Delete
protected function render_count() {
[1518] Fix | Delete
return $this->_render_count;
[1519] Fix | Delete
}
[1520] Fix | Delete
[1521] Fix | Delete
/**
[1522] Fix | Delete
* Bumps the render count for this module instance and the module instance whose slug is
[1523] Fix | Delete
* set as {@see self::$_bumps_render_count} (if any).
[1524] Fix | Delete
*
[1525] Fix | Delete
* @since 3.10
[1526] Fix | Delete
*/
[1527] Fix | Delete
protected function _bump_render_count() {
[1528] Fix | Delete
$this->_render_count++;
[1529] Fix | Delete
[1530] Fix | Delete
if ( $this->_bumps_render_count ) {
[1531] Fix | Delete
$module = self::get_module( $this->_bumps_render_count, $this->get_post_type() );
[1532] Fix | Delete
[1533] Fix | Delete
$module->_render_count++;
[1534] Fix | Delete
}
[1535] Fix | Delete
}
[1536] Fix | Delete
[1537] Fix | Delete
/**
[1538] Fix | Delete
* check whether ab testing enabled for current module and calculate whether it should be displayed currently or not
[1539] Fix | Delete
*
[1540] Fix | Delete
* @return bool
[1541] Fix | Delete
*/
[1542] Fix | Delete
private function _is_display_module( $shortcode_atts ) {
[1543] Fix | Delete
$ab_subject_id = isset( $shortcode_atts['ab_subject_id'] ) && '' !== $shortcode_atts['ab_subject_id'] ? $shortcode_atts['ab_subject_id'] : false;
[1544] Fix | Delete
[1545] Fix | Delete
// return true if testing is disabled or current module has no subject id.
[1546] Fix | Delete
if ( ! $ab_subject_id ) {
[1547] Fix | Delete
return true;
[1548] Fix | Delete
}
[1549] Fix | Delete
[1550] Fix | Delete
return $this->_check_ab_test_subject( $ab_subject_id );
[1551] Fix | Delete
}
[1552] Fix | Delete
[1553] Fix | Delete
/**
[1554] Fix | Delete
* check whether the current module should be displayed or not
[1555] Fix | Delete
*
[1556] Fix | Delete
* @return bool
[1557] Fix | Delete
*/
[1558] Fix | Delete
private function _check_ab_test_subject( $ab_subject_id = false ) {
[1559] Fix | Delete
global $et_pb_ab_subject;
[1560] Fix | Delete
[1561] Fix | Delete
if ( ! $ab_subject_id ) {
[1562] Fix | Delete
return true;
[1563] Fix | Delete
}
[1564] Fix | Delete
[1565] Fix | Delete
return $ab_subject_id === et_()->array_get( $et_pb_ab_subject, self::get_layout_id(), '' );
[1566] Fix | Delete
}
[1567] Fix | Delete
[1568] Fix | Delete
/**
[1569] Fix | Delete
* Get an index.
[1570] Fix | Delete
*
[1571] Fix | Delete
* @since 4.0
[1572] Fix | Delete
*
[1573] Fix | Delete
* @param string $key
[1574] Fix | Delete
*
[1575] Fix | Delete
* @return mixed
[1576] Fix | Delete
*/
[1577] Fix | Delete
protected static function _get_index( $key ) {
[1578] Fix | Delete
$theme_builder_group = self::get_theme_builder_layout_type();
[1579] Fix | Delete
$key = array_merge( array( $theme_builder_group ), (array) $key );
[1580] Fix | Delete
[1581] Fix | Delete
return et_()->array_get( self::$_indices, $key, -1 );
[1582] Fix | Delete
}
[1583] Fix | Delete
[1584] Fix | Delete
/**
[1585] Fix | Delete
* Set an index.
[1586] Fix | Delete
*
[1587] Fix | Delete
* @since 4.0
[1588] Fix | Delete
*
[1589] Fix | Delete
* @param string $key
[1590] Fix | Delete
* @param mixed $value
[1591] Fix | Delete
*
[1592] Fix | Delete
* @return void
[1593] Fix | Delete
*/
[1594] Fix | Delete
protected static function _set_index( $key, $index ) {
[1595] Fix | Delete
$theme_builder_group = self::get_theme_builder_layout_type();
[1596] Fix | Delete
$key = array_merge( array( $theme_builder_group ), (array) $key );
[1597] Fix | Delete
[1598] Fix | Delete
et_()->array_set( self::$_indices, $key, $index );
[1599] Fix | Delete
}
[1600] Fix | Delete
[1601] Fix | Delete
/**
[1602] Fix | Delete
* Resets indexes used when generating element addresses.
[1603] Fix | Delete
*
[1604] Fix | Delete
* @param string $content
[1605] Fix | Delete
* @param bool $force
[1606] Fix | Delete
*
[1607] Fix | Delete
* @return string
[1608] Fix | Delete
*/
[1609] Fix | Delete
public static function reset_element_indexes( $content = '', $force = false ) {
[1610] Fix | Delete
if ( ! $force && ( ! self::$can_reset_element_indexes || ! is_main_query() ) ) {
[1611] Fix | Delete
return $content;
[1612] Fix | Delete
}
[1613] Fix | Delete
[1614] Fix | Delete
$slugs = self::get_parent_slugs_regex();
[1615] Fix | Delete
[1616] Fix | Delete
if ( $content && ! preg_match( "/{$slugs}/", $content ) ) {
[1617] Fix | Delete
// At least one builder element should be present.
[1618] Fix | Delete
return $content;
[1619] Fix | Delete
}
[1620] Fix | Delete
[1621] Fix | Delete
global $wp_current_filter;
[1622] Fix | Delete
[1623] Fix | Delete
if ( in_array( 'the_content', $wp_current_filter ) ) {
[1624] Fix | Delete
$call_counts = array_count_values( $wp_current_filter );
[1625] Fix | Delete
[1626] Fix | Delete
if ( $call_counts['the_content'] > 1 ) {
[1627] Fix | Delete
// This is a nested call. We only want to reset indexes after the top-most call.
[1628] Fix | Delete
return $content;
[1629] Fix | Delete
}
[1630] Fix | Delete
}
[1631] Fix | Delete
[1632] Fix | Delete
self::_set_index( self::INDEX_SECTION, -1 );
[1633] Fix | Delete
self::_set_index( self::INDEX_ROW, -1 );
[1634] Fix | Delete
self::_set_index( self::INDEX_ROW_INNER, -1 );
[1635] Fix | Delete
self::_set_index( self::INDEX_COLUMN, -1 );
[1636] Fix | Delete
self::_set_index( self::INDEX_COLUMN_INNER, -1 );
[1637] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1638] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1639] Fix | Delete
[1640] Fix | Delete
if ( $force ) {
[1641] Fix | Delete
// Reset module order classes
[1642] Fix | Delete
self::_set_index( self::INDEX_MODULE_ORDER, array() );
[1643] Fix | Delete
self::_set_index( self::INDEX_INNER_MODULE_ORDER, array() );
[1644] Fix | Delete
}
[1645] Fix | Delete
[1646] Fix | Delete
return $content;
[1647] Fix | Delete
}
[1648] Fix | Delete
[1649] Fix | Delete
/**
[1650] Fix | Delete
* Generates the element's address. Every builder element on the page is assigned an address
[1651] Fix | Delete
* based on it's index and those of it's parents using the following format:
[1652] Fix | Delete
*
[1653] Fix | Delete
* `$section.$row.$column.$module[.$module_item]`
[1654] Fix | Delete
*
[1655] Fix | Delete
* For example, if a module is the forth module in the first column in the third row in the
[1656] Fix | Delete
* second section on the page, it's address would be: `1.2.0.3` (indexes are zero-based).
[1657] Fix | Delete
*
[1658] Fix | Delete
* @since 3.1 Renamed from `_get_current_shortcode_address()` to `generate_element_address()`
[1659] Fix | Delete
* @since 3.0.60
[1660] Fix | Delete
*
[1661] Fix | Delete
* @param string render slug
[1662] Fix | Delete
*
[1663] Fix | Delete
* @return string
[1664] Fix | Delete
*/
[1665] Fix | Delete
public function generate_element_address( $render_slug = '' ) {
[1666] Fix | Delete
// Flag child module. $this->type isn't accurate in this context since some modules reuse other
[1667] Fix | Delete
// modules' render() method for rendering their output (ie. accordion item).
[1668] Fix | Delete
// Even though Column and Column Inner are child elements of Row they shouldn't be processed as child items
[1669] Fix | Delete
$is_child_module = in_array( $render_slug, self::get_child_slugs( $this->get_post_type() ) ) && false === strpos( $render_slug, '_column_inner' ) && false === strpos( $render_slug, '_column' );
[1670] Fix | Delete
[1671] Fix | Delete
if ( false !== strpos( $render_slug, '_section' ) ) {
[1672] Fix | Delete
self::_set_index( self::INDEX_SECTION, self::_get_index( self::INDEX_SECTION ) + 1 );
[1673] Fix | Delete
[1674] Fix | Delete
// Reset every module index inside section
[1675] Fix | Delete
self::_set_index( self::INDEX_ROW, -1 );
[1676] Fix | Delete
self::_set_index( self::INDEX_ROW_INNER, -1 );
[1677] Fix | Delete
self::_set_index( self::INDEX_COLUMN, -1 );
[1678] Fix | Delete
self::_set_index( self::INDEX_COLUMN_INNER, -1 );
[1679] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1680] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1681] Fix | Delete
[1682] Fix | Delete
} else if ( false !== strpos( $render_slug, '_row_inner' ) ) {
[1683] Fix | Delete
self::_set_index( self::INDEX_ROW_INNER, self::_get_index( self::INDEX_ROW_INNER ) + 1 );
[1684] Fix | Delete
[1685] Fix | Delete
// Reset every module index inside row inner
[1686] Fix | Delete
self::_set_index( self::INDEX_COLUMN_INNER, -1 );
[1687] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1688] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1689] Fix | Delete
[1690] Fix | Delete
} else if ( false !== strpos( $render_slug, '_row' ) ) {
[1691] Fix | Delete
self::_set_index( self::INDEX_ROW, self::_get_index( self::INDEX_ROW ) + 1 );
[1692] Fix | Delete
[1693] Fix | Delete
// Reset every module index inside row
[1694] Fix | Delete
self::_set_index( self::INDEX_COLUMN, -1 );
[1695] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1696] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1697] Fix | Delete
[1698] Fix | Delete
} else if ( false !== strpos( $render_slug, '_column_inner' ) ) {
[1699] Fix | Delete
self::_set_index( self::INDEX_COLUMN_INNER, self::_get_index( self::INDEX_COLUMN_INNER ) + 1 );
[1700] Fix | Delete
[1701] Fix | Delete
// Reset every module index inside column inner
[1702] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1703] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1704] Fix | Delete
[1705] Fix | Delete
} else if ( false !== strpos( $render_slug, '_column' ) && -1 === self::_get_index( self::INDEX_ROW ) ) {
[1706] Fix | Delete
self::_set_index( self::INDEX_COLUMN, self::_get_index( self::INDEX_COLUMN ) + 1 );
[1707] Fix | Delete
[1708] Fix | Delete
// Reset every module index inside column of specialty section
[1709] Fix | Delete
self::_set_index( self::INDEX_ROW_INNER, -1 );
[1710] Fix | Delete
self::_set_index( self::INDEX_COLUMN_INNER, -1 );
[1711] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1712] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1713] Fix | Delete
[1714] Fix | Delete
} else if ( false !== strpos( $render_slug, '_column' ) ) {
[1715] Fix | Delete
self::_set_index( self::INDEX_COLUMN, self::_get_index( self::INDEX_COLUMN ) + 1 );
[1716] Fix | Delete
[1717] Fix | Delete
// Reset every module index inside column of regular section
[1718] Fix | Delete
self::_set_index( self::INDEX_MODULE, -1 );
[1719] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1720] Fix | Delete
[1721] Fix | Delete
} else if ( $is_child_module ) {
[1722] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, self::_get_index( self::INDEX_MODULE_ITEM ) + 1 );
[1723] Fix | Delete
[1724] Fix | Delete
} else {
[1725] Fix | Delete
self::_set_index( self::INDEX_MODULE, self::_get_index( self::INDEX_MODULE ) + 1 );
[1726] Fix | Delete
[1727] Fix | Delete
// Reset module item index inside module
[1728] Fix | Delete
self::_set_index( self::INDEX_MODULE_ITEM, -1 );
[1729] Fix | Delete
}
[1730] Fix | Delete
[1731] Fix | Delete
$address = self::_get_index( self::INDEX_SECTION );
[1732] Fix | Delete
[1733] Fix | Delete
if ( -1 === self::_get_index( self::INDEX_ROW ) && -1 === self::_get_index( self::INDEX_ROW_INNER ) ) {
[1734] Fix | Delete
// Fullwidth & Specialty (without column inner) Section's module
[1735] Fix | Delete
$parts = array( self::_get_index( self::INDEX_COLUMN ), self::_get_index( self::INDEX_MODULE ) );
[1736] Fix | Delete
[1737] Fix | Delete
} else if ( 0 <= self::_get_index( self::INDEX_ROW_INNER ) ) {
[1738] Fix | Delete
// Specialty (inside column inner) Section's module
[1739] Fix | Delete
$parts = array( self::_get_index( self::INDEX_COLUMN ), self::_get_index( self::INDEX_ROW_INNER ), self::_get_index( self::INDEX_COLUMN_INNER ), self::_get_index( self::INDEX_MODULE ) );
[1740] Fix | Delete
[1741] Fix | Delete
} else {
[1742] Fix | Delete
// Regular section's module
[1743] Fix | Delete
$parts = array( self::_get_index( self::INDEX_ROW ), self::_get_index( self::INDEX_COLUMN ), self::_get_index( self::INDEX_MODULE ) );
[1744] Fix | Delete
}
[1745] Fix | Delete
[1746] Fix | Delete
foreach ( $parts as $part ) {
[1747] Fix | Delete
if ( $part > -1 ) {
[1748] Fix | Delete
$address .= ".{$part}";
[1749] Fix | Delete
}
[1750] Fix | Delete
}
[1751] Fix | Delete
[1752] Fix | Delete
if ( $is_child_module ) {
[1753] Fix | Delete
$address .= '.' . self::_get_index( self::INDEX_MODULE_ITEM );
[1754] Fix | Delete
}
[1755] Fix | Delete
[1756] Fix | Delete
return $address;
[1757] Fix | Delete
}
[1758] Fix | Delete
[1759] Fix | Delete
/**
[1760] Fix | Delete
* Resolves conditional defaults
[1761] Fix | Delete
*
[1762] Fix | Delete
* @param array $values Fields.
[1763] Fix | Delete
* @param string $render_slug
[1764] Fix | Delete
*
[1765] Fix | Delete
* @return array
[1766] Fix | Delete
*/
[1767] Fix | Delete
function resolve_conditional_defaults( $values, $render_slug = '' ) {
[1768] Fix | Delete
// Resolve conditional defaults for the FE
[1769] Fix | Delete
$resolved = $this->get_default_props();
[1770] Fix | Delete
[1771] Fix | Delete
if ( $render_slug && $render_slug !== $this->slug ) {
[1772] Fix | Delete
if ( $module = self::get_module( $render_slug, $this->get_post_type() ) ) {
[1773] Fix | Delete
$resolved = array_merge( $resolved, $module->get_default_props() );
[1774] Fix | Delete
}
[1775] Fix | Delete
}
[1776] Fix | Delete
[1777] Fix | Delete
foreach ( $resolved as $field_name => $field_default ) {
[1778] Fix | Delete
if ( is_array( $field_default ) && 2 === count( $field_default ) && ! empty( $field_default[0] ) ) {
[1779] Fix | Delete
if ( is_array( $field_default[1] ) ) {
[1780] Fix | Delete
// Looks like we have a conditional default
[1781] Fix | Delete
// Get $depend_field value or use the first default if undefined.
[1782] Fix | Delete
list ( $depend_field, $conditional_defaults ) = $field_default;
[1783] Fix | Delete
reset( $conditional_defaults );
[1784] Fix | Delete
$default_key = isset( $values[ $depend_field ] ) ? $values[ $depend_field ] : key( $conditional_defaults );
[1785] Fix | Delete
// Set the resolved default
[1786] Fix | Delete
$resolved[ $field_name ] = isset( $conditional_defaults[ $default_key ] ) ? $conditional_defaults[ $default_key ] : null;
[1787] Fix | Delete
} else if ( 'filter' === $field_default[0] ) {
[1788] Fix | Delete
$resolved[ $field_name ] = apply_filters( $field_default[1], $field_name );
[1789] Fix | Delete
}
[1790] Fix | Delete
}
[1791] Fix | Delete
}
[1792] Fix | Delete
[1793] Fix | Delete
// Add hover attributes
[1794] Fix | Delete
if ( ! is_array( $values ) ) {
[1795] Fix | Delete
return $resolved;
[1796] Fix | Delete
}
[1797] Fix | Delete
[1798] Fix | Delete
foreach ( $values as $attr => $value ) {
[1799] Fix | Delete
if ( ! preg_match( ET_Builder_Module_Helper_MultiViewOptions::get_regex_suffix(), $attr ) ) {
[1800] Fix | Delete
continue;
[1801] Fix | Delete
}
[1802] Fix | Delete
[1803] Fix | Delete
$resolved[ $attr ] = $value;
[1804] Fix | Delete
}
[1805] Fix | Delete
[1806] Fix | Delete
$skip_base_names = array(
[1807] Fix | Delete
'fb_built',
[1808] Fix | Delete
'_builder_version',
[1809] Fix | Delete
'hover_enabled',
[1810] Fix | Delete
);
[1811] Fix | Delete
[1812] Fix | Delete
$base_names = array();
[1813] Fix | Delete
[1814] Fix | Delete
foreach ( array_keys( $values ) as $attr ) {
[1815] Fix | Delete
$base_name = 0 === strpos( $attr, 'content' ) ? 'content' : ET_Builder_Module_Helper_MultiViewOptions::get_name_base( $attr );
[1816] Fix | Delete
[1817] Fix | Delete
if ( in_array( $base_name, $skip_base_names, true ) ) {
[1818] Fix | Delete
continue;
[1819] Fix | Delete
}
[1820] Fix | Delete
[1821] Fix | Delete
$base_names[ $base_name ] = $base_name;
[1822] Fix | Delete
}
[1823] Fix | Delete
[1824] Fix | Delete
// Set the props list that the value need to be inherited.
[1825] Fix | Delete
// to get the responsive content able to display content for tablet/phone/hover only mode
[1826] Fix | Delete
foreach ( $base_names as $base_name ) {
[1827] Fix | Delete
foreach ( array( 'hover', 'tablet', 'phone' ) as $mode ) {
[1828] Fix | Delete
$name_by_mode = ET_Builder_Module_Helper_MultiViewOptions::get_name_by_mode( $base_name, $mode );
[1829] Fix | Delete
[1830] Fix | Delete
if ( ! isset( $values[ $name_by_mode ] ) && ! isset( $resolved[ $name_by_mode ] ) ) {
[1831] Fix | Delete
// Set value inheritance flag for hover mode.
[1832] Fix | Delete
$this->mv_inherited_props[ $name_by_mode ] = $name_by_mode;
[1833] Fix | Delete
} else if( ! isset( $values[ $name_by_mode ] ) && isset( $resolved[ $name_by_mode ] ) && '' === $resolved[ $name_by_mode ] ) {
[1834] Fix | Delete
// Set value inheritance flag for tablet & phone mode.
[1835] Fix | Delete
$this->mv_inherited_props[ $name_by_mode ] = $name_by_mode;
[1836] Fix | Delete
}
[1837] Fix | Delete
}
[1838] Fix | Delete
}
[1839] Fix | Delete
[1840] Fix | Delete
return $resolved;
[1841] Fix | Delete
}
[1842] Fix | Delete
[1843] Fix | Delete
/**
[1844] Fix | Delete
* Get wrapper settings. Combining module-defined wrapper settings with default wrapper settings
[1845] Fix | Delete
*
[1846] Fix | Delete
* @since 3.1
[1847] Fix | Delete
*
[1848] Fix | Delete
* @param string $render_slug module slug
[1849] Fix | Delete
*
[1850] Fix | Delete
* @return array
[1851] Fix | Delete
*/
[1852] Fix | Delete
protected function get_wrapper_settings( $render_slug = '' ) {
[1853] Fix | Delete
global $et_fb_processing_shortcode_object;
[1854] Fix | Delete
[1855] Fix | Delete
// The following defaults are used on both frontend & builder
[1856] Fix | Delete
$defaults = array(
[1857] Fix | Delete
'parallax_background' => '',
[1858] Fix | Delete
'video_background' => '',
[1859] Fix | Delete
'attrs' => array(),
[1860] Fix | Delete
'inner_attrs' => array(
[1861] Fix | Delete
'class' => 'et_pb_module_inner',
[1862] Fix | Delete
),
[1863] Fix | Delete
);
[1864] Fix | Delete
[1865] Fix | Delete
// The following defaults are only used on frontend. VB handles these on ETBuilderInjectedComponent based on live props
[1866] Fix | Delete
// Note: get_parallax_image_background() and video_background() have to be called before module_classname()
[1867] Fix | Delete
if ( ! $et_fb_processing_shortcode_object ) {
[1868] Fix | Delete
$use_background_image = self::$_->array_get( $this->advanced_fields, 'background.use_background_image', false );
[1869] Fix | Delete
$use_background_video = self::$_->array_get( $this->advanced_fields, 'background.use_background_video', false );
[1870] Fix | Delete
$use_module_id = self::$_->array_get( $this->props, 'module_id', '' );
[1871] Fix | Delete
[1872] Fix | Delete
// Module might disable image background
[1873] Fix | Delete
if ( $use_background_image ) {
[1874] Fix | Delete
$defaults['parallax_background'] = $this->get_parallax_image_background();
[1875] Fix | Delete
}
[1876] Fix | Delete
[1877] Fix | Delete
// Module might disable video background
[1878] Fix | Delete
if ( $use_background_video ) {
[1879] Fix | Delete
$defaults['video_background'] = $this->video_background();
[1880] Fix | Delete
}
[1881] Fix | Delete
[1882] Fix | Delete
// Module might intentionally has custom id fields (ie. Module items)
[1883] Fix | Delete
if ( $use_module_id ) {
[1884] Fix | Delete
$defaults['attrs']['id'] = $this->module_id( false );
[1885] Fix | Delete
}
[1886] Fix | Delete
[1887] Fix | Delete
$defaults['attrs']['class'] = $this->module_classname( $render_slug );
[1888] Fix | Delete
}
[1889] Fix | Delete
[1890] Fix | Delete
if ( ! $defaults['attrs'] ) {
[1891] Fix | Delete
// Make sure we get an empty object when this is output as JSON later.
[1892] Fix | Delete
$defaults['attrs'] = new stdClass;
[1893] Fix | Delete
}
[1894] Fix | Delete
[1895] Fix | Delete
// Fill empty argument attributes by default values
[1896] Fix | Delete
return wp_parse_args( $this->wrapper_settings, $defaults );
[1897] Fix | Delete
}
[1898] Fix | Delete
[1899] Fix | Delete
/**
[1900] Fix | Delete
* Wrap module's rendered output with proper module wrapper. Ensuring module has consistent
[1901] Fix | Delete
* wrapper output which compatible with module attribute and background insertion.
[1902] Fix | Delete
*
[1903] Fix | Delete
* @since 3.1
[1904] Fix | Delete
*
[1905] Fix | Delete
* @param string $output Module's rendered output
[1906] Fix | Delete
* @param string $render_slug Slug of module that is used for rendering output
[1907] Fix | Delete
*
[1908] Fix | Delete
* @return string
[1909] Fix | Delete
*/
[1910] Fix | Delete
protected function _render_module_wrapper( $output = '', $render_slug = '' ) {
[1911] Fix | Delete
$wrapper_settings = $this->get_wrapper_settings( $render_slug );
[1912] Fix | Delete
$slug = $render_slug;
[1913] Fix | Delete
$outer_wrapper_attrs = $wrapper_settings['attrs'];
[1914] Fix | Delete
$inner_wrapper_attrs = $wrapper_settings['inner_attrs'];
[1915] Fix | Delete
[1916] Fix | Delete
/**
[1917] Fix | Delete
* Filters the HTML attributes for the module's outer wrapper. The dynamic portion of the
[1918] Fix | Delete
* filter name, '$slug', corresponds to the module's slug.
[1919] Fix | Delete
*
[1920] Fix | Delete
* @since 3.23 Add support for responsive video background.
[1921] Fix | Delete
* @since 3.1
[1922] Fix | Delete
*
[1923] Fix | Delete
* @param string[] $outer_wrapper_attrs
[1924] Fix | Delete
* @param ET_Builder_Element $module_instance
[1925] Fix | Delete
*/
[1926] Fix | Delete
$outer_wrapper_attrs = apply_filters( "et_builder_module_{$slug}_outer_wrapper_attrs", $outer_wrapper_attrs, $this );
[1927] Fix | Delete
[1928] Fix | Delete
/**
[1929] Fix | Delete
* Filters the HTML attributes for the module's inner wrapper. The dynamic portion of the
[1930] Fix | Delete
* filter name, '$slug', corresponds to the module's slug.
[1931] Fix | Delete
*
[1932] Fix | Delete
* @since 3.1
[1933] Fix | Delete
*
[1934] Fix | Delete
* @param string[] $inner_wrapper_attrs
[1935] Fix | Delete
* @param ET_Builder_Element $module_instance
[1936] Fix | Delete
*/
[1937] Fix | Delete
$inner_wrapper_attrs = apply_filters( "et_builder_module_{$slug}_inner_wrapper_attrs", $inner_wrapper_attrs, $this );
[1938] Fix | Delete
[1939] Fix | Delete
return sprintf(
[1940] Fix | Delete
'<div%1$s>
[1941] Fix | Delete
%2$s
[1942] Fix | Delete
%3$s
[1943] Fix | Delete
%6$s
[1944] Fix | Delete
%7$s
[1945] Fix | Delete
<div%4$s>
[1946] Fix | Delete
%5$s
[1947] Fix | Delete
</div>
[1948] Fix | Delete
</div>',
[1949] Fix | Delete
et_html_attrs( $outer_wrapper_attrs ),
[1950] Fix | Delete
$wrapper_settings['parallax_background'],
[1951] Fix | Delete
$wrapper_settings['video_background'],
[1952] Fix | Delete
et_html_attrs( $inner_wrapper_attrs ),
[1953] Fix | Delete
$output,
[1954] Fix | Delete
et_()->array_get( $wrapper_settings, 'video_background_tablet', '' ),
[1955] Fix | Delete
et_()->array_get( $wrapper_settings, 'video_background_phone', '' )
[1956] Fix | Delete
);
[1957] Fix | Delete
}
[1958] Fix | Delete
[1959] Fix | Delete
/**
[1960] Fix | Delete
* Resolves the values for dynamic attributes.
[1961] Fix | Delete
*
[1962] Fix | Delete
* @since 3.17.2
[1963] Fix | Delete
*
[1964] Fix | Delete
* @param array $original_attrs List of attributes
[1965] Fix | Delete
*
[1966] Fix | Delete
* @return array Processed attributes with resolved dynamic values.
[1967] Fix | Delete
*/
[1968] Fix | Delete
function process_dynamic_attrs( $original_attrs ) {
[1969] Fix | Delete
global $et_fb_processing_shortcode_object;
[1970] Fix | Delete
[1971] Fix | Delete
$attrs = $original_attrs;
[1972] Fix | Delete
$enabled_dynamic_attributes = $this->_get_enabled_dynamic_attributes( $attrs );
[1973] Fix | Delete
[1974] Fix | Delete
if ( is_array( $attrs ) ) {
[1975] Fix | Delete
foreach ( $attrs as $key => $value ) {
[1976] Fix | Delete
$attrs[ $key ] = $this->_resolve_value(
[1977] Fix | Delete
$this->get_the_ID(),
[1978] Fix | Delete
$key,
[1979] Fix | Delete
$value,
[1980] Fix | Delete
$enabled_dynamic_attributes,
[1981] Fix | Delete
$et_fb_processing_shortcode_object
[1982] Fix | Delete
);
[1983] Fix | Delete
}
[1984] Fix | Delete
}
[1985] Fix | Delete
[1986] Fix | Delete
return $attrs;
[1987] Fix | Delete
}
[1988] Fix | Delete
[1989] Fix | Delete
/**
[1990] Fix | Delete
* Prepares for and then calls the module's {@see self::render()} method.
[1991] Fix | Delete
*
[1992] Fix | Delete
* @since 3.23 Add support for generating responsive animation.
[1993] Fix | Delete
* @since 3.1 Renamed from `_shortcode_callback()` to `_render()`.
[1994] Fix | Delete
* @since 1.0
[1995] Fix | Delete
*
[1996] Fix | Delete
* @param array $attrs List of attributes
[1997] Fix | Delete
* @param string $content Content being processed
[1998] Fix | Delete
* @param string $render_slug Slug of module that is used for rendering output
[1999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function