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.

206 lines
4.4 KiB
PHP

<?php
namespace DeployerForGit;
/**
* Helper class
*/
class Helper {
/**
* Get the plugin name
*
* @return string
*/
public static function menu_slug() {
return 'deployer-for-git';
}
/**
* Get the theme install page url
*
* @return string
*/
public static function install_theme_url() {
$menu_slug = self::menu_slug();
$path = "admin.php?page={$menu_slug}-install-theme";
$theme_istall_page_url = is_multisite() ? network_admin_url( $path ) : admin_url( $path );
return $theme_istall_page_url;
}
/**
* Get the plugin install page url
*
* @return string
*/
public static function install_plugin_url() {
$menu_slug = self::menu_slug();
$path = "admin.php?page={$menu_slug}-install-plugin";
$plugin_istall_page_url = is_multisite() ? network_admin_url( $path ) : admin_url( $path );
return $plugin_istall_page_url;
}
/**
* Get the available providers
*
* @return array
*/
public static function available_providers() {
return array(
'bitbucket' => 'Bitbucket',
'github' => 'GitHub',
'gitea' => 'Gitea',
'gitlab' => 'GitLab',
);
}
/**
* Get the provider class
*
* @param string $provider Provider name.
* @return string
*/
public static function get_provider_class( $provider ) {
// phpcs:disable Squiz.PHP.NonExecutableCode.Unreachable
switch ( $provider ) {
case 'bitbucket':
return '\DeployerForGit\Providers\BitbucketProvider';
break;
case 'github':
return '\DeployerForGit\Providers\GithubProvider';
break;
case 'gitea':
return '\DeployerForGit\Providers\GiteaProvider';
break;
case 'gitlab':
return '\DeployerForGit\Providers\GitlabProvider';
break;
default:
return '\DeployerForGit\Providers\BitbucketProvider';
break;
}
// phpcs:enable Squiz.PHP.NonExecutableCode.Unreachable
}
/**
* Generate the api secret
*
* @return string
*/
public static function generate_api_secret() {
$key = bin2hex( random_bytes( 32 ) );
return update_option( 'deployer_for_git_api_secret', $key );
}
/**
* Get the api secret
*
* @return string|boolean false
*/
public static function get_api_secret() {
return get_option( 'deployer_for_git_api_secret', false );
}
/**
* Check if WpRocket plugin is activated.
*
* @return boolean
*/
public static function wp_rocket_activated() {
return function_exists( 'rocket_clean_domain' );
}
/**
* Check if WP Optimize plugin is activated.
*
* @return boolean
*/
public static function wp_optimize_activated() {
return class_exists( 'WP_Optimize' );
}
/**
* Check if W3 Total Cache plugin is activated.
*
* @return boolean
*/
public static function w3tc_activated() {
return function_exists( 'w3tc_pgcache_flush' );
}
/**
* Check if LiteSpeed Cache plugin is activated.
*
* @return boolean
*/
public static function litespeed_cache_activated() {
return has_action( 'litespeed_purge_all' );
}
/**
* Check if WP Super Cache plugin is activated.
*
* @return boolean
*/
public static function wp_super_cache_activated() {
return function_exists( 'wp_cache_clear_cache' );
}
/**
* Check if WP Fastest Cache plugin is activated.
*
* @return boolean
*/
public static function wp_fastest_cache_activated() {
return ( isset( $GLOBALS['wp_fastest_cache'] ) && method_exists( $GLOBALS['wp_fastest_cache'], 'deleteCache' ) );
}
/**
* Check if Autoptimize plugin is activated.
*
* @return boolean
*/
public static function autoptimize_activated() {
return method_exists( 'autoptimizeCache', 'clearall' );
}
/**
* Trigger cache flush
*
* @return void
*/
public static function trigger_cache_flush() {
if ( self::wp_rocket_activated() ) {
\rocket_clean_domain();
}
if ( self::wp_optimize_activated() ) {
if ( method_exists( 'WP_Optimize', 'get_page_cache' ) && method_exists( \WP_Optimize()->get_page_cache(), 'purge' ) ) {
\WP_Optimize()->get_page_cache()->purge();
}
}
if ( self::w3tc_activated() ) {
\w3tc_pgcache_flush();
}
if ( self::litespeed_cache_activated() ) {
do_action( 'litespeed_purge_all' );
}
if ( self::wp_super_cache_activated() ) {
\wp_cache_clear_cache();
}
if ( self::wp_fastest_cache_activated() ) {
$GLOBALS['wp_fastest_cache']->deleteCache( true );
}
if ( self::autoptimize_activated() ) {
\autoptimizeCache::clearall();
}
}
}