PluginProbe
FileBird – WordPress Media Library Folders & File Manager / 6.2.5
FileBird – WordPress Media Library Folders & File Manager v6.2.5
6.5.8 6.5.7 6.5.5 6.5.4 trunk 4.3.1 5.1.6 5.3 5.3.2 5.4.3 5.4.4 5.4.5 5.5 5.5.3 5.5.5 5.5.8 5.5.8.1 5.6 5.6.1 5.6.2 5.6.3 5.6.4 6.2.3 6.2.5 6.3 All 36 releases
filebird / includes / Model / SettingModel.php

SettingModel.php in FileBird – WordPress Media Library Folders & File Manager 6.2.5, at includes/Model/SettingModel.php

223 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace FileBird\Model;
3
4 use FileBird\Utils\Singleton;
5 use FileBird\Model\Folder as FolderModel;
6
7 defined( 'ABSPATH' ) || exit;
8
9 class SettingModel {
10 use Singleton;
11
12 const DEFAULT_FOLDER = '_njt_fbv_default_folder';
13 const DEFAULT_SORT_FILES = '_njt_fbv_default_sort_files';
14 const DEFAULT_SORT_FOLDERS = 'fbv_folder_sort';
15 const FOLDER_COUNTER_TYPE = 'fbv_counter_type';
16 const FOLDER_STARTUP = 'fbv_folder_startup';
17 const THEME = 'fbv_theme';
18 const SHOW_BREAD_CRUMB = 'fbv_show_breadcrumb';
19
20 private $userId = '';
21
22 private $settings = array();
23 private $config = array();
24
25 public function __construct() {
26 $this->initialize();
27
28 $this->userId = get_current_user_id();
29 $this->settings = $this->loadSettings();
30
31 add_filter( 'fbv_data', array( $this, 'addUserSettingsData' ), 10, 1 );
32 }
33
34 public function initialize() {
35 $this->config = array(
36 'DEFAULT_FOLDER' => array(
37 'get' => 'getDefaultFolder',
38 'set' => 'setDefaultFolder',
39 ),
40 'DEFAULT_SORT_FILES' => array(
41 'get' => 'getSortFiles',
42 'set' => 'setSortFiles',
43 ),
44 'DEFAULT_SORT_FOLDERS' => array(
45 'get' => 'getSortFolders',
46 'set' => 'setSortFolders',
47 ),
48 'FOLDER_STARTUP' => array(
49 'get' => 'getFolderStartup',
50 'set' => 'setFolderStartup',
51 ),
52 'FOLDER_COUNTER_TYPE' => array(
53 'get' => 'getFolderCounterType',
54 'set' => 'setFolderCounterType',
55 ),
56 'THEME' => array(
57 'get' => 'getCurrentTheme',
58 'set' => 'setCurrentTheme',
59 ),
60 'SHOW_BREAD_CRUMB' => array(
61 'get' => 'getBreadCrumb',
62 'set' => 'setBreadCrumb',
63 ),
64 'USER_MODE' => array(
65 'get' => 'getUserMode',
66 'set' => 'setUserMode',
67 ),
68 'SVG_SUPPORT' => array(
69 'get' => 'getSvgSupport',
70 'set' => 'setSvgSupport',
71 ),
72 );
73 }
74
75 public function addUserSettingsData( $data ) {
76 $data['user_settings'] = $this->settings;
77 return $data;
78 }
79
80 public function loadSettings() {
81 foreach ( $this->config as $key => $value ) {
82 $this->settings[ $key ] = $this->{$value['get']}();
83 }
84
85 return $this->settings;
86 }
87
88 public function get( $key ) {
89 if ( in_array( $key, array_keys( $this->config ) ) ) {
90 return $this->settings[ $key ];
91 }
92 }
93
94 public function setSettings( $params ) {
95 foreach ( $params as $key => $value ) {
96 if ( isset( $this->config[ $key ] ) ) {
97 $this->{$this->config[ $key ]['set']}( $value );
98 }
99 }
100 }
101
102 public function getSortFiles() {
103 $meta = get_user_meta( $this->userId, self::DEFAULT_SORT_FILES, true );
104
105 if ( ! empty( $meta ) ) {
106 $parse = explode( '-', $meta );
107
108 return array(
109 'orderby' => $parse[0],
110 'order' => $parse[1] ?? '',
111 );
112 }
113
114 return null;
115 }
116
117 public function getFolderStartup() {
118 $defaultFolder = $this->settings['DEFAULT_FOLDER'];
119 $startupFolder = get_user_meta( $this->userId, self::FOLDER_STARTUP, true );
120 $startupFolder = is_numeric( $startupFolder ) ? intval( $startupFolder ) : FolderModel::ALL_CATEGORIES;
121
122 if ( $defaultFolder == FolderModel::PREVIOUS_FOLDER ) {
123 if ( $startupFolder > 0 ) {
124 if ( FolderModel::isFolderExist( $startupFolder ) ) {
125 return intval( $startupFolder );
126 } else {
127 $this->settings['FOLDER_STARTUP'] = FolderModel::ALL_CATEGORIES;
128 $this->setFolderStartup( FolderModel::ALL_CATEGORIES );
129 return FolderModel::ALL_CATEGORIES;
130 }
131 } else {
132 if ( in_array( $startupFolder, array( FolderModel::ALL_CATEGORIES, FolderModel::UN_CATEGORIZED ), true ) ) {
133 return $startupFolder;
134 }
135 }
136 }
137
138 return FolderModel::ALL_CATEGORIES;
139 }
140
141 public function setFolderStartup( $value ) {
142 update_user_meta( $this->userId, self::FOLDER_STARTUP, $value );
143 }
144
145 public function getSortFolders() {
146 return get_user_meta( $this->userId, self::DEFAULT_SORT_FOLDERS, true );
147 }
148
149 public function setSortFolders( $value ) {
150 update_user_meta( $this->userId, self::DEFAULT_SORT_FOLDERS, $value );
151 }
152
153 public function getCurrentTheme() {
154 $theme = get_user_meta( get_current_user_id(), self::THEME, true ) ?: 'default';
155
156 return array(
157 'name' => $theme,
158 'colors' => ThemeModel::COLORS,
159 );
160 }
161
162 public function getDefaultFolder() {
163 $folder_id = get_user_meta( $this->userId, self::DEFAULT_FOLDER, true );
164 $folder_id = intval( $folder_id );
165
166 if ( $folder_id > 0 ) {
167 if ( is_null( FolderModel::findById( $folder_id ) ) ) {
168 $folder_id = FolderModel::ALL_CATEGORIES;
169 }
170 }
171 return $folder_id;
172 }
173
174 public function getFolderCounterType() {
175 $type = get_user_meta( $this->userId, self::FOLDER_COUNTER_TYPE, true );
176 return empty( $type ) ? 'counter_file_in_folder' : $type;
177 }
178
179 public function getBreadCrumb() {
180 return get_user_meta( $this->userId, self::SHOW_BREAD_CRUMB, true );
181 }
182
183 public function setDefaultFolder( $value ) {
184 $value = (int) $value;
185 update_user_meta( $this->userId, self::DEFAULT_FOLDER, $value );
186 }
187
188 public function setSortFiles( $value ) {
189 $value = $value ? "{$value['orderby']}-{$value['order']}" : '';
190
191 update_user_meta( $this->userId, self::DEFAULT_SORT_FILES, $value );
192 }
193
194 public function setCurrentTheme( $theme ) {
195 // Fixed old FileBird version below 6
196 update_user_meta( $this->userId, self::THEME, $theme['name'] === 'default' ? '' : $theme['name'] );
197 }
198
199 public function setFolderCounterType( $type ) {
200 update_user_meta( $this->userId, self::FOLDER_COUNTER_TYPE, $type );
201 $this->settings['FOLDER_COUNTER_TYPE'] = $type;
202 }
203
204 public function setBreadCrumb( $value ) {
205 update_user_meta( $this->userId, self::SHOW_BREAD_CRUMB, $value );
206 }
207
208 public function getUserMode() {
209 return get_option( 'njt_fbv_folder_per_user', '0' ) === '1';
210 }
211
212 public function setUserMode( $value ) {
213 update_option( 'njt_fbv_folder_per_user', $value );
214 }
215
216 public function getSvgSupport() {
217 return get_option( 'njt_fbv_allow_svg_upload', '0' ) === '1';
218 }
219
220 public function setSvgSupport( $value ) {
221 update_option( 'njt_fbv_allow_svg_upload', $value );
222 }
223 }