Current Path : /home/theafprt/hypekndy.com/wp-content/plugins/gallery-1751268962/libs/ |
Current File : /home/theafprt/hypekndy.com/wp-content/plugins/gallery-1751268962/libs/eps-plugin-options.php |
<?php /** * * Plugin Options Handler * * @version 1.0.0 * @copyright 2019 WebFactory Ltd * @package EPS Boilerplate * * */ // include only file if (!defined('ABSPATH')) { die('Do not open this file directly.'); } if (!class_exists('EPS_Redirects_Plugin_Options')) { class EPS_Redirects_Plugin_Options { /** * * Will be populated with the JSON file. * * @var array * */ public $settings = array(); public $plugin; private $menu_locations = array( 'menu', 'dashboard', 'posts', 'media', 'links', 'pages', 'comments', 'theme', 'plugins', 'users', 'management', 'options' ); /** * * Initialize the Theme Options, and register some actions. * */ public function __construct(EPS_Redirects_Plugin $Plugin) { $this->plugin = $Plugin; $this->build_settings(); add_action('admin_init', array($this, 'options_defaults')); add_action('admin_init', array($this, 'register_settings')); add_action('admin_menu', array($this, 'add_options_page')); } /** * Tab menu items */ private function build_settings() { $this->settings = array ( 'redirects' => array ( 'title' => 'Redirect Rules', 'description' => '', 'callback' => 'redirects', 'fields' => array(), ), '404s' => array ( 'title' => '404 Error Log', 'description' => '', 'callback' => '404s', 'fields' => array(), ), 'link-scanner' => array ( 'title' => 'Link Scanner', 'description' => '', 'callback' => 'link_scanner', 'fields' => array(), ), 'import-export' => array ( 'title' => 'Tools & Options', 'description' => '', 'callback' => 'import_export', 'fields' => array(), ), 'support' => array ( 'title' => 'Support', 'description' => '', 'callback' => 'support', 'fields' => array(), ), 'pro' => array ( 'title' => 'PRO', 'description' => '', 'callback' => 'pro', 'class' => 'pro-ad', 'fields' => array(), ), ); } // build_settings /** * * Build the setting slug based on section. * * @param string $section * @return string */ private function setting_slug($section = 'general') { return $this->plugin->config('option_slug') . '_' . $section; } /** * * Registers the settings based on the JSON file we imported. * */ public function register_settings() { foreach ($this->settings as $section => $args) { register_setting( $this->setting_slug($section), $this->setting_slug($section), array($this, 'sanitize_inputs') ); add_settings_section( $this->setting_slug($section), $args['title'], // array( $this, 'section_'.$section.'_callback'), array($this, 'section_callback'), $this->plugin->config('option_slug') . '_' . $section ); foreach ($args['fields'] as $slug => $args) { $args['section'] = $section; add_settings_field( $slug, $args['label'], array($this, 'field_callback'), $this->setting_slug($section), $this->setting_slug($section), $args ); } } } /** * * Sanitize inputs. TODO * * @param $args * @return mixed */ public function sanitize_inputs($args) { return $args; } /** * * If this is the first time we're loading this, we can use the JSON file to populate some defaults. * */ public function options_defaults() { foreach ($this->settings as $section => $args) { $settings = get_option($this->setting_slug($section)); if (empty($settings)) { $settings = array(); foreach ($args['fields'] as $slug => $args) { $settings[$slug] = $args['default']; } add_option($this->setting_slug($section), $settings, '', 'yes'); } } } /** * * Outputs the Sections intro HTML. A callback. * * @param $args * */ function section_callback($args) { if (isset($_GET['tab'])) { $tab = sanitize_text_field($_GET['tab']); } else { $sections = array_keys($this->settings); $tab = $sections[0]; } EPS_Redirects::wp_kses_wf($this->settings[$tab]['description']); } /** * * Output the Field HTML based on the JSON and 'type' of input. * * @param $args * */ function field_callback($args) { $option_slug = $this->setting_slug($args['section']); $setting = get_option($this->setting_slug($args['section'])); printf( "<input type='text' name='%s[%s]' value='%s' /><small>%s</small>", esc_attr($option_slug), esc_attr($args['slug']), (isset($setting[$args['slug']]) ? esc_attr(setting[$args['slug']]) : null), esc_attr($args['description']) ); } /** * * ADD_PLUGIN_PAGE * * This function initialize the plugin settings page. * * @return string * @author WebFactory Ltd * */ public function add_options_page() { if (in_array($this->plugin->config('menu_location'), $this->menu_locations)) { $func = sprintf("add_%s_page", $this->plugin->config('menu_location')); return $func($this->plugin->name, $this->plugin->name, $this->plugin->config('page_permission'), $this->plugin->config('page_slug'), array($this, 'do_admin_page')); } else { // TODO proper errors dude. printf('ERROR: menu location "%s" not valid.', esc_attr($this->config['menu_location'])); } return false; } /** * * DO_ADMIN_PAGE * * This function will create the admin page. * * @author WebFactory Ltd * */ public function do_admin_page() { $current_tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : false; if (!$current_tab) { $sections = $this->settings; $current_tab = key($sections); } ?> <div class="wrap"> <h1><img src="<?php echo esc_attr(EPS_REDIRECT_URL) . 'images/wp-301-logo.png' ?>" alt="<?php echo esc_attr($this->plugin->name); ?>" title="<?php echo esc_attr($this->plugin->name); ?>"><span><?php echo esc_attr($this->plugin->name); ?></span></h1><br> <div id="eps-tabs-wrapper"> <?php $this->get_tab_nav($current_tab); ?> <?php $this->get_tab($current_tab); ?> </div> <div id="eps-sidebar-wrapper"> <div class="sidebar-box pro-ad-box"> <p class="text-center"><a href="https://wp301redirects.com/?ref=eps-free-sidebar-box" target="_blank"><img src="<?php echo esc_attr(EPS_REDIRECT_URL) . 'images/wp-301-logo-full.png'; ?>" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a><br><b>PRO version</b> is here! Grab the launch discount - <b>all prices are LIFETIME!</b></p> <ul class="plain-list"> <li>Advanced Redirects Management & URL Matching Rules</li> <li>Auto-fix URL Typos (no rules needed)</li> <li>Detailed 404 & Redirect Stats + Email Reports</li> <li>Link Scanner - check every single link on your site</li> <li>URL Cloaking + other features for affiliate marketers</li> <li>Licenses & Sites Manager (remote SaaS dashboard)</li> <li>Remote Site Stats (stats for all your sites in one place)</li> <li>White-label Mode + Complete Plugin Rebranding</li> <li>Branded PDF Reports</li> <li>Email support from plugin developers</li> </ul> <p class="text-center"><a href="#" class="open-301-pro-dialog button button-buy" data-pro-feature="sidebar-box">Get PRO Now</a></p> </div> <div class="sidebar-box"> <p>Please <a href="https://wordpress.org/support/plugin/eps-301-redirects/reviews/?filter=5#new-post" target="_blank">rate the plugin ★★★★★</a> to <b>keep it up-to-date & maintained</b>. It only takes a second to rate. Thank you! 👋</p> </div> </div> </div> <?php EPS_Redirects::wp_kses_wf($this->pro_dialog()); } /** * * Outputs the tab navigation based on our sections. * * @param string $current */ function get_tab_nav($current = 'general') { echo '<h2 class="nav-tab-wrapper">'; foreach ($this->settings as $tab => $args) { $class = @$args['class']; $class .= ($tab == $current) ? ' nav-tab-active' : ''; printf( "<a class='nav-tab %s' href='?page=%s&tab=%s'>%s</a>", esc_attr($class), esc_attr($this->plugin->config('option_slug')), esc_attr($tab), esc_attr($args['title']) ); } echo '</h2>'; } /** * * Gets the content for the current tab. * * @param string $tab * */ public function get_tab($tab = 'general') { if ($this->tab_exists($tab)) { if (has_action($tab . '_admin_tab')) { do_action($tab . '_admin_tab', $this->settings[$tab]); } else { ?> <form method="post" action="<?php echo admin_url('options.php'); ?>"> <?php settings_fields($this->setting_slug($tab)); do_action($this->setting_section_callback($tab, "_before")); do_settings_sections($this->plugin->config('option_slug') . '_' . $tab); do_action($this->setting_section_callback($tab, '_after')); submit_button(); ?> </form> <?php } } } private function setting_section_callback($tab, $suffix = '') { return $this->plugin->config('option_slug') . '_settings_' . $this->settings[$tab]['callback'] . $suffix; } /** * * Checks to see if a tab exists. * * @param $tab * @return bool * @throws Exception * */ public function tab_exists($tab) { if (!array_key_exists($tab, $this->settings)) { throw new Exception('Tab does not exist'); } return true; } function pro_dialog() { $out = ''; $out .= '<div id="eps-pro-dialog" style="display: none;" title="WP 301 Redirects PRO is here!"><span class="ui-helper-hidden-accessible"><input type="text"/></span>'; $plugin_url = plugin_dir_url(__FILE__); $out .= '<div class="center logo"><a href="https://wp301redirects.com/?ref=eps-free-pricing-table" target="_blank"><img src="' . EPS_REDIRECT_URL . 'images/wp-301-logo-full.png' . '" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a><br>'; $out .= '<span>Limited PRO Launch Discount - <b>all prices are LIFETIME</b>! Pay once & use forever!</span>'; $out .= '</div>'; $out .= '<table id="eps-pro-table">'; $out .= '<tr>'; $out .= '<td class="center">Lifetime Personal License</td>'; $out .= '<td class="center">Lifetime Team License</td>'; $out .= '<td class="center">Lifetime Agency License</td>'; $out .= '</tr>'; $out .= '<tr class="prices">'; $out .= '<td class="center"><del>$79 /year</del><br><span>$49</span> /lifetime</td>'; $out .= '<td class="center"><del>$159 /year</del><br><span>$59</span> /lifetime</td>'; $out .= '<td class="center"><del>$299 /year</del><br><span>$99</span> /lifetime</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span><b>1 Site License</b> ($49 per site)</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span><b>5 Sites License</b> ($12 per site)</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span><b>100 Sites License</b> ($1 per site)</td>'; $out .= '</tr>'; /* $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced Redirects Management</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced Redirects Management</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced Redirects Management</td>'; $out .= '</tr>'; */ $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced URL Matching Rules</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced URL Matching Rules</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Advanced URL Matching Rules</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Auto-fix URL Typos & URL Cloaking</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Auto-fix URL Typos & URL Cloaking</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Auto-fix URL Typos & URL Cloaking</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Detailed 404 & Redirect Stats</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Detailed 404 & Redirect Stats</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Detailed 404 & Redirect Stats</td>'; $out .= '</tr>'; /* $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>URL Cloaking</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>URL Cloaking</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>URL Cloaking</td>'; $out .= '</tr>'; */ $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Link Scanner</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Link Scanner</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Link Scanner</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Licenses & Sites Manager (SaaS)</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Licenses & Sites Manager (SaaS)</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Licenses & Sites Manager (SaaS)</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-no"></span>Remote Site Stats</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Remote Site Stats</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Remote Site Stats</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-no"></span>White-label Mode</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>White-label Mode</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>White-label Mode</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-no"></span>Full Plugin Rebranding</td>'; $out .= '<td><span class="dashicons dashicons-no"></span>Full Plugin Rebranding</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Full Plugin Rebranding</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-no"></span>Branded PDF Reports</td>'; $out .= '<td><span class="dashicons dashicons-no"></span>Branded PDF Reports</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Branded PDF Reports</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Lifetime Updates & Support</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Lifetime Updates & Support</td>'; $out .= '<td><span class="dashicons dashicons-yes"></span>Lifetime Updates & Support</td>'; $out .= '</tr>'; $out .= '<tr>'; $out .= '<td><span>one-time payment</span><a class="button button-buy" data-href-org="https://wp301redirects.com/buy/?product=personal-launch&ref=pricing-table" href="https://wp301redirects.com/buy/?product=personal-launch&ref=pricing-table" target="_blank">BUY NOW</a><br>or <a target="_blank" class="button-buy" data-href-org="https://wp301redirects.com/buy/?product=personal-monthly&ref=pricing-table" href="https://wp301redirects.com/buy/?product=personal-monthly&ref=pricing-table">only $5.99 <small>/month</small></a></td>'; $out .= '<td><span>one-time payment</span><a class="button button-buy" data-href-org="https://wp301redirects.com/buy/?product=team-launch&ref=pricing-table" href="https://wp301redirects.com/buy/?product=team-launch&ref=pricing-table" target="_blank">BUY NOW</a></td>'; $out .= '<td><span>one-time payment</span><a class="button button-buy" data-href-org="https://wp301redirects.com/buy/?product=agency-launch&ref=pricing-table" href="https://wp301redirects.com/buy/?product=agency-launch&ref=pricing-table" target="_blank">BUY NOW</a></td>'; $out .= '</tr>'; $out .= '</table>'; $out .= '<div class="center footer"><b>100% No-Risk Money Back Guarantee!</b> If you don\'t like the plugin over the next 7 days, we will happily refund 100% of your money. No questions asked! Payments are processed by our merchant of records - <a href="https://paddle.com/" target="_blank">Paddle</a>.</div></div>'; return $out; } } }