PluginProbe
Tiered Pricing Table for WooCommerce / 8.0.2
Tiered Pricing Table for WooCommerce v8.0.2
8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 All 91 releases
tier-pricing-table / src / Addons / AbstractAddon.php

AbstractAddon.php in Tiered Pricing Table for WooCommerce 8.0.2, at src/Addons/AbstractAddon.php

63 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace TierPricingTable\Addons;
2
3 use TierPricingTable\Core\ServiceContainerTrait;
4 use TierPricingTable\Settings\CustomOptions\TPTFeatureFlagOption;
5 use TierPricingTable\Settings\CustomOptions\TPTSwitchOption;
6 use TierPricingTable\Settings\Settings;
7
8 abstract class AbstractAddon {
9
10 use ServiceContainerTrait;
11
12 public function __construct() {
13 add_filter( 'tiered_pricing_table/settings/advanced_settings', array(
14 $this,
15 'addToAddonsSettings',
16 ) );
17 }
18
19 public function addToAddonsSettings( $addons ) {
20 $addons[] = array(
21 'title' => $this->getName(),
22 'id' => Settings::SETTINGS_PREFIX . '_addon_' . $this->getSlug(),
23 'default' => $this->isActiveByDefault() ? 'yes' : 'no',
24 'desc' => $this->getDescription(),
25 'icon' => $this->getIcon(),
26 'type' => TPTFeatureFlagOption::FIELD_TYPE,
27 );
28
29 return $addons;
30 }
31
32 public function isEnabled(): bool {
33
34 $settings = $this->getContainer()->getSettings();
35 $addonKey = '_addon_' . $this->getSlug();
36
37 return $settings->get( $addonKey, $this->isActiveByDefault() ? 'yes' : 'no' ) === 'yes';
38 }
39
40 protected function isActiveByDefault(): bool {
41 return true;
42 }
43
44 /**
45 * Whether the add-on with this slug is switched on, without needing its instance.
46 */
47 public static function isAddonEnabled( string $slug, bool $activeByDefault = true ): bool {
48 $settings = \TierPricingTable\Core\ServiceContainer::getInstance()->getSettings();
49
50 return 'yes' === $settings->get( '_addon_' . $slug, $activeByDefault ? 'yes' : 'no' );
51 }
52
53 abstract public function getName();
54
55 abstract public function getDescription();
56
57 abstract public function getIcon(): string;
58
59 abstract public function getSlug();
60
61 abstract public function run();
62 }
63