PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.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 / WordPress / ThemeService.php
surecart / app / src / WordPress Last commit date
Admin 2 months ago Assets 2 weeks ago CLI 2 years ago Cache 2 weeks ago Pages 10 months ago PostTypes 2 months ago Posts 1 year ago Shortcodes 1 month ago Taxonomies 1 year ago Templates 1 year ago Users 2 months ago ActionsService.php 3 years ago CompatibilityService.php 4 months ago CurrencyService.php 4 months ago GoogleMapApiService.php 2 months ago HealthService.php 2 months ago LineItemStateService.php 2 years ago PluginActionLinksService.php 1 year ago PluginService.php 1 year ago PluginServiceProvider.php 1 year ago RecaptchaValidationService.php 2 years ago StateService.php 7 months ago ThemeService.php 4 months ago ThemeServiceProvider.php 7 months ago TranslationsServiceProvider.php 3 months ago UpgradeNoticeService.php 1 year ago
ThemeService.php
182 lines
1 <?php
2
3 namespace SureCart\WordPress;
4
5 /**
6 * Handles theme-related functionality.
7 */
8 class ThemeService {
9 /**
10 * Bootstrap the service.
11 *
12 * @return void
13 */
14 public function bootstrap() {
15 // add the "Brand" color to the theme's color palette.
16 add_action( 'after_setup_theme', [ $this, 'addColorToPalette' ], 99999 );
17 add_action( 'after_setup_theme', [ $this, 'addAppearanceToolsSupport' ], 99999 );
18 // add the theme class to the body tag.
19 add_filter( 'body_class', [ $this, 'themeBodyClass' ] );
20 add_filter( 'admin_body_class', [ $this, 'themeBodyClassAdmin' ] );
21 }
22
23 /**
24 * Get the current theme preference.
25 *
26 * Reads from brand.theme (API) as the primary source.
27 * Falls back to the WP option if the API data is unavailable.
28 *
29 * @return string 'light' or 'dark'
30 */
31 public function mode(): string {
32 $brand = \SureCart::account()->brand;
33
34 if ( ! empty( $brand ) && ! is_wp_error( $brand ) && ! empty( $brand->theme ) ) {
35 return 'dark' === $brand->theme ? 'dark' : 'light';
36 }
37
38 return get_option( 'surecart_theme', 'light' );
39 }
40
41 /**
42 * Get the logo URL based on the current theme.
43 *
44 * Returns the dark logo URL when theme is dark and a dark logo exists,
45 * otherwise returns the standard logo URL.
46 *
47 * @return string The logo URL.
48 */
49 public function logoUrl(): string {
50 $brand = \SureCart::account()->brand;
51
52 if ( empty( $brand ) || is_wp_error( $brand ) ) {
53 return '';
54 }
55
56 if ( 'dark' === ( $brand->theme ?? '' ) && ! empty( $brand->dark_logo->url ) ) {
57 return $brand->dark_logo->url;
58 }
59
60 return $brand->logo_url ?? '';
61 }
62
63 /**
64 * Get the brand color based on the current theme.
65 *
66 * Returns the dark color when theme is dark and a dark color exists,
67 * otherwise returns the standard brand color.
68 *
69 * @return string The brand color hex value (without #).
70 */
71 public function brandColor(): string {
72 $brand = \SureCart::account()->brand;
73
74 if ( empty( $brand ) || is_wp_error( $brand ) ) {
75 return '000000';
76 }
77
78 if ( 'dark' === ( $brand->theme ?? '' ) && ! empty( $brand->dark_color ) ) {
79 return $brand->dark_color;
80 }
81
82 return $brand->color ?? '000000';
83 }
84
85 /**
86 * Add support for Appearance Tools.
87 *
88 * @return void
89 */
90 public function addAppearanceToolsSupport() {
91 add_theme_support( 'appearance-tools' );
92 add_theme_support( 'border' );
93 }
94
95 /**
96 * Add Theme to body class admin.
97 *
98 * @param string $classes String of classes.
99 *
100 * @return string
101 */
102 public function themeBodyClassAdmin( $classes ) {
103 global $pagenow;
104 if ( 'post.php' === $pagenow ) {
105 $classes .= ' surecart-theme-' . $this->mode();
106 }
107 return $classes;
108 }
109
110 /**
111 * Add our theme class to the body tag.
112 *
113 * @param array $classes Array of body classes.
114 *
115 * @return array
116 */
117 public function themeBodyClass( $classes ) {
118 $classes[] = 'surecart-theme-' . $this->mode();
119 return $classes;
120 }
121
122 /**
123 * Add our color to the palette.
124 *
125 * @return void
126 */
127 public function addColorToPalette() {
128 // Try to get the current theme default color palette.
129 $old_color_palette = current( (array) get_theme_support( 'editor-color-palette' ) );
130
131 // Get default core color palette from wp-includes/theme.json.
132 if ( false === $old_color_palette && class_exists( 'WP_Theme_JSON_Resolver' ) ) {
133 $settings = \WP_Theme_JSON_Resolver::get_core_data()->get_settings();
134 // wp 6.0+.
135 if ( isset( $settings['color']['palette']['default'] ) ) {
136 $old_color_palette = $settings['color']['palette']['default'];
137 }
138 // pre wp 6.0.
139 if ( isset( $settings['color']['palette']['core'] ) ) {
140 $old_color_palette = $settings['color']['palette']['default'];
141 }
142 }
143
144 // The new colors we are going to add.
145 $new_color_palette = [
146 [
147 'name' => esc_attr__( 'SureCart', 'surecart' ),
148 'slug' => 'surecart',
149 'color' => 'var(--sc-color-primary-500)',
150 ],
151 ];
152
153 // Merge the old and new color palettes.
154 if ( ! empty( $old_color_palette ) ) {
155 $new_color_palette = array_merge( $old_color_palette, $new_color_palette );
156 }
157
158 // Apply the color palette containing the original colors and 2 new colors.
159 add_theme_support( 'editor-color-palette', $new_color_palette );
160 }
161
162 /**
163 * Should load on demand block assets setting & functionality or not?
164 *
165 * @return boolean
166 */
167 public function shouldLoadOnDemandBlockAssets() {
168 $wp_version = wp_get_wp_version();
169 $is_block_theme = (bool) wp_is_block_theme();
170
171 if ( empty( $wp_version ) || $is_block_theme ) {
172 return false;
173 }
174
175 if ( version_compare( $wp_version, '6.8', '>' ) ) {
176 return false;
177 }
178
179 return true;
180 }
181 }
182