$config * @return bool */ public function enabled(array $config): bool { return Arr::ternary($config, $this->key, $this->default()); } public function default(): bool { return $this->default; } /** * Calls when the Module is Disabled (Switched Off) * * @return void */ public function off(): void { } /** * Calls Always (Enabled or Disabled) * * @return void */ public function always(): void { // Register Categories add_filter('DayTidy/F__DayTidy/Modules__categories/categories', [$this, 'registerCategory']); // Validate Modules Form add_filter('DayTidy/F__DayTidy/Menu/Menus/Settings/AjaxHandlerModules__validate/results', [$this, 'validate'], 10, 2); } /** * Disable the Module if Parent is Disabled * @param mixed[] $data * @return mixed[] */ public function disable(array $data): array { // Parent is disabled if ($this->parent && Arr::falsy($data, $this->parent)) { $data[$this->key] = 0; } return $data; } /** * @param mixed[] $categories * @return mixed[] */ public function registerCategory(array $categories): array { ['category' => $category, 'name' => $name] = $this->category(); $categories[$category] = (object) [ 'key' => $category, 'label' => $name, ]; return $categories; } public function cat(string $key = 'name'): string { ['category' => $category, 'name' => $name] = $this->category(); return $key === 'name' ? $name : $category; } /** * Validate the data on modules form save * * @param mixed[] $data * @see Base::validate() */ public function validate(AjaxValidationResult $results, array $data): AjaxValidationResult { return $results; } /** * Generate switcher HTML of modules form * @param mixed[] $config * @return string */ public function switcher(array $config): string { // Option Form $option_form = $this->optionForm(); // Include in Page Footer if (Str::trim($option_form)) { Assets::footer(function () use ($option_form) { // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped -- DayTidy Kses sanitizes the complete generated module form markup. echo Kses::form($this->view()->render('partials.modules.option-form', [ 'module' => $this, 'form' => $option_form, ])); // phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped }); } return $this->view()->render('partials.modules.switcher', [ 'config' => $config, 'module' => $this, 'option_form' => $option_form, ]); } public function optionForm(?FormGenerator $generator = null): string { return ''; } }