: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$completeCssOfPB .= $previousData['settingdata']['style_data'];
}//If Closed $previousData!="" && $ampforwp_pagebuilder_enable=='yes'
echo amppb_validateCss($completeCssOfPB);
function amppb_validateCss($css){
$css = str_replace('"', '"', $css);
$css = preg_replace('/@media([^\r\n,{}]+){\s*}/', "", $css);
$css = str_replace(array('.amppb-fluid','.amppb-fixed','.accordion-mod'), array('.ap-fl','.ap-fi','.apac'), $css);
$css = preg_replace('/(([a-z -]*:(\s)*;))/', "", $css);
$css = preg_replace('/((;[\s\n;]*;))/', ";", $css);
$css = preg_replace('/\s\n+/', "", $css);
return ampforwp_pb_autoCompileLess($css);
function ampforwp_pb_autoCompileLess($css)
$completeCssMinifies = array();
preg_match_all("/@media\b[^{]*({((?:[^{}]+|(?1))*)})/si",$css,$matches,PREG_SET_ORDER);//$MatchingString now hold all strings matching $pattern.
foreach ($matches as $key => $value) {
preg_match('/@media\s*(.*?)\s*{/', $value[0], $data);
if(!isset($completeCssMinifies[$data[1]])){ $completeCssMinifies[$data[1]] = ''; }
$completeCssMinifies[$data[1]] .= trim($value[2]);
// delete media query of cache
$css = preg_replace('/@media\b[^{]*({((?:[^{}]+|(?1))*)})/si', '', $css);
// add groups of media query at the end of CSS
foreach ($completeCssMinifies as $key => $value) {
preg_match_all('!\d+!', $key, $matches);
if($matches && !isset($medias[$matches[0][0]])){
$medias[$matches[0][0]] = $value;
if($matches && isset($medias[$matches[0][0]])){
$medias[$matches[0][0]] .= $value;
foreach ($medias as $id => $val)
$css .= "\n" . '@media(max-width:' . $id . 'px){' . $val . '}' . "\n";
//padding:\s*?(\d*px)\s*(\d*px)\s*(\d*px)\s*(\d*px)\s*?;
//"/(margin|padding):\s*?(\d*px)\s*(\d*px)\s*(\d*px)\s*(\d*px)\s*?\s*;/",
$css = preg_replace_callback(
"/(margin|padding):\s*?(auto|\d*(|px))\s*(auto|\d*(|px))\s*(auto|\d*(|px))\s*(auto|\d*(|px))\s*?\s*;/",
if( ($m[2]==$m[6]) && ($m[4] == $m[8]) ){
return $m[1].":".$m[2].";";
if(trim($m[0])==trim($m[1])){
return $m[1].":".$m[2].";";
return $m[1].":".$m[2]." ".$m[4].";";
// save CSS with groups of media query
function amppb_post_content($content){
global $post, $redux_builder_amp;
global $moduleTemplate, $layoutTemplate, $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'){
$previousData = json_decode($previousData,true);
if(is_array($previousData) && count($previousData['rows'])>0){
if(isset($previousData['settingdata']) && isset($previousData['settingdata']['front_class'])){
$mainContentClass = $previousData['settingdata']['front_class'];
$html = '<div class="amp_pb '.$mainContentClass.'">';
$previousData = sortByIndex($previousData['rows']);
foreach ($previousData as $key => $rowsData) {
$rowStartTemplate = $containerCommonSettings['front_template_start'];
$rowEndTemplate = $containerCommonSettings['front_template_end'];
foreach ($containerCommonSettings['fields'] as $key => $field) {
if($field['content_type']=='html'){
if($field['name'] == 'row_class'){
$replace .= 'ap_r_'.esc_attr($rowsData['id'])." ";
if(isset($rowsData['data'][$field['name']]) && !is_array($rowsData['data'][$field['name']])){
if($field['name']=='grid_type' && $rowsData['data'][$field['name']] == 'amppb-fluid' ){
}elseif($field['name']=='grid_type' && $rowsData['data'][$field['name']]=='amppb-fixed'){
$allowed_tags = '<p><a><b><strong><i><u><ul><ol><li><h1><h2><h3><h4><h5><h6><table><tr><th><td><em><span><div>';
$replace .= strip_tags($rowsData['data'][$field['name']],$allowed_tags);
if(! is_array($field['name']) && $field['content_type']=='html'){
$rowStartTemplate = str_replace('{{'.$field['name'].'}}', $replace, $rowStartTemplate);
$rowStartTemplate = ampforwp_replaceIfContentConditional($field['name'], $replace, $rowStartTemplate);
$html .= $rowStartTemplate;
//$html .= '<div class="row '.$customClass.'">';
if(count($rowsData['cell_data'])>0){
switch ($rowsData['cells']) {
$html .= ampforwp_rowData($rowsData['cell_data'],$rowsData['cells'],$moduleTemplate);
foreach($rowsData['cell_data'] as $colDevider){
$colData[$colDevider['cell_container']][] = $colDevider;
$html .= '<div class="col-2-wrap col">';
foreach($colData as $data)
$html .= ampforwp_rowData($data,$rowsData['cells'],$moduleTemplate);
$html .= $rowEndTemplate;
$content = do_shortcode($html);
function ampforwp_rowData($container,$col,$moduleTemplate){
$ampforwp_show_excerpt = true;
$parentclass= "col-".$col;
$parentclass = 'col '.$parentclass;
$html .= "<div class='$parentclass'>";
$container = sortByIndex($container);
foreach($container as $contentKey=>$contentArray){
if(!isset($moduleTemplate[$contentArray['type']])){
$moduleFrontHtml = $moduleTemplate[$contentArray['type']]['front_template'];
$moduleName = $moduleTemplate[$contentArray['type']]['name'];
if(isset($moduleTemplate[$contentArray['type']]['repeater'])){
$repeaterTemplates = $moduleTemplate[$contentArray['type']]['repeater']['front_template'];
$repeaterTemplatesArray = array();
if(!is_array($repeaterTemplates)){
$repeaterTemplatesArray[] = $repeaterTemplates;
$repeaterTemplatesArray = $repeaterTemplates;
foreach ($repeaterTemplatesArray as $repeaterKey => $repeaterTemplate) {
if(isset($contentArray['repeater']) && is_array($contentArray['repeater'])){
$repeaterUserContents = $contentArray['repeater'];
foreach ($repeaterUserContents as $repeaterUserKey => $repeaterUserValues) {
$repeaterFrontTemplate = $repeaterTemplate;
//reset($repeaterUserValues);
$repeaterVarIndex = key($repeaterUserValues);
$repeaterVarIndex = explode('_', $repeaterVarIndex);
$repeaterVarIndex = end($repeaterVarIndex);
foreach ($moduleTemplate[$contentArray['type']]['repeater']['fields'] as $moduleKey => $moduleField) {
if($moduleField['content_type']=='html'){
if(isset($repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex])){
$replace = $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex];
$replace = $moduleField['default'];
if($moduleField['type']=="upload"){
$image_alt = $imageUrl = $imageWidth = $imageHeight = $image_caption = '';
if( isset( $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex."_image_data"] ) ) {
$replace = $repeaterUserValues[$moduleField['name'].'_'.$repeaterVarIndex."_image_data"];
$imageWidth = $replace[1];
$imageHeight = $replace[2];
$image_alt = (isset($replace['alt'])? $replace['alt']: "");
$image_caption = (isset($replace['caption'])? $replace['caption']: "");
$imageDetails = ampforwp_get_attachment_id( $replace);
if(is_array($imageDetails)){
$imageUrl = $imageDetails[0];
$imageWidth = $imageDetails[1];
$imageHeight = $imageDetails[2];
$image_alt = (isset($imageDetails['alt'])? $imageDetails['alt']: "");
$image_caption = (isset($imageDetails['caption'])? $imageDetails['caption']: "");
$imageUrl = esc_url($imageUrl);
$imageWidth = esc_attr($imageWidth);
$imageHeight = esc_attr($imageHeight);
$image_alt = esc_html($image_alt);
$repeaterFrontTemplate = str_replace(
'{{'.$moduleField['name'].'}}',
if(strpos($repeaterFrontTemplate, '{{'.$moduleField['name'].'-thumbnail}}')!==false && isset($replace[0])){
$imageDetails = ampforwp_get_attachment_id( $replace[0], 'thumbnail');
$imageUrl = isset($imageDetails[0])? $imageDetails[0] : '';
$repeaterFrontTemplate = str_replace(
'{{'.$moduleField['name'].'-thumbnail}}',
$repeaterFrontTemplate = str_replace(
'{{image_width_'.$moduleField['name'].'}}',
array($imageWidth, $imageWidth),
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional('image_width', $imageWidth, $repeaterFrontTemplate);
$repeaterFrontTemplate = str_replace(
array('{{image_height}}',
'{{image_height_'.$moduleField['name'].'}}'
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional('image_height', $imageHeight, $repeaterFrontTemplate);
$repeaterFrontTemplate = str_replace(
'{{image_alt_'.$moduleField['name'].'}}'
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional('image_alt', $image_alt, $repeaterFrontTemplate);
$repeaterFrontTemplate = str_replace(
array('{{image_caption}}',
'{{image_caption_'.$moduleField['name'].'}}'
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional('image_caption', $image_caption, $repeaterFrontTemplate);
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional($moduleField['name'], $imageUrl, $repeaterFrontTemplate);
if($moduleField['type']=="text"){
$replace = esc_html($replace);
$replace = nl2br($replace);
$repeaterFrontTemplate = str_replace(
'{{'.$moduleField['name'].'}}',
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional($moduleField['name'], $replace, $repeaterFrontTemplate);
$repeaterFrontTemplate = str_replace('{{repeater_unique}}', $repeaterUniqueId, $repeaterFrontTemplate);
$repeaterFrontTemplate = ampforwp_replaceIfContentConditional('repeater_unique', $repeaterUniqueId, $repeaterFrontTemplate);
$repeaterFrontTemplate = str_replace('{{repeater-module-class}}', esc_attr($moduleField['name'].'_'.$repeaterVarIndex), $repeaterFrontTemplate);
$repeaterFields .= $repeaterFrontTemplate;
$repeaterUniqueId = $repeaterUniqueId-1;//Rememeber: loop is going to POST INCREMENT So for perfect counting need to decrese by 1
}//If Check for Fall back
if(!is_numeric($repeaterKey)){
$moduleFrontHtml = str_replace('{{repeater_'.$repeaterKey.'}}', trim($repeaterFields), $moduleFrontHtml);
$moduleFrontHtml = ampforwp_replaceIfContentConditional('repeater_'.$repeaterKey, trim($repeaterFields), $moduleFrontHtml);
$moduleFrontHtml = str_replace('{{repeater}}', $repeaterFields, $moduleFrontHtml);
$moduleFrontHtml = ampforwp_replaceIfContentConditional('repeater', trim($repeaterFields), $moduleFrontHtml);
//Conditional replacement for Repeaters
if(isset($moduleTemplate[$contentArray['type']]['fields']) && count($moduleTemplate[$contentArray['type']]['fields']) > 0) {
foreach($moduleTemplate[$contentArray['type']]['fields'] as $key => $field){
$repeaterReplcaement = '';
if(isset($contentArray[$field['name']])){
$repeaterReplcaement = $contentArray[$field['name']];
$repeaterFields = ampforwp_replaceIfContentConditional($field['name'], $repeaterReplcaement, $repeaterFields);
}//If for Module is repeater or not
$moduleDetails = $moduleTemplate[$contentArray['type']];
$moduleFrontHtml = pagebuilderGetGalleryFrontendView($moduleDetails,$contentArray);
foreach($moduleTemplate[$contentArray['type']]['fields'] as $key => $field){
$fieldValues[$field['name']] ='';
if(isset($contentArray[$field['name']])){
$fieldValues[$field['name']]= $contentArray[$field['name']];
$posts_offset = (integer) $fieldValues['posts_offset'];
$show_no_of_posts = (integer) $fieldValues['show_total_posts'];
if( !$show_no_of_posts ){
//'cat' => $fieldValues['category_selection'],
'posts_per_page' => $show_no_of_posts,
'offset' => $posts_offset,
'post_status'=> 'publish',
'post_type' => $fieldValues['post_type_selection']
if($fieldValues['pagination'] == 0){
array_push($args, "no_found_rows", true);
if ( (isset($fieldValues['taxonomy_selection']) && 'recent_option' !== $fieldValues['taxonomy_selection']) && (isset($fieldValues['category_selection']) && 'recent_option' !== $fieldValues['category_selection'])) {
$args['tax_query'] = array(
'taxonomy'=>$fieldValues['taxonomy_selection'],
'terms'=>$fieldValues['category_selection']
if ( isset($args['tax_query'][0]['taxonomy'] ) ){
if ( empty($args['tax_query'][0]['taxonomy'])) {
unset($args['tax_query']);
$args = apply_filters('ampforwp_content_module_args', $args, $fieldValues);
$the_query = new WP_Query( $args );
$totalLoopHtml = $moduleTemplate[$contentArray['type']]['front_loop_content'];
$totalLoopHtmlArray = ampforwp_contentHtml($the_query,$fieldValues,$totalLoopHtml);
$totalLoopHtml = $totalLoopHtmlArray['contents'];
$paginationLinksHtml = $totalLoopHtmlArray['pagination_links'];
if(isset($moduleTemplate[$contentArray['type']]['fields']) && count($moduleTemplate[$contentArray['type']]['fields']) > 0) {
foreach($moduleTemplate[$contentArray['type']]['fields'] as $key => $field){
$totalLoopHtml = ampforwp_replaceIfContentConditional($field['name'], $fieldValues[$field['name']], $totalLoopHtml);
$catName = 'Recent posts'; $cat_link = "#";
if(trim($fieldValues['category_selection']) != 'recent_option'){
$catName = get_cat_name($fieldValues['category_selection']);
$cat_link = get_category_link($fieldValues['category_selection']);
$cat_link = ampforwp_url_controller($cat_link);
$moduleFrontHtml = str_replace('{{content_category_title}}', urldecode($catName), $moduleFrontHtml);
$moduleFrontHtml = str_replace('{{content_category_link}}', $cat_link, $moduleFrontHtml);
$moduleFrontHtml = str_replace('{{content_title}}', urldecode($fieldValues['content_title']), $moduleFrontHtml);
$moduleFrontHtml = str_replace('{{category_selection}}', $totalLoopHtml, $moduleFrontHtml);
$moduleFrontHtml = str_replace('{{pagination_links}}', $paginationLinksHtml, $moduleFrontHtml);
/* Restore original Post Data */
if(isset($moduleTemplate[$contentArray['type']]['fields']) && count($moduleTemplate[$contentArray['type']]['fields']) > 0) {
foreach($moduleTemplate[$contentArray['type']]['fields'] as $key => $field){
$moduleFrontHtml = ampforwp_replaceIfContentConditional($field['name'], $fieldValues[$field['name']], $moduleFrontHtml);
$moduleFrontHtml = apply_filters("ampforwp_extension_pagebuilder_module_template", $moduleFrontHtml, $moduleTemplate[$contentArray['type']],$contentArray);
if(isset($moduleTemplate[$contentArray['type']]['fields']) && count($moduleTemplate[$contentArray['type']]['fields']) > 0) {
foreach ($moduleTemplate[$contentArray['type']]['fields'] as $key => $field) {
if($field['content_type']=='html'){
if(!empty($contentArray) && !isset($contentArray[$field['name']])){
$replace = getdefaultValue($field['name'], $moduleTemplate[$contentArray['type']]['fields']);
$replace = $contentArray[$field['name']];
if($field['type']=="upload"){
$image_alt = $imageUrl = $imageWidth = $imageHeight = $image_caption = $image_srcset = '';
if(isset($contentArray[$field['name']."_image_data"])){
$replace= $contentArray[$field['name']."_image_data"];
$imageWidth = $replace[1];
$imageHeight = $replace[2];
$image_alt = (isset($replace['alt'])? $replace['alt']: "");
$image_caption = (isset($replace['caption'])? $replace['caption']: "");
$image_srcset = $replace[0];
}elseif( $replace != "" ){
$imageDetails = ampforwp_get_attachment_id( $replace);
if(is_array($imageDetails)){
$imageUrl = $imageDetails[0];
$imageWidth = $imageDetails[1];
$imageHeight = $imageDetails[2];
$image_alt = (isset($imageDetails['alt'])? $imageDetails['alt']: "");
$image_caption = (isset($imageDetails['caption'])? $imageDetails['caption']: "");
$imageUrl = esc_url($imageUrl);
$imageWidth = esc_attr($imageWidth);
$imageHeight = esc_attr($imageHeight);
$image_alt = esc_html($image_alt);
$moduleFrontHtml = str_replace(
'{{'.$field['name'].'}}',
if(strpos($moduleFrontHtml, '{{'.$field['name'].'-thumbnail}}')!==false){
$imageDetails = ampforwp_get_attachment_id( $replace, 'thumbnail');
$imageUrl = isset($imageDetails[0])? $imageDetails[0] : '';
$moduleFrontHtml = str_replace(
'{{'.$field['name'].'-thumbnail}}',
$moduleFrontHtml = str_replace(
array('{{image_width}}','{{image_width_'.$field['name'].'}}'),