Current File : /home/jeconsul/public_html/wp-content/plugins/presto-player/inc/Services/RewriteRulesManager.php |
<?php
namespace PrestoPlayer\Services;
use PrestoPlayer\Plugin;
/**
* The RewriteRulesManager service.
*/
class RewriteRulesManager {
/**
* The option name for the stored version.
*
* @var string
*/
protected $option_name = 'presto_flush_rewrite_rules';
/**
* Bootstraps the service.
*
* @return void
*/
public function bootstrap() {
add_action( 'admin_init', array( $this, 'flushRewriteRulesOnVersionChange' ) );
}
/**
* Retrieves the stored version from the WordPress options.
*
* @return string The stored version.
*/
public function getStoredVersion() {
return get_option( $this->option_name, '0.0.0' );
}
/**
* Retrieves the current plugin version.
*
* @return string The current plugin version.
*/
public function getCurrentPluginVersion() {
return Plugin::version();
}
/**
* Flushes the rewrite rules if the plugin version has changed.
*
* @return bool|void Returns false if the versions are the same, otherwise void.
*/
public function flushRewriteRulesOnVersionChange() {
$current_version = $this->getCurrentPluginVersion();
$stored_version = $this->getStoredVersion();
if ( ! $this->isVersionDifferent( $current_version, $stored_version ) ) {
return false;
}
return $this->flushRewriteRulesAndUpdateVersion( $current_version );
}
/**
* Checks if the current plugin version is different from the stored version.
*
* @param string $current_version The current plugin version.
* @param string $stored_version The stored plugin version.
*
* @return bool True if the versions are different, false otherwise.
*/
public function isVersionDifferent( $current_version, $stored_version ) {
return version_compare( $current_version, $stored_version, '!=' );
}
/**
* Flushes the rewrite rules and updates the stored version.
*
* @param string $new_version The new plugin version.
*
* @return void
*/
public function flushRewriteRulesAndUpdateVersion( $new_version ) {
flush_rewrite_rules();
return update_option( $this->option_name, $new_version, false );
}
}