/home/sylamedg/public_html/wp-content/plugins/personizely/class.personizely-admin.php
<?php
class Personizely_Admin {
private static $initiated = false;
public static function init() {
if (!self::$initiated) {
self::init_plugin_options();
}
}
public static function init_plugin_options() {
if (current_user_can('activate_plugins')) {
add_action('admin_menu', array('Personizely_Admin', 'plugin_settings'));
add_action('admin_init', array('Personizely_Admin', 'handle_form'));
add_filter('allowed_redirect_hosts', array('Personizely_Admin', 'allowed_redirect_hosts'));
add_filter('plugin_action_links_' . plugin_basename(plugin_dir_path(__FILE__) . 'personizely.php'), array('Personizely_Admin', 'admin_plugin_settings_link'));
}
}
public static function allowed_redirect_hosts($hosts) {
$hosts[] = PERSONIZELY_APP_HOST;
return $hosts;
}
public static function admin_plugin_settings_link($links) {
$settings_link = '<a href="' . esc_url(self::get_page_url()) . '">' . __('Settings', 'personizely') . '</a>';
array_unshift($links, $settings_link);
return $links;
}
public static function plugin_settings() {
add_menu_page('Personizely Settings', 'Personizely', 'manage_options', 'personizely', array('Personizely_Admin', 'plugin_settings_view'), PERSONIZELY__PLUGIN_URL . '/assets/img/icon.svg');
}
public static function validate_api_key($api_key) {
return strlen($api_key) === 10 && preg_match('/^[a-z0-9]+$/', $api_key);
}
public static function sanitize_api_key($api_key) {
return sanitize_key($api_key);
}
public static function plugin_settings_view() {
global $wp;
$nonce = wp_create_nonce('personizely_api_key_save');
$params = [
'site' => home_url(add_query_arg(array(), $wp->request)),
'initial' => 1,
'nonce' => $nonce
];
$info = [
'email' => get_option('admin_email'),
'name' => get_option('blogname'),
'domain' => parse_url(get_option('siteurl'))['host']
];
$connectUrl = '/connect/wordpress?'. http_build_query($params);
$data = array(
'app_url' => PERSONIZELY_APP_URL,
'api_key' => Personizely::get_api_key(),
'async' => Personizely::get_async(),
'connect_url' => $connectUrl,
'nonce' => $nonce,
'register_url' => '/register?redirect='. urlencode($connectUrl) . '&' . http_build_query($info),
);
include PERSONIZELY__PLUGIN_DIR . '/views/settings-main.php';
}
public static function handle_form() {
if (get_option('personizely_api_key') === false) add_option('personizely_api_key', '');
if (get_option('personizely_async') === false) add_option('personizely_async', true);
if ($_POST) {
if (isset($_POST['api_key']) &&
$_POST['api_key'] &&
isset($_POST['nonce']) &&
wp_verify_nonce($_POST['nonce'], 'personizely_api_key_save') &&
self::validate_api_key($_POST['api_key'])
) {
update_option('personizely_api_key', self::sanitize_api_key($_POST['api_key']));
update_option('personizely_async', (boolean) $_POST['async']);
wp_safe_redirect(self::get_page_url());
}
}
if (isset($_GET['api_key']) &&
$_GET['api_key'] &&
isset($_GET['nonce']) &&
wp_verify_nonce($_GET['nonce'], 'personizely_api_key_save') &&
self::validate_api_key($_GET['api_key'])
) {
update_option('personizely_api_key', self::sanitize_api_key($_GET['api_key']));
if (isset($_GET['get_started'])) {
wp_safe_redirect(PERSONIZELY_APP_URL . '/start?source=wordpress');
} else {
wp_safe_redirect(self::get_page_url());
}
}
}
public static function get_page_url() {
$args = array('page' => 'personizely');
$url = add_query_arg($args, admin_url('admin.php'));
return $url;
}
public static function log($personizely_debug) {
if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG)
error_log(print_r(compact('personizely_debug'), 1)); // send message to debug.log when in debug mode
}
}