_instance_check(); $this->_register_cpt_and_taxonomies(); self::$_ = ET_Core_Data_Utils::instance(); $root_directory = defined( 'ET_BUILDER_PLUGIN_ACTIVE' ) ? ET_BUILDER_PLUGIN_DIR : get_template_directory(); self::$_i18n = require $root_directory . '/cloud/i18n/library.php'; } /** * Gets a translated string from {@see self::$_i18n}. * * @param string $string The untranslated string. * @param string $path Optional path for nested strings. * * @return string The translated string if found, the original string otherwise. */ public static function __( $string, $path = '' ) { $path .= $path ? ".{$string}" : $string; return self::$_->array_get( self::$_i18n, $path, $string ); } /** * Dies if an instance already exists. */ protected function _instance_check() { if ( self::$_instance ) { et_error( 'Multiple instances are not allowed!' ); wp_die(); } } /** * Registers the Theme Builder Library's custom post type and its taxonomies. */ protected function _register_cpt_and_taxonomies() { $files = [ ET_THEME_BUILDER_DIR . 'post/type/TBItem.php', ET_THEME_BUILDER_DIR . 'post/taxonomy/TBItemType.php', ET_THEME_BUILDER_DIR . 'post/query/TBItems.php', ET_BUILDER_DIR . 'post/type/Layout.php', ET_BUILDER_DIR . 'post/taxonomy/LayoutCategory.php', ET_BUILDER_DIR . 'post/taxonomy/LayoutTag.php', ET_BUILDER_DIR . 'post/query/Layouts.php', ]; if ( ! $files ) { return; } foreach ( $files as $file ) { require_once $file; } $this->items = ET_Builder_Post_Type_TBItem::instance(); $this->item_categories = ET_Builder_Post_Taxonomy_LayoutCategory::instance(); $this->item_tags = ET_Builder_Post_Taxonomy_LayoutTag::instance(); $this->item_types = ET_Builder_Post_Taxonomy_TBItemType::instance(); // We manually call register_all() now to ensure the CPT and taxonomies are registered // at exactly the same point during the request that they were in prior releases. ET_Builder_Post_Type_TBItem::register_all( 'builder' ); } /** * Returns the ET_Builder_TBItem_Library instance. * * @return ET_Builder_TBItem_Library */ public static function instance() { if ( ! self::$_instance ) { self::$_instance = new self(); } return self::$_instance; } } ET_Builder_TBItem_Library::instance();