482 lines
20 KiB
PHP
482 lines
20 KiB
PHP
<?php
|
||
|
||
/*
|
||
* FILEORGANIZER
|
||
* https://fileorganizer.net/
|
||
* (c) FileOrganizer Team
|
||
*/
|
||
|
||
global $fileorganizer;
|
||
|
||
if(!defined('FILEORGANIZER_VERSION')){
|
||
die('Hacking Attempt!');
|
||
}
|
||
|
||
function fileorganizer_page_header($title = 'FileOrganizer'){
|
||
wp_enqueue_style( 'forg-admin' );
|
||
|
||
echo '<h2 class="fileorganizer-notices"></h2>
|
||
<div class="fileorganizer-box-container" style="margin:0">
|
||
<table class="fileorganizer-settings-header" cellpadding="2" cellspacing="1" width="100%" class="fixed" border="0">
|
||
<tr>
|
||
<td class="fileorganizer-td" valign="top">
|
||
<img src="'.esc_url(FILEORGANIZER_URL) .'/images/logo.png">
|
||
<h3 class="fileorganizer-heading">'.esc_html($title).'</h3>
|
||
</td>
|
||
<td align="right"><a target="_blank" class="button button-primary" href="https://wordpress.org/support/view/plugin-reviews/fileorganizer">Review FileOrganizer</a></td>
|
||
<td align="right" width="40"><a target="_blank" href="https://twitter.com/fileorganizer"><img src="'.esc_url(FILEORGANIZER_URL).'/images/twitter.png" /></a></td>
|
||
<td align="right" width="40"><a target="_blank" href="https://www.facebook.com/fileorganizer/"><img src="'.esc_url(FILEORGANIZER_URL).'/images/facebook.png" /></a></td>
|
||
</tr>
|
||
</table>
|
||
</div>';
|
||
|
||
}
|
||
|
||
function fileorganizer_page_footer($no_twitter = 0){
|
||
|
||
$promos = apply_filters('pagelayer_right_bar_promos', true);
|
||
|
||
if($promos){
|
||
|
||
echo '
|
||
<div class="fileorganizer-promotion" style="width:100%;" >
|
||
<div class="fileorganizer-promotion-content">
|
||
<h2 class="fileorganizer-promotion-logo">
|
||
<span><a target="_blank" href="https://pagelayer.com/?from=fileorganizer-plugin"><img src="'. esc_url(FILEORGANIZER_URL).'/images/pagelayer_product.png" width="100%"></a></span>
|
||
</h2>
|
||
<div>
|
||
<em>The Best WordPress <b>Site Builder</b> </em>:<br>
|
||
<ul style="font-size:13px;">
|
||
<li>Drag & Drop Editor</li>
|
||
<li>Widgets</li>
|
||
<li>In-line Editing</li>
|
||
<li>Styling Options</li>
|
||
<li>Animations</li>
|
||
<li>Easily customizable</li>
|
||
<li>Real Time Design</li>
|
||
<li>And many more ...</li>
|
||
</ul>
|
||
<center><a class="button button-primary" target="_blank" href="https://pagelayer.com/?from=fileorganizer-plugin">Visit Pagelayer</a></center>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="fileorganizer-promotion-content">
|
||
<h2 class="fileorganizer-promotion-logo">
|
||
<span><a target="_blank" href="https://loginizer.com/?from=fileorganizer-plugin"><img src="'.esc_url(FILEORGANIZER_URL).'/images/loginizer_product.png" width="100%"></a></span>
|
||
</h2>
|
||
<div>
|
||
<em>Protect your WordPress website from <b>unauthorized access and malware</b> </em>:<br>
|
||
<ul style="font-size:13px;">
|
||
<li>BruteForce Protection</li>
|
||
<li>reCaptcha</li>
|
||
<li>Two Factor Authentication</li>
|
||
<li>Black/Whitelist IP</li>
|
||
<li>Detailed Logs</li>
|
||
<li>Extended Lockouts</li>
|
||
<li>2FA via Email</li>
|
||
<li>And many more ...</li>
|
||
</ul>
|
||
<center><a class="button button-primary" target="_blank" href="https://loginizer.com/?from=fileorganizer-plugin">Visit Loginizer</a></center>
|
||
</div>
|
||
</div>
|
||
</div>';
|
||
|
||
}
|
||
|
||
echo '</div>
|
||
</div>';
|
||
|
||
if(empty($no_twitter)){
|
||
echo '
|
||
<div style="width:45%;background:#FFF;padding:15px; margin:40px auto">
|
||
<b>'. esc_html__('Let your followers know that you use FileOrganizer to manage your wordpress files :').'</b>
|
||
<form method="get" action="https://twitter.com/intent/tweet" id="tweet" onsubmit="return dotweet(this);">
|
||
<textarea name="text" cols="45" row="3" style="resize:none;">'. esc_html__('I easily manage my #WordPress #files using @fileorganizer').'</textarea>
|
||
<input type="submit" value="Tweet!" class="button button-primary" onsubmit="return false;" id="twitter-btn" style="margin-top:20px;">
|
||
</form>
|
||
</div>';
|
||
}
|
||
}
|
||
|
||
|
||
// fileorganizer Setting page
|
||
function fileorganizer_settings_page(){
|
||
|
||
$options = get_option('fileorganizer_options');
|
||
$options = empty($options) || !is_array($options) ? array() : $options;
|
||
|
||
//Settings
|
||
if(isset($_POST['save_settings'])){
|
||
|
||
// Check nonce
|
||
check_admin_referer('fileorganizer_settings');
|
||
|
||
// General settings
|
||
$path = fileorganizer_optpost('root_path');
|
||
$disable_path_restriction = fileorganizer_optpost('disable_path_restriction');
|
||
|
||
if(!defined('FILEORGANIZER_PRO') || empty($disable_path_restriction)){
|
||
$verify = fileorganizer_validate_path($path);
|
||
$path = $verify ? $path : ABSPATH;
|
||
if(!$verify){
|
||
fileorganizer_notify(__('Invalid File Manager Path Detected!'), 'error');
|
||
}
|
||
}
|
||
|
||
$options['root_path'] = fileorganizer_cleanpath($path);
|
||
$options['default_view'] = fileorganizer_optpost('default_view');
|
||
$options['default_lang'] = fileorganizer_optpost('default_lang');
|
||
$options['hide_htaccess'] = fileorganizer_optpost('hide_htaccess');
|
||
$options['enable_trash'] = fileorganizer_optpost('enable_trash');
|
||
|
||
if(defined('FILEORGANIZER_PRO')){
|
||
$options['user_roles'] = fileorganizer_optpost('user_roles');
|
||
$options['disable_path_restriction'] = fileorganizer_optpost('disable_path_restriction');
|
||
$options['max_upload_size'] = fileorganizer_optpost('max_upload_size');
|
||
$options['enable_ftp'] = fileorganizer_optpost('enable_ftp');
|
||
}
|
||
|
||
if(update_option( 'fileorganizer_options', $options )){
|
||
fileorganizer_notify(__('Settings saved successfully.'));
|
||
}
|
||
}
|
||
|
||
$settings = get_option('fileorganizer_options', array());
|
||
|
||
if( empty($settings) || !is_array($settings) ){
|
||
$settings = array();
|
||
}
|
||
|
||
?>
|
||
<div class="wrap">
|
||
<?php fileorganizer_page_header('FileOrganizer'); ?>
|
||
<div class="fileorganizer-setting-content">
|
||
<form class="fileorganizer-settings fileorganizer-mr20" name="fileorganizer_settings" method="post" >
|
||
<?php wp_nonce_field('fileorganizer_settings'); ?>
|
||
<div class="tabs-wrapper">
|
||
<h2 class="nav-tab-wrapper fileorganizer-wrapper">
|
||
<a href="#fileorganizer-general" class="fileorganizer-nav-tab nav-tab nav-tab-active"><?php esc_html_e('General'); ?></a>
|
||
<a href="#fileorganizer-advanced" class="fileorganizer-nav-tab nav-tab"><?php esc_html_e('Advanced'); ?></a>
|
||
<a href="#fileorganizer-support" class="fileorganizer-nav-tab nav-tab "><?php esc_html_e('Support'); ?></a>
|
||
</h2>
|
||
|
||
<!-- General settings start -->
|
||
<div class="fileorganizer-tab-panel" id="fileorganizer-general" style="display:block;">
|
||
<table class="form-table">
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('File Manager Path'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<input name="root_path" type="text" class="regular-text always_active" placeholder="<?php echo esc_attr(fileorganizer_cleanpath(ABSPATH)); ?>" value="<?php if(!empty($settings['root_path'])){
|
||
echo esc_attr($settings['root_path']);
|
||
}?>">
|
||
<p class="description">
|
||
<?php echo wp_kses_post(__( 'Set file manager root path.<br> Default path is:').'<code>'.fileorganizer_cleanpath(ABSPATH).__('</code><br>Please change the path carefully. an incorrect path can cause the FileOrganizer plugin to goes down.'));
|
||
?>
|
||
</p>
|
||
<?php
|
||
if(!defined('FILEORGANIZER_PRO')){
|
||
echo '<p class="description"><b>';
|
||
esc_html_e('Note: The free version does not allow setting a path outside your WordPress installation!');
|
||
echo '</b></p>';
|
||
} ?>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<?php
|
||
if( defined('FILEORGANIZER_PRO') && (!is_multisite() || is_super_admin())){
|
||
?>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('File Manager Path Restriction'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<label class="fileorganizer-switch">
|
||
<input name="disable_path_restriction" type="checkbox" value="yes" <?php if(!empty($settings['disable_path_restriction'])){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="fileorganizer-slider fileorganizer-round"></span>
|
||
</label>
|
||
<p class="description">
|
||
<?php
|
||
esc_html_e('Disable root path restriction.');
|
||
echo '<br>'.esc_html__('Allow FileOrganizer to set a path outside of your WordPress installation.');
|
||
?>
|
||
</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<?php
|
||
}
|
||
?>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Files View'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<?php $view = empty($settings['default_view']) ? '' : $settings['default_view']; ?>
|
||
<select name='default_view'>
|
||
<option <?php selected( $view , 'icons'); ?> value="icons"><?php esc_html_e('Icons'); ?></option>
|
||
<option <?php selected( $view , 'list'); ?> value="list"><?php esc_html_e('List'); ?></option>
|
||
</select>
|
||
<p class="description"><?php esc_html_e( "Set default folder view." ); ?></p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Select Language'); ?></th>
|
||
<td>
|
||
<?php
|
||
$fileman_languages = [
|
||
'English' => 'en',
|
||
'العربية' => 'ar',
|
||
'Български' => 'bg',
|
||
'Català' => 'ca',
|
||
'Čeština' => 'cs',
|
||
'Dansk' => 'da',
|
||
'Deutsch' => 'de',
|
||
'Ελληνικά' => 'el',
|
||
'Español' => 'es',
|
||
'فارسی' => 'fa',
|
||
'Føroyskt' => 'fo',
|
||
'Français' => 'fr',
|
||
'Français (Canada)' => 'fr_CA',
|
||
'עברית' => 'he',
|
||
'Hrvatski' => 'hr',
|
||
'Magyar' => 'hu',
|
||
'Bahasa Indonesia' => 'id',
|
||
'Italiano' => 'it',
|
||
'日本語' => 'ja',
|
||
'한국어' => 'ko',
|
||
'Nederlands' => 'nl',
|
||
'Norsk' => 'no',
|
||
'Polski' => 'pl',
|
||
'Português' => 'pt_BR',
|
||
'Română' => 'ro',
|
||
'Pусский' => 'ru',
|
||
'සිංහල' => 'si',
|
||
'Slovenčina' => 'sk',
|
||
'Slovenščina' => 'sl',
|
||
'Srpski' => 'sr',
|
||
'Svenska' => 'sv',
|
||
'Türkçe' => 'tr',
|
||
'ئۇيغۇرچە' => 'ug_CN',
|
||
'Український' => 'uk',
|
||
'Tiếng Việt' => 'vi',
|
||
'简体中文' => 'zh_CN',
|
||
'正體中文' => 'zh_TW',
|
||
];
|
||
|
||
$curlang = empty($settings['default_lang']) ? '' : $settings['default_lang'];
|
||
?>
|
||
<div class="fileorganizer-form-input">
|
||
<select name='default_lang'>
|
||
<?php
|
||
foreach( $fileman_languages as $lang => $code ){
|
||
echo '<option '.(selected( $curlang , $code)).' value="'.esc_attr($code).'">'.esc_html($lang).'</option>';
|
||
}
|
||
?>
|
||
</select>
|
||
<p class="description"><?php esc_html_e( "Change the FileOrganizer default language." ); ?></p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Hide .htaccess?'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<label class="fileorganizer-switch">
|
||
<input name="hide_htaccess" type="checkbox" value="yes" <?php if(!empty($settings['hide_htaccess'])){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="fileorganizer-slider fileorganizer-round"></span>
|
||
</label>
|
||
<p class="description"><?php esc_html_e( "Hide .htaccess file if exists." ); ?></p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Enable Trash?'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<label class="fileorganizer-switch">
|
||
<input name="enable_trash" type="checkbox" value="yes" <?php if(!empty($settings['enable_trash'])){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="fileorganizer-slider fileorganizer-round"></span>
|
||
</label>
|
||
<p class="description">
|
||
<?php
|
||
esc_html_e( "Enable trash to temporary store files after deletion." );
|
||
echo '<br>'.esc_html__('The trash files are saved in the following path.').'<br><code>'.esc_html(fileorganizer_cleanpath(wp_upload_dir()['basedir'].'/fileorganizer/.trash/')).'</code>';
|
||
?>
|
||
</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<p>
|
||
<input type="submit" name="save_settings" class="button fileorganizer-button-primary" value="Save Changes">
|
||
</p>
|
||
</div>
|
||
<!-- General settings end -->
|
||
|
||
<!-- Advance settings start -->
|
||
<div class="fileorganizer-tab-panel <?php echo !defined('FILEORGANIZER_PRO') ? 'fileorganizer-disabled-panel' : ''; ?>" id="fileorganizer-advanced">
|
||
<?php if (!defined('FILEORGANIZER_PRO')){
|
||
echo '
|
||
<div class="fileorganizer-pro-overlay">
|
||
<div class="fileorganizer-lock-content">
|
||
<span class="dashicons dashicons-lock fileorganizer-lock-icon"></span>
|
||
<label class="fileorganizer-lock-text">'. esc_html__("Available in Pro version!") .'</label>
|
||
</div>
|
||
</div>';
|
||
} ?>
|
||
<div class="fileorganizer-tab-panel-wrap">
|
||
<table class="form-table">
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Allowed User Roles'); ?></th>
|
||
<td>
|
||
<?php $roles = !empty($settings['user_roles']) ? $settings['user_roles'] : ''; ?>
|
||
<div class="fileorganizer-form-input">
|
||
<?php if(is_multisite()){ ?>
|
||
<input name="user_roles[]" type="checkbox" value="administrator" <?php if(is_array($roles) && in_array('administrator', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Administrator" ); ?></span>
|
||
<?php } ?>
|
||
<input name="user_roles[]" type="checkbox" value="editor" <?php if(is_array($roles) && in_array('editor', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Editor" ); ?></span>
|
||
|
||
<input name="user_roles[]" type="checkbox" value="author" <?php if(is_array($roles) && in_array('author', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Author" ); ?></span>
|
||
|
||
<input name="user_roles[]" type="checkbox" value="contributor" <?php if(is_array($roles) && in_array('contributor', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Contributor" ); ?></span>
|
||
|
||
<input name="user_roles[]" type="checkbox" value="subscriber" <?php if(is_array($roles) && in_array('subscriber', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Subscriber" ); ?></span>
|
||
|
||
<input name="user_roles[]" type="checkbox" value="customer" <?php if(is_array($roles) && in_array('customer', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Customer" ); ?></span>
|
||
|
||
<input name="user_roles[]" type="checkbox" value="shop_manager" <?php if(is_array($roles) && in_array('shop_manager', $roles)){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="description"><?php esc_html_e( "Shop Manager" ); ?></span>
|
||
|
||
<p class="description">
|
||
<?php echo esc_html__( 'Enabling access to the FileOrganizer for User Roles'); ?>
|
||
</p>
|
||
<p class="description notice notice-warning" style="padding:10px;">
|
||
<?php printf(
|
||
esc_html__( '%s: For selected user roles, this option provides full access to the File Manager, which may pose a security risk, especially for lower-level users. We strongly recommend setting appropriate restrictions before allowing access. You can manage access through %s and %s to ensure that appropriate security measures are in place.' ),
|
||
'<strong>' . esc_html__( 'Important', 'fileorganizer' ) . '</strong>',
|
||
'<a href="' . esc_url( admin_url( 'admin.php?page=fileorganizer-user-role-restrictions' ) ) . '" target="_blank">' . esc_html__( 'User Role Restrictions', 'fileorganizer' ) . '</a>',
|
||
'<a href="' . esc_url( admin_url( 'admin.php?page=fileorganizer-user-restrictions' ) ) . '" target="_blank">' . esc_html__( 'User Restrictions', 'fileorganizer' ) . '</a>'
|
||
); ?>
|
||
</p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Maximum Upload Size'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<input name="max_upload_size" type="number" class="regular-text always_active" placeholder="0" value="<?php if(!empty($settings['max_upload_size'])){
|
||
echo esc_attr($settings['max_upload_size']);
|
||
}?>"> <?php esc_html_e('MB'); ?>
|
||
<p class="description"><?php echo wp_kses_post( "Increase the maximum upload size if you are getting errors while uploading files.<br> Default: 0 means unlimited upload." ); ?></p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><?php esc_html_e('Enable Network Volume'); ?></th>
|
||
<td>
|
||
<div class="fileorganizer-form-input">
|
||
<label class="fileorganizer-switch">
|
||
<input name="enable_ftp" type="checkbox" value="yes" <?php if(!empty($settings['enable_ftp'])){
|
||
echo "checked";
|
||
}?>>
|
||
<span class="fileorganizer-slider fileorganizer-round"></span>
|
||
</label>
|
||
<p class="description"><?php esc_html_e( "Enable network volume." ); ?></p>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<input type="submit" name="save_settings" class="button fileorganizer-button-primary" value="Save Changes">
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<!-- Advance settings end -->
|
||
<!-- Support tab start -->
|
||
<div class="fileorganizer-tab-panel" id="fileorganizer-support">
|
||
<div class="fileorganizer-tab-panel-wrap">
|
||
<div style="width:70%; margin:20px auto; display:flex; justify-content:center; flex-direction:column; align-items:center; line-height:1.5;">
|
||
<div style="display:flex">
|
||
<img src="<?php echo esc_url(FILEORGANIZER_URL) .'/images/logo.png'?>" width="60"/>
|
||
<span style="font-size:30px;font-weight:600;margin:auto;color:var(--primary)">FileOrganizer</span>
|
||
</div>
|
||
<h2><?php esc_html_e('You can contact the FileOrganizer Team via email. Our email address is', 'fileorganizer'); ?> <a href="mailto:support@fileorganizer.net">support@fileorganizer.net</a> <?php esc_html_e('or through Our Premium Support Ticket System at', 'fileorganizer'); ?> <a href="https://softaculous.deskuss.com" target="_blank"><?php esc_html_e('here'); ?></a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- Support tab end -->
|
||
</div>
|
||
</form>
|
||
<?php fileorganizer_page_footer(); ?>
|
||
<script>
|
||
jQuery(document).ready(function(){
|
||
|
||
// Tabs Handler
|
||
var tabs = jQuery('.fileorganizer-wrapper').find('.nav-tab');
|
||
var tabsPanel = jQuery('.tabs-wrapper').find('.fileorganizer-tab-panel');
|
||
|
||
function fileorganizer_load_tab(event){
|
||
|
||
var hash = window.location.hash;
|
||
|
||
// No action needed when there is know hash value
|
||
if(!hash){
|
||
return;
|
||
}
|
||
|
||
// Select elements
|
||
jEle = jQuery(".nav-tab-wrapper").find("[href='" + hash + "']");
|
||
|
||
if(jEle.length < 1){
|
||
return;
|
||
}
|
||
|
||
// Remove active tab
|
||
tabs.removeClass('nav-tab-active');
|
||
tabsPanel.hide();
|
||
|
||
// Make tab active
|
||
jEle.addClass('nav-tab-active');
|
||
jQuery('.tabs-wrapper').find(hash).show();
|
||
|
||
}
|
||
|
||
// Load function when hash value change
|
||
jQuery( window ).on( 'hashchange', fileorganizer_load_tab);
|
||
|
||
// Tabs load for First load
|
||
fileorganizer_load_tab();
|
||
});
|
||
|
||
</script>
|
||
<?php
|
||
}
|