balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

module.php (2511B)


      1 <?php
      2 
      3 namespace Elementor\Core\Common\Modules\Finder;
      4 
      5 use Elementor\Core\Base\Module as BaseModule;
      6 use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
      7 use Elementor\Plugin;
      8 
      9 if ( ! defined( 'ABSPATH' ) ) {
     10 	exit; // Exit if accessed directly
     11 }
     12 
     13 /**
     14  * Finder Module
     15  *
     16  * Responsible for initializing Elementor Finder functionality
     17  */
     18 class Module extends BaseModule {
     19 
     20 	/**
     21 	 * Categories manager.
     22 	 *
     23 	 * @access private
     24 	 *
     25 	 * @var Categories_Manager
     26 	 */
     27 	private $categories_manager;
     28 
     29 	/**
     30 	 * Module constructor.
     31 	 *
     32 	 * @since 2.3.0
     33 	 * @access public
     34 	 */
     35 	public function __construct() {
     36 		$this->categories_manager = new Categories_Manager();
     37 
     38 		$this->add_template();
     39 
     40 		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );
     41 	}
     42 
     43 	/**
     44 	 * Get name.
     45 	 *
     46 	 * @since 2.3.0
     47 	 * @access public
     48 	 *
     49 	 * @return string
     50 	 */
     51 	public function get_name() {
     52 		return 'finder';
     53 	}
     54 
     55 	/**
     56 	 * Add template.
     57 	 *
     58 	 * @since 2.3.0
     59 	 * @access public
     60 	 */
     61 	public function add_template() {
     62 		Plugin::$instance->common->add_template( __DIR__ . '/template.php' );
     63 	}
     64 
     65 	/**
     66 	 * Register ajax actions.
     67 	 *
     68 	 * @since 2.3.0
     69 	 * @access public
     70 	 *
     71 	 * @param Ajax $ajax
     72 	 */
     73 	public function register_ajax_actions( Ajax $ajax ) {
     74 		$ajax->register_ajax_action( 'finder_get_category_items', [ $this, 'ajax_get_category_items' ] );
     75 	}
     76 
     77 	/**
     78 	 * Ajax get category items.
     79 	 *
     80 	 * @since 2.3.0
     81 	 * @access public
     82 	 *
     83 	 * @param array $data
     84 	 *
     85 	 * @return array
     86 	 */
     87 	public function ajax_get_category_items( array $data ) {
     88 		$category = $this->categories_manager->get_categories( $data['category'] );
     89 
     90 		return $category->get_category_items( $data );
     91 	}
     92 
     93 	/**
     94 	 * Get init settings.
     95 	 *
     96 	 * @since 2.3.0
     97 	 * @access protected
     98 	 *
     99 	 * @return array
    100 	 */
    101 	protected function get_init_settings() {
    102 		$categories = $this->categories_manager->get_categories();
    103 
    104 		$categories_data = [];
    105 
    106 		foreach ( $categories as $category_name => $category ) {
    107 			$categories_data[ $category_name ] = array_merge( $category->get_settings(), [ 'name' => $category_name ] );
    108 		}
    109 
    110 		/**
    111 		 * Finder categories.
    112 		 *
    113 		 * Filters the list of finder categories. This hook is used to manage Finder
    114 		 * categories - to add new categories, remove and edit existing categories.
    115 		 *
    116 		 * @since 2.3.0
    117 		 *
    118 		 * @param array $categories_data A list of finder categories.
    119 		 */
    120 		$categories_data = apply_filters( 'elementor/finder/categories', $categories_data );
    121 
    122 		return [
    123 			'data' => $categories_data,
    124 		];
    125 	}
    126 }