function gs_diversion_changed_ui($username)
{
    //get the username
    include_once GS_DIR . 'inc/gs-fns/gs_user_name_by_ext.php';
    $user_name = gs_user_name_by_ext($username);
    if (isGsError($user_name)) {
        gs_log(GS_LOG_WARNING, $user_name->getMsg());
        return;
    }
    //get the callforwards
    include_once GS_DIR . 'inc/gs-fns/gs_callforward_get.php';
    $cf = gs_callforward_get($user_name);
    if (isGsError($cf)) {
        gs_log(GS_LOG_WARNING, $cf->getMsg());
        return;
    }
    $sources = array('internal', 'external');
    $cases = array('always', 'busy', 'unavail', 'offline');
    //build a string for internal diversions
    $cf_int = array();
    foreach ($cases as $case) {
        $cf_int[] = $cf['internal'][$case]['active'];
    }
    $internal = implode("/", $cf_int);
    //build a string for internal diversions
    $cf_ext = array();
    foreach ($cases as $case) {
        $cf_ext[] = $cf['external'][$case]['active'];
    }
    $external = implode("/", $cf_ext);
    $std = $cf['external']['always']['number_std'];
    $var = $cf['external']['always']['number_var'];
    $vml = $cf['external']['always']['number_vml'];
    $timeout = $cf['external']['unavail']['timeout'];
    $data = _get_ui_head('UserDiversionUI');
    $data[] = array('parm' => 'user', 'value' => $username);
    $data[] = array('parm' => 'internal', 'value' => $internal);
    $data[] = array('parm' => 'external', 'value' => $external);
    $data[] = array('parm' => 'std', 'value' => $std);
    $data[] = array('parm' => 'var', 'value' => $var);
    $data[] = array('parm' => 'vml', 'value' => $vml);
    $data[] = array('parm' => 'timeout', 'value' => $timeout);
    _gs_send_event($data);
}
Beispiel #2
0
    echo '<th align="center" width="100%">' . htmlEnt(__("Rufumleitungsziel")) . ': ' . htmlEnt($pagetitle) . '</th>';
    echo '</tr>';
    echo '<tr><td align="center" width="100%"><input type="text" name="value" value="' . $number . '" /></td></tr>', "\n";
    echo '<tr><td align="center" width="100%"><input type="submit" value=" ' . htmlEnt(__("Speichern")) . ' " /></td></tr>', "\n";
    echo '</table>', "\n";
    echo '</form>', "\n";
    echo '</body>', "\n";
    echo '</html>', "\n";
    _ob_send();
}
#################################### SELECT PHONENUMBERS }
#################################### SET TIMEOUT {
if ($type == 'timeout' && !isset($_REQUEST['value'])) {
    $mac = preg_replace('/[^\\dA-Z]/', '', strtoupper(trim(@$_REQUEST['m'])));
    $user_name = $db->executeGetOne('SELECT `user` FROM `users` WHERE `id`=\'' . $db->escape($user_id) . '\'');
    $callforwards = gs_callforward_get($user_name);
    $pagetitle = __("Timeout bei keine Antwort");
    ob_start();
    echo $callforward_doctype . "\n";
    $user_id_check = $db->executeGetOne('SELECT `user_id` FROM `phones` WHERE `mac_addr`=\'' . $db->escape($mac) . '\'');
    if ($user_id != $user_id_check) {
        _err('Not authorized');
    }
    $remote_addr = @$_SERVER['REMOTE_ADDR'];
    $remote_addr_check = $db->executeGetOne('SELECT `current_ip` FROM `users` WHERE `id`=\'' . $user_id . '\'');
    if ($remote_addr != $remote_addr_check) {
        _err('Not authorized');
    }
    $timeout = (int) @$callforwards['internal']['unavail']['timeout'];
    echo '<html>', "\n";
    echo '<head><title>' . htmlEnt(__("Rufumleitung")) . ' - ' . htmlEnt(__("Timeout")) . '</title></head>', "\n";
Beispiel #3
0
psetting('transfer_on_hangup', 'on');
psetting('aoc_amount_display', 'off');
# off | charged | balance
psetting('aoc_pulse_currency', '');
# e.g. "EUR" | "USD" | "$"
psetting('aoc_cost_pulse', '1');
# e.g. 0.02
psetting('max_boot_delay', '0');
# ? in seconds, default: 0
psetting('mailbox_active', 'off');
# pay attention to the mailbox of the
# active identity only?
psetting('speaker_dialer', 'on');
psetting('no_dnd', 'off');
$dnd_mode = 'off';
$cf = gs_callforward_get($user['user']);
if (!isGsError($cf) && is_array($cf)) {
    if (@$cf['internal']['always']['active'] != 'no' || @$cf['external']['always']['active'] != 'no') {
        $dnd_mode = 'on';
        //FIXME - bad hack!
    }
}
psetting('dnd_mode', $dnd_mode, true);
psetting('dnd_on_code', 'dnd-on');
psetting('dnd_off_code', 'dnd-off');
psetting('preselection_nr', '');
#####################################################################
#  Redirection
#####################################################################
psetting('redirect_event', 'none');
# Umleitung nicht auf dem Tel. machen
Beispiel #4
0
             echo '		<key>read</key>', "\n";
             echo '		<integer>', $r['read'], '</integer>', "\n";
         }
         echo '	</dict>', "\n";
     }
     echo '</array>', "\n";
     echo '</plist>', "\n";
     if ($_GET['action'] == 'calls_missed') {
         gs_user_watchedmissed($userinfo['id']);
         if (GS_BUTTONDAEMON_USE == true) {
             gs_buttondeamon_missedcalls($userinfo['ext']);
         }
     }
     break;
 case 'redirect':
     $forwards = gs_callforward_get($userinfo['user']);
     $numbers = gs_user_external_numbers_get($userinfo['user']);
     echo '<?xml version="1.0" encoding="UTF-8"?>', "\n";
     echo '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">', "\n";
     echo '<plist version="1.0">', "\n";
     echo '<dict>', "\n";
     echo '	<key>timeout</key>', "\n";
     echo '	<integer>', $forwards['internal']['unavail']['timeout'], '</integer>', "\n";
     echo '	<key>standardNumber</key>', "\n";
     echo '	<string>', $forwards['internal']['always']['number_std'], '</string>', "\n";
     echo '	<key>tempNumber</key>', "\n";
     echo '	<string>', $forwards['internal']['always']['number_var'], '</string>', "\n";
     echo '	<key>externalNumbers</key>', "\n";
     echo '	<array>', "\n";
     foreach ($numbers as $number) {
         echo '		<string>', $number, '</string>', "\n";
            case 'off':
            default:
                $email_notify = 0;
        }
        $ret = gs_user_email_notify_set($_SESSION['sudo_user']['name'], $email_notify);
        if (isGsError($ret)) {
            $warnings['vm_email_n'] = __('Fehler beim (De-)Aktivieren der E-Mail-Benachrichtigung') . ' (' . $ret->getMsg() . ')';
        }
    }
    if (GS_BUTTONDAEMON_USE == true) {
        gs_diversion_changed_ui($_SESSION['sudo_user']['info']['ext']);
    }
}
# get call forwards
#
$callforwards = gs_callforward_get($_SESSION['sudo_user']['name']);
if (isGsError($callforwards)) {
    echo __('Fehler beim Abfragen.'), '<br />', $callforwards->getMsg();
    return;
    # return to parent file
}
# find best match for std number
#
$number_std = '';
foreach ($callforwards as $_source => $_cases) {
    foreach ($_cases as $_case => $_info) {
        if ($_info['number_std'] != '') {
            $number_std = $_info['number_std'];
            break;
        }
    }
function gs_callforward_timeout_set($user, $timeout = 20)
{
    if (!preg_match('/^[a-z0-9\\-_.]+$/', $user)) {
        return new GsError('User must be alphanumeric.');
    }
    $timeout = (int) $timeout;
    if ($timeout > 250) {
        $timeout = 250;
    } elseif ($timeout < 1) {
        $timeout = 1;
    }
    # connect to db
    #
    $db = gs_db_master_connect();
    if (!$db) {
        return new GsError('Could not connect to database.');
    }
    # get user_id
    #
    $user_id = $db->executeGetOne('SELECT `id` FROM `users` WHERE `user`=\'' . $db->escape($user) . '\'');
    if (!$user_id) {
        return new GsError('Unknown user.');
    }
    # get user_code
    #
    $user_code = $db->executeGetOne('SELECT `user` FROM `users` WHERE `id`=' . $user_id);
    # get all call forwards
    #
    $cf = @gs_callforward_get($user_code);
    if (isGsError($cf)) {
        gs_script_error('Could not get call forwards (' . $cf->getMsg() . ')');
    }
    foreach ($cf as $source => $arr1) {
        foreach ($arr1 as $case => $arr) {
            if ($case == 'unavail') {
                @gs_callforward_set($user_code, $source, $case, 'std', $arr['number_std'], $timeout);
                @gs_callforward_set($user_code, $source, $case, 'var', $arr['number_var'], $timeout);
            }
        }
    }
    return true;
}