function dialogue_get_available_users($dialogue, $context, $editconversationid)
{
    static $displaystudentindication = false;
    // display Student indication in multi select lstbox ?
    if (!($course = get_record("course", "id", $dialogue->course))) {
        error("Course is misconfigured");
    }
    $hascapopen = has_capability('mod/dialogue:participate', $context);
    $hascapmanage = has_capability('mod/dialogue:manage', $context);
    switch ($dialogue->dialoguetype) {
        case DIALOGUETYPE_TEACHERSTUDENT:
            // teacher to student
            if ($hascapmanage) {
                return dialogue_get_available_students($dialogue, $context, $editconversationid);
            } else {
                return dialogue_get_available_teachers($dialogue, $context, $editconversationid);
            }
        case DIALOGUETYPE_STUDENTSTUDENT:
            // student to student
            if (!$hascapmanage && $hascapopen) {
                return dialogue_get_available_students($dialogue, $context, $editconversationid);
            } else {
                return;
            }
        case DIALOGUETYPE_EVERYONE:
            // everyone
            if ($teachers = dialogue_get_available_teachers($dialogue, $context, $editconversationid)) {
                foreach ($teachers as $userid => $name) {
                    $names[$userid] = $name;
                    // ." (".get_string('teacher','dialogue') . ")";
                }
                $names[-1] = "-------------";
            }
            if ($students = dialogue_get_available_students($dialogue, $context, $editconversationid)) {
                foreach ($students as $userid => $name) {
                    //$names[$userid] = (is_numeric($userid) && $displaystudentindication) ? $name." (".get_string('student','dialogue') . ")" : $name;
                    $names[$userid] = $name;
                }
            }
            if (isset($names)) {
                return $names;
            }
            return;
    }
}
/**
 * Return a list of users that the current user is able to open a dialogue with
 * 
 * Makes calls to dialogue_get_available_students() and dialogue_get_available_teachers()
 * depending on the capability and type of dialogue
 * @param   object  $dialogue
 * @param   object  $context    for a user in this activity
 * @param   int     $editconversationid
 * @return  array   usernames and ids
 */
function dialogue_get_available_users($dialogue, $context, $editconversationid)
{
    if (!($course = get_record('course', 'id', $dialogue->course))) {
        error('Course is misconfigured');
    }
    $hascapopen = has_capability('mod/dialogue:participate', $context);
    $hascapmanage = has_capability('mod/dialogue:manage', $context);
    switch ($dialogue->dialoguetype) {
        case DIALOGUETYPE_TEACHERSTUDENT:
            // teacher to student
            if ($hascapmanage) {
                return dialogue_get_available_students($dialogue, $context, $editconversationid);
            } else {
                return dialogue_get_available_teachers($dialogue, $context, $editconversationid);
            }
        case DIALOGUETYPE_STUDENTSTUDENT:
            // student to student
            if (!$hascapmanage && $hascapopen) {
                return dialogue_get_available_students($dialogue, $context, $editconversationid);
            } else {
                return;
                // dont return any students if this is a teacher, ie has manage capability
            }
        case DIALOGUETYPE_EVERYONE:
            // everyone
            if ($teachers = dialogue_get_available_teachers($dialogue, $context, $editconversationid)) {
                foreach ($teachers as $userid => $name) {
                    $names[$userid] = $name;
                }
                $names[-1] = '-------------';
            }
            if ($students = dialogue_get_available_students($dialogue, $context, $editconversationid)) {
                foreach ($students as $userid => $name) {
                    $names[$userid] = $name;
                }
            }
            if (isset($names)) {
                return $names;
            }
            return;
    }
}