%PDF- %PDF-
Direktori : /home/tradesc/www/relax/wp-content/plugins/wpforms-lite/src/Admin/Tools/Views/ |
Current File : /home/tradesc/www/relax/wp-content/plugins/wpforms-lite/src/Admin/Tools/Views/Logs.php |
<?php namespace WPForms\Admin\Tools\Views; use WPForms\Logger\Log; use WPForms\Logger\ListTable; /** * Class Logs. * * @since 1.6.6 */ class Logs extends View { /** * View slug. * * @since 1.6.6 * * @var string */ protected $slug = 'logs'; /** * ListTable instance. * * @since 1.6.6 * * @var ListTable */ private $list_table = []; /** * Init view. * * @since 1.6.6 */ public function init() { $this->logs_controller(); } /** * Get view label. * * @since 1.6.6 * * @return string */ public function get_label() { return esc_html__( 'Logs', 'wpforms-lite' ); } /** * Checking user capability to view. * * @since 1.6.6 * * @return bool */ public function check_capability() { return wpforms_current_user_can(); } /** * Get ListTable instance. * * @since 1.6.6 * * @return ListTable */ private function get_list_table(): ListTable { if ( empty( $this->list_table ) ) { $log_obj = wpforms()->obj( 'log' ); if ( $log_obj ) { $this->list_table = $log_obj->get_list_table(); } } return $this->list_table; } /** * Display view content. * * @since 1.6.6 */ public function display() { ?> <form action="<?php echo esc_url( $this->get_link() ); ?>" method="POST"> <?php $this->nonce_field(); ?> <div class="wpforms-setting-row tools"> <h4><?php esc_html_e( 'Log Settings', 'wpforms-lite' ); ?></h4> <p><?php esc_html_e( 'Enable and configure the logging functionality while debugging behavior of various parts of the plugin, including form and entry processing.', 'wpforms-lite' ); ?></p> </div> <div class="wpforms-setting-row tools wpforms-setting-row-toggle wpforms-clear" id="wpforms-setting-row-logs-enable"> <div class="wpforms-setting-label"> <label for="wpforms-setting-logs-enable"><?php esc_html_e( 'Enable Logs', 'wpforms-lite' ); ?></label> </div> <div class="wpforms-setting-field"> <span class="wpforms-toggle-control"> <input type="checkbox" id="wpforms-setting-logs-enable" name="logs-enable" value="1" <?php checked( wpforms_setting( 'logs-enable' ) ); ?>> <label class="wpforms-toggle-control-icon" for="wpforms-setting-logs-enable"></label> <label for="wpforms-setting-logs-enable" class="wpforms-toggle-control-status" data-on="On" data-off="Off"> <?php wpforms_setting( 'logs-enable' ) ? esc_html_e( 'On', 'wpforms-lite' ) : esc_html_e( 'Off', 'wpforms-lite' ); ?> </label> </span> <p class="desc"> <?php esc_html_e( 'Start logging WPForms-related events. This is recommended only while debugging.', 'wpforms-lite' ); ?> </p> </div> </div> <div class="wpforms-logs-settings <?php echo wpforms_setting( 'logs-enable' ) ? '' : 'wpforms-hidden'; ?>"> <?php $this->types_block(); $this->user_roles_block(); $this->users_block(); ?> </div> <p class="submit"> <button class="wpforms-btn wpforms-btn-md wpforms-btn-orange" name="wpforms-settings-submit"> <?php esc_html_e( 'Save Settings', 'wpforms-lite' ); ?> </button> </p> </form> <?php $logs_list_table = $this->get_list_table(); if ( wpforms_setting( 'logs-enable' ) || $logs_list_table->get_total() ) { $logs_list_table->display_page(); } } /** * Types block. * * @since 1.6.6 */ private function types_block() { ?> <div class="wpforms-setting-row tools wpforms-setting-row-select wpforms-clear" id="wpforms-setting-row-log-types"> <div class="wpforms-setting-label"> <label for="wpforms-setting-logs-types"><?php esc_html_e( 'Log Types', 'wpforms-lite' ); ?></label> </div> <div class="wpforms-setting-field"> <span class="choicesjs-select-wrap"> <select id="wpforms-setting-logs-types" class="choicesjs-select" name="logs-types[]" multiple size="1"> <?php $log_types = wpforms_setting( 'logs-types', [] ); foreach ( Log::get_log_types() as $slug => $name ) { ?> <option value="<?php echo esc_attr( $slug ); ?>" <?php selected( in_array( $slug, $log_types, true ) ); ?> > <?php echo esc_html( $name ); ?> </option> <?php } ?> </select> </span> <p class="desc"><?php esc_html_e( 'Select the types of events you want to log. Everything is logged by default.', 'wpforms-lite' ); ?></p> </div> </div> <?php } /** * User roles block. * * @since 1.6.6 */ private function user_roles_block() { ?> <div class="wpforms-setting-row tools wpforms-setting-row-select wpforms-clear" id="wpforms-setting-row-log-user-roles"> <div class="wpforms-setting-label"> <label for="wpforms-setting-logs-user-roles"><?php esc_html_e( 'User Roles', 'wpforms-lite' ); ?></label> </div> <div class="wpforms-setting-field"> <span class="choicesjs-select-wrap"> <?php $logs_user_roles = wpforms_setting( 'logs-user-roles', [] ); $roles = wp_list_pluck( get_editable_roles(), 'name' ); ?> <select id="wpforms-setting-logs-user-roles" class="choicesjs-select" name="logs-user-roles[]" multiple size="1"> <?php foreach ( $roles as $slug => $name ) { ?> <option value="<?php echo esc_attr( $slug ); ?>" <?php selected( in_array( $slug, $logs_user_roles, true ) ); ?> > <?php echo esc_html( $name ); ?> </option> <?php } ?> </select> <span class="hidden" id="wpforms-setting-logs-user-roles-selectform-spinner"> <i class="fa fa-cog fa-spin fa-lg"></i> </span> </span> <p class="desc"> <?php esc_html_e( 'Select the user roles you want to log. All roles are logged by default.', 'wpforms-lite' ); ?> </p> </div> </div> <?php } /** * Users block. * * @since 1.6.6 */ private function users_block() { ?> <div class="wpforms-setting-row tools wpforms-setting-row-select wpforms-clear" id="wpforms-setting-row-log-users"> <div class="wpforms-setting-label"> <label for="wpforms-setting-logs-users"><?php esc_html_e( 'Users', 'wpforms-lite' ); ?></label> </div> <div class="wpforms-setting-field"> <span class="choicesjs-select-wrap"> <select id="wpforms-setting-logs-users" class="choicesjs-select" name="logs-users[]" multiple size="1"> <?php $users = get_users( [ 'fields' => [ 'ID', 'display_name' ] ] ); $users = wp_list_pluck( $users, 'display_name', 'ID' ); $logs_users = wpforms_setting( 'logs-users', [] ); foreach ( $users as $slug => $name ) { ?> <option value="<?php echo esc_attr( $slug ); ?>" <?php selected( in_array( $slug, $logs_users, true ) ); ?> > <?php echo esc_html( $name ); ?> </option> <?php } ?> </select> <span class="hidden" id="wpforms-setting-logs-users-selectform-spinner"> <i class="fa fa-cog fa-spin fa-lg"></i> </span> </span> <p class="desc"> <?php esc_html_e( 'Log events for specific users only. All users are logged by default.', 'wpforms-lite' ); ?> </p> </div> </div> <?php } /** * Controller. * * @since 1.6.6 */ private function logs_controller() { if ( $this->verify_nonce() ) { $this->update_settings(); } $logs_list_table = $this->get_list_table(); $logs_list_table->process_admin_ui(); } /** * Update settings. * * @since 1.8.7 * * @return void */ public function update_settings() { $settings = get_option( 'wpforms_settings' ); $was_enabled = ! empty( $settings['logs-enable'] ) ? $settings['logs-enable'] : 0; $settings['logs-enable'] = filter_input( INPUT_POST, 'logs-enable', FILTER_VALIDATE_BOOLEAN ); $logs_types = filter_input( INPUT_POST, 'logs-types', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_REQUIRE_ARRAY ); $logs_user_roles = filter_input( INPUT_POST, 'logs-user-roles', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_REQUIRE_ARRAY ); $logs_users = filter_input( INPUT_POST, 'logs-users', FILTER_SANITIZE_NUMBER_INT, FILTER_REQUIRE_ARRAY ); if ( $was_enabled ) { $settings['logs-types'] = $logs_types ? $logs_types : []; $settings['logs-user-roles'] = $logs_user_roles ? $logs_user_roles : []; $settings['logs-users'] = $logs_users ? array_map( 'absint', $logs_users ) : []; } wpforms_update_settings( $settings ); } }