<?php

# --------------------
# Construct an enumeration for all users for the current project.
# The enumeration will be empty if current project is ALL PROJECTS.
# Enumerations format is: "abc|lmn|xyz"
# To use this in a custom field type "=users" in the possible values field.
function custom_function_override_enum_users() {
    $t_users = project_get_all_user_rows( helper_get_current_project() );

    $t_enum = array();
    $t_show_realname = ( ON == config_get( 'show_realname' ) );
    /* OLD: Unsorted list:
    foreach( $t_users as $t_user ) {
        $t_user_name = string_attribute( $t_user['username'] );
        if( $t_show_realname && ( $t_user['realname'] <> '' ) ) {
            $t_user_name = string_attribute( $t_user['realname'] );
        }
        $t_enum[] = $t_user_name;
    }
    */
    
    $t_display = array();
    $t_sort = array();
    $t_sort_by_last_name = ( ON == config_get( 'sort_by_last_name' ) );
    foreach( $t_users as $t_key => $t_user ) {
        $t_user_name = string_attribute( $t_user['username'] );
        $t_sort_name = utf8_strtolower( $t_user_name );
        if( $t_show_realname && ( $t_user['realname'] <> '' ) ) {
            $t_user_name = string_attribute( $t_user['realname'] );
            if( $t_sort_by_last_name ) {
                $t_sort_name_bits = explode( ' ', utf8_strtolower( $t_user_name ), 2 );
                $t_sort_name = ( isset( $t_sort_name_bits[1] ) ? $t_sort_name_bits[1] . ', ' : '' ) . $t_sort_name_bits[0];
            } else {
                $t_sort_name = utf8_strtolower( $t_user_name );
            }
        }
        $t_display[] = $t_user_name;
        $t_sort[] = $t_sort_name;
    }
    array_multisort( $t_sort, SORT_ASC, SORT_STRING, $t_users, $t_display );
    unset( $t_sort );
    $t_count = count( $t_users );
    
    for( $i = 0;$i < $t_count;$i++ ) {
        $t_row = $t_users[$i];
        
        $t_user_name = string_attribute( $t_row['username'] );
        if( $t_show_realname && ( $t_row['realname'] <> '' ) ) {
            $t_user_name = string_attribute( $t_row['realname'] );
        }
        $t_enum[] = $t_user_name;
    }
    
    $t_possible_values = implode( '|', $t_enum );

    return $t_possible_values;
}