mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-13 19:56:27 +09:00
- extensions class for future integrations;
This commit is contained in:
@@ -77,6 +77,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
|
||||
add_action( 'in_plugin_update_message-' . um_plugin, array( $this, 'in_plugin_update_message' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function for major updates
|
||||
*
|
||||
@@ -134,17 +135,31 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
function get_extension_upgrades() {
|
||||
$extensions = UM()->extensions()->get_list();
|
||||
if ( empty( $extensions ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$upgrades = array();
|
||||
foreach ( $extensions as $extension ) {
|
||||
$upgrades[ $extension ] = UM()->extensions()->get_packages( $extension );
|
||||
}
|
||||
|
||||
return $upgrades;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get array of necessary upgrade packages
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function need_run_upgrades() {
|
||||
$um_last_version_upgrade = get_option( 'um_last_version_upgrade' );
|
||||
//first install
|
||||
if ( ! $um_last_version_upgrade ) {
|
||||
$um_last_version_upgrade = '1.3.88';
|
||||
}
|
||||
$um_last_version_upgrade = get_option( 'um_last_version_upgrade', '1.3.88' );
|
||||
|
||||
$diff_packages = array();
|
||||
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
<?php
|
||||
namespace um;
|
||||
|
||||
// Exit if executed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
|
||||
if ( ! class_exists( 'um\Extensions' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class Extensions
|
||||
*
|
||||
* @package um
|
||||
*
|
||||
* @method void bbpress_activation()
|
||||
*/
|
||||
class Extensions {
|
||||
|
||||
|
||||
/**
|
||||
* Extensions list
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $list = array();
|
||||
|
||||
|
||||
/**
|
||||
* Extensions data
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $plugin_data = array();
|
||||
|
||||
|
||||
/**
|
||||
* Extensions constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function check_dependencies() {
|
||||
$extensions = $this->get_list();
|
||||
|
||||
foreach ( $extensions as $slug ) {
|
||||
$extension = $this->get_info( $slug );
|
||||
|
||||
list( $run, $slug, $message ) = apply_filters_ref_array( 'um_extension_custom_dependencies', array( true, $slug, '' ) );
|
||||
|
||||
if ( $run ) {
|
||||
$compare_version_result = UM()->dependencies()->compare_versions( $extension['min_core_version'], $extension['version'], $slug, $extension['title'] );
|
||||
|
||||
if ( true !== $compare_version_result ) {
|
||||
UM()->notices()->add_notice( "{$slug}_dependencies", array(
|
||||
'class' => 'error',
|
||||
'message' => '<p>' . $compare_version_result . '</p>',
|
||||
), 1 );
|
||||
}
|
||||
} elseif ( ! $run && ! empty( $message ) ) {
|
||||
UM()->notices()->add_notice( "{$slug}_dependencies", array(
|
||||
'class' => 'error',
|
||||
'message' => $message,
|
||||
), 1 );
|
||||
}
|
||||
|
||||
if ( $run ) {
|
||||
UM()->call_class( "um_ext\um_{$slug}\Init" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $settings
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function license_options( $settings ) {
|
||||
|
||||
$extensions = $this->get_list();
|
||||
|
||||
if ( empty( $extensions ) ) {
|
||||
return $settings;
|
||||
}
|
||||
|
||||
foreach ( $extensions as $slug ) {
|
||||
$extension = $this->get_info( $slug );
|
||||
|
||||
if ( isset( $extension['plan'] ) && $extension['plan'] == 'free' ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$settings['licenses']['fields'][] = array(
|
||||
'id' => "um_{$slug}_license_key",
|
||||
'label' => sprintf( __( '%s License Key', 'ultimate-member' ), $extension['title'] ),
|
||||
'item_name' => $extension['item_name'],
|
||||
'author' => 'Ultimate Member',
|
||||
'version' => $extension['version'],
|
||||
);
|
||||
}
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Loading Extensions localizations
|
||||
*/
|
||||
function localization() {
|
||||
$extensions = $this->get_list();
|
||||
|
||||
foreach ( $extensions as $slug ) {
|
||||
$extension = $this->get_info( $slug );
|
||||
|
||||
$locale = ( get_locale() != '' ) ? get_locale() : 'en_US';
|
||||
load_textdomain( $extension['textdomain'], WP_LANG_DIR . '/plugins/' . $extension['textdomain'] . '-' . $locale . '.mo');
|
||||
load_plugin_textdomain( $extension['textdomain'], false, dirname( $extension['plugin'] ) . '/languages/' );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $slug
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function get_version( $slug ) {
|
||||
|
||||
$version = '';
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $slug
|
||||
* @param bool $field
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
function get_info( $slug, $field = false ) {
|
||||
if ( ! $field ) {
|
||||
return ! empty( $this->plugin_data[ $slug ] ) ? $this->plugin_data[ $slug ] : array();
|
||||
} else {
|
||||
return ! empty( $this->plugin_data[ $slug ][ $field ] ) ? $this->plugin_data[ $slug ][ $field ] : false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $slug
|
||||
* @param array $plugin_data
|
||||
*/
|
||||
function add( $slug, $plugin_data ) {
|
||||
$this->list[] = $slug;
|
||||
$this->plugin_data[ $slug ] = $plugin_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Activate Extension Process
|
||||
* Common functions in activation
|
||||
*
|
||||
* @param $slug
|
||||
*/
|
||||
function activate( $slug ) {
|
||||
$plugin_data = $this->get_info( $slug );
|
||||
|
||||
//if extension wasn't inited, init it firstly via "um_{$slug}_add" function
|
||||
//"um_{$slug}_add" must be in the preset structure of UM extension
|
||||
if ( empty( $plugin_data ) && function_exists( "um_{$slug}_add" ) ) {
|
||||
call_user_func( "um_{$slug}_add" );
|
||||
$plugin_data = $this->get_info( $slug );
|
||||
}
|
||||
|
||||
//first install
|
||||
$version = get_option( "um_{$slug}_version" );
|
||||
if ( ! $version ) {
|
||||
update_option( "um_{$slug}_last_version_upgrade", $plugin_data['version'] );
|
||||
}
|
||||
|
||||
if ( $version != $plugin_data['version'] ) {
|
||||
update_option( "um_{$slug}_version", $plugin_data['version'] );
|
||||
}
|
||||
|
||||
|
||||
//start setup
|
||||
UM()->extension( $slug )->setup()->start();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
function get_list() {
|
||||
return $this->list;
|
||||
}
|
||||
|
||||
|
||||
function get_packages( $slug ) {
|
||||
$plugin_info = $this->get_info( $slug );
|
||||
$packages_dir = $plugin_info['path'] . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'admin' . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'packages';
|
||||
|
||||
$update_versions = array();
|
||||
$handle = opendir( $packages_dir );
|
||||
if ( $handle ) {
|
||||
while ( false !== ( $filename = readdir( $handle ) ) ) {
|
||||
if ( $filename != '.' && $filename != '..' ) {
|
||||
if ( is_dir( $packages_dir . DIRECTORY_SEPARATOR . $filename ) ) {
|
||||
$update_versions[] = $filename;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir( $handle );
|
||||
|
||||
usort( $update_versions, array( UM()->admin_upgrade(), 'version_compare_sort' ) );
|
||||
}
|
||||
|
||||
return $update_versions;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
|
||||
if ( ! class_exists( 'UM_Functions' ) ) {
|
||||
|
||||
|
||||
@@ -327,6 +328,5 @@ if ( ! class_exists( 'UM_Functions' ) ) {
|
||||
$cpt = apply_filters( 'um_cpt_list', array( 'um_form', 'um_directory' ) );
|
||||
return $cpt;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+62
-2
@@ -198,6 +198,8 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
|
||||
// include hook files
|
||||
add_action( 'plugins_loaded', array( &$this, 'init' ), 0 );
|
||||
//run hook for extensions init
|
||||
add_action( 'plugins_loaded', array( &$this, 'extensions_init' ), -19 );
|
||||
|
||||
add_action( 'init', array( &$this, 'old_update_patch' ), 0 );
|
||||
|
||||
@@ -478,6 +480,14 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function extensions_init() {
|
||||
do_action( 'um_core_loaded' );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Include required core files used in admin and on the frontend.
|
||||
*
|
||||
@@ -541,8 +551,45 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
$this->mobile();
|
||||
$this->external_integrations();
|
||||
$this->gdpr();
|
||||
//$this->uploader();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get extension API
|
||||
*
|
||||
* @since 2.0.34
|
||||
*
|
||||
* @param $slug
|
||||
*
|
||||
* @return um_ext\um_bbpress\Init
|
||||
*/
|
||||
function extension( $slug ) {
|
||||
if ( empty( $this->classes[ $slug ] ) ) {
|
||||
$class = "um_ext\um_{$slug}\Init";
|
||||
|
||||
/**
|
||||
* @var $class um_ext\um_bbpress\Init
|
||||
*/
|
||||
$this->classes[ $slug ] = $class::instance();
|
||||
}
|
||||
|
||||
return $this->classes[ $slug ];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $class
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function call_class( $class ) {
|
||||
$key = strtolower( $class );
|
||||
|
||||
if ( empty( $this->classes[ $key ] ) ) {
|
||||
$this->classes[ $key ] = new $class;
|
||||
}
|
||||
|
||||
return $this->classes[ $key ];
|
||||
}
|
||||
|
||||
|
||||
@@ -844,6 +891,19 @@ if ( ! class_exists( 'UM' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0.34
|
||||
*
|
||||
* @return um\Extensions
|
||||
*/
|
||||
function extensions() {
|
||||
if ( empty( $this->classes['extensions'] ) ) {
|
||||
$this->classes['extensions'] = new um\Extensions();
|
||||
}
|
||||
|
||||
return $this->classes['extensions'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
|
||||
Reference in New Issue
Block a user