PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.4.5
Jetpack – WP Security, Backup, Speed, & Growth v13.4.5
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 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 / blog-stats / blog-stats.php
jetpack / extensions / blocks / blog-stats Last commit date
blog-stats.php 2 years ago
blog-stats.php
139 lines
1 <?php
2 /**
3 * Blog Stats Block.
4 *
5 * @since 13.0
6 *
7 * @package automattic/jetpack
8 */
9
10 namespace Automattic\Jetpack\Extensions\Blog_Stats;
11
12 use Automattic\Jetpack\Blocks;
13 use Automattic\Jetpack\Connection\Manager as Connection_Manager;
14 use Automattic\Jetpack\Stats\WPCOM_Stats;
15 use Automattic\Jetpack\Status;
16 use Automattic\Jetpack\Status\Host;
17 use Jetpack_Gutenberg;
18
19 /**
20 * Registers the block for use in Gutenberg.
21 * This is done via an action so that we can disable
22 * registration if we need to.
23 */
24 function register_block() {
25 if (
26 ( new Host() )->is_wpcom_simple()
27 || (
28 ( new Connection_Manager( 'jetpack' ) )->has_connected_owner()
29 && ! ( new Status() )->is_offline_mode()
30 )
31 ) {
32 Blocks::jetpack_register_block(
33 __DIR__,
34 array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
35 );
36 }
37 }
38 add_action( 'init', __NAMESPACE__ . '\register_block' );
39
40 /**
41 * Blog Stats block registration/dependency declaration.
42 *
43 * @param array $attributes Array containing the Blog Stats block attributes.
44 *
45 * @return string
46 */
47 function load_assets( $attributes ) {
48 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
49
50 // For outside the front-end, such as within emails or the API.
51 if ( ! jetpack_is_frontend() ) {
52 return;
53 }
54
55 // For when Stats has been disabled subsequent to inserting the block.
56 if ( ! \Jetpack::is_module_active( 'stats' ) ) {
57 if ( current_user_can( 'edit_theme_options' ) ) {
58 return sprintf(
59 '<p>%s</p>',
60 wp_kses(
61 sprintf(
62 /* translators: placeholder %s is a link to enable Jetpack Stats.. */
63 __( 'Please <a href="%s">enable Jetpack Stats</a> to use this block.', 'jetpack' ),
64 esc_url( admin_url( 'admin.php?page=jetpack_modules&module_tag=Jetpack%20Stats' ) )
65 ),
66 array( 'a' => array( 'href' => array() ) )
67 )
68 );
69 }
70
71 return;
72 }
73
74 // For when there's no post ID - eg. search pages.
75 if ( $attributes['statsOption'] === 'post' && ! get_the_ID() ) {
76 if ( current_user_can( 'edit_theme_options' ) ) {
77 return sprintf(
78 '<p>%s</p>',
79 esc_html( __( 'There are no stats to display for this post.', 'jetpack' ) )
80 );
81 }
82
83 return;
84 }
85
86 $stats = 0;
87 $wpcom_stats = new WPCOM_Stats();
88
89 if ( $attributes['statsOption'] === 'post' ) {
90 // Cache in post meta to prevent wp_options blowing up when retrieving views
91 // for multiple posts simultaneously (eg. when inserted into template).
92 $cache_in_meta = true;
93 $data = $wpcom_stats->convert_stats_array_to_object(
94 $wpcom_stats->get_post_views(
95 get_the_ID(),
96 array( 'fields' => 'views' ),
97 $cache_in_meta
98 )
99 );
100
101 if ( isset( $data->views ) ) {
102 $stats = $data->views;
103 }
104 } else {
105 $data = $wpcom_stats->convert_stats_array_to_object(
106 $wpcom_stats->get_stats( array( 'fields' => 'stats' ) )
107 );
108
109 if ( $attributes['statsData'] === 'views' && isset( $data->stats->views ) ) {
110 $stats = $data->stats->views;
111 }
112
113 if ( $attributes['statsData'] === 'visitors' && isset( $data->stats->visitors ) ) {
114 $stats = $data->stats->visitors;
115 }
116 }
117
118 $fallback_label = $attributes['statsData'] === 'visitors' ? esc_html(
119 /* Translators: Number of visitors */
120 _n( 'visitor', 'visitors', $stats, 'jetpack' )
121 ) : esc_html(
122 /* Translators: Number of views */
123 _n( 'hit', 'hits', $stats, 'jetpack' )
124 );
125
126 $label = empty( $attributes['label'] ) ? $fallback_label : $attributes['label'];
127
128 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
129
130 return sprintf(
131 '<div class="jetpack-blog-stats%s%s"%s><p>%s %s</p></div>',
132 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
133 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
134 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : '',
135 esc_html( number_format_i18n( $stats ) ),
136 wp_kses_post( $label )
137 );
138 }
139