PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.9.2
Jetpack – WP Security, Backup, Speed, & Growth v13.9.2
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
132 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 Jetpack_Gutenberg;
17
18 /**
19 * Registers the block for use in Gutenberg.
20 * This is done via an action so that we can disable
21 * registration if we need to.
22 */
23 function register_block() {
24 if ( ( new Connection_Manager( 'jetpack' ) )->has_connected_owner() && ! ( new Status() )->is_offline_mode() ) {
25 Blocks::jetpack_register_block(
26 __DIR__,
27 array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
28 );
29 }
30 }
31 add_action( 'init', __NAMESPACE__ . '\register_block' );
32
33 /**
34 * Blog Stats block registration/dependency declaration.
35 *
36 * @param array $attributes Array containing the Blog Stats block attributes.
37 *
38 * @return string
39 */
40 function load_assets( $attributes ) {
41 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
42
43 // For outside the front-end, such as within emails or the API.
44 if ( ! jetpack_is_frontend() ) {
45 return;
46 }
47
48 // For when Stats has been disabled subsequent to inserting the block.
49 if ( ! \Jetpack::is_module_active( 'stats' ) ) {
50 if ( current_user_can( 'edit_theme_options' ) ) {
51 return sprintf(
52 '<p>%s</p>',
53 wp_kses(
54 sprintf(
55 /* translators: placeholder %s is a link to enable Jetpack Stats.. */
56 __( 'Please <a href="%s">enable Jetpack Stats</a> to use this block.', 'jetpack' ),
57 esc_url( admin_url( 'admin.php?page=jetpack_modules&module_tag=Jetpack%20Stats' ) )
58 ),
59 array( 'a' => array( 'href' => array() ) )
60 )
61 );
62 }
63
64 return;
65 }
66
67 // For when there's no post ID - eg. search pages.
68 if ( $attributes['statsOption'] === 'post' && ! get_the_ID() ) {
69 if ( current_user_can( 'edit_theme_options' ) ) {
70 return sprintf(
71 '<p>%s</p>',
72 esc_html( __( 'There are no stats to display for this post.', 'jetpack' ) )
73 );
74 }
75
76 return;
77 }
78
79 $stats = 0;
80 $wpcom_stats = new WPCOM_Stats();
81
82 if ( $attributes['statsOption'] === 'post' ) {
83 // Cache in post meta to prevent wp_options blowing up when retrieving views
84 // for multiple posts simultaneously (eg. when inserted into template).
85 $cache_in_meta = true;
86 $data = $wpcom_stats->convert_stats_array_to_object(
87 $wpcom_stats->get_post_views(
88 get_the_ID(),
89 array( 'fields' => 'views' ),
90 $cache_in_meta
91 )
92 );
93
94 if ( isset( $data->views ) ) {
95 $stats = $data->views;
96 }
97 } else {
98 $data = $wpcom_stats->convert_stats_array_to_object(
99 $wpcom_stats->get_stats( array( 'fields' => 'stats' ) )
100 );
101
102 if ( $attributes['statsData'] === 'views' && isset( $data->stats->views ) ) {
103 $stats = $data->stats->views;
104 }
105
106 if ( $attributes['statsData'] === 'visitors' && isset( $data->stats->visitors ) ) {
107 $stats = $data->stats->visitors;
108 }
109 }
110
111 $fallback_label = $attributes['statsData'] === 'visitors' ? esc_html(
112 /* Translators: Number of visitors */
113 _n( 'visitor', 'visitors', $stats, 'jetpack' )
114 ) : esc_html(
115 /* Translators: Number of views */
116 _n( 'hit', 'hits', $stats, 'jetpack' )
117 );
118
119 $label = empty( $attributes['label'] ) ? $fallback_label : $attributes['label'];
120
121 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
122
123 return sprintf(
124 '<div class="jetpack-blog-stats%s%s"%s><p>%s %s</p></div>',
125 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
126 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
127 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : '',
128 esc_html( number_format_i18n( $stats ) ),
129 wp_kses_post( $label )
130 );
131 }
132