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 = '/]*builder-block-file-name="([^"]+)"[^>]*>(.*?)<\/div>/s'; // Use preg_match_all to find all matches preg_match_all($pattern, $html, $matches, PREG_SET_ORDER); // Collect the file name and HTML content inside each matched element $elements = []; foreach ($matches as $match) { $elements[] = [ 'file_name' => $match[1], // The value of the builder-block-file-name attribute 'content' => $match[2] // The inner HTML content of the div ]; } return $elements; } function developer_file_content(){ //return developer file content $developer_file_content = ''; $files = array_diff(scandir(base_path('resources/views/components/home_made_by_developer')), array('.', '..')); foreach ($files as $file){ $file_name = str_replace('.blade.php', '', $file); $developer_file_content .= '
'.file_get_contents(base_path('resources/views/components/home_made_by_developer/'.$file)).'
'; } return $developer_file_content; } function page_layout_image_update(Request $request) { $remove_file_arr = explode('/', $request->remove_file); $previous_image_path = 'uploads/home-page-builder/' . end($remove_file_arr); remove_file($previous_image_path); $image_path = FileUploader::upload($request->file, 'uploads/home-page-builder'); return get_image($image_path); } function preview($page_id) { $page_data['page_id'] = $page_id; return view('frontend.default.home.preview', $page_data); } }