} else {
     echo $r['ext'] !== null ? $r['ext'] : '–?–';
 }
 echo '</td>', "\n";
 echo '<td>', str_repeat('&bull;', strLen($r['pin'])), '</td>', "\n";
 $email_display = $r['email'];
 if (mb_strLen($email_display) < 20) {
     $email_display = htmlEnt($email_display);
 } else {
     $email_display = htmlEnt(mb_substr($email_display, 0, 18)) . '&#8230;';
 }
 echo '<td>', $email_display, '</td>', "\n";
 echo '<td>', $r['h_comment'] !== null ? htmlEnt($r['h_comment']) : '&ndash;?&ndash;', '</td>', "\n";
 echo '<td class="nobr">';
 if (!$r['is_foreign']) {
     $state = gs_extstate_single($r['ext']);
     switch ($state) {
         case AST_MGR_EXT_UNKNOWN:
             echo '<img alt=" " src="', GS_URL_PATH, 'crystal-svg/16/app/important.png" />&nbsp;', __('?');
             break;
         case AST_MGR_EXT_IDLE:
             echo '<img alt=" " src="', GS_URL_PATH, 'crystal-svg/16/act/greenled.png" />&nbsp;', __('frei');
             break;
         case AST_MGR_EXT_OFFLINE:
             echo '<img alt=" " src="', GS_URL_PATH, 'crystal-svg/16/act/free_icon.png" />&nbsp;', __('offline');
             break;
         case AST_MGR_EXT_INUSE:
         case AST_MGR_EXT_BUSY:
             echo '<img alt=" " src="', GS_URL_PATH, 'crystal-svg/16/act/redled.png" />&nbsp;', __('spricht');
             break;
         case AST_MGR_EXT_RINGING:
            $abbr = '';
            if ($r['fn'] != '') {
                $abbr .= mb_subStr($r['fn'], 0, 1) . '.';
            }
            if ($r['ln'] != '') {
                $abbr .= mb_subStr($r['ln'], 0, 3) . '.';
            }
            $exts_display[$r['ext']] = array('fn' => $r['fn'], 'ln' => $r['ln'], 'abbr' => $abbr);
        }
    }
}
kSort($exts_display, SORT_STRING);
echo '<div class="extensions-block">', "\n";
$first_digit = null;
foreach ($exts_display as $extension => $ext_info) {
    $extstate = gs_extstate_single($extension);
    $img = '<img alt=" " src="' . GS_URL_PATH;
    switch ($extstate) {
        case 0:
            $img .= 'crystal-svg/16/act/greenled.png';
            break;
        case 2:
            $img .= 'crystal-svg/16/act/yellowled.png';
            break;
        case 1:
            $img .= 'crystal-svg/16/act/redled.png';
            break;
        default:
            $img .= 'crystal-svg/16/act/free_icon.png';
            break;
    }