FALSE]);
}
}
}
}
/**
* When adding a new site, add it to the WebTotem platform.
*/
public static function addNewSite($new_site){
$domain = untrailingslashit($new_site->domain . $new_site->path);
WebTotemAPI::addMultiSiteNewSites([$domain]);
}
/**
* Verify the nonce of the previous page after a form submission.
*
* @return bool True if the nonce is valid, false otherwise.
*/
public static function checkNonce() {
if (!empty($_POST)) {
$name = 'wtotem_page_nonce';
$value = WebTotemRequest::post($name);
if (!$value || !wp_verify_nonce($value, $name)) {
WebTotemOption::setNotification('error', __('The WordPress CSRF check failed. The submitted form is missing an important unique code. Go back and try again.', 'wtotem'));
return false;
}
}
return true;
}
/**
* Authentication.
*
* @return mixed
*/
public static function wt_authenticate($user, $username = null, $password = null) {
if(WebTotemCaptcha::isEnabled()) {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
return $user;
}
$token = WebTotemCaptcha::get_token();
$score = WebTotemCaptcha::score($token, WebTotemOption::getPluginSettings('recaptcha_v3_secret'));
if($score < 0.5) {
return new WP_Error('authentication_failed', __('ERROR : Please check the ReCaptcha box or try to reload page.','wtotem'));
}
}
if(isset($_POST['wtotem-token']) && is_string($_POST['wtotem-token']) && !empty($_POST['wtotem-token'])){
if ( is_object( $user ) && ( $user instanceof \WP_User ) ) {
if ( WebTotemLogin::hasUser2faActivated( $user ) ) {
$check2faCode = WebTotemLogin::check2faCode( $user, $_POST['wtotem-token']);
if ( ! $check2faCode ) {
return new \WP_Error( 'wtotem_two_factor_failed', wp_kses( __( 'CODE INVALID: The 2FA code provided is either expired or invalid. Please try again.', 'wtotem' ), array( 'strong' => array() ) ) );
}
}
}
}
return $user;
}
/**
* Authentication.
*
* @return mixed
*/
public static function wt_lost_password($errors = null, $user_data = null) {
return WebTotemBFProtection::lostPassword($errors);
}
/**
* Restore and then hide the readme file when updating the WordPress.
*
* @param string $string
* @return string
*/
public static function restoreReadmeWhenUpdating($string) {
static $didRun;
if (!isset($didRun)) {
$didRun = true;
WebTotemOption::restoreReadme();
register_shutdown_function('WebTotemOption::hideReadme');
}
return $string;
}
/**
* Login Page
*/
public static function loginEnqueueScripts() {
$recaptcha_enabled = WebTotemCaptcha::isEnabled();
if ($recaptcha_enabled) {
$recaptcha_site_key = WebTotemOption::getPluginSettings('recaptcha_v3_site_key');
wp_enqueue_script('wtotem_recaptcha', 'https://www.google.com/recaptcha/api.js?render=' . $recaptcha_site_key);
}
wp_register_script(
'wtotem_login',
WEBTOTEM_URL . '/includes/js/login.js',
['jquery'],
WebTotem::fileVersion('includes/js/login.js'),
false
);
wp_enqueue_script('wtotem_login');
wp_register_style(
'wtotem_login',
WEBTOTEM_URL . '/includes/css/login.css',
[],
WebTotem::fileVersion('includes/css/login.css')
);
wp_enqueue_style('wtotem_login');
wp_localize_script('wtotem_login', 'wtotem_login_vars', [
'recaptcha_site_key' => WebTotemCaptcha::_siteKey(),
'recaptcha_is_enabled' => $recaptcha_enabled,
'ajaxurl' => admin_url('admin-ajax.php'),
]);
}
/**
* A safe way to add JavaScript and css files to a WordPress-managed page
*
* @return void
*/
public static function enqueueScripts() {
$_page = WebTotemRequest::get('page');
if(strpos($_page, 'wtotem') === 0){
// Adding CSS files.
wp_register_style(
'wtotem_flatpickr',
WEBTOTEM_URL . '/includes/css/flatpickr.min.css',
[],
WebTotem::fileVersion('includes/css/flatpickr.min.css')
);
wp_enqueue_style('wtotem_flatpickr');
wp_register_style(
'wtotem_main_css',
WEBTOTEM_URL . '/includes/css/main.css',
[],
WebTotem::fileVersion('includes/css/main.css')
);
wp_enqueue_style('wtotem_main_css');
// Adding JS files.
wp_register_script(
'wtotem_amplitude',
WEBTOTEM_URL . '/includes/js/amplitude.js',
[ 'jquery' ],
WebTotem::fileVersion('includes/js/amplitude.js'),
false
);
wp_enqueue_script('wtotem_amplitude');
wp_register_script(
'wtotem_d3',
WEBTOTEM_URL . '/includes/js/d3.v4.js',
['jquery'],
WebTotem::fileVersion('includes/js/d3.v4.js'),
true
);
wp_enqueue_script('wtotem_d3');
wp_register_script(
'wtotem_chart',
WEBTOTEM_URL . '/includes/js/chart.js',
['jquery', 'wtotem_d3', 'wtotem_jsdelivr'],
WebTotem::fileVersion('includes/js/chart.js'),
true
);
wp_enqueue_script('wtotem_chart');
wp_register_script(
'wtotem_flatpickr_js',
WEBTOTEM_URL . '/includes/js/flatpickr.js',
[ 'jquery', 'wp-i18n' ],
WebTotem::fileVersion('includes/js/flatpickr.js'),
true
);
wp_enqueue_script('wtotem_flatpickr_js');
wp_set_script_translations( 'wtotem_flatpickr_js', 'wtotem' );
wp_register_script(
'wtotem_jsdelivr',
WEBTOTEM_URL . '/includes/js/jsdelivr_chart.js',
[ 'jquery' ],
WebTotem::fileVersion('includes/js/jsdelivr_chart.js'),
true
);
wp_enqueue_script('wtotem_jsdelivr');
wp_register_script(
'wtotem_jquery_qrcode',
WEBTOTEM_URL . '/includes/js/jquery.qrcode.min.js',
[ 'jquery' ],
WebTotem::fileVersion('includes/js/jquery.qrcode.min.js'),
true
);
wp_enqueue_script('wtotem_jquery_qrcode');
wp_register_script(
'wtotem_progress_bar',
WEBTOTEM_URL . '/includes/js/progress_bar.js',
[],
WebTotem::fileVersion('includes/js/progress_bar.js'),
true
);
wp_enqueue_script('wtotem_progress_bar');
wp_register_script(
'wtotem_main',
WEBTOTEM_URL . '/includes/js/main.js',
['jquery'],
WebTotem::fileVersion('includes/js/main.js'),
true
);
wp_enqueue_script('wtotem_main');
}
}
}