246 lines
6.6 KiB
PHP
246 lines
6.6 KiB
PHP
<?php
|
|
/**
|
|
* Controller: wp-cli.
|
|
*
|
|
* WP-CLI commands.
|
|
*
|
|
* @since 4.6
|
|
*
|
|
* @package wsal
|
|
* @subpackage controllers
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace WSAL\Controllers\WP_CLI;
|
|
|
|
use WSAL\Views\Notifications;
|
|
use WSAL\Helpers\Settings_Helper;
|
|
use WSAL\Controllers\Alert_Manager;
|
|
use WSAL\Helpers\Plugin_Settings_Helper;
|
|
|
|
// Exit if accessed directly.
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
if ( class_exists( '\WP_CLI_Command' ) ) {
|
|
if ( ! class_exists( '\WSAL\Controllers\WP_CLI\WP_CLI_Commands' ) ) {
|
|
/**
|
|
* Responsible for execution of the wp-cli commands passed.
|
|
*
|
|
* @since 4.6.0
|
|
*/
|
|
class WP_CLI_Commands extends \WP_CLI_Command {
|
|
/**
|
|
* Sets wizard as completed
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 4.6.0
|
|
*
|
|
* @subcommand remove_wizard
|
|
*/
|
|
public function remove_wizard( $args, $assoc_args ) {
|
|
Settings_Helper::set_boolean_option_value( 'setup-modal-dismissed', true, true );
|
|
\WP_CLI::log(
|
|
__( 'The WSAL wizard is marked as dismissed', 'wp-security-audit-log' )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Removes daily email notification.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 4.6.0
|
|
*
|
|
* @subcommand remove_daily_notification
|
|
*/
|
|
public function remove_daily_notification( $args, $assoc_args ) {
|
|
|
|
$built_notifications = Settings_Helper::get_option_value( Notifications::BUILT_IN_NOTIFICATIONS_SETTINGS_NAME, array() );
|
|
|
|
$built_notifications['daily_summary_notification'] = false;
|
|
|
|
Settings_Helper::set_option_value( Notifications::BUILT_IN_NOTIFICATIONS_SETTINGS_NAME, $built_notifications );
|
|
|
|
Alert_Manager::trigger_event( 6310, array( 'EventType' => 'disabled' ) );
|
|
\WP_CLI::log(
|
|
__( 'The WSAL daily notification is removed', 'wp-security-audit-log' )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Removes weekly email notification.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 5.3.0
|
|
*
|
|
* @subcommand remove_weekly_notification
|
|
*/
|
|
public function remove_weekly_notification( $args, $assoc_args ) {
|
|
|
|
$built_notifications = Settings_Helper::get_option_value( Notifications::BUILT_IN_NOTIFICATIONS_SETTINGS_NAME, array() );
|
|
|
|
$built_notifications['weekly_summary_notification'] = false;
|
|
|
|
Settings_Helper::set_option_value( Notifications::BUILT_IN_NOTIFICATIONS_SETTINGS_NAME, $built_notifications );
|
|
|
|
Alert_Manager::trigger_event( 6319, array( 'EventType' => 'disabled' ) );
|
|
\WP_CLI::log(
|
|
__( 'The WSAL daily notification is removed', 'wp-security-audit-log' )
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Enables / Disables alert by its Id.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 5.2.2
|
|
*
|
|
* @subcommand disable_enable_alert
|
|
*/
|
|
public function disable_enable_alert( $args, $assoc_args ) {
|
|
|
|
Alert_Manager::disable_enable_alert( $args );
|
|
}
|
|
|
|
/**
|
|
* Sets Hide/Show plugin option in the list of installed plugins.
|
|
*
|
|
* ## OPTIONS
|
|
*
|
|
* [<1|true|0|false>]
|
|
* : The boolean (true|false) or integer (1|0). Everything different than positive or negative numbers or string 'true' will be treated as false. 0 - means false.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 5.2.2
|
|
*
|
|
* @subcommand set_hide_plugin
|
|
*/
|
|
public function set_hide_plugin( $args, $assoc_args ) {
|
|
|
|
$val = reset( $args );
|
|
|
|
if ( is_numeric( $val ) ) {
|
|
$val = (bool) $val;
|
|
} elseif ( is_string( $val ) ) {
|
|
if ( 'true' === $val ) {
|
|
$val = true;
|
|
} else {
|
|
$val = false;
|
|
}
|
|
}
|
|
|
|
Settings_Helper::set_boolean_option_value( 'hide-plugin', $val );
|
|
}
|
|
|
|
/**
|
|
* Sets Hide/Show plugin option in the list of installed plugins.
|
|
*
|
|
* ## OPTIONS
|
|
*
|
|
* [--enabled=<bool>]
|
|
* : The boolean (true|false). Default is true.
|
|
*
|
|
* [--text=<text>]
|
|
* : Text to show. HTML is enabled.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 5.2.2
|
|
*
|
|
* @subcommand login_page_notification
|
|
*/
|
|
public function login_page_notification( $args, $assoc_args ) {
|
|
$notification_enabled = \WP_CLI\Utils\get_flag_value( $assoc_args, 'enabled', 'true' );
|
|
$notification_enabled = trim( $notification_enabled );
|
|
if ( 'false' === $notification_enabled ) {
|
|
$notification_enabled = false;
|
|
} else {
|
|
$notification_enabled = true;
|
|
}
|
|
|
|
$notification_text = (string) \WP_CLI\Utils\get_flag_value( $assoc_args, 'text', '' );
|
|
|
|
Plugin_Settings_Helper::set_login_page_notification( $notification_enabled );
|
|
|
|
Plugin_Settings_Helper::set_login_page_notification_text( $notification_text );
|
|
}
|
|
|
|
/**
|
|
* Sets the pruning date
|
|
*
|
|
* ## OPTIONS
|
|
*
|
|
* [--enabled=<bool>]
|
|
* : The boolean (true|false). Default is true.
|
|
*
|
|
* [--pruning-value=<size>]
|
|
* : The time value. Integer numbers only. Default is 6.
|
|
*
|
|
* [--pruning-unit=<days|months|years>]
|
|
* : The time unit. Could be either of the following: days, months, years. Default is months.
|
|
*
|
|
* @param array $args - The arguments passed.
|
|
* @param array $assoc_args - The associative array of the arguments passed.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 4.6.0
|
|
*
|
|
* @subcommand set_retention
|
|
*/
|
|
public function set_retention( $args, $assoc_args ) {
|
|
$units = array( 'days', 'months', 'years' );
|
|
|
|
$pruning_enabled = \WP_CLI\Utils\get_flag_value( $assoc_args, 'enabled', 'true' );
|
|
$pruning_enabled = trim( $pruning_enabled );
|
|
if ( 'false' === $pruning_enabled ) {
|
|
$pruning_enabled = false;
|
|
} else {
|
|
$pruning_enabled = true;
|
|
}
|
|
|
|
$pruning_date = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'pruning-value', 6 ) );
|
|
|
|
$pruning_unit = \WP_CLI\Utils\get_flag_value( $assoc_args, 'pruning-unit', 'months' );
|
|
|
|
if ( ! \in_array( $pruning_unit, $units, true ) ) {
|
|
$pruning_unit = 'months';
|
|
}
|
|
|
|
$pruning_date .= ' ' . $pruning_unit;
|
|
|
|
Settings_Helper::set_pruning_date_settings( $pruning_enabled, $pruning_date, $pruning_unit );
|
|
|
|
\WP_CLI::log(
|
|
__( 'The WSAL pruning date is set', 'wp-security-audit-log' )
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|