validate([
'name' => 'required'
]);
Builder_page::insert(['name' => $request->name, 'created_at' => date('Y-m-d H:i:s')]);
return redirect(route('admin.pages'))->with('success', get_phrase('New home page layout has been added'));
}
function page_update(Request $request, $id)
{
$validated = $request->validate([
'name' => 'required'
]);
Builder_page::where('id', $id)->update(['name' => $request->name, 'updated_at' => date('Y-m-d H:i:s')]);
return redirect(route('admin.pages'))->with('success', get_phrase('Home page name has been updated'));
}
function page_delete($id)
{
Builder_page::where('id', $id)->delete();
return redirect(route('admin.pages'))->with('success', get_phrase('The page name has been updated'));
}
function page_status($id)
{
$query = Builder_page::where('id', $id);
if ($query->first()->status == 1) {
$query->update(['status' => 0]);
$response = [
'success' => get_phrase('Home page deactivated')
];
} else {
FrontendSetting::where('key', 'home_page')->update(['value' => $query->first()->identifier]);
$query->update(['status' => 1]);
$response = [
'success' => get_phrase('Home page activated')
];
}
Builder_page::where('id', '!=', $id)->update(['status' => 0]);
return json_encode($response);
}
function page_layout_edit($id)
{
return view('admin.page_builder.page_layout_edit', ['id' => $id]);
}
function page_layout_update(Request $request, $id)
{
$validated = $request->validate([
'developer_elements' => 'required',
'builder_elements' => 'required',
]);
$built_file_names = [];
foreach($request->builder_elements as $file_name => $builder_elements){
$built_file_names[] = $file_name;
$developer_file_content = file_get_contents(base_path('resources/views/components/home_made_by_developer/'.$file_name.'.blade.php'));
$developer_file_content = $this->replace_special_character($developer_file_content);
foreach($builder_elements as $key => $builder_element){
$developer_element = $request->developer_elements[$file_name][$key];
if($builder_element['tag'] == 'img'){
$builder_element_src = explode('/public/', $builder_element['src']);
if(array_key_exists(1, $builder_element_src)){
$updated_url_from_builder = "{{asset('".$builder_element_src[1]."')}}";
}else{
$updated_url_from_builder = "{{asset('".$builder_element['src']."')}}";
}
$prepared_single_element = str_replace($developer_element['src'], $updated_url_from_builder, $developer_element['element']);
$developer_file_content = str_replace($developer_element['element'], $prepared_single_element, $developer_file_content);
}elseif($builder_element['tag'] != 'null'){
$developer_element_tag = $this->replace_special_character($developer_element['element']);
$developer_element_content = $this->replace_special_character($developer_element['content']);
$prepared_single_element = str_replace($developer_element_content, '{{ get_phrase("'.$builder_element['content'].'") }}', $developer_element_tag);
$prepared_single_element = str_replace('(""', '("', $prepared_single_element);
$prepared_single_element = str_replace('"")', '")', $prepared_single_element);
$developer_file_content = str_replace($developer_element_tag, $prepared_single_element, $developer_file_content);
}
}
file_put_contents(base_path("resources/views/components/home_made_by_builder/".$file_name.'.blade.php'), $developer_file_content);
}
Builder_page::where('id', $id)->update(['html' => json_encode($built_file_names)]);
return redirect(route('admin.pages'))->with('success', get_phrase('Page layout has been updated'));
}
function replace_special_character($text){
if($text){
$text = str_replace('&', '&', $text);
}
return $text;
}
function replace_builder_content($html_1 = "", $html_2 = "")
{
//REPLACE $html_1 BY $html_2
// Extract src and builder-identity attributes from html_2
preg_match_all('/]*)builder-identity="(\d+)"[^>]*>(.*?)<\/[^>]+>/', $html_2, $matches2, PREG_SET_ORDER);
// Create an associative array to map builder-identity to content
$contentMap = [];
foreach ($matches2 as $match) {
$contentMap[$match[2]] = $match[3];
}
// Replace content in html_1 using the contentMap
$html_1 = preg_replace_callback('/<([^img][^>]*)builder-identity="(\d+)"[^>]*>(.*?)<\/[^>]+>/', function ($matches) use ($contentMap) {
$identity = $matches[2];
if (isset($contentMap[$identity])) {
return '<' . $matches[1] . 'builder-identity="' . $identity . '">' . $contentMap[$identity] . '<' . substr(strrchr($matches[0], '<'), 1);
}
return $matches[0];
}, $html_1);
return $html_1;
}
function find_builder_block_elements($html)
{
// Define a regex pattern to match all divs with builder-block-file-name attribute
$pattern = '/