PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / extensions / blocks / rating-star / rating-meta.php
jetpack / extensions / blocks / rating-star Last commit date
rating-meta.php 5 years ago rating-star.php 7 months ago
rating-meta.php
131 lines
1 <?php
2 /**
3 * Utilities for the rating block.
4 *
5 * @since 8.0.0
6 *
7 * @package automattic/jetpack
8 */
9
10 if ( ! function_exists( 'jetpack_rating_meta_get_symbol_low_fidelity' ) ) {
11 /**
12 * Returns the low fidelity symbol for the block.
13 *
14 * @return string
15 */
16 function jetpack_rating_meta_get_symbol_low_fidelity() {
17 return '<span aria-hidden="true">⭐</span>';
18 }
19 }
20
21 if ( ! function_exists( 'jetpack_rating_star_get_symbol_high_fidelity' ) ) {
22 /**
23 * Return the high fidelity symbol for the block.
24 *
25 * @param string $classname_whole Name of the whole symbol class.
26 * @param string $classname_half Name of the half symbol class.
27 * @param string $color Color of the block.
28 *
29 * @return string
30 */
31 function jetpack_rating_star_get_symbol_high_fidelity( $classname_whole, $classname_half, $color ) {
32 return <<<ELO
33 <span>
34 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
35 <path class="{$classname_whole}" fill="{$color}" stroke="{$color}" d="M12,17.3l6.2,3.7l-1.6-7L22,9.2l-7.2-0.6L12,2L9.2,8.6L2,9.2L7.5,14l-1.6,7L12,17.3z" />
36 </svg>
37 </span>
38 <span>
39 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
40 <path class="{$classname_half}" fill="{$color}" stroke="{$color}" d="M12,17.3l6.2,3.7l-1.6-7L22,9.2l-7.2-0.6L12,2L9.2,8.6L2,9.2L7.5,14l-1.6,7L12,17.3z" />
41 </svg>
42 </span>
43 ELO;
44 }
45 }
46
47 if ( ! function_exists( 'jetpack_rating_meta_get_symbol_high_fidelity' ) ) {
48 /**
49 * Returns the high fidelity symbol for the block.
50 *
51 * @param array $attributes Array containing the block attributes.
52 * @param integer $pos Value to render whole and half symbols.
53 * @return string
54 */
55 function jetpack_rating_meta_get_symbol_high_fidelity( $attributes, $pos ) {
56 $classname_whole = ( $attributes['rating'] >= ( $pos - 0.5 ) ) ? '' : 'is-rating-unfilled';
57 $classname_half = ( $attributes['rating'] >= $pos ) ? '' : 'is-rating-unfilled';
58 $color = empty( $attributes['color'] ) ? 'currentColor' : esc_attr( $attributes['color'] );
59
60 return jetpack_rating_star_get_symbol_high_fidelity( $classname_whole, $classname_half, $color );
61 }
62 }
63
64 if ( ! function_exists( 'jetpack_rating_get_schema_for_symbol' ) ) {
65 /**
66 * Returns an itemprop and content for rating symbols
67 *
68 * @param integer $position the position of the symbol.
69 * @param integer $max_rating the maximum symbol score.
70 *
71 * @return string
72 */
73 function jetpack_rating_get_schema_for_symbol( $position, $max_rating ) {
74 $schema = '';
75 if ( 1 === $position ) {
76 $schema = 'itemprop="worstRating" content="0.5"';
77 } elseif ( $max_rating === $position ) {
78 $schema = 'itemprop="bestRating" content="' . esc_attr( $max_rating ) . '"';
79 }
80 return $schema;
81 }
82 }
83
84 if ( ! function_exists( 'jetpack_rating_meta_get_symbols' ) ) {
85 /**
86 * Returns the symbol for the block.
87 *
88 * @param array $attributes Array containing the block attributes.
89 *
90 * @return string
91 */
92 function jetpack_rating_meta_get_symbols( $attributes ) {
93 // Output SVGs for high fidelity contexts, then color them according to rating.
94 // These are hidden by default, then unhid when CSS loads.
95 $symbols_hifi = array();
96 for ( $pos = 1; $pos <= $attributes['maxRating']; $pos++ ) {
97 $symbols_hifi[] = '<span style="display: none;" ' . jetpack_rating_get_schema_for_symbol( $pos, $attributes['maxRating'] ) . '>' . jetpack_rating_meta_get_symbol_high_fidelity( $attributes, $pos ) . '</span>';
98 }
99
100 // Output fallback symbols for low fidelity contexts, like AMP,
101 // where CSS is not loaded so the high-fidelity symbols won't be rendered.
102 $symbols_lofi = '';
103 for ( $i = 0; $i < $attributes['rating']; $i++ ) {
104 $symbols_lofi .= jetpack_rating_meta_get_symbol_low_fidelity();
105 }
106
107 return '<p>' . $symbols_lofi . '</p>' . implode( $symbols_hifi );
108 }
109 }
110
111 if ( ! function_exists( 'jetpack_rating_meta_render_block' ) ) {
112 /**
113 * Dynamic rendering of the block.
114 *
115 * @param array $attributes Array containing the block attributes.
116 *
117 * @return string
118 */
119 function jetpack_rating_meta_render_block( $attributes ) {
120 $classname = empty( $attributes['className'] ) ? '' : ' ' . $attributes['className'];
121 return sprintf(
122 '<div class="%1$s" style="text-align:%4$s" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">%2$s%3$s</div>',
123 esc_attr( 'wp-block-jetpack-rating-' . $attributes['ratingStyle'] . $classname ),
124 jetpack_rating_meta_get_symbols( $attributes ),
125 // translators: %1$s is awarded rating score, %2$s is the best possible rating.
126 '<span itemprop="ratingValue" class="screen-reader-text" content="' . esc_attr( $attributes['rating'] ) . '">' . sprintf( __( 'Rating: %1$s out of %2$s.', 'jetpack' ), esc_attr( $attributes['rating'] ), esc_attr( $attributes['maxRating'] ) ) . '</span>',
127 ( isset( $attributes['align'] ) ) ? esc_attr( $attributes['align'] ) : ''
128 );
129 }
130 }
131