Files

92 lines
2.3 KiB
PHP
Raw Permalink Normal View History

2018-06-20 18:03:43 +02:00
<?php
class Capsman_BackupHandler
{
var $cm;
function __construct( $manager_obj ) {
if ( ! is_super_admin() && ! current_user_can( 'restore_roles' ) )
wp_die( __( 'You do not have permission to restore roles.', 'capsman-enhanced' ) );
$this->cm = $manager_obj;
}
/**
* Processes backups and restores.
*
* @return void
*/
function processBackupTool ()
{
if ( isset($_POST['Perform']) ) {
check_admin_referer('capsman-backup-tool');
global $wpdb;
$wp_roles = $wpdb->prefix . 'user_roles';
$cm_roles = 'capsman_backup';
switch ( $_POST['action'] ) {
case 'backup':
$roles = get_option($wp_roles);
update_option($cm_roles, $roles);
ak_admin_notify(__('New backup saved.', 'capsman-enhanced'));
break;
case 'restore':
$roles = get_option($cm_roles);
if ( $roles ) {
update_option($wp_roles, $roles);
ak_admin_notify(__('Roles and Capabilities restored from last backup.', 'capsman-enhanced'));
} else {
ak_admin_error(__('Restore failed. No backup found.', 'capsman-enhanced'));
}
break;
}
}
}
/**
* Resets roles to WordPress defaults.
*
* @return void
*/
function backupToolReset ()
{
check_admin_referer('capsman-reset-defaults');
require_once(ABSPATH . 'wp-admin/includes/schema.php');
if ( ! function_exists('populate_roles') ) {
ak_admin_error(__('Needed function to create default roles not found!', 'capsman-enhanced'));
return;
}
$roles = array_keys( ak_get_roles(true) );
foreach ( $roles as $role) {
remove_role($role);
}
populate_roles();
$this->cm->setAdminCapability();
$msg = __('Roles and Capabilities reset to WordPress defaults', 'capsman-enhanced');
if ( function_exists( 'pp_populate_roles' ) ) {
pp_populate_roles();
} else {
// force PP to repopulate roles
$pp_ver = get_option( 'pp_c_version', true );
if ( $pp_ver && is_array($pp_ver) ) {
$pp_ver['version'] = ( preg_match( "/dev|alpha|beta|rc/i", $pp_ver['version'] ) ) ? '0.1-beta' : 0.1;
} else {
$pp_ver = array( 'version' => '0.1', 'db_version' => '1.0' );
}
update_option( 'pp_c_version', $pp_ver );
delete_option( 'ppperm_added_role_caps_10beta' );
}
ak_admin_notify($msg);
}
}