2017-07-26 14:57:52 +03:00
< ? php
namespace um ;
2019-10-04 15:02:37 +03:00
2017-07-26 14:57:52 +03:00
if ( ! defined ( 'ABSPATH' ) ) exit ;
2019-10-04 15:02:37 +03:00
2017-07-26 14:57:52 +03:00
/**
* Ultimate Member Dependency Checker
*
* Checks if Ultimate Member plugin is enabled
*/
if ( ! class_exists ( 'um\Dependencies' ) ) {
2018-03-19 16:31:49 +02:00
/**
* Class Dependencies
*
* @package um
*/
class Dependencies {
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
/**
* @var
*/
private static $active_plugins ;
2017-09-06 17:11:14 +03:00
2018-03-19 16:31:49 +02:00
/**
* For backward compatibility checking
*
* @var array
*/
public $ext_required_version = array (
2019-11-09 18:26:04 +02:00
'bbpress' => '2.0.7' ,
'followers' => '2.1.6' ,
2019-11-09 18:52:27 +02:00
'forumwp' => '2.0.4' ,
2019-11-09 18:26:04 +02:00
'friends' => '2.1.4' ,
'groups' => '2.1.7' ,
'instagram' => '2.0.5' ,
'mailchimp' => '2.2.0' ,
'messaging' => '2.2.5' ,
'mycred' => '2.1.6' ,
'notices' => '2.0.5' ,
'notifications' => '2.1.3' ,
'online' => '2.1.1' ,
2019-10-07 00:48:51 +03:00
'private-content' => '2.0.5' ,
2019-11-09 18:26:04 +02:00
'profile-completeness' => '2.1.2' ,
'recaptcha' => '2.1.2' ,
'reviews' => '2.1.5' ,
'social-activity' => '2.2.0' ,
'social-login' => '2.2.0' ,
2019-10-07 00:48:51 +03:00
'terms-conditions' => '2.1.1' ,
2019-11-09 18:26:04 +02:00
'unsplash' => '2.0.2' ,
'user-bookmarks' => '2.0.2' ,
'user-photos' => '2.0.4' ,
'user-tags' => '2.1.0' ,
'verified-users' => '2.0.5' ,
'woocommerce' => '2.1.9' ,
2019-10-04 15:02:37 +03:00
/*????*/
2018-03-19 16:31:49 +02:00
'restrict-content' => '2.0' ,
2019-10-04 15:02:37 +03:00
/*rc*/
2019-05-07 11:26:12 +03:00
'user-notes' => '2.0' ,
2019-10-04 15:02:37 +03:00
'profile-tabs' => '1.6' ,
/*beta*/
'frontend-posting' => '1.0' ,
/*alpha*/
'user-exporter' => '1.0.0' ,
/*in development*/
2019-09-06 11:53:04 +03:00
'user-location' => '1.0' ,
2019-10-04 15:02:37 +03:00
'filesharing' => '1.0.0' ,
'beaver-builder' => '2.0' ,
'user-events' => '1.0.0' ,
2018-03-19 16:31:49 +02:00
);
2017-09-06 17:11:14 +03:00
2017-10-18 15:45:59 +03:00
2018-03-19 16:31:49 +02:00
/**
* Get all active plugins
*/
public static function init () {
2017-10-18 15:45:59 +03:00
2018-03-19 16:31:49 +02:00
self :: $active_plugins = ( array ) get_option ( 'active_plugins' , array () );
if ( is_multisite () )
self :: $active_plugins = array_merge ( self :: $active_plugins , get_site_option ( 'active_sitewide_plugins' , array () ) );
}
/**
* @return mixed
*/
public function get_active_plugins () {
if ( ! self :: $active_plugins ) self :: init ();
return self :: $active_plugins ;
}
2017-09-06 17:11:14 +03:00
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
/**
* Check if UltimateMember core plugin is active
*
* @return bool
*/
public static function ultimatemember_active_check () {
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
if ( ! self :: $active_plugins ) self :: init ();
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
return in_array ( 'ultimate-member/ultimate-member.php' , self :: $active_plugins ) || array_key_exists ( 'ultimate-member/ultimate-member.php' , self :: $active_plugins );
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-19 16:31:49 +02:00
/**
* Check if bbPress plugin is active
*
* @return bool
*/
public static function bbpress_active_check () {
if ( ! self :: $active_plugins ) self :: init ();
return in_array ( 'bbpress/bbpress.php' , self :: $active_plugins ) || array_key_exists ( 'bbpress/bbpress.php' , self :: $active_plugins );
}
2019-07-12 12:16:50 +03:00
/**
* Check if ForumWP plugin is active
*
* @return bool
*/
public static function forumwp_active_check () {
if ( ! self :: $active_plugins ) self :: init ();
return in_array ( 'forumwp/forumwp.php' , self :: $active_plugins ) || array_key_exists ( 'forumwp/forumwp.php' , self :: $active_plugins );
}
2018-03-19 16:31:49 +02:00
/**
* Check if myCRED plugin is active
*
* @return bool
*/
public static function mycred_active_check () {
if ( ! self :: $active_plugins ) self :: init ();
return in_array ( 'mycred/mycred.php' , self :: $active_plugins ) || array_key_exists ( 'mycred/mycred.php' , self :: $active_plugins );
}
/**
* Check if Woocommerce plugin is active
*
* @return bool
*/
public static function woocommerce_active_check () {
if ( ! self :: $active_plugins ) self :: init ();
return in_array ( 'woocommerce/woocommerce.php' , self :: $active_plugins ) || array_key_exists ( 'woocommerce/woocommerce.php' , self :: $active_plugins );
}
/**
* Compare UM core and extension versions
*
* @param string $um_required_ver
* @param string $ext_ver
* @param string $ext_key
* @param string $ext_title
* @return bool
*/
public function compare_versions ( $um_required_ver , $ext_ver , $ext_key , $ext_title ) {
if ( version_compare ( ultimatemember_version , $um_required_ver , '<' )
|| empty ( $this -> ext_required_version [ $ext_key ] )
|| version_compare ( $this -> ext_required_version [ $ext_key ], $ext_ver , '>' ) ) {
$message = '' ;
if ( version_compare ( ultimatemember_version , $um_required_ver , '<' ) ) {
$message = sprintf ( __ ( 'This version of <strong>"%s"</strong> requires the core <strong>%s</strong> plugin to be <strong>%s</strong> or higher.' , 'ultimate-member' ), $ext_title , ultimatemember_plugin_name , $um_required_ver ) .
'<br />' .
sprintf ( __ ( 'Please update <strong>%s</strong> to the latest version.' , 'ultimate-member' ), ultimatemember_plugin_name );
} elseif ( empty ( $this -> ext_required_version [ $ext_key ] ) || version_compare ( $this -> ext_required_version [ $ext_key ], $ext_ver , '>' ) ) {
$message = sprintf ( __ ( 'Sorry, but this version of <strong>%s</strong> does not work with extension <strong>"%s" %s</strong> version.' , 'ultimate-member' ), ultimatemember_plugin_name , $ext_title , $ext_ver ) .
'<br />' .
2018-08-15 10:09:34 +03:00
sprintf ( __ ( 'Please update extension <strong>"%s"</strong> to the latest version.' , 'ultimate-member' ), $ext_title );
2018-03-19 16:31:49 +02:00
}
return $message ;
} else {
//check correct folder name for extensions
if ( ! self :: $active_plugins ) self :: init ();
if ( ! in_array ( " um- { $ext_key } /um- { $ext_key } .php " , self :: $active_plugins ) && ! array_key_exists ( " um- { $ext_key } /um- { $ext_key } .php " , self :: $active_plugins ) ) {
$message = sprintf ( __ ( 'Please check <strong>"%s" %s</strong> extension\'s folder name.' , 'ultimate-member' ), $ext_title , $ext_ver ) .
'<br />' .
sprintf ( __ ( 'Correct folder name is <strong>"%s"</strong>' , 'ultimate-member' ), " um- { $ext_key } " );
return $message ;
}
}
return true ;
}
/**
* @param string $extension_version Extension version
* @return mixed
*/
public static function php_version_check ( $extension_version ) {
return version_compare ( phpversion (), $extension_version , '>=' );
}
}
2017-07-26 14:57:52 +03:00
}
if ( ! function_exists ( 'is_um_active' ) ) {
2018-03-19 16:31:49 +02:00
/**
* Check UltimateMember core is active
*
* @return bool active - true | inactive - false
*/
function is_um_active () {
return Dependencies :: ultimatemember_active_check ();
}
2017-07-26 14:57:52 +03:00
}