path_url = Ithemes_Updater_Functions::get_url( $GLOBALS['ithemes_updater_path'] ); list( $this->self_url ) = explode( '?', $_SERVER['REQUEST_URI'] ); $this->self_url .= '?page=' . $this->page_name; add_action( 'ithemes_updater_settings_page_index', array( $this, 'index' ) ); add_action( 'admin_print_scripts', array( $this, 'add_scripts' ) ); add_action( 'admin_print_styles', array( $this, 'add_styles' ) ); } public function add_scripts() { wp_enqueue_script( 'ithemes-updater-settings-page-script', "{$this->path_url}/js/settings-page.js", array(), 2 ); } public function add_styles() { wp_enqueue_style( 'ithemes-updater-settings-page-style', "{$this->path_url}/css/settings-page.css", array(), 2 ); } public function index() { $post_data = Ithemes_Updater_Functions::get_post_data( array( 'it-updater-username', 'it-updater-password', 'packages', 'action', 'site_url', 'redirect', 'relicense_option' ), true ); if ( empty( $post_data['packages'] ) ) { $post_data['packages'] = array(); } if ( ! empty( $post_data['action'] ) ) { $action = $post_data['action']; } else if ( ! empty( $_REQUEST['action'] ) ) { $action = $_REQUEST['action']; } else { $action = 'list_packages'; } if ( 'save_licensed_site_url' === $action ) { $this->save_licensed_site_url( $post_data ); } else if ( 'relicense' === $action ) { $this->relicense( $post_data ); } else if ( 'change_licensed_site_url' === $action || ! $GLOBALS['ithemes-updater-settings']->is_licensed_site_url_confirmed() ) { $this->show_licensed_site_url_confirmation_page( $post_data ); } else { if ( 'license_packages' === $action ) { $this->license_packages( $post_data ); } else if ( 'unlicense_packages' === $action ) { $this->unlicense_packages( $post_data ); } else if ( 'save_settings' === $action ) { $this->save_settings(); } $this->list_packages( $action, $post_data ); } } private function save_settings() { check_admin_referer( 'save_settings', 'ithemes_updater_nonce' ); $settings_defaults = array( 'quick_releases' => false, ); $settings = array(); foreach ( $settings_defaults as $var => $val ) { if ( isset( $_POST[$var] ) ) $settings[$var] = $_POST[$var]; else $settings[$var] = $val; } if ( $settings['quick_releases'] ) $settings['quick_releases'] = true; $GLOBALS['ithemes-updater-settings']->update_options( $settings ); $GLOBALS['ithemes-updater-settings']->flush( 'settings saved' ); $this->messages[] = __( 'Settings saved', 'it-l10n-ithemes-security-pro' ); } private function license_packages( $data ) { check_admin_referer( 'license_packages', 'ithemes_updater_nonce' ); if ( empty( $data['username'] ) && empty( $data['password'] ) ) $this->errors[] = __( 'You must supply an iThemes membership username and password in order to license products.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['username'] ) ) $this->errors[] = __( 'You must supply an iThemes membership username in order to license products.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['password'] ) ) $this->errors[] = __( 'You must supply an iThemes membership password in order to license products.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['packages'] ) ) $this->errors[] = __( 'You must select at least one product to license. Ensure that you select the products that you wish to license in the listing below.', 'it-l10n-ithemes-security-pro' ); if ( ! empty( $this->errors ) ) return; $response = Ithemes_Updater_API::activate_package( $data['username'], $data['password'], $data['packages'] ); if ( is_wp_error( $response ) ) { $this->errors[] = Ithemes_Updater_API::get_error_explanation( $response ); return; } if ( empty( $response['packages'] ) ) { $this->errors[] = __( 'An unknown server error occurred. Please try to license your products again at another time.', 'it-l10n-ithemes-security-pro' ); return; } uksort( $response['packages'], 'strnatcasecmp' ); $success = array(); $warn = array(); $fail = array(); foreach ( $response['packages'] as $package => $data ) { if ( preg_match( '/ \|\|\| \d+$/', $package ) ) continue; $name = Ithemes_Updater_Functions::get_package_name( $package ); if ( ! empty( $data['key'] ) ) $success[] = $name; else if ( ! empty( $data['status'] ) && ( 'expired' == $data['status'] ) ) $warn[$name] = __( 'Your product subscription has expired', 'it-l10n-ithemes-security-pro' ); else $fail[$name] = $data['error']['message']; } if ( ! empty( $success ) ) $this->messages[] = wp_sprintf( __( 'Successfully licensed %l.', 'it-l10n-ithemes-security-pro' ), $success ); if ( ! empty( $fail ) ) { foreach ( $fail as $name => $reason ) $this->errors[] = sprintf( __( 'Unable to license %1$s. Reason: %2$s', 'it-l10n-ithemes-security-pro' ), $name, $reason ); } if ( ! empty( $warn ) ) { foreach ( $warn as $name => $reason ) $this->soft_errors[] = sprintf( __( 'Unable to license %1$s. Reason: %2$s', 'it-l10n-ithemes-security-pro' ), $name, $reason ); } } private function unlicense_packages( $data ) { check_admin_referer( 'unlicense_packages', 'ithemes_updater_nonce' ); if ( empty( $data['username'] ) && empty( $data['password'] ) ) $this->errors[] = __( 'You must supply an iThemes membership username and password in order to remove licenses.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['username'] ) ) $this->errors[] = __( 'You must supply an iThemes membership username in order to remove licenses.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['password'] ) ) $this->errors[] = __( 'You must supply an iThemes membership password in order to remove licenses.', 'it-l10n-ithemes-security-pro' ); else if ( empty( $data['packages'] ) ) $this->errors[] = __( 'You must select at least one license to remove. Ensure that you select the licenses that you wish to remove in the listing below.', 'it-l10n-ithemes-security-pro' ); if ( ! empty( $this->errors ) ) return; $response = Ithemes_Updater_API::deactivate_package( $data['username'], $data['password'], $data['packages'] ); if ( is_wp_error( $response ) ) { $this->errors[] = Ithemes_Updater_API::get_error_explanation( $response ); return; } if ( empty( $response['packages'] ) ) { $this->errors[] = __( 'An unknown server error occurred. Please try to remove licenses from your products again at another time.', 'it-l10n-ithemes-security-pro' ); return; } uksort( $response['packages'], 'strnatcasecmp' ); $success = array(); $fail = array(); foreach ( $response['packages'] as $package => $data ) { if ( preg_match( '/ \|\|\| \d+$/', $package ) ) continue; $name = Ithemes_Updater_Functions::get_package_name( $package ); if ( isset( $data['status'] ) && ( 'inactive' == $data['status'] ) ) $success[] = $name; else if ( isset( $data['error'] ) && isset( $data['error']['message'] ) ) $fail[$name] = $data['error']['message']; else $fail[$name] = __( 'Unknown server error.', 'it-l10n-ithemes-security-pro' ); } if ( ! empty( $success ) ) $this->messages[] = wp_sprintf( _n( 'Successfully removed license from %l.', 'Successfully removed licenses from %l.', count( $success ), 'it-l10n-ithemes-security-pro' ), $success ); if ( ! empty( $fail ) ) { foreach ( $fail as $name => $reason ) $this->errors[] = sprintf( __( 'Unable to remove license from %1$s. Reason: %2$s', 'it-l10n-ithemes-security-pro' ), $name, $reason ); } } public function list_packages( $action = 'list_packages', $post_data = array() ) { require_once( $GLOBALS['ithemes_updater_path'] . '/packages.php' ); $details = Ithemes_Updater_Packages::get_full_details(); $packages = $details['packages']; $licensed = array(); $unlicensed = array(); $unrecognized = array(); foreach ( $packages as $path => $data ) { $name = Ithemes_Updater_Functions::get_package_name( $data['package'] ); $data['path'] = $path; if ( isset( $data['status'] ) && 'unlicensed' == $data['status'] ) $unlicensed[$name] = $data; else if ( isset( $data['status'] ) && in_array( $data['status'], array( 'active', 'expired' ) ) ) $licensed[$name] = $data; else $unrecognized[$name] = $data; } if ( ! empty( $_REQUEST['updated_url'] ) ) { $this->messages[] = __( 'Successfully updated the Licensed URL.', 'it-l10n-ithemes-security-pro' ); } $this->show_notices(); ?>
iThemes support and provide them with the details given below.', 'it-l10n-ithemes-security-pro' ), 'https://ithemes.com/support/' ); ?>
%s.', 'it-l10n-ithemes-security-pro' ), $site_url_from_server ); ?>
$message
$error
$error