public function list_roles()
 {
     if (!$this->can_list()) {
         $this->main->permission_denied();
     }
     $mode = $this->get_mode();
     switch ($mode[0]) {
         case 'EDIT':
             $obj = new WPFront_User_Role_Editor_Add_Edit($this->main);
             $obj->add_edit_role($mode[1]);
             return;
         case 'DELETE':
             $obj = new WPFront_User_Role_Editor_Delete($this->main);
             $obj->delete_role($mode[1]);
             return;
         case 'DEFAULT_ROLE':
             $this->set_default_role($mode[1]);
             printf('<script type="text/javascript">window.location.replace("%s");</script>', $this->list_url());
             return;
     }
     $obj = new WPFront_User_Role_Editor_Delete($this->main);
     if ($obj->is_pending_action()) {
         return;
     }
     include $this->main->pluginDIR() . 'templates/list-roles.php';
 }
 public function import_roles()
 {
     if (!$this->can_import()) {
         $this->main->permission_denied();
         return;
     }
     if (!extension_loaded('simplexml')) {
         echo '<div class="error"><p>' . $this->__('This functionality requires SimpleXML extension, which is not loaded.') . '</p></div>';
         return;
     }
     if (!empty($_POST['submit'])) {
         check_admin_referer('import-upload');
         set_time_limit(0);
         if ($this->handle_upload()) {
             $this->roles_data = array();
             global $wp_roles;
             foreach ($this->import_data->roles as $role) {
                 $this->roles_data[$role->name] = (object) array('display_name' => $role->display_name, 'override' => FALSE);
                 if (get_role($role->name) !== NULL) {
                     $this->roles_data[$role->name]->override = TRUE;
                 }
             }
         }
     }
     if (!empty($_POST['importroles'])) {
         $this->main->verify_nonce();
         set_time_limit(0);
         if (!empty($_POST['file-id'])) {
             $this->file_id = $_POST['file-id'];
             $this->parse_contents(get_attached_file($this->file_id));
             if (is_wp_error($this->import_data)) {
                 $this->result = (object) array('success' => FALSE, 'message' => $this->import_data->get_error_message());
                 $this->import_data = NULL;
             } else {
                 $this->roles_data = array();
                 if (!empty($_POST['import-roles'])) {
                     $this->roles_data = $_POST['import-roles'];
                     if (!is_array($this->roles_data)) {
                         $this->roles_data = array();
                     }
                 }
                 foreach ($this->import_data->roles as $role) {
                     if (array_key_exists($role->name, $this->roles_data)) {
                         if (get_role($role->name) === NULL) {
                             add_role($role->name, $role->display_name, $role->capabilities);
                         } else {
                             WPFront_User_Role_Editor_Add_Edit::update_role($role->name, $role->display_name, $role->capabilities);
                         }
                     }
                 }
                 $this->result = (object) array('success' => TRUE, 'message' => sprintf($this->__('%d role(s) imported.'), count($this->roles_data)));
                 $this->import_data = NULL;
             }
             wp_delete_attachment($this->file_id);
         }
     }
     include $this->main->pluginDIR() . 'templates/personal-pro/import-roles.php';
 }