You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
4.2 KiB
PHP
246 lines
4.2 KiB
PHP
<?php
|
|
/**
|
|
* The Module
|
|
*
|
|
* @since 1.0.32
|
|
* @package RankMath
|
|
* @subpackage RankMath\Module
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Module;
|
|
|
|
use RankMath\Helper;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Module class.
|
|
*/
|
|
class Module {
|
|
|
|
/**
|
|
* Module id.
|
|
*
|
|
* @var string
|
|
*/
|
|
private $id = '';
|
|
|
|
/**
|
|
* Module arguments.
|
|
*
|
|
* @var string
|
|
*/
|
|
private $args = '';
|
|
|
|
/**
|
|
* The Constructor.
|
|
*
|
|
* @param string $id Module unique id.
|
|
* @param array $args Module configuration.
|
|
*/
|
|
public function __construct( $id, $args ) {
|
|
$this->id = $id;
|
|
$this->args = $args;
|
|
}
|
|
|
|
/**
|
|
* Getter.
|
|
*
|
|
* @param string $key Key to get data for.
|
|
* @param mixed $default Defaul value if not found.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function get( $key, $default = '' ) {
|
|
return isset( $this->args[ $key ] ) ? $this->args[ $key ] : $default;
|
|
}
|
|
|
|
/**
|
|
* Has.
|
|
*
|
|
* @param string $key Key to check data.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function has( $key ) {
|
|
return isset( $this->args[ $key ] );
|
|
}
|
|
|
|
/**
|
|
* Get module id.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_id() {
|
|
return $this->id;
|
|
}
|
|
|
|
/**
|
|
* Get module icon.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_icon() {
|
|
return isset( $this->args['icon'] ) ? $this->args['icon'] : 'dashicons-category';
|
|
}
|
|
|
|
/**
|
|
* Echo the setting link.
|
|
*/
|
|
public function the_link() {
|
|
if ( empty( $this->args['settings'] ) ) {
|
|
return;
|
|
}
|
|
?>
|
|
<a href="<?php echo esc_url( $this->args['settings'] ); ?>" class="module-settings button button-secondary"><?php esc_html_e( 'Settings', 'rank-math' ); ?></a>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Is module disabled.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_disabled() {
|
|
return isset( $this->args['disabled'] ) && $this->args['disabled'];
|
|
}
|
|
|
|
/**
|
|
* Does module has BETA version?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_betabadge() {
|
|
return isset( $this->args['betabadge'] ) && $this->args['betabadge'];
|
|
}
|
|
|
|
/**
|
|
* Does module has PRO version?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_probadge() {
|
|
return isset( $this->args['probadge'] ) && $this->args['probadge'];
|
|
}
|
|
|
|
/**
|
|
* Is module upgradeable?
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_upgradeable() {
|
|
return isset( $this->args['upgradeable'] ) && $this->args['upgradeable'];
|
|
}
|
|
|
|
/**
|
|
* Is PRO module.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_pro_module() {
|
|
return isset( $this->args['probadge'] ) && $this->args['probadge'] && ! defined( 'RANK_MATH_PRO_FILE' );
|
|
}
|
|
|
|
/**
|
|
* Get the module dependencies.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_dependencies() {
|
|
return isset( $this->args['dep_modules'] ) ? $this->args['dep_modules'] : [];
|
|
}
|
|
|
|
/**
|
|
* Is module disabled.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_hidden() {
|
|
if ( Helper::is_advanced_mode() ) {
|
|
return false;
|
|
}
|
|
|
|
return in_array( $this->get_id(), [ '404-monitor', 'acf', 'bbpress', 'buddypress', 'redirections', 'role-manager', 'image-seo' ], true );
|
|
}
|
|
|
|
/**
|
|
* Is module admin only.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_admin() {
|
|
return $this->only( 'admin' );
|
|
}
|
|
|
|
/**
|
|
* Is module internal.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_internal() {
|
|
return $this->only( 'internal' );
|
|
}
|
|
|
|
/**
|
|
* Is module skip.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_skip() {
|
|
return $this->only( 'skip' );
|
|
}
|
|
|
|
/**
|
|
* Is module active.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_active() {
|
|
if ( $this->is_disabled() ) {
|
|
return false;
|
|
}
|
|
|
|
$active_modules = get_option( 'rank_math_modules', [] );
|
|
return is_array( $active_modules ) && in_array( $this->get_id(), $active_modules, true );
|
|
}
|
|
|
|
/**
|
|
* Can display module on form.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function can_display() {
|
|
return ! $this->is_internal();
|
|
}
|
|
|
|
/**
|
|
* Check if we can load the module.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function can_load_module() {
|
|
// If its an internal module should be loaded all the time.
|
|
if ( $this->is_internal() ) {
|
|
return true;
|
|
}
|
|
|
|
if ( ! $this->is_active() || $this->is_skip() ) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Check module only for.
|
|
*
|
|
* @param string $check Check against.
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function only( $check ) {
|
|
return isset( $this->args['only'] ) && $check === $this->args['only'];
|
|
}
|
|
}
|