Server IP : 192.64.118.117 / Your IP : 3.143.213.242 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/thecgapy/www/wp-content/plugins/go_pricing/includes/admin/ |
Upload File : |
<?php /** * Plugin Update page controller class */ // Prevent direct call if ( !defined( 'WPINC' ) ) die; if ( !class_exists( 'GW_GoPricing' ) ) die; // Class class GW_GoPricing_AdminPage_Update extends GW_GoPricing_AdminPage { /** * Register ajax actions * * @return void */ public function register_ajax_actions( $ajax_action_callback ) { GW_GoPricing_Admin::register_ajax_action( 'update', $ajax_action_callback ); } /** * Action * * @return void */ public function action() { // Create custom nonce $this->create_nonce( 'update' ); // Load views if action is empty if ( empty( $this->action ) ) { $this->content( $this->view() ); } // Load views if action is not empty (handle postdata) if ( !empty( $this->action ) && check_admin_referer( $this->nonce, '_nonce' ) ) { add_filter( 'upload_mimes', array( $this, 'restrict_upload_mimes') ); add_filter( 'upload_dir', array( $this, 'set_upload_dir' ) ); $result = $this->validate_upload( $_FILES ); if ( $this->is_ajax === false ) { if ( $result === false ) { wp_redirect( $this->referrer ); } else { wp_redirect( admin_url( 'admin.php?page=go-pricing' ) ); } exit; } else { echo $this->view(); GW_GoPricing_AdminNotices::show(); } } } /** * Load views * * @return void */ public function view( $view = '', $data = null ) { ob_start(); include_once( 'views/page/update.php' ); return ob_get_clean(); } /** * Validate & return upload data * * @return string | bool */ public function validate_upload( $upload_data ) { $product_id = isset( $_POST['product'] ) ? sanitize_key( $_POST['product'] ) : ''; if ( $product_id == 'go_pricing' ) { $product = array( 'name' => array( 'Go Pricing - WordPress Responsive Pricing Tables', 'Go - Responsive Pricing & Compare Tables' ), 'version' => self::$plugin_version, 'base' => $this->plugin_base ); } else { global $go_pricing; if ( isset( $go_pricing['addons'] ) ) { $product_data = !empty( $go_pricing['addons'][$product_id] ) ? $go_pricing['addons'][$product_id] : ''; if ( !empty( $product_data['name'] ) && $product_data['version'] && $product_data['base'] ) { $product = array( 'name' => $product_data['name'], 'version' => $product_data['version'], 'base' => $product_data['base'] ); } } } if ( empty( $product ) ) { GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Invalid product!', 'go_pricing_textdomain' ) ); return false; } $product_name = ''; $product_name = is_array( $product['name'] ) ? $product['name'][0] : $product['name']; $hash = md5( microtime() ); if ( empty( $upload_data ) || empty( $upload_data['plugin-data'] ) || empty( $upload_data['plugin-data']['name'] ) || empty( $upload_data['plugin-data']['tmp_name'] ) || empty( $upload_data['plugin-data']['size'] ) ) { GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Please select a file to upload!', 'go_pricing_textdomain' ) ); return false; } if ( !empty( $upload_data['plugin-data']['error'] ) || ( $file_content = @file_get_contents( $_FILES['plugin-data']['tmp_name'] ) ) === false ) { GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Oops, something went wrong!', 'go_pricing_textdomain' ) ); return false; } $file = wp_upload_bits( $hash . '_' . $_FILES['plugin-data']['name'], '', $file_content ); if ( empty( $file ) || empty( $file['file'] ) || !empty( $file['error'] ) ) { GW_GoPricing_AdminNotices::add( 'update', 'error', !empty( $file['error'] ) ? $file['error'] : __( 'Oops, something went wrong!', 'go_pricing_textdomain' ) ); return false; } if ( ( $fs = WP_Filesystem() ) === false ) { GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Oops, filesystem error!', 'go_pricing_textdomain' ) ); unlink( $file['file'] ); return false; } global $wp_filesystem; $upload_dir = wp_upload_dir(); $temp_dir_path = $upload_dir['path'] . '/' . $hash; $unzip_file = unzip_file( $file['file'], $temp_dir_path ); if ( ! $unzip_file || !is_dir( $temp_dir_path ) ) { unlink( $file['file'] ); GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Oops, something went wrong!', 'go_pricing_textdomain' ) ); return false; } $upgrader = new GW_GoPricing_Plugin_Upgrader( new GW_GoPricing_Plugin_Installer_Skin() ); if ( ( $plugin_file = $upgrader->validate_upload( $temp_dir_path, $product ) ) === false ) { GW_GoPricing_AdminNotices::add( 'update', 'error', __( 'Invalid plugin file or version!', 'go_pricing_textdomain' ) ); unlink( $file['file'] ); $wp_filesystem->rmdir( $temp_dir_path, true ); return false; } // Delete temp folder $wp_filesystem->rmdir( $temp_dir_path, true ); // Save file data to DB $uploads = get_option( self::$plugin_prefix . '_uploads', array() ); $uploads[] = array( 'file' => $file['file'], 'expiration' => gmdate( 'Y-m-d H:i:s', time() + 5 * 60 ) ); update_option( self::$plugin_prefix . '_uploads', $uploads ); $is_active_for_network = is_plugin_active_for_network( $product['base'] ); if ( $result = $upgrader->update_plugin( $file['file'], $product['base'] ) === false ) { GW_GoPricing_AdminNotices::add( 'update', 'error', sprintf( __( '"%s" plugin update failed!', 'go_pricing_textdomain' ), $product_name ) ); return false; } GW_GoPricing_AdminNotices::add( 'update', 'success', sprintf( __( '"%s" plugin updated successfully!', 'go_pricing_textdomain' ), $product_name ) ); activate_plugin( $product['base'], NULL, $is_active_for_network, true ); return $info; } /** * Restrict allowed mimes * * @return array */ public function restrict_upload_mimes( $mimes ) { $allowed_mimes = array( 'zip' => 'application/zip' ); return $allowed_mimes; } /** * Set custom upload path * * @return array */ public function set_upload_dir( $param ) { $param['subdir'] = '/go_pricing_data'; $param['path'] = $param['basedir'] . $param['subdir']; return $param; } } ?>