PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.7.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.7.2
4.7.2 4.7.1 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 / helpers / block-helpers.php
surecart / app / helpers Last commit date
.gitkeep 4 years ago block-helpers.php 1 day ago block-style-helpers.php 7 months ago collection-helpers.php 1 month ago cookie-helpers.php 1 year ago kses-helpers.php 6 months ago product-helpers.php 5 months ago product-review-helpers.php 6 months ago route-helper.php 2 years ago state-helpers.php 2 years ago template-helpers.php 5 months ago
block-helpers.php
99 lines
1 <?php
2 if ( ! function_exists( 'sc_do_early_blocks' ) ) {
3 /**
4 * Run the early blocks.
5 * We need to remove the debug notice that is triggered by the `doing_it_wrong` function.
6 *
7 * We use this function in page builders that can sometimes render the blocks out of order, causing the debug notice to be displayed.
8 *
9 * @param string $content The content.
10 *
11 * @return string
12 */
13 function sc_pre_render_blocks( $content ) {
14 add_filter( 'doing_it_wrong_trigger_error', 'sc_remove_interactivity_debug_notice', 10, 2 );
15
16 $content = do_blocks( $content );
17
18 remove_filter( 'doing_it_wrong_trigger_error', 'sc_remove_interactivity_debug_notice', 10 );
19
20 return $content;
21 }
22 }
23
24 if ( ! function_exists( 'sc_remove_interactivity_debug_notice' ) ) {
25 /**
26 * Remove interactivity doing it wrong.
27 *
28 * This is because we need to render blocks out of order in order to
29 * add the attributes from bricks to the block.
30 *
31 * @param string $trigger Trigger.
32 * @param string $function_name Function name.
33 *
34 * @return string|false
35 */
36 function sc_remove_interactivity_debug_notice( $trigger, $function_name ) {
37 if ( 'WP_Interactivity_API::evaluate' !== $function_name ) {
38 return $trigger;
39 }
40 return false;
41 }
42 }
43
44 if ( ! function_exists( 'sc_has_interactive_content' ) ) {
45 /**
46 * Does this markup contain an element that cannot legally sit inside a link?
47 *
48 * Narrower than "is anything clickable": a role="button" div nests inside an anchor
49 * fine and cancels its own click, so only real controls force the stretched overlay.
50 *
51 * @param string $html The rendered markup to inspect.
52 *
53 * @return bool
54 */
55 function sc_has_interactive_content( $html ) {
56 if ( empty( $html ) ) {
57 return false;
58 }
59
60 // `label` and `details` count because both act on a click without being form controls.
61 $interactive_tags = [ 'A', 'BUTTON', 'SELECT', 'INPUT', 'TEXTAREA', 'DETAILS', 'LABEL' ];
62 $tags = new \WP_HTML_Tag_Processor( $html );
63
64 while ( $tags->next_tag() ) {
65 if ( in_array( $tags->get_tag(), $interactive_tags, true ) ) {
66 return true;
67 }
68 }
69
70 // Truncated markup stops the scan before the end of the string. Answer yes rather
71 // than let a caller wrap controls we simply never reached in a link.
72 return $tags->paused_at_incomplete_token();
73 }
74 }
75
76 if ( ! function_exists( 'sc_variant_pills_overflow_count' ) ) {
77 /**
78 * How many variant option pills should hide behind the "+N more" toggle?
79 *
80 * Deliberately literal — a cap of 3 shows 3 pills and "+1 more" even though
81 * the toggle takes the hidden pill's slot, because a setting that sometimes
82 * shows more than it says reads as broken. 0 means no cap.
83 *
84 * @param int $total Total number of option values.
85 * @param int $max_visible Maximum pills to show before capping (0 = no cap).
86 *
87 * @return int Number of pills to hide. 0 when everything should show.
88 */
89 function sc_variant_pills_overflow_count( $total, $max_visible ) {
90 $max_visible = max( 0, (int) $max_visible );
91
92 if ( $max_visible < 1 ) {
93 return 0;
94 }
95
96 return max( 0, (int) $total - $max_visible );
97 }
98 }
99