: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
add_action('pre_amp_render_post','amp_pagebuilder_content');
function amp_pagebuilder_content(){
global $post, $redux_builder_amp;
$postId = (is_object($post) ? $post->ID : '');
if( ampforwp_is_front_page() ){
$postId = ampforwp_get_frontpage_id();
if ( ampforwp_polylang_front_page() ) {
$front_page_id = get_option('page_on_front');
$postId = pll_get_post($front_page_id);
add_filter( 'amp_pagebuilder_content', 'ampforwp_insert_pb_content' );
function bodyClassForAMPPagebuilder($classes, $class){
$classes[] = 'amppb-pages';
function ampforwp_insert_pb_content( $content ){
$new_content = amppb_post_content($content);
add_action('amp_post_template_head','ampforwp_pagebuilder_header_html_output',11);
function ampforwp_pagebuilder_header_html_output(){
//To load css of modules which are in use
global $redux_builder_amp, $moduleTemplate, $post, $containerCommonSettings;
$postId = (is_object($post)? $post->ID: '');
if( ampforwp_is_front_page() ){
$postId = ampforwp_get_frontpage_id();
$previousData = get_post_meta($postId,'amp-page-builder');
$previousData = isset($previousData[0])? $previousData[0]: null;
$ampforwp_pagebuilder_enable = get_post_meta($postId,'ampforwp_page_builder_enable', true);
if($previousData!="" && $ampforwp_pagebuilder_enable=='yes'){
$previousData = json_decode($previousData,true);
if(isset($previousData['settingdata']['scripts_data']) && $previousData['settingdata']['scripts_data']!=""){
preg_match_all("/<script(?:(?!src).)*>(.*?)<\/script>/",$previousData['settingdata']['scripts_data'], $outremove, PREG_SET_ORDER);
if($outremove && count($outremove)>0){
foreach($outremove as $unwanted){
$previousData['settingdata']['scripts_data'] = str_replace($unwanted[0], '', $previousData['settingdata']['scripts_data']);
echo $previousData['settingdata']['scripts_data']; // nothing to escaped
add_action('amp_post_template_data','amp_pagebuilder_script_loader',100);
function amp_pagebuilder_script_loader($scriptData){
//To load css of modules which are in use
global $redux_builder_amp, $moduleTemplate, $post, $containerCommonSettings;
$postId = (is_object($post)? $post->ID: '');
if( ampforwp_is_front_page() ){
$postId = ampforwp_get_frontpage_id();
$previousData = get_post_meta($postId,'amp-page-builder');
$previousData = isset($previousData[0])? $previousData[0]: null;
$ampforwp_pagebuilder_enable = get_post_meta($postId,'ampforwp_page_builder_enable', true);
if($previousData!="" && $ampforwp_pagebuilder_enable=='yes'){
$previousData = json_decode($previousData,true);
if(isset($previousData['rows']) && count($previousData['rows'])>0){
foreach ($previousData['rows'] as $key => $rowsData) {
$container = $rowsData['cell_data'];
$moduleCommonCss = array();
foreach($container as $contentArray){
if(!isset($moduleTemplate[$contentArray['type']])){
foreach($moduleTemplate[$contentArray['type']]['fields'] as $modulefield){
if(isset($contentArray[$modulefield['name']])){
$replaceModule = $contentArray[$modulefield['name']];
if($modulefield['content_type']=='js'){
if(isset($modulefield['required']) && count($modulefield['required'])>0){
foreach($modulefield['required'] as $requiredKey=>$requiredValue){
$userSelectedvalue = (isset($contentArray[$requiredKey])? $contentArray[$requiredKey]: "");
if($userSelectedvalue != $requiredValue){
if ($replaceModule !="" && empty( $scriptData['amp_component_scripts'][$modulefield['label']] ) ) {
$scriptData['amp_component_scripts'][$modulefield['label']] = $replaceModule;
}//content_type Check if Closed
add_action('amp_post_template_css','amp_pagebuilder_content_styles',100);
function amp_pagebuilder_content_styles(){
//To load css of modules which are in use
global $redux_builder_amp, $moduleTemplate, $post, $containerCommonSettings;
$postId = (is_object($post)? $post->ID: '');
if( ampforwp_is_front_page() ) {
$postId = ampforwp_get_frontpage_id();
if ( ampforwp_polylang_front_page() ) {
$front_page_id = get_option('page_on_front');
$postId = pll_get_post($front_page_id);
$previousData = get_post_meta($postId,'amp-page-builder');
$previousData = isset($previousData[0])? $previousData[0]: null;
$ampforwp_pagebuilder_enable = get_post_meta($postId,'ampforwp_page_builder_enable', true);
if($previousData!="" && $ampforwp_pagebuilder_enable=='yes'){
$completeCssOfPB .= '.amp_pb{display: inline-block;width: 100%;}
.row{display: inline-flex;width: 100%;}
.col-2{ width: calc(50% - 5px);float:left;}
.col-2-wrap .col-2:nth-child(1){
.col-2-wrap .col-2:nth-child(2){
.amp_blurb{text-align:center}
.amp_blurb amp-img{margin: 0 auto;}
.amp_btn{text-align:center}
.amp_btn a{background: #f92c8b;color: #fff;padding: 9px 20px;border-radius: 3px;display: inline-block;box-shadow: 1px 1px 4px #ccc;}
@media(max-width:1024px){
.amppb-fixed{width:100%;}
.col-2{width:100%;float:none;margin-bottom:10%;}
.col-2-wrap .col-2:nth-child(1){padding-right:0px;}
.col-2-wrap .col-2:nth-child(2){padding-left:0px;}
.sbs .col-2{width: calc(50% - 5px);float: left;margin:2px;}
add_filter('ampforwp_body_class', 'bodyClassForAMPPagebuilder',10,2);
$previousData = json_decode($previousData,true);
if(isset($previousData['rows']) && count($previousData['rows'])>0){
foreach ($previousData['rows'] as $key => $rowsData) {
$container = $rowsData['cell_data'];
$rowContainer = $rowsData['data'];
if(isset($containerCommonSettings['front_css'])){
$rowCss = $containerCommonSettings['front_css'];
if( true == $redux_builder_amp['amp-rtl-select-option'] && isset($containerCommonSettings['front_rtl_css'])) {
$rowCss .= $containerCommonSettings['front_rtl_css'];
$rowCss = str_replace('{{row-class}}', '.ap_r_'.$rowsData['id'], $rowCss);
foreach($containerCommonSettings['fields'] as $rowfield){
//if($rowfield['content_type']=='css'){
if(isset($rowContainer[$rowfield['name']])){
$replaceRow = $rowContainer[$rowfield['name']];
}elseif(!isset($rowContainer[$rowfield['name']])){
$replaceRow = $rowfield['default'];
if(isset($rowfield['required']) && count($rowfield['required'])>0){
foreach($rowfield['required'] as $requiredKey=>$requiredValue){
if(isset($rowContainer[$requiredKey])){
$valueCheckWith = $rowContainer[$requiredKey];
if( is_array($valueCheckWith) ) {
$valueCheckWith = $rowContainer[$requiredKey][0];
if( $valueCheckWith !== $requiredValue){
switch ($rowfield['type']) {
isset($replaceRow['top'])&&
isset($replaceRow['right'])&&
isset($replaceRow['bottom'])&&
isset($replaceRow['left'])
$replaceSpacing = $replaceRow['top']." ".$replaceRow['right']." ".$replaceRow['bottom']." ".$replaceRow['left']." ";
$rowCss = str_replace('{{'.$rowfield['name'].'}}', $replaceSpacing, $rowCss);
//$imageDetails = ampforwp_get_attachment_id( $replaceRow);
$image_alt = $imageUrl = $imageWidth = $imageHeight = '';
if(isset($rowContainer[$rowfield['name']."_image_data"])){
$replace= $rowContainer[$rowfield['name']."_image_data"];
$imageWidth = $replace[1];
$imageHeight = $replace[2];
$image_alt = (isset($replace['alt'])? $replace['alt']: "");;
}elseif($replaceRow != ""){
$imageDetails = ampforwp_get_attachment_id( $replaceRow);
if(is_array($imageDetails)){
$imageUrl = (isset($imageDetails[0])? $imageDetails[0]: "");
$imageWidth = (isset($imageDetails[1])? $imageDetails[1]: "");
$imageHeight = (isset($imageDetails[3])? $imageDetails[2]: "");
$image_alt = (isset($imageDetails['alt'])? $imageDetails['alt']: "");
'{{'.$rowfield['name'].'}}',
array('{{image_width}}','{{image_width_'.$rowfield['name'].'}}'),
array($imageWidth,$imageWidth),
array('{{image_height}}','{{image_height_'.$rowfield['name'].'}}'),
array($imageHeight,$imageHeight),
array('{{image_alt}}','{{image_alt_'.$rowfield['name'].'}}'),
array($image_alt,$image_alt),
$rowCss = str_replace('{{'.$rowfield['name'].'}}', $replaceRow, $rowCss);
if(is_array($replaceRow)){
if(count($replaceRow)>0){
if(count($replaceRow)==1){
$rowCss = str_replace('{{'.$rowfield['name'].'}}', $replaceRow[0], $rowCss);
$rowCss = str_replace('{{'.$rowfield['name'].'}}', '', $rowCss);
/*foreach ($rowContainer[$rowfield['name']] as $key => $cssValue) {
$rowCss = str_replace('{{'.$rowfield['name'].'}}', $replaceRow, $rowCss);
$rowCss = ampforwp_replaceIfContentConditional($rowfield['name'], $replaceRow, $rowCss);
$completeCssOfPB .= $rowCss;
}//Row Settings Css foreach closed
$moduleCommonCss = array();
foreach($container as $contentArray){
if(isset($moduleTemplate[$contentArray['type']]['front_css'])){
$completeCss = $moduleTemplate[$contentArray['type']]['front_css'];
if( true == $redux_builder_amp['amp-rtl-select-option'] && isset($moduleTemplate[$contentArray['type']]['front_rtl_css'])) {
$completeCss .= $moduleTemplate[$contentArray['type']]['front_rtl_css'];
$completeCss = str_replace("{{module-class}}", '.ap_m_'.$contentArray['cell_id'], $completeCss );
if(isset($moduleTemplate[$contentArray['type']]['front_common_css'])){
$moduleCommonCss[$moduleTemplate[$contentArray['type']]['name']] = $moduleTemplate[$contentArray['type']]['front_common_css'];
if(!isset($moduleTemplate[$contentArray['type']])){
foreach($moduleTemplate[$contentArray['type']]['fields'] as $modulefield){
if(isset($contentArray[$modulefield['name']])){
$replaceModule = $contentArray[$modulefield['name']];
$replaceModule = getdefaultValue($modulefield['name'],$moduleTemplate[$contentArray['type']]['fields']);
if($modulefield['type']=='icon-selector'){
add_amp_icon(array($replaceModule));
if($modulefield['content_type']=='css'){
if(isset($modulefield['required']) && count($modulefield['required'])>0){
foreach($modulefield['required'] as $requiredKey=>$requiredValue){
//if value not set than get default value
if(!isset($contentArray[$requiredKey])){
$userSelectedvalue = getdefaultValue($requiredKey,$moduleTemplate[$contentArray['type']]['fields']);
$userSelectedvalue = $contentArray[$requiredKey];
if(is_array($requiredValue) && !in_array($userSelectedvalue, $requiredValue) ){
$requiredCheck[] = false;
}elseif($userSelectedvalue != $requiredValue){
$requiredCheck[] = false;
$requiredCheck = array_unique($requiredCheck);
if(count($requiredCheck)>1 && $requiredCheck[0] != true){
switch ($modulefield['type']) {
if(isset($replaceModule['top'])
&& isset($replaceModule['right'])
&& isset($replaceModule['bottom'])
&& isset($replaceModule['left'])
$replacespacing = $replaceModule['top']." ".$replaceModule['right']." ".$replaceModule['bottom']." ".$replaceModule['left']." ";
$completeCss = str_replace('{{'.$modulefield['name'].'}}', $replacespacing, $completeCss);
$image_alt = $imageUrl = $imageWidth = $imageHeight = '';
if(isset($contentArray[$modulefield['name']."_image_data"])){
$replace= $contentArray[$modulefield['name']."_image_data"];
$imageWidth = $replace[1];
$imageHeight = $replace[2];
$image_alt = (isset($replace['alt'])? $replace['alt']: "");;
}elseif($replaceModule != ""){
$imageDetails = ampforwp_get_attachment_id( $replaceModule);
if(is_array($imageDetails)){
$imageUrl = (isset($imageDetails[0])? $imageDetails[0]: "");
$imageWidth = (isset($imageDetails[1])? $imageDetails[1]: "");
$imageHeight = (isset($imageDetails[3])? $imageDetails[2]: "");
$image_alt = (isset($imageDetails['alt'])? $imageDetails['alt']: "");
$completeCss = str_replace(
'{{'.$modulefield['name'].'}}',
$completeCss = str_replace(
array('{{image_width}}','{{image_width_'.$modulefield['name'].'}}'),
array($imageWidth,$imageWidth),
$completeCss = str_replace(
array('{{image_height}}','{{image_height_'.$modulefield['name'].'}}'),
array($imageHeight,$imageHeight),
$completeCss = str_replace(
array('{{image_alt}}','{{image_alt_'.$modulefield['name'].'}}'),
array($image_alt,$image_alt),
if(is_array($replaceModule)){
/*foreach ($contentArray[$modulefield['name']] as $key => $cssValue) {
$completeCss = str_replace('{{'.$modulefield['name'].'}}', $replaceModule, $completeCss);
$completeCss = ampforwp_replaceIfContentConditional($modulefield['name'], $replaceModule, $completeCss);
$completeCssOfPB .= $completeCss;
if(isset($moduleTemplate[$contentArray['type']]['repeater'])){
if(isset($contentArray['repeater']) && is_array($contentArray['repeater'])){
$repeaterUserContents = $contentArray['repeater'];
foreach ($repeaterUserContents as $repeaterUserKey => $repeaterUserValues) {
//reset($repeaterUserValues);
$repeaterVarIndex = key($repeaterUserValues);
$repeaterVarIndex = explode('_', $repeaterVarIndex);
$repeaterVarIndex = end($repeaterVarIndex);
foreach ($moduleTemplate[$contentArray['type']]['repeater']['fields'] as $moduleKey => $moduleField) {
if($moduleField['type']=='icon-selector'){
add_amp_icon(array( $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex]));
//Check if there is no front css
if(!isset($moduleTemplate[$contentArray['type']]['repeater']['front_css'])){
$repeaterFrontCss = $moduleTemplate[$contentArray['type']]['repeater']['front_css'];
$repeaterFrontCss = str_replace("{{acc_head_type}}", $moduleTemplate["accordion-mod"]["repeater"]["fields"][1]["default"] , $repeaterFrontCss );
if($moduleField['content_type']=='css'){
$repeaterFrontCss = str_replace("{{module-class}}", '.ap_m_'.$contentArray['cell_id'], $repeaterFrontCss );
$repeaterFrontCss = str_replace('{{repeater-module-class}}', $moduleField['name'].'_'.$repeaterVarIndex, $repeaterFrontCss);
$replace = $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex];
if($modulefield['type']=='spacing'){
if(isset($replaceModule['top'])
&& isset($replaceModule['right'])
&& isset($replaceModule['bottom'])
&& isset($replaceModule['left'])
$replacespacing = $replaceModule['top']." ".$replaceModule['right']." ".$replaceModule['bottom']." ".$replaceModule['left']." ";
$repeaterFrontCss = str_replace('{{'.$modulefield['name'].'}}', $replacespacing, $repeaterFrontCss);
$repeaterFrontCss = str_replace(
'{{'.$moduleField['name'].'}}',
$repeaterCss = $moduleTemplate[$contentArray['type']]['repeater']['front_css'];
if(strpos($repeaterCss, '{{'.$moduleField['name'].'}}')!==false){
$repeaterFrontCss = $repeaterCss;
$replace_with = $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex];
$repeaterFrontCss = str_replace('{{'.$moduleField['name'].'}}',$replace_with, $repeaterFrontCss);
$repeaterFieldsCss .= $repeaterFrontCss;
}//If Check for Fall back
}//If for Module is repeater or not
$completeCssOfPB .= $repeaterFieldsCss;
}//foreach content closed
if(count($moduleCommonCss)>0){
$completeCssOfPB .= implode(" ", $moduleCommonCss);
}//ic container check closed
}//foreach closed complete data
}//if closed count($previousData['rows'])>0
if(isset($previousData['settingdata']['style_data']) && $previousData['settingdata']['style_data']!=""){