if ($type == 'var' || $type == 'std') { $num[$type] = preg_replace("/[^\\d]/", '', $value); $write = 1; $type = false; } } } if ($write == 1) { foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, 'internal', $case, 'std', $num['std'], $timeout); $ret = gs_callforward_set($user_name, 'internal', $case, 'var', $num['var'], $timeout); $ret = gs_callforward_activate($user_name, 'internal', $case, $internal_val[$case]); } foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, 'external', $case, 'std', $num['std'], $timeout); $ret = gs_callforward_set($user_name, 'external', $case, 'var', $num['var'], $timeout); $ret = gs_callforward_activate($user_name, 'external', $case, $external_val[$case]); } gs_vm_activate($user_name, 'internal', $vm['internal']); gs_vm_activate($user_name, 'external', $vm['external']); } } ################################# SET FEATURE } #################################### SELECT PROPERTIES { if (($type == 'internal' || $type == 'external') && !isset($_REQUEST['key'])) { $mac = preg_replace('/[^\\dA-Z]/', '', strtoupper(trim(@$_REQUEST['m']))); 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');
$warnings = array(); if (@$_REQUEST['action'] === 'save' && $disabled == '') { $num_std = preg_replace('/[^0-9vm*]/', '', @$_REQUEST['num-std']); $num_var = preg_replace('/[^0-9vm*]/', '', @$_REQUEST['num-var']); //$num_vml = 'vm'. $_SESSION['sudo_user']['info']['ext']; $timeout = abs((int) @$_REQUEST['timeout']); if ($timeout < 1) { $timeout = 1; } foreach ($sources as $src => $ignore) { foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($_SESSION['sudo_user']['name'], $src, $case, 'std', $num_std, $timeout); if (isGsError($ret)) { $warnings['std'] = __('Fehler beim Setzen der Std.-Umleitungsnummer') . ' (' . $ret->getMsg() . ')'; } $ret = gs_callforward_set($_SESSION['sudo_user']['name'], $src, $case, 'var', $num_var, $timeout); if (isGsError($ret)) { $warnings['var'] = __('Fehler beim Setzen der Temporären Umleitungsnummer') . ' (' . $ret->getMsg() . ')'; } /* $vmail_rec_num = 0; //Voicemail or just Announce-File if (substr(@$_REQUEST[$src.'-'.$case],0,5) === 'vmln-') { //Play only Announce-File with Number n $idx =(int)substr(@$_REQUEST[$src.'-'.$case],5); $vmail_rec_num = $vm_rec_num_idx_table[$idx]; $num_vml = 'vm*'. $_SESSION['sudo_user']['info']['ext']; $_REQUEST[$src.'-'.$case] = 'vml'; } else if (substr(@$_REQUEST[$src.'-'.$case],0,4) === 'vml-') { //Voicemail with Anncounce-File Number n $idx =(int)substr(@$_REQUEST[$src.'-'.$case],4);
function setForward($userinfo, $source, $destination, $plist) { $source = (int) $source; $destination = (int) $destination; switch ($source) { case 0: $gs_source = 'internal'; $gs_case = 'always'; $timeout = 0; break; case 1: $gs_source = 'internal'; $gs_case = 'busy'; $timeout = 0; break; case 2: $gs_source = 'internal'; $gs_case = 'unavail'; $timeout = $plist['timeout']; break; case 3: $gs_source = 'internal'; $gs_case = 'offline'; $timeout = 0; break; case 4: $gs_source = 'external'; $gs_case = 'always'; $timeout = 0; break; case 5: $gs_source = 'external'; $gs_case = 'busy'; $timeout = 0; break; case 5: $gs_source = 'external'; $gs_case = 'unavail'; $timeout = $plist['timeout']; break; case 7: $gs_source = 'external'; $gs_case = 'offline'; $timeout = 0; break; default: $gs_source = ''; $gs_case = ''; $timeout = 0; } switch ($destination) { case 1: $gs_type = 'std'; $number = $plist['standardNumber']; break; case 2: $gs_type = 'var'; $number = $plist['tempNumber']; break; case 3: $gs_type = 'vml'; $number = 'vm' . $userinfo['ext']; break; case 4: $gs_type = 'vml'; $number = 'vm*' . $userinfo['ext']; default: $gs_type = ''; $number = $plist['standardNumber']; } gs_log(GS_LOG_NOTICE, 'setting call forward from ' . $gs_source . ' in case of ' . $gs_case . ' to ' . $gs_type . ' (number=' . $number . ', timeout=' . $timeout . ')'); gs_callforward_set($userinfo['user'], $gs_source, $gs_case, $gs_type, $number, $timeout); if ($gs_type == '') { $gs_type = 'no'; } gs_callforward_activate($userinfo['user'], $gs_source, $gs_case, $gs_type); }
if (substr(@$_REQUEST[$src . '-' . $case], 0, 4) === 'vml-') { //Voicemail with Anncounce-File Number n $idx = (int) substr(@$_REQUEST[$src . '-' . $case], 4); $vmail_rec_num = $vm_rec_num_idx_table[$idx]; $num_vml = 'vm' . $_SESSION['sudo_user']['info']['ext']; $_REQUEST[$src . '-' . $case] = 'vml'; } else { if (@$_REQUEST[$src . '-' . $case] === 'vmln') { $num_vml = 'vm*' . $_SESSION['sudo_user']['info']['ext']; $_REQUEST[$src . '-' . $case] = 'vml'; } else { $num_vml = 'vm' . $_SESSION['sudo_user']['info']['ext']; } } } $ret = gs_callforward_set($_SESSION['sudo_user']['name'], $src, $case, 'vml', $num_vml, $timeout, $vmail_rec_num); if (isGsError($ret)) { $warnings['vml'] = __('Fehler beim Setzen der AB-Nummer') . ' (' . $ret->getMsg() . ')'; } $ret = gs_callforward_activate($_SESSION['sudo_user']['name'], $src, $case, @$_REQUEST[$src . '-' . $case]); if (isGsError($ret)) { $warnings['act'] = __('Fehler beim Aktivieren der Umleitungsnummer') . ' (' . $ret->getMsg() . ')'; } } } /* $vm_internal = (bool)@$_REQUEST['vm-internal']; $vm_external = (bool)@$_REQUEST['vm-external']; $ret = gs_vm_activate( $_SESSION['sudo_user']['name'], 'internal', $vm_internal ); if (isGsError($ret)) $warnings['vm_act_i'] = __('Fehler beim (De-)Aktivieren des Anrufbeantworters von intern') .' ('. $ret->getMsg() .')';
$write = 1; $type = false; } } } if ($write == 1) { foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, 'internal', $case, 'std', $num['std'], $timeout); $ret = gs_callforward_set($user_name, 'internal', $case, 'var', $num['var'], $timeout); $ret = gs_callforward_set($user_name, 'internal', $case, 'vml', $callforwards['internal'][$case]['number_vml'], $timeout); $ret = gs_callforward_activate($user_name, 'internal', $case, $internal_val[$case]); } foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, 'external', $case, 'std', $num['std'], $timeout); $ret = gs_callforward_set($user_name, 'external', $case, 'var', $num['var'], $timeout); $ret = gs_callforward_set($user_name, 'external', $case, 'vml', $callforwards['external'][$case]['number_vml'], $timeout); $ret = gs_callforward_activate($user_name, 'external', $case, $external_val[$case]); } if (GS_BUTTONDAEMON_USE == true) { gs_diversion_changed_ui($user); } } } ################################# SET FEATURE } #################################### SELECT PROBERTIES { if (($type == 'internal' || $type == 'external') && !isset($_REQUEST['key'])) { $mac = preg_replace('/[^\\dA-Z]/', '', strToUpper(trim(@$_REQUEST['m']))); $user_name = $db->executeGetOne('SELECT `user` FROM `users` WHERE `id`=\'' . $db->escape($user_id) . '\''); ob_start(); echo '<?', 'xml version="1.0" encoding="utf-8"?', '>', "\n"; $user_id_check = $db->executeGetOne('SELECT `user_id` FROM `phones` WHERE `mac_addr`=\'' . $db->escape($mac) . '\'');
} } else { if ($active == $callforwards[$origin]['always']['active']) { if ($active == 'var' && $callforwards[$origin]['always']['number_var'] == $value) { $active = 'no'; } else { if ($active != 'var') { $active = 'no'; } } } } if (strlen($origin) == 0) { $callforwards['internal']['always']['active'] = $active; $callforwards['external']['always']['active'] = $active; } else { $callforwards[$origin]['always']['active'] = $active; } if ($active == 'var') { gs_callforward_set($user['user'], 'internal', 'always', 'var', $value, $callforwards['internal']['always']['timeout']); gs_callforward_set($user['user'], 'external', 'always', 'var', $value, $callforwards['external']['always']['timeout']); } gs_callforward_activate($user['user'], 'internal', 'always', $callforwards['internal']['always']['active']); gs_callforward_activate($user['user'], 'external', 'always', $callforwards['external']['always']['active']); if ($active != 'no') { aastra_textscreen(htmlEnt(__('Rufumleitung')), htmlEnt(__('Rufumleitung aktiviert')), 3); } else { aastra_textscreen(htmlEnt(__('Rufumleitung')), htmlEnt(__('Rufumleitung deaktiviert')), 3); } gs_diversion_changed_ui($user['name']); }
$write = 1; $type = false; } } } if ($write == 1) { foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, "internal", $case, "std", $num["std"], $timeout); $ret = gs_callforward_set($user_name, "internal", $case, "var", $num["var"], $timeout); $ret = gs_callforward_set($user_name, "internal", $case, "vml", $callforwards["internal"][$case]["number_vml"], $timeout); $ret = gs_callforward_activate($user_name, "internal", $case, $internal_val[$case]); } foreach ($cases as $case => $gnore2) { $ret = gs_callforward_set($user_name, "external", $case, "std", $num["std"], $timeout); $ret = gs_callforward_set($user_name, "external", $case, "var", $num["var"], $timeout); $ret = gs_callforward_set($user_name, "external", $case, "vml", $callforwards["external"][$case]["number_vml"], $timeout); $ret = gs_callforward_activate($user_name, "external", $case, $external_val[$case]); } if (GS_BUTTONDAEMON_USE == true) { gs_diversion_changed_ui($user); } } } //////////////////// SET FEATURE } //////////////////// SELECT PROPERTIES { if (($type == "internal" || $type == "external") && !isset($_REQUEST["key"])) { $mac = preg_replace("/[^\\dA-Z]/", "", strtoupper(trim(@$_REQUEST["m"]))); $user_name = $db->executeGetOne("SELECT `user` FROM `users` WHERE `id`='" . $db->escape($user_id) . "'"); ob_start(); echo $callforward_doctype . "\n"; $user_id_check = $db->executeGetOne('SELECT `user_id` FROM `phones` WHERE `mac_addr`=\'' . $db->escape($mac) . '\'');
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; }