237 lines
6.0 KiB
PHP
237 lines
6.0 KiB
PHP
|
<?php // phpcs:ignore WordPress.Files.FileName
|
||
|
|
||
|
/**
|
||
|
* Initialize the Redux Template Library.
|
||
|
*
|
||
|
* @since 4.0.0
|
||
|
* @package Redux Framework
|
||
|
*/
|
||
|
|
||
|
namespace ReduxTemplates;
|
||
|
|
||
|
use Redux_Connection_Banner;
|
||
|
use Redux_Core;
|
||
|
use Redux_Filesystem;
|
||
|
use Redux_Functions;
|
||
|
use Redux_Functions_Ex;
|
||
|
use Redux_Helpers;
|
||
|
use ReduxTemplates;
|
||
|
use function base64_encode; // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // Exit if accessed directly.
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Redux Templates Init Class
|
||
|
*
|
||
|
* @since 4.0.0
|
||
|
*/
|
||
|
class Init {
|
||
|
|
||
|
/**
|
||
|
* Default left value
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
public static $default_left = 5;
|
||
|
|
||
|
/**
|
||
|
* Init constructor.
|
||
|
*
|
||
|
* @access public
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
global $pagenow;
|
||
|
|
||
|
if ( 'widgets.php' === $pagenow ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
add_action( 'init', array( $this, 'load' ) );
|
||
|
|
||
|
if ( did_action( 'init' ) ) { // In case the devs load it at the wrong place.
|
||
|
$this->load();
|
||
|
}
|
||
|
|
||
|
if ( false === Redux_Core::$redux_templates_enabled ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Editor Load.
|
||
|
add_action( 'enqueue_block_editor_assets', array( $this, 'editor_assets' ), 1 );
|
||
|
// Admin Load.
|
||
|
add_action( 'admin_enqueue_scripts', array( $this, 'admin_assets' ) );
|
||
|
// Initiate the custom css fields.
|
||
|
Gutenberg_Custom_CSS::instance();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Load everything up after init.
|
||
|
*
|
||
|
* @access public
|
||
|
* @since 4.0.0
|
||
|
*/
|
||
|
public static function load() {
|
||
|
new ReduxTemplates\API();
|
||
|
new ReduxTemplates\Templates();
|
||
|
new ReduxTemplates\Notice_Overrides();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get local contents of a file.
|
||
|
*
|
||
|
* @param string $file_path File path.
|
||
|
*
|
||
|
* @access public
|
||
|
* @return string
|
||
|
* @since 4.0.0
|
||
|
*/
|
||
|
public static function get_local_file_contents( string $file_path ): string {
|
||
|
$fs = Redux_Filesystem::get_instance();
|
||
|
return $fs->get_contents( $file_path );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Load Editor Styles and Scripts.
|
||
|
*
|
||
|
* @access public
|
||
|
* @since 4.0.0
|
||
|
*/
|
||
|
public function editor_assets() {
|
||
|
$fs = Redux_Filesystem::get_instance();
|
||
|
$min = Redux_Functions::is_min();
|
||
|
|
||
|
// Little safety here for developers.
|
||
|
if ( ! $fs->file_exists( REDUXTEMPLATES_DIR_PATH . "assets/js/redux-templates$min.js" ) ) {
|
||
|
if ( '.min' === $min ) {
|
||
|
$min = '';
|
||
|
} else {
|
||
|
$min = '.min';
|
||
|
}
|
||
|
}
|
||
|
$version = REDUXTEMPLATES_VERSION;
|
||
|
// When doing local dev work. Otherwise, follow the check for dev_mode or not.
|
||
|
if ( defined( 'REDUX_PLUGIN_FILE' ) ) {
|
||
|
if ( $fs->file_exists( trailingslashit( dirname( REDUX_PLUGIN_FILE ) ) . 'local_developer.txt' ) ) {
|
||
|
$min = '';
|
||
|
}
|
||
|
$version = time();
|
||
|
}
|
||
|
$min = ''; // Fix since our min'd file isn't working.
|
||
|
|
||
|
wp_enqueue_script(
|
||
|
'redux-templates-js',
|
||
|
plugins_url( "assets/js/redux-templates$min.js", REDUXTEMPLATES_FILE ),
|
||
|
array( 'code-editor', 'csslint', 'wp-i18n', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-editor', 'wp-element', 'wp-hooks' ),
|
||
|
$version,
|
||
|
true
|
||
|
);
|
||
|
|
||
|
wp_set_script_translations( 'redux-templates-js', 'redux-templates' );
|
||
|
|
||
|
// Backend editor scripts: common vendor files.
|
||
|
wp_enqueue_script(
|
||
|
'redux-templates-js-vendor',
|
||
|
plugins_url( "assets/js/vendor$min.js", REDUXTEMPLATES_FILE ),
|
||
|
array(),
|
||
|
$version,
|
||
|
true
|
||
|
);
|
||
|
|
||
|
// We started using the CSS variables. This gives us the function before it's put in core.
|
||
|
if ( version_compare( get_bloginfo( 'version' ), '5.5', '<' ) ) {
|
||
|
if ( ! defined( 'GUTENBERG_VERSION' ) || ( defined( 'GUTENBERG_VERSION' ) && version_compare( GUTENBERG_VERSION, '8.5.1', '<' ) ) ) {
|
||
|
wp_register_style( 'redux-templates-gutenberg-compatibility', false, array(), $version );
|
||
|
wp_enqueue_style( 'redux-templates-gutenberg-compatibility' );
|
||
|
wp_add_inline_style( 'redux-templates-gutenberg-compatibility', ':root {--wp-admin-theme-color: #007cba;}' );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$global_vars = array(
|
||
|
'i18n' => 'redux-framework',
|
||
|
'plugin' => REDUXTEMPLATES_DIR_URL,
|
||
|
'mokama' => Redux_Helpers::mokama(),
|
||
|
'key' => base64_encode( Redux_Functions::gs() ), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
|
||
|
'version' => Redux_Core::$version,
|
||
|
'supported_plugins' => array(), // Load the supported plugins.
|
||
|
'tos' => Redux_Connection_Banner::tos_blurb( 'import_wizard' ),
|
||
|
);
|
||
|
if ( ! $global_vars['mokama'] ) {
|
||
|
// phpcs:disable Squiz.PHP.CommentedOutCode
|
||
|
// delete_user_meta( get_current_user_id(), '_redux_templates_counts'); // To test left.
|
||
|
$global_vars['left'] = self::left( get_current_user_id() );
|
||
|
|
||
|
// phpcs:ignore
|
||
|
// delete_user_meta( get_current_user_id(), '_redux_welcome_guide' ); // For testing.
|
||
|
if ( Redux_Helpers::is_gutenberg_page() && $global_vars['left'] === self::$default_left ) {
|
||
|
// We don't want to show unless Gutenberg is running, and they haven't tried the library yet.
|
||
|
$launched = get_user_meta( get_current_user_id(), '_redux_welcome_guide', true );
|
||
|
if ( '1' !== $launched ) {
|
||
|
$global_vars['welcome'] = 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! $global_vars['mokama'] ) {
|
||
|
$global_vars['u'] = rtrim( Redux_Functions_Ex::get_site_utm_url( '', 'library', true ), '1' );
|
||
|
}
|
||
|
|
||
|
wp_localize_script(
|
||
|
'redux-templates-js',
|
||
|
'redux_templates',
|
||
|
$global_vars
|
||
|
);
|
||
|
|
||
|
wp_enqueue_style(
|
||
|
'redux-fontawesome',
|
||
|
REDUXTEMPLATES_DIR_URL . 'assets/css/font-awesome.min.css',
|
||
|
false,
|
||
|
$version
|
||
|
);
|
||
|
$extra_css = ReduxTemplates\Templates::inline_editor_css();
|
||
|
if ( ! empty( $extra_css ) ) {
|
||
|
wp_add_inline_style( 'redux-fontawesome', $extra_css );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Admin Style & Script.
|
||
|
*
|
||
|
* @access public
|
||
|
* @since 4.0.0
|
||
|
*/
|
||
|
public function admin_assets() {
|
||
|
wp_enqueue_style(
|
||
|
'redux-templates-bundle',
|
||
|
REDUXTEMPLATES_DIR_URL . 'assets/css/admin.min.css',
|
||
|
false,
|
||
|
REDUXTEMPLATES_VERSION
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the items left.
|
||
|
*
|
||
|
* @param int $uid User ID number.
|
||
|
* @access public
|
||
|
* @since 4.1.18
|
||
|
* @return int
|
||
|
*/
|
||
|
public static function left( int $uid ): int {
|
||
|
$count = get_user_meta( $uid, '_redux_templates_counts', true );
|
||
|
if ( empty( $count ) ) {
|
||
|
$count = self::$default_left;
|
||
|
}
|
||
|
if ( $count <= 0 ) {
|
||
|
$count = 0;
|
||
|
}
|
||
|
|
||
|
return $count;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
new Init();
|