PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
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 / Svg / Svg.php
surecart / app / src / Svg Last commit date
Svg.php 5 months ago SvgServiceProvider.php 1 year ago
Svg.php
60 lines
1 <?php
2
3 namespace SureCart\Svg;
4
5 /**
6 * Svg handler class.
7 */
8 class Svg {
9 /**
10 * Get the SVG file contents.
11 *
12 * @param string $filename The name of the SVG file (without the .svg extension).
13 * @param array $attributes Attributes to add to the SVG tag.
14 *
15 * @return string SVG file contents
16 */
17 public function get( $filename, $attributes = array() ): string {
18 $plugin_dir = SURECART_DIST_DIR . '/icon-assets';
19 $file_path = $plugin_dir . '/' . $filename . '.svg';
20
21 if ( ! file_exists( $file_path ) ) {
22 return '';
23 }
24
25 $svg = file_get_contents( $file_path );
26
27 // Initialize the SVG tag processor.
28 $update_svg = new \WP_HTML_Tag_Processor( $svg );
29 $update_svg->next_tag( 'svg' );
30
31 // If there are attributes to add, add them.
32 if ( ! empty( $attributes ) ) {
33 foreach ( $attributes as $attribute => $value ) {
34 // If the attribute is 'class', add the class to the SVG file without overwriting the existing classes.
35 if ( 'class' === $attribute ) {
36 $update_svg->add_class( $value );
37 continue;
38 }
39
40 // If the attribute is 'style', append the style to the SVG file without overwriting the existing styles.
41 if ( 'style' === $attribute ) {
42 $existing_style = $update_svg->get_attribute( 'style' );
43 $value = $existing_style ? $existing_style . '; ' . $value : $value;
44 }
45
46 // Otherwise, set/update the attribute with the new value.
47 $update_svg->set_attribute( $attribute, $value );
48 }
49 }
50
51 // Add the 'pointer-events: none;' style to make the SVG non-interactive.
52 $existing_style = $update_svg->get_attribute( 'style' );
53 $new_style = $existing_style ? $existing_style . '; pointer-events: none;' : 'pointer-events: none;';
54 $update_svg->set_attribute( 'style', $new_style );
55
56 // Return the updated SVG string.
57 return $update_svg->get_updated_html();
58 }
59 }
60