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-premium-analytics / src / class-dashboard-section.php
jetpack / jetpack_vendor / automattic / jetpack-premium-analytics / src Last commit date
REST 3 weeks ago Reports 3 weeks ago Sync 3 weeks ago class-analytics.php 3 weeks ago class-capabilities.php 3 weeks ago class-connection-configuration.php 3 weeks ago class-dashboard-section-registry.php 3 weeks ago class-dashboard-section.php 3 weeks ago class-dashboard-support-routes.php 3 weeks ago class-jetpack-stats-tracker.php 3 weeks ago class-notices.php 3 weeks ago class-widget-type-registry.php 3 weeks ago class-widget-type.php 3 weeks ago class-woocommerce-analytics-tracker.php 3 weeks ago csv-exports.php 3 weeks ago dashboard-grammar.php 3 weeks ago dashboard-layout.php 3 weeks ago dashboard-sections.php 3 weeks ago rest-namespace.php 3 weeks ago widget-availability.php 3 weeks ago widget-i18n.json 3 weeks ago widget-modules.php 3 weeks ago widget-type-support.php 3 weeks ago widget-types.php 3 weeks ago
class-dashboard-section.php
165 lines
1 <?php
2 /**
3 * Dashboard Sections API: Dashboard_Section class.
4 *
5 * @package automattic/jetpack-premium-analytics
6 */
7
8 namespace Automattic\Jetpack\PremiumAnalytics;
9
10 /**
11 * Represents a dashboard section.
12 *
13 * A dashboard section is the server-owned model behind a top-level dashboard
14 * tab. It carries display metadata plus availability and default-layout
15 * callbacks that can be extended by consumers.
16 */
17 final class Dashboard_Section {
18
19 /**
20 * Dashboard identifier.
21 *
22 * @var string
23 */
24 public $dashboard_name;
25
26 /**
27 * Section identifier.
28 *
29 * @var string
30 */
31 public $id;
32
33 /**
34 * URL-facing section slug, derived from the identifier.
35 *
36 * @var string
37 */
38 public $slug;
39
40 /**
41 * Display label.
42 *
43 * @var string
44 */
45 public $label;
46
47 /**
48 * Sort order.
49 *
50 * @var int
51 */
52 public $order = 10;
53
54 /**
55 * Availability flag or callback.
56 *
57 * @var bool|callable
58 */
59 private $is_available = true;
60
61 /**
62 * Default layout array or callback.
63 *
64 * @var array|callable
65 */
66 private $default_layout = array();
67
68 /**
69 * Constructor.
70 *
71 * @param string $dashboard_name Dashboard identifier.
72 * @param string $id Section identifier.
73 * @param array $args Optional. Section arguments.
74 */
75 public function __construct( $dashboard_name, $id, $args = array() ) {
76 $this->dashboard_name = $dashboard_name;
77 $this->id = $id;
78 $this->slug = self::derive_slug( $id );
79 $this->label = $id;
80
81 $this->set_props( $args );
82 }
83
84 /**
85 * Derives the URL-facing slug from a namespaced section identifier.
86 *
87 * @param string $id Section identifier, e.g. `analytics/traffic`.
88 * @return string The segment after the namespace, e.g. `traffic`.
89 */
90 private static function derive_slug( $id ) {
91 $separator = strpos( (string) $id, '/' );
92
93 return false === $separator ? (string) $id : substr( $id, $separator + 1 );
94 }
95
96 /**
97 * Returns whether this section should be exposed.
98 *
99 * @return bool
100 */
101 public function is_available() {
102 if ( is_callable( $this->is_available ) ) {
103 return (bool) call_user_func( $this->is_available, $this );
104 }
105
106 return (bool) $this->is_available;
107 }
108
109 /**
110 * Returns the section's default widget layout.
111 *
112 * @return array Array of widget instances.
113 */
114 public function get_default_layout() {
115 $layout = is_callable( $this->default_layout )
116 ? call_user_func( $this->default_layout, $this )
117 : $this->default_layout;
118
119 return is_array( $layout ) ? array_values( $layout ) : array();
120 }
121
122 /**
123 * Returns the public REST representation.
124 *
125 * @return array
126 */
127 public function to_array() {
128 return array(
129 'id' => $this->id,
130 'slug' => $this->slug,
131 'label' => $this->label,
132 'order' => (int) $this->order,
133 'default_layout' => $this->get_default_layout(),
134 );
135 }
136
137 /**
138 * Hydrates section properties from the args array.
139 *
140 * @param array $args Section arguments.
141 * @return void
142 */
143 private function set_props( $args ) {
144 if ( ! is_array( $args ) ) {
145 return;
146 }
147
148 if ( isset( $args['label'] ) ) {
149 $this->label = (string) $args['label'];
150 }
151
152 if ( isset( $args['order'] ) ) {
153 $this->order = (int) $args['order'];
154 }
155
156 if ( array_key_exists( 'is_available', $args ) ) {
157 $this->is_available = $args['is_available'];
158 }
159
160 if ( array_key_exists( 'default_layout', $args ) ) {
161 $this->default_layout = $args['default_layout'];
162 }
163 }
164 }
165