Current File : /home/inteuuod/public_html/wp-content/plugins/complianz-gdpr/onboarding//class-onboarding.php
<?php
defined('ABSPATH') or die();
require_once(cmplz_path . 'class-installer.php');
class cmplz_onboarding {
private static $_this;
function __construct() {
if ( isset( self::$_this ) ) {
wp_die( sprintf( '%s is a singleton class and you cannot create a second instance.', get_class( $this ) ) );
}
self::$_this = $this;
add_filter( "cmplz_do_action", array($this, 'handle_onboarding_action'), 10, 3);
add_filter( "admin_init", array($this, 'maybe_redirect_to_settings_page'));
}
static function this() {
return self::$_this;
}
/**
* @param $data
* @param $action
* @param $request
*
* @return array
*/
public function handle_onboarding_action($data, $action, $request): array {
if ( ! cmplz_user_can_manage() ) {
return [];
}
switch( $action ){
case 'get_recommended_plugins_status':
$data = $request->get_json_params();
$plugins = $data['plugins'] ?? [];
$data = [
'plugins' => $this->get_recommended_plugins_status($plugins),
'isUpgrade' => get_option('cmplz_upgraded_to_7', false)
];
break;
case 'install_plugin':
$data = $request->get_json_params();
$slug = $data['slug'] ?? [];
$plugins = $data['plugins'] ?? [];
require_once(cmplz_path . 'class-installer.php');
$plugin = new cmplz_installer($slug);
$plugin->download_plugin();
$data = [
'plugins' => $this->get_recommended_plugins_status($plugins),
];
break;
case 'activate_plugin':
$data = $request->get_json_params();
$slug = $data['slug'] ?? [];
$plugins = $data['plugins'] ?? [];
require_once(cmplz_path . 'class-installer.php');
$plugin = new cmplz_installer($slug);
$plugin->activate_plugin();
$data = [
'plugins' => $this->get_recommended_plugins_status($plugins),
];
break;
case 'update_email':
$data = $request->get_json_params();
$email = sanitize_email($data['email']);
if (is_email($email )) {
cmplz_update_option_no_hooks('notifications_email_address', $email );
cmplz_update_option_no_hooks('send_notifications_email', 1 );
if ( $data['sendTestEmail'] ) {
$mailer = new cmplz_mailer();
$mailer->send_test_mail();
}
if ( $data['includeTips'] ) {
$this->signup_for_mailinglist( $email );
}
}
$data = [];
break;
}
return $data;
}
public function get_recommended_plugins_status($plugins){
foreach ($plugins as $index => $plugin ){
$slug = sanitize_title($plugin['slug']);
$premium = $plugin['premium'] ?? false;
$premium = $premium ? sanitize_title($premium) : false;
//check if plugin is downloaded
$installer = new cmplz_installer($slug);
if ( !$installer->plugin_is_downloaded() ) {
$plugins[$index]['status'] = 'not-installed';
} else if ($installer->plugin_is_activated()) {
$plugins[$index]['status'] = 'activated';
} else {
$plugins[$index]['status'] = 'installed';
}
//If not found, check for premium
//if free is activated, skip this step
//don't update is the premium status is not-installed. Then we leave it as it is.
if ( $premium && $plugins[$index]['status'] !== 'activated' ) {
$installer = new cmplz_installer($premium);
if ($installer->plugin_is_activated()) {
$plugins[$index]['status'] = 'activated';
} else if ($installer->plugin_is_downloaded()) {
$plugins[$index]['status'] = 'installed';
}
}
}
return $plugins;
}
/**
* Signup for Tips & Tricks from Really Simple Security
*
* @param string $email
*
* @return void
*/
public function signup_for_mailinglist( string $email): void {
$license_key = '';
if ( defined('rsssl_pro') ) {
$license_key = COMPLIANZ::$license->license_key();
$license_key = COMPLIANZ::$license->maybe_decode( $license_key );
}
$api_params = array(
'has_premium' => defined('cmplz_premium'),
'license' => $license_key,
'email' => sanitize_email($email),
'domain' => esc_url_raw( site_url() ),
);
wp_remote_post( 'https://mailinglist.complianz.io', array( 'timeout' => 15, 'sslverify' => true, 'body' => $api_params ) );
}
/**
* Redirect to settings page on activation, including a tour
* @return void
*/
public function maybe_redirect_to_settings_page() {
if ( get_transient('cmplz_redirect_to_settings_page' ) ) {
delete_transient('cmplz_redirect_to_settings_page' );
if ( ! get_option('cmplz_onboarding_dismissed') && ! isset( $_GET['onboarding'] ) ) {
update_option( 'cmplz_onboarding_dismissed', true, false );
wp_redirect( add_query_arg( [ 'onboarding' => 1 ], cmplz_admin_url() ) );
exit;
}
if ( !isset($_GET['page']) || $_GET['page'] !== 'complianz' ) {
wp_redirect( add_query_arg( array( 'page' => 'complianz' ), cmplz_admin_url() ) );
exit;
}
}
}
}