PluginProbe
Shared Files – File Upload & Download Manager / 1.7.69
Shared Files – File Upload & Download Manager v1.7.69
1.7.71 1.7.70 1.7.69 1.7.68 1.7.67 1.7.65 1.7.66 1.7.56 1.7.57 1.7.58 1.7.59 1.7.6 1.7.60 1.7.61 1.7.62 1.7.63 1.7.64 1.7.7 1.7.8 1.7.9 trunk 1.7.00 1.7.1 1.7.10 1.7.11 All 73 releases
shared-files / includes / class-shared-files.php

class-shared-files.php in Shared Files – File Upload & Download Manager 1.7.69, at includes/class-shared-files.php

407 lines 20.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if ( !defined( 'ABSPATH' ) ) {
4 exit;
5 }
6 /**
7 * The file that defines the core plugin class
8 *
9 * A class definition that includes attributes and functions used across both the
10 * public-facing side of the site and the admin area.
11 *
12 * @link https://anssilaitila.fi
13 * @since 1.0.0
14 *
15 * @package Shared_Files
16 */
17 /**
18 * The core plugin class.
19 *
20 * This is used to define internationalization, admin-specific hooks, and
21 * public-facing site hooks.
22 *
23 * Also maintains the unique identifier of this plugin as well as the current
24 * version of the plugin.
25 *
26 * @since 1.0.0
27 * @package Shared_Files
28 * @subpackage Shared_Files/includes
29 * @author Anssi Laitila <anssi.laitila@gmail.com>
30 */
31 class Shared_Files {
32 /**
33 * The loader that's responsible for maintaining and registering all hooks that power
34 * the plugin.
35 *
36 * @since 1.0.0
37 * @access protected
38 * @var Shared_Files_Loader $loader Maintains and registers all hooks for the plugin.
39 */
40 protected $loader;
41
42 /**
43 * The unique identifier of this plugin.
44 *
45 * @since 1.0.0
46 * @access protected
47 * @var string $plugin_name The string used to uniquely identify this plugin.
48 */
49 protected $plugin_name;
50
51 /**
52 * The current version of the plugin.
53 *
54 * @since 1.0.0
55 * @access protected
56 * @var string $version The current version of the plugin.
57 */
58 protected $version;
59
60 /**
61 * Define the core functionality of the plugin.
62 *
63 * Set the plugin name and the plugin version that can be used throughout the plugin.
64 * Load the dependencies, define the locale, and set the hooks for the admin area and
65 * the public-facing side of the site.
66 *
67 * @since 1.0.0
68 */
69 public function __construct() {
70 if ( defined( 'SHARED_FILES_VERSION' ) ) {
71 $this->version = SHARED_FILES_VERSION;
72 }
73 $this->plugin_name = 'shared-files';
74 $this->load_dependencies();
75 $this->define_admin_hooks();
76 $this->define_public_hooks();
77 }
78
79 /**
80 * Load the required dependencies for this plugin.
81 *
82 * Include the following files that make up the plugin:
83 *
84 * - Shared_Files_Loader. Orchestrates the hooks of the plugin.
85 * - Shared_Files_Admin. Defines all hooks for the admin area.
86 * - Shared_Files_Public. Defines all hooks for the public side of the site.
87 *
88 * Create an instance of the loader which will be used to register the hooks
89 * with WordPress.
90 *
91 * @since 1.0.0
92 * @access private
93 */
94 private function load_dependencies() {
95 /**
96 * The class responsible for orchestrating the actions and filters of the
97 * core plugin.
98 */
99 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-shared-files-loader.php';
100 /**
101 * The class responsible for defining internationalization functionality
102 * of the plugin.
103 */
104 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-shared-files-helpers.php';
105 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-shared-files-file-open.php';
106 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-shared-files-file-update.php';
107 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-shared-files-term-metadata.php';
108 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin.php';
109 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-cpt.php';
110 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-taxonomy.php';
111 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-maintenance.php';
112 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-operations.php';
113 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-inline-styles.php';
114 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-inline-scripts.php';
115 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-send-mail.php';
116 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-query.php';
117 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-list.php';
118 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-metadata.php';
119 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-shortcodes.php';
120 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-download-log.php';
121 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-statistics.php';
122 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-help-support.php';
123 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-helpers.php';
124 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-search-log.php';
125 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings.php';
126 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tabs.php';
127 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-field-render.php';
128 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-1.php';
129 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-technical.php';
130 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-layout.php';
131 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-custom-fields.php';
132 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-file-upload.php';
133 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-file-types.php';
134 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-custom-icons.php';
135 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-email.php';
136 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-admin-list.php';
137 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-file-edit.php';
138 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-favorites.php';
139 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-wait-countdown.php';
140 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-simple-list.php';
141 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-custom-post-type.php';
142 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-lead-generation.php';
143 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-single-file.php';
144 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-exact-search.php';
145 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/settings/class-sf-admin-settings-tab-search-log.php';
146 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-notifications.php';
147 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-toolbar.php';
148 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-sync-files.php';
149 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-sync-media-library.php';
150 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-file-handling.php';
151 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-restrict-access.php';
152 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-sf-admin-allow-more-file-types.php';
153 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public.php';
154 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-ajax.php';
155 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-helpers.php';
156 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-file-upload.php';
157 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-load.php';
158 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-pagination.php';
159 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-file-card-default.php';
160 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-file-card-vertical.php';
161 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-hooks.php';
162 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-sf-public-shortcode-filters.php';
163 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files.php';
164 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_search.php';
165 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_categories.php';
166 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode_shared_files_simple.php';
167 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_accordion.php';
168 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_favorites.php';
169 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_restricted.php';
170 require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-shortcode-shared_files_exact_search.php';
171 $this->loader = new Shared_Files_Loader();
172 }
173
174 /**
175 * Register all of the hooks related to the admin area functionality
176 * of the plugin.
177 *
178 * @since 1.0.0
179 * @access private
180 */
181 private function define_admin_hooks() {
182 $s = get_option( 'shared_files_settings' );
183 $plugin_admin = new Shared_Files_Admin($this->get_plugin_name(), $this->get_version());
184 $plugin_admin_cpt = new SharedFilesAdminCPT();
185 $plugin_admin_taxonomy = new SharedFilesAdminTaxonomy();
186 $plugin_admin_maintenance = new SharedFilesAdminMaintenance();
187 $plugin_admin_operations = new SharedFilesAdminOperations();
188 $plugin_admin_inline_styles = new SharedFilesAdminInlineStyles();
189 $plugin_admin_inline_scripts = new SharedFilesAdminInlineScripts();
190 $plugin_admin_toolbar = new SharedFilesAdminToolbar();
191 $plugin_admin_shortcodes = new SharedFilesAdminShortcodes();
192 $plugin_admin_download_log = new SharedFilesAdminDownloadLog();
193 $plugin_admin_statistics = new SharedFilesAdminStatistics();
194 $plugin_admin_help_support = new SharedFilesAdminHelpSupport();
195 $plugin_admin_query = new SharedFilesAdminQuery();
196 $plugin_admin_send_mail = new SharedFilesAdminSendMail();
197 $plugin_admin_list = new SharedFilesAdminList();
198 $plugin_admin_metadata = new SharedFilesAdminMetadata();
199 $plugin_admin_notifications = new SharedFilesAdminNotifications();
200 $plugin_admin_search_log = new SharedFilesAdminSearchLog();
201 $plugin_admin_sync_files = new SharedFilesAdminSyncFiles();
202 $plugin_admin_sync_media_library = new SharedFilesAdminSyncMediaLibrary();
203 $plugin_admin_file_handling = new SharedFilesFileHandling();
204 $plugin_admin_restrict_access = new SharedFilesAdminRestrictAccess();
205 $plugin_admin_allow_more_file_types = new SharedFilesAdminAllowMoreFileTypes();
206 $plugin_settings = new Shared_Files_Settings();
207 $this->loader->add_action( 'wp_ajax_shared_files_file_upload', $plugin_admin_sync_files, 'handle_file_upload' );
208 // Enqueue CSS + JS (+ other)
209 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
210 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
211 $this->loader->add_action( 'before_delete_post', $plugin_admin, 'delete_shared_file' );
212 $this->loader->add_action( 'in_admin_header', $plugin_admin_toolbar, 'admin_header' );
213 $this->loader->add_action( 'admin_body_class', $plugin_admin_toolbar, 'admin_body_class' );
214 $this->loader->add_action( 'in_admin_footer', $plugin_admin_toolbar, 'admin_footer' );
215 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_settings_link' );
216 // Maintenance
217 $this->loader->add_filter( 'cron_schedules', $plugin_admin_maintenance, 'add_cron_interval' );
218 $this->loader->add_action( 'plugins_loaded', $plugin_admin_maintenance, 'update_db_check' );
219 $this->loader->add_action( 'init', $plugin_admin_maintenance, 'update_db_check_v2' );
220 // Admin operations
221 $this->loader->add_filter( 'admin_init', $plugin_admin_operations, 'operations' );
222 // CPT
223 $this->loader->add_action( 'init', $plugin_admin_cpt, 'create_custom_post_type' );
224 $this->loader->add_action(
225 'wp_after_insert_post',
226 $plugin_admin_cpt,
227 'after_insert_post',
228 0,
229 4
230 );
231 // Custom metadata for a file
232 $this->loader->add_action( 'save_post', $plugin_admin_metadata, 'save_custom_meta_data' );
233 $this->loader->add_action( 'add_meta_boxes_shared_file', $plugin_admin_metadata, 'adding_custom_meta_boxes' );
234 // Custom taxonomy
235 $this->loader->add_action(
236 'init',
237 $plugin_admin_taxonomy,
238 'create_shared_files_custom_taxonomy',
239 0
240 );
241 $this->loader->add_action(
242 'shared-file-category_edit_form_fields',
243 $plugin_admin_taxonomy,
244 'taxonomy_custom_fields',
245 10,
246 2
247 );
248 $this->loader->add_filter( 'manage_edit-shared-file-category_columns', $plugin_admin_taxonomy, 'theme_columns' );
249 $this->loader->add_filter(
250 'manage_shared-file-category_custom_column',
251 $plugin_admin_taxonomy,
252 'add_shared_file_category_column_content',
253 10,
254 3
255 );
256 // Query
257 $this->loader->add_filter( 'request', $plugin_admin_query, 'alter_the_query' );
258 // Inline
259 // $this->loader->add_action('admin_head', $plugin_admin_inline_scripts, 'inline_scripts', 100);
260 // Admin list
261 $this->loader->add_action(
262 'manage_shared_file_posts_custom_column',
263 $plugin_admin_list,
264 'shared_file_custom_columns_content',
265 10,
266 2
267 );
268 $this->loader->add_action(
269 'restrict_manage_posts',
270 $plugin_admin_list,
271 'filter_files_by_taxonomies',
272 10,
273 2
274 );
275 $this->loader->add_filter(
276 'manage_shared_file_posts_columns',
277 $plugin_admin_list,
278 'shared_file_custom_columns',
279 10
280 );
281 $this->loader->add_filter( 'manage_edit-shared_file_sortable_columns', $plugin_admin_list, 'set_custom_shared_files_sortable_columns' );
282 $this->loader->add_filter( 'parse_query', $plugin_admin_list, 'sort_posts_by_meta_value' );
283 $this->loader->add_filter(
284 'posts_clauses',
285 $plugin_admin_list,
286 'sort_by_custom_taxonomy',
287 10,
288 2
289 );
290 // Notifications
291 $this->loader->add_action(
292 'admin_notices',
293 $plugin_admin_notifications,
294 'notifications_html',
295 8
296 );
297 $this->loader->add_action( 'admin_init', $plugin_admin_notifications, 'process_notifications' );
298 // Sync files
299 $this->loader->add_action( 'admin_menu', $plugin_admin_sync_files, 'register_page' );
300 $this->loader->add_action( 'admin_menu', $plugin_admin_sync_media_library, 'register_page' );
301 // Search log
302 $this->loader->add_action( 'admin_menu', $plugin_admin_search_log, 'register_search_log_page' );
303 // Settings
304 $this->loader->add_action( 'admin_menu', $plugin_settings, 'shared_files_add_admin_menu' );
305 $this->loader->add_action( 'admin_init', $plugin_settings, 'shared_files_settings_init' );
306 // Download log
307 if ( !isset( $s['disable_download_log'] ) ) {
308 $this->loader->add_action( 'admin_menu', $plugin_admin_download_log, 'register_download_log_page' );
309 }
310 // Statistics
311 $this->loader->add_action( 'admin_menu', $plugin_admin_statistics, 'register_statistics_page' );
312 // Shortcodes
313 $this->loader->add_action( 'admin_menu', $plugin_admin_shortcodes, 'register_shortcodes_page' );
314 // Help & support
315 $this->loader->add_action( 'admin_menu', $plugin_admin_help_support, 'register_support_page' );
316 $this->loader->add_action( 'admin_menu', $plugin_admin_help_support, 'register_debug_page' );
317 // Restrict access info page
318 $this->loader->add_action( 'admin_menu', $plugin_admin_restrict_access, 'register_page' );
319 if ( SharedFilesHelpers::isPremium() == 0 ) {
320 $this->loader->add_action( 'admin_menu', $plugin_admin_taxonomy, 'register_categories_info_page' );
321 }
322 if ( SharedFilesHelpers::isPremium() == 0 ) {
323 $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_upgrade_link' );
324 }
325 }
326
327 /**
328 * Register all of the hooks related to the public-facing functionality
329 * of the plugin.
330 *
331 * @since 1.0.0
332 * @access private
333 */
334 private function define_public_hooks() {
335 $s = get_option( 'shared_files_settings' );
336 $plugin_public = new Shared_Files_Public($this->get_plugin_name(), $this->get_version());
337 $plugin_public_ajax = new SharedFilesPublicAjax();
338 $plugin_public_file_upload = new SharedFilesFileUpload();
339 $plugin_public_load = new SharedFilesPublicLoad();
340 // $plugin_public_pagination = new SharedFilesPublicPagination();
341 // Enqueue CSS + JS + register shortcodes + set cookies
342 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
343 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public_load, 'public_inline_styles' );
344 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
345 $this->loader->add_action( 'enqueue_block_assets', $plugin_public, 'enqueue_block_assets' );
346 $this->loader->add_action( 'init', $plugin_public, 'register_block' );
347 $this->loader->add_filter(
348 'rest_shared_file_query',
349 $plugin_public,
350 'filter_rest_api_query',
351 10,
352 2
353 );
354 $this->loader->add_action( 'init', $plugin_public, 'register_shortcodes' );
355 $this->loader->add_action( 'init', $plugin_public_load, 'set_cookies' );
356 // Search log
357 if ( isset( $s['enable_search_log'] ) ) {
358 $this->loader->add_action( 'wp_ajax_nopriv_shared_files_search_log', $plugin_public_ajax, 'search_log' );
359 $this->loader->add_action( 'wp_ajax_shared_files_search_log', $plugin_public_ajax, 'search_log' );
360 }
361 // Ajax
362 $this->loader->add_action( 'wp_ajax_nopriv_sf_get_files', $plugin_public_ajax, 'sf_get_files' );
363 $this->loader->add_action( 'wp_ajax_sf_get_files', $plugin_public_ajax, 'sf_get_files' );
364 }
365
366 /**
367 * Run the loader to execute all of the hooks with WordPress.
368 *
369 * @since 1.0.0
370 */
371 public function run() {
372 $this->loader->run();
373 }
374
375 /**
376 * The name of the plugin used to uniquely identify it within the context of
377 * WordPress and to define internationalization functionality.
378 *
379 * @since 1.0.0
380 * @return string The name of the plugin.
381 */
382 public function get_plugin_name() {
383 return $this->plugin_name;
384 }
385
386 /**
387 * The reference to the class that orchestrates the hooks with the plugin.
388 *
389 * @since 1.0.0
390 * @return Shared_Files_Loader Orchestrates the hooks of the plugin.
391 */
392 public function get_loader() {
393 return $this->loader;
394 }
395
396 /**
397 * Retrieve the version number of the plugin.
398 *
399 * @since 1.0.0
400 * @return string The version number of the plugin.
401 */
402 public function get_version() {
403 return $this->version;
404 }
405
406 }
407