plugin-controls/plugin_controls.php

127 lines
3.2 KiB
PHP

<?php
/*
Plugin Name: Plugin Control
Plugin URI: https://cooini.com/services/dev/wordpress
Description: This plugin will disable access to the plugins and other pages
Version: 1.1.1
Author: sbyrd
Author URI: https://cooini.com/
License: MINE-all-mine
*/
function plugin_controls_isUserManagingService() : bool
{
$users = ['clpsupport','clsupport'];
$user = wp_get_current_user();
if (in_array($user->user_login, $users) )
return true;
elseif (preg_match("/courselauncher.io$/", $user->user_email ))
return true;
else
return false;
}
function plugin_controls_remove_menus()
{
$allow_plugin_file = plugin_dir_path(__FILE__)."/.allow_plugin_list";
if (isset($_GET['allow_plugin_list']) and $_GET['allow_plugin_list'] === "123letmesee")
{
touch( $allow_plugin_file );
}
else
{
if (file_exists($allow_plugin_file) and (time() - filectime($allow_plugin_file) >= 60 * 60 * 12 ))
{
// File is older than threshold, delete
unlink($allow_plugin_file);
}
}
$menus_to_hide = ['Plugins'=>'plugins.php',
'Updates'=>"update-core.php",
'Activity Log'=>'aryo-activity-log/aryo-activity-log.php'
];
if (plugin_controls_isUserManagingService() )
{
// This is us
add_action( 'admin_notices', function() use ($menus_to_hide) {
?>
<div class="notice notice-warning">
<h3>Wordpress Management</h3>
<p>Following menus are only visible to us</p>
<ul>
<?php
foreach ($menus_to_hide as $name => $value)
{
?><li><?php echo $name ?></li><?php
}
?>
</ul>
</div>
<?php
} );
return;
}
else
{
foreach($menus_to_hide as $name => $value)
{
remove_menu_page($value);
}
}
}
function plugin_page_control()
{
$allow_plugin_file = plugin_dir_path(__FILE__)."/.allow_updates";
if (isset($_GET['allow_updates']) and $_GET['allow_updates'] === "123letmeupdate")
{
touch( $allow_plugin_file );
}
else
{
if (file_exists($allow_plugin_file) and (time() - filectime($allow_plugin_file) >= 60 * 60 * 12 ))
{
// File is older than threshold, delete
unlink($allow_plugin_file);
}
}
//
if ( file_exists($allow_plugin_file))
{
define( 'DISALLOW_FILE_EDIT', false ); // allow
define( 'DISALLOW_FILE_MODS', false );
if (plugin_controls_isUserManagingService())
{
add_action( 'admin_notices', function() {
?>
<div class="notice notice-warning">
<p>Updates, file edits, are currently unlocked.</p>
</div>
<?php
} );
}
}
else
{
define( 'DISALLOW_FILE_EDIT', true ); // disable
define( 'DISALLOW_FILE_MODS', true);
}
}
add_action( 'admin_menu', 'plugin_controls_remove_menus' );
add_action( 'admin_menu', 'plugin_page_control' );