<?php /** * Copyright (c) 2015, 2016 Christopher W. Olsen <cwolsen@uBixTechnologies.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by uBix Technologies. * 4. Neither the name of uBix Technologies nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY uBix Technologies ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL uBix Technologies BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $Id: account_settings_json.php 943 2017-09-07 20:16:43Z reddawg $ * */ /* Main include info */ ini_set ( 'include_path', $_SERVER ['DOCUMENT_ROOT'] . "/include/" ); include ("config.php"); $ubF->session->Validate_JSON ( 'A_V_', 0 ); if ( !isset ( $form_data ['req'] ) ) $form_data ['req'] = -1; $_day = 60 * 60 * 24; $rData ['authenticated'] = $ubF->session->auth_data ['authenticated']; $aS = Array('Inactive','Active','Suspended'); switch ( $form_data ['req'] ) { case 'account_list' : $query = "SELECT account_number, company, telephone, server_primary, server_backup, ext_range, account_status FROM accounts WHERE account_code != '' AND account_status = 1 ORDER BY voip_code"; $query = "SELECT a.account_number, a.company, av.btn, av.endpoint_group, av.did_group, av.ext_base, voip_status FROM accounts a JOIN accounts_voip av ON a.account_number = av.account_number WHERE voip_status >= 1 ORDER BY a.account_number"; $result = $ubF->DB ['main']->query ( $query ); while ( $qD = $result->fetch_assoc () ) { $rData ['data'] [] = array ( "<a class=\"edit_account\" id=\"" . $qD ['account_number'] . "\">" . $qD ['account_number'] . "</a>", $qD ['company'], $qD ['btn'], $qD ['endpoint_group'], $qD ['did_group'], $qD ['ext_base'], $aS[$qD['voip_status']] ); } break; case 'account_info' : $query = "SELECT * FROM accounts WHERE account_number = '" . $form_data ['account_number'] . "'"; $result = $ubF->DB ['main']->query ( $query ); $qData = $result->fetch_assoc (); $result->free (); $rData ['data'] = $qData; break; case 'account_update' : $query = "UPDATE accounts SET server_primary = '" . $form_data ['server_primary'] . "', server_port_primary = " . $form_data ['server_port_primary'] . ", transport_primary = '" . $form_data ['transport_primary'] . "', server_backup = '" . $form_data ['server_backup'] . "', server_port_backup = " . $form_data ['server_port_backup'] . ", transport_backup = '" . $form_data ['transport_backup'] . "', ext_range = " . $form_data ['ext_range'] . ", dialplan = '" . $form_data ['dialplan'] . "', dialplan_timeout = '" . $form_data ['dialplan_timeout'] . "' WHERE account_number = '" . $form_data ['account_number'] . "'"; if ( $ubF->DB ['main']->query ( $query ) == true) { $retVal = 1; $messages = "Account Information Updated.\n"; if ( $form_data ['uad'] >= 1 ) { $query = "SELECT vdid, extensions, mac FROM voip_devices WHERE account_number = '" . $form_data ['account_number'] . "' AND account_locked = 1"; $result = $ubF->DB ['main']->query ( $query ); while ( $qD = $result->fetch_row () ) { $ext = json_decode ( $qD [1], true ); for ( $i = 1 ; $i <= count ( $ext ) ; $i++ ) { $ext [$i] ['server_primary'] = $form_data ['server_primary']; $ext [$i] ['server_backup'] = $form_data ['server_backup']; $ext [$i] ['transport_primary'] = $form_data ['transport_primary']; $ext [$i] ['transport_backup'] = $form_data ['transport_backup']; $ext [$i] ['server_port_primary'] = $form_data ['server_port_primary']; $ext [$i] ['server_port_backup'] = $form_data ['server_port_backup']; } $query = "UPDATE voip_devices SET extensions = '" . json_encode ( $ext ) . "', dialplan = '" . $form_data ['dialplan'] . "', dialplan_timeout = '" . $form_data ['dialplan_timeout'] . "' WHERE vdid = " . $qD [0]; if ( $ubF->DB ['main']->query ( $query ) == true ) $messages .= "Account Device " . $qD [2] . " Has Been Updated.\n"; } $result->free (); } if ( $form_data ['uas'] == 2 ) { $query = "SELECT vdid, extensions, mac FROM voip_devices WHERE extensions LIKE '%\"voip_code\":\"" . $form_data ['voip_code'] . "\"%'"; $result = $ubF->DB ['main']->query ( $query ); while ( $qD = $result->fetch_row () ) { $ext = json_decode ( $qD [1], true ); for ( $i = 1 ; $i <= count ( $ext ) ; $i++ ) { if ( $ext [$i] ['voip_code'] == $form_data ['voip_code'] && $ext [$i] ['uas'] == 1 ) { $ext [$i] ['server_primary'] = $form_data ['server_primary']; $ext [$i] ['server_backup'] = $form_data ['server_backup']; $ext [$i] ['transport_primary'] = $form_data ['transport_primary']; $ext [$i] ['transport_backup'] = $form_data ['transport_backup']; $ext [$i] ['server_port_primary'] = $form_data ['server_port_primary']; $ext [$i] ['server_port_backup'] = $form_data ['server_port_backup']; $query = "UPDATE voip_devices SET extensions = '" . json_encode ( $ext ) . "' WHERE vdid = " . $qD [0]; if ( $ubF->DB ['main']->query ( $query ) == true ) $messages .= "Device " . $qD [2] . " - " . $ext [$i] ['extension'] . " Has Been Updated.\n"; } } } } } else { $retVal = 0; $messages = "Error Updating Account"; } $rData ['data'] = Array ( 'ret' => $retVal, 'ret_string' => $messages ); break; default : $rData ['data'] = Array ( 0 ); break; } print json_encode ( $rData ); ?>