PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 3.0.7
Admin Columns v3.0.7
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 / API.php
codepress-admin-columns / classes Last commit date
Admin 8 years ago Column 8 years ago Helper 8 years ago ListScreen 8 years ago Meta 8 years ago Notice 8 years ago Plugin 8 years ago Relation 8 years ago Settings 8 years ago ThirdParty 8 years ago API.php 8 years ago Addon.php 8 years ago Admin.php 8 years ago Autoloader.php 8 years ago Collection.php 8 years ago Column.php 8 years ago Groups.php 8 years ago Helper.php 8 years ago ListScreen.php 8 years ago ListScreenPost.php 8 years ago Plugin.php 8 years ago PluginInformation.php 8 years ago Preferences.php 8 years ago Relation.php 8 years ago TableScreen.php 8 years ago View.php 8 years ago ViewInterface.php 8 years ago
API.php
180 lines
1 <?php
2
3 if ( ! defined( 'ABSPATH' ) ) {
4 exit;
5 }
6
7 class AC_API {
8
9 /**
10 * @var array [
11 * $listscreen_key => [
12 * [ 'columns' ][ array $column_settings ]
13 * [ 'layout' ][ array $layout_settings ]
14 * ]
15 * ]
16 */
17 private $columndata;
18
19 /**
20 * @param AC_ListScreen $list_screen
21 */
22 public function set_column_settings( AC_ListScreen $list_screen ) {
23 $settings = $this->get_column_settings( $list_screen );
24
25 if ( ! $settings ) {
26 return;
27 }
28
29 $list_screen->set_settings( $settings )->set_read_only( true );
30 }
31
32 /**
33 * @param AC_ListScreen $list_screen
34 *
35 * @return array|false
36 */
37 public function get_column_settings( AC_ListScreen $list_screen ) {
38 $columndata = $this->get_columndata( $list_screen->get_key() );
39
40 if ( ! $columndata ) {
41 return false;
42 }
43
44 foreach ( $columndata as $data ) {
45 if ( $list_screen->get_storage_key() === $list_screen->get_key() . $data['layout']['id'] ) {
46 return $data['columns'];
47 }
48 }
49
50 return false;
51 }
52
53 /**
54 * @param AC_ListScreen $list_screen
55 *
56 * @return array
57 */
58 public function get_layouts_settings( $list_screen ) {
59 $columndata = $this->get_columndata( $list_screen->get_key() );
60
61 if ( ! $columndata ) {
62 return array();
63
64 }
65
66 $layouts = array();
67 foreach ( $columndata as $data ) {
68 $layouts[] = $data['layout'];
69 }
70
71 return $layouts;
72 }
73
74 /**
75 * @param string|array $list_screen_key List screen key or keys
76 * @param array $column_data
77 */
78 public function load_columndata( $list_screen_keys, $columndata ) {
79 foreach ( (array) $list_screen_keys as $list_screen_key ) {
80 $this->add_columndata( $list_screen_key, $columndata );
81 }
82 }
83
84 /**
85 * @param string $list_screen_key List screen key
86 * @param array $column_data
87 */
88 private function add_columndata( $list_screen_key, $columndata ) {
89 $columndata = $this->convert_old_format_to_current( $columndata );
90 $columndata = $this->set_as_read_only( $columndata );
91
92 $this->columndata[ $list_screen_key ] = array_merge( $this->get_columndata( $list_screen_key ), $columndata );
93 }
94
95 /**
96 * @param string $list_screen_key
97 *
98 * @return array
99 */
100 private function get_columndata( $list_screen_key ) {
101 if ( ! isset( $this->columndata[ $list_screen_key ] ) ) {
102 return array();
103 }
104
105 return $this->columndata[ $list_screen_key ];
106 }
107
108 /**
109 * @param array $columndata
110 *
111 * @return array
112 */
113 private function set_as_read_only( $columndata ) {
114 foreach ( $columndata as $k => $column ) {
115 $columndata[ $k ]['layout']['read_only'] = true;
116 }
117
118 return $columndata;
119 }
120
121 /**
122 * Convert the old v3 format to the latest which includes layouts
123 *
124 * @param array $columndata
125 *
126 * @return array
127 */
128 private function convert_old_format_to_current( $columndata ) {
129
130 // Convert old export formats to new layout format
131 $old_format_columns = array();
132 foreach ( $columndata as $k => $data ) {
133 if ( ! isset( $data['columns'] ) ) {
134 $old_format_columns[ $k ] = $data;
135 unset( $columndata[ $k ] );
136 }
137 }
138
139 if ( $old_format_columns ) {
140 array_unshift( $columndata, array( 'columns' => $old_format_columns ) );
141 }
142
143 // Add layout if missing
144 foreach ( $columndata as $k => $data ) {
145 if ( ! isset( $data['layout'] ) ) {
146
147 $columndata[ $k ] = array(
148 'columns' => isset( $data['columns'] ) ? $data['columns'] : $data,
149 'layout' => array(
150 // unique id based on settings
151 'id' => sanitize_key( substr( md5( serialize( $data ) ), 0, 16 ) ),
152 'name' => __( 'Imported' ) . ( $k ? ' #' . $k : '' ),
153 ),
154 );
155 }
156 }
157
158 return $columndata;
159 }
160
161 /**
162 * @param string $json JSON encoded settings
163 */
164 public function load_from_json( $json ) {
165 $array = json_decode( $json, true );
166
167 $this->load_from_array( $array );
168 }
169
170 /**
171 * @param array $array
172 */
173 public function load_from_array( $array ) {
174 foreach ( $array as $list_screen => $columndata ) {
175 $this->load_columndata( $list_screen, $columndata );
176 }
177 }
178
179 }
180