HEX
Server: Apache
System: Linux beta.alfanet.ee 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: busines1 (1252)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /home-ssd1/busines1/public_html/wp-content/plugins/woo-mailerlite/admin/WooMailerLiteAdmin.php
<?php

class WooMailerLiteAdmin
{
    public static $instance;

    public static function instance()
    {
        if (!empty(static::$instance)) {
            return static::$instance;
        }
        static::$instance = new self();
        return static::$instance;
    }


    public function addPluginAdminMenu()
    {
        add_submenu_page('woocommerce', 'MailerLite', 'MailerLite', 'manage_options', 'mailerlite',
            [$this, 'wooMailerLiteSettingsPageCallback']);
    }

    public function enqueueScripts($hook)
    {
        if ($hook !== 'woocommerce_page_mailerlite') {
            return;
        }
        wp_enqueue_script('woo-mailerlite-vue-cdn', 'https://cdn.jsdelivr.net/npm/vue@3.5.13/dist/vue.global.prod.js', [], null, true);
        wp_localize_script('woo-mailerlite-admin', 'woo_mailerlite_admin_data', array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'language' => get_locale()
        ));

        wp_enqueue_script('style2-script', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js');
        wp_enqueue_script('woo-mailerlite-admin', plugin_dir_url(__FILE__) . '../admin/assets/js/ml-app.js', ['jquery', 'woo-mailerlite-vue-cdn'], null, true);

    }

    public function enqueueStyles($hook) {
        if ($hook !== 'woocommerce_page_mailerlite') {
            return;
        }
        wp_enqueue_style('woo-mailerlite-admin-css', plugin_dir_url( __FILE__ ) . '../admin/assets/css/admin.css', false, WOO_MAILERLITE_VERSION);
        wp_enqueue_style('style2-style', 'https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css');
        wp_enqueue_style('style2-mailerlite-style', plugin_dir_url( __FILE__ ) . '../public/css/mailerlite-select2.css',false, WOO_MAILERLITE_VERSION);
    }

    public function wooMailerLiteSettingsPageCallback()
    {
        $falseApi = false;
        if (!WooMailerLiteCache::get('valid_api')) {
            $response = WooMailerLiteApi::client()->ping();
            if ($response->status === 401) {
                $falseApi = true;
                WooMailerLiteOptions::deleteAll();
            } else {
                WooMailerLiteCache::set('valid_api', true, 86400);
            }
        }
        $untrackedResources = WooMailerLiteCategory::getUntrackedCategoriesCount() + WooMailerLiteProduct::getUntrackedProductsCount() +  WooMailerLiteCustomer::getAll()->count();

        wp_localize_script('woo-mailerlite-vue-cdn', 'woo_mailerlite_admin_data', [
            'ajaxUrl' => admin_url('admin-ajax.php'),
            'productsUrl' => esc_url(admin_url('edit.php?post_type=product')),
            'currentStep' =>  WooMailerLiteOptions::get('wizardStep', 0),
            'account' => [
                'isConnected' => false,
                'accountName' => WooMailerLiteOptions::get('accountName', ''),
                'platform' => WooMailerLiteApi::getApiType() ?? 1,
            ],
            'selectedGroup' => WooMailerLiteOptions::get('group', []),
            'woo_mailerlite_admin_nonce' => wp_create_nonce( 'woo_mailerlite_admin' ),
            'ignoredProducts' => (array)WooMailerLiteOptions::get('ignored_products', []),
            'sync' => [
                'lastCustomerSync' => 0,
                'newMLSync' => true,
                'syncInProgress' =>  WooMailerLiteCache::get('manual_sync', false),
                'totalUntrackedResources' => $untrackedResources,
                'totalTrackedResources' => 0
            ],
            'settings' => WooMailerLiteOptions::get('settings', []),
            'syncFields' => WooMailerLiteOptions::get('syncFields'),
            'asyncSync' => class_exists('ActionScheduler'),
            'falseApi' => $falseApi,
            'debugMode' => WooMailerLiteOptions::get('debugMode')
        ]);

        require_once __DIR__ . '/../views/mailerlite-app.php';
    }

    public function addModuleTypeScript($tag, $handle, $src)
    {
        if ('woo-mailerlite-admin' === $handle) {
            // modify the <script> tag to include type="module"
            $tag = '<script type="module" src="' . esc_url($src) . '"></script>';
        }

        return $tag;
    }

    public function ignoreProductBlock()
    {
        echo '<div class="inline-edit-group">';
        woocommerce_wp_checkbox(array(
            'id'          => 'ml_ignore_product',
            'label'       => __('MailerLite e-commerce automations', 'woo-mailerlite'),
            'description' => __('Ignore product', 'woo-mailerlite'),
            'value'       => '',
            'desc_tip'    => false
        ));
        echo '</div>';
    }

    public function populateIgnoreProductBlock($column, $post_id)
    {
        $ignoredProducts = WooMailerLiteOptions::get('ignored_products', []);

        switch ($column) {
            case 'name' :
                ?>
                <div class="hidden ml_ignore_product_inline" id="ml_ignore_product_inline_<?php echo $post_id; ?>">
                    <div id="_ml_ignore_product"><?php echo array_key_exists($post_id, $ignoredProducts) ? 'yes' : 'no' ?></div>
                </div>
                <?php

                break;
        }
    }

    public function abss()
    {
        global $post;
        ?>
        <div id="woo-ml-product-data" class="panel woocommerce_options_panel">
            <?php

            $ignoredProducts = WooMailerLiteOptions::get('ignored_products', []);

            woocommerce_wp_checkbox(array(
                'id'          => 'ml_ignore_product',
                'label'       => __('Ignore Product', 'woo-mailerlite'),
                'description' => __('Select if you do not wish to trigger any e-commerce automations for this product',
                    'woo-mailerlite'),
                'value'       => array_key_exists($post->ID, $ignoredProducts) ? 'yes' : 'no',
                'desc_tip'    => true,
            ));
            ?>
        </div>
        <?php
    }

    public function woo_ml_product_data_tab($product_data_tabs)
    {
        $product_data_tabs['woo-ml'] = array(
            'label'    => __('MailerLite', 'woo-mailerlite'),
            'target'   => 'woo-ml-product-data',
            'class' => 'woo_mailerlite_product_tab',
            'priority' => 99
        );

        return $product_data_tabs;
    }

    public function handleCustomProductQuery( $query, $query_vars ) {

        if ( isset( $query_vars['metaQuery'] ) ) {
            $query['meta_query'][] = $query_vars['metaQuery'];
        }

        return $query;
    }

    public function addSettingsOptionInPluginList($links)
    {
        $settings_url = admin_url('admin.php?page=mailerlite');
        $settings_link = '<a href="' . esc_url($settings_url) . '">Settings</a>';
        array_unshift($links, $settings_link);
        return $links;
    }
}