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/feature
File: dynamic-content.php
$content = '';
[1500] Fix | Delete
if ( ! empty( $meta_key ) ) {
[1501] Fix | Delete
$content = get_post_meta( $post_id, $meta_key, true );
[1502] Fix | Delete
$enable_html = $_->array_get( $settings, 'enable_html' );
[1503] Fix | Delete
if ( 'on' !== $enable_html ) {
[1504] Fix | Delete
$content = esc_html( $content );
[1505] Fix | Delete
}
[1506] Fix | Delete
}
[1507] Fix | Delete
break;
[1508] Fix | Delete
}
[1509] Fix | Delete
[1510] Fix | Delete
// Handle in post type URL options.
[1511] Fix | Delete
$post_types = et_builder_get_public_post_types();
[1512] Fix | Delete
foreach ( $post_types as $public_post_type ) {
[1513] Fix | Delete
$key = 'post_link_url_' . $public_post_type->name;
[1514] Fix | Delete
[1515] Fix | Delete
if ( $key !== $name ) {
[1516] Fix | Delete
continue;
[1517] Fix | Delete
}
[1518] Fix | Delete
[1519] Fix | Delete
$selected_post_id = $_->array_get( $settings, 'post_id', $def( $post_id, $name, 'post_id' ) );
[1520] Fix | Delete
$content = esc_url( get_permalink( $selected_post_id ) );
[1521] Fix | Delete
break;
[1522] Fix | Delete
}
[1523] Fix | Delete
[1524] Fix | Delete
// Wrap non plain text woo data to add custom selector for styling inheritance.
[1525] Fix | Delete
// It works by checking is the content has HTML tag.
[1526] Fix | Delete
if ( $is_woo && $content && preg_match( '/<\s?[^\>]*\/?\s?>/i', $content ) ) {
[1527] Fix | Delete
$content = sprintf( '<div class="woocommerce et-dynamic-content-woo et-dynamic-content-woo--%2$s">%1$s</div>', $content, $name );
[1528] Fix | Delete
}
[1529] Fix | Delete
[1530] Fix | Delete
if ( ! $wrapped ) {
[1531] Fix | Delete
$content = et_builder_wrap_dynamic_content( $post_id, $name, $content, $settings );
[1532] Fix | Delete
$wrapped = true;
[1533] Fix | Delete
}
[1534] Fix | Delete
[1535] Fix | Delete
return $content;
[1536] Fix | Delete
}
[1537] Fix | Delete
add_filter( 'et_builder_resolve_dynamic_content', 'et_builder_filter_resolve_default_dynamic_content', 10, 6 );
[1538] Fix | Delete
[1539] Fix | Delete
/**
[1540] Fix | Delete
* Resolve custom field dynamic content fields.
[1541] Fix | Delete
*
[1542] Fix | Delete
* @since 3.17.2
[1543] Fix | Delete
*
[1544] Fix | Delete
* @param string $content
[1545] Fix | Delete
* @param string $name
[1546] Fix | Delete
* @param array $settings
[1547] Fix | Delete
* @param string $context
[1548] Fix | Delete
* @param integer $post_id
[1549] Fix | Delete
*
[1550] Fix | Delete
* @return string
[1551] Fix | Delete
*/
[1552] Fix | Delete
function et_builder_filter_resolve_custom_field_dynamic_content( $content, $name, $settings, $post_id, $context, $overrides ) {
[1553] Fix | Delete
$post = get_post( $post_id );
[1554] Fix | Delete
$fields = et_builder_get_dynamic_content_fields( $post_id, $context );
[1555] Fix | Delete
[1556] Fix | Delete
if ( empty( $fields[ $name ]['meta_key'] ) ) {
[1557] Fix | Delete
return $content;
[1558] Fix | Delete
}
[1559] Fix | Delete
[1560] Fix | Delete
if ( 'edit' === $context && ! et_pb_is_allowed( 'read_dynamic_content_custom_fields' ) ) {
[1561] Fix | Delete
if ( 'text' === $fields[ $name ]['type'] ) {
[1562] Fix | Delete
return esc_html__( 'You don\'t have sufficient permissions to access this content.', 'et_builder' );
[1563] Fix | Delete
}
[1564] Fix | Delete
return '';
[1565] Fix | Delete
}
[1566] Fix | Delete
[1567] Fix | Delete
$_ = ET_Core_Data_Utils::instance();
[1568] Fix | Delete
$def = 'et_builder_get_dynamic_attribute_field_default';
[1569] Fix | Delete
$enable_html = $_->array_get( $settings, 'enable_html', $def( $post_id, $name, 'enable_html' ) );
[1570] Fix | Delete
[1571] Fix | Delete
if ( $post ) {
[1572] Fix | Delete
$content = get_post_meta( $post_id, $fields[ $name ]['meta_key'], true );
[1573] Fix | Delete
}
[1574] Fix | Delete
[1575] Fix | Delete
/**
[1576] Fix | Delete
* Provide a hook for third party compatibility purposes of formatting meta values.
[1577] Fix | Delete
*
[1578] Fix | Delete
* @since 3.17.2
[1579] Fix | Delete
*
[1580] Fix | Delete
* @param string $meta_value
[1581] Fix | Delete
* @param string $meta_key
[1582] Fix | Delete
* @param integer $post_id
[1583] Fix | Delete
*/
[1584] Fix | Delete
$content = apply_filters( 'et_builder_dynamic_content_meta_value', $content, $fields[ $name ]['meta_key'], $post_id );
[1585] Fix | Delete
[1586] Fix | Delete
// Sanitize HTML contents.
[1587] Fix | Delete
$content = wp_kses_post( $content );
[1588] Fix | Delete
[1589] Fix | Delete
if ( 'on' !== $enable_html ) {
[1590] Fix | Delete
$content = esc_html( $content );
[1591] Fix | Delete
}
[1592] Fix | Delete
[1593] Fix | Delete
$content = et_builder_wrap_dynamic_content( $post_id, $name, $content, $settings );
[1594] Fix | Delete
[1595] Fix | Delete
return $content;
[1596] Fix | Delete
}
[1597] Fix | Delete
add_filter( 'et_builder_resolve_dynamic_content', 'et_builder_filter_resolve_custom_field_dynamic_content', 10, 6 );
[1598] Fix | Delete
[1599] Fix | Delete
/**
[1600] Fix | Delete
* Resolve a dynamic group post content field for use during editing.
[1601] Fix | Delete
*
[1602] Fix | Delete
* @since 3.17.2
[1603] Fix | Delete
*
[1604] Fix | Delete
* @param string $field
[1605] Fix | Delete
* @param array $settings
[1606] Fix | Delete
* @param integer $post_id
[1607] Fix | Delete
* @param array $overrides
[1608] Fix | Delete
* @param boolean $is_content
[1609] Fix | Delete
*
[1610] Fix | Delete
* @return string
[1611] Fix | Delete
*/
[1612] Fix | Delete
function et_builder_filter_resolve_dynamic_post_content_field( $field, $settings, $post_id, $overrides = array(), $is_content = false ) {
[1613] Fix | Delete
return et_builder_resolve_dynamic_content( $field, $settings, $post_id, 'edit', $overrides, $is_content );
[1614] Fix | Delete
}
[1615] Fix | Delete
add_action( 'et_builder_resolve_dynamic_post_content_field', 'et_builder_filter_resolve_dynamic_post_content_field', 10, 5 );
[1616] Fix | Delete
[1617] Fix | Delete
/**
[1618] Fix | Delete
* Clean potential dynamic content from filter artifacts.
[1619] Fix | Delete
*
[1620] Fix | Delete
* @since 3.20.2
[1621] Fix | Delete
*
[1622] Fix | Delete
* @param string $value
[1623] Fix | Delete
*
[1624] Fix | Delete
* @return string
[1625] Fix | Delete
*/
[1626] Fix | Delete
function et_builder_clean_dynamic_content( $value ) {
[1627] Fix | Delete
// Strip wrapping <p></p> tag as it appears in shortcode content in certain cases (e.g. BB preview).
[1628] Fix | Delete
$value = preg_replace( '/^<p>(.*)<\/p>$/i', '$1', trim( $value ) );
[1629] Fix | Delete
return $value;
[1630] Fix | Delete
}
[1631] Fix | Delete
[1632] Fix | Delete
/**
[1633] Fix | Delete
* Parse a JSON-encoded string into an ET_Builder_Value instance or null on failure.
[1634] Fix | Delete
*
[1635] Fix | Delete
* @since 3.20.2
[1636] Fix | Delete
*
[1637] Fix | Delete
* @param string $json
[1638] Fix | Delete
*
[1639] Fix | Delete
* @return ET_Builder_Value|null
[1640] Fix | Delete
*/
[1641] Fix | Delete
function et_builder_parse_dynamic_content_json( $json ) {
[1642] Fix | Delete
$post_types = array_keys( et_builder_get_public_post_types() );
[1643] Fix | Delete
$dynamic_content = json_decode( $json, true );
[1644] Fix | Delete
$is_dynamic_content = is_array( $dynamic_content ) && isset( $dynamic_content['dynamic'] ) && (bool) $dynamic_content['dynamic'];
[1645] Fix | Delete
$has_content = is_array( $dynamic_content ) && isset( $dynamic_content['content'] ) && is_string( $dynamic_content['content'] );
[1646] Fix | Delete
$has_settings = is_array( $dynamic_content ) && isset( $dynamic_content['settings'] ) && is_array( $dynamic_content['settings'] );
[1647] Fix | Delete
$has_category_type = is_array( $dynamic_content ) && isset( $dynamic_content['settings'] ) && isset( $dynamic_content['settings']['category_type'] );
[1648] Fix | Delete
[1649] Fix | Delete
// When adding a section from library get_post_type() will not work, and post type has to be fetched from $_POST
[1650] Fix | Delete
$is_added_from_library = isset( $_POST['et_post_type'] );
[1651] Fix | Delete
[1652] Fix | Delete
if ( ! $is_dynamic_content || ! $has_content || ! $has_settings ) {
[1653] Fix | Delete
return null;
[1654] Fix | Delete
}
[1655] Fix | Delete
[1656] Fix | Delete
// Replaces layout_category with proper category_type depending on the post type on which the layout is added
[1657] Fix | Delete
if ( $has_category_type && 'post_categories' === $dynamic_content['content'] && ! 0 === substr_compare( $dynamic_content['settings']['category_type'], "_tag", - 4 ) ) {
[1658] Fix | Delete
if ( $is_added_from_library ) {
[1659] Fix | Delete
$correct_post_type = sanitize_text_field( $_POST['et_post_type'] );
[1660] Fix | Delete
$correct_post_type = in_array( $correct_post_type, $post_types ) ? $correct_post_type : 'post';
[1661] Fix | Delete
} else {
[1662] Fix | Delete
$correct_post_type = get_post_type();
[1663] Fix | Delete
$correct_post_type = in_array( $correct_post_type, $post_types ) ? $correct_post_type : 'post';
[1664] Fix | Delete
}
[1665] Fix | Delete
[1666] Fix | Delete
if ( 'post' === $correct_post_type ) {
[1667] Fix | Delete
$dynamic_content['settings']['category_type'] = 'category';
[1668] Fix | Delete
} else {
[1669] Fix | Delete
$dynamic_content['settings']['category_type'] = $correct_post_type . '_category';
[1670] Fix | Delete
}
[1671] Fix | Delete
}
[1672] Fix | Delete
[1673] Fix | Delete
return new ET_Builder_Value(
[1674] Fix | Delete
(bool) $dynamic_content['dynamic'],
[1675] Fix | Delete
sanitize_text_field( $dynamic_content['content'] ),
[1676] Fix | Delete
array_map( 'wp_kses_post', $dynamic_content['settings'] )
[1677] Fix | Delete
);
[1678] Fix | Delete
}
[1679] Fix | Delete
[1680] Fix | Delete
/**
[1681] Fix | Delete
* Convert a value to an ET_Builder_Value representation.
[1682] Fix | Delete
*
[1683] Fix | Delete
* @since 3.17.2
[1684] Fix | Delete
*
[1685] Fix | Delete
* @param string $content
[1686] Fix | Delete
*
[1687] Fix | Delete
* @return ET_Builder_Value
[1688] Fix | Delete
*/
[1689] Fix | Delete
function et_builder_parse_dynamic_content( $content ) {
[1690] Fix | Delete
$json = et_builder_clean_dynamic_content( $content );
[1691] Fix | Delete
$json = preg_replace( '/^@ET-DC@(.*?)@$/', '$1', $json );
[1692] Fix | Delete
$dynamic_content = et_builder_parse_dynamic_content_json( $json );
[1693] Fix | Delete
[1694] Fix | Delete
if ( null === $dynamic_content ) {
[1695] Fix | Delete
$json = base64_decode( $json );
[1696] Fix | Delete
$dynamic_content = et_builder_parse_dynamic_content_json( $json );
[1697] Fix | Delete
}
[1698] Fix | Delete
[1699] Fix | Delete
if ( null === $dynamic_content ) {
[1700] Fix | Delete
return new ET_Builder_Value( false, wp_kses_post( $content ), array() );
[1701] Fix | Delete
}
[1702] Fix | Delete
[1703] Fix | Delete
return $dynamic_content;
[1704] Fix | Delete
}
[1705] Fix | Delete
[1706] Fix | Delete
/**
[1707] Fix | Delete
* Serialize dynamic content.
[1708] Fix | Delete
*
[1709] Fix | Delete
* @since 3.20.2
[1710] Fix | Delete
*
[1711] Fix | Delete
* @param bool $dynamic
[1712] Fix | Delete
* @param string $content
[1713] Fix | Delete
* @param mixed[] $settings
[1714] Fix | Delete
*
[1715] Fix | Delete
* @return string
[1716] Fix | Delete
*/
[1717] Fix | Delete
function et_builder_serialize_dynamic_content( $dynamic, $content, $settings ) {
[1718] Fix | Delete
// JSON_UNESCAPED_SLASHES is only supported from 5.4.
[1719] Fix | Delete
$options = defined( 'JSON_UNESCAPED_SLASHES' ) ? JSON_UNESCAPED_SLASHES : 0;
[1720] Fix | Delete
$result = wp_json_encode( array(
[1721] Fix | Delete
'dynamic' => $dynamic,
[1722] Fix | Delete
'content' => $content,
[1723] Fix | Delete
// Force object type for keyed arrays as empty arrays will be encoded to
[1724] Fix | Delete
// javascript arrays instead of empty objects.
[1725] Fix | Delete
'settings' => (object) $settings,
[1726] Fix | Delete
), $options );
[1727] Fix | Delete
[1728] Fix | Delete
// Use fallback if needed
[1729] Fix | Delete
$result = 0 === $options ? str_replace( '\/', '/', $result ) : $result;
[1730] Fix | Delete
[1731] Fix | Delete
return '@ET-DC@' . base64_encode( $result ) . '@';
[1732] Fix | Delete
}
[1733] Fix | Delete
[1734] Fix | Delete
/**
[1735] Fix | Delete
* Strip dynamic content.
[1736] Fix | Delete
*
[1737] Fix | Delete
* @since 4.0.9
[1738] Fix | Delete
*
[1739] Fix | Delete
* @param string $content
[1740] Fix | Delete
*
[1741] Fix | Delete
* @return string
[1742] Fix | Delete
*/
[1743] Fix | Delete
function et_builder_strip_dynamic_content( $content ) {
[1744] Fix | Delete
return preg_replace( '/@ET-DC@(.*?)@/', '', $content );
[1745] Fix | Delete
}
[1746] Fix | Delete
[1747] Fix | Delete
/**
[1748] Fix | Delete
* Reencode legacy dynamic content in post excerpts.
[1749] Fix | Delete
*
[1750] Fix | Delete
* @since 3.20.2
[1751] Fix | Delete
*
[1752] Fix | Delete
* @param string $post_excerpt
[1753] Fix | Delete
* @param integer $post_id
[1754] Fix | Delete
*
[1755] Fix | Delete
* @return string
[1756] Fix | Delete
*/
[1757] Fix | Delete
function et_builder_reencode_legacy_dynamic_content_in_excerpt( $post_excerpt, $post_id ) {
[1758] Fix | Delete
$json = '/
[1759] Fix | Delete
\{ # { character
[1760] Fix | Delete
(?: # non-capturing group
[1761] Fix | Delete
[^{}] # anything that is not a { or }
[1762] Fix | Delete
| # OR
[1763] Fix | Delete
(?R) # recurse the entire pattern
[1764] Fix | Delete
)* # previous group zero or more times
[1765] Fix | Delete
\} # } character
[1766] Fix | Delete
/x';
[1767] Fix | Delete
[1768] Fix | Delete
return preg_replace_callback( $json, 'et_builder_reencode_legacy_dynamic_content_in_excerpt_callback', $post_excerpt );
[1769] Fix | Delete
}
[1770] Fix | Delete
add_filter( 'et_truncate_post', 'et_builder_reencode_legacy_dynamic_content_in_excerpt', 10, 2 );
[1771] Fix | Delete
[1772] Fix | Delete
/**
[1773] Fix | Delete
* Callback to reencode legacy dynamic content for preg_replace_callback.
[1774] Fix | Delete
*
[1775] Fix | Delete
* @since 3.20.2
[1776] Fix | Delete
*
[1777] Fix | Delete
* @param array $matches
[1778] Fix | Delete
*
[1779] Fix | Delete
* @return string
[1780] Fix | Delete
*/
[1781] Fix | Delete
function et_builder_reencode_legacy_dynamic_content_in_excerpt_callback( $matches ) {
[1782] Fix | Delete
$value = et_builder_parse_dynamic_content_json( $matches[0] );
[1783] Fix | Delete
return null === $value ? $matches[0] : $value->serialize();
[1784] Fix | Delete
}
[1785] Fix | Delete
[1786] Fix | Delete
/**
[1787] Fix | Delete
* Resolve dynamic content in post excerpts instead of showing raw JSON.
[1788] Fix | Delete
*
[1789] Fix | Delete
* @since 3.17.2
[1790] Fix | Delete
*
[1791] Fix | Delete
* @param string $post_excerpt
[1792] Fix | Delete
* @param integer $post_id
[1793] Fix | Delete
*
[1794] Fix | Delete
* @return string
[1795] Fix | Delete
*/
[1796] Fix | Delete
function et_builder_resolve_dynamic_content_in_excerpt( $post_excerpt, $post_id ) {
[1797] Fix | Delete
// Use an obscure acronym named global variable instead of an anonymous function as we are
[1798] Fix | Delete
// targeting PHP 5.2.
[1799] Fix | Delete
global $_et_brdcie_post_id;
[1800] Fix | Delete
[1801] Fix | Delete
$_et_brdcie_post_id = $post_id;
[1802] Fix | Delete
$post_excerpt = preg_replace_callback( '/@ET-DC@.*?@/', 'et_builder_resolve_dynamic_content_in_excerpt_callback', $post_excerpt );
[1803] Fix | Delete
$_et_brdcie_post_id = 0;
[1804] Fix | Delete
[1805] Fix | Delete
return $post_excerpt;
[1806] Fix | Delete
}
[1807] Fix | Delete
add_filter( 'et_truncate_post', 'et_builder_resolve_dynamic_content_in_excerpt', 10, 2 );
[1808] Fix | Delete
[1809] Fix | Delete
/**
[1810] Fix | Delete
* Callback to resolve dynamic content for preg_replace_callback.
[1811] Fix | Delete
*
[1812] Fix | Delete
* @since 3.17.2
[1813] Fix | Delete
*
[1814] Fix | Delete
* @param array $matches
[1815] Fix | Delete
*
[1816] Fix | Delete
* @return string
[1817] Fix | Delete
*/
[1818] Fix | Delete
function et_builder_resolve_dynamic_content_in_excerpt_callback( $matches ) {
[1819] Fix | Delete
global $_et_brdcie_post_id;
[1820] Fix | Delete
return et_builder_parse_dynamic_content( $matches[0] )->resolve( $_et_brdcie_post_id );
[1821] Fix | Delete
}
[1822] Fix | Delete
[1823] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function