Edit File: FileManager.php
<?php namespace NinjaFileManager\File_manager; defined('ABSPATH') || exit; /** * Settings Page */ class FileManager { protected static $instance = null; /** * * @var object $options The object of the options class * * */ public $options; public $fmCapability = ''; public $userRole = ''; private $hook_suffix = array(); public static function getInstance() { if (null == self::$instance) { self::$instance = new self; } return self::$instance; } private function __construct() { //get user role $user = wp_get_current_user(); $this->userRole = $user && $user->roles && isset($user->roles[0]) ? $user->roles[0] : ''; if ( empty($this->userRole) && isset($user->roles)) { $role = ''; foreach( $user->roles as $key => $value) { $role = $value; } $this->userRole = $role; } // Loading Options // Options $this->options = get_option('njt_fs_settings'); if(empty($this->options)) { $this->options = array( // Setting up default values 'njt_fs_file_manager_settings' => array( 'root_folder_path' => ABSPATH, 'root_folder_url' => site_url() ), ); } register_shutdown_function(array($this, 'saveOptions')); add_action('init', array($this, 'isAlowUserAccess')); if ($this->isAlowUserAccess()) { add_action('admin_enqueue_scripts', array($this, 'enqueueAdminScripts')); add_action('admin_menu', array($this, 'FileManager')); add_action('wp_ajax_fs_connector', array($this, 'fsConnector')); add_action('wp_ajax_selector_themes', array($this, 'selectorThemes')); add_action('wp_ajax_get_role_restrictions', array($this, 'getArrRoleRestrictions')); add_action('wp_ajax_njt_fs_save_setting', array($this, 'njt_fs_saveSetting')); add_action('wp_ajax_njt_fs_save_setting_restrictions', array($this, 'njt_fs_saveSettingRestrictions')); $optionReview = get_option('njt_fs_review'); if (time() >= (int)$optionReview && $optionReview !== '0'){ add_action('admin_notices', array($this, 'njt_fs_give_review')); } add_action('wp_ajax_njt_fs_save_review', array($this, 'njt_fs_save_review')); } } public function njt_fs_give_review() { if (function_exists('get_current_screen')) { if (get_current_screen()->id == 'file-manager_page_filester-settings' || get_current_screen()->id == 'toplevel_page_njt-fs-filemanager' || get_current_screen()->id == 'plugins') { $this->enqueue_scripts(); ?> <div class="notice notice-success is-dismissible" id="njt-fs-review"> <h3><?php _e('Give Filester a review', 'filester')?></h3> <p> <?php _e('Thank you for choosing Filester. We hope you love it. Could you take a couple of seconds posting a nice review to share your happy experience?', 'filester')?> </p> <p> <?php _e('We will be forever grateful. Thank you in advance ;)', 'filester')?> </p> <p> <a href="javascript:;" data="rateNow" class="button button-primary" style="margin-right: 5px"><?php _e('Rate now', 'filester')?></a> <a href="javascript:;" data="later" class="button" style="margin-right: 5px"><?php _e('Later', 'filester')?></a> <a href="javascript:;" data="alreadyDid" class="button"><?php _e('Already did', 'filester')?></a> </p> </div> <?php } } } public function njt_fs_save_review() { if ( isset( $_POST ) ) { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( $_POST['nonce'] ) : null; $field = isset( $_POST['field'] ) ? sanitize_text_field( $_POST['field'] ) : null; if ( ! wp_verify_nonce( $nonce, 'njt-fs-review' ) ) { wp_send_json_error( array( 'status' => 'Wrong nonce validate!' ) ); exit(); } if ($field == 'later'){ update_option('njt_fs_review', time() + 3*60*60*24); //After 3 days show } else if ($field == 'alreadyDid'){ update_option('njt_fs_review', 0); } wp_send_json_success(); } wp_send_json_error( array( 'message' => 'Update fail!' ) ); } public function enqueue_scripts(){ wp_enqueue_script('njt-fs-review', NJT_FS_BN_PLUGIN_URL . 'assets/js/review.js', array('jquery'), NJT_FS_BN_VERSION, false); wp_localize_script('njt-fs-review', 'wpDataFs', array( 'admin_ajax' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce("njt-fs-review"), )); } public function isAlowUserAccess() { if($this->userRole) { $allowed_roles = !empty($this->options['njt_fs_file_manager_settings']['list_user_alow_access']) ? $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] : array(); if( in_array($this->userRole,$allowed_roles)) { if (is_multisite() && $this->userRole == 'administrator') { $this->fmCapability = 'activate_plugins'; } $this->fmCapability = $this->userRole; return true; } } if (is_multisite() && is_super_admin()) { $this->fmCapability = 'create_sites'; return true; } if (!is_multisite() && is_super_admin()) { $this->fmCapability = 'administrator'; return true; } $this->fmCapability = 'read'; return false; } public function FileManager() { if( class_exists( 'NestedPages' ) ) { $this->fmCapability = 'read'; } $icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwLDRINEMyLjg5LDQgMiw0Ljg5IDIsNlYxOEEyLDIgMCAwLDAgNCwyMEgyMEEyLDIgMCAwLDAgMjIsMThWOEMyMiw2Ljg5IDIxLjEsNiAyMCw2SDEyTDEwLDRaIiBmaWxsPSIjYTdhYWFkIi8+PC9zdmc+'; $display_suffix = add_menu_page( __('Filester', 'textdomain'), 'File Manager', $this->fmCapability, 'njt-fs-filemanager', array($this, 'fsViewFileCallback'), $icon, 9 ); if (is_multisite()) { $settings_suffix = add_submenu_page ( 'njt-fs-filemanager', 'Settings', 'Settings', 'create_sites', 'filester-settings', array($this, 'fsSettingsPage') ); } if (!is_multisite()) { $settings_suffix = add_submenu_page ( 'njt-fs-filemanager', 'Settings', 'Settings', 'manage_options', 'filester-settings', array($this, 'fsSettingsPage') ); } $this->hook_suffix = array($display_suffix, $settings_suffix); } public function fsViewFileCallback() { $viewPath = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager.php'; include_once $viewPath; } public function fsSettingsPage() { $viewPath = NJT_FS_BN_PLUGIN_PATH . 'views/pages/html-filemanager-settings.php'; include_once $viewPath; } public function enqueueAdminScripts($suffix) { if (in_array($suffix, $this->hook_suffix)) { $selectorThemes = get_option('njt_fs_selector_themes'); if (empty($selectorThemes[$this->userRole])) { $selectorThemes[$this->userRole]['themesValue'] = 'Default'; update_option('njt_fs_selector_themes', $selectorThemes); } $selectedTheme = $selectorThemes[$this->userRole]['themesValue']; //elfinder css wp_enqueue_style('elfinder.jq.css', plugins_url('/lib/jquery/jquery-ui.min.css', __FILE__)); wp_enqueue_style('elfinder.full.css', plugins_url('/lib/css/elfinder.min.css', __FILE__)); wp_enqueue_style('themes', plugins_url('/lib/css/theme.css', __FILE__)); wp_enqueue_style('themes-selector', plugins_url('/lib/themes/' . $selectedTheme . '/css/theme.css', __FILE__)); //elfinder core if(version_compare(get_bloginfo('version'),'5.6', '>=') ){ wp_enqueue_script('jquery_min', plugins_url('/lib/jquery/jquery-ui.min.js', __FILE__)); } else { wp_enqueue_script('jquery_min', plugins_url('/lib/jquery/jquery-ui-old.min.js', __FILE__)); } //elfinder js, toastr JS, css custom wp_register_style('njt_fs_toastr_css',NJT_FS_BN_PLUGIN_URL . 'assets/js/toastr/toastr.min.css'); wp_enqueue_style('njt_fs_toastr_css'); wp_enqueue_script('njt_fs_toastr_js', NJT_FS_BN_PLUGIN_URL . 'assets/js/toastr/toastr.min.js', array('jquery'), NJT_FS_BN_VERSION); wp_register_style('file_manager_admin_css',NJT_FS_BN_PLUGIN_URL . 'assets/css/file_manager_admin.css'); wp_enqueue_style('file_manager_admin_css'); wp_enqueue_script('file_manager_admin', NJT_FS_BN_PLUGIN_URL . 'assets/js/file_manager_admin.js', array('jquery'), NJT_FS_BN_VERSION, true); //js load elFinder wp_enqueue_script('njt_fs_elFinder', plugins_url('/lib/js/elfinder.min.js', __FILE__)); wp_enqueue_script('njt_fs_elfinder_editor', plugins_url('/lib/js/extras/editors.default.js', __FILE__)); //js load fm_locale if(isset($this->options['njt_fs_file_manager_settings']['fm_locale'])) { $locale = $this->options['njt_fs_file_manager_settings']['fm_locale']; if( !empty($locale) && $locale != 'en' && in_array($locale, njt_fs_locales(), true)) { $locale = sanitize_file_name($locale); wp_enqueue_script( 'njt_fs_fma_lang', plugins_url('lib/js/i18n/elfinder.'.$locale.'.js', __FILE__)); } } wp_localize_script('njt_fs_elFinder', 'wpData', array( 'admin_ajax' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce("njt-fs-file-manager-admin"), 'PLUGIN_URL' => NJT_FS_BN_PLUGIN_URL .'includes/File_manager/lib/', 'PLUGIN_PATH' => NJT_FS_BN_PLUGIN_PATH.'includes/File_manager/lib/', 'PLUGIN_DIR'=> NJT_FS_BN_PLUGIN_DIR, 'ABSPATH'=> str_replace("\\", "/", ABSPATH), 'is_multisite' => is_multisite(), 'lang' => !empty( $this->options['njt_fs_file_manager_settings']['fm_locale']) ? sanitize_file_name($this->options['njt_fs_file_manager_settings']['fm_locale']) : '', 'nonce_connector' => wp_create_nonce('file-manager-security-token'), )); } } //File manager connector function public function fsConnector() { check_ajax_referer( 'file-manager-security-token', 'nonce' ); $uploadMaxSize = isset($this->options['njt_fs_file_manager_settings']['upload_max_size']) && !empty($this->options['njt_fs_file_manager_settings']['upload_max_size']) ? $this->options['njt_fs_file_manager_settings']['upload_max_size'] : 0; $opts = array( 'bind' => array( 'put.pre' => array(new \FileManagerHelper, 'madeStripcslashesFile'), // Check endcode when save file. ), 'debug' => false, 'roots' => array( array( 'driver' => 'LocalFileSystem', 'path' => isset($this->options['njt_fs_file_manager_settings']['root_folder_path']) && !empty($this->options['njt_fs_file_manager_settings']['root_folder_path']) ? $this->options['njt_fs_file_manager_settings']['root_folder_path'] : ABSPATH, 'URL' => isset($this->options['njt_fs_file_manager_settings']['root_folder_url']) && !empty($this->options['njt_fs_file_manager_settings']['root_folder_url']) ? $this->options['njt_fs_file_manager_settings']['root_folder_url'] : site_url(), 'trashHash' => '', // default is empty, when not enable trash 'uploadMaxSize' => $uploadMaxSize .'M', 'winHashFix' => DIRECTORY_SEPARATOR !== '/', 'uploadOrder' => array('deny', 'allow'), 'disabled' => array(''), //'acceptedName' => 'validName', 'attributes' => array() // default is empty ), ), ); // .htaccess if(isset($this->options['njt_fs_file_manager_settings']['enable_htaccess']) && ($this->options['njt_fs_file_manager_settings']['enable_htaccess'] == '1')) { $attributes = array( 'pattern' => '/.htaccess/', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false ); array_push($opts['roots'][0]['attributes'], $attributes); } //Enable Trash if(isset($this->options['njt_fs_file_manager_settings']['enable_trash']) && ($this->options['njt_fs_file_manager_settings']['enable_trash'] == '1')) { $trash = array( 'id' => '1', 'driver' => 'Trash', 'path' => NJT_FS_BN_PLUGIN_PATH.'includes/File_manager/lib/files/.trash/', 'tmbURL' => site_url() . '/includes/File_manager/lib/files/.trash/.tmb', 'winHashFix' => DIRECTORY_SEPARATOR !== '/', 'uploadDeny' => array('htaccess'), 'uploadAllow' => array('all'), 'uploadOrder' => array('deny', 'allow'), 'acceptedName' => 'validName', 'attributes' => array( array( 'pattern' => '/.tmb/', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false ), array( 'pattern' => '/.gitkeep/', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false ) ) ); $opts['roots'][0]['trashHash'] = 't1_Lw'; $opts['roots'][1] = $trash; } //Start --setting User Role Restrictions $user = wp_get_current_user(); $userRoles = $user && $user->roles && $user->roles[0] ? $user->roles[0] : ''; //Disable Operations if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['list_user_restrictions_alow_access'])){ $opts['roots'][0]['disabled'] = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['list_user_restrictions_alow_access']; } //Creat root path for user if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_folder_access'])){ $opts['roots'][0]['path'] = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_folder_access'] .'/'; } //Creat url root path for user if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_url_folder_access'])){ $opts['roots'][0]['URL'] = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['private_url_folder_access'] .'/'; } //Folder or File Paths That You want to Hide if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['hide_paths'])){ foreach ($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['hide_paths'] as $key => $value){ $arrItemHidePath = array( 'pattern' => '~/'.$value.'~', 'read' => false, 'write' => false, 'hidden' => true, 'locked' => false ); array_push($opts['roots'][0]['attributes'], $arrItemHidePath); }; } //File extensions which you want to Lock if(!empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['lock_files'])){ foreach ($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['lock_files'] as $key => $value){ $arrItemLockFile = array( 'pattern' => '/'.$value.'/', 'read' => false, 'write' => false, 'hidden' => false, 'locked' => true ); array_push($opts['roots'][0]['attributes'], $arrItemLockFile); }; } //Enter file extensions which can be uploaded $flag = false; if (is_multisite()) { if( !current_user_can('create_sites') && empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) { $opts['roots'][0]['uploadDeny'] = array('all'); $opts['roots'][0]['uploadAllow'] = array(''); } else if ( !current_user_can('create_sites') && !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) { $opts['roots'][0]['uploadDeny'] = array('all'); $opts['roots'][0]['uploadAllow'] = array(); $arrCanUploadMime = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime']; $mimeTypes = new \FileManagerHelper(); $arrMimeTypes = $mimeTypes->getArrMimeTypes(); foreach ($arrMimeTypes as $key => $value){ if(in_array($key,$arrCanUploadMime)) { $explodeValue = explode(',',$value); foreach($explodeValue as $item) { array_push($opts['roots'][0]['uploadAllow'], $item ); } } }; foreach ($arrCanUploadMime as $value){ if(strpos($value,"x-conference") !== false || strpos($value,"video") !== false || strpos($value,"text") !== false || strpos($value,"model") !== false || strpos($value,"message") !== false || strpos($value,"image") !== false || strpos($value,"font") !== false || strpos($value,"chemical") !== false || strpos($value,"audio") !== false || strpos($value,"application") !== false ) { array_push($opts['roots'][0]['uploadAllow'], $value ); } } } else { $opts['roots'][0]['uploadDeny'] = array(); $opts['roots'][0]['uploadAllow'] = array('all'); } } if (!is_multisite()) { if($this->userRole !== 'administrator' && empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) { $opts['roots'][0]['uploadDeny'] = array('all'); $opts['roots'][0]['uploadAllow'] = array(''); } else if ( $this->userRole !== 'administrator' && !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime'])) { $opts['roots'][0]['uploadDeny'] = array('all'); $opts['roots'][0]['uploadAllow'] = array(); $arrCanUploadMime = $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$this->userRole]['can_upload_mime']; $mimeTypes = new \FileManagerHelper(); $arrMimeTypes = $mimeTypes->getArrMimeTypes(); foreach ($arrMimeTypes as $key => $value){ if(in_array($key,$arrCanUploadMime)) { $explodeValue = explode(',',$value); foreach($explodeValue as $item) { array_push($opts['roots'][0]['uploadAllow'], $item ); } } }; foreach ($arrCanUploadMime as $value){ if(strpos($value,"x-conference") !== false || strpos($value,"video") !== false || strpos($value,"text") !== false || strpos($value,"model") !== false || strpos($value,"message") !== false || strpos($value,"image") !== false || strpos($value,"font") !== false || strpos($value,"chemical") !== false || strpos($value,"audio") !== false || strpos($value,"application") !== false ) { array_push($opts['roots'][0]['uploadAllow'], $value ); } } } else { $opts['roots'][0]['uploadDeny'] = array(); $opts['roots'][0]['uploadAllow'] = array('all'); } } //End --setting User Role Restrictions $connector = new \elFinderConnector(new \elFinder($opts)); $connector->run(); wp_die(); } public function selectorThemes() { if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die(); check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true); $themesValue = sanitize_text_field ($_POST['themesValue']); $selectorThemes = get_option('njt_fs_selector_themes'); if (empty($selectorThemes[$this->userRole])) { $selectorThemes[$this->userRole]['themesValue'] = 'Default'; update_option('njt_fs_selector_themes', $selectorThemes); } if ($selectorThemes[$this->userRole]['themesValue'] != $themesValue) { $selectorThemes[$this->userRole]['themesValue'] = $themesValue; update_option('njt_fs_selector_themes', $selectorThemes); } $selected_themes = get_option('njt_fs_selector_themes'); $linkThemes = plugins_url('/lib/themes/' . $selected_themes[$this->userRole]['themesValue'] . '/css/theme.css', __FILE__); wp_send_json_success($linkThemes); wp_die(); } public function saveOptions() { //if(isset($_POST['njt-settings-form-submit'])) { update_option('njt_fs_settings', $this->options); // if($u) { // $this->f('?page=njt-fs-filemanager-settings&status=1'); // } else { // $this->f('?page=njt-fs-filemanager-settings&status=2'); // } // } } public function f($u) { echo '<script>'; echo 'window.location.href="'.$u.'"'; echo '</script>'; } public function getArrRoleRestrictions() { if(!wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die(); check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true); $valueUserRole = filter_var($_POST['valueUserRole']) ? sanitize_text_field ($_POST['valueUserRole']) : ''; $arrRestrictions = !empty($this->options['njt_fs_file_manager_settings']['list_user_role_restrictions']) ? $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'] : array(); $dataArrRoleRestrictions = array ( 'disable_operations' => implode(",", !empty($arrRestrictions[$valueUserRole]['list_user_restrictions_alow_access']) ? $arrRestrictions[$valueUserRole]['list_user_restrictions_alow_access'] : array()), 'private_folder_access' => !empty($arrRestrictions[$valueUserRole]['private_folder_access']) ? str_replace("\\\\", "/", trim($arrRestrictions[$valueUserRole]['private_folder_access'])) : '', 'private_url_folder_access' => !empty($arrRestrictions[$valueUserRole]['private_url_folder_access']) ? str_replace("\\\\", "/", trim($arrRestrictions[$valueUserRole]['private_url_folder_access'])) : '', 'hide_paths' => implode(',', !empty($arrRestrictions[$valueUserRole]['hide_paths']) ? $arrRestrictions[$valueUserRole]['hide_paths'] : array()), 'lock_files' => implode(',', !empty($arrRestrictions[$valueUserRole]['lock_files']) ? $arrRestrictions[$valueUserRole]['lock_files'] : array()), 'can_upload_mime' => implode(',', !empty($arrRestrictions[$valueUserRole]['can_upload_mime']) ? $arrRestrictions[$valueUserRole]['can_upload_mime'] : array()) ); wp_send_json_success($dataArrRoleRestrictions); wp_die(); } public function njt_fs_saveSetting() { if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die(); check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true); if (!current_user_can('manage_options')) { wp_die(); } $root_folder_path = filter_var($_POST['root_folder_path'], FILTER_SANITIZE_STRING) ? str_replace("\\\\", "/", trim($_POST['root_folder_path'])) : ''; $root_folder_url = filter_var($_POST['root_folder_url'], FILTER_SANITIZE_STRING) ? str_replace("\\\\", "/", trim($_POST['root_folder_url'])) : site_url(); $list_user_alow_access = filter_var($_POST['list_user_alow_access'], FILTER_SANITIZE_STRING) ? explode(',',$_POST['list_user_alow_access']) : array(); $upload_max_size = filter_var($_POST['upload_max_size'], FILTER_SANITIZE_STRING) ? sanitize_text_field(trim($_POST['upload_max_size'])) : 0; $fm_locale = filter_var($_POST['fm_locale'], FILTER_SANITIZE_STRING) ? sanitize_text_field($_POST['fm_locale']) : 'en'; $enable_htaccess = isset($_POST['enable_htaccess']) && $_POST['enable_htaccess'] == 'true' ? 1 : 0; $enable_trash = isset($_POST['enable_trash']) && $_POST['enable_trash'] == 'true' ? 1 : 0; //save options $this->options['njt_fs_file_manager_settings']['root_folder_path'] = $root_folder_path; $this->options['njt_fs_file_manager_settings']['root_folder_url'] = $root_folder_url; $this->options['njt_fs_file_manager_settings']['list_user_alow_access'] = $list_user_alow_access; $this->options['njt_fs_file_manager_settings']['upload_max_size'] = $upload_max_size; $this->options['njt_fs_file_manager_settings']['fm_locale'] = $fm_locale; $this->options['njt_fs_file_manager_settings']['enable_htaccess'] = $enable_htaccess; $this->options['njt_fs_file_manager_settings']['enable_trash'] = $enable_trash; //update options update_option('njt_fs_settings', $this->options); wp_send_json_success(get_option('njt_fs_settings')); wp_die(); } public function njt_fs_saveSettingRestrictions() { if( ! wp_verify_nonce( $_POST['nonce'] ,'njt-fs-file-manager-admin')) wp_die(); check_ajax_referer('njt-fs-file-manager-admin', 'nonce', true); if (!current_user_can('manage_options')) { wp_die(); } if(! $_POST['njt_fs_list_user_restrictions']) wp_die(); $njt_fs_list_user_restrictions = sanitize_text_field($_POST['njt_fs_list_user_restrictions']); $list_user_restrictions_alow_access = filter_var($_POST['list_user_restrictions_alow_access'], FILTER_SANITIZE_STRING) ? explode(',', $_POST['list_user_restrictions_alow_access']) : array(); $private_folder_access = filter_var($_POST['private_folder_access'], FILTER_SANITIZE_STRING) ? str_replace("\\\\", "/", trim($_POST['private_folder_access'])) : ''; $private_url_folder_access = filter_var($_POST['private_url_folder_access'], FILTER_SANITIZE_STRING) ? str_replace("\\\\", "/", trim($_POST['private_url_folder_access'])) : ''; $hide_paths = filter_var($_POST['hide_paths'], FILTER_SANITIZE_STRING) ? explode('|', preg_replace('/\s+/', '', $_POST['hide_paths'])) : array(); $lock_files = filter_var($_POST['lock_files'], FILTER_SANITIZE_STRING) ? explode('|', preg_replace('/\s+/', '', $_POST['lock_files'])) : array(); $can_upload_mime = filter_var($_POST['can_upload_mime'], FILTER_SANITIZE_STRING) ? explode(',', preg_replace('/\s+/', '', $_POST['can_upload_mime'])) : array(); //save options $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['list_user_restrictions_alow_access'] = $list_user_restrictions_alow_access; $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['private_folder_access'] = $private_folder_access; $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['private_url_folder_access'] = $private_url_folder_access; $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['hide_paths'] = $hide_paths; $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['lock_files'] = $lock_files; $this->options['njt_fs_file_manager_settings']['list_user_role_restrictions'][$njt_fs_list_user_restrictions]['can_upload_mime'] = $can_upload_mime; //update options update_option('njt_fs_settings', $this->options); wp_send_json_success(get_option('njt_fs_settings')); wp_die(); } }