PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / Elementor / ElementorServiceProvider.php
surecart / app / src / Integrations / Elementor Last commit date
Conditions 3 years ago Documents 2 years ago assets 3 years ago ElementorServiceProvider.php 2 years ago ReusableFormWidget.php 3 years ago
ElementorServiceProvider.php
168 lines
1 <?php
2 namespace SureCart\Integrations\Elementor;
3
4 use SureCart\Integrations\Elementor\Conditions\Conditions;
5 use SureCart\Integrations\Elementor\Documents\ProductDocument;
6 use SureCart\Models\Product;
7 use SureCartCore\ServiceProviders\ServiceProviderInterface;
8
9 /**
10 * Elementor service provider.
11 */
12 class ElementorServiceProvider implements ServiceProviderInterface {
13 /**
14 * Register all dependencies in the IoC container.
15 *
16 * @param \Pimple\Container $container Service container.
17 * @return void
18 */
19 public function register( $container ) {
20 // nothing to register.
21 }
22
23 /**
24 * {@inheritDoc}
25 *
26 * @param \Pimple\Container $container Service Container.
27 */
28 public function bootstrap( $container ) {
29 if ( ! class_exists( '\Elementor\Plugin' ) ) {
30 return;
31 }
32
33 // Elementor integration.
34 add_action( 'elementor/widgets/register', [ $this, 'widget' ] );
35 add_action( 'elementor/editor/before_enqueue_scripts', [ $this, 'load_scripts' ] );
36 add_action( 'elementor/elements/categories_registered', [ $this, 'categories_registered' ] );
37
38 // Register product theme condition.
39 if ( defined( 'ELEMENTOR_PRO_VERSION' ) ) {
40 add_action( 'elementor/documents/register', [ $this, 'register_document' ] );
41 add_action( 'elementor/theme/register_conditions', [ $this, 'product_theme_conditions' ] );
42 add_filter( 'elementor/query/get_autocomplete/surecart-product', [ $this, 'get_autocomplete' ], 10, 2 );
43 add_filter( 'elementor/query/get_value_titles/surecart-product', [ $this, 'get_titles' ], 10, 2 );
44 }
45 }
46
47 /**
48 * Get the titles for the query control
49 * This is important as it shows the previously selected items when the conditions load in.
50 *
51 * @param array $results The results.
52 * @param array $request The request.
53 *
54 * @return array
55 */
56 public function get_titles( $results, $request ) {
57 if ( 'surecart-product' !== $request['get_titles']['object'] || empty( $request['id'] ) ) {
58 return $results;
59 }
60
61 $products = Product::where(
62 [
63 'ids' => [ $request['id'] ],
64 ]
65 )->get();
66
67 foreach ( $products as $product ) {
68 $results[ $product->id ] = $product->name;
69 }
70 return $results;
71 }
72
73 /**
74 * Get autocomplete
75 *
76 * @param array $results The results.
77 * @param array $data Request data.
78 *
79 * @return array
80 */
81 public function get_autocomplete( $results, $data ) {
82 if ( 'surecart-product' !== $data['autocomplete']['object'] ) {
83 return $results;
84 }
85
86 $products = Product::where(
87 [
88 'query' => $data['q'],
89 'archived' => false,
90 ]
91 )->get();
92
93 foreach ( $products as $product ) {
94 $results[] = [
95 'id' => $product->id,
96 'text' => $product->name,
97 ];
98 }
99 return $results;
100 }
101
102
103 /**
104 * Elementor load scripts
105 *
106 * @return void
107 */
108 public function load_scripts() {
109 wp_enqueue_script( 'surecart-elementor-editor', plugins_url( 'assets/editor.js', __FILE__ ), array( 'jquery' ), \SureCart::plugin()->version(), true );
110 wp_enqueue_style( 'surecart-elementor-style', plugins_url( 'assets/editor.css', __FILE__ ), '', \SureCart::plugin()->version(), 'all' );
111 wp_localize_script(
112 'surecart-elementor-editor',
113 'scElementorData',
114 [
115 'site_url' => site_url(),
116 ]
117 );
118 }
119
120 /**
121 * Elementor surecart categories register
122 *
123 * @param Obj $elements_manager Elementor category manager.
124 *
125 * @return void
126 */
127 public function categories_registered( $elements_manager ) {
128 $elements_manager->add_category(
129 'surecart-elementor',
130 [
131 'title' => esc_html__( 'SureCart', 'surecart' ),
132 'icon' => 'fa fa-plug',
133 ]
134 );
135 }
136
137 /**
138 * Elementor widget register
139 *
140 * @return void
141 */
142 public function widget( $widgets_manager ) {
143 $widgets_manager->register( new ReusableFormWidget() );
144 }
145
146 /**
147 * Add product theme condition
148 *
149 * @param \ElementorPro\Modules\ThemeBuilder\Classes\Documents_Manager $documents_manager The documents manager.
150 *
151 * @return void
152 */
153 public function register_document( $documents_manager ) {
154 $documents_manager->register_document_type( 'surecart-product', ProductDocument::get_class_full_name() );
155 }
156
157 /**
158 * Add product theme condition
159 *
160 * @param \ElementorPro\Modules\ThemeBuilder\Classes\Conditions_Manager $conditions_manager The conditions manager.
161 *
162 * @return void
163 */
164 public function product_theme_conditions( $conditions_manager ) {
165 $conditions_manager->register_condition_instance( new Conditions() );
166 }
167 }
168