PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 3.4.1
Admin Columns v3.4.1
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 / Groups.php
codepress-admin-columns / classes Last commit date
Admin 7 years ago Ajax 7 years ago Autoloader 7 years ago Check 7 years ago Column 7 years ago Deprecated 7 years ago Exception 7 years ago Form 7 years ago Helper 7 years ago Integration 7 years ago ListScreen 7 years ago Message 7 years ago Meta 7 years ago Plugin 7 years ago Preferences 7 years ago Relation 7 years ago Request 7 years ago Response 7 years ago Screen 7 years ago Settings 7 years ago Storage 7 years ago Table 7 years ago ThirdParty 7 years ago Transient 7 years ago API.php 7 years ago Addon.php 7 years ago Admin.php 7 years ago AdminColumns.php 7 years ago ArrayIterator.php 7 years ago Autoloader.php 7 years ago Builder.php 7 years ago Capabilities.php 7 years ago Collection.php 7 years ago Column.php 7 years ago Config.php 7 years ago Dependencies.php 7 years ago Expirable.php 7 years ago Groups.php 7 years ago Helper.php 7 years ago Integration.php 7 years ago IntegrationFactory.php 7 years ago Integrations.php 7 years ago ListScreen.php 7 years ago ListScreenFactory.php 7 years ago ListScreenGroups.php 7 years ago ListScreenPost.php 7 years ago ListScreenWP.php 7 years ago Message.php 7 years ago MetaType.php 7 years ago Middleware.php 7 years ago Plugin.php 7 years ago PluginInformation.php 7 years ago Preferences.php 7 years ago Registrable.php 7 years ago Relation.php 7 years ago Request.php 7 years ago Screen.php 7 years ago ScreenController.php 7 years ago Settings.php 7 years ago Transient.php 7 years ago TypedArrayIterator.php 7 years ago View.php 7 years ago
Groups.php
151 lines
1 <?php
2
3 namespace AC;
4
5 /**
6 * Holds the groups to which columns can belong.
7 */
8 final class Groups {
9
10 const SORT_PRIORITY = 1;
11
12 const SORT_SLUG = 2;
13
14 const SORT_LABEL = 3;
15
16 /**
17 * @var array
18 */
19 private $groups = array();
20
21 /**
22 * @return array
23 */
24 public function get_groups() {
25 return $this->groups;
26 }
27
28 /**
29 * Return the registered groups sorted by either label, slug or priority
30 *
31 * @param int $sort_by Default is self::SORT_PRIORITY
32 *
33 * @return array
34 */
35 public function get_groups_sorted( $sort_by = null ) {
36 switch ( $sort_by ) {
37 case self::SORT_LABEL :
38 $sorted = $this->sort_groups_by_string( $this->get_groups(), 'label' );
39
40 break;
41 case self::SORT_SLUG :
42 $sorted = $this->sort_groups_by_string( $this->get_groups(), 'slug' );
43
44 break;
45 default :
46 $sorted = $this->sort_groups_by_priority( $this->get_groups() );
47 }
48
49 return $sorted;
50 }
51
52 /**
53 * Sort the group by priority
54 * If there are more groups with the same priority it will those groups by label
55 *
56 * @param $groups
57 *
58 * @return array
59 */
60 private function sort_groups_by_priority( array $groups ) {
61 $aggregated = $sorted = array();
62
63 foreach ( $groups as $group ) {
64 $aggregated[ $group['priority'] ][] = $group;
65 }
66
67 ksort( $aggregated, SORT_NUMERIC );
68
69 foreach ( $aggregated as $priority => $groups ) {
70 $sorted = array_merge( $sorted, $this->sort_groups_by_string( $groups, 'label' ) );
71 }
72
73 return $sorted;
74 }
75
76 /**
77 * Sort the group by label or slug
78 *
79 * @param array $groups
80 * @param string $key
81 *
82 * @return array
83 */
84 private function sort_groups_by_string( array $groups, $key ) {
85 $sorted = array();
86
87 foreach ( $groups as $k => $group ) {
88 $sorted[ $k ] = $group[ $key ];
89 }
90
91 natcasesort( $sorted );
92
93 foreach ( array_keys( $sorted ) as $k ) {
94 $sorted[ $k ] = $groups[ $k ];
95 }
96
97 return $sorted;
98 }
99
100 /**
101 * @param string $slug
102 *
103 * @return bool|mixed
104 */
105 public function get_group( $slug ) {
106 if ( ! $this->has_group( $slug ) ) {
107 return false;
108 }
109
110 return $this->groups[ $slug ];
111 }
112
113 public function get_group_label( $slug ) {
114 $group = $this->get_group( $slug );
115
116 return $group ? $group['label'] : false;
117 }
118
119 /**
120 * @param string $slug
121 *
122 * @return bool
123 */
124 public function has_group( $slug ) {
125 return isset( $this->groups[ $slug ] );
126 }
127
128 /**
129 * Register a (column) group
130 *
131 * @param string $slug
132 * @param string $label Should be translatable
133 * @param int $priority
134 *
135 * @return bool
136 */
137 public function register_group( $slug, $label, $priority = 10 ) {
138 if ( $this->has_group( $slug ) ) {
139 return false;
140 }
141
142 $this->groups[ $slug ] = array(
143 'slug' => $slug,
144 'label' => $label,
145 'priority' => $priority,
146 );
147
148 return true;
149 }
150
151 }