/**
  * Filter editible roles
  * 
  * Get the highest curent User's Level (from 1 to 10) and filter all User
  * Roles which have higher Level. This is used for promotion feature
  * In fact that Administrator Role has the higherst 10th Level, this function
  * introduces the virtual 11th Level for Super Admin
  * 
  * @param array $roles
  * @return array Filtered Role List
  */
 public function editable_roles($roles)
 {
     if (isset($roles[WPACCESS_SADMIN_ROLE])) {
         //super admin is level 11
         unset($roles[WPACCESS_SADMIN_ROLE]);
     }
     if (isset($roles['_visitor'])) {
         unset($roles['_visitor']);
     }
     //get user's highest Level
     $caps = mvb_Model_AccessControl::getUserConf()->getUser()->getAllCaps();
     $highest = mvb_Model_Helper::getHighestUserLevel($caps);
     if ($highest < WPACCESS_TOP_LEVEL && is_array($roles)) {
         //filter roles
         foreach ($roles as $role => $data) {
             if ($highest < mvb_Model_Helper::getHighestUserLevel($data['capabilities'])) {
                 unset($roles[$role]);
             }
         }
     }
     return $roles;
 }