PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.3
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.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 / jetpack_vendor / automattic / jetpack-menu-badges / src / class-notification-counts.php
jetpack / jetpack_vendor / automattic / jetpack-menu-badges / src Last commit date
js 1 month ago class-menu-badges.php 1 month ago class-menu-renderer.php 1 month ago class-notification-counts.php 1 month ago
class-notification-counts.php
135 lines
1 <?php
2 /**
3 * Central registry of admin-menu notification counts.
4 *
5 * @package automattic/jetpack-menu-badges
6 */
7
8 namespace Automattic\Jetpack\Menu_Badges;
9
10 /**
11 * Passive source of truth for admin-menu notification counts. Products register
12 * a count against a menu item; renderers read the aggregate. No rendering here.
13 */
14 class Notification_Counts {
15
16 /**
17 * Registered entries, keyed by id.
18 *
19 * @var array<string,array>
20 */
21 private static $entries = array();
22
23 /**
24 * Memoized result of all(), or null when stale. Invalidated on register()/reset().
25 *
26 * @var array<string,array>|null
27 */
28 private static $visible_cache = null;
29
30 /**
31 * Register (or overwrite) a notification count for a product.
32 *
33 * @param string $id Unique id (e.g. 'jetpack-forms').
34 * @param array $args {
35 * Notification count entry arguments.
36 *
37 * @type string|null $menu_slug Submenu item slug to badge; null → top-level only.
38 * @type int $count Magnitude for 'count' entries. Default 0.
39 * @type string $type 'count' | 'attention'. Default 'count'.
40 * @type bool $is_silent Exclude from totals/display. Default false.
41 * }
42 * @return void
43 */
44 public static function register( $id, array $args ) {
45 self::$entries[ $id ] = array(
46 'menu_slug' => isset( $args['menu_slug'] ) ? (string) $args['menu_slug'] : null,
47 'count' => isset( $args['count'] ) ? (int) $args['count'] : 0,
48 'type' => ( isset( $args['type'] ) && 'attention' === $args['type'] ) ? 'attention' : 'count',
49 'is_silent' => ! empty( $args['is_silent'] ),
50 );
51 self::$visible_cache = null;
52 }
53
54 /**
55 * All non-silent entries, after applying the extension filter.
56 *
57 * @return array<string,array>
58 */
59 public static function all() {
60 if ( null !== self::$visible_cache ) {
61 return self::$visible_cache;
62 }
63
64 /**
65 * Filters the registered menu notification counts.
66 *
67 * @since 0.1.0
68 * @param array<string,array> $entries Map of id => entry.
69 */
70 $entries = apply_filters( 'jetpack_menu_notification_counts', self::$entries );
71
72 $visible = array();
73 foreach ( $entries as $id => $entry ) {
74 if ( empty( $entry['is_silent'] ) ) {
75 $visible[ $id ] = $entry;
76 }
77 }
78
79 self::$visible_cache = $visible;
80 return $visible;
81 }
82
83 /**
84 * The magnitude an entry contributes to a total: its count, or 1 for attention.
85 *
86 * @param array $entry Entry.
87 * @return int
88 */
89 private static function magnitude( array $entry ) {
90 if ( isset( $entry['type'] ) && 'attention' === $entry['type'] ) {
91 return 1;
92 }
93 return isset( $entry['count'] ) ? (int) $entry['count'] : 0;
94 }
95
96 /**
97 * Summed count for a specific submenu item.
98 *
99 * @param string $menu_slug Submenu slug.
100 * @return int
101 */
102 public static function get_for_menu( $menu_slug ) {
103 $total = 0;
104 foreach ( self::all() as $entry ) {
105 if ( isset( $entry['menu_slug'] ) && $entry['menu_slug'] === $menu_slug ) {
106 $total += self::magnitude( $entry );
107 }
108 }
109 return $total;
110 }
111
112 /**
113 * Top-level total across all non-silent entries.
114 *
115 * @return int
116 */
117 public static function get_total() {
118 $total = 0;
119 foreach ( self::all() as $entry ) {
120 $total += self::magnitude( $entry );
121 }
122 return $total;
123 }
124
125 /**
126 * Clear all registered entries (test helper).
127 *
128 * @return void
129 */
130 public static function reset() {
131 self::$entries = array();
132 self::$visible_cache = null;
133 }
134 }
135