Uname: Linux premium264.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
Software: LiteSpeed
PHP version: 8.3.22 [ PHP INFO ] PHP os: Linux
Server Ip: 69.57.162.13
Your Ip: 216.73.216.219
User: workvvfb (1129) | Group: workvvfb (1084)
Safe Mode: OFF
Disable Function:
NONE

name : UrlManagerPlugin.php
<?php namespace Premmerce\UrlManager;

use Premmerce\UrlManager\Admin\Admin;
use Premmerce\UrlManager\Admin\Settings;
use Premmerce\UrlManager\Frontend\Frontend;
use Premmerce\SDK\V2\FileManager\FileManager;
use Premmerce\UrlManager\Addons\AddonManager;
use Premmerce\SDK\V2\Notifications\AdminNotifier;

/**
 * Class UrlManagerPlugin
 *
 * @package Premmerce\UrlManager
 */
class UrlManagerPlugin
{
    const DOMAIN = 'premmerce-url-manager';

    const VERSION = '2.3.5';

    /**
   * FileManager
     *
     * @var FileManager
     */
    private $fileManager;

    /**
     * Notifier
     *
     * @var AdminNotifier
     */
    private $notifier;

    /**
     * PluginManager constructor.
     *
     * @param $mainFile
     */
    public function __construct($mainFile)
    {
        $this->fileManager = new FileManager($mainFile);
        $this->notifier    = new AdminNotifier();

        add_action('init', array($this, 'loadTextDomain'));
        add_action('admin_init', array($this, 'checkRequirePlugins'));

        premmerce_wpm_fs()->add_filter('freemius_pricing_js_path', array($this, 'cutomFreemiusPricingPage'));

        add_action('before_woocommerce_init', array( $this, 'declareHPOSCompatibility' ));
    }

    /**
     * Get Plugin Version
     *
     * @return void
     */
    public static function getPluginVersion()
    {
        if (defined('self::VERSION')) {
            return self::VERSION;
        }
        return '1.0.0';
    }

    /**
     * Custom pricing page
     */
    public function cutomFreemiusPricingPage($default_pricing_js_path)
    {
        $pluginDir       = $this->fileManager->getPluginDirectory();
        $pricing_js_path = $pluginDir . '/assets/admin/js/pricing-page/freemius-pricing.js';

        return $pricing_js_path;
    }

    /**
     * Run plugin part
     */
    public function run()
    {
        $valid = count($this->validateRequiredPlugins()) === 0;
        ( new Updater() )->update();

        if (is_admin()) {
            new Admin($this->fileManager);
        }

        if ($valid) {
            if (! is_admin()) {
                new Frontend();
            }
            ( new PermalinkListener() )->registerFilters();
            ( new AddonManager() )->initAddons();
        }
    }

    /**
     * Fired when the plugin is activated
     */
    public function activate()
    {
        flush_rewrite_rules();
    }

    /**
     * Fired when the plugin is deactivated
     */
    public function deactivate()
    {
        $this->deleteUsersBannerMeta();
        flush_rewrite_rules();
    }

    /**
     * Fired during plugin uninstall
     */
    public static function uninstall()
    {
        delete_option(Updater::DB_OPTION);
        delete_option(Settings::OPTION_FLUSH);
        delete_option(Settings::OPTION_DISABLED);
        delete_option(Settings::OPTIONS);
        
        flush_rewrite_rules();
    }

    private function deleteUsersBannerMeta()
    {
        global $wpdb;

        $wpdb->delete($wpdb->usermeta, array('meta_key' => Admin::META_IGNORE_BANNER));
    }

    /**
     * Load plugin translations
     */
    public function loadTextDomain()
    {
        $name = $this->fileManager->getPluginName();
        load_plugin_textdomain('premmerce-url-manager', false, $name . '/languages/');
    }

    /**
     * Check required plugins and push notifications
     */
    public function checkRequirePlugins()
    {
        /* translators: %%1$s: our plugin name, %2$s another plugin name */
        $message = __('The %1$s plugin requires %2$s plugin to be active!', 'premmerce-url-manager');

        $plugins = $this->validateRequiredPlugins();

        if (count($plugins)) {
            foreach ($plugins as $plugin) {
                $error = sprintf($message, 'WooCommerce Permalink Manager', $plugin);
                $this->notifier->push($error, AdminNotifier::ERROR, false);
            }
        }
    }

    /**
     * Validate required plugins
     *
     * @return array
     */
    private function validateRequiredPlugins()
    {
        $plugins = array();

        if (! function_exists('is_plugin_active')) {
            include_once ABSPATH . 'wp-admin/includes/plugin.php';
        }

        /**
         * Check if WooCommerce is active
         **/
        if (! (is_plugin_active('woocommerce/woocommerce.php') || is_plugin_active_for_network('woocommerce/woocommerce.php'))) {
            $plugins[] = '<a target="_blank" href="https://wordpress.org/plugins/woocommerce/">WooCommerce</a>';
        }

        return $plugins;
    }

    /**
     * Declare compatibility for WC HPOS
     *
     * @link https://github.com/woocommerce/woocommerce/wiki/High-Performance-Order-Storage-Upgrade-Recipe-Book#declaring-extension-incompatibility
     * @return void
     */
    public function declareHPOSCompatibility()
    {
        if (class_exists(\Automattic\WooCommerce\Utilities\FeaturesUtil::class)) {
            \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
                'custom_order_tables',
                $this->fileManager->getMainFile(),
                true
            );
        }
    }
}
© 2025 GrazzMean