PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9.2
Jetpack – WP Security, Backup, Speed, & Growth v15.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 9 months ago
blog-stats.php
128 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\Modules;
15 use Automattic\Jetpack\Status;
16 use Automattic\Jetpack\Status\Host;
17 use Automattic\Jetpack\Status\Request;
18 use Jetpack_Blog_Stats_Helper;
19 use Jetpack_Gutenberg;
20
21 if ( ! defined( 'ABSPATH' ) ) {
22 exit( 0 );
23 }
24
25 if ( ! class_exists( 'Jetpack_Blog_Stats_Helper' ) ) {
26 require_once JETPACK__PLUGIN_DIR . '/_inc/lib/class-jetpack-blog-stats-helper.php';
27 }
28
29 /**
30 * Registers the block for use in Gutenberg.
31 * This is done via an action so that we can disable
32 * registration if we need to.
33 */
34 function register_block() {
35 /*
36 * The block is available even when the module is not active,
37 * so we can display a nudge to activate the module instead of the block.
38 * However, since non-admins cannot activate modules, we do not display the empty block for them.
39 */
40 if ( ! ( new Modules() )->is_active( 'stats' ) && ! current_user_can( 'jetpack_activate_modules' ) ) {
41 return;
42 }
43
44 if (
45 ( new Host() )->is_wpcom_simple()
46 || (
47 ( new Connection_Manager( 'jetpack' ) )->has_connected_owner()
48 && ! ( new Status() )->is_offline_mode()
49 )
50 ) {
51 Blocks::jetpack_register_block(
52 __DIR__,
53 array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
54 );
55 }
56 }
57 add_action( 'init', __NAMESPACE__ . '\register_block' );
58
59 /**
60 * Blog Stats block registration/dependency declaration.
61 *
62 * @param array $attributes Array containing the Blog Stats block attributes.
63 *
64 * @return string
65 */
66 function load_assets( $attributes ) {
67 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
68
69 // For outside the front-end, such as within emails or the API.
70 if ( ! Request::is_frontend() ) {
71 return;
72 }
73
74 // For when Stats has been disabled subsequent to inserting the block.
75 if ( ! ( new Modules() )->is_active( 'stats' ) ) {
76 if ( current_user_can( 'edit_theme_options' ) ) {
77 return sprintf(
78 '<p>%s</p>',
79 wp_kses(
80 sprintf(
81 /* translators: placeholder %s is a link to enable Jetpack Stats.. */
82 __( 'Please <a href="%s">enable Jetpack Stats</a> to use this block.', 'jetpack' ),
83 esc_url( admin_url( 'admin.php?page=jetpack_modules&module_tag=Jetpack%20Stats' ) )
84 ),
85 array( 'a' => array( 'href' => array() ) )
86 )
87 );
88 }
89
90 return;
91 }
92
93 // For when there's no post ID - eg. search pages.
94 if ( $attributes['statsOption'] === 'post' && ! get_the_ID() ) {
95 if ( current_user_can( 'edit_theme_options' ) ) {
96 return sprintf(
97 '<p>%s</p>',
98 esc_html( __( 'There are no stats to display for this post.', 'jetpack' ) )
99 );
100 }
101
102 return;
103 }
104
105 $stats = Jetpack_Blog_Stats_Helper::get_stats( $attributes );
106
107 $fallback_label = $attributes['statsData'] === 'visitors' ? esc_html(
108 /* Translators: Number of visitors */
109 _n( 'visitor', 'visitors', $stats, 'jetpack' )
110 ) : esc_html(
111 /* Translators: Number of views */
112 _n( 'hit', 'hits', $stats, 'jetpack' )
113 );
114
115 $label = empty( $attributes['label'] ) ? $fallback_label : $attributes['label'];
116
117 $wrapper_attributes = \WP_Block_Supports::get_instance()->apply_block_supports();
118
119 return sprintf(
120 '<div class="jetpack-blog-stats%s%s"%s><p>%s %s</p></div>',
121 ! empty( $attributes['className'] ) ? ' ' . esc_attr( $attributes['className'] ) : '',
122 ! empty( $wrapper_attributes['class'] ) ? ' ' . esc_attr( $wrapper_attributes['class'] ) : '',
123 ! empty( $wrapper_attributes['style'] ) ? ' style="' . esc_attr( $wrapper_attributes['style'] ) . '"' : '',
124 esc_html( number_format_i18n( $stats ) ),
125 wp_kses_post( $label )
126 );
127 }
128