initCustomOptions(); $this->hooks(); if ( !tpt_fs()->can_use_premium_code() ) { new PremiumSettingsManager(); } if ( !tpt_fs()->can_use_premium_code() ) { $template = 'upgrade-banner.php'; add_action( 'woocommerce_settings_' . self::SETTINGS_PAGE, function () use($template) { $this->getContainer()->getFileManager()->includeTemplate( 'admin/banners/' . $template, [ 'upgradeUrl' => tpt_fs_activation_url(), 'contactUsUrl' => TierPricingTablePlugin::getContactUsURL(), 'documentationUrl' => TierPricingTablePlugin::getDocumentationURL(), ] ); } ); } if ( tpt_fs()->can_use_premium_code() && !tpt_fs()->is_premium() ) { add_action( 'woocommerce_settings_' . self::SETTINGS_PAGE, function () { $this->getContainer()->getFileManager()->includeTemplate( 'admin/banners/free-version-used-premium-available.php' ); } ); } add_action( 'admin_enqueue_scripts', function () { $assetName = self::SETTINGS_PAGE . '_script'; wp_register_script( $assetName, $this->getContainer()->getFileManager()->locateJSAsset( 'admin/settings' ), array('jquery'), TierPricingTablePlugin::VERSION, true ); wp_enqueue_script( $assetName ); } ); } protected function initCustomOptions() { $this->getContainer()->add( 'settings.tpt_switch_option', new TPTSwitchOption() ); $this->getContainer()->add( 'settings.tpt_integration_option', new TPTIntegrationOption() ); $this->getContainer()->add( 'settings.tpt_feature_flag_option', new TPTFeatureFlagOption() ); $this->getContainer()->add( 'settings.tpt_text_template', new TPTTextTemplate() ); $this->getContainer()->add( 'settings.tpt_display_type', new TPTDisplayType() ); $this->getContainer()->add( 'settings.tpt_link_button', new TPTLinkButton() ); $this->getContainer()->add( 'settings.tpt_quantity_measurement', new TPTQuantityMeasurementField() ); $this->getContainer()->add( 'settings.tpt_multiple_fields', new TPTTableColumnsField() ); } protected function initSections() { } /** * Handle updating settings */ public function updateSettings() { woocommerce_update_options( $this->settings ); $this->getContainer()->getCache()->purge(); } /** * Init all settings */ public function initSettings() { $this->sections = apply_filters( 'tiered_pricing_table/settings/sections', array( new GeneralSection(), new CalculationLogic(), new AdvancedSection(), new IntegrationSection() ) ); foreach ( $this->sections as $section ) { if ( $section->isActive() ) { $this->settings = $section->getSettings(); break; } } } /** * Register hooks */ public function hooks() { add_action( 'init', array($this, 'initSettings') ); add_filter( 'woocommerce_settings_tabs_' . self::SETTINGS_PAGE, array($this, 'addTieredPricingTableSettings') ); add_filter( 'woocommerce_settings_tabs_array', array($this, 'addSettingsTab'), 50 ); add_action( 'woocommerce_update_options_' . self::SETTINGS_PAGE, array($this, 'updateSettings') ); add_action( 'woocommerce_settings_' . self::SETTINGS_PAGE, array($this, 'renderSections'), 99 ); } public function renderSections() { ?>