Files
wp-multisite-waas/inc/class-user-switching.php
David Stone d88e50df38 Prep Plugin for release on WordPress.org (#23)
* Update translation text domain
* Escape everything that should be escaped.
* Add nonce checks where needed.
* Sanitize all inputs.
* Apply Code style changes across the codebase.
* Correct many deprecation notices.
* Optimize load order of many filters.
* Add Proper Build script
* Use emojii flags
* Fix i18n deprecation  notice for translating too early
* Put all scripts in footer and load async
2025-04-14 11:36:46 -06:00

131 lines
2.7 KiB
PHP

<?php
/**
* WP Multisite WaaS User_Switching
*
* Log string messages to a file with a timestamp. Useful for debugging.
*
* @package WP_Ultimo
* @subpackage User_Switching
* @since 2.0.0
*/
namespace WP_Ultimo;
// Exit if accessed directly
defined('ABSPATH') || exit;
/**
* WP Multisite WaaS User_Switching
*
* @since 2.0.0
*/
class User_Switching {
use \WP_Ultimo\Traits\Singleton;
/**
* Constructor for the User_Switching.
*/
public function __construct() {
add_action('plugins_loaded', [$this, 'register_forms']);
}
/**
* Check if Plugin User Switching is activated
*
* @since 2.0.0
*/
public function check_user_switching_is_activated(): bool {
return class_exists('user_switching');
}
/**
* Register forms
*
* @since 2.0.0
*
* @return void
*/
public function register_forms(): void {
wu_register_form(
'install_user_switching',
[
'render' => [$this, 'render_install_user_switching'],
]
);
}
/**
* Create Install Form of User Switching
*
* @since 2.0.0
*
* @return void
*/
public function render_install_user_switching(): void {
$fields = [
'title' => [
'type' => 'text-display',
'title' => '',
'display_value' => __('This feature requires the plugin <strong>User Switching</strong> to be installed and active.', 'wp-multisite-waas'),
'tooltip' => '',
],
'link' => [
'type' => 'link',
'display_value' => __('Install User Switching', 'wp-multisite-waas'),
'classes' => 'button button-primary wu-w-full',
'wrapper_classes' => 'wu-items-end wu-text-center wu-bg-gray-100',
'html_attr' => [
'href' => add_query_arg(
[
's' => 'user-switching',
'tab' => 'search',
'type' => 'tag',
],
network_admin_url('plugin-install.php')
),
],
],
];
$form = new \WP_Ultimo\UI\Form(
'install_user_switching',
$fields,
[
'views' => 'admin-pages/fields',
'classes' => 'wu-modal-form wu-widget-list wu-striped wu-m-0 wu-mt-0',
'field_wrapper_classes' => 'wu-w-full wu-box-border wu-items-center wu-flex wu-justify-between wu-p-4 wu-m-0 wu-border-t wu-border-l-0 wu-border-r-0 wu-border-b-0 wu-border-gray-300 wu-border-solid',
'html_attr' => [],
]
);
$form->render();
}
/**
* This function return should return the correct url
*
* @since 2.0.0
*
* @param int $user_id User Id.
*
* @return string
*/
public function render($user_id) {
$user = new \WP_User($user_id);
if ( ! $this->check_user_switching_is_activated()) {
return wu_get_form_url('install_user_switching');
} else {
$link = \user_switching::switch_to_url($user);
return $link;
}
}
}