File "module-settings.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/better-wp-security/core/deprecated/module-settings.php
File size: 7.85 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* The Solid Security Module Settings Page API parent class.
*
* @property-read string $id
* @property-read string $title
* @property-read string $description
* @property-read string $type
* @property-read string $pro
* @property-read bool $can_save
* @property-read bool $redraw_on_save
* @property-read bool $upsell
* @property-read string $upsell_url
* @property-read bool $information_only
* @property-read string $status
* @property-read string $documentation
*/
class ITSEC_Module_Settings_Page {
/**
* Unique ID for the module.
*
* This is used to store the module's data and generate form inputs.
*
* @access protected
* @var string
*/
protected $id = '';
/**
* User-friendly display title for the module.
*
* @access protected
* @var string
*/
protected $title = '';
/**
* User-friendly display description for the module.
*
* @access protected
* @var string
*/
protected $description = '';
/**
* Whether the module is categorized as additional or recommended.
*
* @access protected
* @var string
*/
protected $type = 'recommended'; // "advanced" or "recommended"
/**
* Whether the settings require resaving after activation in order to fully-activate the module.
*
* @access protected
* @var boolean
*/
protected $requires_resave_after_activation = false;
/**
* Whether the module is part of Solid Security Pro or not.
*
* @access protected
* @var bool
*/
protected $pro = false;
/**
* Whether the module settings can be saved.
*
* @access protected
* @var bool
*/
protected $can_save = true;
/**
* Whether the module settings should be redrawn on save.
*
* @access protected
* @var bool
*/
protected $redraw_on_save = false;
/**
* Whether the module is a Solid Security Pro module being shown as an upsell or not.
*
* @access protected
* @var bool
*/
protected $upsell = false;
/**
* URL to use for upsell if this is one.
*
* @access protected
* @var string
*/
protected $upsell_url = 'https://ithemes.com/security/';
/**
* Whether the module is for informational purposes only - no settings, no actions
*
* @access protected
* @var bool
*/
protected $information_only = false;
/**
* Set the module status to 'warning' to signal to the user it needs attention.
*
* @var string
*/
protected $status = '';
/**
* Link to documentation for this module.
*
* @var string
*/
protected $documentation = '';
/**
* Constructor.
*
* Register the module settings to register themselves on init. Each subclass should use the constructor to set the
* id, title, description, type, pro, can_save, and redraw_on_save properties to values specific to that module and then call
* parent::__construct().
*
* @access public
*/
public function __construct() {
_deprecated_function( static::class . '::__construct', '7.0.0' );
add_action( 'itsec-settings-page-register-modules', array( $this, 'register' ) );
}
/**
* Make protected properties public read-only.
*
* This function should be left as-is in subclasses.
*
* @access public
*
* @param string $name Property to get.
*
* @return mixed Property.
*/
public function __get( $name ) {
if ( in_array( $name, array( 'id', 'title', 'description', 'type', 'pro', 'can_save', 'redraw_on_save', 'upsell', 'upsell_url', 'information_only', 'status', 'documentation' ) ) ) {
return $this->$name;
}
trigger_error( 'Attempted to check invalid property: ' . get_class( $this ) . "->$name", E_USER_ERROR );
}
/**
* Register the module's settings with the settings page.
*
* This function should be left as-is in subclasses.
*
* @access public
*/
public function register() {
foreach ( array( 'id', 'title', 'description' ) as $name ) {
if ( empty( $this->$name ) ) {
trigger_error( get_class( $this ) . " has not set the $name variable.", E_USER_ERROR );
}
}
do_action( 'itsec-settings-page-register-module', $this );
}
/**
* Allow the module to enqueue module-specific scripts and styles.
*
* @access public
*/
public function enqueue_scripts_and_styles() {}
/**
* Allow a module to process an AJAX request.
*
* The module's implementation of this function can either handle all input manually or return a data structure to
* be returned by the module API. The module's Javascript can make use of the itsec_module_send_ajax_request()
* Javascript function in order to make the AJAX request. It has a request format of:
* itsecSettingsPage.sendModuleAJAXRequest( module, data, callback );
*
* @access public
*
* @param array $data Array of data sent by the AJAX request.
*/
public function handle_ajax_request( $data ) {}
/**
* Return the settings for the module.
*
* @access public
*
* @return array List of settings.
*/
public function get_settings() {
return ITSEC_Modules::get_settings( $this->id );
}
/**
* Render the module's settings content.
*
* This function should be left as-is in subclasses.
*
* @access public
*
* @param ITSEC_Form $form ITSEC_Form object used to create inputs.
*/
public function render( $form ) {
$messages = ITSEC_Lib_Remote_Messages::get_messages_for_placement( array( 'module' => $this->id ) );
?>
<div class="itsec-settings-module-description">
<?php $this->render_description( $form ); ?>
</div>
<?php if ( $messages ) : ?>
<div class="itsec-settings-module-service-status">
<?php foreach ( $messages as $message ): ?>
<div class="notice notice-alt notice-<?php echo esc_attr( $message['type'] ); ?> below-h2">
<p><?php echo $message['message']; ?></p>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div class="itsec-settings-module-settings">
<?php $this->render_settings( $form ); ?>
</div>
<?php
}
/**
* Render the module description.
*
* The description is shown whether the module is active or not. Ensure that the description adequately informs the
* user of the value of the module without requiring them to see the actual settings.
*
* @access protected
*
* @param object $form ITSEC_Form object used to create inputs.
*/
protected function render_description( $form ) {
?>
<p>Example module description.</p>
<?php
}
/**
* Render the module settings.
*
* The inputs and input descriptions should be output in this function. This output is hidden when a module is
* deactivated.
*
* @access protected
*
* @param ITSEC_Form $form ITSEC_Form object used to create inputs.
*/
protected function render_settings( $form ) {
?>
<table class="form-table itsec-settings-section">
<tbody>
<tr>
<th><label>Setting 1</label></th>
<td>
<?php $form->add_text( 'setting_1' ); ?>
</td>
</tr>
<tr>
<th><label>Setting 2</label></th>
<td>
<?php $form->add_text( 'setting_2' ); ?>
</td>
</tr>
</tbody>
</table>
<?php
}
/**
* Process form input.
*
* This function should be left as-is in subclasses unless specific processing is required.
*
* @access public
*
* @param array $data Array of form inputs to be processed and stored.
*/
public function handle_form_post( $data ) {
ITSEC_Modules::set_settings( $this->id, $data );
}
/**
* Returns the errors array.
*
* This function should be left as-is in subclasses.
*
* @access public
*
* @return array Array of WP_Error objects.
*/
public function get_errors() {
$validator = ITSEC_Modules::get_validator( $this->id );
if ( is_null( $validator ) ) {
return array();
}
return $validator->get_errors();
}
/**
* Returns the messages array.
*
* This function should be left as-is in subclasses.
*
* @access public
*
* @return array Array of status or update messages.
*/
public function get_messages() {
$validator = ITSEC_Modules::get_validator( $this->id );
if ( is_null( $validator ) ) {
return array();
}
return $validator->get_messages();
}
}