LLMS_Blocks
LLMS_Blocks class
Contents
Source Source
File: libraries/lifterlms-blocks/includes/class-llms-blocks.php
class LLMS_Blocks { /** * Minimum LifterLMS core version required to run as a plugin. * * @since 2.5.0 * * @var string */ const MIN_CORE_VERSION = '7.2.0'; /** * Constructor. * * @since 1.0.0 * @since 1.3.0 Updated. * @since 1.5.1 Add `admin_print_scripts` hook to handle outputting dynamic block information. * @since 1.10.0 Load localization files when running as an independent plugin. * @since 2.0.0 Move action & filter hooks to the the `init()` method. */ public function __construct() { add_action( 'plugins_loaded', array( $this, 'init' ) ); } /** * Add a custom LifterLMS block category * * @since 1.0.0 * @since 1.6.0 Add Form Fields category. * * @param array $categories existing block cats. * @return array */ public function add_block_category( $categories ) { $categories[] = array( 'slug' => 'llms-blocks', 'title' => __( 'LifterLMS Blocks', 'lifterlms' ), ); array_unshift( $categories, array( 'slug' => 'llms-custom-fields', 'title' => __( 'Custom User Information', 'lifterlms' ), ) ); array_unshift( $categories, array( 'slug' => 'llms-user-info-fields', 'title' => __( 'User Information', 'lifterlms' ), ) ); return $categories; } /** * Print dynamic block information as a JS variable. * * Allows us to ensure we only add visibility attributes to static blocks. * Prevents an issue causing rest api validation issues during attribute validation * because it's impossible to register custom attributes on a block. * * @link https://github.com/gocodebox/lifterlms-blocks/issues/30 * * @since 1.5.1 * @since 2.0.0 Since WordPress 5.8 blocks are available in widgets and customizer screen too. * * @return void */ public function admin_print_scripts() { $screen = get_current_screen(); if ( ! $screen || ( empty( $screen->is_block_editor ) && 'customize' !== $screen->base ) ) { return; } echo '<script>window.llms.dynamic_blocks = ' . wp_json_encode( $this->get_dynamic_block_names() ) . ';</script>'; } /** * Retrieve a list of dynamic block names registered with WordPress (excluding LifterLMS blocks). * * @since 1.5.1 * * @return array */ private function get_dynamic_block_names() { $blocks = array(); foreach ( get_dynamic_block_names() as $name ) { if ( 0 !== strpos( $name, 'llms/' ) ) { $blocks[] = $name; } } return apply_filters( 'llms_blocks_get_dynamic_block_names', $blocks ); } /** * Include all files. * * @since 2.0.0 * @since 2.3.0 Include php template block file. * * @return void */ private function includes() { // Functions. require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/functions-llms-blocks.php'; // Classes. require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-assets.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-abstract-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-migrate.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-page-builders.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-post-instructors.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-post-types.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-post-visibility.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-reusable.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-status-tools.php'; // Block Visibility Component. require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/class-llms-blocks-visibility.php'; // Dynamic Blocks. require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-course-information-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-course-syllabus-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-course-progress-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-instructors-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-lesson-navigation-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-lesson-progression-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-pricing-table-block.php'; require_once LLMS_BLOCKS_PLUGIN_DIR . '/includes/blocks/class-llms-blocks-php-template-block.php'; } /** * Register all blocks & components. * * @since 1.0.0 * @since 1.4.0 Add status tools class. * @since 1.9.0 Added course progress block class. * @since 2.0.0 Return early if LifterLMS isn't installed, move file inclusion to `$this->includes()`, * and moved actions and filters from the constructor. * @since 2.2.1 Handle '-src' in WordPress version numbers. * @since 2.5.0 Updated minimum LifterLMS core version to 7.2.0. * * @return void */ public function init() { if ( ! function_exists( 'llms' ) || ! version_compare( self::MIN_CORE_VERSION, llms()->version, '<=' ) ) { return; } $this->includes(); add_action( 'add_meta_boxes', array( $this, 'remove_metaboxes' ), 999, 2 ); global $wp_version; $filter = version_compare( $wp_version, '5.8-src', '>=' ) ? 'block_categories_all' : 'block_categories'; add_filter( $filter, array( $this, 'add_block_category' ) ); add_action( 'admin_print_scripts', array( $this, 'admin_print_scripts' ), 15 ); /** * When loaded as a library included by the LifterLMS core localization is handled by the LifterLMS core. * * When the plugin is loaded by itself as a plugin, we must localize it independently. */ if ( ! defined( 'LLMS_BLOCKS_LIB' ) || ! LLMS_BLOCKS_LIB ) { add_action( 'init', array( $this, 'load_textdomain' ), 0 ); } } /** * Load l10n files. * * This method is only used when the plugin is loaded as a standalone plugin (for development purposes), * otherwise (when loaded as a library from within the LifterLMS core plugin) the localization * strings are included into the LifterLMS Core plugin's po/mo files and are localized by the LifterLMS * core plugin. * * Files can be found in the following order (The first loaded file takes priority): * 1. WP_LANG_DIR/lifterlms/lifterlms-blocks-LOCALE.mo * 2. WP_LANG_DIR/plugins/lifterlms-blocks-LOCALE.mo * 3. WP_CONTENT_DIR/plugins/lifterlms-blocks/i18n/lifterlms-blocks-LOCALE.mo * * Note: The function `load_plugin_textdomain()` is not used because the same textdomain as the LifterLMS core * is used for this plugin but the file is named `lifterlms-blocks` in order to allow using a separate language * file for each codebase. * * @since 1.10.0 * * @return void */ public function load_textdomain() { // load locale. $locale = apply_filters( 'plugin_locale', get_locale(), 'lifterlms' ); // Load from the LifterLMS "safe" directory if it exists. load_textdomain( 'lifterlms', WP_LANG_DIR . '/lifterlms/lifterlms-blocks-' . $locale . '.mo' ); // Load from the default plugins language file directory. load_textdomain( 'lifterlms', WP_LANG_DIR . '/plugins/lifterlms-blocks-' . $locale . '.mo' ); // Load from the plugin's language file directory. load_textdomain( 'lifterlms', LLMS_BLOCKS_PLUGIN_DIR . '/i18n/lifterlms-blocks-' . $locale . '.mo' ); } /** * Remove deprecated core metaboxes. * * @since 1.0.0 * @since 1.3.0 Updated. * * @param string $post_type WP post type of the current post. * @param string $post WP_Post. * @return void */ public function remove_metaboxes( $post_type, $post ) {
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- add_block_category — Add a custom LifterLMS block category
- admin_print_scripts — Print dynamic block information as a JS variable.
- get_dynamic_block_names — Retrieve a list of dynamic block names registered with WordPress (excluding LifterLMS blocks).
- includes — Include all files.
- init — Register all blocks & components.
- load_textdomain — Load l10n files.
- remove_metaboxes — Remove deprecated core metaboxes.
Changelog Changelog
Version | Description |
---|---|
2.2.1 | Handle '-src' in WordPress version numbers in init() . |
1.0.0 | Introduced. |