PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.3.26
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.3.26
1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 trunk All 48 releases
fluent-cart / app / Http / Controllers / OnboardingController.php

OnboardingController.php in FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler 1.3.26, at app/Http/Controllers/OnboardingController.php

129 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentCart\App\Http\Controllers;
4
5 use FluentCart\Api\CurrencySettings;
6 use FluentCart\Api\Invokable\DummyProduct;
7 use FluentCart\Api\StoreSettings;
8 use FluentCart\App\CPT\Pages;
9 use FluentCart\App\Helpers\Helper as HelperService;
10 use FluentCart\App\Http\Requests\CreatePageRequest;
11 use FluentCart\Framework\Foundation\Async;
12 use FluentCart\Framework\Http\Request\Request;
13 use FluentCart\Framework\Support\Arr;
14 use FluentCart\Framework\Support\Str;
15
16 class OnboardingController extends Controller
17 {
18 public function index(Request $request): \WP_REST_Response
19 {
20 $defaultSettings = (new StoreSettings())->toArray();
21
22 $pages = new Pages();
23
24 foreach ($pages->getGeneratablePage(true) as $pageName => $page) {
25
26 if (empty(Arr::get($defaultSettings, "{$pageName}_page_id"))) {
27 Arr::set(
28 $defaultSettings,
29 "{$pageName}_page_id",
30 Arr::get($page, 'page_id')
31 );
32 }
33
34 }
35
36 return $this->response->sendSuccess([
37 'pages' => Pages::getPages('', true),
38 'currencies' => CurrencySettings::getFormattedCurrencies(),
39 'default_settings' => $defaultSettings
40 ]);
41 }
42
43 public function createPages(Request $request): \WP_REST_Response
44 {
45 $excluded = [];
46 $pages = new Pages();
47 $storeSettings = new StoreSettings();
48
49 foreach ($pages->getGeneratablePage() as $pageName => $page) {
50 $pageId = $storeSettings->get("{$pageName}_page_id");
51 if (!empty($pageId) && !Pages::isPage($pageId)) {
52 $excluded[] = $pageName;
53 }
54 }
55
56 $pages->createPages($excluded);
57
58 return $this->index($request);
59 }
60
61 public function createPage(CreatePageRequest $request): \WP_REST_Response
62 {
63 $content = sanitize_text_field($request->get('content'));
64 $pageKey = $content;
65 $content = Str::of($content)->replaceFirst('_page_id', '')->toString();
66 $saveSettings = filter_var($request->get('save_settings'), FILTER_VALIDATE_BOOLEAN);
67
68 $generateablePages = (new Pages())->getGeneratablePage();
69 $pageData = Arr::get($generateablePages, $content, null);
70
71 if (!empty($pageData)) {
72 $page = [
73 'post_type' => 'page',
74 'post_title' => sanitize_text_field($request->get('page_name')),
75 'post_content' => $pageData['content'],
76 'post_status' => 'publish'
77 ];
78
79 $pageId = (string)wp_insert_post($page);
80
81 if ($saveSettings) {
82 (new StoreSettings())->save([
83 $pageKey => $pageId
84 ]);
85
86 flush_rewrite_rules(true);
87 delete_option('rewrite_rules');
88 // if ($content === 'customer_profile') {
89 // flush_rewrite_rules(true);
90 // delete_option('rewrite_rules');
91 // }
92 }
93
94 return $this->response->sendSuccess([
95 'page_id' => $pageId,
96 'page_name' => $pageData['title'],
97 'link' => get_page_link($pageId)
98 ]);
99 }
100
101 return $this->response->sendError([
102 'message' => __('Unable to create page', 'fluent-cart')
103 ]);
104 }
105
106 public function saveSettings(Request $request)
107 {
108 $settings = array_merge((new StoreSettings())->toArray(), $request->all());
109
110 $savedStoreSettings = (new StoreSettings())->save(
111 Arr::except($settings, 'category')
112 );
113
114 if ($category = $request->get('category')) {
115 Async::call(DummyProduct::class, ['category' => $category]);
116 }
117
118 if ($savedStoreSettings) {
119 return $this->response->sendSuccess([
120 'message' => __('Store has been updated successfully', 'fluent-cart')
121 ]);
122 }
123
124 return $this->response->sendError([
125 'errors' => __('Failed to update!', 'fluent-cart')
126 ], 400);
127 }
128 }
129