PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 1 year ago Documents 1 year ago assets 3 years ago ElementorServiceProvider.php 1 year ago ReusableFormWidget.php 3 years ago
ElementorServiceProvider.php
181 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\Migration\ProductPageWrapperService;
7 use SureCart\Models\Product;
8 use SureCartCore\ServiceProviders\ServiceProviderInterface;
9
10 /**
11 * Elementor service provider.
12 */
13 class ElementorServiceProvider implements ServiceProviderInterface {
14 /**
15 * Register all dependencies in the IoC container.
16 *
17 * @param \Pimple\Container $container Service container.
18 * @return void
19 */
20 public function register( $container ) {
21 // nothing to register.
22 }
23
24 /**
25 * {@inheritDoc}
26 *
27 * @param \Pimple\Container $container Service Container.
28 */
29 public function bootstrap( $container ) {
30 if ( ! class_exists( '\Elementor\Plugin' ) ) {
31 return;
32 }
33
34 // Elementor integration.
35 add_action( 'elementor/widgets/register', [ $this, 'widget' ] );
36 add_action( 'elementor/editor/before_enqueue_scripts', [ $this, 'load_scripts' ] );
37 add_action( 'elementor/elements/categories_registered', [ $this, 'categories_registered' ] );
38
39 // Register product theme condition.
40 if ( defined( 'ELEMENTOR_PRO_VERSION' ) ) {
41 add_action( 'elementor/documents/register', [ $this, 'register_document' ] );
42 add_action( 'elementor/theme/register_conditions', [ $this, 'product_theme_conditions' ] );
43 add_filter( 'elementor/query/get_autocomplete/surecart-product', [ $this, 'get_autocomplete' ], 10, 2 );
44 add_filter( 'elementor/query/get_value_titles/surecart-product', [ $this, 'get_titles' ], 10, 2 );
45 add_action( 'elementor/frontend/the_content', array( $this, 'handle_product_page_wrapper' ) );
46 }
47 }
48
49 /**
50 * Get the titles for the query control
51 * This is important as it shows the previously selected items when the conditions load in.
52 *
53 * @param array $results The results.
54 * @param array $request The request.
55 *
56 * @return array
57 */
58 public function get_titles( $results, $request ) {
59 if ( 'surecart-product' !== $request['get_titles']['object'] || empty( $request['id'] ) ) {
60 return $results;
61 }
62
63 $products = Product::where(
64 [
65 'ids' => [ $request['id'] ],
66 ]
67 )->get();
68
69 foreach ( $products as $product ) {
70 $results[ $product->id ] = $product->name;
71 }
72 return $results;
73 }
74
75 /**
76 * Get autocomplete
77 *
78 * @param array $results The results.
79 * @param array $data Request data.
80 *
81 * @return array
82 */
83 public function get_autocomplete( $results, $data ) {
84 if ( 'surecart-product' !== $data['autocomplete']['object'] ) {
85 return $results;
86 }
87
88 $products = Product::where(
89 [
90 'query' => $data['q'],
91 'archived' => false,
92 ]
93 )->get();
94
95 foreach ( $products as $product ) {
96 $results[] = [
97 'id' => $product->id,
98 'text' => $product->name,
99 ];
100 }
101 return $results;
102 }
103
104
105 /**
106 * Elementor load scripts
107 *
108 * @return void
109 */
110 public function load_scripts() {
111 wp_enqueue_script( 'surecart-elementor-editor', plugins_url( 'assets/editor.js', __FILE__ ), array( 'jquery' ), \SureCart::plugin()->version(), true );
112 wp_enqueue_style( 'surecart-elementor-style', plugins_url( 'assets/editor.css', __FILE__ ), '', \SureCart::plugin()->version(), 'all' );
113 wp_localize_script(
114 'surecart-elementor-editor',
115 'scElementorData',
116 [
117 'site_url' => site_url(),
118 ]
119 );
120 }
121
122 /**
123 * Elementor surecart categories register
124 *
125 * @param Obj $elements_manager Elementor category manager.
126 *
127 * @return void
128 */
129 public function categories_registered( $elements_manager ) {
130 $elements_manager->add_category(
131 'surecart-elementor',
132 [
133 'title' => esc_html__( 'SureCart', 'surecart' ),
134 'icon' => 'fa fa-plug',
135 ]
136 );
137 }
138
139 /**
140 * Elementor widget register
141 *
142 * @return void
143 */
144 public function widget( $widgets_manager ) {
145 $widgets_manager->register( new ReusableFormWidget() );
146 }
147
148 /**
149 * Add product theme condition
150 *
151 * @param \ElementorPro\Modules\ThemeBuilder\Classes\Documents_Manager $documents_manager The documents manager.
152 *
153 * @return void
154 */
155 public function register_document( $documents_manager ) {
156 $documents_manager->register_document_type( 'surecart-product', ProductDocument::get_class_full_name() );
157 }
158
159 /**
160 * Add product theme condition
161 *
162 * @param \ElementorPro\Modules\ThemeBuilder\Classes\Conditions_Manager $conditions_manager The conditions manager.
163 *
164 * @return void
165 */
166 public function product_theme_conditions( $conditions_manager ) {
167 $conditions_manager->register_condition_instance( new Conditions() );
168 }
169
170 /**
171 * Handle Elementor content.
172 *
173 * @param string $content The content.
174 *
175 * @return string
176 */
177 public function handle_product_page_wrapper( string $content ): string {
178 return ( new ProductPageWrapperService( $content ) )->wrap();
179 }
180 }
181