%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/higroup/1618475457800/wp-content/plugins/metform/utils/banner/
Upload File :
Create Path :
Current File : /var/www/html/higroup/1618475457800/wp-content/plugins/metform/utils/banner/banner.php

<?php

namespace Wpmet\Libs;

defined('ABSPATH') || exit;

if (!class_exists('\Wpmet\Libs\Banner')) :

    class Banner
    {

        protected $script_version = '1.1.0';

        protected $key = 'wpmet_banner';
        protected $data;
        protected $last_check;
        protected $check_interval = (3600 * 6);

        protected $plugin_screens;

        protected $text_domain;
        protected $filter_string;
        protected $filter_array = [];
        protected $api_url;


        public function get_version()
        {
            return $this->script_version;
        }

        public function get_script_location()
        {
            return __FILE__;
        }

        public function call()
        {
            add_action('admin_head', [$this, 'show_banner']);
        }

    

        public function show_banner()
        {
            $this->get_banner();

            if (!empty($this->data->error)) {
                return;
            }


            if (empty($this->data)) {
                return;
            }

            foreach ($this->data as $banner) {

                if ($banner->type != 'banner') {
                    continue;
                }

                if (!empty($this->filter_array) && $this->in_blacklist($banner, $this->filter_array)) {
                    continue;
                }
                
                if (date('d/m/y',$banner->start) <= date('d/m/y',time()) && date('d/m/y',time()) <= date('d/m/y',$banner->end)) {

                    $screen = get_current_screen();
                    if ($this->is_correct_screen_to_show($banner->screen, $screen->id) && class_exists('\Oxaim\Libs\Notice')) {

                        $inline_css = '';
                        $banner_unique_id = ((isset($banner->data->unique_key) && $banner->data->unique_key != '') ? $banner->data->unique_key : $banner->id);

                        if (!empty($banner->data->style_css)) {
                            $inline_css = ' style="' . $banner->data->style_css . '"';
                        }

                        $contents = '<a target="_blank" ' . $inline_css . ' class="wpmet-jhanda-href" href="' . $banner->data->banner_link . '"><img style="display: block;margin: 0 auto;" src="' . $banner->data->banner_image . '" /></a>';

                        \Oxaim\Libs\Notice::instance('wpmet-jhanda', $banner_unique_id)
                            ->set_dismiss('global', (3600 * 24 * 15))
                            ->set_gutter(false)
                            ->set_html($contents)
                            ->call();
                    }
                }
            }
        }


        private function in_whitelist($conf, $list)
        {

            $match = $conf->data->whitelist;

            if (empty($match)) {
                return true;
            };

            $match_arr = explode(',', $match);

            foreach ($list as $word) {
                if (in_array($word, $match_arr)) {
                    return true;
                }
            }

            return false;
        }


        private function in_blacklist($conf, $list)
        {

            $match = $conf->data->blacklist;

            if (empty($match)) {
                return false;
            };

            $match_arr = explode(',', $match);

            foreach ($match_arr as $idx => $item) {

                $match_arr[$idx] = trim($item);
            }

            foreach ($list as $word) {
                if (in_array($word, $match_arr)) {
                    return true;
                }
            }

            return false;
        }


        public function is_test($is_test = false)
        {
            if ($is_test === true) {
                $this->check_interval = 1;
            }

            return $this;
        }


        public function set_text_domain($text_domain)
        {
            $this->text_domain = $text_domain;

            return $this;
        }


        public function set_filter($filter_string)
        {
            $this->filter_string = $filter_string;
            if (!empty($filter_string)) {

                $filter = explode(',', $this->filter_string);

                foreach ($filter as $id => $item) {
                    $this->filter_array[$id] = trim($item);
                }
            }

            return $this;
        }


        public function set_api_url($url)
        {
            $this->api_url = $url;

            return $this;
        }

        public function set_plugin_screens($screen)
        {
            $this->plugin_screens[] = $screen;

            return $this;
        }


        private function get_banner()
        {
            $this->data = get_option($this->text_domain . '__banner_data');
            $this->data = $this->data == '' ? [] : $this->data;

            $this->last_check = get_option($this->text_domain . '__banner_last_check');
            $this->last_check = $this->last_check == '' ? 0 : $this->last_check;

            if (($this->check_interval + $this->last_check) < time()) {
                $response = wp_remote_get(
                    $this->api_url . '/cache/' . $this->text_domain . '.json?nocache=' . time(),
                    [
                        'timeout'     => 10,
                        'httpversion' => '1.1',
                    ]
                );

                if (!is_wp_error($response) && isset($response['body']) && $response['body'] != '') {

                    $response = json_decode($response['body']);

                    if (!empty($response)) {
                        $this->data = $response;
                        update_option($this->text_domain . '__banner_last_check', time());
                        update_option($this->text_domain . '__banner_data', $this->data);
                    }

                    return;
                }
            }
        }


        /**
         * --------------------------------------------------------------------
         * Check if current admin dashboard screens is allowed to show banner
         * 
         * 
         * $b_screen is screen name that came form API
         * $screen_id is current screen id
         * --------------------------------------------------------------------
         */
        public function is_correct_screen_to_show($b_screen, $screen_id)
        {
            switch ($b_screen) 
            {
                case 'all_page':
                    return true;
                    break;
                case 'dashboard':
                    return $b_screen == $screen_id;
                    break;
                case 'plugin_page':
                    return in_array($screen_id, $this->plugin_screens);
                    break;
                case 'plugin_install_page':
                    return $screen_id == 'plugins';
                    break;
            }

            return false;
        }

        private static $instance;

        public static function instance($text_domain = '')
        {

            if (!self::$instance) {
                self::$instance = new static();
            }

            return self::$instance->set_text_domain($text_domain);
        }
    }

endif;

Zerion Mini Shell 1.0