PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.0-beta1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.0-beta1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 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 / Bricks / BricksElementsService.php
surecart / app / src / Integrations / Bricks Last commit date
Concerns 2 years ago Elements 2 years ago scripts 2 years ago BricksDynamicDataService.php 2 years ago BricksElementsService.php 2 years ago BricksServiceProvider.php 2 years ago
BricksElementsService.php
179 lines
1 <?php
2
3 namespace SureCart\Integrations\Bricks;
4
5 use SureCart\Migration\ProductPageWrapperService;
6
7 /**
8 * This class handles bricks elements functionality.
9 */
10 class BricksElementsService {
11 /**
12 * Bootstrap the service.
13 *
14 * @return void
15 */
16 public function bootstrap() {
17 // Register the elements.
18 add_action( 'init', [ $this, 'registerElements' ], 11 );
19
20 // Add template types.
21 add_filter( 'bricks/setup/control_options', [ $this, 'addTemplateTypes' ], 11 );
22
23 // handle the default active template for our post type.
24 add_filter( 'bricks/active_templates', [ $this, 'setDefaultProductTemplate' ], 10, 3 );
25
26 // handle the default active template for our collection.
27 add_filter( 'bricks/active_templates', [ $this, 'setDefaultCollectionTemplate' ], 10, 3 );
28
29 // Handle the product page wrapper.
30 add_filter( 'bricks/frontend/render_data', [ $this, 'handleProductPageWrapper' ], 10, 2 );
31 }
32
33 /**
34 * Register the elements.
35 *
36 * @return void
37 */
38 public function registerElements() {
39 if ( ! class_exists( '\Bricks\Elements' ) ) {
40 return;
41 }
42
43 $elements = glob( __DIR__ . '/Elements/**' );
44 foreach ( $elements as $file ) {
45 if ( basename( $file ) === 'Product.php' ) {
46 \Bricks\Elements::register_element( $file );
47 }
48 }
49
50 foreach ( $elements as $file ) {
51 if ( basename( $file ) === 'ProductCard.php' ) {
52 \Bricks\Elements::register_element( $file );
53 }
54 }
55
56 foreach ( $elements as $file ) {
57 if ( basename( $file ) === 'Product.php' ) {
58 continue;
59 }
60 \Bricks\Elements::register_element( $file );
61 }
62 }
63
64 /**
65 * Set the default template for the post type.
66 * This will only apply if the post has not been edited directly by bricks.
67 *
68 * @param array $active_templates Active templates.
69 * @param int $post_id Post ID.
70 * @param string $content_type Content type.
71 *
72 * @return self
73 */
74 public function setDefaultProductTemplate( $active_templates, $post_id, $content_type ) {
75 // Only run my logic on the frontend.
76 if ( ! bricks_is_frontend() ) {
77 return $active_templates;
78 }
79
80 // Return if single post $content_type is not 'content'.
81 if ( 'content' !== $content_type ) {
82 return $active_templates;
83 }
84
85 // Return: Current post type is not our post type.
86 $post_type = get_post_type( $post_id );
87 if ( 'sc_product' !== $post_type ) {
88 return $active_templates;
89 }
90
91 // if the post has been edited directly by bricks, use that.
92 $bricks_data = \Bricks\Database::get_data( $post_id, 'content' );
93 if ( count( $bricks_data ) > 0 ) {
94 return $active_templates;
95 }
96
97 $sc_product_templates = \Bricks\Templates::get_templates_by_type( 'sc_product' );
98
99 $template_ids = [
100 'body' => $sc_product_templates,
101 'sc_product' => $sc_product_templates,
102 ];
103
104 $template_id = \Bricks\Database::find_template_id( $template_ids, 'content', 'sc_product', get_the_ID(), 'single' );
105
106 $active_templates['content'] = $template_id;
107
108 return $active_templates;
109 }
110
111 /**
112 * Set the default template for the post type.
113 * This will only apply if the post has not been edited directly by bricks.
114 *
115 * @param array $active_templates Active templates.
116 * @param int $post_id Post ID.
117 * @param string $content_type Content type.
118 *
119 * @return self
120 */
121 public function setDefaultCollectionTemplate( $active_templates, $post_id, $content_type ) {
122 // Only run my logic on the frontend.
123 if ( ! bricks_is_frontend() ) {
124 return $active_templates;
125 }
126
127 // Return if single post $content_type is not 'content'.
128 if ( 'archive' !== $content_type ) {
129 return $active_templates;
130 }
131
132 if ( ! is_tax( 'sc_collection' ) ) {
133 return $active_templates;
134 }
135
136 if ( ! empty( $active_templates['archive'] ) ) {
137 return $active_templates;
138 }
139
140 $collection_templates = \Bricks\Templates::get_templates_by_type( 'sc_collection' );
141
142 $template_ids = [
143 'body' => $collection_templates,
144 'sc_collection' => $collection_templates,
145 ];
146
147 $template_id = \Bricks\Database::find_template_id( $template_ids, 'content', 'sc_collection', get_the_ID(), 'archive' );
148
149 $active_templates['archive'] = $template_id;
150
151 return $active_templates;
152 }
153
154 /**
155 * Add template types to control options
156 *
157 * @param array $control_options Control options.
158 *
159 * @return array
160 */
161 public function addTemplateTypes( $control_options ) {
162 $control_options['templateTypes']['sc_product'] = esc_html__( 'SureCart - Single Product', 'surecart' );
163 $control_options['templateTypes']['sc_collection'] = esc_html__( 'SureCart - Collection Archive', 'surecart' );
164
165 return $control_options;
166 }
167
168 /**
169 * Handle the product page wrapper
170 *
171 * @param string $content Content of Shortcode.
172 *
173 * @return string $content Content of the product page.
174 */
175 public function handleProductPageWrapper( string $content ): string {
176 return ( new ProductPageWrapperService( $content ) )->wrap();
177 }
178 }
179