/**
  * Get system roles
  *
  * This function is used to get all the roles in the system
  * It returns an array where keys are the role ids and values are:
  * - Either the role basic user types, if $getNames is false (the default)
  * - or the role Names if $getNames is true
  * The array is prepended with the 3 main roles, 'administrator', 'professor' and 'student'
  * <br/>Example:
  * <code>
  * $roles = EfrontUser :: getRoles();
  * </code>
  *
  * @param boolean $getNames Whether to return id/basic user type pairs or id/name pairs
  * @return array The system roles
  * @since 3.5.0
  * @access public
  * @static
  */
 public static function getRoles($getNames = false)
 {
     //Cache results in self :: $userRoles
     if (is_null(self::$userRoles)) {
         $roles = eF_getTableDataFlat("user_types", "*", "active=1");
         //Get available roles
         self::$userRoles = $roles;
     } else {
         $roles = self::$userRoles;
     }
     if (sizeof($roles) > 0) {
         $getNames ? $roles = self::$basicUserTypesTranslations + array_combine($roles['id'], $roles['name']) : ($roles = array_combine(self::$basicUserTypes, self::$basicUserTypes) + array_combine($roles['id'], $roles['basic_user_type']));
     } else {
         $getNames ? $roles = self::$basicUserTypesTranslations : ($roles = array_combine(self::$basicUserTypes, self::$basicUserTypes));
     }
     return $roles;
 }