HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/gdtrain/public_html/wp-content/plugins/backup-wd/includes/buwd-admin.php
<?php

class Buwd_Admin
{
    protected static $instance = null;
    protected static $page = null;
    protected static $removed_destinations = [
        'amazon-glacier' => "Amazon Glacier",
        'rsc'            => 'Rackspace Cloud',
        'sugarsync'      => 'SugarSync'
    ];
    public $buwd_page = array();
    protected $updates = array();
    protected $notices = null;

    private function __construct()
    {
        /* 	$this->notices = new Buwd_Notices(); */
        self::$page = Buwd_Helper::get("page") ? esc_html(Buwd_Helper::get("page")) : "";

        add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
        add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));

        add_action('admin_menu', array($this, 'add_admin_menu'), 9);

        add_action('admin_post_buwd_save', array($this, 'save_form'));
        add_action('admin_post_nopriv_buwd_save', array($this, 'save_form'));

        add_action('admin_init', array($this, 'admin_ajax_actions'));
        add_action('admin_init', array($this, 'admin_actions'));

        //Register session if there is no active session
        //add_action('admin_init', array($this, 'register_session'));

        add_action('admin_notices', array($this, 'buwd_admin_notices'));
        add_filter('admin_footer_text', array($this, 'admin_footer_text'));

        //admin bar
        $show_on_bar = Buwd_Options::getSetting('show_on_bar');
        if (isset($show_on_bar[0]) && $show_on_bar[0] == 1) {
            add_action('init', array('Buwd_Admin_Bar', 'get_instance'));
        }

        if (isset($_GET["page"]) && $_GET["page"] == "overview_buwd") {
            set_transient(BUWD_PREFIX . '_overview_visited', 1, '', 'no');
        }

    }

    public static function activate()
    {
        // set default options
        $version = get_site_option('buwd_version');
        Buwd_Options::set_default_options();
        update_site_option('buwd_version', BUWD_VERSION);

        if ($version == '') {
            set_transient(BUWD_PREFIX . '_overview_visited', 1, '', 'no');
        }

        self::add_roles();
    }

    /**
     * use current_user_can('capability');
     *
     */
    public static function add_roles()
    {
        add_role('buwd_admin', __('Backup WD Admin', 'buwd'),
            array(
                'read'                  => true,
                'buwd_edit'             => true,
                'buwd_job'              => true,
                'buwd_job_edit'         => true,
                'buwd_job_delete'       => true,
                'buwd_job_run'          => true,
                'buwd_api_keys'         => true,
                'buwd_logs'             => true,
                'buwd_settings'         => true,
                'buwd_settings_import'  => true,
                'buwd_settings_export'  => true,
                'buwd_log_view'         => true,
                'buwd_log_delete'       => true,
                'buwd_log_download'     => true,
                'buwd_backups'          => true,
                'buwd_backups_delete'   => true,
                'buwd_backups_download' => true,
            )
        );

        add_role('buwd_helper', __('Backup WD Helper', 'buwd'),
            array(
                'read'                  => true,
                'buwd_edit'             => true,
                'buwd_job'              => true,
                'buwd_job_edit'         => false,
                'buwd_job_delete'       => false,
                'buwd_job_run'          => true,
                'buwd_api_keys'         => false,
                'buwd_settings'         => false,
                'buwd_settings_import'  => false,
                'buwd_settings_export'  => false,
                'buwd_logs'             => true,
                'buwd_log_view'         => true,
                'buwd_log_delete'       => false,
                'buwd_log_download'     => true,
                'buwd_backups'          => true,
                'buwd_backups_delete'   => false,
                'buwd_backups_download' => true,
            )
        );

        add_role('buwd_checker', __('Backup WD Checker', 'buwd'),
            array(
                'read'                  => true,
                'buwd_edit'             => true,
                'buwd_job'              => true,
                'buwd_job_edit'         => false,
                'buwd_job_delete'       => false,
                'buwd_job_run'          => false,
                'buwd_api_keys'         => false,
                'buwd_settings'         => false,
                'buwd_settings_import'  => false,
                'buwd_settings_export'  => false,
                'buwd_logs'             => true,
                'buwd_log_view'         => true,
                'buwd_log_delete'       => false,
                'buwd_log_download'     => false,
                'buwd_backups'          => true,
                'buwd_backups_delete'   => false,
                'buwd_backups_download' => false,
            )
        );

        $admin_role = get_role('administrator');

        $admin_role->add_cap('buwd_edit');
        $admin_role->add_cap('buwd_job');
        $admin_role->add_cap('buwd_job_edit');
        $admin_role->add_cap('buwd_job_delete');
        $admin_role->add_cap('buwd_job_run');
        $admin_role->add_cap('buwd_api_keys');
        $admin_role->add_cap('buwd_settings');
        $admin_role->add_cap('buwd_settings_import');
        $admin_role->add_cap('buwd_settings_export');
        $admin_role->add_cap('buwd_logs');
        $admin_role->add_cap('buwd_log_view');
        $admin_role->add_cap('buwd_log_delete');
        $admin_role->add_cap('buwd_log_download');
        $admin_role->add_cap('buwd_backups');
        $admin_role->add_cap('buwd_backups_delete');
        $admin_role->add_cap('buwd_backups_download');
    }

    public static function deactivate()
    {
        global $buwd_plugin_options;
        if (!class_exists("TenWebLibConfig")) {
            include_once(BUWD_DIR . "/wd/config.php");
        }

        if (!class_exists("TenWebLibDeactivate")) {
            include_once(BUWD_DIR . "/wd/includes/deactivate.php");
        }

        $config = new TenWebLibConfig();
        $config->set_options($buwd_plugin_options);
        $deactivate_reasons = new TenWebLibDeactivate($config);
        //$deactivate_reasons->add_deactivation_feedback_dialog_box();
        $deactivate_reasons->submit_and_deactivate();

        Buwd_Options::remove_default_options();
    }

    /**
     * Checks whether Client has destinations that are removed in plugin update,
     * and sets a flag for displaying notice about that.
     *
     */
    public static function check_removed_destinations()
    {
        $job_ids = Buwd_Options::get_job_ids();
        $was_deactivated_destination = get_transient('buwd_has_job_with_deleted_destination');
        $found = false;
        if(empty($job_ids))
        {
            delete_transient('buwd_has_job_with_deleted_destination');
            return true;
        }
        foreach ($job_ids as $key => $id) {
            $job_destinations = Buwd_Options::get($id, 'destination');
            if (!empty($job_destinations)) {
                foreach ($job_destinations as $destination) {
                    if (in_array($destination, array_keys(self::$removed_destinations)) !== false) {
                        $found = true;
                        break;
                    }
                }
                if ($found === true) {
                    set_transient('buwd_has_job_with_deleted_destination', 1);
                } elseif ($found === false && !empty($was_deactivated_destination)) {
                    delete_transient('buwd_has_job_with_deleted_destination');
                }
            } else {
                delete_transient('buwd_has_job_with_deleted_destination');
            }
        }
    }

    /**
     * Save form data
     */
    public static function save_form()
    {
        if (!self::is_buwd_page()) {
            die(__('Page not found', 'buwd'));
        }

        check_admin_referer('nonce_buwd', 'nonce_buwd');

        $current_tab = Buwd_Helper::get('current_tab') ? Buwd_Helper::get('current_tab') : 'general';
        if (self::$page == 'buwd_editjob') {
            $job_id = Buwd_Helper::get('job_id') ? (int)Buwd_Helper::get('job_id') : null;
            $class = Buwd_Editjob::get_instance();
            $class->save_form($job_id, $current_tab);
        }

        if (self::$page == 'buwd_settings' || self::$page == 'buwd_api_keys' || self::$page == 'buwd_restore') {
            $class_name = Buwd_Helper::ucwords_specific(self::$page, '_');
            $class = $class_name::get_instance();
            $class->save_form($current_tab);
        }
    }

    /**
     * Check user is on plugin page
     * @return  bool
     */
    public
    static function is_buwd_page()
    {
        $page = self::get_page();
        if ($page == BUWD_PREFIX . '_dashboard' || $page == BUWD_PREFIX . '_jobs' || $page == BUWD_PREFIX . '_editjob' || $page == BUWD_PREFIX . '_api_keys' || $page == BUWD_PREFIX . '_logs' || $page == BUWD_PREFIX . '_backups' || $page == BUWD_PREFIX . '_settings' || $page == BUWD_PREFIX . '_restore') {
            return true;
        } else {
            return false;
        }
    }

    /**
     *
     *
     */
    public
    static function get_page()
    {
        return self::$page;
    }

    /**
     * Return an instance of this class.
     */
    public
    static function get_instance()
    {
        if (null == self::$instance) {
            self::$instance = new self;
        }

        return self::$instance;
    }

    public static function get_removed_destinations()
    {
        return self::$removed_destinations;
    }

    /**
     * Add admin menu
     *
     */
    public
    function add_admin_menu()
    {
        $parent_slug = null;
        $main_title = 'Backup WD';

        if (get_option("buwd_subscribe_done") == 1) {
            $parent_slug = "buwd_jobs";
            /*if (!get_transient(BUWD_PREFIX . '_overview_visited')) {
                $main_title .= ' <span class="update-plugins count-2" style="background-color: #d54e21;position: absolute;"> <span class="plugin-count">1</span></span>';
            }*/

            add_menu_page(__('Backup WD', 'buwd'), $main_title, 'buwd_edit', 'buwd_jobs', array(
                $this,
                'display_page'
            ), BUWD_URL . '/public/images/menu_logo.png');
        }

        // jobs
        $this->buwd_page['jobs'] = add_submenu_page($parent_slug, __('Jobs', 'buwd'), __('Jobs', 'buwd'), BUWD_PREFIX . '_edit', BUWD_PREFIX . '_jobs', array(
            $this,
            'display_page'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['jobs'], array(
            ucfirst(BUWD_PREFIX) . '_Jobs',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['jobs'], array(
            ucfirst(BUWD_PREFIX) . '_Jobs',
            'admin_print_styles'
        ));

        // edit job
        $this->buwd_page['editjob'] = add_submenu_page($parent_slug, __('Add new job', 'buwd'), __('Add new job', 'buwd'), BUWD_PREFIX . '_job_edit', BUWD_PREFIX . '_editjob', array(
            $this,
            'display_page'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['editjob'], array(
            ucfirst(BUWD_PREFIX) . '_Editjob',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['editjob'], array(
            ucfirst(BUWD_PREFIX) . '_Editjob',
            'admin_print_styles'
        ));

        // Logs
        $this->buwd_page['logs'] = add_submenu_page($parent_slug, __('Logs', 'buwd'), __('Logs', 'buwd'), BUWD_PREFIX . '_logs', BUWD_PREFIX . '_logs', array($this, 'display_page'));
        add_action('load-' . $this->buwd_page['logs'], array(ucfirst(BUWD_PREFIX) . '_Logs', 'load_action'));
        add_action('admin_print_scripts-' . $this->buwd_page['logs'], array(
            ucfirst(BUWD_PREFIX) . '_Logs',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['logs'], array(
            ucfirst(BUWD_PREFIX) . '_Logs',
            'admin_print_styles'
        ));

        // Backups
        $this->buwd_page['backups'] = add_submenu_page($parent_slug, __('Backups', 'buwd'), __('Backups', 'buwd'), BUWD_PREFIX . '_backups', BUWD_PREFIX . '_backups', array(
            $this,
            'display_page'
        ));
        add_action('load-' . $this->buwd_page['backups'], array(
            ucfirst(BUWD_PREFIX) . '_Backups',
            'load_action'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['backups'], array(
            ucfirst(BUWD_PREFIX) . '_Backups',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['backups'], array(
            ucfirst(BUWD_PREFIX) . '_Backups',
            'admin_print_styles'
        ));

        //API keys
        $this->buwd_page['api_keys'] = add_submenu_page($parent_slug, __('API Keys', 'buwd'), __('API Keys', 'buwd'), BUWD_PREFIX . '_api_keys', BUWD_PREFIX . '_api_keys', array(
            $this,
            'display_page'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['api_keys'], array(
            ucfirst(BUWD_PREFIX) . '_api_keys',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['api_keys'], array(
            ucfirst(BUWD_PREFIX) . '_api_keys',
            'admin_print_styles'
        ));


        //settings
        $this->buwd_page['settings'] = add_submenu_page($parent_slug, __('Settings', 'buwd'), __('Settings', 'buwd'), BUWD_PREFIX . '_settings', BUWD_PREFIX . '_settings', array(
            $this,
            'display_page'
        ));
        add_action('load-' . $this->buwd_page['settings'], array(
            ucfirst(BUWD_PREFIX) . '_Settings',
            'load_action'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['settings'], array(
            ucfirst(BUWD_PREFIX) . '_Settings',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['settings'], array(
            ucfirst(BUWD_PREFIX) . '_Settings',
            'admin_print_styles'
        ));

        //restore
        $this->buwd_page['restore'] = add_submenu_page($parent_slug, __('Restore', 'buwd'), __('Restore', 'buwd'), BUWD_PREFIX . '_edit', BUWD_PREFIX . '_restore', array(
            $this,
            'display_page'
        ));
        add_action('admin_print_scripts-' . $this->buwd_page['restore'], array(
            ucfirst(BUWD_PREFIX) . '_Restore',
            'admin_print_scripts'
        ));
        add_action('admin_print_styles-' . $this->buwd_page['restore'], array(
            ucfirst(BUWD_PREFIX) . '_Restore',
            'admin_print_styles'
        ));
    }

    public
    function admin_actions()
    {
        add_thickbox();


    }

    public
    function admin_ajax_actions()
    {
        //if ( defined( 'DOING_AJAX' ) && DOING_AJAX && defined( 'WP_ADMIN' ) && WP_ADMIN ) {
        if ($destinations = Buwd::get_destinations()) {
            foreach ($destinations as $dest_id => $destination) {
                add_action('wp_ajax_buwd-' . strtolower($dest_id), array(Buwd::get_destination($dest_id), 'run_ajax'));
            }
        }
        add_action('wp_ajax_buwd-type-db', array(Buwd_Type_DB::get_instance(), 'run_ajax'));
        add_action('wp_ajax_buwd-run_job', array('Buwd_Job', 'run_job'));
        add_action('wp_ajax_buwd_progress', array('Buwd_Job', 'get_progress'));
        add_action('wp_ajax_buwd_success_message', array('Buwd_Job', 'do_not_show_message'));
        add_action('wp_ajax_view_log', array('Buwd_Logs', 'action_view_log'));
        add_action('wp_ajax_buwd_login', array('Buwd_Dashboard', 'login'));
        add_action('wp_ajax_delete_backups', array('Buwd_Backups', 'load_action'));
        add_action('wp_ajax_delete_logs', array('Buwd_Logs', 'load_action'));
        //	}

    }

    /**
     * Display menu page
     */
    public
    function display_page()
    {
        if (!self::is_buwd_page()) {
            die(__('Page not found!', 'buwd'));
        }

        $this->upgrade_pro();

        $classname = implode('_', array_map('ucfirst', explode('_', self::$page)));
        $class = $classname::get_instance();

        include_once(BUWD_DIR . '/views/progressbar.php');
        $class->display_page();

    }

    public
    function upgrade_pro()
    {
        ?>

        <div class="tenweb_banner">
            <div class="tenweb_banner-left">
                <div class="tenweb_plugin_name"><?php _e("Sign up for 10Web and get full access to Premium Backup Service with a 10 GB cloud storage.", BUWD_PREFIX); ?></div>
            </div>
            <div class="tenweb_banner-right">
                <a href="https://10web.io/wordpress-backup-service/" target="_blank"
                   class="button"><?php _e("SIGN UP", BUWD_PREFIX); ?></a>
            </div>
        </div>
        <?php

    }

    /**
     * Load public scripts
     */
    public
    function enqueue_admin_scripts()
    {
        /* global $wpdb;
        wp_enqueue_script( BUWD_PREFIX ); */
        if (!self::is_buwd_page()) {
            return false;
        }
        wp_enqueue_script(BUWD_PREFIX . '-admin', BUWD_URL . '/public/js/admin.js', array(), BUWD_VERSION, true);
        wp_enqueue_script(BUWD_PREFIX . '-datetimepicker', BUWD_URL . '/public/js/jquery.datetimepicker.js', array(), BUWD_VERSION, true);
        wp_enqueue_script(BUWD_PREFIX . '-jquery.validate', BUWD_URL . '/public/js/jquery.validate.js', array(), BUWD_VERSION, true);
        wp_enqueue_script(BUWD_PREFIX . '-additional-methods', BUWD_URL . '/public/js/additional-methods.js', array(), BUWD_VERSION, true);
        wp_enqueue_script(BUWD_PREFIX . '-jquery-cron', BUWD_URL . '/public/js/jquery-cron-min.js', array(), BUWD_VERSION, true);
        wp_enqueue_script(BUWD_PREFIX . '-progressbar', BUWD_URL . '/public/js/progressbar-manager.js', array(), BUWD_VERSION, true);
        wp_localize_script(BUWD_PREFIX . '-admin', 'buwd', array(
            'ajaxurl'    => admin_url('admin-ajax.php'),
            'ajaxnonce'  => wp_create_nonce(BUWD_PREFIX . '_ajax_nonce'),
            'plugin_url' => BUWD_URL,
            //		'user_data_url' => Buwd::get_plugin_data('service_url').'api/auth',
        ));

    }

    /**
     * Load public styles
     */
    public
    function enqueue_admin_styles()
    {
        if (!self::is_buwd_page()) {
            return false;
        }
        wp_enqueue_style('buwd-style', BUWD_URL . '/public/css/style.css', array(), BUWD_VERSION);
        wp_enqueue_style('buwd-animations-style', BUWD_URL . '/public/css/animate.css', array(), BUWD_VERSION);
        wp_enqueue_style('buwd-progressbar', BUWD_URL . '/public/css/progressbar.css', array(), BUWD_VERSION);
        wp_enqueue_style('buwd-log-style', BUWD_URL . '/public/css/log.css', array(), BUWD_VERSION);
        wp_enqueue_style('buwd-banner-font', 'https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800', array(), BUWD_VERSION);
    }

    /**
     * BUWD notices
     */

    function buwd_admin_notices()
    {
        if (self::is_buwd_page()) {
            /*if (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) {
                echo '<div class="buwd-messages">' . Buwd_Helper::message('WordPress Cron is disabled on your website. Please enable it, so Backup WD can run backup jobs. <br/>Edit <b>wp-config.php</b> file of your website and add <b>define(\'DISABLE_WP_CRON\', false);</b> to it. If the line is there, but it\'s set to true, simply <b>change</b> it to <b>false</b>.', 'error') . '</div>';
            }*/
        }
    }

    public
    function admin_footer_text($footer_text)
    {
        if (self::is_buwd_page()) {
            $footer_text = sprintf(
                __('Enjoyed <strong>BackUp WD</strong>? Please leave us a %s rating. We really appreciate your support!', 'buwd'),
                '<a href="https://wordpress.org/support/plugin/backup-wd/reviews/?filter=5#new-post" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
            );
        }

        return $footer_text;
    }

    /**
     * Ignore function that gets ran at admin init to ensure any messages that were dismissed get marked
     */
    public
    function admin_notice_ignore()
    {

    }

    /**
     * Register session if there is no active session
     */
    function register_session()
    {
       /* if (!session_id()) {
            session_start();
        }*/
    }
}

?>