ElementorPro/modules/library/module.php
2024-07-07 01:00:30 +02:00

159 lines
4.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace ElementorPro\Modules\Library;
use Elementor\Core\Base\Document;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Library\Classes\Shortcode;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
public function get_widgets() {
return [
'Template',
];
}
public function __construct() {
parent::__construct();
$this->add_filters();
$this->add_actions();
new Shortcode();
}
public function get_name() {
return 'library';
}
public function register_wp_widgets() {
register_widget( 'ElementorPro\Modules\Library\WP_Widgets\Elementor_Library' );
}
/**
* @deprecated 3.1.0
*/
public function localize_settings() {
Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0' );
return [];
}
public function add_to_results_for_library_widget_templates( $val, $post, $request ) {
$document = Plugin::elementor()->documents->get( $post->ID );
if ( $document ) {
return true;
}
return false;
}
public function format_post_title_for_library_widget_templates( $post_title, $post_id, $request ) {
$document = Plugin::elementor()->documents->get( $post_id );
return $post_title . ' (' . $document->get_post_type_title() . ')';
}
public function add_actions() {
add_action( 'widgets_init', [ $this, 'register_wp_widgets' ] );
}
/**
* @deprecated 2.6.0 No longer used by internal code. See Autocomplete documentation in Query-Control Module.
* @param array $results
* @param array $data
*
* @return array
*/
public function get_autocomplete_for_library_widget_templates( array $results, array $data ) {
$document_types = Plugin::elementor()->documents->get_document_types( [
'show_in_library' => true,
] );
$query_params = [
's' => $data['q'],
'post_type' => Source_Local::CPT,
'posts_per_page' => -1,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => [
[
'key' => Document::TYPE_META_KEY,
'value' => array_keys( $document_types ),
'compare' => 'IN',
],
],
];
$query = new \WP_Query( $query_params );
$results = [];
foreach ( $query->posts as $post ) {
$document = Plugin::elementor()->documents->get( $post->ID );
if ( $document ) {
$results[] = [
'id' => $post->ID,
'text' => esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')',
];
}
}
return $results;
}
/**
* @deprecated 2.6.0 No longer used by internal code. See Autocomplete documentation in Query-Control Module.
* @param $results
* @param $request
*
* @return mixed
*/
public function get_value_title_for_library_widget_templates( $results, $request ) {
$ids = (array) $request['id'];
$query = new \WP_Query(
[
'post_type' => Source_Local::CPT,
'post__in' => $ids,
'posts_per_page' => -1,
]
);
foreach ( $query->posts as $post ) {
$document = Plugin::elementor()->documents->get( $post->ID );
if ( $document ) {
$results[ $post->ID ] = esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')';
}
}
return $results;
}
public function add_filters() {
add_filter( 'elementor/widgets/black_list', function( $black_list ) {
$black_list[] = 'ElementorPro\Modules\Library\WP_Widgets\Elementor_Library';
return $black_list;
} );
}
public static function get_templates() {
return Plugin::elementor()->templates_manager->get_source( 'local' )->get_items();
}
public static function empty_templates_message() {
return '<div id="elementor-widget-template-empty-templates">
<div class="elementor-widget-template-empty-templates-icon"><i class="eicon-nerd" aria-hidden="true"></i></div>
<div class="elementor-widget-template-empty-templates-title">' . esc_html__( 'You Havent Saved Templates Yet.', 'elementor-pro' ) . '</div>
<div class="elementor-widget-template-empty-templates-footer">' . esc_html__( 'Want to learn more about Elementor library?', 'elementor-pro' ) . ' <a class="elementor-widget-template-empty-templates-footer-url" href="https://go.elementor.com/docs-library/" target="_blank">' . esc_html__( 'Click Here', 'elementor-pro' ) . '</a>
</div>
</div>';
}
}