function SoundFiles_Ajax()
{
    global $mysqli;
    $session =& $_SESSION['SoundFilesAjax'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $data = $_REQUEST;
    $response = array();
    switch ($data['Action']) {
        case 'RecordSound':
            $UID = uniqid(time());
            asterisk_RecordSound($_REQUEST['Extension'], '/usr/share/asterisk/sounds/vm-then-pound', $UID);
            $response['TmpFile'] = "/tmp/{$UID}.wav";
            break;
        case 'PlayFile':
            $PK_SoundFile = $_REQUEST['PK_SoundFile'];
            $Extension = $_REQUEST['Extension'];
            $query = "SELECT Filename FROM SoundFiles WHERE PK_SoundFile = {$PK_SoundFile} LIMIT 1";
            $result = $mysqli->query($query) or die($mysqli->error . $query);
            $row = $result->fetch_row();
            $File = pathinfo($row[0]);
            asterisk_PlaySound($Extension, $File['dirname'] . '/' . $File['filename']);
            break;
        case 'VerifyFile':
            if (file_exists($_REQUEST['File'])) {
                $response['FileExists'] = 1;
            } else {
                $response['FileExists'] = 0;
            }
            break;
    }
    echo json_encode($response);
}
function VoipProviders_List()
{
    global $mysqli;
    $session =& $_SESSION['VoipProviders_List'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init sort order (Order)
    if ($session['Sort'] == $_REQUEST['Sort']) {
        $Order = $session['Order'] == "asc" ? "desc" : "asc";
    } elseif ($session['Sort'] != $_REQUEST['Sort']) {
        $Order = 'asc';
    }
    $session['Order'] = $Order;
    // Init sort field (Sort)
    if (isset($_REQUEST['Sort'])) {
        $Sort = $_REQUEST['Sort'];
    } else {
        $Sort = 'Name';
    }
    $session['Sort'] = $Sort;
    // Init table fields (Extensions)
    $Providers = array();
    $query = "\n\t\t\tSELECT\n\t\t\t\tPK_SipProvider    AS _PK_,\n\t\t\t\tName              AS Name,\n\t\t\t\t'SIP'             AS Type,\n\t\t\t\tAccountID         AS AccountID,\n\t\t\t\tHost              AS Host,\n\t\t\t\tCallbackExtension AS CallbackExtension\n\t\t\tFROM\n\t\t\t\tSipProviders\n\t\tORDER BY\n\t\t\t{$Sort} {$Order}\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_assoc()) {
        $Providers[] = $row;
    }
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Providers', $Providers);
    $smarty->assign('Sort', $Sort);
    $smarty->assign('Order', $Order);
    $smarty->assign('Message', $Message);
    $smarty->assign('Hilight', isset($_REQUEST['hilight']) ? $_REQUEST['hilight'] : "");
    return $smarty->fetch('VoipProviders_List.tpl');
}
function Extensions_DialTone_Modify()
{
    global $mysqli;
    $session =& $_SESSION['Extensions_SimpleConf_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (@$_REQUEST['submit'] == 'save') {
        $Extension = formdata_from_post();
        $Errors = formdata_validate($Extension);
        if (count($Errors) == 0) {
            if ($Extension['PK_Extension'] != '') {
                $msg = 'MODIFY_DIALTONE_EXTENSION';
            } else {
                $msg = 'ADD_DIALTONE_EXTENSION';
            }
            $id = formdata_save($Extension);
            header("Location: Extensions_List.php?hilight={$id}&msg={$msg}");
            die;
        }
    } elseif (@$_REQUEST['PK_Extension'] != "") {
        $Extension = formdata_from_db($_REQUEST['PK_Extension']);
    } else {
        $Extension = formdata_from_default();
    }
    $smarty->assign('Extension', $Extension);
    $smarty->assign('Errors', $Errors);
    return $smarty->fetch('Extensions_DialTone_Modify.tpl');
}
function TimeFrames_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Timeframe = $_REQUEST['PK_Timeframe'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        // See if user is alowed to update this timeframe
        $query = "\n\t\t\tSELECT\n\t\t\t\t*\n\t\t\tFROM\n\t\t\t\tTimeframes\n\t\t\tWHERE\n\t\t\t\tPK_Timeframe  = {$PK_Timeframe}\n\t\t\t\tAND\n\t\t\t\tFK_Extension = '" . $mysqli->real_escape_string($_SESSION['_USER']['PK_Extension']) . "'\n\t\t";
        $result = $mysqli->query($query) or die($mysqli->error . $query);
        if ($result->num_rows != 1) {
            header('Location: TimeFrames.php?msg=DELETE_TIMEFRAME');
            die;
        }
        $query = "DELETE FROM Timeframes WHERE PK_Timeframe = {$PK_Timeframe} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Timeframe_Intervals WHERE FK_Timeframe = {$PK_Timeframe}";
        $mysqli->query($query) or die($mysqli->error);
        header('Location: TimeFrames.php?msg=DELETE_TIMEFRAME');
        die;
    }
    // Init template info (Template)
    $query = "SELECT * FROM Timeframes WHERE PK_Timeframe = {$PK_Timeframe} LIMIT 1";
    $result = $mysqli->query($query) or die($mysqli->error);
    $Timeframe = $result->fetch_assoc();
    $smarty->assign('Timeframe', $Timeframe);
    return $smarty->fetch('TimeFrames_Delete.tpl');
}
function SoundLanguages_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_SoundLanguage = $_REQUEST['PK_SoundLanguage'];
    if ($PK_SoundLanguage == "") {
        $PK_SoundLanguage = $_REQUEST['PK'];
    }
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM SoundLanguages WHERE PK_SoundLanguage = {$PK_SoundLanguage} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        if ($mysqli->affected_rows != 1) {
            return;
        }
        header('Location: SoundLanguages_List.php?msg=DELETE_LANGUAGE');
        die;
    }
    // Init extension info (Extension)
    $query = "SELECT * FROM SoundLanguages WHERE PK_SoundLanguage = {$PK_SoundLanguage} LIMIT 1";
    $result = $mysqli->query($query) or die($mysqli->error);
    $SoundLanguage = $result->fetch_assoc();
    $smarty->assign('SoundLanguage', $SoundLanguage);
    return $smarty->fetch('SoundLanguages_Delete.tpl');
}
function IVR_Menus_Modify()
{
    global $mysqli;
    $session =& $_SESSION['IVR_Menus_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    if (@$_REQUEST['submit'] == 'save') {
        $Menu = formdata_from_post();
        $Errors = formdata_validate($Action);
        if (count($Errors) == 0) {
            if ($Menu['PK_Menu'] != '') {
                $msg = 'MODIFY_MENU';
            } else {
                $msg = 'ADD_MENU';
            }
            $id = formdata_save($Menu);
            header("Location: IVR_Menus.php?PK_Menu={$id}&msg={$msg}");
            die;
        }
    } elseif (@$_REQUEST['PK_Menu'] != "") {
        $Menu = formdata_from_db($_REQUEST['PK_Menu']);
    } else {
        $Menu = formdata_from_default();
    }
    $smarty->assign('Menu', $Menu);
    $smarty->assign('Errors', $Errors);
    return $smarty->fetch('IVR_Menus_Modify.tpl');
}
Beispiel #7
0
function TimeFrames()
{
    global $mysqli;
    $session =& $_SESSION['TimeFrames'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init Message
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // If requested, create new timeframe
    if (isset($_POST['sumbit'])) {
        $data = $_POST;
        if (strlen($data['Name']) < 1 || strlen($data['Name']) > 30) {
            $errors['Name'] = true;
        }
        if (count($errors) == 0) {
            $query = "INSERT INTO Timeframes(Name) VALUES('" . $mysqli->real_escape_string($_POST['Name']) . "')";
            $mysqli->query($query) or die($mysqli->error . $query);
            $PK_Timeframe = $mysqli->insert_id;
            header("Location: TimeFrames_Modify.php?msg=CREATE_TIMEFRAME&FK_Timeframe={$PK_Timeframe}");
            die;
        }
    }
    // Init table fields (Timeframes)
    $Timeframes = array();
    $query = "\n\t\tSELECT\n\t\t\tPK_Timeframe AS _PK_,\n\t\t\tName         AS Name\n\t\tFROM\n\t\t\tTimeframes\n\t\tWHERE\n\t\t\tFK_Extension = 0\n\t\tORDER BY Name\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    while ($row = $result->fetch_assoc()) {
        $Timeframes[] = $row;
    }
    $smarty->assign('Timeframes', $Timeframes);
    $smarty->assign('Errors', $errors);
    $smarty->assign('Message', $Message);
    return $smarty->fetch('TimeFrames.tpl');
}
function Groups_Popup_Create()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init form data (Group, Errors)
    if (@$_REQUEST['submit'] == 'save') {
        $Group = formdata_from_post();
        $Errors = formdata_validate($Group);
        if (count($Errors) == 0) {
            $id = formdata_save($Group);
            return '
			<script type="text/javascript" src="../script/jquery.selectboxes.js"></script>
			<script>
				$("#Groups", opener.document).addOption("' . $id . '", "' . $Group['Name'] . '");
				window.close();
			</script>
			';
        }
    } else {
        if ($_REQUEST['PK_Group'] != "") {
            $Group = formdata_from_db($_REQUEST['PK_Group']);
        }
    }
    // Init Availabe Extensions
    $query = "\n\t\tSELECT\n\t\t\tExtensions.PK_Extension AS PK_Extension,\n\t\t\tExtension,\n\t\t\tName\n\t\tFROM\n\t\t\tExtensions\n\t\tWHERE\n\t\t\tType IN ('Virtual','SipPhone')\n\t\tORDER BY\n\t\t\tExtension ASC\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Extensions = array();
    while ($row = $result->fetch_assoc()) {
        $Extensions[] = $row;
    }
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Group', $Group);
    $smarty->assign('Extensions', $Extensions);
    return $smarty->fetch('Groups_Popup_Create.tpl');
}
function Groups_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Group = $_REQUEST['PK_Group'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM Groups WHERE PK_Group = {$PK_Group} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        header('Location: Groups_List.php?msg=DELETE_GROUP');
        die;
    }
    // Init template info (Group)
    $query = "\n\t\tSELECT\n\t\t\tPK_Group,\n\t\t\tName\n\t\tFROM\n\t\t\tGroups\n\t\tWHERE\n\t\t\tPK_Group = {$PK_Group}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Group = $result->fetch_assoc();
    $query = "\n\t\tSELECT\n\t\t\tExtension,\n\t\t\tExtensions.PK_Extension,\n\t\t\tName\n\t\tFROM\n\t\t\tExtension_Groups\n\t\t\tINNER JOIN Extensions    ON Extensions.PK_Extension = FK_Extension\n\t\tWHERE\n\t\t\tFK_Group = {$PK_Group}\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Group['Extensions'] = array();
    while ($row = $result->fetch_assoc()) {
        $Group['Extensions'][] = $row;
    }
    $smarty->assign('Group', $Group);
    return $smarty->fetch('Groups_Delete.tpl');
}
function MOH_Groups_List()
{
    global $mysqli;
    $session =& $_SESSION['Groups'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init sort order (Order)
    if ($session['Sort'] == $_REQUEST['Sort']) {
        $Order = $session['Order'] == "asc" ? "desc" : "asc";
    } elseif ($session['Sort'] != $_REQUEST['Sort']) {
        $Order = 'asc';
    }
    $session['Order'] = $Order;
    // Init sort field (Sort)
    if (isset($_REQUEST['Sort'])) {
        $Sort = $_REQUEST['Sort'];
    } else {
        $Sort = 'Name';
    }
    $session['Sort'] = $Sort;
    // Init table fields (Groups)
    $Groups = array();
    $query = "\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tMoh_Groups\n\t\tORDER BY \n\t\t\t`{$Sort}` {$Order}\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_assoc()) {
        $Groups[] = $row;
    }
    $smarty->assign('Groups', $Groups);
    $smarty->assign('Sort', $Sort);
    $smarty->assign('Order', $Order);
    $smarty->assign('Message', $Message);
    $smarty->assign('Hilight', isset($_REQUEST['hilight']) ? $_REQUEST['hilight'] : "");
    return $smarty->fetch('MOH_Groups_List.tpl');
}
function MOH_Groups_Modify()
{
    global $mysqli;
    $session =& $_SESSION['MOH_Groups_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (@$_REQUEST['submit'] == 'save') {
        $Group = formdata_from_post();
        $Errors = formdata_validate($Group);
        if (count($Errors) == 0) {
            if ($Group['PK_Group'] != '') {
                $msg = 'MODIFY_MOH_GROUP';
            } else {
                $msg = 'ADD_MOH_GROUP';
            }
            $id = formdata_save($Group);
            asterisk_UpdateConf('musiconhold.conf');
            asterisk_Reload();
            header("Location: MOH_Groups_List.php?hilight={$id}&msg={$msg}");
            die;
        }
    } elseif (@$_REQUEST['PK_Group'] != "") {
        $Group = formdata_from_db($_REQUEST['PK_Group']);
    } else {
        $Group = formdata_from_default();
    }
    $smarty->assign('Group', $Group);
    $smarty->assign('Errors', $Errors);
    return $smarty->fetch('MOH_Groups_Modify.tpl');
}
function Account_Modify()
{
    $session =& $_SESSION['Account_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init form data (Extension)
    if (@$_REQUEST['submit'] == 'save') {
        $Extension = formdata_from_post();
        $Errors = formdata_validate($Extension);
        if (count($Errors) == 0) {
            $id = formdata_save($Extension);
            asterisk_UpdateConf('sip.conf');
            asterisk_UpdateConf('voicemail.conf');
            asterisk_Reload();
            header("Location: Account_Modify.php?msg=MODIFY_EXTENSION&hilight={$id}");
            die;
        }
    } else {
        $Extension = formdata_from_db($_SESSION['_USER']['PK_Extension']);
    }
    $smarty->assign('Extension', $Extension);
    $smarty->assign('Message', $Message);
    $smarty->assign('Errors', $Errors);
    return $smarty->fetch('Account_Modify.tpl');
}
function OutgoingCalls()
{
    global $mysqli;
    $session =& $_SESSION['OutgoingCalls'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (isset($_REQUEST['submit']) && ($_REQUEST['submit'] == 'add_cid_rule' || $_REQUEST['submit'] == 'add_cids_rule')) {
        $query = "\n\t\t\tINSERT INTO\n\t\t\t\tOutgoingCIDRules\n\t\t\tSET\n\n\t\t\t\tType            = '" . ($_REQUEST['submit'] == 'add_cid_rule' ? 'Single' : 'Multiple') . "',\n\t\t\t\tExtensionStart  = 0,\n\t\t\t\tExtensionEnd    = 0,\n\t\t\t\tFK_OutgoingRule = 0,\n\t\t\t\t`Add`           = 0,\n\t\t\t\tPrependDigits   = '',\n\t\t\t\tName            = '',\n\t\t\t\tNumber          = ''\n\t\t";
        $mysqli->query($query) or die($mysqli->error . $query);
        $HiligthRule = $mysqli->insert_id;
    }
    // Outgoing Rules (OutgoingRules)
    $OutgoingRules = array();
    $query = "\n\t\t(SELECT\n\t\t\tPK_OutgoingRule,\n\t\t\tRuleOrder,\n\t\t\tBeginWith,\n\t\t\tOutgoingRules.Name,\n\t\t\tRestBetweenHigh,\n\t\t\tRestBetweenLow,\n\t\t\t'VoIP' AS ProviderType,\n\t\t\tProtected,\n\t\t\tSipProviders.Name AS ProviderName\n\t\tFROM\n\t\t\tOutgoingRules\n        LEFT JOIN SipProviders ON PK_SipProvider = ProviderID\n        WHERE ProviderType = 'SIP'\n        )\n        UNION\n\t\t(SELECT\n\t\t\tPK_OutgoingRule,\n\t\t\tRuleOrder,\n\t\t\tBeginWith,\n\t\t\tOutgoingRules.Name,\n\t\t\tRestBetweenHigh,\n\t\t\tRestBetweenLow,\n\t\t\t'3G Dongle' AS ProviderType,\n\t\t\tProtected,\n\t\t\tDongles.Name AS ProviderName\n\t\tFROM\n\t\t\tOutgoingRules\n        LEFT JOIN Dongles ON PK_Dongle = ProviderID\n        WHERE ProviderType = 'DONGLE'\n        )\n        UNION\n\t\t(SELECT\n\t\t\tPK_OutgoingRule,\n\t\t\tRuleOrder,\n\t\t\tBeginWith,\n\t\t\tOutgoingRules.Name,\n\t\t\tRestBetweenHigh,\n\t\t\tRestBetweenLow,\n\t\t\t'internal' AS ProviderType,\n\t\t\tProtected,\n\t\t\t'' AS ProviderName\n\t\tFROM\n\t\t\tOutgoingRules\n        WHERE ProviderType = 'INTERNAL'\n        )\n        \n\t\tORDER BY\n\t\t\tRuleOrder ASC\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    while ($row = $result->fetch_assoc()) {
        $OutgoingRules[] = $row;
    }
    // Outgoing Rules (OutgoingCIDRules)
    $OutgoingCIDRules = array();
    $query = "\n\t\tSELECT\n\t\t\t\t*\n\t\tFROM\n\t\t\tOutgoingCIDRules\n\t\tORDER BY\n\t\t\tType\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    while ($row = $result->fetch_assoc()) {
        $OutgoingCIDRules[] = $row;
    }
    $smarty->assign('OutgoingRules', $OutgoingRules);
    $smarty->assign('OutgoingCIDRules', $OutgoingCIDRules);
    $smarty->assign('Message', $Message);
    $smarty->assign('Hilight', isset($_REQUEST['hilight']) ? $_REQUEST['hilight'] : "");
    return $smarty->fetch('OutgoingCalls.tpl');
}
Beispiel #14
0
function Groups_List()
{
    global $mysqli;
    $session =& $_SESSION['Groups'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init sort order (Order)
    if ($session['Sort'] == $_REQUEST['Sort']) {
        $Order = $session['Order'] == "asc" ? "desc" : "asc";
    } elseif ($session['Sort'] != $_REQUEST['Sort']) {
        $Order = 'asc';
    }
    $session['Order'] = $Order;
    // Init sort field (Sort)
    if (isset($_REQUEST['Sort'])) {
        $Sort = $_REQUEST['Sort'];
    } else {
        $Sort = 'Name';
    }
    $session['Sort'] = $Sort;
    // Init table fields (Groups)
    $Groups = array();
    $query = "\n\t\tSELECT\n\t\t\tPK_Group  \t\t    AS _PK_,\n\t\t\tName                AS Name,\n\t\t\tCount(FK_Extension) AS Members,\n\t\t\tDATE_FORMAT(DateCreated,'%m/%d/%y, %h:%i %p') AS DateCreated\n\t\tFROM\n\t\t\tGroups\n\t\t\tLEFT JOIN Extension_Groups ON FK_Group = PK_Group\n\t\tGROUP BY\n\t\t\tPK_Group\n\t\tORDER BY \n\t\t\t{$Sort} {$Order}\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_assoc()) {
        $Groups[] = $row;
    }
    $smarty->assign('Groups', $Groups);
    $smarty->assign('Sort', $Sort);
    $smarty->assign('Order', $Order);
    $smarty->assign('Message', $Message);
    $smarty->assign('Hilight', isset($_REQUEST['hilight']) ? $_REQUEST['hilight'] : "");
    return $smarty->fetch('Groups_List.tpl');
}
function Groups_Modify()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init form data (Group, Errors)
    if (@$_REQUEST['submit'] == 'save') {
        $Group = formdata_from_post();
        $Errors = formdata_validate($Group);
        if (count($Errors) == 0) {
            $id = formdata_save($Group);
            header("Location: Groups_List.php?msg=MODIFY_GROUP&hilight={$id}");
            die;
        }
    } else {
        if ($_REQUEST['PK_Group'] != "") {
            $Group = formdata_from_db($_REQUEST['PK_Group']);
        }
    }
    // Init Availabe Extensions
    $query = "\n\t\tSELECT\n\t\t\tExtensions.PK_Extension AS PK_Extension,\n\t\t\tExtension,\n            Name\n\t\tFROM\n\t\t\tExtensions\n\t\tWHERE\n\t\t\tType IN ('Virtual','SipPhone')\n\t\tORDER BY\n\t\t\tExtension ASC\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Extensions = array();
    while ($row = $result->fetch_assoc()) {
        $Extensions[] = $row;
    }
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Group', $Group);
    $smarty->assign('Extensions', $Extensions);
    return $smarty->fetch('Groups_Modify.tpl');
}
Beispiel #16
0
function IVR_Menus()
{
    global $mysqli;
    $session =& $_SESSION['IVR_Menus'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Menu = $_REQUEST['PK_Menu'];
    $_SESSION['IVR_HISTORY']['PK_Menu'] = $PK_Menu;
    // Init table fields (IVR_Menus)
    $IVR_Menus = array();
    $query = "\n\t\tSELECT\n\t\t\tPK_Menu,\n\t\t\tName,\n\t\t\tDescription\n\t\tFROM\n\t\t\tIVR_Menus\n\t\tORDER BY\n\t\t\tName\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_assoc()) {
        $menu = $row;
        // Get extensions maped to this menu
        $menu['Extensions'] = array();
        $query_ext = "\n\t\t\tSELECT\n\t\t\t\tExtension\n\t\t\tFROM\n\t\t\t\tExt_IVR\n\t\t\t\tINNER JOIN Extensions ON Ext_IVR.PK_Extension = Extensions.PK_Extension\n\t\t\tWHERE\n\t\t\t\tFK_Menu = {$menu['PK_Menu']}\n\t\t";
        $result_ext = $mysqli->query($query_ext) or die($mysqli->error . $query_ext);
        while ($row_ext = $result_ext->fetch_assoc()) {
            $menu['Extensions'][] = $row_ext['Extension'];
        }
        $menu['Extensions'] = implode(' , ', $menu['Extensions']);
        $IVR_Menus[] = $menu;
    }
    if ($PK_Menu != "") {
        $IVR_Tree = Get_IVR_Tree($PK_Menu);
    }
    $smarty->assign('PK_Menu', $PK_Menu);
    $smarty->assign('IVR_Menus', $IVR_Menus);
    $smarty->assign('IVR_Tree', $IVR_Tree);
    $smarty->assign('Message', isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "");
    return $smarty->fetch('IVR_Menus.tpl');
}
function Extensions_SipPhone_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Extension = $_REQUEST['PK_Extension'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM Extensions WHERE PK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Ext_SipPhones WHERE PK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        if ($mysqli->affected_rows != 1) {
            return;
        }
        $query = "DELETE FROM Ext_SipPhones_Codecs WHERE FK_Extension = {$PK_Extension}";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Extension_Groups WHERE FK_Extension = {$PK_Extension}";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Ext_SipPhones_Features WHERE FK_Extension = {$PK_Extension}";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Extension_Rules WHERE FK_Extension = {$PK_Extension}";
        $mysqli->query($query) or die($mysqli->error);
        asterisk_UpdateConf('sip.conf');
        asterisk_UpdateConf('voicemail.conf');
        asterisk_Reload();
        header('Location: Extensions_List.php?msg=DELETE_SIPPHONE_EXTENSION');
        die;
    }
    // Init extension info (Extension)
    $query = "\n\t\tSELECT\n\t\t\tPK_Extension,\n\t\t\tExtension\n\t\tFROM\n\t\t\tExtensions\n\t\tWHERE\n\t\t\tPK_Extension = {$PK_Extension}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Extension = $result->fetch_assoc();
    $smarty->assign('Extension', $Extension);
    return $smarty->fetch('Extensions_SipPhone_Delete.tpl');
}
function Dongles_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Dongle = $_REQUEST['PK_Dongle'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM Dongles WHERE PK_Dongle = {$PK_Dongle} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error . $query);
        if ($mysqli->affected_rows != 1) {
            return;
        }
        $query = "DELETE FROM Dongle_Rules WHERE FK_Dongle = {$PK_Dongle}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM Dongle_Statuses WHERE FK_Dongle = {$PK_Dongle}";
        $mysqli->query($query) or die($mysqli->error . $query);
        asterisk_UpdateConf('dongle.conf');
        asterisk_UpdateConf('extensions.conf');
        asterisk_Reload();
        header('Location: Dongles_List.php?msg=DELETE_DONGLE');
    } else {
        // Init extension info (Extension)
        $query = "\n\t\tSELECT\n\t\t\tPK_Dongle,\n\t\t\tName\n\t\tFROM\n\t\t\tDongles\n\t\tWHERE\n\t\t\tPK_Dongle = {$PK_Dongle}\n\t\tLIMIT 1\n\t";
        $result = $mysqli->query($query) or die($mysqli->error);
        $Dongle = $result->fetch_assoc();
        $smarty->assign('Dongle', $Dongle);
        return $smarty->fetch('Dongles_Delete.tpl');
    }
}
function Recordings_DeleteRule()
{
    global $mysqli;
    include dirname(__FILE__) . '/../include/config.inc.php';
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $path = $conf['dirs']['moh'];
    $PK_Rule = $_REQUEST['PK_Rule'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        //delete files from database
        $query = "DELETE FROM RecordingRules WHERE PK_Rule = {$PK_Rule}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM RecordingRules_Extensions WHERE FK_Rule = {$PK_Rule}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM RecordingRules_Groups WHERE FK_Rule = {$PK_Rule}";
        $mysqli->query($query) or die($mysqli->error . $query);
        asterisk_UpdateConf('musiconhold.conf');
        asterisk_Reload();
        header('Location: Recordings_List.php?msg=DELETE_REC_RULE');
    } else {
        $query = "SELECT * FROM RecordingRules WHERE PK_Rule =  {$PK_Rule};";
        $result = $mysqli->query($query) or die($mysqli->error);
        $RecordingRule = $result->fetch_assoc();
        $smarty->assign('RecordingRule', $RecordingRule);
        return $smarty->fetch('Recordings_DeleteRule.tpl');
    }
}
function IVR_Actions_Ajax()
{
    global $mysqli;
    $session =& $_SESSION['IVRActionAjax'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $data = $_POST;
    $response = array();
    switch ($data['Action']) {
        case 'DeleteAction':
            $query = "DELETE FROM IVR_Actions WHERE PK_Action = " . intval($data['ID']) . " LIMIT 1";
            $mysqli->query($query) or die($mysqli->error);
            $query = "DELETE FROM IVR_Action_Params WHERE FK_Action = " . intval($data['ID']) . " LIMIT 1";
            $mysqli->query($query) or die($mysqli->error);
            $response['ID'] = $data['ID'];
            break;
        case 'UpdateActionOrder':
            $order = 1;
            foreach ($_REQUEST['Actions'] as $PK_Action) {
                $PK_Action = explode('_', $PK_Action);
                $PK_Action = $PK_Action[1];
                $query = "UPDATE IVR_Actions SET `Order` = {$order} WHERE PK_Action = {$PK_Action} LIMIT 1";
                $mysqli->query($query) or die($mysqli->error);
                $order++;
            }
            break;
    }
    echo json_encode($response);
}
function SoundLanguages_Modify()
{
    $session =& $_SESSION['Templates_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (@$_REQUEST['submit'] == 'save') {
        $SoundLanguage = formdata_from_post();
        $Errors = formdata_validate($Rule);
        if (count($Errors) == 0) {
            if ($SoundLanguage['PK_SoundLanguage'] == '') {
                $id = formdata_save($SoundLanguage);
                header("Location: SoundLanguages_List.php?msg=CREATE_LANGUAGE&hilight={$id}");
                die;
            } else {
                $id = formdata_save($SoundLanguage);
                header("Location: SoundLanguages_List.php?msg=MODIFY_LANGUAGE&hilight={$id}");
                die;
            }
        }
    } elseif ($_REQUEST['PK_SoundLanguage'] != "") {
        $SoundLanguage = formdata_from_db($_REQUEST['PK_SoundLanguage']);
    }
    $smarty->assign('SoundLanguage', $SoundLanguage);
    $smarty->assign('Message', $Message);
    return $smarty->fetch('SoundLanguages_Modify.tpl');
}
function Extensions_Queue_Modify()
{
    global $mysqli;
    $session =& $_SESSION['Extensions_Queue_Modify'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    // Init message (Message)
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    // Init Available ringing strategies (RingStrategies)
    $query = "SELECT PK_RingStrategy, Name, Description FROM RingStrategies";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $RingStrategies = array();
    while ($row = $result->fetch_assoc()) {
        $RingStrategies[] = $row;
    }
    // Init Available Members (Members)
    $query = "\n\t\tSELECT\n\t\t\tExtensions.PK_Extension,\n\t\t\tExtension,\n            Name\n\t\tFROM\n\t\t\tExtensions\n\t\tWHERE\n\t\t\tExtensions.Type IN ('Virtual', 'SipPhone')\n\t\tORDER BY Extension\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Members = array();
    while ($row = $result->fetch_assoc()) {
        $Members[] = $row;
    }
    // Init available Sounds (SoundsFiles)
    $query = "\n\t\tSELECT\n\t\t\tPK_SoundFile,\n\t\t\tSoundFiles.Name,\n\t\t\tSoundFiles.Description,\n\t\t\tSoundLanguages.Name AS Language\n\t\tFROM\n\t\t\tSoundFiles\n\t\t\tINNER JOIN SoundEntries   ON FK_SoundEntry    = PK_SoundEntry\n\t\t\tINNER JOIN SoundFolders   ON FK_SoundFolder   = PK_SoundFolder\n\t\t\tINNER JOIN SoundLanguages ON FK_SoundLanguage = PK_SoundLanguage\n\t\tWHERE\n\t\t\tSoundFolders.Name = 'Call Queues'\n\t\tORDER BY\n\t\t\tSoundLanguages.Name ASC,\n\t\t\tSoundFiles.Name     ASC\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    $SoundFiles = array();
    while ($row = $result->fetch_assoc()) {
        $SoundFiles[$row['Language']][$row['PK_SoundFile']] = $row['Name'];
    }
    // Init available moh groups
    $query = "SELECT * FROM Moh_Groups ORDER BY Name ASC";
    $result = $mysqli->query($query) or die($mysqli->error);
    $MohGroups = array();
    while ($row = $result->fetch_assoc()) {
        $MohGroups[] = $row;
    }
    // Init form data (Queue)
    if (@$_REQUEST['submit'] == 'save') {
        $Queue = formdata_from_post();
        $Errors = formdata_validate($Queue);
        if (count($Errors) == 0) {
            $id = formdata_save($Queue);
            asterisk_UpdateConf('queues.conf');
            asterisk_Reload();
            header("Location: Extensions_List.php?msg=MODIFY_QUEUE_EXTENSION&hilight={$id}");
            die;
        }
    } elseif (@$_REQUEST['PK_Extension'] != "") {
        $Queue = formdata_from_db($_REQUEST['PK_Extension']);
    } else {
        $Queue = array('MemberRingTime' => '16', 'NextWaitTime' => '5', 'WrapUpTime' => '30', 'PlayMohInQueue' => '1', 'AnnounceFrequency' => '90', 'FK_Sound_PickupAnnouncement' => '4552', 'FK_Sound_YouAreNext' => '4401', 'FK_Sound_ThereAre' => '4249', 'FK_Sound_CallsWaiting' => '4394', 'FK_Sound_HoldTime' => '4351', 'FK_Sound_Minutes' => '4361', 'FK_Sound_ThankYou' => '4243');
    }
    $smarty->assign('Queue', $Queue);
    $smarty->assign('RingStrategies', $RingStrategies);
    $smarty->assign('SoundFiles', $SoundFiles);
    $smarty->assign('MohGroups', $MohGroups);
    $smarty->assign('Members', $Members);
    $smarty->assign('Message', $Message);
    $smarty->assign('Errors', $Errors);
    return $smarty->fetch('Extensions_Queue_Modify.tpl');
}
function Extensions_Queue_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Extension = $_REQUEST['PK_Extension'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM Extensions WHERE PK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Ext_Queues WHERE PK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Ext_Queue_Members WHERE FK_Extension = {$PK_Extension}";
        $mysqli->query($query) or die($mysqli->error);
        asterisk_UpdateConf('queues.conf');
        asterisk_Reload();
        header('Location: Extensions_List.php?msg=DELETE_QUEUE_EXTENSION');
        die;
    }
    // Init extension info (Extension)
    $query = "\n\t\tSELECT\n\t\t\tPK_Extension,\n\t\t\tName\n\t\tFROM\n\t\t\tExt_Queues\n\t\tWHERE\n\t\t\tPK_Extension = {$PK_Extension}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    $Queue = $result->fetch_assoc();
    $smarty->assign('Queue', $Queue);
    return $smarty->fetch('Extensions_Queue_Delete.tpl');
}
function NetworkSettings()
{
    $session =& $_SESSION['NetworkSettings'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (!empty($_REQUEST['submit'])) {
        $Settings = formdata_from_post();
        $Errors = formdata_validate($Settings, $variables);
        if (count($Errors) == 0) {
            $Message = 'SAVED_NETWORK_SETTINGS';
            formdata_save($Settings);
            set_network_interfaces($Settings);
            asterisk_UpdateConf('sip.conf');
            //asterisk_Reload();
        }
        $OldSettings = array_merge(formdata_from_db(), get_network_interfaces());
        foreach ($OldSettings as $variable => $value) {
            if (!isset($Settings[$variable])) {
                $Settings[$variable] = $value;
            }
        }
    } else {
        $Settings = formdata_from_db();
    }
    $Interface = get_network_interfaces();
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Message', $Message);
    $smarty->assign('Settings', array_merge($Settings, $Interface));
    return $smarty->fetch('NetworkSettings.tpl');
}
function Extensions_Action_Modify()
{
    global $mysqli;
    $session =& $_SESSION['IVR_Action_Modify_record_digits'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    if (@$_REQUEST['submit'] == 'save') {
        $Action = formdata_from_post();
        $Errors = formdata_validate($Action);
        if (count($Errors) == 0) {
            $id = formdata_save($Action);
            header("Location: IVR_Actions.php?PK_Menu={$Action['FK_Menu']}&hilight={$id}");
            die;
        }
    } elseif (@$_REQUEST['PK_Action'] != "") {
        $Action = formdata_from_db($_REQUEST['PK_Action']);
    } else {
        $Action = formdata_from_default();
    }
    // Get available vars
    $query = "SELECT DISTINCT(Variable) FROM IVR_Action_Params";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_row()) {
        if (!empty($row[0])) {
            $Variables[] = $row[0];
        }
    }
    $smarty->assign('Action', $Action);
    $smarty->assign('Variables', $Variables);
    return $smarty->fetch('IVR_Actions_Modify.record_digits.tpl');
}
function VoipProviders_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_SipProvider = $_REQUEST['PK_SipProvider'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM SipProviders WHERE PK_SipProvider = {$PK_SipProvider} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error . $query);
        if ($mysqli->affected_rows != 1) {
            return;
        }
        $query = "DELETE FROM SipProvider_Codecs WHERE FK_SipProvider = {$PK_SipProvider}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM SipProvider_Rules WHERE FK_SipProvider = {$PK_SipProvider}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM SipProvider_Statuses WHERE FK_SipProvider = {$PK_SipProvider}";
        $mysqli->query($query) or die($mysqli->error . $query);
        $query = "DELETE FROM IncomingRoutes WHERE ProviderType='SIP' AND ProviderID = {$PK_SipProvider}";
        $mysqli->query($query) or die($mysqli->error . $query);
        asterisk_UpdateConf('sip.conf');
        asterisk_UpdateConf('extensions.conf');
        asterisk_Reload();
        header('Location: VoipProviders_List.php?msg=DELETE_SIP_PROVIDER');
        die;
    }
    // Init extension info (Extension)
    $query = "\n\t\tSELECT\n\t\t\tPK_SipProvider,\n\t\t\tName\n\t\tFROM\n\t\t\tSipProviders\n\t\tWHERE\n\t\t\tPK_SipProvider = {$PK_SipProvider}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    $Provider = $result->fetch_assoc();
    $smarty->assign('Provider', $Provider);
    return $smarty->fetch('VoipProviders_Delete.tpl');
}
function SystemClockSettings()
{
    $session =& $_SESSION['SystemClockSettings'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $Message = isset($_REQUEST['msg']) ? $_REQUEST['msg'] : "";
    if (!empty($_REQUEST['submit'])) {
        $Settings = formdata_from_post();
        $Settings['Current_TimeZone'] = $Settings['TimeZones'][0];
        $Settings['DisableNTP'] = $Settings['DisableNTPLast'];
        $Errors = formdata_validate($Settings, $variables);
        if (count($Errors) == 0) {
            $Message = 'SAVED_SYSTEMCLOCK_SETTINGS';
            formdata_save($Settings);
        }
        $OldSettings = formdata_from_db();
        foreach ($OldSettings as $variable => $value) {
            if (!isset($Settings[$variable])) {
                $Settings[$variable] = $value;
            }
        }
    } else {
        $Settings = formdata_from_db();
    }
    $TimeZones = get_timezone_list();
    $smarty->assign('Errors', $Errors);
    $smarty->assign('Message', $Message);
    $smarty->assign('Settings', $Settings);
    $smarty->assign('TimeZones', $TimeZones);
    $smarty->assign('CurrentTime', date("F j, Y, g:i a"));
    return $smarty->fetch('SystemClockSettings.tpl');
}
function Templates_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Template = $_REQUEST['PK_Template'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM Templates WHERE PK_Template = {$PK_Template} AND Protected = 0 LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        if ($mysqli->affected_rows != 1) {
            return;
        }
        $query = "DELETE FROM Template_Codecs WHERE FK_Template = {$PK_Template}";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Template_Groups WHERE FK_Template = {$PK_Template}";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Template_Features WHERE FK_Template = {$PK_Template}";
        $mysqli->query($query) or die($mysqli->error);
        header('Location: Templates_List.php?msg=DELETE_TEMPLATE');
        die;
    }
    // Init template info (Template)
    $query = "\n\t\tSELECT\n\t\t\tPK_Template,\n\t\t\tName,\n\t\t\tName_Editable,\n\t\t\tPassword_Editable,\n\t\t\tEmail_Editable,\n\t\t\tFK_NATType,\n\t\t\tFK_DTMFMode\n\t\tFROM\n\t\t\tTemplates\n\t\tWHERE\n\t\t\tPK_Template = {$PK_Template}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error);
    $Template = $result->fetch_assoc();
    $smarty->assign('Template', $Template);
    return $smarty->fetch('Templates_Delete.tpl');
}
function Extensions_FC_DirectedPickup_Delete()
{
    global $mysqli;
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Extension = $_REQUEST['PK_Extension'];
    // In confirmed, do the actual delete
    if (@$_REQUEST['submit'] == 'delete_confirm') {
        $query = "DELETE FROM FC_DirectedPickup WHERE FK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM FC_DirectedPickup_Admins WHERE FK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM FC_DirectedPickup_Members WHERE FK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        $query = "DELETE FROM Extensions WHERE PK_Extension = {$PK_Extension} LIMIT 1";
        $mysqli->query($query) or die($mysqli->error);
        header('Location: Extensions_List.php?msg=DELETE_FC_DIRECTEDPICKUP_EXTENSION');
        die;
    }
    // Init extension info (Extension)
    $query = "\n\t\tSELECT\n\t\t\tPK_Extension,\n\t\t\tExtension\n\t\tFROM\n\t\t\tExtensions\n\t\tWHERE\n\t\t\tPK_Extension = {$PK_Extension}\n\t\tLIMIT 1\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    $Extension = $result->fetch_assoc();
    $smarty->assign('Extension', $Extension);
    return $smarty->fetch('Extensions_FC_DirectedPickup_Delete.tpl');
}
Beispiel #30
0
function IVR_Actions()
{
    global $mysqli;
    $session =& $_SESSION['IVR_Actions'];
    $smarty = smarty_init(dirname(__FILE__) . '/templates');
    $PK_Menu = $_REQUEST['PK_Menu'];
    // Get IVR_Actions
    $query = "\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tIVR_Actions\n\t\tWHERE\n\t\t\tFK_Menu = {$PK_Menu}\n\t\tORDER BY\n\t\t\t`Order` ASC\n\t";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    while ($row = $result->fetch_assoc()) {
        $action = $row;
        $query2 = "SELECT Name,Value,Variable FROM IVR_Action_Params WHERE FK_Action = '{$action['PK_Action']}'";
        $result2 = $mysqli->query($query2) or die($mysqli->error . $query2);
        while ($row2 = $result2->fetch_assoc()) {
            $action['Param'][$row2['Name']] = $row2['Value'];
            $action['Var'][$row2['Name']] = $row2['Variable'];
            if ($row2['Name'] == 'FK_SoundEntry') {
                $query_snd_name = "SELECT Name FROM SoundFiles WHERE FK_SoundEntry = '{$row2['Value']}' LIMIT 1";
                $result_snd_name = $mysqli->query($query_snd_name) or die($mysqli->error . $query_snd_name);
                $row_snd_name = $result_snd_name->fetch_assoc();
                $action['Sound'][$row2['Name']] = $row_snd_name['Name'];
            }
        }
        $IVR_Actions[] = $action;
    }
    $smarty->assign('IVR_Actions', $IVR_Actions);
    $smarty->assign('PK_Menu', $PK_Menu);
    $smarty->assign('History', $_SESSION['IVR_HISTORY']);
    return $smarty->fetch('IVR_Actions.tpl');
}