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); }
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";
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
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; }