function _get_role_data($role_id)
 {
     // Load models
     $this->ci->load->model('dx_auth/roles', 'roles');
     $this->ci->load->model('dx_auth/permissions', 'permissions');
     // Clear return value
     $role_name = '';
     $parent_roles_id = array();
     $parent_roles_name = array();
     $permission = array();
     $parent_permissions = array();
     /* Get role_name, parent_roles_id and parent_roles_name */
     // Get role query from role id
     $query = $this->ci->roles->get_role_by_id($role_id);
     // Check if role exist
     if ($query->num_rows() > 0) {
         // Get row
         $role = $query->row();
         // Get role name
         $role_name = $role->name;
         /*
          Code below will search if user role_id have parent_id > 0 (which mean role_id have parent role_id)
          and do it recursively until parent_id reach 0 (no parent) or parent_id not found.
         
          If anyone have better approach than this code, please let me know.
         */
         // Check if role has parent id
         if (isset($role->parent_id) && $role->parent_id > 0) {
             // Add to result array
             $parent_roles_id[] = $role->parent_id;
             // Set variable used in looping
             $finished = FALSE;
             $parent_id = $role->parent_id;
             // Get all parent id
             while ($finished == FALSE) {
                 $i_query = $this->ci->roles->get_role_by_id($parent_id);
                 // If role exist
                 if ($i_query->num_rows() > 0) {
                     // Get row
                     $i_role = $i_query->row();
                     // Check if role doesn't have parent
                     if ($i_role->parent_id == 0) {
                         // Get latest parent name
                         $parent_roles_name[] = $i_role->name;
                         // Stop looping
                         $finished = TRUE;
                     } else {
                         // Change parent id for next looping
                         $parent_id = $i_role->parent_id;
                         // Add to result array
                         $parent_roles_id[] = $parent_id;
                         $parent_roles_name[] = $i_role->name;
                     }
                 } else {
                     // Remove latest parent_roles_id since parent_id not found
                     array_pop($parent_roles_id);
                     // Stop looping
                     $finished = TRUE;
                 }
             }
         }
     }
     /* End of Get role_name, parent_roles_id and parent_roles_name */
     /* Get user and parents permission */
     // Get user role permission
     $permission = $this->ci->permissions->get_permission_data($role_id);
     // Get user role parent permissions
     if (!empty($parent_roles_id)) {
         $parent_permissions = $this->ci->permissions->get_permissions_data($parent_roles_id);
     }
     /* End of Get user and parents permission */
     if ($role_id) {
         $data['role_name'] = Permitions::checkControlPanelAccess($role_id);
     }
     // Set return value
     //$data['role_name'] = $role_name;
     $data['parent_roles_id'] = $parent_roles_id;
     $data['parent_roles_name'] = $parent_roles_name;
     $data['permission'] = $permission;
     $data['parent_permissions'] = $parent_permissions;
     return $data;
 }