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