PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.3.2
Admin Columns v4.3.2
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Admin / Main / Addons.php
codepress-admin-columns / classes / Admin / Main Last commit date
Addons.php 5 years ago Columns.php 5 years ago Help.php 5 years ago Settings.php 5 years ago
Addons.php
145 lines
1 <?php
2
3 namespace AC\Admin\Main;
4
5 use AC;
6 use AC\Admin;
7 use AC\Asset\Assets;
8 use AC\Asset\Enqueueables;
9 use AC\Asset\Location;
10 use AC\Asset\Style;
11 use AC\PluginInformation;
12 use AC\Renderable;
13
14 class Addons implements Enqueueables, Renderable {
15
16 const NAME = 'addons';
17
18 /**
19 * @var Location\Absolute
20 */
21 private $location;
22
23 /**
24 * @var AC\Integrations
25 */
26 private $integrations;
27
28 public function __construct( Location\Absolute $location, AC\Integrations $integrations ) {
29 $this->location = $location;
30 $this->integrations = $integrations;
31 }
32
33 public function get_assets() {
34 return new Assets( [
35 new Style( 'ac-admin-page-addons', $this->location->with_suffix( 'assets/css/admin-page-addons.css' ) ),
36 new Admin\Asset\Addons( 'ac-admin-page-addons', $this->location->with_suffix( 'assets/js/admin-page-addons.js' ) ),
37 ] );
38 }
39
40 public function render() {
41 ob_start();
42
43 foreach ( $this->get_grouped_addons() as $group ) :
44 ?>
45
46 <div class="ac-addons group-<?= esc_attr( $group['class'] ); ?>">
47 <h2><?php echo esc_html( $group['title'] ); ?></h2>
48
49 <ul>
50 <?php
51 foreach ( $group['integrations'] as $addon ) {
52 /* @var AC\Integration $addon */
53
54 $view = new AC\View( [
55 'logo' => AC()->get_url() . $addon->get_logo(),
56 'title' => $addon->get_title(),
57 'slug' => $addon->get_slug(),
58 'description' => $addon->get_description(),
59 'actions' => $this->render_actions( $addon ),
60 ] );
61
62 echo $view->set_template( 'admin/edit-addon' );
63 }
64 ?>
65 </ul>
66 </div>
67 <?php endforeach;
68
69 return ob_get_clean();
70 }
71
72 /**
73 * @param AC\Integration $addon
74 *
75 * @return string
76 */
77 private function render_actions( AC\Integration $addon ) {
78 ob_start();
79
80 $plugin = new PluginInformation( $addon->get_basename() );
81 $view = new Admin\AddonStatus( $plugin, $addon, is_multisite(), is_network_admin() );
82 $view->render();
83
84 return ob_get_clean();
85 }
86
87 /**
88 * @return array
89 */
90 private function get_grouped_addons() {
91
92 $active = [];
93 $recommended = [];
94 $available = [];
95
96 foreach ( $this->integrations->all() as $integration ) {
97 $plugin = new PluginInformation( $integration->get_basename() );
98
99 $is_active = $plugin->is_network_active()
100 || ( ! is_multisite() && $plugin->is_active() )
101 || ( is_multisite() && ! is_network_admin() && $plugin->is_active() );
102
103 if ( $is_active ) {
104 $active[] = $integration;
105 continue;
106 }
107
108 if ( $integration->is_plugin_active() ) {
109 $recommended[] = $integration;
110 continue;
111 }
112
113 $available[] = $integration;
114 }
115
116 $groups = [];
117
118 if ( $recommended ) {
119 $groups[] = [
120 'title' => __( 'Recommended', 'codepress-admin-columns' ),
121 'class' => 'recommended',
122 'integrations' => $recommended,
123 ];
124 }
125
126 if ( $active ) {
127 $groups[] = [
128 'title' => __( 'Active', 'codepress-admin-columns' ),
129 'class' => 'active',
130 'integrations' => $active,
131 ];
132 }
133
134 if ( $available ) {
135 $groups[] = [
136 'title' => __( 'Available', 'codepress-admin-columns' ),
137 'class' => 'available',
138 'integrations' => $available,
139 ];
140 }
141
142 return $groups;
143 }
144
145 }