PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.5
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.5
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
← All changes | app/Http/Controllers/DashboardController.php +40 -8 1.6.1 → 1.6.5 View file →
@@ -63,11 +63,25 @@
63 63 $completed++;
64 64 $steps['product_info']['completed'] = true;
65 65 }
66 66
67 - if ($this->isAllPageSetUpDone($settings)) {
67 + $missingPage = $this->getMissingPageSetup($settings);
68 +
69 + if (!$missingPage) {
68 70 $completed++;
69 71 $steps['page_setup']['completed'] = true;
72 + } else {
73 + // Let whichever plugin registered the missing page (via
74 + // fluent_cart/generatable_pages) decide where it should be
75 + // resolved. Core stays agnostic of third-party settings screens.
76 + $steps['page_setup']['url'] = apply_filters(
77 + 'fluent_cart/dashboard/page_setup_redirect_url',
78 + $steps['page_setup']['url'],
79 + [
80 + 'missing_page' => $missingPage,
81 + 'base_url' => $baseUrl,
82 + ]
83 + );
70 84 }
71 85
72 86 if (!$this->isAnyPaymentModuleEnabled()) {
73 87 $steps['setup_payments']['completed'] = false;
@@ -148,18 +162,36 @@
148 162 return Product::query()->count() > 0;
149 163 }
150 164
151 165
152 - private function isAllPageSetUpDone(array $settings): bool
166 + private function getMissingPageSetup(array $settings): ?array
153 167 {
154 - $pages = (new Pages())->getGeneratablePage();
155 - foreach ($pages as $pageKey => $page) {
156 - $pageKey = "{$pageKey}_page_id";
157 - if (empty(Arr::get($settings, $pageKey))) {
158 - return false;
168 + $pagesInstance = new Pages();
169 + $pages = $pagesInstance->getGeneratablePage();
170 +
171 + // Core pages must be checked first regardless of the order a
172 + // fluent_cart/generatable_pages listener leaves the filtered array
173 + // in, so an add-on can never take priority over a missing core page.
174 + $orderedKeys = array_unique(array_merge(
175 + array_keys($pagesInstance->corePages()),
176 + array_keys($pages)
177 + ));
178 +
179 + foreach ($orderedKeys as $pageKey) {
180 + if (!isset($pages[$pageKey])) {
181 + continue;
159 182 }
183 +
184 + $settingKey = "{$pageKey}_page_id";
185 + if (empty(Arr::get($settings, $settingKey))) {
186 + return array_merge($pages[$pageKey], [
187 + 'key' => $pageKey,
188 + 'setting_key' => $settingKey,
189 + ]);
190 + }
160 191 }
161 - return true;
192 +
193 + return null;
162 194 }
163 195
164 196 private function isAnyPaymentModuleEnabled(): bool
165 197 {