#!/usr/bin/perl
########################################################################
#
# $Id: db_update.pl,v 1.629 2025/10/30 18:32:25 gosha Exp $
#
#		(c) Okunev Igor <igor[at]prv.mts-nn.ru>
#					2008 - 2025
#
########################################################################
package VirtualPBX;

$ENV{'LANG'} = 'en_US.UTF-8';

open STDERR, '>>/var/log/VirtualPBX/XVB.stderr';

use strict;

use lib qw( /opt/VirtualPBX/lib );

use XVB::Core;
use XVB::Database;
use MIME::Base64;

use vars qw( $VERSION );

($VERSION='$Revision: 1.629 $')=~s/^\S+\s+\d+\.(\d+)\s+.*/$1/;

########################################################################
my %update_data = (

"$VERSION"	=> [

"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_33 INT(10) not NULL default 0",

"create	table VPBX_VBOXES_WEBSOCKET
(
	ID				INT(16)		    not null,

	URL				VARCHAR(255),
	TRACK			VARCHAR(16),
	PARAMS			VARCHAR(1024),
	ENCODING		VARCHAR(32),
	2WAY			INT(1)			not null default 0,
	MAX_LENGTH		INT(16)			not null default 0,
	EPOCH_TIME		INT(1)			not null default 0,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_WEBSOCKET FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION) VALUES(33, 'WebSocket', 'WebSocket')"
],


"627"	=> [
	"ALTER TABLE VPBX_ROLES DROP COLUMN ACTION_MSG_DOWNLOAD"
],

"626"	=> [
	"alter table VPBX_VBOXES_PAUSE add column NOANSWER			INT(1)			not null default 0"
],

"625"	=> [
	"alter table VPBX_DIDS add column CNAM			VARCHAR(255)"
],

"623"	=> [
	"alter table VPBX_VBOXES_QUEUES MODIFY CALL_NUMBER VARCHAR(1024) not null default 'OOS'",
	"alter table VPBX_VBOXES_DIALOUT MODIFY CALL_NUMBER VARCHAR(1024) not null default 'OOS'",
	"alter table VPBX_VBOXES_INTERCOM MODIFY CALL_NUMBER VARCHAR(1024) not null default 'OOS'",
	"alter table VPBX_VBOXES_WEBVAR MODIFY WEBVAR_URL VARCHAR(1024) not null default ''",
	"alter table VPBX_VBOXES_PODCAST_DATA MODIFY PODCAST_URL VARCHAR(512) not null default ''",
	"alter table VPBX_VBOXES_PODCAST MODIFY PODCAST_URL VARCHAR(512) not null default ''",
	"alter table VPBX_VBOXES_TTS MODIFY TTS_URL VARCHAR(1024) not null default ''"
],

"621"	=> [
	"ALTER TABLE VPBX_ROUTES_AI MODIFY COLUMN DEFCID VARCHAR(80) default ''",
	"ALTER TABLE VPBX_ROUTES MODIFY COLUMN DEFCID VARCHAR(80) default ''",
	"ALTER TABLE VPBX_SIPPEERS MODIFY COLUMN DEFCID VARCHAR(80) default ''"
],

"620"	=> [
	"ALTER TABLE VPBX_REPORTS ADD COLUMN EXTRA_PARAMS TEXT",
],

"618"	=> [
	"ALTER TABLE VPBX_VBOXES_CALLBLAST MODIFY COLUMN RETRYDIAL_INTERVAL INT(3) default 1",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST MODIFY COLUMN RETRYDIAL_LOOPS INT(6) default 0"
],

"617"	=> [
"create table VPBX_ROUTES_AI (
	DATA_ID			INT(16) NOT NULL AUTO_INCREMENT,
	
	PRIORITY		INT(6)    default 5,
    PEER			VARCHAR(100),
	PATTERN         VARCHAR(100) not null,
	SUBSTR          VARCHAR(100),
    DESCRIPTION     VARCHAR(100),
	EXT_NUMBER		VARCHAR(255),
	DEFCID			VARCHAR(50) default '',
	LAST_ROUTE		INT(1) default 0,
	
	PRIMARY KEY (DATA_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"616"	=> [
	"ALTER TABLE VPBX_SIPPEERS ADD COLUMN EXT VARCHAR(80) NOT NULL DEFAULT ''",
	"update VPBX_SIPPEERS set EXT=callerid",
	"update VPBX_SIPPEERS set callerid=concat('<',callerid,'>')"
],

"615"	=> [
	"ALTER table VPBX_ACCOUNTS add COLUMN  PERMIT_WEB					VARCHAR(100) default ''"
],

"614"	=> [
	"ALTER table VPBX_SIPPEERS add COLUMN  PERMIT_WEB					VARCHAR(100) default ''"
],

"613"	=> [
	"ALTER table VPBX_SIPPEERS add COLUMN CUSTOM_VARS		VARCHAR(255)	default ''"
],

"611"	=> [
	"ALTER table VPBX_ROLES add COLUMN PERMIT_WEB					VARCHAR(100) default ''"
],
    
"610"	=> [
	"ALTER table VPBX_SIPPEERS add COLUMN LANG_ID INT(16) not null default 0",
	"ALTER table VPBX_SIPPEERS add CONSTRAINT FK_VPBX_PHONES_LANG FOREIGN KEY (LANG_ID) REFERENCES VPBX_LANG(ID) ON UPDATE CASCADE"
],

"608"	=> [
	"ALTER table VPBX_ROLES add COLUMN LANG_ID INT(16) not null default 0",
	"ALTER table VPBX_ROLES add CONSTRAINT FK_VPBX_ROLES_LANG FOREIGN KEY (LANG_ID) REFERENCES VPBX_LANG(ID) ON UPDATE CASCADE",
],

"607"	=> [
	"ALTER table VPBX_VBOXES_TTS CHANGE TTS_REQ_COOKIE TTS_REQ_HEADERS TEXT(1024)",
	"UPDATE VPBX_VBOXES_TTS set TTS_REQ_HEADERS = concat('Cookie: ',TTS_REQ_HEADERS) where length(TTS_REQ_HEADERS) > 0"
],

"602"	=> [
	"alter table VPBX_PHONE_BOOK ADD COLUMN	PHONE_OWNER		INT(16)",
	"ALTER TABLE VPBX_PHONE_BOOK ADD CONSTRAINT FK_VPBX_PBOOK_PHONE FOREIGN KEY (PHONE_OWNER) REFERENCES VPBX_SIPPEERS(DATA_ID) ON DELETE CASCADE"
],

"601"	=> [
	"ALTER TABLE VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_PAUSE FLOAT default 0",
	"ALTER TABLE VPBX_TARIFF ADD COLUMN CALL_PRICE_E_PAUSE FLOAT default 0"
],	
	
"600"	=> [
	"ALTER TABLE VPBX_REPORTS ADD COLUMN ACCESS_GROUPS TEXT",
	"ALTER TABLE VPBX_REPORTS ADD COLUMN ACCESS_ACCOUNTS TEXT"
],	

"599"	=> [
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_REPORT_LIST INT(1) default 1",
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_REPORT_RUN INT(1) default 1",
	"UPDATE VPBX_ROLES set ACTION_REPORT_LIST = ACTION_PERM_CDR_STAT",
	"UPDATE VPBX_ROLES set ACTION_REPORT_RUN = ACTION_PERM_CDR_STAT"
],	

"598"	=> [
	"ALTER table VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_ID_START_T (ID,CREATE_TIME)"
],

"597"	=> [
	"ALTER table VPBX_VBOXES_RECORD_FILES ADD INDEX I_VPBX_VBOXES_RECORD_FILES_ID (ID)"
],

"596"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN URL_STATE	TEXT(1024)",
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN STATE	INT(1) default 0"
],

"595"	=> [
"create	table VPBX_VBOXES_PAUSE
(
	ID					INT(16)		    not null,

	TIMEOUT				INT(1)			not null default 5,
	DURATION			INT(1)			not null default 0,
	MODE				INT(1)			not null default 0,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_PAUSE FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION) VALUES(32, 'Pause', 'Pause')",
	
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_32 INT(10) not NULL default -1"
],

"590"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN AMD_OPT VARCHAR(100)"
],

"589"	=> [
	"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA MODIFY COLUMN CALL_STATUS			CHAR(22) not null default 'wait'"
],

"588"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN FA_DETECT			INT(3)			default 0"
],

"586"	=> [
	"alter table VPBX_ONLINE_CALLS add column CNAM VARCHAR(255)"
],

"584"	=> [
	"ALTER TABLE VPBX_MACROS MODIFY COLUMN DATA TEXT(4096)"
],

"583"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN REG_NODE		VARCHAR(255)	default ''",
	"drop trigger ins_reg_time",
"CREATE 
trigger ins_reg_time BEFORE UPDATE ON VPBX_SIPPEERS 
FOR EACH ROW
BEGIN
	IF NEW.regseconds is not null THEN
		IF NEW.regseconds > 0 THEN
			SET NEW.REG_TIME = UNIX_TIMESTAMP();
			SET NEW.REG_NODE = (SELECT SUBSTRING_INDEX(host, ':', 1) AS client_host FROM information_schema.processlist WHERE ID = connection_id());
		ELSE
			SET NEW.useragent = OLD.useragent;
			SET NEW.ipaddr = OLD.ipaddr;
		END IF;
	END IF;
END;"
],

"582"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN DEVICE_STATE		INT(1)			default 0",
	"UPDATE VPBX_VBOXES_QUEUES set DEVICE_STATE=1"
],

"581"	=> [
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_PERM_CDR_STAT	INT(1) default 1",
	"UPDATE VPBX_ROLES set ACTION_PERM_CDR_STAT = ACTION_CDR_LIST"
],

"580"	=> [
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_PERM_HIDE_NUMBERS	INT(1) default 0",
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_PERM_CSV_DUMP		INT(1) default 1",
	"ALTER table VPBX_ROLES ADD COLUMN ACTION_PERM_ROOT_ACCESS	INT(1) default 0",
	"UPDATE VPBX_ROLES set ACTION_PERM_ROOT_ACCESS = ACTION_ROOT_ACCESS",
	"ALTER TABLE VPBX_ROLES DROP COLUMN ACTION_ROOT_ACCESS"
],

"573"	=> [
#	"ALTER table VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN RANDV FLOAT not null",
#	"ALTER table VPBX_VBOXES_CALLBLAST_DATA ADD INDEX I_CB_RAND (RANDV)",
#	"UPDATE VPBX_VBOXES_CALLBLAST_DATA SET RANDV = RAND()"
],

"571"	=> [
	"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION) VALUES(6, 'Go To i extension')"
],
	
"570"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN LD_TTL INT(6) default 0"
],

"567"	=> [
	"ALTER TABLE VPBX_PARTNERS ADD COLUMN OPTIONS			TEXT(1024)",
],

"566"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN MANAGER_FOR		VARCHAR(255)	default ''",
],

"564"	=> [
	"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'monitoring','','monitoring role',1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)"
],
	
"562"	=> [
	"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_ROLES INT(10) default 3"
],

"559"	=> [
"create table VPBX_ROLES
(
	DATA_ID						INT(16)		    not null AUTO_INCREMENT,
	SUBSCR_ID					INT(16),
	LOGIN						VARCHAR(100),
	PASSWORD					VARCHAR(100),
	DESCRIPTION					VARCHAR(255),

	ACTION_ACT_LIST_ALL			INT(1) default 1,
	ACTION_ACT_LIST				INT(1) default 1,
	ACTION_AGENT_STATUS			INT(1) default 1,
	ACTION_BACKUP				INT(1) default 1,
	ACTION_C2C_ADD				INT(1) default 1,
	ACTION_C2C_DEL				INT(1) default 1,
	ACTION_C2C_LIST				INT(1) default 1,
	ACTION_C2C_UPDATE			INT(1) default 1,
	ACTION_CALLBLAST_ADD		INT(1) default 1,
	ACTION_CALLBLAST_DEL_CACHE	INT(1) default 1,
	ACTION_CALLBLAST_DEL		INT(1) default 1,
	ACTION_CALLBLAST_UPDATE		INT(1) default 1,
	ACTION_CALLOUT_CLEAN		INT(1) default 1,
	ACTION_CALLS_HANGUP			INT(1) default 1,
	ACTION_CALLS_LIST			INT(1) default 1,
	ACTION_CDR_LIST				INT(1) default 1,
	ACTION_CID_ADD				INT(1) default 1,
	ACTION_CID_DEL				INT(1) default 1,
	ACTION_CID_LIST				INT(1) default 1,
	ACTION_CID_UPDATE			INT(1) default 1,
	ACTION_CRM_ADD				INT(1) default 1,
	ACTION_CRM_DEL				INT(1) default 1,
	ACTION_CRM_INFO				INT(1) default 1,
	ACTION_CRM_LIST				INT(1) default 1,
	ACTION_CRM_N_ADD			INT(1) default 1,
	ACTION_CRM_N_DEL			INT(1) default 1,
	ACTION_CRM_N_UPDATE			INT(1) default 1,
	ACTION_CRM_UPDATE			INT(1) default 1,
	ACTION_DASHBOARD_LIST		INT(1) default 1,
	ACTION_DASHBOARD_LOAD_LIST	INT(1) default 1,
	ACTION_DIR_ADD				INT(1) default 1,
	ACTION_DIR_DEL				INT(1) default 1,
	ACTION_DIR_UPDATE			INT(1) default 1,
	ACTION_EXT_BACKUP			INT(1) default 1,
	ACTION_EXTENDED_STAT		INT(1) default 1,
	ACTION_EXT_RESTORE			INT(1) default 1,
	ACTION_EXT_STAT				INT(1) default 1,
	ACTION_FBSHARE				INT(1) default 1,
	ACTION_GET_ITUNES_ALL		INT(1) default 1,
	ACTION_GET_ITUNES			INT(1) default 1,
	ACTION_GET_RSS_ALL			INT(1) default 1,
	ACTION_GET_RSS				INT(1) default 1,
	ACTION_GOTOIF_ADD			INT(1) default 1,
	ACTION_GOTOIF_DEL			INT(1) default 1,
	ACTION_GOTOIF_UPDATE		INT(1) default 1,
	ACTION_INTEGRATION_LIST		INT(1) default 1,
	ACTION_IVRFLOW_LIST			INT(1) default 1,
	ACTION_J_LIST				INT(1) default 1,
	ACTION_LIST_GET				INT(1) default 1,
	ACTION_MACROS_ADD			INT(1) default 1,
	ACTION_MACROS_DEL			INT(1) default 1,
	ACTION_MACROS_LIST			INT(1) default 1,
	ACTION_MACROS_UPDATE		INT(1) default 1,
	ACTION_MENU					INT(1) default 1,
	ACTION_MSG_CLEANUP			INT(1) default 1,
	ACTION_MSG_DELETE			INT(1) default 1,
	ACTION_MSG_DOWNLOAD			INT(1) default 1,
	ACTION_MSG_LIST_ALL			INT(1) default 1,
	ACTION_MSG_LIST				INT(1) default 1,
	ACTION_MSG_STATUS			INT(1) default 1,
	ACTION_MSG_UPLOAD			INT(1) default 1,
	ACTION_MULTIDIALOUT_ADD		INT(1) default 1,
	ACTION_MULTIDIALOUT_DEL		INT(1) default 1,
	ACTION_MULTIDIALOUT_RESET	INT(1) default 1,
	ACTION_MULTIDIALOUT_UPDATE	INT(1) default 1,
	ACTION_PBOOK_ADD			INT(1) default 1,
	ACTION_PBOOK_DEL			INT(1) default 1,
	ACTION_PBOOK_LIST			INT(1) default 1,
	ACTION_PBOOK_UPDATE			INT(1) default 1,
	ACTION_PEER_ADD				INT(1) default 1,
	ACTION_PEER_DEL				INT(1) default 1,
	ACTION_PEER_LIST			INT(1) default 1,
	ACTION_PEER_UPDATE			INT(1) default 1,
	ACTION_PHONE_ADD			INT(1) default 1,
	ACTION_PHONE_DEL			INT(1) default 1,
	ACTION_PHONE_INFO			INT(1) default 1,
	ACTION_PHONE_LIST			INT(1) default 1,
	ACTION_PHONE_UPDATE			INT(1) default 1,
	ACTION_RESTORE				INT(1) default 1,
	ACTION_ROLE_ADD				INT(1) default 0,
	ACTION_ROLE_DEL				INT(1) default 0,
	ACTION_ROLE_LIST			INT(1) default 0,
	ACTION_ROLE_INFO			INT(1) default 0,
	ACTION_ROLE_UPDATE			INT(1) default 0,
	ACTION_ROUTE_ADD			INT(1) default 1,
	ACTION_ROUTE_DEL			INT(1) default 1,
	ACTION_ROUTE_LIST			INT(1) default 1,
	ACTION_ROUTE_UPDATE			INT(1) default 1,
	ACTION_SCHEDULE_ADD			INT(1) default 1,
	ACTION_SCHEDULE_DEL			INT(1) default 1,
	ACTION_SCHEDULE_UPDATE		INT(1) default 1,
	ACTION_START				INT(1) default 1,
	ACTION_SV_UPDATE			INT(1) default 1,
	ACTION_SYSMEDIA_ADD			INT(1) default 1,
	ACTION_SYSMEDIA_DEL			INT(1) default 1,
	ACTION_SYSMEDIA_LIST		INT(1) default 1,
	ACTION_USER_INFO			INT(1) default 1,
	ACTION_USER_UPDATE			INT(1) default 1,
	ACTION_VB_ADD				INT(1) default 1,
	ACTION_VB_CHANGE_TYPE		INT(1) default 1,
	ACTION_VB_CLONE				INT(1) default 1,
	ACTION_VB_DEL				INT(1) default 1,
	ACTION_VB_LIST				INT(1) default 1,
	ACTION_VB_UPDATE			INT(1) default 1,
	ACTION_VB_VIEW				INT(1) default 1,
	ACTION_VOTING_CLEAN			INT(1) default 1,

	ACTION_ROOT_ACCESS			INT(1) default 0,
	ACTION_DEFAULT				INT(1) default 1,
	
	IS_TEMPLATE					INT(1) default 0,

	unique(SUBSCR_ID,LOGIN),
    CONSTRAINT PK_VPBX_ROLES PRIMARY KEY (DATA_ID),
    CONSTRAINT FK_VPBX_ROLES_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'admin','','admin role',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)",
"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'ivr-builder','','ivr builder role',0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1)",
"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'supervisor','','supervisor role',1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1)",
"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'cdrviewer','','cdrviewer role',1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)",
"INSERT INTO VPBX_ROLES(IS_TEMPLATE, LOGIN, PASSWORD, DESCRIPTION, ACTION_ACT_LIST_ALL, ACTION_ACT_LIST, ACTION_AGENT_STATUS, ACTION_BACKUP, ACTION_C2C_ADD, ACTION_C2C_DEL, ACTION_C2C_LIST, ACTION_C2C_UPDATE, ACTION_CALLBLAST_ADD, ACTION_CALLBLAST_DEL_CACHE, ACTION_CALLBLAST_DEL, ACTION_CALLBLAST_UPDATE, ACTION_CALLOUT_CLEAN, ACTION_CALLS_HANGUP, ACTION_CALLS_LIST, ACTION_CDR_LIST, ACTION_CID_ADD, ACTION_CID_DEL, ACTION_CID_LIST, ACTION_CID_UPDATE, ACTION_CRM_ADD, ACTION_CRM_DEL, ACTION_CRM_INFO, ACTION_CRM_LIST, ACTION_CRM_N_ADD, ACTION_CRM_N_DEL, ACTION_CRM_N_UPDATE, ACTION_CRM_UPDATE, ACTION_DASHBOARD_LIST, ACTION_DASHBOARD_LOAD_LIST, ACTION_DIR_ADD, ACTION_DIR_DEL, ACTION_DIR_UPDATE, ACTION_EXT_BACKUP, ACTION_EXTENDED_STAT, ACTION_EXT_RESTORE, ACTION_EXT_STAT, ACTION_FBSHARE, ACTION_GET_ITUNES_ALL, ACTION_GET_ITUNES, ACTION_GET_RSS_ALL, ACTION_GET_RSS, ACTION_GOTOIF_ADD, ACTION_GOTOIF_DEL, ACTION_GOTOIF_UPDATE, ACTION_INTEGRATION_LIST, ACTION_IVRFLOW_LIST, ACTION_J_LIST, ACTION_LIST_GET, ACTION_MACROS_ADD, ACTION_MACROS_DEL, ACTION_MACROS_LIST, ACTION_MACROS_UPDATE, ACTION_MENU, ACTION_MSG_CLEANUP, ACTION_MSG_DELETE, ACTION_MSG_DOWNLOAD, ACTION_MSG_LIST_ALL, ACTION_MSG_LIST, ACTION_MSG_STATUS, ACTION_MSG_UPLOAD, ACTION_MULTIDIALOUT_ADD, ACTION_MULTIDIALOUT_DEL, ACTION_MULTIDIALOUT_RESET, ACTION_MULTIDIALOUT_UPDATE, ACTION_PBOOK_ADD, ACTION_PBOOK_DEL, ACTION_PBOOK_LIST, ACTION_PBOOK_UPDATE, ACTION_PEER_ADD, ACTION_PEER_DEL, ACTION_PEER_LIST, ACTION_PEER_UPDATE, ACTION_PHONE_ADD, ACTION_PHONE_DEL, ACTION_PHONE_INFO, ACTION_PHONE_LIST, ACTION_PHONE_UPDATE, ACTION_RESTORE, ACTION_ROLE_ADD, ACTION_ROLE_DEL, ACTION_ROLE_LIST, ACTION_ROLE_INFO, ACTION_ROLE_UPDATE, ACTION_ROUTE_ADD, ACTION_ROUTE_DEL, ACTION_ROUTE_LIST, ACTION_ROUTE_UPDATE, ACTION_SCHEDULE_ADD, ACTION_SCHEDULE_DEL, ACTION_SCHEDULE_UPDATE, ACTION_START, ACTION_SV_UPDATE, ACTION_SYSMEDIA_ADD, ACTION_SYSMEDIA_DEL, ACTION_SYSMEDIA_LIST, ACTION_USER_INFO, ACTION_USER_UPDATE, ACTION_VB_ADD, ACTION_VB_CHANGE_TYPE, ACTION_VB_CLONE, ACTION_VB_DEL, ACTION_VB_LIST, ACTION_VB_UPDATE, ACTION_VB_VIEW, ACTION_VOTING_CLEAN, ACTION_ROOT_ACCESS, ACTION_DEFAULT) VALUES (1,'phones-admin','','phones-admin role',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)"

],

"558"	=> [
	"ALTER TABLE VPBX_MOH ADD COLUMN GROUP_ID			INT(16) null",
	"ALTER TABLE VPBX_MOH ADD COLUMN SUBSCR_ID			INT(16) null",
	"ALTER TABLE VPBX_MOH ADD CONSTRAINT FK_VPBX_MOH_GR FOREIGN KEY (GROUP_ID) REFERENCES VPBX_GROUPS(GROUP_ID) ON DELETE CASCADE",
	"ALTER TABLE VPBX_MOH ADD CONSTRAINT FK_VPBX_MOH_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE"
],

"557"	=> [
	"ALTER TABLE VPBX_PARTNERS ADD COLUMN DID_MNG			INT(1) 			default 0",
	"UPDATE VPBX_PARTNERS set DID_MNG=1"
],

"556"	=> [
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,HIDE,DATA) VALUES('sipproxy.telphin.com','Telphin.Office',0,\x22\$_[0]->{'fromdomain'}='sipproxy.telphin.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5068';\x22)"
],
	
"555"	=> [
	"INSERT INTO VPBX_VBOXES_DIALOUT_TYPE(ID, NAME, DESCRIPTION) VALUES(13, 'random1', 'random 1')"
],

"553"	=> [
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN CALLBACK_EXT		VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN CALLBACK_TTL		INT(6)"
],
	
"552"	=> [
	"ALTER TABLE VPBX_CDRS ADD COLUMN CALL_ID_SIP VARCHAR(255)"
],

"550"	=> [
	"ALTER TABLE VPBX_ACCOUNTS MODIFY COLUMN STATEMENTS	VARCHAR(50)",
	"update VPBX_ACCOUNTS set STATEMENTS='1;' where STATEMENTS='2'",
	"update VPBX_ACCOUNTS set STATEMENTS='3;' where STATEMENTS='4'",
	"update VPBX_ACCOUNTS set STATEMENTS='1;3;' where STATEMENTS='6'",
	"update VPBX_ACCOUNTS set STATEMENTS='2;' where STATEMENTS='8'",
	"update VPBX_ACCOUNTS set STATEMENTS='1;2;' where STATEMENTS='10'",
	"update VPBX_ACCOUNTS set STATEMENTS='2;3;' where STATEMENTS='12'",
	"update VPBX_ACCOUNTS set STATEMENTS='5;' where STATEMENTS='16'",
	"update VPBX_ACCOUNTS set STATEMENTS='1;5;' where STATEMENTS='18'",
	"update VPBX_ACCOUNTS set STATEMENTS='1;3;5;' where STATEMENTS='26'",
	"update VPBX_ACCOUNTS set STATEMENTS='1;2;3;5;' where STATEMENTS='30'"
],

"548"	=> [
	"ALTER TABLE VPBX_PARTNERS ADD COLUMN TAG VARCHAR(100) unique",
	"update VPBX_PARTNERS set TAG=NAME",
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN PARTNER_TAG VARCHAR(100)",
],

"547"	=> [
"update VPBX_SIPPEERS_TEMPLATES set HIDE = 1, NAME = 'Beeline-OLD' where NAME='Beeline'",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,HIDE,DATA) VALUES('ip.beeline.ru','Beeline',0,\x22\$_[0]->{'REG_EXPIRE'}='60'; \$_[0]->{'REG_USERNAME'} = \$_[0]->{'username'}.'\@ip.beeline.ru';\$_[0]->{'fromdomain'}='ip.beeline.ru';\$_[0]->{'videosupport'}='no';\$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060'; \$_[0]->{'insecure'}='port,invite';\x22)"
],

"545"	=> [
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION) VALUES( 12, 'text','text')"
],

"544"	=> [

"RENAME TABLE VPBX_PARTNERS TO VPBX_PARTNERS_OLD",

"create table VPBX_PARTNERS
(
	ID	            INT(16)		    not null AUTO_INCREMENT,
	NAME			VARCHAR(100)	not null,
	PASSWORD		VARCHAR(100)	not null,
	DESCRIPTION		VARCHAR(255),
	READ_ONLY		INT(1) 			default 0,

    unique			(NAME),
    CONSTRAINT PK_VPBX_PARTNER PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create table VPBX_PARTNERS_GROUP
(
	ID	            INT(16)		    not null AUTO_INCREMENT,
	GROUP_ID		INT(16)			not null,
	PARTNER_ID		INT(16)			not null,

    unique			(GROUP_ID,PARTNER_ID),
    CONSTRAINT PK_VPBX_PARTNER_GRID PRIMARY KEY (ID),
    CONSTRAINT FK_VPBX_PARTNER_GR_N FOREIGN KEY (GROUP_ID) REFERENCES VPBX_GROUPS(GROUP_ID) ON DELETE CASCADE,
    CONSTRAINT FK_VPBX_PARTNER_N FOREIGN KEY (PARTNER_ID) REFERENCES VPBX_PARTNERS(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_PARTNERS ( ID, NAME, PASSWORD, DESCRIPTION, READ_ONLY ) SELECT ID, NAME, PASSWORD, DESCRIPTION, READ_ONLY from VPBX_PARTNERS_OLD",
"INSERT INTO VPBX_PARTNERS_GROUP ( GROUP_ID, PARTNER_ID ) SELECT GROUP_ID, ID AS PARTNER_ID from VPBX_PARTNERS_OLD",
"DROP TABLE VPBX_PARTNERS_OLD"
],

"539"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Journal summary',1,unix_timestamp(), \x22select ACTION '=Action', count(*) as Amount from VPBX_JOURNAL where CREATE_TIMESTAMP > [% DATE_START %] and CREATE_TIMESTAMP < [% DATE_STOP %] group by ACTION\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Activity summary',1,unix_timestamp(), \x22select TYPE '=Activity', count(*) as Amount from VPBX_CDRS_ACTIVITY where CREATE_TIMESTAMP > [% DATE_START %] and CREATE_TIMESTAMP < [% DATE_STOP %] group by TYPE\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Journal actions. Top 10 tenants.',1,unix_timestamp(), \x22select a.ACCESS_CODE, a.FIRST_NAME, a.LAST_NAME, count(*) as 'Amount of actions=' from VPBX_ACCOUNTS a, VPBX_CDRS_ACTIVITY c  where a.ID = c.SUBSCR_ID and c.CREATE_TIMESTAMP > [% DATE_START %] and c.CREATE_TIMESTAMP < [% DATE_STOP %] group by a.ACCESS_CODE order by \`Amount of actions=\` desc limit 10\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Activity. Top 10 tenants.',1,unix_timestamp(), \x22select a.ACCESS_CODE, a.FIRST_NAME, a.LAST_NAME, count(*) as 'Amount of activities=' from VPBX_ACCOUNTS a, VPBX_JOURNAL c  where a.ID = c.SUBSCR_ID and c.CREATE_TIMESTAMP > [% DATE_START %] and c.CREATE_TIMESTAMP < [% DATE_STOP %]  group by a.ACCESS_CODE order by \`Amount of activities=\` desc limit 10\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"536"	=> [
	"ALTER TABLE VPBX_SIPPEERS ADD COLUMN qualify   varchar(5) default NULL",
	"ALTER TABLE VPBX_SIPPEERS ADD COLUMN EXTERNAL_NUM    VARCHAR(50)     default ''"
],

"534"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN URL_SUCCESS			TEXT(1024)"
],

"533"	=> [
	"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_EXT_CB_CALLS			INT(10) default 10"
],

"532"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN WAIT_NOTES INT(1) default 0",
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN ANSW_CALL_URL	TEXT(1024)"
],
	
"531"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN DTMF_LOG INT(1) default 0",
	"ALTER table VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN DTMF_LOG VARCHAR(20)",
	"UPDATE VPBX_VBOXES_CALLBLAST_DATA set DTMF_LOG=CALL_NOTE, CALL_NOTE=''",
	"UPDATE VPBX_VBOXES_CALLBLAST set DTMF_LOG=WAIT_NOTES, WAIT_NOTES=''"
],

"530"	=> [
	"ALTER table VPBX_CID_FILTERS ADD INDEX I_FILTERS_CID (CID)"
],

"529"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST_DATA ADD INDEX I_CB_DATA_NAME (NAME)"
],

"528"	=> [
	"UPDATE VPBX_VBOXES_CORE set TYPE = 1 where TYPE = 24 or TYPE = 28",
	"DELETE from VPBX_VBOX_TYPE where ID=24 or ID = 28"
],

"526"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN MISS_CALL_URL	TEXT(1024)"
],

"525"	=> [
	"ALTER table VPBX_VBOXES_MULTIDIALOUT ADD COLUMN CPS INT(3) default 0"
],

"524"	=> [
	"ALTER table VPBX_VBOXES_CALLBLAST ADD COLUMN WAIT_NOTES INT(1) default 0",
	"ALTER table VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN CALL_NOTE VARCHAR(20)"
],

"523"	=> [
"alter table VPBX_PARTNERS add column READ_ONLY INT(1)  default 0"
],

"520"	=> [
"alter table VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_IDT_T (ID,FILE_TYPE)"
],

"519"	=> [
"create	table IF NOT EXISTS VPBX_CDRS_ACTIVITY_ARCHIVE
(
	SERVER_ID			VARCHAR(100) not null,
	CALL_ID				VARCHAR(32),
    
    SUBSCR_ID			INT(16)     not null,
	CALLER_ID			VARCHAR(100),
	CALLED_ID			VARCHAR(255),

	TYPE				VARCHAR(25),
	EXT_NUMBER			VARCHAR(255) not null,

	START_TIMESTAMP		DECIMAL(15,5),
	STOP_TIMESTAMP		DECIMAL(15,5),
	CREATE_TIMESTAMP	DECIMAL(15,5),

	DATA				TEXT(2048),
	STOP_DATE			DATETIME,

	INDEX I_CDR_A_EXT_NUMBER (EXT_NUMBER,SUBSCR_ID),
	INDEX I_CDR_A_TYPE (TYPE,SUBSCR_ID),
	INDEX I_CDR_A_CALL_ID (CALL_ID),
	INDEX I_CDR_A_CALLER_ID (CALLER_ID),
	INDEX I_CDR_A_START_T (START_TIMESTAMP,SUBSCR_ID),
	INDEX I_CDR_A_STOP_T (STOP_TIMESTAMP,SUBSCR_ID)
)	ENGINE=INNODB DEFAULT CHARSET=utf8

	PARTITION BY HASH(MONTH(STOP_DATE)) 
	PARTITIONS 12",

"DROP TRIGGER IF EXISTS cdr_a_cleanup_triger",

"CREATE TRIGGER cdr_a_cleanup_triger BEFORE DELETE ON VPBX_CDRS_ACTIVITY FOR EACH ROW
	INSERT INTO VPBX_CDRS_ACTIVITY_ARCHIVE
		( 
			SERVER_ID,
			CALL_ID,
			SUBSCR_ID,
			CALLER_ID,
			CALLED_ID,
			TYPE,
			EXT_NUMBER,
			START_TIMESTAMP,
			STOP_TIMESTAMP,
			CREATE_TIMESTAMP,
			DATA,
			STOP_DATE
		)
	VALUES
		( 
			OLD.SERVER_ID,
			OLD.CALL_ID,
			OLD.SUBSCR_ID,
			OLD.CALLER_ID,
			OLD.CALLED_ID,
			OLD.TYPE,
			OLD.EXT_NUMBER,
			OLD.START_TIMESTAMP,
			OLD.STOP_TIMESTAMP,
			OLD.CREATE_TIMESTAMP,
			OLD.DATA,
			FROM_UNIXTIME(OLD.STOP_TIMESTAMP)
		)",

"create or replace view VPBX_CDRS_ACTIVITY_ALL 
	(
			SERVER_ID,
			CALL_ID,
			SUBSCR_ID,
			CALLER_ID,
			CALLED_ID,
			TYPE,
			EXT_NUMBER,
			START_TIMESTAMP,
			STOP_TIMESTAMP,
			CREATE_TIMESTAMP,
			DATA
		)
	as
select 
	SERVER_ID,
	CALL_ID,
	SUBSCR_ID,
	CALLER_ID,
	CALLED_ID,
	TYPE,
	EXT_NUMBER,
	START_TIMESTAMP,
	STOP_TIMESTAMP,
	CREATE_TIMESTAMP,
	DATA
from
	VPBX_CDRS_ACTIVITY
union
select 
	SERVER_ID,
	CALL_ID,
	SUBSCR_ID,
	CALLER_ID,
	CALLED_ID,
	TYPE,
	EXT_NUMBER,
	START_TIMESTAMP,
	STOP_TIMESTAMP,
	CREATE_TIMESTAMP,
	DATA
from
	VPBX_CDRS_ACTIVITY_ARCHIVE"
],

"517"	=> [
"create	table IF NOT EXISTS VPBX_CDRS_ARCHIVE
(
	SERVER_ID			VARCHAR(100) not null,
	CALL_ID				VARCHAR(32),
	CALL_TYPE			VARCHAR(15),
    
    SUBSCR_ID			INT(16)     not null,
	CALLER_ID			VARCHAR(100),
	CALLED_ID			VARCHAR(255),
	CNAM				VARCHAR(255),

	START_TIMESTAMP		DECIMAL(15,5),
	STOP_TIMESTAMP		DECIMAL(15,5),
	CREATE_TIMESTAMP	DECIMAL(15,5),

	COST				FLOAT	not null default 0,

	SYS_COST			FLOAT	not null default 0,
	CURRENCY_ID			INT(16)	not null default 1,
	PROCESS_TIMESTAMP	DECIMAL(15,5),

	DATA				TEXT(2048),

	STOP_DATE			DATETIME,

	INDEX I_CDR_C_CALL_TYPE (CALL_TYPE),
	INDEX I_CDR_C_CALLER_ID (CALLER_ID),
	INDEX I_CDR_C_CALLED_ID (CALLED_ID),
	INDEX I_CDR_C_STOP_T (STOP_TIMESTAMP,SUBSCR_ID)
)	ENGINE=INNODB DEFAULT CHARSET=utf8

	PARTITION BY HASH(MONTH(STOP_DATE)) 
	PARTITIONS 12",

"DROP TRIGGER IF EXISTS cdr_cleanup_triger",

"CREATE TRIGGER cdr_cleanup_triger BEFORE DELETE ON VPBX_CDRS FOR EACH ROW
	INSERT INTO VPBX_CDRS_ARCHIVE
		( 
			SERVER_ID,
			CALL_ID,
			CALL_TYPE,
  		  	SUBSCR_ID,
			CALLER_ID,
			CALLED_ID,
			CNAM,
			START_TIMESTAMP,
			STOP_TIMESTAMP,
			CREATE_TIMESTAMP,
			COST,
			SYS_COST,
			CURRENCY_ID,
			PROCESS_TIMESTAMP,
			DATA,
			STOP_DATE
		)
	VALUES
		( 
			OLD.SERVER_ID,
			OLD.CALL_ID,
			OLD.CALL_TYPE,
  		  	OLD.SUBSCR_ID,
			OLD.CALLER_ID,
			OLD.CALLED_ID,
			OLD.CNAM,
			OLD.START_TIMESTAMP,
			OLD.STOP_TIMESTAMP,
			OLD.CREATE_TIMESTAMP,
			OLD.COST,
			OLD.SYS_COST,
			OLD.CURRENCY_ID,
			OLD.PROCESS_TIMESTAMP,
			OLD.DATA,
			FROM_UNIXTIME(OLD.STOP_TIMESTAMP)
		)",
"create or replace view VPBX_CDRS_ALL
    (SERVER_ID,CALL_ID,CALL_TYPE,SUBSCR_ID,CALLER_ID,CALLED_ID,CNAM,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,COST,SYS_COST,CURRENCY_ID,PROCESS_TIMESTAMP,DATA)
    as
select
    SERVER_ID,CALL_ID,CALL_TYPE,SUBSCR_ID,CALLER_ID,CALLED_ID,CNAM,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,COST,SYS_COST,CURRENCY_ID,PROCESS_TIMESTAMP,DATA
from
    VPBX_CDRS
union
select
    SERVER_ID,CALL_ID,CALL_TYPE,SUBSCR_ID,CALLER_ID,CALLED_ID,CNAM,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,COST,SYS_COST,CURRENCY_ID,PROCESS_TIMESTAMP,DATA
from
    VPBX_CDRS_ARCHIVE"
],

"515"	=> [
"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION) VALUES(5, 'Busy signal')"
],

"514"	=> [
"ALTER TABLE VPBX_SIPPEERS_TEMPLATES ADD COLUMN HIDE INT(1) default 0"
],

"513"	=> [
"ALTER TABLE VPBX_PHONE_BOOK ADD COLUMN RESPONSIBLE	VARCHAR(255)"
],

"511"	=> [
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_CALL_ID (CALL_ID)",
],

"510"	=> [
	"ALTER TABLE VPBX_ACCOUNTS MODIFY COLUMN CUSTOM_VARS TEXT(4096)",
	"ALTER TABLE VPBX_ACCOUNTS MODIFY COLUMN CUSTOM_RULES TEXT(4096)"
],

"509"	=> [
"ALTER TABLE VPBX_VBOXES_RECORD ADD COLUMN REC_SESSION         INT(1)          not null default 0"
],

"508"	=> [
"update VPBX_NODES set DOWNLOAD_IP = concat('https://',DOWNLOAD_IP)"
],

"507"	=> [
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN DEPEND_QUEUE VARCHAR(255)",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN DEPEND_QUEUE_CAPACITY	FLOAT(4,2) default 1",
],

"506"	=> [
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN USE_AMD	INT(1)	default 0"
],

"505"	=> [
	"INSERT INTO VPBX_VBOXES_DIALOUT_TYPE(ID, NAME, DESCRIPTION) VALUES(11, 'mostduration', 'most duration')",
	"INSERT INTO VPBX_VBOXES_DIALOUT_TYPE(ID, NAME, DESCRIPTION) VALUES(12, 'mostcalls', 'mostcalls')"
],

"504"	=> [
	"ALTER table VPBX_VBOXES_MULTIDIALOUT ADD COLUMN URL_STAT TEXT(1024)",
],

"503"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN RECORD_RINGS	INT(1) default 0",
],

"501"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN HOTDESK_PIN VARCHAR(50) default ''",
	"alter table VPBX_SIPPEERS ADD COLUMN HOTDESK_CID VARCHAR(80) default ''"
],

"498"	=> [
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN CUSTOM_VARS TEXT(1024)"
],
	
"496"	=> [
	"alter table VPBX_CRM_NOTES add column FILE_NAME VARCHAR(255)"
],

"495"	=> [
	"alter table VPBX_CRM_NOTES add column CALL_DETAIL TEXT(512)",
	"alter table VPBX_CRM_NOTES add column CALL_STATUS INT(1) default 0"
],

"494"	=> [
"alter table VPBX_DIDS add column CHANNELS		INT(16)			not null default -1"
],

"492"	=> [
	"alter table VPBX_VBOXES_DISA add column GOTO_IF_FAIL    VARCHAR(255)"
],

"491"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN WEB_SECRET VARCHAR(50) default ''",
	"update VPBX_SIPPEERS set WEB_SECRET=concat(substr(md5(rand(unix_timestamp())),-6),substr(secret,-5),substr(md5(rand(unix_timestamp())),-5)) where PEER_TYPE = 0"
],

"490"	=> [
	"UPDATE VPBX_VBOXES_RECORD_FTYPE set DESCRIPTION = 'VoiceMail' where ID in(30,40)"
],

"488"	=> [
	"alter table VPBX_VBOXES_DISA add column CALLERID_NUM	VARCHAR(100)"
],

"487"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES CHANGE COLUMN CALLERID_PREF CALLERID_NAME VARCHAR(100)",
	"ALTER TABLE VPBX_VBOXES_QUEUES CHANGE COLUMN CALLERIDNUM_PREF CALLERID_NUM VARCHAR(100)",
	"UPDATE VPBX_VBOXES_QUEUES set CALLERID_NAME=CONCAT(CALLERID_NAME,': % VAR:CNAM %'),CALLERID_NUM=CONCAT(CALLERID_NUM,'% VAR:CID %')"
],

"486"	=> [
	"update VPBX_JOURNAL set EXT_NUMBER='*' where EXT_NUMBER='-1'" 
],

"485"	=> [
	"delete from VPBX_SIPPEERS_TEMPLATES where HOST='voip.domru.ru' and NAME='DOM.RU'",
	"delete from VPBX_SIPPEERS_TEMPLATES where HOST='sip.zadarma.com'",
	"delete from VPBX_SIPPEERS_TEMPLATES where HOST='voip.mtt.ru'",
	"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('voip.domru.ru','DOM.RU',\x22". MIME::Base64::decode('JF9bMF0tPnsnZnJvbWRvbWFpbid9PSd2b2lwLmRvbXJ1LnJ1JzsgJF9bMF0tPnsndmlkZW9zdXBwb3J0J309J25vJzsgJF9bMF0tPnsnZnJvbXVzZXInfT0kX1swXS0+eydkZWZhdWx0dXNlcid9PSRfWzBdLT57J3VzZXJuYW1lJ307IG15ICRzdWZmX2xlbmdodCA9IDc7IGlmICggJF9bMF0tPnsnREVTQ1JJUFRJT04nfSA9fiBtIy8oXFxkKykkIyApIHsgJHN1ZmZfbGVuZ2h0ID0gJDEgfTsgJHN1ZmZfbGVuZ2h0ID0gLTEgKiAkc3VmZl9sZW5naHQ7ICRfWzBdLT57J1JFR19BVVRITkFNRSd9ID0gc3Vic3RyKCRfWzBdLT57J3VzZXJuYW1lJ30sJHN1ZmZfbGVuZ2h0KTsgJF9bMF0tPnsnZHRtZm1vZGUnfT0ncmZjMjgzMyc7ICRfWzBdLT57J2Rpc2FsbG93J309J2FsbCc7ICRfWzBdLT57J2luc2VjdXJlJ309J3BvcnQsaW52aXRlJzsgJF9bMF0tPnsnYWxsb3cnfT0nYWxhdyx1bGF3JzsgJF9bMF0tPnsnbmF0J309J3llcyc7ICRfWzBdLT57J3BvcnQnfT0nNTA2MCc7Cg==') ."\x22)",
	"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sip.zadarma.com','Zadarma',\x22\$_[0]->{'fromdomain'}='sip.zadarma.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'nat'}='yes'; \$_[0]->{'port'}='5060';\x22)",
	#"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('vpbx.sipout.net','SipOut.Net',\x22\$_[0]->{'fromdomain'}='vpbx.sipout.net'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='invite'; \$_[0]->{'allow'}='g722,ulaw,alaw'; \$_[0]->{'nat'}='yes'; \$_[0]->{'port'}='5060';\x22)",
	"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('voip.mtt.ru','YouMagic MTT',\x22\$_[0]->{'fromdomain'}='voip.mtt.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='port,invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060';\x22)",
],

"482"	=> [
	"UPDATE VPBX_REPORTS set QUERY=\x22select START_TIMESTAMP,STOP_TIMESTAMP,CALL_TYPE from VPBX_CDRS cdr_h_s where STOP_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %]\x22  where NAME='Concurrent calls by hours/types'",
	"UPDATE VPBX_REPORTS set QUERY=\x22select START_TIMESTAMP,STOP_TIMESTAMP from VPBX_CDRS cdr_h where STOP_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %]\x22 where NAME='Concurrent calls by hours'",
	"UPDATE VPBX_REPORTS set QUERY=\x22select START_TIMESTAMP,STOP_TIMESTAMP from VPBX_CDRS cdr_d where STOP_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %]\x22 where NAME='Concurrent calls by days'",
	"UPDATE VPBX_REPORTS set QUERY=\x22select a.ACCESS_CODE, a.FIRST_NAME as '=FNAME', a.LAST_NAME as '=LNAME', count(*) as 'Files=', round((sum(f.FILE_SIZE)/1024/1024),3) as 'Size (MB)=' from VPBX_ACCOUNTS a, VPBX_VBOXES_RECORD_FILES f, VPBX_VBOXES_CORE v where a.ID = v.SUBSCR_ID and v.ID = f.ID group by a.ACCESS_CODE order by \`Size (MB)=\` desc limit 200\x22 where NAME = 'Disk utilisation. Top 200 tenants'"
],

"480"	=> [
    "alter table VPBX_SIPPEERS modify fullcontact varchar(160) NOT NULL DEFAULT ''"
],

"479"	=> [
	"drop trigger if exists clean_did"
],

"477"	=> [
	"alter table VPBX_VBOXES_MULTIDIALOUT add column DYNAMIC_CID			INT(1)		default 0"
],

"474"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN FWD_AFTER		INT(6)			default 0",
],

"473"	=> [
	"ALTER table VPBX_VBOXES_TTS ADD COLUMN TTS_C_TYPE		VARCHAR(255)	default ''",
],

"472"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Audio files by size',1,unix_timestamp(), \x22select '< 0.5 M / ~  1 min' as 'File size=', count(*) 'Files=', round(sum(f.FILE_SIZE)/1024/1024,2) 'Total size MB=' from VPBX_VBOXES_RECORD_FILES f where f.FILE_SIZE <= 524288 and f.IS_VOICE = 1 union select '< 1.0 M / ~  2 min' as 'File size=', count(*) 'Files=', round(sum(f.FILE_SIZE)/1024/1024,2) 'Total size MB=' from VPBX_VBOXES_RECORD_FILES f where f.FILE_SIZE <= 1048576 and f.FILE_SIZE > 524288 and f.IS_VOICE = 1 union select '< 2.5 M / ~ 5 min' as 'File size=', count(*) 'Files=', round(sum(f.FILE_SIZE)/1024/1024,2) 'Total size MB=' from VPBX_VBOXES_RECORD_FILES f where f.FILE_SIZE <= 2621440 and f.FILE_SIZE > 1048576 and f.IS_VOICE = 1 union select '< 5.0 M / ~ 10 min' as 'File size=', count(*) 'Files=', round(sum(f.FILE_SIZE)/1024/1024,2) 'Total size MB=' from VPBX_VBOXES_RECORD_FILES f where f.FILE_SIZE < 5242880 and f.FILE_SIZE > 2621440 and f.IS_VOICE = 1 union select '> 5.0 M' as 'File size=', count(*) 'Files=', round(sum(f.FILE_SIZE)/1024/1024,2) 'Total size MB=' from VPBX_VBOXES_RECORD_FILES f where f.FILE_SIZE > 5242880 and f.IS_VOICE = 1\x22, 3600 )"
],

"469"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP,POST_FILTER) values('Incoming calls by region',1,unix_timestamp(), \x22select DATA from VPBX_CDRS cdr_d where (START_TIMESTAMP > [% DATE_START %] or STOP_TIMESTAMP > [% DATE_START %] ) and START_TIMESTAMP < [% DATE_STOP %] and CALL_TYPE = 'incoming'\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22, \x22". MIME::Base64::decode('c3ViIHsKICAgIG15ICRpbl9kYXRhID0gc2hpZnQ7CgogICAgdW5sZXNzICggc2NhbGFyKEAkaW5fZGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICggW10sIFsnPVJlZ2lvbicsJ0NhbGxzJ10gKTsKICAgIH0KCiAgICBteSAlcmVzdWx0OwoKICAgIGZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHsKICAgICAgICBteSAkcmVmID0gJGluX2RhdGEtPlskaV07CiAgICAgICAgbXkgJGRhdGEgPSAkcmVmLT57J0RBVEEnfTsKICAgICAgICBpZiAoICRkYXRhID1+IC9SRUdJT049KFteLF0rKS8gKSB7CiAgICAgICAgICAgIG15IEBjaHVua3MgPSBzcGxpdCgvXFxzKlxcL1xccyovLCQxKTsKICAgICAgICAgICAgJHJlc3VsdHsgJGNodW5rc1skI2NodW5rc10gfSsrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXN1bHR7J3Vua25vd24nfSsrOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkb3V0X2RhdGEgPSBbXTsKCiAgICBmb3JlYWNoIG15ICRrICggc29ydCBrZXlzICVyZXN1bHQgKSB7CiAgICAgICAgcHVzaCBAJG91dF9kYXRhLCB7CiAgICAgICAgICAgICc9UmVnaW9uJyA9PiAkaywKICAgICAgICAgICAgQ2FsbHMgPT4gJHJlc3VsdHska30KICAgICAgICB9OwogICAgfQogICAgcmV0dXJuICggJG91dF9kYXRhLCBbJz1SZWdpb24nLCdDYWxscyddICk7Cn07Cg==') ."\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP,POST_FILTER) values('Transit calls by region',1,unix_timestamp(), \x22select DATA from VPBX_CDRS cdr_d where (START_TIMESTAMP > [% DATE_START %] or STOP_TIMESTAMP > [% DATE_START %] ) and START_TIMESTAMP < [% DATE_STOP %] and CALL_TYPE = 'transit'\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22, \x22". MIME::Base64::decode('c3ViIHsKICAgIG15ICRpbl9kYXRhID0gc2hpZnQ7CgogICAgdW5sZXNzICggc2NhbGFyKEAkaW5fZGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICggW10sIFsnPVJlZ2lvbicsJ0NhbGxzJ10gKTsKICAgIH0KCiAgICBteSAlcmVzdWx0OwoKICAgIGZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHsKICAgICAgICBteSAkcmVmID0gJGluX2RhdGEtPlskaV07CiAgICAgICAgbXkgJGRhdGEgPSAkcmVmLT57J0RBVEEnfTsKICAgICAgICBpZiAoICRkYXRhID1+IC9SRUdJT049KFteLF0rKS8gKSB7CiAgICAgICAgICAgIG15IEBjaHVua3MgPSBzcGxpdCgvXFxzKlxcL1xccyovLCQxKTsKICAgICAgICAgICAgJHJlc3VsdHsgJGNodW5rc1skI2NodW5rc10gfSsrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXN1bHR7J3Vua25vd24nfSsrOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkb3V0X2RhdGEgPSBbXTsKCiAgICBmb3JlYWNoIG15ICRrICggc29ydCBrZXlzICVyZXN1bHQgKSB7CiAgICAgICAgcHVzaCBAJG91dF9kYXRhLCB7CiAgICAgICAgICAgICc9UmVnaW9uJyA9PiAkaywKICAgICAgICAgICAgQ2FsbHMgPT4gJHJlc3VsdHska30KICAgICAgICB9OwogICAgfQogICAgcmV0dXJuICggJG91dF9kYXRhLCBbJz1SZWdpb24nLCdDYWxscyddICk7Cn07Cg==') ."\x22)"
],

"465"	=> [
"create	table IF not exists VPBX_GEO_INFO
(
	F_N 		BIGINT(64),
	L_N 		BIGINT(64),
	RNG 		int(10),
	OP 			VARCHAR(255),
	DSC 		VARCHAR(255)
) ENGINE=MyISAM DEFAULT CHARSET=utf8"
],

"464"	=> [
"ALTER TABLE VPBX_VBOXES_CORE MODIFY COLUMN GREET_REPEAT_DELAY	FLOAT(5,2) not null default 1",
"ALTER TABLE VPBX_ACCOUNTS MODIFY COLUMN I_DIGIT_TIMEOUT	FLOAT(4,2) not null default 1.5"
],

"462"	=> [
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN DESCRIPTION TEXT(1024)",
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN CREATE_TIME TIMESTAMP default CURRENT_TIMESTAMP()"
],

"459"	=> [
"ALTER TABLE VPBX_VBOXES_CORE  MODIFY COLUMN NEXTEXTENSION   VARCHAR(255) default 'hangup'",
],

"458"	=> [
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('pbx.zadarma.com','ZadarmaPBX',\x22\$_[0]->{'fromdomain'}='pbx.zadarma.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'nat'}='yes'; \$_[0]->{'port'}='5060';\x22)"
],

"456"	=> [
	"alter table VPBX_VBOXES_FAXTX add column FAX_URL TEXT(1024)"
],

"455"	=> [
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN Q_INIT_URL TEXT(1024)"
],

"453"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN CO_LIMIT INT(5) NOT NULL default 0",
	"UPDATE VPBX_SIPPEERS set CO_LIMIT = 3 where PEER_TYPE=0",
	"ALTER TABLE VPBX_SIPPEERS  MODIFY COLUMN setvar VARCHAR(1024) default NULL",
	"UPDATE VPBX_SIPPEERS set setvar = concat('CO_L=3;',setvar) where PEER_TYPE=0"
],

"448"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Disk utilisation. Top 200 tenants',1,unix_timestamp(),\x22select a.ACCESS_CODE, a.FIRST_NAME as '=FNAME', a.LAST_NAME as '=LNAME', count(*) as 'Files=', round((f.FILE_SIZE/1024/1024),3) as 'Size (MB)=' from VPBX_ACCOUNTS a, VPBX_VBOXES_RECORD_FILES f, VPBX_VBOXES_CORE v where a.ID = v.SUBSCR_ID and v.ID = f.ID group by a.ACCESS_CODE order by \`Size (MB)=\` desc limit 200\x22,300)"
],

"446"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,POST_FILTER) values('SIP Phones',1,unix_timestamp(),\x22select a.ACCESS_CODE, a.FIRST_NAME, a.LAST_NAME, sp.regseconds from VPBX_SIPPEERS sp, VPBX_ACCOUNTS a where a.ID = sp.SUBSCR_ID and  PEER_TYPE=0\x22,3600,\x22". MIME::Base64::decode('c3ViIHtteSAkaW5fZGF0YSA9IHNoaWZ0O215ICRyZXN1bHQgPSB7fTt1bmxlc3MgKCBzY2FsYXIoQCRpbl9kYXRhKSApIHtyZXR1cm4gKCBbXSwgWydBQ0NFU1NfQ09ERT0nLCc9Rk5BTUUnLCc9TE5BTUUnLCdQSE9ORVM9JywnT05MSU5FPSddICk7fWZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHtteSAkcmVmID0gJGluX2RhdGEtPlskaV07dW5sZXNzICggZXhpc3RzICRyZXN1bHQtPnsgJHJlZi0+eydBQ0NFU1NfQ09ERSd9IH0gKSB7JHJlc3VsdC0+eyAkcmVmLT57J0FDQ0VTU19DT0RFJ30gfSA9IHsnQUNDRVNTX0NPREU9JyA9PiAkcmVmLT57J0FDQ0VTU19DT0RFJ30sJz1GTkFNRScgPT4gJHJlZi0+eydGSVJTVF9OQU1FJ30sJz1MTkFNRScgPT4gJHJlZi0+eydMQVNUX05BTUUnfSwnUEhPTkVTPScgPT4gMCwnT05MSU5FPScgPT4gMCB9O30kcmVzdWx0LT57ICRyZWYtPnsnQUNDRVNTX0NPREUnfSB9LT57J1BIT05FUz0nfSsrO2lmICggJHJlZi0+eydyZWdzZWNvbmRzJ30gPiB0aW1lICkgeyRyZXN1bHQtPnsgJHJlZi0+eydBQ0NFU1NfQ09ERSd9IH0tPnsnT05MSU5FPSd9Kys7fX1teSAkb3V0X2RhdGEgPSBbXTtmb3JlYWNoIG15ICRrICggc29ydCBrZXlzICUkcmVzdWx0ICkge3B1c2ggQCRvdXRfZGF0YSwgeyAleyRyZXN1bHQtPnska319IH07fSByZXR1cm4gKCAkb3V0X2RhdGEsIFsnQUNDRVNTX0NPREU9JywnPUZOQU1FJywnPUxOQU1FJywnUEhPTkVTPScsJ09OTElORT0nXSApO30K') ."\x22)",
	"DELETE from VPBX_REPORTS where NAME='Online phones'"
],

"445"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Online phones',1,unix_timestamp(),\x22select a.ACCESS_CODE as 'ACCESS_CODE=', a.FIRST_NAME as '=FNAME', a.LAST_NAME as '=LNAME', count(*) as 'PHONES=' from VPBX_SIPPEERS sp, VPBX_ACCOUNTS a where a.ID = sp.SUBSCR_ID  and unix_timestamp() < regseconds and PEER_TYPE=0 group by SUBSCR_ID\x22,300)",
	"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('mpbx.sip.beeline.ru','BeeLine',\x22\$_[0]->{'REG_EXPIRE'}='60'; \$_[0]->{'REG_USERNAME'} = \$_[0]->{'username'}.'\@mpbx.sip.beeline.ru'; \$_[0]->{'fromdomain'}='mpbx.sip.beeline.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060'; \$_[0]->{'insecure'}='port,invite';\x22)"
],

"443"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Daily call cost summary',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, round(sum(SYS_COST),2) 'Cost' from  VPBX_CDRS c where c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d')\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"442"	=> [
	"INSERT INTO VPBX_VBOXES_DIALOUT_TYPE(ID, NAME, DESCRIPTION) VALUES(10, 'random3', 'random 3')"
],

"441"	=> [
	"ALTER table VPBX_TARIFF ADD COLUMN BILLING_URL	VARCHAR(1024)"
],

"440"	=> [
"UPDATE VPBX_CDRS set CNAM = '' where START_TIMESTAMP > 1453492247 and CNAM = 'unknown'",
],

"438"	=> [
"create	table VPBX_CRM_CUSTOMERS
(
	DATA_ID				INT(16)	not null AUTO_INCREMENT,
    SUBSCR_ID			INT(16) not null,
	
	C_NAME				VARCHAR(255),
	C_VARS				VARCHAR(255),
	C_NOTE				TEXT(2048),

	CREATE_TIMESTAMP	INT(16),
	
	PRIMARY KEY (DATA_ID),

	CONSTRAINT FK_VPBX_CUSTOMER_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create  table VPBX_CRM_NOTES
(
	DATA_ID             INT(16) not null AUTO_INCREMENT,
	SUBSCR_ID           INT(16) not null,
	CUSTOMER_ID         INT(16) not null,
	CALL_ID             VARCHAR(32),
	NOTE                TEXT(4096),
	TYPE                VARCHAR(50),

	CREATE_TIMESTAMP	INT(16),

	CONSTRAINT FK_VPBX_CRM_NOTE_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
	CONSTRAINT FK_VPBX_CRM_NOTE_CUSTOMER FOREIGN KEY (CUSTOMER_ID) REFERENCES VPBX_CRM_CUSTOMERS(DATA_ID) ON DELETE CASCADE,

	CONSTRAINT PK_VPBX_CRM_NOTE_DATA PRIMARY KEY (DATA_ID),

	INDEX I_CRM_N_CALL_ID (CALL_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"430"	=> [
"SELECT 'Please wait, while CDRs will be updated, it may be take some time'",
"ALTER TABLE VPBX_CDRS ADD COLUMN CNAM VARCHAR(255)",
"UPDATE VPBX_CDRS set CNAM = SUBSTRING_INDEX(SUBSTRING_INDEX(CALLER_ID,\x22' <\x22,1),\x22'\x22,-1) where CALLER_ID like \x22'%\x22",
"UPDATE VPBX_CDRS set CALLER_ID = SUBSTRING_INDEX(SUBSTRING_INDEX(CALLER_ID,'<',-1),'>',1) where CALLER_ID like \x22'%\x22"
],

"428"	=> [
"alter table VPBX_PHONE_BOOK ADD COLUMN	CRM_CUSTOMER_ID INT(16)"
],

"427"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN	REG_AUTHNAME	VARCHAR(80)		NOT NULL DEFAULT ''",
],

"426"	=> [
	"alter table VPBX_ACCOUNTS modify column MSG_STORE_PERIOD VARCHAR(255)	not null default '0'"
],

"425"	=> [
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('[87]954\\\\d{9}','ru-satellite')"
],

"424"	=> [
"alter table VPBX_VBOXES_DIALOUT add column MISS_CALL_ALERT	INT(1)			default 0",
"alter table VPBX_VBOXES_QUEUES add column MISS_CALL_ALERT	INT(1)			default 0"
],

"423"	=> [
"UPDATE version set table_version='4' where table_name='presentity'",
"UPDATE version set table_version='8' where table_name='location'",
"Alter table location add column server_id INT(11) DEFAULT 0 NOT NULL",
"Alter table location add column connection_id INT(11) DEFAULT 0 NOT NULL",
"Alter table location add column keepalive INT(11) DEFAULT 0 NOT NULL",
"Alter table location add column partition INT(11) DEFAULT 0 NOT NULL",
],

"421"	=> [
"ALTER table presentity add column priority INT(11) DEFAULT 0 NOT NULL"
],

"420"	=> [
	"ALTER table VPBX_VBOXES_TTS ADD COLUMN TTS_REPEAT_CNT	INT(8) not null default 1",
	"UPDATE VPBX_VBOXES_TTS set TTS_REPEAT_CNT = 0 where QUIET_MODE=1",
	"ALTER table VPBX_VBOXES_TTS drop COLUMN QUIET_MODE"
],

"419"	=> [
"UPDATE VPBX_VBOXES_RECORD_FTYPE set NAME='RXFAX' where ID = 42"
],

"418"	=> [
"UPDATE VPBX_ACCOUNTS set STATEMENTS=30 where STATEMENTS=14"
],

"417"	=> [
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD COLUMN CALL_ID VARCHAR(32)",
],

"416"	=> [
"UPDATE VPBX_VBOXES_RECORD_FILES set FILE_TYPE=43 where FILE_NAME like '\%.dat'",
"UPDATE VPBX_VBOXES_RECORD_FILES set FILE_TYPE=42 where ( FILE_NAME like '\%.tif' or FILE_NAME like '\%.pdf' ) and ( FILE_TYPE = 30 or FILE_TYPE = 40 )"
],

"415"	=> [
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION) VALUES(41, 'MONITOR', 'Call recording')",
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION) VALUES(42, 'RXFAX', 'Fax message')",
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION) VALUES(43, 'DTMF', 'DTMF input')"
],

"414"	=> [

"create table VPBX_ROUTES_TEMPLATES (
	ID			INT(16) NOT NULL AUTO_INCREMENT,
	
	PATTERN				VARCHAR(255),
	NAME				VARCHAR(255),

	PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('[87]9\\\\d{9}','call 2 cell')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('810\\\\d{9}.*','call 2 internationals')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('[87]\\\\d{10}','call 2 inter city')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('[87]800\\\\d{7}','call 2 toll free')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('[87]809\\\\d{7}','call 2 toll')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('\\\\d{7}','call 2 7digits')",
"insert into VPBX_ROUTES_TEMPLATES(PATTERN,NAME) values('\\\\d{6}','call 2 6digits')"
],

"409"	=> [
	"ALTER TABLE VPBX_ROUTES MODIFY COLUMN DEFCID VARCHAR(50) default ''",
	"ALTER TABLE VPBX_SIPPEERS MODIFY COLUMN DEFCID VARCHAR(50) default ''"
],
	
"408"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP,POST_FILTER) values('Concurrent calls by hours/types',1,unix_timestamp(),\x22select START_TIMESTAMP,STOP_TIMESTAMP,CALL_TYPE from VPBX_CDRS cdr_h_s where (START_TIMESTAMP > [% DATE_START %] or STOP_TIMESTAMP > [% DATE_START %] ) and START_TIMESTAMP < [% DATE_STOP %]\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22,\x22". MIME::Base64::decode('c3ViIHsKCW15ICRpbl9kYXRhID0gc2hpZnQ7CgoJbXkgJGludGVydmFsX3N1YnN0ciA9IDEzOwoKCW15ICR0cyA9IFtdOwoKCW15ICRuYW1lcyA9IHsgCgkJCQlhbGwgCQk9PiAwLCAKCQkJCWxvY2FsCQk9PiAxLAoJCQkJdHJhbnNpdAkJPT4gMiwKCQkJCWludGVybmFsCT0+IDMsCgkJCQljYWxsYmFjawk9PiA0LAoJCQkJY2FsbGJsYXN0CT0+IDUsCgkJCQljbGljazJjYWxsCT0+IDYsCgkJCQlhbGFybWNsb2NrCT0+IDcsCgkJCQlzZXJ2aWNlIAk9PiA4LAoJCQkJaW5jb21pbmcJPT4gOSwKCQkJCXVua25vd24JCT0+IDEwCgl9OwoKCXVubGVzcyAoIHNjYWxhcihAJGluX2RhdGEpICkgewoJCXJldHVybiAoIFtdLCBbJ1BlcmlvZCcsJ0NhbGxzJywnTWF4Q2FsbHNEYXRlJ10gKTsKCX0KCglteSAkbWluX3N0YXJ0ID0gaW50KCRpbl9kYXRhLT5bMF0tPnsnU1RBUlRfVElNRVNUQU1QJ30pOwoKCWZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHsKCQlteSAkcmVmID0gJGluX2RhdGEtPlskaV07CgkJZm9yZWFjaCAoIGludCgkcmVmLT57J1NUQVJUX1RJTUVTVEFNUCd9KSAuLiBpbnQoJHJlZi0+eydTVE9QX1RJTUVTVEFNUCd9KSApIHsKCQkJaWYgKCAkXy0kbWluX3N0YXJ0ICA+IDAgKSB7CgkJCQkkdHMtPlskXy0kbWluX3N0YXJ0XS0+WzBdKys7CgkJCQkkdHMtPlskXy0kbWluX3N0YXJ0XS0+WyAkbmFtZXMtPnsgJHJlZi0+eydDQUxMX1RZUEUnfSB9IHx8ICRuYW1lcy0+eyd1bmtub3duJ30gXSsrOwoJCQl9CgkJfQoJfQoJbXkgJHJlcF9yZXN1bHQgPSB7fTsKCglteSAkdGltZV9mb3JtYXQgPSBzdWIgewoJCW15IEB0aW1lcyA9IGxvY2FsdGltZSggc2hpZnQgKTsKCQkkdGltZXNbNV0rPTE5MDA7CgkJJHRpbWVzWzRdKz0xOwoJCXJldHVybiBzcHJpbnRmKCclNC40ZC0lMi4yZC0lMi4yZCAlMi4yZDolMi4yZDolMi4yZCcsJHRpbWVzWzVdLCR0aW1lc1s0XSwkdGltZXNbM10sJHRpbWVzWzJdLCR0aW1lc1sxXSwkdGltZXNbMF0pOwoJfTsKCglmb3IgKCBteSAkaSA9IDA7ICRpIDw9ICQjJHRzOyAkaSsrICkgewoJCW15ICAka2V5ID0gc3Vic3RyKCYkdGltZV9mb3JtYXQoJG1pbl9zdGFydCskaSksIDAsICRpbnRlcnZhbF9zdWJzdHIpOwoKCQlpZiAoIGRlZmluZWQgJHRzLT5bJGldIGFuZCAkcmVwX3Jlc3VsdC0+eyRrZXl9LT5bMV0gPCAkdHMtPlskaV0tPlswXSApIHsKCQkJJHJlcF9yZXN1bHQtPnska2V5fSA9IFsgJG1pbl9zdGFydCskaSBdOyAKCQkJZm9yICggMCAuLiAxMCApIHsKCQkJCXB1c2ggQHskcmVwX3Jlc3VsdC0+eyRrZXl9fSwgKCR0cy0+WyRpXS0+WyRfXSB8fCAwKTsKCQkJfQoJCX0KCX0KCW15ICRvdXRfZGF0YSA9IFtdOwoKCWZvcmVhY2ggbXkgJGsgKCBzb3J0IGtleXMgJSRyZXBfcmVzdWx0ICkgewoJCXB1c2ggQCRvdXRfZGF0YSwgeyAKCQkJCQlQZXJpb2QgPT4gJGssCgkJCQkJTWF4Q2FsbHNEYXRlID0+IHNjYWxhcigmJHRpbWVfZm9ybWF0KCRyZXBfcmVzdWx0LT57JGt9LT5bMF0pKSwgCgkJCQkJYWxsIAkJPT4gJHJlcF9yZXN1bHQtPnska30tPlsxXSwgCgkJCQkJbG9jYWwJCT0+ICRyZXBfcmVzdWx0LT57JGt9LT5bMl0sCgkJCQkJdHJhbnNpdAkJPT4gJHJlcF9yZXN1bHQtPnska30tPlszXSwKCQkJCQlpbnRlcm5hbAk9PiAkcmVwX3Jlc3VsdC0+eyRrfS0+WzRdLAoJCQkJCWNhbGxiYWNrCT0+ICRyZXBfcmVzdWx0LT57JGt9LT5bNV0sCgkJCQkJY2FsbGJsYXN0CT0+ICRyZXBfcmVzdWx0LT57JGt9LT5bNl0sCgkJCQkJY2xpY2syY2FsbAk9PiAkcmVwX3Jlc3VsdC0+eyRrfS0+WzddLAoJCQkJCWFsYXJtY2xvY2sJPT4gJHJlcF9yZXN1bHQtPnska30tPls4XSwKCQkJCQlzZXJ2aWNlIAk9PiAkcmVwX3Jlc3VsdC0+eyRrfS0+WzldLAoJCQkJCWluY29taW5nCT0+ICRyZXBfcmVzdWx0LT57JGt9LT5bMTBdLAoJCQkJCXVua25vd24JCT0+ICRyZXBfcmVzdWx0LT57JGt9LT5bMTFdCgkJCQl9OwoJfQoJcmV0dXJuICggJG91dF9kYXRhLCBbJ1BlcmlvZCcsJ01heENhbGxzRGF0ZScsJ2FsbCcsJ2luY29taW5nJywnbG9jYWwnLCd0cmFuc2l0JywnaW50ZXJuYWwnLCdjYWxsYmFjaycsJ2NhbGxibGFzdCcsJ2NsaWNrMmNhbGwnLCdhbGFybWNsb2NrJywnc2VydmljZScsJ3Vua25vd24nXSApOwp9Owo=') ."\x22)", 
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP,POST_FILTER) values('Concurrent calls by hours',1,unix_timestamp(),\x22select START_TIMESTAMP,STOP_TIMESTAMP from VPBX_CDRS cdr_h where (START_TIMESTAMP > [% DATE_START %] or STOP_TIMESTAMP > [% DATE_START %] ) and START_TIMESTAMP < [% DATE_STOP %]\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22,\x22". MIME::Base64::decode('c3ViIHsKCW15ICRpbl9kYXRhID0gc2hpZnQ7CgoJbXkgJGludGVydmFsX3N1YnN0ciA9IDEzOwoKCW15ICR0cyA9IFtdOwoKCXVubGVzcyAoIHNjYWxhcihAJGluX2RhdGEpICkgewoJCXJldHVybiAoIFtdLCBbJ1BlcmlvZCcsJ0NhbGxzJywnTWF4Q2FsbHNEYXRlJ10gKTsKCX0KCglteSAkbWluX3N0YXJ0ID0gaW50KCRpbl9kYXRhLT5bMF0tPnsnU1RBUlRfVElNRVNUQU1QJ30pOwoKCWZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHsKCQlteSAkcmVmID0gJGluX2RhdGEtPlskaV07CgkJZm9yZWFjaCAoIGludCgkcmVmLT57J1NUQVJUX1RJTUVTVEFNUCd9KSAuLiBpbnQoJHJlZi0+eydTVE9QX1RJTUVTVEFNUCd9KSApIHsKCQkJaWYgKCAkXy0kbWluX3N0YXJ0ICA+IDAgKSB7CgkJCQkkdHMtPlskXy0kbWluX3N0YXJ0XSsrOwoJCQl9CgkJfQoJfQoJbXkgJHJlcF9yZXN1bHQgPSB7fTsKCglteSAkdGltZV9mb3JtYXQgPSBzdWIgewoJCW15IEB0aW1lcyA9IGxvY2FsdGltZSggc2hpZnQgKTsKCQkkdGltZXNbNV0rPTE5MDA7CgkJJHRpbWVzWzRdKz0xOwoJCXJldHVybiBzcHJpbnRmKCclNC40ZC0lMi4yZC0lMi4yZCAlMi4yZDolMi4yZDolMi4yZCcsJHRpbWVzWzVdLCR0aW1lc1s0XSwkdGltZXNbM10sJHRpbWVzWzJdLCR0aW1lc1sxXSwkdGltZXNbMF0pOwoJfTsKCglmb3IgKCBteSAkaSA9IDA7ICRpIDw9ICQjJHRzOyAkaSsrICkgewoJCW15ICAka2V5ID0gc3Vic3RyKCYkdGltZV9mb3JtYXQoJG1pbl9zdGFydCskaSksIDAsICRpbnRlcnZhbF9zdWJzdHIpOwoKCQlpZiAoIGRlZmluZWQgJHRzLT5bJGldIGFuZCAkcmVwX3Jlc3VsdC0+eyAka2V5IH0tPlswXSA8ICR0cy0+WyRpXSApIHsKCQkJJHJlcF9yZXN1bHQtPnsgJGtleSAgfSA9IFsgJHRzLT5bJGldLCAkbWluX3N0YXJ0KyRpIF07IAoJCX0KCX0KCW15ICRvdXRfZGF0YSA9IFtdOwoKCWZvcmVhY2ggbXkgJGsgKCBzb3J0IGtleXMgJSRyZXBfcmVzdWx0ICkgewoJCXB1c2ggQCRvdXRfZGF0YSwgeyAKCQkJCQlQZXJpb2QgPT4gJGssCgkJCQkJTWF4Q2FsbHNEYXRlID0+IHNjYWxhcigmJHRpbWVfZm9ybWF0KCRyZXBfcmVzdWx0LT57JGt9LT5bMV0pKSwgCgkJCQkJQ2FsbHMgPT4gJHJlcF9yZXN1bHQtPnska30tPlswXSAKCQkJCX07Cgl9CglyZXR1cm4gKCAkb3V0X2RhdGEsIFsnUGVyaW9kJywnQ2FsbHMnLCdNYXhDYWxsc0RhdGUnXSApOwp9Owo=') ."\x22)",
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP,POST_FILTER) values('Concurrent calls by days',1,unix_timestamp(),\x22select START_TIMESTAMP,STOP_TIMESTAMP from VPBX_CDRS cdr_d where (START_TIMESTAMP > [% DATE_START %] or STOP_TIMESTAMP > [% DATE_START %] ) and START_TIMESTAMP < [% DATE_STOP %]\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22,\x22". MIME::Base64::decode('c3ViIHsKCW15ICRpbl9kYXRhID0gc2hpZnQ7CgoJbXkgJGludGVydmFsX3N1YnN0ciA9IDEwOwoKCW15ICR0cyA9IFtdOwoKCXVubGVzcyAoIHNjYWxhcihAJGluX2RhdGEpICkgewoJCXJldHVybiAoIFtdLCBbJ1BlcmlvZCcsJ0NhbGxzJywnTWF4Q2FsbHNEYXRlJ10gKTsKCX0KCglteSAkbWluX3N0YXJ0ID0gaW50KCRpbl9kYXRhLT5bMF0tPnsnU1RBUlRfVElNRVNUQU1QJ30pOwoKCWZvciAoIG15ICRpID0gMDsgJGkgPD0gJCMkaW5fZGF0YTsgJGkrKyApIHsKCQlteSAkcmVmID0gJGluX2RhdGEtPlskaV07CgkJZm9yZWFjaCAoIGludCgkcmVmLT57J1NUQVJUX1RJTUVTVEFNUCd9KSAuLiBpbnQoJHJlZi0+eydTVE9QX1RJTUVTVEFNUCd9KSApIHsKCQkJaWYgKCAkXy0kbWluX3N0YXJ0ICA+IDAgKSB7CgkJCQkkdHMtPlskXy0kbWluX3N0YXJ0XSsrOwoJCQl9CgkJfQoJfQoJbXkgJHJlcF9yZXN1bHQgPSB7fTsKCglteSAkdGltZV9mb3JtYXQgPSBzdWIgewoJCW15IEB0aW1lcyA9IGxvY2FsdGltZSggc2hpZnQgKTsKCQkkdGltZXNbNV0rPTE5MDA7CgkJJHRpbWVzWzRdKz0xOwoJCXJldHVybiBzcHJpbnRmKCclNC40ZC0lMi4yZC0lMi4yZCAlMi4yZDolMi4yZDolMi4yZCcsJHRpbWVzWzVdLCR0aW1lc1s0XSwkdGltZXNbM10sJHRpbWVzWzJdLCR0aW1lc1sxXSwkdGltZXNbMF0pOwoJfTsKCglmb3IgKCBteSAkaSA9IDA7ICRpIDw9ICQjJHRzOyAkaSsrICkgewoJCW15ICAka2V5ID0gc3Vic3RyKCYkdGltZV9mb3JtYXQoJG1pbl9zdGFydCskaSksIDAsICRpbnRlcnZhbF9zdWJzdHIpOwoKCQlpZiAoIGRlZmluZWQgJHRzLT5bJGldIGFuZCAkcmVwX3Jlc3VsdC0+eyAka2V5IH0tPlswXSA8ICR0cy0+WyRpXSApIHsKCQkJJHJlcF9yZXN1bHQtPnsgJGtleSAgfSA9IFsgJHRzLT5bJGldLCAkbWluX3N0YXJ0KyRpIF07IAoJCX0KCX0KCW15ICRvdXRfZGF0YSA9IFtdOwoKCWZvcmVhY2ggbXkgJGsgKCBzb3J0IGtleXMgJSRyZXBfcmVzdWx0ICkgewoJCXB1c2ggQCRvdXRfZGF0YSwgeyAKCQkJCQlQZXJpb2QgPT4gJGssCgkJCQkJTWF4Q2FsbHNEYXRlID0+IHNjYWxhcigmJHRpbWVfZm9ybWF0KCRyZXBfcmVzdWx0LT57JGt9LT5bMV0pKSwgCgkJCQkJQ2FsbHMgPT4gJHJlcF9yZXN1bHQtPnska30tPlswXSAKCQkJCX07Cgl9CglyZXR1cm4gKCAkb3V0X2RhdGEsIFsnUGVyaW9kJywnQ2FsbHMnLCdNYXhDYWxsc0RhdGUnXSApOwp9Owo=') ."\x22)"
],

"402"	=> [
	"ALTER TABLE VPBX_REPORTS ADD COLUMN POST_FILTER TEXT",
],

"401"	=> [
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Calls by hours (previous day)',1,unix_timestamp(),\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d-%H') Date, SERVER_ID NODE, count(*) 'Calls=', round((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', round((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=', round(sum(SYS_COST),2) 'Cost (in units)=' from VPBX_CDRS where START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d-%H'),SERVER_ID\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"399"	=> [
	"ALTER table VPBX_VBOXES_DISA  DROP COLUMN SPY_MODE",
],

"398" => [
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN RECORD_CALL	INT(1)	default 0"
],

"397"	=> [
	"drop trigger ins_reg_time",
	"CREATE trigger ins_reg_time BEFORE UPDATE ON VPBX_SIPPEERS 
FOR EACH ROW
BEGIN
	IF NEW.regseconds is not null THEN
		IF NEW.regseconds > 0 THEN
			SET NEW.REG_TIME = UNIX_TIMESTAMP();
		ELSE
			SET NEW.useragent = OLD.useragent;
			SET NEW.ipaddr = OLD.ipaddr;
		END IF;
	END IF;
END;"
],

"396"	=> [
"ALTER TABLE VPBX_GROUPS ADD COLUMN ASR_ENGINE VARCHAR(16)"
],

"395"	=> [
"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD COLUMN USE_VOICE_SEARCH	INT(1) default 0"
],

"394"	=> [
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_CTR INT(1) default 0",
],

"393"	=> [
"delete from VPBX_REPORTS where NAME='Call terminated'",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Call terminated',1,unix_timestamp(),\x22select 'PBX (die)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (die)%'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'PBX (unauthorized)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (unauthorized)%'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'PBX (c-limit)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (c-limit)%' and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'PBX (u-c-limit)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (u-c-limit)%'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'PBX (locked)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (locked)%' and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'PBX' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'in - IVR' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=IVR%'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'out - SRC' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=SRC%'  and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'out - DST' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=DST%' and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] union select 'in - USER' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=USER%' and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %]\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Calls by groups',1,unix_timestamp(),\x22select g.GROUP_NAME 'Group', date_format(FROM_UNIXTIME(c.START_TIMESTAMP),'%Y-%m-%d') 'Date', count(*) 'Calls=', round((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP))/60,1) 'Minutes=', round((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=', round(sum(c.SYS_COST),2) 'Cost (in units)=' from VPBX_CDRS c, VPBX_GROUPS g, VPBX_ACCOUNTS a where c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] and c.SUBSCR_ID = a.ID and a.GROUP_ID = g.GROUP_ID group by g.GROUP_NAME,date_format(FROM_UNIXTIME(c.START_TIMESTAMP),'%Y-%m-%d')\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"392"	=> [
"delete from VPBX_SIPPEERS_TEMPLATES where HOST='sbc.megafon.ru'",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sbc.megafon.ru','Multiphon',\x22\$_[0]->{'REG_EXPIRE'}='60'; \$_[0]->{'REG_USERNAME'} = \$_[0]->{'username'}.'\@multifon.ru'; \$_[0]->{'fromdomain'}='multifon.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='inband'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw'; \$_[0]->{'port'}='5060'; \$_[0]->{'insecure'}='port,invite';\x22)",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN REG_USERNAME    VARCHAR(80)     NOT NULL DEFAULT ''"
],

"391"	=> [
"ALTER TABLE VPBX_ROUTES ADD COLUMN LAST_ROUTE INT(1) default 0"
],

"390"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Call terminated',1,unix_timestamp(),\x22select 'PBX (die)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (die)%' union select 'PBX (unauthorized)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (unauthorized)%' union select 'PBX (c-limit)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (c-limit)%' union select 'PBX (u-c-limit)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (u-c-limit)%' union select 'PBX (locked)' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX (locked)%' union select 'PBX' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=PBX' union select 'in - IVR' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=IVR%' union select 'out - SRC' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=SRC%' union select 'out - DST' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=DST%' union select 'in - USER' as '=Term', count(*) as 'count=' from VPBX_CDRS where DATA like '%TERM=USER%'\x22,300)"
],

"389"	=> [
"alter table VPBX_GROUPS modify column MAX_SIZE_MSGS BIGINT(16) default 0",
"alter table VPBX_ONLINE_CALLS add column STATUS INT(1) not null default 0"
],

"387"	=> [
"
create table VPBX_ONLINE_CALLS
(

	SERVER_ID			VARCHAR(100) not null,
	CALL_ID				VARCHAR(32),
	CALL_TYPE			VARCHAR(15),
    
    SUBSCR_ID			INT(16) not null,
	CALLER_ID			VARCHAR(100),
	CALLED_ID			VARCHAR(255),
	ACCESS_CODE			VARCHAR(100) not null,

	START_TIMESTAMP		INT(16),
	
	AST_ID  			VARCHAR(100),

	unique(AST_ID,CALL_ID),
	
	INDEX I_OC_SERVER_ID (SERVER_ID),
	INDEX I_OC_CALL_ID (CALL_ID),
	INDEX I_OC_SUBSCRIBER_ID (SUBSCR_ID),
	INDEX I_OC_ACCESS_CODE (ACCESS_CODE)
) ENGINE=MEMORY DEFAULT CHARSET=utf8
"
],

"384"	=> [
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN CUSTOM_RULES	TEXT(1024)"
],

"383"	=> [
	"ALTER table VPBX_VBOXES_TTS ADD COLUMN NO_WAIT			INT(1) not null default 0",
],

"382"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Phones UA',1,unix_timestamp(),\x22select useragent '=User agent',count(*) accounts from VPBX_SIPPEERS  where PEER_TYPE=0 group by useragent order by accounts desc\x22,300)"
],

"380"	=> [
	"ALTER table VPBX_VBOXES_MULTIDIALOUT ADD COLUMN WAIT_NOTES INT(1) default 0",
	"ALTER table VPBX_VBOXES_MULTIDIALOUT_DATA ADD COLUMN CALL_NOTE VARCHAR(255)",
],

"379"	=> [
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN CID_URL VARCHAR(255)"
],

"378"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Dropped calls /c-limit/ (previous day)',1,unix_timestamp(),\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) 'Calls=' from VPBX_CDRS where DATA like '%TERM=PBX (c-limit)%' and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'),SERVER_ID\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"376"	=> [
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD COLUMN CALLEDID VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_CALLERID (CALLERID)",
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_CALLEDID (CALLEDID)"
],

"375"	=> [
"alter table VPBX_VBOXES_WEBVAR ADD  COLUMN DEFAULT_VAR			VARCHAR(255)"
],

"374"	=> [
"
CREATE trigger clean_did AFTER DELETE ON VPBX_DIDS
FOR EACH ROW
BEGIN
	update VPBX_SIPPEERS set INC_EXT = '0' where INC_EXT = concat('DID',OLD.DID) and SUBSCR_ID = OLD.SUBSCR_ID; 
END
"
],

"373"	=> [
	"alter table VPBX_SIPPEERS MODIFY COLUMN DND				INT(11)	default 0"
],

"372"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN	DND				INT(1)			not null default 0",
	"alter table VPBX_SIPPEERS ADD COLUMN	FWD_NUM			VARCHAR(255)	default ''"
],

"371"	=> [
	"alter table VPBX_SIPPEERS ADD COLUMN EMAIL			VARCHAR(255)	default ''",
	"alter table VPBX_VBOXES_DISA add column PHONE_MODE		INT(1)			default 0"
],

"370"	=> [
"CREATE OR replace view VPBX_SIPPEERS_PHONES 
	as
select
	*
from
	VPBX_SIPPEERS
where PEER_TYPE = 0",

"CREATE OR replace view VPBX_SIPPEERS_PEERS
	as
select
	*
from
	VPBX_SIPPEERS
where PEER_TYPE = 1",

"CREATE OR replace view subscriber  ( id, username, domain, password, email_address, ha1, ha1b, rpid )
	as
select
	DATA_ID, 
	name,
	'virtual-pbx',
	secret,
	'',
	md5(concat(name,':virtual-pbx:',secret)),
	md5(concat(name,'\@virtual-pbx:virtual-pbx:',secret)),
	NULL
from
	VPBX_SIPPEERS
where type='friend' and PEER_TYPE = 0"
],

"368"	=> [
"INSERT INTO version (table_name, table_version) values ('presentity','3')",
"CREATE TABLE presentity (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    username VARCHAR(64) NOT NULL,
    domain VARCHAR(64) NOT NULL,
    event VARCHAR(64) NOT NULL,
    etag VARCHAR(64) NOT NULL,
    expires INT(11) NOT NULL,
    received_time INT(11) NOT NULL,
    body BLOB NOT NULL,
    sender VARCHAR(128) NOT NULL,
    CONSTRAINT presentity_idx UNIQUE (username, domain, event, etag)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"CREATE INDEX presentity_expires ON presentity (expires)",
"CREATE INDEX account_idx ON presentity (username, domain, event)",
"INSERT INTO version (table_name, table_version) values ('active_watchers','11')",
"CREATE TABLE active_watchers (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    presentity_uri VARCHAR(128) NOT NULL,
    watcher_username VARCHAR(64) NOT NULL,
    watcher_domain VARCHAR(64) NOT NULL,
    to_user VARCHAR(64) NOT NULL,
    to_domain VARCHAR(64) NOT NULL,
    event VARCHAR(64) DEFAULT 'presence' NOT NULL,
    event_id VARCHAR(64),
    to_tag VARCHAR(64) NOT NULL,
    from_tag VARCHAR(64) NOT NULL,
    callid VARCHAR(255) NOT NULL,
    local_cseq INT(11) NOT NULL,
    remote_cseq INT(11) NOT NULL,
    contact VARCHAR(128) NOT NULL,
    record_route TEXT,
    expires INT(11) NOT NULL,
    status INT(11) DEFAULT 2 NOT NULL,
    reason VARCHAR(64) NOT NULL,
    version INT(11) DEFAULT 0 NOT NULL,
    socket_info VARCHAR(64) NOT NULL,
    local_contact VARCHAR(128) NOT NULL,
    from_user VARCHAR(64) NOT NULL,
    from_domain VARCHAR(64) NOT NULL,
    updated INT(11) NOT NULL,
    updated_winfo INT(11) NOT NULL,
    CONSTRAINT active_watchers_idx UNIQUE (callid, to_tag, from_tag)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"CREATE INDEX active_watchers_expires ON active_watchers (expires)",
"CREATE INDEX active_watchers_pres ON active_watchers (presentity_uri, event)",
"CREATE INDEX updated_idx ON active_watchers (updated)",
"CREATE INDEX updated_winfo_idx ON active_watchers (updated_winfo, presentity_uri)",
"INSERT INTO version (table_name, table_version) values ('watchers','3')",
"CREATE TABLE watchers (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    presentity_uri VARCHAR(128) NOT NULL,
    watcher_username VARCHAR(64) NOT NULL,
    watcher_domain VARCHAR(64) NOT NULL,
    event VARCHAR(64) DEFAULT 'presence' NOT NULL,
    status INT(11) NOT NULL,
    reason VARCHAR(64),
    inserted_time INT(11) NOT NULL,
    CONSTRAINT watcher_idx UNIQUE (presentity_uri, watcher_username, watcher_domain, event)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"INSERT INTO version (table_name, table_version) values ('xcap','4')",
"CREATE TABLE xcap (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    username VARCHAR(64) NOT NULL,
    domain VARCHAR(64) NOT NULL,
    doc MEDIUMBLOB NOT NULL,
    doc_type INT(11) NOT NULL,
    etag VARCHAR(64) NOT NULL,
    source INT(11) NOT NULL,
    doc_uri VARCHAR(255) NOT NULL,
    port INT(11) NOT NULL,
    CONSTRAINT doc_uri_idx UNIQUE (doc_uri)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"CREATE INDEX account_doc_type_idx ON xcap (username, domain, doc_type)",
"CREATE INDEX account_doc_type_uri_idx ON xcap (username, domain, doc_type, doc_uri)",
"CREATE INDEX account_doc_uri_idx ON xcap (username, domain, doc_uri)",
"INSERT INTO version (table_name, table_version) values ('pua','7')",
"CREATE TABLE pua (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    pres_uri VARCHAR(128) NOT NULL,
    pres_id VARCHAR(255) NOT NULL,
    event INT(11) NOT NULL,
    expires INT(11) NOT NULL,
    desired_expires INT(11) NOT NULL,
    flag INT(11) NOT NULL,
    etag VARCHAR(64) NOT NULL,
    tuple_id VARCHAR(64),
    watcher_uri VARCHAR(128) NOT NULL,
    call_id VARCHAR(255) NOT NULL,
    to_tag VARCHAR(64) NOT NULL,
    from_tag VARCHAR(64) NOT NULL,
    cseq INT(11) NOT NULL,
    record_route TEXT,
    contact VARCHAR(128) NOT NULL,
    remote_contact VARCHAR(128) NOT NULL,
    version INT(11) NOT NULL,
    extra_headers TEXT NOT NULL,
    CONSTRAINT pua_idx UNIQUE (etag, tuple_id, call_id, from_tag)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"CREATE INDEX expires_idx ON pua (expires)",
"CREATE INDEX dialog1_idx ON pua (pres_id, pres_uri)",
"CREATE INDEX dialog2_idx ON pua (call_id, from_tag)",
"CREATE INDEX record_idx ON pua (pres_id)"
],

"367"	=> [
	"alter table VPBX_SIPPEERS MODIFY COLUMN useragent varchar(60) DEFAULT NULL"
],

"366"	=> [
"CREATE TABLE location (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    ruid VARCHAR(64) DEFAULT '' NOT NULL,
    username VARCHAR(64) DEFAULT '' NOT NULL,
    domain VARCHAR(64) DEFAULT NULL,
    contact VARCHAR(255) DEFAULT '' NOT NULL,
    received VARCHAR(128) DEFAULT NULL,
    path VARCHAR(512) DEFAULT NULL,
    expires DATETIME DEFAULT '2030-05-28 21:32:15' NOT NULL,
    q FLOAT(10,2) DEFAULT 1.0 NOT NULL,
    callid VARCHAR(255) DEFAULT 'Default-Call-ID' NOT NULL,
    cseq INT(11) DEFAULT 1 NOT NULL,
    last_modified DATETIME DEFAULT '1900-01-01 00:00:01' NOT NULL,
    flags INT(11) DEFAULT 0 NOT NULL,
    cflags INT(11) DEFAULT 0 NOT NULL,
    user_agent VARCHAR(255) DEFAULT '' NOT NULL,
    socket VARCHAR(64) DEFAULT NULL,
    methods INT(11) DEFAULT NULL,
    instance VARCHAR(255) DEFAULT NULL,
    reg_id INT(11) DEFAULT 0 NOT NULL,
    CONSTRAINT ruid_idx UNIQUE (ruid)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"CREATE INDEX account_contact_idx ON location (username, domain, contact)",
"CREATE INDEX expires_idx ON location (expires)",

"CREATE TABLE location_attrs (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    ruid VARCHAR(64) DEFAULT '' NOT NULL,
    username VARCHAR(64) DEFAULT '' NOT NULL,
    domain VARCHAR(64) DEFAULT NULL,
    aname VARCHAR(64) DEFAULT '' NOT NULL,
    atype INT(11) DEFAULT 0 NOT NULL,
    avalue VARCHAR(255) DEFAULT '' NOT NULL,
    last_modified DATETIME DEFAULT '1900-01-01 00:00:01' NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"CREATE INDEX account_record_idx ON location_attrs (username, domain, ruid)",
"CREATE INDEX last_modified_idx ON location_attrs (last_modified)",

"INSERT INTO version (table_name, table_version) values( 'location', 6 )",
"INSERT INTO version (table_name, table_version) values ('location_attrs',1)",

"CREATE trigger ins_reg_time_kam_upd AFTER UPDATE ON location
FOR EACH ROW
BEGIN
	UPDATE VPBX_SIPPEERS 
		SET 
			VPBX_SIPPEERS.useragent = new.user_agent, 
			VPBX_SIPPEERS.REG_TIME=UNIX_TIMESTAMP(), 
			regseconds=UNIX_TIMESTAMP(NEW.expires) 
		where VPBX_SIPPEERS.name=NEW.username; 
END",

"CREATE trigger ins_reg_time_kam_ins AFTER INSERT ON location
FOR EACH ROW
BEGIN
	UPDATE VPBX_SIPPEERS 
		SET 
			VPBX_SIPPEERS.useragent = new.user_agent, 
			VPBX_SIPPEERS.REG_TIME=UNIX_TIMESTAMP(), 
			regseconds=UNIX_TIMESTAMP(NEW.expires) 
		where VPBX_SIPPEERS.name=NEW.username; 
END"
],

"365"	=> [
	"alter table VPBX_SIPPEERS add column REG_TIME		INT(11)			NOT NULL default 0",
	"CREATE trigger ins_reg_time BEFORE UPDATE ON VPBX_SIPPEERS 
FOR EACH ROW
BEGIN
	IF NEW.regseconds is not null THEN
		IF NEW.regseconds > 0 THEN
			SET NEW.REG_TIME = UNIX_TIMESTAMP();
		END IF;
	END IF;
END;"
],

"364"	=> [
"DELETE FROM VPBX_REPORTS where NAME='Billing - Top 10 users (previous day)'",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Billing - Top 10 users (previous day)',1,unix_timestamp(),\x22select a.ACCESS_CODE, count(*) as Calls, round((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP))/60,1) 'Minutes=', round(sum(SYS_COST),2) 'Cost (in units)=' from VPBX_CDRS c,  VPBX_ACCOUNTS a where a.ID = c.SUBSCR_ID and c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] group by a.ACCESS_CODE order by round(sum(SYS_COST),2) desc limit 10\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],
	
"363"	=> [
"ALTER TABLE VPBX_ROUTES ADD COLUMN SCHEDULE_EXT VARCHAR(255) default ''",
],

"362"	=> [
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Billing - Top 10 users (previous day)',1,unix_timestamp(),\x22select a.ACCESS_CODE, count(*) as Calls, round((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP))/60,1) 'Minutes=', round(sum(SYS_COST),2) 'Cost (in units)=' from VPBX_CDRS c,  VPBX_ACCOUNTS a where a.ID = c.SUBSCR_ID and c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] group by a.ACCESS_CODE order by round(sum(SYS_COST),2) desc limit 10\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"361"	=> [
	"ALTER TABLE VPBX_CLICK2CALL ADD COLUMN CALL_LIMIT INT(10) default 0"
],

"360"	=> [
"create table VPBX_DIDS_SIPDOMAINS
(
	ID	            INT(16)		    not null AUTO_INCREMENT,

    SUBSCR_ID		INT(16)     	not null,
	DOMAIN			VARCHAR(255)	not null,

    unique			    (DOMAIN),
    CONSTRAINT FK_VPBX_DOMAINS_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
    CONSTRAINT PK_VPBX_DOMAINS PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8
"
],

"359"	=> [
"UPDATE VPBX_GROUPS SET SUB_TEMPLATE_DIR='' where SUB_TEMPLATE_DIR='xvb.RU-menu'",
],
	
"358"	=> [
"ALTER TABLE VPBX_VBOXES_WEBVAR ADD COLUMN MAX_SILENCE INT(3) not null default 0",
],

"357"	=>	[
"ALTER TABLE VPBX_VBOXES_VOTING ADD COLUMN VAR_NAME VARCHAR(255)",
],

"356"	=>	[
"create	table VPBX_VBOXES_MULTIDIALOUT
(
	ID				INT(16)		    not null,

	MOH_ID				INT(16)		not null default 0,
	RING_TIMEOUT		INT(3)		default 30,
	RETRYDIAL_INTERVAL	INT(3)		default 0,
	RETRYDIAL_LOOPS		INT(3)		default 0,
	SAY_CALLEDID		INT(1)		default 0,
	CONFIRM_CALL		INT(1)		default 0,
	RECORD_CALL			INT(1)		default 0,
	KEEP_MSG			INT(1)		default 1,
	SEND_ATTACH			INT(1)		default 0,
	URL					TEXT(1024),

	unique(ID),
    CONSTRAINT FK_VPBX_VBOXES_MULTIDIALOUT_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_MULTIDIALOUT FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_VBOXES_MULTIDIALOUT_DATA
(
	ID			        INT(16)		 not null,

	DATA_ID				INT(16)		 not null AUTO_INCREMENT,
	NAME                VARCHAR(255) not null,
    PHONE_NUMBER		VARCHAR(255) not null,
	USER_VARS			VARCHAR(255),

	CREATE_TIMESTAMP	INT(16) not null,
	PROCESS_TIMESTAMP	INT(16) not null default 0,

	CALL_STATUS			CHAR(20) not null default 'wait',
	ATTEMPT				INT(4) not null default 0,

	CALL_ID				VARCHAR(32),
	DURATION			INT(16) not null default 0,

	unique(DATA_ID),
	unique(ID,PHONE_NUMBER),

	INDEX I_CB_DATA_PROCESS_T (PROCESS_TIMESTAMP),
	INDEX I_CB_DATA_CREATE_T (CREATE_TIMESTAMP),
	INDEX I_CB_DATA_STATUS (CALL_STATUS),

	CONSTRAINT FK_VPBX_VBOXES_MULTIDIALOUT_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION) VALUES(31, 'MultiDialout', 'MultiDialout')",

"delete from VPBX_REPORTS where NAME='IVR outgoing call direction (previous day)'",

"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('IVR outgoing call direction (previous day)',1,unix_timestamp(),\x22select  'phone' GW,  count(*) 'Calls=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'MultiDialout', 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=phone, %' group by  GW UNION select  'peer' GW,  count(*) 'Calls=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'MultiDialout', 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=%' and   DATA not like '%, GW=direct, %' and DATA not like '%, GW=phone, %' and  DATA not like '%, GW=system, %' group by  GW UNION select  'direct' GW,  count(*) 'Calls=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'MultiDialout', 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=direct, %' group by  GW UNION select  'system' GW,  count(*) 'Calls=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  round((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY  where   TYPE in ( 'MultiDialout', 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=system, %' group by  GW\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",

"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_MULTIDIALOUT	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_MULTIDIALOUT	FLOAT default 0",
"update VPBX_TARIFF set CALL_PRICE_E_MULTIDIALOUT = CALL_PRICE_E_DIALOUT, MINUTE_PRICE_E_MULTIDIALOUT = MINUTE_PRICE_E_DIALOUT",

"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_31 INT(10) not NULL default 0",

],

"354"	=>	[
"delete from VPBX_SIPPEERS_TEMPLATES where HOST='voice.telphin.com'",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sbc.megafon.ru','Multiphon',\x22\$_[0]->{'fromdomain'}='multifon.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='inband'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw'; \$_[0]->{'port'}='5060'; i\$_[0]->{'insecure'}='port,invite';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sipnet.ru','Sipnet',\x22\$_[0]->{'fromdomain'}='sipnet.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5060';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sip.skype.com','Skype Connect',\x22\$_[0]->{'fromdomain'}='sip.skype.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='port,invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('voip.mtt.ru','YouMagic MTT',\x22\$_[0]->{'fromdomain'}='voip.mtt.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='port,invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('voice.telphin.com','Telphin',\x22\$_[0]->{'fromdomain'}='voice.telphin.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5068';\x22)"
],

"353"	=>	[
	"insert into VPBX_SIPPEERS(DATA_ID,name,context,SUBSCR_ID,DESCRIPTION,PEER_TYPE) values(-1,'%SYSTEM%','default',0,'system',1)"
],

"351"	=>	[
	"alter table VPBX_SIPPEERS MODIFY COLUMN setvar varchar(255) DEFAULT NULL"
],

"350"	=>	[
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_PLAYBACK=MINUTE_PRICE_E_PLAYBACK/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_RECORDVMMESSAGES=MINUTE_PRICE_E_RECORDVMMESSAGES/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DBVAR=MINUTE_PRICE_E_DBVAR/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_FAXRX=MINUTE_PRICE_E_FAXRX/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_USERVAR=MINUTE_PRICE_E_USERVAR/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_ROBOTEXT=MINUTE_PRICE_E_ROBOTEXT/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_WEBREQUEST=MINUTE_PRICE_E_WEBREQUEST/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_INTERCOM=MINUTE_PRICE_E_INTERCOM/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_RECORD=MINUTE_PRICE_E_RECORD/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DIALOUT=MINUTE_PRICE_E_DIALOUT/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_PODCAST=MINUTE_PRICE_E_PODCAST/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_VOTING=MINUTE_PRICE_E_VOTING/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_WEBVAR=MINUTE_PRICE_E_WEBVAR/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_FAXTX=MINUTE_PRICE_E_FAXTX/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_STREAMING=MINUTE_PRICE_E_STREAMING/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_BBS=MINUTE_PRICE_E_BBS/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_CONFERENCE=MINUTE_PRICE_E_CONFERENCE/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_GOOGLECALENDAREXPLORER=MINUTE_PRICE_E_GOOGLECALENDAREXPLORER/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DATETIME=MINUTE_PRICE_E_DATETIME/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DISA=MINUTE_PRICE_E_DISA/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_QUEUE=MINUTE_PRICE_E_QUEUE/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DTMFRX=MINUTE_PRICE_E_DTMFRX/60",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_E_DTMFTX=MINUTE_PRICE_E_DTMFTX/60"
],

"347"	=>	[
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE_E_TRANSFER",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE_E_TRANSFER",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE_E_PARKING",
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE_E_PARKING",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE_E_PICKUP",
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE_E_PICKUP",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE_E_DOWNLOAD",
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE_E_DOWNLOAD",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE_E_LISTEN",
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE_E_LISTEN"
],

"346"	=>	[
"ALTER TABLE VPBX_GROUPS MODIFY COLUMN MAX_C2C_ITEMS INT(5) default 0",
"UPDATE VPBX_GROUPS set MAX_C2C_ITEMS=0"
],

"345"	=>	[
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('DB summary',1,unix_timestamp(),\x22select TABLE_NAME as '=TABLE',TABLE_ROWS as 'ROWS=',AVG_ROW_LENGTH as 'AVG ROW LENGTH=',round((DATA_LENGTH/1024/1024),2) as 'DATA LENGTH (MB)=' ,round((INDEX_LENGTH/1024/1024),2)  'INDEX LENGTH (MB)=',AUTO_INCREMENT as 'AUTO INCREMENT=' from information_schema.TABLES where TABLE_SCHEMA='xvb'\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('System summary',1,unix_timestamp(),\x22select 'Accounts (all)' as '=param', count(*) as 'value=' from VPBX_ACCOUNTS union select 'Accounts ( with active status )', count(*) from VPBX_ACCOUNTS where STATUS=1 union select 'Extensions', count(*) from VPBX_VBOXES_CORE union select 'Messages cnt', count(*) from VPBX_VBOXES_RECORD_FILES union select 'Messages size (MB)', CONCAT(round(sum(FILE_SIZE)/1024/1024,2),' ') from VPBX_VBOXES_RECORD_FILES union select 'Phones (all)', count(*) from VPBX_SIPPEERS where PEER_TYPE=0 union select 'Phones (online)', count(*) from VPBX_SIPPEERS where PEER_TYPE=0 and unix_timestamp() < regseconds union select 'SIP Peers (all)', count(*) from VPBX_SIPPEERS where PEER_TYPE=1 union select 'SIP Peers (with registration)', count(*) from VPBX_SIPPEERS where PEER_TYPE=1 and NEED_REG=1 union select 'DIDs cnt', count(*) from VPBX_DIDS union select 'Shared DIDs cnt', count(DISTINCT VOICENUMBER) from VPBX_ACCOUNTS union select 'Balalnce (units)', round(sum(BALANCE),2) from VPBX_BALANCE union select 'CDR cnt', count(*) from VPBX_CDRS union select 'Activity records', count(*) from VPBX_CDRS_ACTIVITY union select 'Uniq Caller ID (incoming)', count(DISTINCT CALLER_ID) from VPBX_CDRS where CALL_TYPE='incoming' union select 'Uniq Called ID (transit)', count(DISTINCT CALLED_ID) from VPBX_CDRS where CALL_TYPE='transit' union select 'Journal records', count(*) from VPBX_JOURNAL union SELECT 'Data Base Size (MB)', round((sum( data_length + index_length ) / 1024 / 1024),2) FROM information_schema.TABLES where table_schema ='xvb' union SELECT 'Data Base Free space (MB)', round((sum(data_free) / 1024 / 1024),2) FROM information_schema.TABLES where table_schema ='xvb'\x22,300)"
],

"342"	=>	[
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_INCOMING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_INCOMING		FLOAT default 0",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_INCOMING=MINUTE_PRICE",
"UPDATE VPBX_TARIFF set CALL_PRICE_INCOMING=CALL_PRICE",
"ALTER table VPBX_TARIFF DROP COLUMN CALL_PRICE",
"ALTER table VPBX_TARIFF DROP COLUMN MINUTE_PRICE"
],

"341"	=>	[
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_LOCAL		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_TRANSIT	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_INTERNAL	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_CALLBACK	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_CALLBLAST	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_CLICK2CALL	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_ALARMCLOCK FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_SERVICE	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_LOCAL		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_TRANSIT 		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_INTERNAL		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_CALLBACK		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_CALLBLAST	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_CLICK2CALL	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_ALARMCLOCK	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_SERVICE		FLOAT default 0",

"UPDATE VPBX_TARIFF set MINUTE_PRICE_CALLBACK=MINUTE_PRICE_CB",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_ALARMCLOCK=MINUTE_PRICE_CB",
"UPDATE VPBX_TARIFF set MINUTE_PRICE_CALLBLAST=MINUTE_PRICE_CBL",

"UPDATE VPBX_TARIFF set CALL_PRICE_CALLBLAST=MINUTE_PRICE_CBL",
"UPDATE VPBX_TARIFF set CALL_PRICE_ALARMCLOCK=MINUTE_PRICE_CB",
"UPDATE VPBX_TARIFF set CALL_PRICE_CALLBACK=MINUTE_PRICE_CB",

"ALTER table VPBX_TARIFF drop column MINUTE_PRICE_CBL",
"ALTER table VPBX_TARIFF drop column CALL_PRICE_CBL",
"ALTER table VPBX_TARIFF drop column MINUTE_PRICE_CB",
"ALTER table VPBX_TARIFF drop column CALL_PRICE_CB",

"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_LISTEN		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DOWNLOAD		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_TRANSFER		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_PICKUP		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_PLAYBACK		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_RECORDVMMESSAGES		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DBVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_FAXRX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_USERVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_ROBOTEXT		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_WEBREQUEST	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_INTERCOM		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_RECORD		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DIALOUT		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_PODCAST		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_PARKING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_VOTING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_WEBVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_FAXTX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_STREAMING	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_BBS			FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_CONFERENCE	FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_GOOGLECALENDAREXPLORER		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DATETIME		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DISA			FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_QUEUE		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DTMFRX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN MINUTE_PRICE_E_DTMFTX		FLOAT default 0",

"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_LISTEN		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DOWNLOAD		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_TRANSFER		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_PICKUP		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_PLAYBACK		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_RECORDVMMESSAGES		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DBVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_FAXRX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_USERVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_ROBOTEXT		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_WEBREQUEST		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_INTERCOM		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_RECORD		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DIALOUT		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_PODCAST		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_PARKING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_VOTING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_WEBVAR		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_FAXTX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_STREAMING		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_BBS		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_CONFERENCE		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_GOOGLECALENDAREXPLORER		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DATETIME		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DISA		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_QUEUE		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DTMFRX		FLOAT default 0",
"ALTER table VPBX_TARIFF ADD COLUMN CALL_PRICE_E_DTMFTX		FLOAT default 0",
],
	
"340"	=>	[
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN CUSTOM_1 VARCHAR(100)"
],

"339"	=>	[
	"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_C2C_ITEMS INT(5) default 1"
],

"338"	=>	[
	#"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_C_START_T2 (START_TIMESTAMP)"
	"
create table VPBX_CLICK2CALL (
	ID					INT(16) not null AUTO_INCREMENT,
    
	SUBSCR_ID			INT(16) not null,
	EXTENSION			VARCHAR(255) default '0',
	SECRET					VARCHAR(100) not null,

    unique (SUBSCR_ID,SECRET),
    CONSTRAINT FK_VPBX_CLICK2CALL_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
    CONSTRAINT PK_VPBX_CLICK2CALL PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8
"
],

"333"	=>	[
	"update VPBX_REPORTS set QUERY=REPLACE(QUERY,' format',' round')  where NAME in('Messages size group by nodes','Daily summary (previous day)','Unknown calls','Call type summary (previous day)','Phone call direction (previous day)','IVR outgoing call direction (previous day)','Known calls','Top 10 users (previous day)','Activities (previous day)','DID statistic (previous day)')",
	"update VPBX_REPORTS set QUERY=REPLACE(QUERY,',format',', round' ) where NAME in('Messages size group by nodes','Daily summary (previous day)','Unknown calls','Call type summary (previous day)','Phone call direction (previous day)','IVR outgoing call direction (previous day)','Known calls','Top 10 users (previous day)','Activities (previous day)','DID statistic (previous day)')",
],

"332"	=>	[
	"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('voip.mtt.ru','YouMagic MTT',\x22\$_[0]->{'fromdomain'}='voip.mtt.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='port,invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060';\x22)"
],

"331"	=>	[
	"ALTER TABLE VPBX_SEQUENCES MODIFY COLUMN SEC_VAL INT(16) UNSIGNED NOT NULL",
	"insert into VPBX_SEQUENCES(SEC_NAME,SEC_VAL) values('PHONEID',unix_timestamp())"
],

"330"	=>	[
	"alter table VPBX_VBOXES_DIALOUT add column KEEP_MSG        INT(1)          default 1",
	"alter table VPBX_VBOXES_DIALOUT add column SEND_ATTACH     INT(1)          default 0",
	
	"alter table VPBX_VBOXES_QUEUES add column KEEP_MSG        INT(1)          default 1",
	"alter table VPBX_VBOXES_QUEUES add column SEND_ATTACH     INT(1)          default 0",
	
	"alter table VPBX_VBOXES_INTERCOM add column KEEP_MSG        INT(1)          default 1",
	"alter table VPBX_VBOXES_INTERCOM add column SEND_ATTACH     INT(1)          default 0",
	
	"alter table VPBX_VBOXES_DISA add column KEEP_MSG        INT(1)          default 1",
	"alter table VPBX_VBOXES_DISA add column SEND_ATTACH     INT(1)          default 0"
],

"329"	=>	[
	"alter table VPBX_SIPPEERS add column callbackextension	varchar(100) DEFAULT NULL"
],

"326"	=>	[
"alter table VPBX_SIPPEERS add column DEFCID VARCHAR(20) default ''",
"alter table VPBX_ROUTES add column DEFCID VARCHAR(20) default ''"
],

"325"	=>	[
"update VPBX_SIPPEERS_TEMPLATES set HOST='voice.telphin.com', DATA=\x22\$_[0]->{'fromdomain'}='voice.telphin.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5068'; \$_[0]->{'nat'}='no';\x22",
],

"322"	=>	[
"delete from VPBX_SIPPEERS_TEMPLATES where HOST='skype.sipnet.ru' and NAME='Sipnet-Skype'"
],

"321"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN deny varchar(95) DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN permit varchar(95) DEFAULT NULL",
],

"320"	=>	[
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN RING_TIMEOUT		INT(3)			default 30",
],

"319"	=>	[
	"insert into VPBX_PHONE_BOOK(PHONE,FIRST_NAME,SUBSCR_ID) select c.CID,c.DESCRIPTION,vb.SUBSCR_ID from VPBX_CID_FILTERS c, VPBX_VBOXES_CORE vb where c.CID_LIST_TYPE = 2 and c.ID=vb.ID and vb.EXT_NUMBER='0'"
],

"318"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_PBOOK_ITEMS	INT(10) default 200"
],

"317"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN REG_EXPIRE INT(6) not null default 0"
],

"316"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_SIZE_MSGS INT(16) default 0",
"ALTER TABLE VPBX_GROUPS DROP COLUMN MAX_EXT_MSGS"
],

"315"	=>	[
	"update VPBX_ROUTES set EXT_NUMBER=CONCAT('phone:',SUBSTR(EXT_NUMBER,8)) where EXT_NUMBER REGEXP '^phone:\\\\.[0-9]'"
],

"314"	=>	[
"create	table VPBX_PHONE_BOOK
(
    SUBSCR_ID		INT(16)			not null,
	DATA_ID			INT(16)			not null AUTO_INCREMENT,
	SHORTCUT		VARCHAR(50),
	PHONE			VARCHAR(255)	not null,
	FIRST_NAME		VARCHAR(100)	not null,
	LAST_NAME		VARCHAR(100)	not null,
	DESCRIPTION		VARCHAR(255),

    CONSTRAINT FK_VPBX_PBOOK_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
	CONSTRAINT PK_VPBX_PBOOK_DATA PRIMARY KEY (DATA_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"313"	=>	[
	"ALTER TABLE VPBX_PARTNERS ADD PARENT_ID INT(16) not null default -1"
],

"312"	=>	[
"create table VPBX_PARTNERS
(
	ID	            INT(16)		    not null AUTO_INCREMENT,
	NAME			VARCHAR(100)	not null,
	PASSWORD		VARCHAR(100)	not null,
	DESCRIPTION		VARCHAR(255),
	GROUP_ID		INT(16)			not null,

    unique			(NAME),
    CONSTRAINT PK_VPBX_PARTNER PRIMARY KEY (ID),
    CONSTRAINT FK_VPBX_PARTNER_GR FOREIGN KEY (GROUP_ID) REFERENCES VPBX_GROUPS(GROUP_ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8
"
],

"311"	=>	[
	"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_C_CALLED_ID (CALLED_ID)"
],

"310"	=>	[
	"update VPBX_VBOXES_DISA set MAX_DIGITS = length(PHONE_PATTERN) where PHONE_PATTERN REGEXP '^\\\\.+".'$'."'"
],

"307"	=>	[
	"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN MAX_DIGITS			INT(10)			not null default -1"
],

"306"	=>	[
	"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN PHONE_NUMBER	VARCHAR(255)"
],

"304"	=>	[
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('DID statistic (previous day)',1,unix_timestamp(), \x22select SUBSTRING_INDEX( c.CALLED_ID , '*', 1 ) AS DID, count(*) as Calls, format((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP))/60,1) 'Minutes=', format((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS c where c.CALL_TYPE = 'incoming' and c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] group by SUBSTRING_INDEX( c.CALLED_ID, '*', 1 ) order by Calls desc\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"303"	=>	[
	"ALTER TABLE VPBX_ROUTES ADD COLUMN TLIMIT INT(6) default 0"
],

"302"	=>	[
	"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN REMEMBER_AGENT		INT(1)			default 0",
],

"301"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_30 INT(10) not NULL default 0",
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION) VALUES(30, 'DtmfTX', 'Play DTMF Tones')",
"create	table VPBX_VBOXES_DTMFTX
(
	ID					INT(16)		    not null,

	DIGITS				VARCHAR(255)	not null,
	TIMEOUT				INT(5)			not null default 250,
	DURATION			INT(5)			not null default 150,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_DTMFTX FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"300"	=>	[
	"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN RECORD_CALL	INT(1) default 0"
],

"299"	=>	[
	"ALTER TABLE VPBX_VBOXES_PLAYBACK ADD COLUMN GREETING_TAGS VARCHAR(255)"
],

"298"	=>	[
	"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD COLUMN DIR_HELPEXT		VARCHAR(255)"
],

"297"	=>	[
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Known calls (previous day)',1,unix_timestamp(),\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) 'Calls=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS where SUBSCR_ID != 0 and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Top 10 users (previous day)',1,unix_timestamp(),\x22select a.ACCESS_CODE, count(*) as Calls, format((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP))/60,1) 'Minutes=', format((sum(c.STOP_TIMESTAMP-c.START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS c,  VPBX_ACCOUNTS a where a.ID = c.SUBSCR_ID and c.START_TIMESTAMP > [% DATE_START %] and c.START_TIMESTAMP < [% DATE_STOP %] group by a.ACCESS_CODE order by Calls desc limit 10\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
	"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Activities (previous day)',1,unix_timestamp(), \x22select TYPE Activities, count(*) as Count, format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS_ACTIVITY where START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by TYPE order by Count desc\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)"
],

"293"	=>	[
	"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN TZ_NAME VARCHAR(100) not null default 'GMT'",
	"ALTER TABLE VPBX_VBOXES_DATETIME ADD COLUMN TZ_NAME VARCHAR(100) not null default 'Default'",
	"ALTER TABLE VPBX_VBOXES_SCHEDULE ADD COLUMN TZ_NAME VARCHAR(100) not null default 'Default'",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN TZ_NAME VARCHAR(100) not null default 'Default'",

	"UPDATE VPBX_TZ SET TZ_NAME='Default' where ID=0",
	
	"UPDATE VPBX_ACCOUNTS,VPBX_TZ set VPBX_ACCOUNTS.TZ_NAME=VPBX_TZ.TZ_NAME where VPBX_ACCOUNTS.TIME_ZONE=VPBX_TZ.ID",
	"UPDATE VPBX_VBOXES_DATETIME,VPBX_TZ set VPBX_VBOXES_DATETIME.TZ_NAME=VPBX_TZ.TZ_NAME where VPBX_VBOXES_DATETIME.TIME_ZONE=VPBX_TZ.ID",
	"UPDATE VPBX_VBOXES_SCHEDULE,VPBX_TZ set VPBX_VBOXES_SCHEDULE.TZ_NAME=VPBX_TZ.TZ_NAME where VPBX_VBOXES_SCHEDULE.TIME_ZONE=VPBX_TZ.ID",
	"UPDATE VPBX_VBOXES_CALLBLAST,VPBX_TZ set VPBX_VBOXES_CALLBLAST.TZ_NAME=VPBX_TZ.TZ_NAME where VPBX_VBOXES_CALLBLAST.TIME_ZONE=VPBX_TZ.ID",

	"ALTER TABLE VPBX_ACCOUNTS DROP FOREIGN KEY FK_VPBX_TZ",
	"ALTER TABLE VPBX_VBOXES_DATETIME DROP FOREIGN KEY FK_VPBX_DT_TZ",
	"ALTER TABLE VPBX_VBOXES_SCHEDULE DROP FOREIGN KEY FK_VPBX_SC_TZ",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST DROP FOREIGN KEY FK_VPBX_CB_TZ",
	
	"ALTER TABLE VPBX_ACCOUNTS DROP COLUMN TIME_ZONE",
	"ALTER TABLE VPBX_VBOXES_DATETIME DROP COLUMN TIME_ZONE",
	"ALTER TABLE VPBX_VBOXES_SCHEDULE DROP COLUMN TIME_ZONE",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST DROP COLUMN TIME_ZONE",

	"ALTER TABLE VPBX_TZ DROP PRIMARY KEY",
	"ALTER TABLE VPBX_TZ ADD CONSTRAINT PK_SERVICE_VBOX_TZ PRIMARY KEY (TZ_NAME)",
	"ALTER TABLE VPBX_TZ ADD unique(ID)",
	"ALTER TABLE VPBX_TZ DROP COLUMN DESCRIPTION",

	"ALTER TABLE VPBX_ACCOUNTS ADD CONSTRAINT FK_VPBX_TZ FOREIGN KEY (TZ_NAME) REFERENCES VPBX_TZ(TZ_NAME) ON UPDATE CASCADE",
	"ALTER TABLE VPBX_VBOXES_DATETIME ADD CONSTRAINT FK_VPBX_DT_TZ FOREIGN KEY (TZ_NAME) REFERENCES VPBX_TZ(TZ_NAME) ON UPDATE CASCADE",
	"ALTER TABLE VPBX_VBOXES_SCHEDULE ADD CONSTRAINT FK_VPBX_SC_TZ FOREIGN KEY (TZ_NAME) REFERENCES VPBX_TZ(TZ_NAME) ON UPDATE CASCADE",
	"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD CONSTRAINT FK_VPBX_CB_TZ FOREIGN KEY (TZ_NAME) REFERENCES VPBX_TZ(TZ_NAME) ON UPDATE CASCADE",
],

"292"	=>	[
	"ALTER TABLE VPBX_GROUPS ADD COLUMN HOOKS VARCHAR(255) not null default ''"
],

"291"	=>	[
	"ALTER table VPBX_VBOXES_PODCAST ADD COLUMN ONLY_LATEST INT(1) not null default 0"
],

"290"	=>	[
	"ALTER TABLE VPBX_CDRS_ACTIVITY DROP INDEX I_CDR_A_TYPE",
	"ALTER TABLE VPBX_CDRS_ACTIVITY MODIFY COLUMN TYPE VARCHAR(25)",
	"UPDATE VPBX_CDRS_ACTIVITY set TYPE='GoogleCalendarExplorer' where TYPE='GoogleCalendarExplor'",
	"ALTER TABLE VPBX_CDRS_ACTIVITY ADD INDEX I_CDR_A_TYPE (TYPE,SUBSCR_ID)"
],

"289"	=>	[
"ALTER TABLE VPBX_DIRECTORY_LANG DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_DATE_FORMAT DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_NOTIFY_TYPE DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_CURRENCY DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_DTMF_PATTERN DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_SAY_PATTERN DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_MOH DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_TZ DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_LANG DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_VBOX_TYPE DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_VBOXES_RECORD_FTYPE DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_VBOXES_DIALOUT_TYPE DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_CID_TYPE DROP COLUMN RU_DESCRIPTION",
"ALTER TABLE VPBX_CID_ACTIONS DROP COLUMN RU_DESCRIPTION"
],

"288"	=>	[
	"UPDATE VPBX_VBOXES_RECORD_FTYPE set RU_DESCRIPTION = 'Музыка вместо гудков' where ID=5"
],

"287"	=>	[
	"ALTER TABLE VPBX_SIPPEERS ADD COLUMN PICKUP_GROUPS VARCHAR(255) not null default ''"
],

"285"	=>	[
	"update VPBX_ACCOUNTS set LANG=1 where LANG=4",
	"update VPBX_ACCOUNTS set LANG=6 where LANG=5",
	"update VPBX_VBOXES_CORE set LANG_ID=1 where LANG_ID=4",
	"update VPBX_VBOXES_CORE set LANG_ID=6 where LANG_ID=5",
	"update VPBX_DIDS_ATTR set LANG_ID=1 where LANG_ID=4",
	"update VPBX_DIDS_ATTR set LANG_ID=6 where LANG_ID=5",
	"update VPBX_GROUPS set PREF_LANG=1 where PREF_LANG=4",
	"update VPBX_GROUPS set PREF_LANG=6 where PREF_LANG=5",
	"delete from VPBX_LANG where ID=5 or ID=4"
],

"283"	=>	[
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 16,'extension','Extension / id (1*1,2,etc)','Внутренний номер / его id (1*1,2,и тд)' )"
],

"282"	=>	[
"ALTER TABLE VPBX_CDRS_ACTIVITY MODIFY COLUMN START_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS_ACTIVITY MODIFY COLUMN STOP_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS_ACTIVITY MODIFY COLUMN CREATE_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS MODIFY COLUMN START_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS MODIFY COLUMN STOP_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS MODIFY COLUMN CREATE_TIMESTAMP DECIMAL(15,5)",
"ALTER TABLE VPBX_CDRS MODIFY COLUMN PROCESS_TIMESTAMP DECIMAL(15,5)"
],

"280"	=>	[
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sip.skype.com','Skype Connect',\x22\$_[0]->{'fromdomain'}='sip.skype.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'insecure'}='port,invite'; \$_[0]->{'allow'}='ulaw,alaw'; \$_[0]->{'port'}='5060';\x22);"
],

"279"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN JOINEMPTY			INT(1)			default 0"
],

"278"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN CUSTOM_REGS					INT(1) default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_REGS					INT(10) default 5",
"update VPBX_GROUPS set CUSTOM_REGS=CUSTOM_ROUTE"
],

"277"	=>	[
"UPDATE VPBX_SIPPEERS set context='xvb-peers' where PEER_TYPE=1",
],

"276"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN insecure VARCHAR(255) DEFAULT NULL"
],

"275"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN 	PEER_TYPE		INT(1)			not null default 0",
"UPDATE VPBX_SIPPEERS set context='xvb-main' where type='peer'",
"UPDATE VPBX_SIPPEERS set PEER_TYPE=1 where type='peer'"
],

"274"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN NEED_REG		INT(1)			not null default 0",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN INC_EXT			VARCHAR(255)	not null default '0'"
],

"273"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_ANNOUNCEMENT_CALLER_DURATION	INT(10) default 300",
],

"272"	=>	[
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(7, 'ANNOUNCEMENT_CALLER', 'Announcement to caller', 'Объявление для звонящего')",
"UPDATE VPBX_VBOXES_RECORD_FTYPE set DESCRIPTION='Announcement to callee', RU_DESCRIPTION = 'Объявление для вызываемого' where ID=3"
],

"271"	=>	[
"create table VPBX_DIDS_ATTR
(
	DID				VARCHAR(100)	not null,
	LANG_ID			INT(16)			not null default 0,

    unique			    (DID),
    CONSTRAINT FK_VPBX_DIDS_ATTR_LANG FOREIGN KEY (LANG_ID) REFERENCES VPBX_LANG(ID) ON UPDATE CASCADE,
    CONSTRAINT PK_VPBX_DIDS_ATTR PRIMARY KEY (DID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"insert into VPBX_DIDS_ATTR(LANG_ID,DID) select '0',VOICENUMBER from VPBX_ACCOUNTS group by VOICENUMBER"
],

"269"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN DURATION INT(16) not null default 0",
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN MIN_CALL_DURATION INT(16) default 0"
],

"268"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN Q_ANSWERED_URL TEXT(1024)",
],

"267"	=>	[
"UPDATE VPBX_VBOX_TYPE set NAME='Queue',DESCRIPTION='Queue',RU_DESCRIPTION='Очередь' where ID=13",
"UPDATE VPBX_CDRS_ACTIVITY set TYPE='Queue' where TYPE='Queues'",
"DELETE from VPBX_REPORTS where NAME='IVR outgoing call direction (previous day)'",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('IVR outgoing call direction (previous day)',1,unix_timestamp(),\x22select  'phone' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=phone, %' group by  GW UNION select  'peer' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=%' and   DATA not like '%, GW=direct, %' and DATA not like '%, GW=phone, %' and  DATA not like '%, GW=system, %' group by  GW UNION select  'direct' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=direct, %' group by  GW UNION select  'system' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY  where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queue' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=system, %' group by  GW\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
],

"265"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_EXTSTAT INT(1) default 0",
"UPDATE VPBX_GROUPS set ALLOW_EXTSTAT=1"
],
	
"264"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN WRAPUPTIME			INT(6)			default 0",
],

"262"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES MODIFY COLUMN ANNOUNCE_FREQUENCY	INT(6)			default -1",
],

"261"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN ANNOUNCE_POSITION	INT(1)			default 0",
],

"260"	=>	[
"ALTER TABLE VPBX_VBOXES_WEBVAR ADD COLUMN MAX_MSG_DURATION	INT(10) not null default -1",
"ALTER TABLE VPBX_VBOXES_WEBVAR ADD COLUMN NEED_VOICE INT(1) not null default 0"
],

"259"	=>	[
"ALTER TABLE VPBX_VBOXES_DIALOUT ADD COLUMN FMC	VARCHAR(255)"
],

"258"	=>	[
"ALTER TABLE VPBX_VBOXES_RECORD ADD COLUMN WO_CONFIRM INT(1) not null default 0"
],
	
"257"	=>	[
"ALTER TABLE VPBX_VBOXES_INTERCOM ADD COLUMN 	CALL_INFO		VARCHAR(255)"
],

"256"	=>	[
"ALTER TABLE VPBX_VBOXES_INTERCOM ADD COLUMN RECORD_CALL	INT(1) default 0"
],

"254"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_29 INT(10) not NULL default 0",
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(29, 'Intercom', 'Paging / Intercom', 'Пейджинг / Интерком')",
"create	table VPBX_VBOXES_INTERCOM
(
	ID				INT(16)		    not null,
	CALL_NUMBER		TEXT(1024)		not null,
	PAGING			INT(1)			default 0,
	TIME_LIMIT		INT(8)			default 30,
	ALERT_INFO		VARCHAR(50),

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_INTERCOM FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"253"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN PH_FEATURES VARCHAR(255) not null default '*'"
],

"252"	=>	[
"delete from VPBX_DIRECTORY_LANG where DESCRIPTION = 'Russian'",
"insert into VPBX_DIRECTORY_LANG(ID,DESCRIPTION,RU_DESCRIPTION,CH_2,CH_3,CH_4,CH_5,CH_6,CH_7,CH_8,CH_9) VALUES( 2, 'Russian', 'Русский','абвгАБВГ','дежзДЕЖЗ','ийклИЙКЛ','мноМНО','прсПРС','туфхТУФХ','цчшщъЦЧШЩЪ','ыьэюяЫЬЭЮЯ' )"
],

"251"	=>	[
"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD COLUMN KEY_LEN INT(4) not null default 3"
],

"250"	=>	[
"delete from VPBX_REPORTS where NAME = 'VirtualPBX DB version'",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('VirtualPBX DB version',1,unix_timestamp(),\x22select VERSION, FROM_UNIXTIME(TIME) 'LAST UPDATE' from VPBX_DB_INFO\x22,240)"
],

"249"	=>	[
"delete from VPBX_REPORTS where NAME in( 'Previous month summary', 'Current month summary', 'Extensions type summary', 'Messages size group by nodes', 'Previous month outgoing call summary', 'Current month unknown calls', 'Previous month unknown callas', 'Tariffs stat', 'Languages stat', 'VoiceNumbers stat', 'Groups stat' )",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Extensions type summary',1,unix_timestamp(),\x22select t.DESCRIPTION '=Type', count(*) 'Count=' from VPBX_VBOX_TYPE t, VPBX_VBOXES_CORE v where v.TYPE = t.ID group by t.DESCRIPTION\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Messages size group by nodes',1,unix_timestamp(),\x22select SERVER_ID '=Node',format(sum(FILE_SIZE)/1024/1024,2) 'Size MB=' from VPBX_VBOXES_RECORD_FILES group by SERVER_ID\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Tariffs stat',1,unix_timestamp(),\x22select t.NAME '=Tariff',count(*) 'Accounts=' from VPBX_TARIFF t, VPBX_ACCOUNTS u, VPBX_GROUPS g where u.GROUP_ID = g.GROUP_ID and t.ID = g.TARIFF_ID group by t.NAME\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Languages stat',1,unix_timestamp(),\x22select l.LANG_NAME '=Language',l.DESCRIPTION '=Description',count(*) 'Accounts=' from VPBX_LANG l, VPBX_ACCOUNTS u where u.LANG = l.ID group by l.LANG_NAME\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('VoiceNumbers stat',1,unix_timestamp(),\x22select VOICENUMBER 'Voicenumber=',count(*) 'Accounts=' from VPBX_ACCOUNTS group by VOICENUMBER\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Groups stat',1,unix_timestamp(),\x22select g.GROUP_NAME 'GroupName=',count(*) 'Accounts=' from VPBX_ACCOUNTS u, VPBX_GROUPS g where u.GROUP_ID = g.GROUP_ID group by g.GROUP_NAME\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Daily summary (previous day)',1,unix_timestamp(),\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) 'Calls=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=', format(sum(SYS_COST),2) 'Cost (in units)=' from VPBX_CDRS where START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'),SERVER_ID\x22,3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Unknown calls (previous day)',1,unix_timestamp(),\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) 'Calls=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS where SUBSCR_ID = 0 and START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Call type summary (previous day)',1,unix_timestamp(),\x22select CALL_TYPE '=Call Type', count(*) 'Calls=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=', format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from VPBX_CDRS where START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by CALL_TYPE order by CALL_TYPE\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('Phone call direction (previous day)',1,unix_timestamp(),\x22select  'phone' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS  where   CALL_TYPE = 'internal' and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] group by  GW UNION select  'peer' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS  where   CALL_TYPE = 'transit' and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA not like '%, GW=system%' group by  GW UNION select  'system' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS  where   CALL_TYPE = 'transit' and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=system%' group by  GW\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL,DATE_START,DATE_STOP) values('IVR outgoing call direction (previous day)',1,unix_timestamp(),\x22select  'phone' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queues' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=phone, %' group by  GW UNION select  'peer' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queues' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=%' and   DATA not like '%, GW=direct, %' and DATA not like '%, GW=phone, %' and  DATA not like '%, GW=system, %' group by  GW UNION select  'direct' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queues' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=direct, %' group by  GW UNION select  'system' GW,  count(*) 'Calls=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) 'Minutes=',  format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG=' from  VPBX_CDRS_ACTIVITY  where   TYPE in ( 'Dialout', 'DISA', 'Transfer', 'Queues' ) and  START_TIMESTAMP > [% DATE_START %] and START_TIMESTAMP < [% DATE_STOP %] and  DATA like '%, GW=system, %' group by  GW\x22, 3600,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 1 day),'%Y-%m-%d'))\x22,\x22UNIX_TIMESTAMP(date_format(date_sub(curdate(),interval 0 day),'%Y-%m-%d'))\x22)",
],

"247"	=>	[
"alter table VPBX_REPORTS add column DATE_START	VARCHAR(255)",
"alter table VPBX_REPORTS add column DATE_STOP	VARCHAR(255)"
],

"246"	=>	[
"create or replace view subscriber  ( id, username, domain, password, email_address, ha1, ha1b, rpid )
	as
select
	DATA_ID, 
	name,
	'virtual-pbx',
	secret,
	'',
	md5(concat(name,':virtual-pbx:',secret)),
	md5(concat(name,'\@virtual-pbx:virtual-pbx:',secret)),
	NULL
from
	VPBX_SIPPEERS
where type='friend'",

"create table version (
		table_name      VARCHAR(255),
		table_version   int(10)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into version values( 'subscriber', 6 )"
],

"245"	=>	[
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(-1,'alwaysringing','Always ringing','Всегда гудки')",
],

"244"	=>	[
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('skype.sipnet.ru','Sipnet-Skype',\x22\$_[0]->{'fromdomain'}='sipnet.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5060';\x22)"
],

"243"	=>	[
	[ "ALTER TABLE VPBX_SIPPEERS DROP INDEX name", 1 ],
	[ "ALTER TABLE VPBX_SIPPEERS ADD unique(name)", 1 ],
],

"240"	=>	[
"ALTER TABLE VPBX_SIPPEERS MODIFY COLUMN ipaddr VARCHAR(45) NOT NULL DEFAULT ''",
],

"239"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_CALL_DURATION INT(10)	not null default 0"
],

"238"	=>	[
"delete from VPBX_SIPPEERS_TEMPLATES",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sbc.megafon.ru','Multiphon',\x22\$_[0]->{'fromdomain'}='multifon.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='inband'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw'; \$_[0]->{'port'}='5060';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sip.telphin.com','Telphin',\x22\$_[0]->{'fromdomain'}='sip.telphin.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5068';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sipnet.ru','Sipnet',\x22\$_[0]->{'fromdomain'}='sipnet.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5060';\x22)"
],

"237"	=>	[
"create table VPBX_SIPPEERS_TEMPLATES (
	ID					INT(16)  not null AUTO_INCREMENT,
	HOST				VARCHAR(255),
	NAME				VARCHAR(255),
	DATA				TEXT(8192),
    CONSTRAINT PK_VPBX_SIPPEERS_TEMPLATES PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sbc.megafon.ru','Multiphon',\x22\$_[0]->{'fromdomain'}='multifon.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='inband'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='ulaw'; \$_[0]->{'port'}='5060'; \$_[0]->{'nat'}='no';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sip.telphin.com','Telphin',\x22\$_[0]->{'fromdomain'}='sip.telphin.com'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5068'; \$_[0]->{'nat'}='no';\x22)",
"insert into VPBX_SIPPEERS_TEMPLATES(HOST,NAME,DATA) VALUES('sipnet.ru','Sipnet',\x22\$_[0]->{'fromdomain'}='sipnet.ru'; \$_[0]->{'videosupport'}='no'; \$_[0]->{'fromuser'}=\$_[0]->{'defaultuser'}=\$_[0]->{'username'}; \$_[0]->{'dtmfmode'}='rfc2833'; \$_[0]->{'disallow'}='all'; \$_[0]->{'allow'}='alaw,ulaw'; \$_[0]->{'port'}='5060'; \$_[0]->{'nat'}='no';\x22)"
],

"234"	=>	[
"ALTER TABLE VPBX_VBOXES_GC_EXPLORER ADD COLUMN ACCESS_MODE					INT(1) not null default 0",
],

"233"	=>	[
"ALTER TABLE VPBX_VBOXES_GC_EXPLORER ADD COLUMN GOOGLE_MAX_EVENTS			INT(5) not null default 30",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_GC_EVENTS			INT(5) not null default 30"
],

"232"	=>	[
"ALTER TABLE VPBX_VBOXES_GC_EXPLORER ADD COLUMN TIME_FORMAT		INT(1) not null default 0"
],

"231"	=>	[
"UPDATE VPBX_VBOX_TYPE set DESCRIPTION='Google Calendar - Schedule' where ID=24"
],

"230"	=>	[
"ALTER TABLE VPBX_VBOXES_GC_SCHEDULE ADD COLUMN GOOGLE_E_Q	VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_GC_SCHEDULE ADD COLUMN GOOGLE_E_CATEGORY		VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_GC_SCHEDULE ADD COLUMN GOOGLE_E_AUTHOR			VARCHAR(255)",

"
create	table VPBX_VBOXES_GC_EXPLORER
(
	ID					INT(16)		    not null,

	GOOGLE_CALENDAR			VARCHAR(255),
	GOOGLE_USER				VARCHAR(255),
	GOOGLE_PSWD				VARCHAR(255),
	
	GOOGLE_E_Q				VARCHAR(255),
	GOOGLE_E_CATEGORY		VARCHAR(255),
	GOOGLE_E_AUTHOR			VARCHAR(255),
	
	GOOGLE_START_DAYS_OFFSET INT(4) not null default 0,
	GOOGLE_STOP_DAYS_OFFSET INT(4) not null default 1,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_GC_EXPLORER FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(28, 'GoogleCalendarExplorer', 'Google Calendar - Events', 'Google календарь - мероприятия')",

"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_28 INT(10) not NULL default 0"

],

"229"	=>	[
"UPDATE VPBX_VBOXES_CORE set GREET_REPEAT_DELAY=0 where GREET_REPEAT_DELAY=1 and GREET_REPEAT_CNT<2",
],

"228"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	videosupport		enum('yes','no','always') DEFAULT 'yes'",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	nat					varchar(5) DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	rtptimeout			char(5) DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	disallow			varchar(100) DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN 	allow				varchar(100) DEFAULT NULL", 
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	progressinband		enum('never','yes','no') DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	promiscredir		enum('yes','no') DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	`session-timers`	enum('originate','accept','refuse') DEFAULT 'accept'",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	`session-expires`	int(5) unsigned DEFAULT '1800'",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	`session-minse`		int(5) unsigned DEFAULT '90'",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN	`session-refresher`	enum('uac','uas') DEFAULT 'uas'" 
],

"226"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE MODIFY COLUMN GREET_REPEAT_DELAY	FLOAT(3,2) not null default 1",
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN I_DIGIT_TIMEOUT	FLOAT(3,2) not null default 1.5"
],

"225"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN GREET_REPEAT_DELAY	INT(4) not null default 1",
"ALTER TABLE VPBX_VBOXES_CORE MODIFY COLUMN GREET_REPEAT_CNT INT(4) not null default 1",
"UPDATE VPBX_VBOXES_CORE set GREET_REPEAT_CNT=GREET_REPEAT_CNT+1",
"UPDATE VPBX_VBOXES_CORE set GREET_REPEAT_CNT=0 where GREETING='.'"
],

"220"	=>	[
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Tariffs stat',1,unix_timestamp(),\x22select t.NAME Tariff,count(*) as accounts from VPBX_TARIFF t, VPBX_ACCOUNTS u, VPBX_GROUPS g where u.GROUP_ID = g.GROUP_ID and t.ID = g.TARIFF_ID group by t.NAME\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Languages stat',1,unix_timestamp(),\x22select l.LANG_NAME,l.DESCRIPTION,count(*) as accounts from VPBX_LANG l, VPBX_ACCOUNTS u where u.LANG = l.ID group by l.LANG_NAME\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('VoiceNumbers stat',1,unix_timestamp(),\x22select VOICENUMBER,count(*) as accounts from VPBX_ACCOUNTS group by VOICENUMBER\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Groups stat',1,unix_timestamp(),\x22select g.GROUP_NAME GroupName,count(*) as accounts from VPBX_ACCOUNTS u, VPBX_GROUPS g where u.GROUP_ID = g.GROUP_ID group by g.GROUP_NAME\x22,300)"
],

"219"	=>	[
"update VPBX_LANG set LANG_NAME = 'xvb.RU-Female-Olga' where LANG_NAME = 'xvb.R-Male-Olga'",
"update VPBX_LANG set LANG_NAME = 'xvb.RU-Female-Olga' where LANG_NAME = 'xvb.RU-Male-Olga'",
"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE, LANG_TTS_ENGINE) VALUES(6,'xvb.RU-Female','Russian (Female+TTS)','Русский (женщина+TTS)','ru','ru_RU.UTF-8','GTranslate')"
],

"218"	=>	[
"ALTER TABLE VPBX_VBOXES_PODCAST_DATA ADD COLUMN TITLE TEXT(2048)",
"ALTER TABLE VPBX_VBOXES_PODCAST_DATA ADD COLUMN FILE_URL TEXT(512)"
],

"217"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN REC_MODE		INT(1)			not null default 0",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN REC_EXT			VARCHAR(255)	not null default '0'"
],

"216"	=>	[
"ALTER TABLE VPBX_VBOXES_CONFERENCE ADD COLUMN RECORD_CALL			INT(1)			default 0",
],

"215"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_ICECAST               INT(1) default 0",
],

"214"	=>	[
"create table VPBX_ICECAST_POOL (
	ID                  INT(16)  not null AUTO_INCREMENT,

	LEASE_TIMESTAMP     INT(16),
	EXT_ID              INT(16),
	CONF_FILE           VARCHAR(255),
	URL                 VARCHAR(255),

	unique (CONF_FILE),
	CONSTRAINT PK_VPBX_ICECAST PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"ALTER TABLE VPBX_VBOXES_CONFERENCE ADD COLUMN SHARE_VIA_ICECAST   INT(1)          not null default 0"
],

"213"	=>	[
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN SPY_MODE INT(16) not null default 0"
],

	"212"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN SUB_SOUND_DIR VARCHAR(255)",
"ALTER TABLE VPBX_GROUPS ADD COLUMN PREF_LANG INT(16) not null default 0",
"ALTER TABLE VPBX_GROUPS ADD CONSTRAINT FK_VPBX_PREF_LANG FOREIGN KEY (PREF_LANG) REFERENCES VPBX_LANG(ID) ON UPDATE CASCADE"
],

"211"	=>	[
"UPDATE VPBX_REPORTS set QUERY=\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes, format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG' from VPBX_CDRS where SUBSCR_ID = 0 and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(curdate()) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22  where NAME='Current month unknown calls'",
"UPDATE VPBX_REPORTS set QUERY=\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date,SERVER_ID NODE,count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes,format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG' from VPBX_CDRS where SUBSCR_ID = 0 and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 1 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22 where NAME='Previous month unknown calls'",
"UPDATE VPBX_REPORTS set QUERY=\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date,SERVER_ID NODE,count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes,format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG',format(sum(SYS_COST),2) 'Cost (in units)' from VPBX_CDRS where START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 1 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22  where NAME='Previous month summary'",
"UPDATE VPBX_REPORTS set QUERY=\x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes, format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG', format(sum(SYS_COST),2) 'Cost (in units)' from VPBX_CDRS where START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(curdate()) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22 where NAME='Current month summary'"
],

"210"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN Q_MAX_W_CALLS INT(3) default 0",
],

"209"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN PREF_CODEC VARCHAR(16)"
],

"208"	=>	[
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD COLUMN IS_VOICE INT(1) not null default 0",
"UPDATE VPBX_VBOXES_RECORD_FILES set IS_VOICE=1 where FILE_NAME like '%.wav' or FILE_NAME like '%.ul'"
],

"207"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN PITCH_RX FLOAT(3,2) not null default 1",
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN PITCH_TX FLOAT(3,2) not null default 1",
"ALTER TABLE VPBX_VBOXES_DISA DROP COLUMN SPY_MODE"
],

"206"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN CALL_ID	VARCHAR(32)"
],

"202"	=>	[
"create table VPBX_DIRECTORY_LANG (
	ID					INT(16) NOT NULL,

	DESCRIPTION         VARCHAR(100),
	RU_DESCRIPTION		VARCHAR(100),

	CH_2				VARCHAR(255),
	CH_3				VARCHAR(255),
	CH_4				VARCHAR(255),
	CH_5				VARCHAR(255),
	CH_6				VARCHAR(255),
	CH_7				VARCHAR(255),
	CH_8				VARCHAR(255),
	CH_9				VARCHAR(255),

    CONSTRAINT PK_SERVICE_DIR_LANG PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_DIRECTORY_LANG(ID,DESCRIPTION,RU_DESCRIPTION) VALUES( 0, 'All','Все' )",
"insert into VPBX_DIRECTORY_LANG(ID,DESCRIPTION,RU_DESCRIPTION,CH_2,CH_3,CH_4,CH_5,CH_6,CH_7,CH_8,CH_9) VALUES( 1, 'English', 'Английский','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz' )",
"insert into VPBX_DIRECTORY_LANG(ID,DESCRIPTION,RU_DESCRIPTION,CH_2,CH_3,CH_4,CH_5,CH_6,CH_7,CH_8,CH_9) VALUES( 2, 'Russian', 'Русский','абвг|АБВГ','дежз|ДЕЖЗ','ийкл|ИЙКЛ','мно|МНО','прс|ПРС','туфх|ТУФХ','цчшщъ|ЦЧШЩЪ','ыьэюя|ЫЬЭЮЯ' )",

"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD COLUMN DIR_LANG INT(16) not null default 0",

"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD CONSTRAINT FK_VPBX_DIR_LANG FOREIGN KEY (DIR_LANG) REFERENCES VPBX_DIRECTORY_LANG(ID) ON UPDATE CASCADE"

],

"200"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_EXT_PODCAST	INT(4) default 10"
],

"199"	=>	[
"create	table VPBX_CDRS_N
(
	SERVER_ID			VARCHAR(100) not null,
	CALL_ID				VARCHAR(32),
	CALL_TYPE			VARCHAR(15),
    
    SUBSCR_ID			INT(16)     not null,
	CALLER_ID			VARCHAR(100),
	CALLED_ID			VARCHAR(255),

	START_TIMESTAMP		INT(16),
	STOP_TIMESTAMP		INT(16),
	CREATE_TIMESTAMP	INT(16),

	COST				FLOAT	not null default 0,

	SYS_COST			FLOAT	not null default 0,
	CURRENCY_ID			INT(16)	not null default 1,
	PROCESS_TIMESTAMP	INT(16),

	DATA				TEXT(2048),

	unique(CALL_ID,START_TIMESTAMP),

    CONSTRAINT FK_VPBX_CDRS_C_NODES FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_CDRS_C_CURR FOREIGN KEY (CURRENCY_ID) REFERENCES VPBX_CURRENCY(CUR_ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_CDRS_C_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID),

	INDEX I_CDR_C_CALL_ID (CALL_ID),
	INDEX I_CDR_C_CALL_TYPE (CALL_TYPE),
	INDEX I_CDR_C_CALLER_ID (CALLER_ID),
	INDEX I_CDR_C_START_T (START_TIMESTAMP,SUBSCR_ID),
	INDEX I_CDR_C_STOP_T (STOP_TIMESTAMP,SUBSCR_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_CDRS_ACTIVITY
(
	SERVER_ID			VARCHAR(100) not null,
	CALL_ID				VARCHAR(32),
    
    SUBSCR_ID			INT(16)     not null,
	CALLER_ID			VARCHAR(100),
	CALLED_ID			VARCHAR(255),

	TYPE				VARCHAR(20),
	EXT_NUMBER			VARCHAR(255) not null,

	START_TIMESTAMP		INT(16),
	STOP_TIMESTAMP		INT(16),
	CREATE_TIMESTAMP	INT(16),

	DATA				TEXT(2048),

	unique(CALL_ID,TYPE,START_TIMESTAMP),

    CONSTRAINT FK_VPBX_CDRS_A_NODES FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_CDRS_A_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID),

	INDEX I_CDR_A_EXT_NUMBER (EXT_NUMBER,SUBSCR_ID),
	INDEX I_CDR_A_TYPE (TYPE,SUBSCR_ID),
	INDEX I_CDR_A_CALL_ID (CALL_ID),
	INDEX I_CDR_A_CALLER_ID (CALLER_ID),
	INDEX I_CDR_A_START_T (START_TIMESTAMP,SUBSCR_ID),
	INDEX I_CDR_A_STOP_T (STOP_TIMESTAMP,SUBSCR_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_CDRS_ACTIVITY(SERVER_ID,CALL_ID,SUBSCR_ID,CALLER_ID,CALLED_ID,TYPE,EXT_NUMBER,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,DATA) select SERVER_ID,CALL_ID,SUBSCR_ID,CALLER_ID,CALLED_ID,TYPE,EXT_NUMBER,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,DATA from VPBX_CDRS where TYPE != 'XVB' group by CALL_ID,TYPE,START_TIMESTAMP",
"insert into VPBX_CDRS_N(SERVER_ID,CALL_ID,SUBSCR_ID,CALLER_ID,CALLED_ID,CALL_TYPE,COST,SYS_COST,CURRENCY_ID,PROCESS_TIMESTAMP,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,DATA) select SERVER_ID,CALL_ID,SUBSCR_ID,CALLER_ID,CALLED_ID,CALL_TYPE,COST,SYS_COST,CURRENCY_ID,PROCESS_TIMESTAMP,START_TIMESTAMP,STOP_TIMESTAMP,CREATE_TIMESTAMP,DATA from VPBX_CDRS where TYPE = 'XVB' group by CALL_ID,START_TIMESTAMP",

"drop table VPBX_CDRS",
"rename table VPBX_CDRS_N to VPBX_CDRS"
],

"193"	=>	[
"ALTER TABLE VPBX_VBOXES_DIALOUT ADD COLUMN PARKING_EXT	VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN PARKING_EXT	VARCHAR(255)",
],

"192"	=>	[
"create	table VPBX_VBOXES_PARKING
(
	ID				INT(16)		    not null,
	RING_TIMEOUT	INT(3)			default 180,
	GOTO_IF_FAIL	VARCHAR(255),
	MOH_ID			INT(16)			not null default 0,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_PARKING FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_PARKING_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"191"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_27 INT(10) not NULL default 0"
],

"190"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(27, 'Parking', 'Call parking', 'Парковка вызовов')"
],

"189"	=>	[
"alter table VPBX_GROUPS drop column DISA_CONTEXT",
],

"188"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_API INT(1) default 0"
],

"187"	=>	[
"UPDATE VPBX_VBOX_TYPE SET ID=3 where ID=4",
"UPDATE VPBX_VBOX_TYPE SET ID=4 where ID=8",
"UPDATE VPBX_VBOX_TYPE SET ID=5 where ID=16",
"UPDATE VPBX_VBOX_TYPE SET ID=6 where ID=32",
"UPDATE VPBX_VBOX_TYPE SET ID=7 where ID=64",
"UPDATE VPBX_VBOX_TYPE SET ID=8 where ID=128",
"UPDATE VPBX_VBOX_TYPE SET ID=9 where ID=256",
"UPDATE VPBX_VBOX_TYPE SET ID=10 where ID=512",
"UPDATE VPBX_VBOX_TYPE SET ID=11 where ID=1024",
"UPDATE VPBX_VBOX_TYPE SET ID=12 where ID=2048",
"UPDATE VPBX_VBOX_TYPE SET ID=13 where ID=4096",
"UPDATE VPBX_VBOX_TYPE SET ID=14 where ID=8192",
"UPDATE VPBX_VBOX_TYPE SET ID=15 where ID=16384",
"UPDATE VPBX_VBOX_TYPE SET ID=16 where ID=32768",
"UPDATE VPBX_VBOX_TYPE SET ID=17 where ID=65536",
"UPDATE VPBX_VBOX_TYPE SET ID=18 where ID=131072",
"UPDATE VPBX_VBOX_TYPE SET ID=19 where ID=262144",
"UPDATE VPBX_VBOX_TYPE SET ID=20 where ID=524288",
"UPDATE VPBX_VBOX_TYPE SET ID=21 where ID=1048576",
"UPDATE VPBX_VBOX_TYPE SET ID=22 where ID=2097152",
"UPDATE VPBX_VBOX_TYPE SET ID=23 where ID=4194304",
"UPDATE VPBX_VBOX_TYPE SET ID=24 where ID=8388608",
"UPDATE VPBX_VBOX_TYPE SET ID=25 where ID=16777216",
"UPDATE VPBX_VBOX_TYPE SET ID=26 where ID=33554432",

"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_1 INT(10) not NULL default -1",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_2 INT(10) not NULL default -1",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_3 INT(10) not NULL default -1",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_4 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_5 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_6 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_7 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_8 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_9 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_10 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_11 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_12 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_13 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_14 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_15 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_16 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_17 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_18 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_19 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_20 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_21 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_22 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_23 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_24 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_25 INT(10) not NULL default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN VBL_26 INT(10) not NULL default 0",

"ALTER TABLE VPBX_GROUPS DROP COLUMN EXT_MASK"
],

"185"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN GLOBAL INT(1) not null default 0",
],

"184"	=>	[
"create  table VPBX_VBOXES_STREAMING
(
	ID              INT(16)         not null,

	STREAM_URL      VARCHAR(255),

	unique(ID),

	CONSTRAINT FK_VPBX_VBOXES_STREAMING FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

"182"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(33554432, 'Streaming', 'MP3-Streaming', 'MP3-Вещание')"
],

"181"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN defaultuser varchar(80) NOT NULL default ''",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN fullcontact varchar(80) NOT NULL DEFAULT ''",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN regserver varchar(100) default NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN useragent varchar(20) default NULL"
],

"179"	=>	[
"create table VPBX_NOTIFY_TYPE (
	NOTIFY_ID			INT(3) NOT NULL,
    
	NAME		        VARCHAR(100),
	DESCRIPTION         VARCHAR(100),
	RU_DESCRIPTION		VARCHAR(100),

    CONSTRAINT PK_SERVICE_VBOX_NOTIFY PRIMARY KEY (NOTIFY_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_NOTIFY_TYPE(NOTIFY_ID,DESCRIPTION,RU_DESCRIPTION,NAME) VALUES(0, 'Not send', 'Не отправлять', 'none' )",
"INSERT INTO VPBX_NOTIFY_TYPE(NOTIFY_ID,DESCRIPTION,RU_DESCRIPTION,NAME) VALUES(1, 'Email', 'Email', 'Email' )",
"INSERT INTO VPBX_NOTIFY_TYPE(NOTIFY_ID,DESCRIPTION,RU_DESCRIPTION,NAME) VALUES(2, 'Twitter', 'Twiter', 'Twitter' )",

"ALTER TABLE VPBX_VBOXES_CORE MODIFY COLUMN SENDNOTIFYEMAIL INT(3) NOT NULL default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VBOX_VBOXES_NOTIFY FOREIGN KEY (SENDNOTIFYEMAIL) REFERENCES VPBX_NOTIFY_TYPE(NOTIFY_ID) ON UPDATE CASCADE"
],

"177"	=>	[
"ALTER TABLE VPBX_VBOXES_DTMFRX ADD COLUMN NEED_FORMATED		INT(1) 			not null default 1",
"ALTER TABLE VPBX_VBOXES_USERVAR ADD COLUMN NEED_FORMATED		INT(1) 			not null default 1"
],

"176"	=>	[
"ALTER TABLE VPBX_NODES ADD COLUMN NODE_STAT_URL			VARCHAR(255)"
],

"175"	=>	[
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN GA_ACCOUNT VARCHAR(50)"
],

"174"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_GA INT(1) default 0"
],

"173"	=>	[
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN PHONE_PATTERN	VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN CALLERIDNUM_PREF CHAR(255)"
],

"172"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN CALL_LIMIT INT(3) not null default 0"
],

"171"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA MODIFY COLUMN CALL_STATUS CHAR(20) not null default 'wait'",
"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA ADD INDEX I_CB_DATA_STATUS (CALL_STATUS)",
],

"169"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN USER_VARS VARCHAR(255)"
],

"168"	=>	[
"update VPBX_SAY_PATTERN set SAY_PATTERN = 'char', DESCRIPTION='characters',RU_DESCRIPTION='символы' where ID=0"
],

"167"	=>	[
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 11, 'phone','phone','номер телефона' )"
],

"166"	=>	[
"create	table VPBX_SAY_PATTERN
(
	ID 					INT(16) not null,
	SAY_PATTERN	        VARCHAR(32) not null,
    DESCRIPTION         VARCHAR(100),
	RU_DESCRIPTION		VARCHAR(100),

    CONSTRAINT PK_SERVICE_VBOX_SAY_PATTERN PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_VBOXES_ROBOTEXT
(
	ID					INT(16)		    not null,

	SAY_PATTERN_ID		INT(16) 		not null default 0,
	TEXT_STR			VARCHAR(255),

	unique(ID),

	CONSTRAINT FK_VPBX_VBOXES_ROBOTEXT_PTRN FOREIGN KEY (SAY_PATTERN_ID) REFERENCES VPBX_SAY_PATTERN(ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_ROBOTEXT FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(16777216, 'RoboText', 'RoboText', 'RoboТекст')",

"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 0, 'digit','digit','цифры' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 1, 'number','number','число' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 2, 'percent','percent','проценты' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 3, 'time','time','время' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 4, 'date1','date 1','дата 1' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 5, 'date2','date 2','дата 2' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 6, 'duration','duration (s:m:h)','продолжительность (с:м:ч)' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 7, 'money','money (rub,usd,eur)','деньги (rub,usd,eur)' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 8, 'degree','degree (C,F,K)','градусы (C,F,K)' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 9, 'datetime1','datetime 1','дата-время 1' )",
"insert into VPBX_SAY_PATTERN(ID,SAY_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 10, 'datetime2','datetime 2','дата-время 2' )"
],
	
	"164"	=>	[
"
create	table VPBX_VBOXES_GC_SCHEDULE
(
	ID					INT(16)		    not null,

	GOTO_IF_OK			VARCHAR(255)	not null default '0',
	GOTO_IF_BUSY		VARCHAR(255)	not null default '0',

	GOOGLE_CALENDAR		VARCHAR(255),
	GOOGLE_USER			VARCHAR(255),
	GOOGLE_PSWD			VARCHAR(255),

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_GC_SCHEDULE FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(8388608, 'GoogleCalendarSchedule', 'Google Calendar Schedule', 'Google календарь - расписание')"
],

	"163"	=>	[
"ALTER TABLE VPBX_VBOXES_ALARMCLOCK ADD COLUMN RING_TIMEOUT		INT(3)			default 30",
"ALTER TABLE VPBX_VBOXES_ALARMCLOCK ADD COLUMN RETRYDIAL_INTERVAL	INT(3)			default 0",
"ALTER TABLE VPBX_VBOXES_ALARMCLOCK ADD COLUMN RETRYDIAL_LOOPS		INT(6)			default 1"
],

	"160"	=>	[
"create	table VPBX_VBOXES_ALARMCLOCK
(
	ID					INT(16)		    not null,
	AC_CB_NUMBER		VARCHAR(255),
	AC_AUTO_REMOVE		INT(1)			default 1,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_ALARMCLOCK FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(4194304, 'AlarmClock', 'Alarm Clock','Будильник')"
],

	"159"	=>	[
"INSERT INTO VPBX_VBOXES_DIALOUT_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(9, 'memoryhunt', 'memoryhunt','прогресс-серийное-искание')"
],
	"158"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(2097152, 'DBVar', 'Stored variable','Хранимая переменная')",
"create	table VPBX_VBOXES_DBVAR
(
	ID				INT(16)		    not null,

	VAR_VALUE		VARCHAR(255)	not null default '0',

	unique(ID),
    CONSTRAINT FK_VPBX_VBOXES_DBVAR FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],
	"156"	=>	[
"ALTER TABLE VPBX_VBOXES_BBS ADD COLUMN MIN_MSG_DURATION	INT(10)			not null default -1",
"ALTER TABLE VPBX_VBOXES_RECORD ADD COLUMN MIN_MSG_DURATION	INT(10)			not null default -1"
],

	"155"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_CALLS_IN				INT(10) default 0"
],

	"154"	=>	[
"ALTER TABLE VPBX_VBOXES_DIALOUT ADD COLUMN GOTO_IF_CALL_STATUS	VARCHAR(255)",
],

	"152"	=>	[
"update VPBX_VBOX_TYPE set DESCRIPTION='Find Me' where NAME='Dialout'",
"
create table VPBX_DIDS
(
	ID	            INT(16)		    not null AUTO_INCREMENT,

    SUBSCR_ID		INT(16)     	not null,
	DID				VARCHAR(100)	not null,

    unique			    (DID),
    CONSTRAINT FK_VPBX_DIDS_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
    CONSTRAINT PK_VPBX_DIDS PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_DIDS(DID,SUBSCR_ID) select ACCESS_CODE,ID as SUBSCR_ID from VPBX_ACCOUNTS where ACCESS_CODE = VOICENUMBER",

"create table VPBX_SEQUENCES
(
	SEC_NAME		CHAR(50)		not null,
	SEC_VAL			INT(1)			UNSIGNED NOT NULL,

    CONSTRAINT PK_VPBX_SEQ PRIMARY KEY (SEC_NAME)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"
CREATE FUNCTION seq(seq_name char (50)) returns int
begin
	UPDATE VPBX_SEQUENCES SET SEC_VAL=last_insert_id(SEC_VAL+1) WHERE SEC_NAME=seq_name;
	RETURN last_insert_id();
end
",

"insert into VPBX_SEQUENCES(SEC_NAME,SEC_VAL) values('ACCESS_CODE',10000)",

],
	"150"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(1048576, 'GotoIf', 'Goto If','Перейти если...')",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_GOTOIF_ITEMS INT(10) default 10",
"create	table VPBX_VBOXES_GOTOIF
(
	ID				INT(16)		    not null,
	
	unique(ID),
    CONSTRAINT FK_VPBX_VBOXES_GOTOIF FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_VBOXES_GOTOIF_DATA
(
	ID			        INT(16)			not null,

	DATA_ID				INT(16)			not null AUTO_INCREMENT,

	PRIORITY			INT(6)			default 5,
	
	FUNC	 			VARCHAR(50)		not null,
	COND 				VARCHAR(50)		not null,
	VAR_NAME 			VARCHAR(255)	not null,
	VAR_VALUE			VARCHAR(255)	not null,
	
	REDIRECT_TO         VARCHAR(255)	not null,

	unique(DATA_ID),
    CONSTRAINT FK_VPBX_VBOXES_GOTOIF_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"147"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(524288, 'WebVar', 'Web variables','Web переменные')",
"create	table VPBX_VBOXES_WEBVAR
(
	ID				INT(16)		    not null,

	WEBVAR_URL		TEXT(1024)	not null,
	GOTO_IF_FAIL	VARCHAR(255),
	NEED_PARAMS		INT(1) not null default 0,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_WEBVAR FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"146"	=>	[
"ALTER TABLE VPBX_VBOXES_DTMFRX ADD COLUMN 	VAR_NAME            VARCHAR(255) 	not null",
"ALTER TABLE VPBX_VBOXES_DTMFRX ADD COLUMN	OTHER_VARS          VARCHAR(1024) 	not null"
],

	"145"	=>	[
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 14,'boolean','Boolean','Логический' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 15,'currency','Currency','Деньги' )",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(262144, 'UserVar', 'User variable','Пользовательская переменная')",

"create	table VPBX_VBOXES_USERVAR
(
	ID					INT(16)		    not null,

	MAX_DIGITS			INT(10)			not null default -1,
	DTMF_PATTERN_ID		INT(16) 		not null default 0,
	VAR_NAME            VARCHAR(255) 	not null,

	unique(ID),

	CONSTRAINT FK_VPBX_VBOXES_USERVAR_PTRN FOREIGN KEY (DTMF_PATTERN_ID) REFERENCES VPBX_DTMF_PATTERN(ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_USEVAR FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"144"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN VOLUME_RX INT(4) not null default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN VOLUME_TX INT(4) not null default 0"
],

	"143"	=>	[
	"ALTER TABLE VPBX_LANG ADD COLUMN STATUS INT(1) not null default 1"
],
	"142"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN START_AFTER_CHANGE	INT(1)			not null default 0"
],

	"141"	=>	[
	"update VPBX_LANG set LANG_TTS_ENGINE='Loquendo',LANG_VOICE='Dmitri' where LANG_NAME='xvb.RU-Male-Dmitri'"
],
	"139"	=>	[
	"ALTER TABLE VPBX_LANG ADD COLUMN LANG_TTS_ENGINE VARCHAR(50) not null default 'Festival'"
],

	"138"	=>	[
	"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_EXT_PHONES				INT(4) default 20",
	"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_CB_PHONES				INT(4) default 3"
],

	"137"	=>	[
"update VPBX_LANG set LANG_NAME = 'xvb.RU-Male-Dmitri' where LANG_NAME = 'xvb.R-Male-Dmitri'",
"update VPBX_LANG set LANG_NAME = 'xvb.RU-Female-Olga' where LANG_NAME = 'xvb.R-Female-Olga'"
],
	"137"	=>	[
"update VPBX_LANG set DESCRIPTION='Russian (Male+TTS)', RU_DESCRIPTION='Русский (мужчина+TTS)' where LANG_VOICE='msu_ru_nsh_clunits'",
"update VPBX_LANG set DESCRIPTION='English (Female+TTS)', RU_DESCRIPTION='Английский (женщина+TTS)' where LANG_VOICE='cmu_us_slt_arctic_clunits'",
"update VPBX_LANG set DESCRIPTION='English (Male+TTS)', RU_DESCRIPTION='Английский (мужчина+TTS)' where LANG_VOICE='cmu_us_awb_arctic_clunits'",
"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE) VALUES(4,'xvb.R-Male-Dmitri','Russian (Male-Dmitri+TTS)','Русский (Дмитрий+TTS)','msu_ru_nsh_clunits','ru_RU.UTF-8')",
"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE) VALUES(5,'xvb.R-Male-Olga','Russian (Female-Olga)','Русский (Ольга)','NO-VOICE','ru_RU.UTF-8')"
],

	"135"	=>	[
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Current month unknown calls',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes, format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG' from VPBX_CDRS where TYPE = 'XVB' and SUBSCR_ID = 0 and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(curdate()) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Previous month unknown calls',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date,SERVER_ID NODE,count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes,format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG' from VPBX_CDRS where TYPE = 'XVB' and SUBSCR_ID = 0 and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 1 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600)"
],

	"133"	=>	[
"INSERT INTO VPBX_ACCOUNTS(ID,GROUP_ID,VOICENUMBER,ACCESS_CODE,STATUS) values(0,1,'ANY0NE','ANY0NE',0)",
"update VPBX_ACCOUNTS set ID=0 where ACCESS_CODE='ANY0NE' and VOICENUMBER='ANY0NE'"
],

	"131"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN STOP_TIMESTAMP	INT(16)",
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN STOP_DATE		VARCHAR(50)"
],

	"130"	=>	[
"ALTER TABLE VPBX_ROUTES DROP FOREIGN KEY FK_VPBX_ROUTES_PEER",
"alter table VPBX_SIPPEERS CHANGE COLUMN name DATA_ID INT(16) NOT NULL AUTO_INCREMENT",
"ALTER TABLE VPBX_ROUTES ADD CONSTRAINT FK_VPBX_ROUTES_PEER FOREIGN KEY (PEER_ID) REFERENCES VPBX_SIPPEERS(DATA_ID) ON DELETE CASCADE",
"alter table VPBX_SIPPEERS ADD COLUMN name VARCHAR(100) NOT NULL",
"update VPBX_SIPPEERS set name=DATA_ID",
"ALTER TABLE VPBX_SIPPEERS ADD unique(name)",
],

	"126"	=>	[
"ALTER TABLE VPBX_VBOXES_DIRECTORY ADD COLUMN USE_TTS_NAME INT(1) default 0",
],

	"125"	=>	[
"ALTER TABLE VPBX_CDRS ADD COLUMN CALL_TYPE	VARCHAR(15)",
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_CALL_TYPE (CALL_TYPE)"
],

	"123"	=>	[
"ALTER TABLE VPBX_TARIFF ADD COLUMN MINUTE_PRICE_CBL	FLOAT default 0",
"ALTER TABLE VPBX_TARIFF ADD COLUMN CALL_PRICE_CBL		FLOAT default 0",
"ALTER TABLE VPBX_TARIFF ADD COLUMN MINUTE_PRICE_CB		FLOAT default 0",
"ALTER TABLE VPBX_TARIFF ADD COLUMN CALL_PRICE_CB		FLOAT default 0"
],

	"122"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_PHONES INT(1) default 0",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_PHONES INT(10) default 10",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN context VARCHAR(50) NOT NULL DEFAULT 'xvb-phones'",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN setvar  VARCHAR(100) DEFAULT NULL",
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN callerid VARCHAR(80) NOT NULL DEFAULT ''"
],

	"120"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_CALLBLAST_ITEMS	INT(10) default 30",

"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN RING_TIMEOUT			INT(3)			default 30",
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN RETRYDIAL_INTERVAL	INT(3)			default 0",
"ALTER TABLE VPBX_VBOXES_CALLBLAST ADD COLUMN RETRYDIAL_LOOPS		INT(6)			default 0",

"ALTER TABLE VPBX_VBOXES_CALLBLAST_DATA ADD COLUMN ATTEMPT INT(4) not null default 0"
],

	"118"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ADVANCED_CALLBLAST INT(1) default 0"
],

	"117"	=>	[
"ALTER table VPBX_VBOXES_TTS ADD COLUMN TTS_REQ_UA TEXT(1024)",
"ALTER table VPBX_VBOXES_TTS ADD COLUMN TTS_REQ_COOKIE TEXT(1024)"
],

	"116"	=>	[
"create	table VPBX_VBOXES_CALLBLAST
(
	ID				INT(16)		    not null,

	START_TIMESTAMP	INT(16),
	START_DATE		VARCHAR(50),
	TIME_ZONE		INT(16)			not null default 0,
	ACTIVE			INT(1)			not null default 0,
	
	unique(ID),

	INDEX I_CB_START_T (START_TIMESTAMP),
	INDEX I_CB_STATUS (ACTIVE),

	CONSTRAINT FK_VPBX_CB_TZ FOREIGN KEY (TIME_ZONE) REFERENCES VPBX_TZ(ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_CALLBLAST FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_VBOXES_CALLBLAST_DATA
(
	ID			        INT(16)		 not null,

	DATA_ID				INT(16)		 not null AUTO_INCREMENT,
	NAME                VARCHAR(255) not null,
    PHONE_NUMBER		VARCHAR(255) not null,

	CREATE_TIMESTAMP	INT(16) not null,
	PROCESS_TIMESTAMP	INT(16) not null default 0,

	CALL_STATUS			VARCHAR(255),

	unique(DATA_ID),
	unique(ID,PHONE_NUMBER),

	INDEX I_CB_DATA_PROCESS_T (PROCESS_TIMESTAMP),
	INDEX I_CB_DATA_CREATE_T (CREATE_TIMESTAMP),

	CONSTRAINT FK_VPBX_VBOXES_CALLBLAST_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(131072, 'CallBlast', 'CallBlast','Автоинформатор')"
],

	"111"	=>	[
"alter table VPBX_SIPPEERS add column transport ENUM('udp','tcp') not null default 'udp'",
"alter table VPBX_SIPPEERS drop column dtmfmode",
"alter table VPBX_SIPPEERS add column dtmfmode ENUM('rfc2833','info','shortinfo','inband','auto') not null DEFAULT 'auto'"
],

	"110"	=>	[
"create	table VPBX_CUSTOM_MOH
(
    SUBSCR_ID			INT(16)     not null,

    name				VARCHAR(50)		not null,
	mode				VARCHAR(20) 	not null default 'files',
	directory			VARCHAR(255)	not null,

    CONSTRAINT FK_VPBX_C_MOH_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
	INDEX I_MOH_CUSTOM (name)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"109"	=>	[
"ALTER TABLE VPBX_ROUTES ADD COLUMN EXT_NUMBER VARCHAR(255)"
],

	"108"	=>	[
"ALTER TABLE VPBX_JOURNAL ADD INDEX I_JOURNAL_EXT_NUMBER (EXT_NUMBER,SUBSCR_ID)",
],

	"107"	=>	[
"ALTER TABLE VPBX_VBOXES_BBS ADD COLUMN MSG_LIMITS INT(16) not null default 0"
],

	"106"	=>	[
"create	table VPBX_VBOXES_BBS_DATA
(
	ID					INT(16)		    not null,
	CALLER_ID			VARCHAR(100),

	CREATE_TIMESTAMP	INT(16),

    CONSTRAINT FK_VPBX_VBOXES_BBS_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE,

	INDEX I_BBS_CALLER_ID (ID,CALLER_ID)

) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"105"	=>	[
"update VPBX_VBOX_TYPE set NAME='WebRequest' where ID=32"
],

	"104"	=>	[
"drop table VPBX_VBOXES_VOTING_DATA",
"create	table VPBX_VBOXES_VOTING_DATA
(
	ID					INT(16)		    not null,
	DIGITS				INT(10),
	CALLER_ID			VARCHAR(100),

	CREATE_TIMESTAMP	INT(16),

    CONSTRAINT FK_VPBX_VBOXES_VOTING_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE,

	INDEX I_VOTING_CALLER_ID (ID,CALLER_ID)

) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"102"	=>	[
"ALTER TABLE VPBX_CDRS MODIFY COLUMN DATA TEXT(2048)",
"ALTER TABLE VPBX_CDRS MODIFY COLUMN CALLER_ID VARCHAR(100)",
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_CALLER_ID (CALLER_ID)",
"ALTER TABLE VPBX_VBOXES_VOTING ADD COLUMN UNIQ_CIDS INT(1) not null default 1",
],

	"100"	=>	[
"ALTER TABLE VPBX_VBOXES_FAXRX ADD COLUMN HEADERINFO VARCHAR(255)",
"ALTER TABLE VPBX_VBOXES_FAXTX ADD COLUMN HEADERINFO VARCHAR(255)"
],

	"99"	=>	[
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(65536, 'BBS', 'Bulletin board system','Электронная доска объявлений')",
"create	table VPBX_VBOXES_BBS
(
	ID			INT(16)		    		not null,

	MAX_MSG_DURATION	INT(10)			not null default -1,
	SECRET_KEY			VARCHAR(50),
	
	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_BBS FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	"98"	=>	[
"ALTER TABLE VPBX_SIPPEERS ADD COLUMN lastms VARCHAR(20) DEFAULT NULL"
],

	"96"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_DIRECTORY_ITEMS INT(10) default 150",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_SCHEDULE_ITEMS INT(10) default 10"
],
	"95"	=>	[
"ALTER TABLE VPBX_NODES ADD COLUMN NODE_LIMITS VARCHAR(255)",
],

	"94"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN SUB_TEMPLATE_DIR VARCHAR(255)",
],

	"93"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN ALLOW_MACROS INT(1) default 1",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_MACROS INT(10) default 100",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_TTS_LENGTH INT(10) default 300",
"create table VPBX_MACROS (
	ID		INT(16)  not null AUTO_INCREMENT,
    
	MACRO_NAME			VARCHAR(100),
	DATA				TEXT(1024),
	DESCRIPTION			VARCHAR(255),
    SUBSCR_ID		INT(16)     not null,

	unique(SUBSCR_ID,MACRO_NAME),

    CONSTRAINT FK_VPBX_MACRO_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
    CONSTRAINT PK_VPBX_REPORTS PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],
	
	"91"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN TTS_GREETING INT(1) default 1",
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN GREET_REPEAT_CNT INT(16) not null default 0"
],

	"90"	=>	[
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Previous month summary',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date,SERVER_ID NODE,count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes,format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG',format(sum(SYS_COST),2) 'Cost (in units)' from VPBX_CDRS where TYPE = 'XVB' and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 1 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Extensions type summary',1,unix_timestamp(),\x22select t.DESCRIPTION Type, count(*) Count from VPBX_VBOX_TYPE t, VPBX_VBOXES_CORE v where v.TYPE = t.ID group by t.DESCRIPTION\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Messages size group by nodes',1,unix_timestamp(),\x22select SERVER_ID Node,format(sum(FILE_SIZE)/1024/1024,2) 'Size MB' from VPBX_VBOXES_RECORD_FILES group by SERVER_ID\x22,300)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Previous month outgoing call summary',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date,count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes,format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG' from VPBX_CDRS where TYPE in ( 'Dialout','DISA','Queues' ) and DATA like '%STATUS=ANSWER%'  and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 1 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d')\x22, 3600)",
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('Current month summary',1,unix_timestamp(), \x22select date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d') Date, SERVER_ID NODE, count(*) Calls,format((sum(STOP_TIMESTAMP-START_TIMESTAMP))/60,1) Minutes, format((sum(STOP_TIMESTAMP-START_TIMESTAMP)/count(*))/60,1) 'Minutes AVG', format(sum(SYS_COST),2) 'Cost (in units)' from VPBX_CDRS where TYPE = 'XVB' and START_TIMESTAMP > UNIX_TIMESTAMP(date_format(date_sub(curdate(), interval 0 month), '%Y-%m-01')) and START_TIMESTAMP < UNIX_TIMESTAMP(curdate()) group by date_format(FROM_UNIXTIME(START_TIMESTAMP),'%Y-%m-%d'), SERVER_ID\x22, 3600)"
],

	"86"	=>	[
"INSERT INTO VPBX_REPORTS (NAME,TYPE,CREATE_TIMESTAMP,QUERY,TTL) values('VirtualPBX DB version',1,now(),'select * from VPBX_DB_INFO',240)"
],

	"85"	=>	[
"ALTER TABLE VPBX_REPORTS ADD COLUMN TTL INT(10) not null default 60",
],

	"84"	=>	[
"create table VPBX_REPORTS (
	ID		INT(16)  not null AUTO_INCREMENT,
    
	NAME				VARCHAR(100),
	TYPE				INT(1) not null default 1,
	CREATE_TIMESTAMP	INT(16),
	QUERY				TEXT,

    CONSTRAINT PK_VPBX_REPORTS PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8;"
],

	"83"	=>	[
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_TYPE (TYPE,SUBSCR_ID)",
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_EXT_NUMBER (EXT_NUMBER,SUBSCR_ID)",
],

	"82"	=>	[
"ALTER TABLE VPBX_NODES ADD COLUMN DOWNLOAD_IP CHAR(255)",
"ALTER TABLE VPBX_NODES ADD COLUMN AMI_CREDS CHAR(255)",
"update VPBX_NODES set DOWNLOAD_IP = NODE_IP, AMI_CREDS='xvb:amipassword'"
],
	
	"81"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN CUSTOM_FILES INT(1) default 0"
],

	"80"	=>	[
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD INDEX I_RECORD_FILE_START_T (CREATE_TIME,ID)",
"ALTER TABLE VPBX_JOURNAL ADD INDEX I_JOURNALS_START_T (CREATE_TIMESTAMP,SUBSCR_ID)"
],

	"78"	=>	[
"create table VPBX_DATE_FORMAT (
	ID					INT(16) NOT NULL,
	
	DATE_FORMAT_STR		VARCHAR(100),
	DESCRIPTION         VARCHAR(100),
	RU_DESCRIPTION		VARCHAR(100),

    CONSTRAINT PK_SERVICE_DATE_FORMAT PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(1,'%Y/%m/%d %H:%M:%S', '2009/09/23 16:07:32', '2009/09/23 16:07:32' )",
"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(2,'%d/%m/%Y %H:%M:%S', '23/09/2009 16:07:32', '23/09/2009 16:07:32' )",
"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(3,'%m/%d/%Y %H:%M:%S', '09/23/2009 16:07:32', '09/23/2009 16:07:32' )",
"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(4,'%m/%d/%Y %r', '09/23/2009 04:07:32 PM', '09/23/2009 04:07:32 PM' )",
"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(5,'%d/%m/%y %H:%M', '23/09/09 16:07', '23/09/09 16:07' )",
"INSERT INTO VPBX_DATE_FORMAT(ID,DATE_FORMAT_STR,DESCRIPTION,RU_DESCRIPTION) VALUES(6,'%a, %d %b %Y %H:%M:%S %Z', 'Wed, 23 Sep 2009 16:07:32 MSD', 'Срд, 23 Сен 2009 16:07:32 MSD' )",

"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN DATE_FORMAT INT(16) default 1",
"ALTER TABLE VPBX_ACCOUNTS ADD CONSTRAINT FK_VPBX_DATE_FORMAT FOREIGN KEY (DATE_FORMAT) REFERENCES VPBX_DATE_FORMAT(ID) ON UPDATE CASCADE",
],

	"76"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_DOWNLOAD_SIZE	INT(10) default 300000",
],

	"75"	=>	[
"ALTER table VPBX_VBOXES_TTS ADD COLUMN GOTO_IF_FAIL CHAR(255)",
"ALTER table VPBX_VBOXES_TTS ADD COLUMN NEED_PARAMS INT(1) not null default 0",
"ALTER table VPBX_VBOXES_TTS ADD COLUMN QUIET_MODE	INT(1) not null default 0",
"UPDATE VPBX_VBOX_TYPE set DESCRIPTION='WEB-Request', RU_DESCRIPTION='WEB-запрос' where ID=32"
],

	"74"	=>	[
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='GREET' where NAME='GREETING'",
],

	"73"	=>	[
"ALTER table VPBX_CDRS ADD COLUMN  SYS_COST FLOAT	not null default 0",
"ALTER table VPBX_CDRS ADD COLUMN  PROCESS_TIMESTAMP INT(16)",
"ALTER TABLE VPBX_CDRS ADD CURRENCY_ID		INT(16)			not null default 1",
"ALTER TABLE VPBX_CDRS ADD CONSTRAINT FK_VPBX_CDR_CURR FOREIGN KEY (CURRENCY_ID) REFERENCES VPBX_CURRENCY(CUR_ID) ON UPDATE CASCADE",
],

	"71"	=>	[
"DROP TABLE VPBX_CURRENCY",
"create table VPBX_CURRENCY (
	CUR_ID INT(16) NOT NULL,
    
	DESCRIPTION         CHAR(100),
	RU_DESCRIPTION		CHAR(100),

	CONVERSION_RATE		FLOAT,

    CONSTRAINT PK_SERVICE_VBOX_CURRENCY PRIMARY KEY (CUR_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"INSERT INTO VPBX_CURRENCY(CUR_ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(1, 'Rur', 'Rur', 1 )",
"INSERT INTO VPBX_CURRENCY(CUR_ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(2, 'Usd', 'Usd', 32 )",
"INSERT INTO VPBX_CURRENCY(CUR_ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(3, 'Eur', 'Eur', 46 )",

"ALTER TABLE VPBX_TARIFF CHANGE COLUMN DESCRIPTION NAME CHAR(100)",
"ALTER TABLE VPBX_TARIFF ADD CURRENCY_ID		INT(16)			not null default 1",
"ALTER TABLE VPBX_TARIFF ADD CONSTRAINT FK_VPBX_TARIFF_CURR FOREIGN KEY (CURRENCY_ID) REFERENCES VPBX_CURRENCY(CUR_ID) ON UPDATE CASCADE",
],

	"69"	=>	[
"ALTER TABLE VPBX_BALANCE ADD unique(SUBSCR_ID)",
"insert into VPBX_BALANCE(SUBSCR_ID) select ID from VPBX_ACCOUNTS",
"ALTER table VPBX_CDRS ADD COLUMN  COST  FLOAT	not null default 0"
],

	"67"	=>	[
"create	table VPBX_VBOXES_FAXTX
(
	ID			INT(16)		    not null,

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_FAXTX FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(32768, 'FaxTX', 'Fax on Demand','Факс по запросу')",
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(6, 'FAX', 'Fax on Demand', 'Факс по запросу')",
],

	"65"	=>	[
"create table VPBX_CURRENCY (
	ID INT(16) NOT NULL,
    
	DESCRIPTION         CHAR(100),
	RU_DESCRIPTION		CHAR(100),

	CONVERSION_RATE		FLOAT,

    CONSTRAINT PK_SERVICE_VBOX_CURRENCY PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create table VPBX_TARIFF (
	ID INT(16) NOT NULL,
    
	DESCRIPTION         CHAR(100),

	MONTHLY_PRICE		FLOAT default 0,
	DAILY_PRICE			FLOAT default 0,
	MINUTE_PRICE		FLOAT default 0,
	CALL_PRICE			FLOAT default 0,

    CONSTRAINT PK_SERVICE_VBOX_TARIFF PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create table VPBX_BALANCE
(
    SUBSCR_ID		INT(16)     not null,

	BALANCE			FLOAT		default 0,

    CONSTRAINT FK_VPBX_BALANCE_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_CURRENCY(ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(1, 'Rur', 'Rur', 1 )",
"INSERT INTO VPBX_CURRENCY(ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(2, 'Usd', 'Usd', 32 )",
"INSERT INTO VPBX_CURRENCY(ID,DESCRIPTION,RU_DESCRIPTION,CONVERSION_RATE) VALUES(3, 'Eur', 'Eur', 46 )",

"INSERT INTO VPBX_TARIFF(ID,DESCRIPTION,MONTHLY_PRICE,DAILY_PRICE,MINUTE_PRICE,CALL_PRICE) VALUES(1,'Free',0,0,0,0)",

"ALTER TABLE VPBX_GROUPS ADD COLUMN TARIFF_ID INT(16) not null default 1",
"ALTER TABLE VPBX_GROUPS ADD CONSTRAINT FK_VPBX_TARIFF FOREIGN KEY (TARIFF_ID) REFERENCES VPBX_TARIFF(ID) ON UPDATE CASCADE",

],

	"64"	=>	[
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN SPY_MODE INT(16) not null default 0"
],

	"63"	=>	[
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='NAME' where NAME='Name'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='GREETING' where NAME='Greeting'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='ANNOUNCEMENT' where NAME='Announcement'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='RETRYDIAL' where NAME='RETRYDIAL'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='NEW' where NAME='New'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='OLD' where NAME='Old'",
"Update VPBX_VBOXES_RECORD_FTYPE set NAME='TRASH' where NAME='Trash'",
],

	"61"	=>	[

"create table VPBX_AST_CONFIG (
	id INT(16) NOT NULL AUTO_INCREMENT,
	cat_metric int(4) NOT NULL DEFAULT 0,
	var_metric int(4) NOT NULL DEFAULT 0,
	filename varchar(128) NOT NULL DEFAULT '',
	category varchar(128) NOT NULL DEFAULT 'default',
	var_name varchar(128) NOT NULL DEFAULT '',
	var_val varchar(128) NOT NULL DEFAULT '',
	commented int(2) NOT NULL DEFAULT 0,
	
	PRIMARY KEY (id),
	INDEX I_AST_CONFIG (filename(128),category(128))
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-rock','mode','files')",
"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-rock','directory','/opt/VirtualPBX/contrib/moh/rock')",
"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-pop','mode','files')",
"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-pop','directory','/opt/VirtualPBX/contrib/moh/pop')",
"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-classic','mode','files')",
"INSERT INTO VPBX_AST_CONFIG(filename,category,var_name,var_val) VALUES('musiconhold.conf','xvb-classic','directory','/opt/VirtualPBX/contrib/moh/classic')",
],

	"60"	=>	[
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_CALL_ID (CALL_ID)",
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_START_T (START_TIMESTAMP,SUBSCR_ID)",
"ALTER TABLE VPBX_CDRS ADD INDEX I_CDR_STOP_T (STOP_TIMESTAMP,SUBSCR_ID)",
],

	"59"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN CUSTOM_ROUTE INT(1) default 0",

"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_ROUTES INT(10) default 200",
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_PEERS INT(10) default 5",

"create table VPBX_SIPPEERS (
	name INT(16) NOT NULL AUTO_INCREMENT,

	host VARCHAR(255) NOT NULL DEFAULT '',
	port VARCHAR(5) NOT NULL DEFAULT '5060',
	username VARCHAR(80) NOT NULL DEFAULT '',
	secret VARCHAR(80) DEFAULT NULL,

	fromuser VARCHAR(255) DEFAULT NULL,
	fromdomain VARCHAR(255) DEFAULT NULL,
	
	dtmfmode VARCHAR(7) DEFAULT 'rfc2833',
	type VARCHAR(6) NOT NULL DEFAULT 'peer',
	ipaddr VARCHAR(15) NOT NULL DEFAULT '',
	regseconds INT(11) NOT NULL default '0',

    SUBSCR_ID		INT(16)          not null,
    DESCRIPTION     VARCHAR(100)     not null,
	
    CONSTRAINT FK_VPBX_SIPPPERS_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,

	PRIMARY KEY (name)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create table VPBX_ROUTES (
	DATA_ID			INT(16) NOT NULL AUTO_INCREMENT,
    SUBSCR_ID		INT(16)   not null,
    PEER_ID			INT(16)   not null,
	
	PRIORITY		INT(6)    default 5,
	PATTERN         VARCHAR(100) not null,
	SUBSTR          VARCHAR(100),
    DESCRIPTION     VARCHAR(100),
	
    CONSTRAINT FK_VPBX_ROUTES_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE,
    CONSTRAINT FK_VPBX_ROUTES_PEER FOREIGN KEY (PEER_ID) REFERENCES VPBX_SIPPEERS(name) ON DELETE CASCADE,

	PRIMARY KEY (DATA_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8" ],
	
	"58"	=>	[
"UPDATE VPBX_VBOX_TYPE set DESCRIPTION='Chat-Room', RU_DESCRIPTION='Конференц-комната' where ID=64"
],

	"57"	=>	[
"create	table VPBX_VBOXES_DATETIME
(
	ID				INT(16)		    not null,
	
	TIME_ZONE		INT(16)			not null default 0,
	TIME_FORMAT		INT(1)			default 0,
	
	unique(ID),
    CONSTRAINT FK_VPBX_DT_TZ FOREIGN KEY (TIME_ZONE) REFERENCES VPBX_TZ(ID),
    CONSTRAINT FK_VPBX_VBOXES_DT FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(16384, 'DateTime', 'Date/Time', 'Время/Дата')"
],

	"55"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBACK ADD COLUMN CB_DYNAMIC_EXT	INT(1) default 0"
	],

	"54"	=>	[
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN DEMO_MODE INT(1) default 0"
],

	# 22.06.09
	"53"	=>	[
"
create	table VPBX_DTMF_PATTERN
(
	ID 					INT(16) not null,
	DTMF_PATTERN        CHAR(32) not null,
    DESCRIPTION         CHAR(100),
	RU_DESCRIPTION		CHAR(100),

    CONSTRAINT PK_SERVICE_VBOX_DTMF_PATTERN PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  0,'none','none','не использовать' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  1,'time','time hh*mm','время чч*мм' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  2,'date','date dd*mm*yyyy','дата дд*мм*гггг' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  3,'datetime','date time dd*mm*yyyy*hh*mm','дата время дд*мм*гггг*чч*мм' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  4,'phone','phone ( 11 digits )','телефон ( 11 символов )' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  5,'ip','ip addr (127*0*0*1)','ip адрес (127*0*0*1)' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  6,'card','card number (any)','номер карты (любой)' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  7,'card-0','MasterCard number','Номер MasterCard' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  8,'card-1','Visa number','Номер Visa' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES(  9,'card-2','enRoute number','Номер enRoute' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 10,'card-3','Discover number','Номер Discover' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 11,'card-4','Deners Club/Carte Blanche number','Номер Deners Club/Carte Blanche' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 12,'card-5','American Express number','Номер American Express' )",
"insert into VPBX_DTMF_PATTERN(ID,DTMF_PATTERN,DESCRIPTION,RU_DESCRIPTION) VALUES( 13,'card-6','Japan Credit Bureau number','Номер Japan Credit Bureau' )",

"ALTER TABLE VPBX_VBOXES_DTMFRX ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_DTMFRX ADD COLUMN DTMF_PATTERN_ID INT(16) not null default 0",
"ALTER TABLE VPBX_VBOXES_DTMFRX ADD CONSTRAINT FK_VPBX_VBOXES_DTMF_PTRN FOREIGN KEY (DTMF_PATTERN_ID) REFERENCES VPBX_DTMF_PATTERN(ID) ON UPDATE CASCADE",
	],

	# 21.06.09
	"50"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN Q_URL TEXT(1024)"
	],

	# 19.06.09
	"49"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN CALLERID_PREF CHAR(255)"
	],

	# 18.06.09
	"48"	=>	[
"ALTER TABLE VPBX_VBOXES_CALLBACK ADD COLUMN CB_USE_TIMEOFFSET	INT(1)			default 0"
	],
	"46"	=>	[
"ALTER TABLE VPBX_VBOXES_QUEUES ADD COLUMN WAIT_BUSY_ONLY		INT(1)			default 1"
	],

	# === 16.06.09 ===
	"45"	=>	[
"create	table VPBX_VBOXES_QUEUES
(
	ID					INT(16)		    not null,
	CALL_NUMBER			TEXT(1024)	not null,
	CALL_TYPE			INT(2)			default 1,
	Q_TIMEOUT			INT(3)			default 120,
	ANNOUNCE_HOLDTIME	INT(1)			default 0,
	ANNOUNCE_FREQUENCY	INT(6)			default 0,
	RING_TIMEOUT		INT(3)			default 10,
	GOTO_IF_FAIL		CHAR(255),
	MOH_ID				INT(16)			not null default 0,
	RECORD_CALL			INT(1)			default 0,
	TRANSFER_PREF		CHAR(255),

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_QUEUES FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_QUEUES_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE,
    CONSTRAINT FK_VPBX_VBOXES_QUEUES_TYPE FOREIGN KEY (CALL_TYPE) REFERENCES VPBX_VBOXES_DIALOUT_TYPE(ID) ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"create	table VPBX_VBOXES_CALLBACK
(
	ID					INT(16)		    not null,
	CB_NUMBER			CHAR(255),
	CB_EXT				CHAR(255),

	unique(ID),

    CONSTRAINT FK_VPBX_VBOXES_CB FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(4096, 'Queues', 'Queues', 'Очереди')",
"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(8192, 'Callback', 'Callback', 'Обратный звонок')"
	],

	# === 06.06.09 ===
	"44"	=>	[
"update VPBX_MOH set DESCRIPTION ='AlisA', RU_DESCRIPTION = 'АлисА' where ID = 1",
"update VPBX_MOH set DESCRIPTION ='Dont Worry, be Happy',  RU_DESCRIPTION = 'Dont Worry, be Happy' where ID = 2",
"update VPBX_MOH set DESCRIPTION ='Vanessa Mae - Contradanza',  RU_DESCRIPTION ='Vanessa Mae - Contradanza' where ID = 3",

"ALTER TABLE VPBX_VBOXES_CORE DROP FOREIGN KEY FK_VPBX_VBOXES_SUBSCR",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VPBX_VBOXES_SUBSCR FOREIGN KEY (SUBSCR_ID) REFERENCES VPBX_ACCOUNTS(ID) ON DELETE CASCADE",
	],

	# === 30.05.09 ===
	"42"	=>	[
"create	table VPBX_NODES
(
	NODE_ID					CHAR(100),
	NODE_IP					CHAR(255),
	NODE_DESC				CHAR(255),

    CONSTRAINT PK_VPBX_NODES PRIMARY KEY (NODE_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"delete from VPBX_VBOXES_RECORD_FILES where SERVER_ID is NULL",
"delete from VPBX_CDRS where SERVER_ID is NULL",
"delete from VPBX_VBOXES_PODCAST_DATA where SERVER_ID is NULL",

"insert into VPBX_NODES VALUES( (select SERVER_ID from VPBX_VBOXES_RECORD_FILES limit 1), '127.0.0.1', 'auto update' )",

"ALTER TABLE VPBX_GROUPS ADD CONSTRAINT FK_VPBX_NODES FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE",
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD CONSTRAINT FK_VPBX_VBOXES_RECORD_FNODE FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE",
"ALTER TABLE VPBX_CDRS ADD CONSTRAINT FK_VPBX_CDRS_NODES FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE",
"ALTER TABLE VPBX_VBOXES_PODCAST_DATA ADD CONSTRAINT FK_VPBX_VBOXES_PODCAST_NODES FOREIGN KEY (SERVER_ID) REFERENCES VPBX_NODES(NODE_ID) ON UPDATE CASCADE",
	],

	# === 23.05.09 ===
	"39"	=>	[
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'NAME' where ID = 1",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'GREET' where ID = 2",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'ANNOUNCEMENT' where ID = 3",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'RETRYDIAL' where ID = 4",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'MOH' where ID = 5",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'NEW' where ID = 30",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'OLD' where ID = 40",
"update VPBX_VBOXES_RECORD_FTYPE set NAME = 'TRASH' where ID = 50",
	],
	
	# === 19.05.09 ===
	"37"	=>	[
"ALTER TABLE VPBX_VBOXES_TTS ADD unique(ID)",
	],

	"34"	=>	[
"ALTER TABLE VPBX_VBOXES_PODCAST ADD COLUMN PODCAST_ANNOUNCEMENT INT(1) not null default 1",

"ALTER TABLE VPBX_VBOXES_CORE DROP FOREIGN KEY FK_VPBX_VBOXES_MOH",
"ALTER TABLE VPBX_VBOXES_CORE DROP COLUMN MOH_ID",

"ALTER TABLE VPBX_VBOXES_PLAYBACK ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_RECORD ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_CONFERENCE ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_FAXRX ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_VOTING ADD unique(ID)",
"ALTER TABLE VPBX_VBOXES_DISA ADD unique(ID)",

"ALTER TABLE VPBX_VBOXES_DIALOUT ADD COLUMN MOH_ID INT(16)	not null default 0",
"ALTER TABLE VPBX_VBOXES_DIALOUT ADD CONSTRAINT FK_VPBX_VBOXES_DIALOUT_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE",
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN MOH_ID INT(16)	not null default 0",
"ALTER TABLE VPBX_VBOXES_DISA ADD CONSTRAINT FK_VPBX_VBOXES_DISA_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE",
"ALTER TABLE VPBX_VBOXES_TTS ADD COLUMN MOH_ID INT(16)	not null default 0",
"ALTER TABLE VPBX_VBOXES_TTS ADD CONSTRAINT FK_VPBX_VBOXES_TTS_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE"
	],

	# === 16.05.09 ===
	"33"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_EXT_CIDS INT(10) default 200",
	],

	# === 14.05.09 ===
	"32"	=>	[
"ALTER TABLE VPBX_VBOXES_PODCAST_DATA ADD COLUMN SERVER_ID CHAR(100)"
	],

	"30"	=>	[
"create	table VPBX_VBOXES_PODCAST_DATA
(
	ID			        INT(16)		not null AUTO_INCREMENT,
	PODCAST_URL			TEXT(1024)	not null,
	FILE_NAME			CHAR(255)	not null,
	FILE_SIZE			INT(16)		not null,
	DURATION			INT(16),
	CREATE_TIMESTAMP	INT(16),
	DOWNLOAD_TIMESTAMP	INT(16),
	DROP_TIMESTAMP		INT(16),
    
	CONSTRAINT PK_PODCAST_DATA PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
],

	# === 13.05.09 ===
	"29"	=>	[
"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE) VALUES(3,'xvb.EN-Male','English (Male)','Английский (мужчина)','cmu_us_awb_arctic_clunits','en_US.UTF-8')"
	],

	"28"	=>	[
"ALTER TABLE VPBX_VBOXES_SCHEDULE DROP COLUMN USE_GLOBAL_TZ",

"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE) VALUES(2,'xvb.EN-Female','English (Female)','Английский (женщина)','cmu_us_slt_arctic_clunits','en_US.UTF-8')",
"UPDATE VPBX_ACCOUNTS set LANG=2 where LANG=0",
"delete from VPBX_LANG where ID=0",
"INSERT INTO VPBX_LANG(ID,LANG_NAME, DESCRIPTION, RU_DESCRIPTION, LANG_VOICE, LANG_LOCALE) VALUES(0,'xvb.EN-Female','Default','По умолчанию','cmu_us_slt_arctic_clunits','en_US.UTF-8')",

"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN LANG_ID INT(16)	not null default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VPBX_VBOXES_LANG FOREIGN KEY (LANG_ID) REFERENCES VPBX_LANG(ID) ON UPDATE CASCADE",

"update VPBX_TZ set DESCRIPTION='Default', RU_DESCRIPTION='По умолчанию' where ID=0",
	],

	"26"	=>	[
"ALTER TABLE VPBX_VBOXES_SCHEDULE DROP FOREIGN KEY FK_VPBX_SC_TZ",
"ALTER TABLE VPBX_VBOXES_SCHEDULE DROP COLUMN SC_GMT_OFFSET",

"ALTER TABLE VPBX_VBOXES_SCHEDULE ADD COLUMN USE_GLOBAL_TZ INT(1) not null default 1",
"ALTER TABLE VPBX_VBOXES_SCHEDULE ADD COLUMN TIME_ZONE INT(16) not null default 0",

"ALTER TABLE VPBX_VBOXES_SCHEDULE ADD CONSTRAINT FK_VPBX_SC_TZ FOREIGN KEY (TIME_ZONE) REFERENCES VPBX_TZ(ID)",
	],

	"23"	=>	[
"ALTER TABLE VPBX_VBOXES_DIALOUT DROP COLUMN USE_MOH",
"ALTER TABLE VPBX_VBOXES_TTS DROP COLUMN USE_MOH",
"ALTER TABLE VPBX_VBOXES_DISA DROP COLUMN USE_MOH",

"ALTER TABLE VPBX_ACCOUNTS DROP FOREIGN KEY FK_VPBX_MOH",
"ALTER TABLE VPBX_ACCOUNTS DROP COLUMN MOH",

"DROP TABLE VPBX_MOH",

"create	table VPBX_MOH
(
	ID			        INT(16)	  not null,
	MOH_CLASS           CHAR(100) not null,
    DESCRIPTION         CHAR(100),
	RU_DESCRIPTION		CHAR(100),

    CONSTRAINT PK_SERVICE_VBOX_MOH PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(0,'none','Disable','Не использовать')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(1,'xvb-rock','Rock','Рок')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(2,'xvb-pop','Pop','Поп')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(3,'xvb-classic','Classic','Классическая')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(99999,'custom','Custom','Пользовательская')",

"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN MOH_ID INT(16)	not null default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VPBX_VBOXES_MOH FOREIGN KEY (MOH_ID) REFERENCES VPBX_MOH(ID) ON UPDATE CASCADE",
	],
	
	# === 11.05.09 ===
	"22"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN MAX_MOH_DURATION INT(10) default 600",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(9999,'custom','Custom','Пользовательская')",
"INSERT INTO VPBX_VBOXES_RECORD_FTYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(5, 'MOH', 'Music on hold', 'Музыка вместо звонка')",
	],

	# === 07.05.09 ===
	"21"	=>	[
"alter table VPBX_VBOXES_PODCAST add unique(ID)"
	],
	
	
	# === 06.05.09 ===
	"20"	=>	[
"create	table VPBX_VBOXES_PODCAST
(
	ID				INT(16)		    not null,
	PODCAST_URL		TEXT(1024)	not null,

    CONSTRAINT FK_VPBX_VBOXES_PODCAST FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_VBOX_TYPE(ID, NAME, DESCRIPTION, RU_DESCRIPTION) VALUES(2048, 'Podcast', 'Podcast', 'Подкасты')"
],

	# === 02.05.09 ===
	"19"	=>	[
"ALTER TABLE VPBX_VBOXES_DISA ADD COLUMN USE_MOH INT(1) default 0",

"create	table VPBX_CID_ACTIONS
(
	ID				INT(4)		    not null,
    DESCRIPTION     CHAR(100),
	RU_DESCRIPTION     CHAR(100),
    CONSTRAINT PK_VPBX_CID_ACTIONS PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(0, 'Say Extensions not found', 'Сказать номер не найден')",
"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(1, 'Say User Busy', 'Сказать абонент занят')",
"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(2, 'HungUp', 'Положить трубку')",
"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(3, 'Start voicemail', 'Запустить голосовую почту')",
"INSERT INTO VPBX_CID_ACTIONS(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(4, 'Go To next extension', 'Выполнить \x22Перейти к..\x22')",

"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN CID_ACTION INT(4)	not null default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VPBX_VBOXES_CID_A FOREIGN KEY (CID_ACTION) REFERENCES VPBX_CID_ACTIONS(ID) ON UPDATE CASCADE",
	],

	# === 30.04.09 ===
	"16"	=>	[
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN MSG_STORE_PERIOD INT(16) not null default 0",
	],

	# === 29.04.09 ===
	"14"	=>	[
"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN STATEMENTS INT(1) not null default 0",
	],

	# === 28.04.09 ===
	"13"	=>	[
"ALTER TABLE VPBX_VBOXES_DIALOUT_DATA DROP FOREIGN KEY FK_VPBX_VBOXES_DIALOUT_DATA",
"ALTER TABLE VPBX_VBOXES_DIALOUT_DATA ADD CONSTRAINT FK_VPBX_VBOXES_DIALOUT_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE",

"ALTER TABLE VPBX_VBOXES_DIRECTORY_DATA DROP FOREIGN KEY FK_VPBX_VBOXES_DIRECTORY_DATA",
"ALTER TABLE VPBX_VBOXES_DIRECTORY_DATA ADD CONSTRAINT FK_VPBX_VBOXES_DIRECTORY_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE",

"ALTER TABLE VPBX_VBOXES_SCHEDULE_DATA DROP FOREIGN KEY FK_VPBX_VBOXES_SCHEDULE_DATA",
"ALTER TABLE VPBX_VBOXES_SCHEDULE_DATA ADD CONSTRAINT FK_VPBX_VBOXES_SCHEDULE_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE",

"ALTER TABLE VPBX_VBOXES_VOTING_DATA DROP FOREIGN KEY FK_VPBX_VBOXES_VOTING_DATA",
"ALTER TABLE VPBX_VBOXES_VOTING_DATA ADD CONSTRAINT FK_VPBX_VBOXES_VOTING_DATA FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE",
	],

	# === 27.04.09 ===
	"11"	=>	[
"ALTER TABLE VPBX_GROUPS ADD COLUMN SERVER_ID CHAR(100)"
	],

	"10"	=>	[
"ALTER TABLE VPBX_CDRS DROP COLUMN EQUIPMENT",
"ALTER TABLE VPBX_CDRS ADD COLUMN SERVER_ID CHAR(100)"
	],

	# === 26.04.09 ===
	"1.9"	=>	[
"ALTER TABLE VPBX_CID_FILTERS ADD INDEX I_FILTERS (ID,CID_LIST_TYPE,CID_TYPE)"
	],

	"1.8"	=>	[
"create	table VPBX_CID_TYPE
(
	ID				INT(4)		    not null,
    DESCRIPTION     CHAR(100),
	RU_DESCRIPTION     CHAR(100),

    CONSTRAINT PK_VPBX_CID_TYPE PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(0, 'No CID filters', 'Без фильтров')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(1, 'Black list - extension', 'Черный список для номера')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(2, 'Black list - common', 'Черный список общий')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(4, 'Black list - common & extension', 'Черный список - оба')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(8, 'White list - extension', 'Белый список для номера')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(16, 'White list - common', 'Белый список общий')",
"INSERT INTO VPBX_CID_TYPE(ID, DESCRIPTION, RU_DESCRIPTION) VALUES(32, 'White list - common & extension', 'Белый список - оба')",

"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN CID INT(4)	not null default 0",
"ALTER TABLE VPBX_VBOXES_CORE ADD CONSTRAINT FK_VPBX_VBOXES_CID FOREIGN KEY (CID) REFERENCES VPBX_CID_TYPE(ID) ON UPDATE CASCADE",

"create	table VPBX_CID_FILTERS
(
	DATA_ID				INT(16)	    not null AUTO_INCREMENT,
	ID					INT(16)		not null,
	CID_LIST_TYPE		INT(1)		not null default 1,
	CID_TYPE			INT(1)		not null default 1,
	CID					CHAR(255)	not null,
	DESCRIPTION			CHAR(255),

    CONSTRAINT FK_VPBX_BL_VB FOREIGN KEY (ID) REFERENCES VPBX_VBOXES_CORE(ID) ON DELETE CASCADE,
    CONSTRAINT PK_VPBX_CID_DATA PRIMARY KEY (DATA_ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8"
	],

	"1.7"	=>	[
"ALTER TABLE VPBX_VBOXES_CORE ADD COLUMN PIN_CODE2 CHAR(100)"
	],

	# === 24.04.09 ===
	"1.6"	=>	[
"ALTER TABLE VPBX_VBOXES_RECORD_FILES ADD COLUMN SERVER_ID CHAR(100)",
	],

	# === 24.04.09 ===
	"1.5"	=>	[
"ALTER TABLE VPBX_VBOXES_TTS ADD COLUMN USE_MOH INT(1) default 0",
"ALTER TABLE VPBX_VBOXES_DIALOUT ADD COLUMN USE_MOH INT(1) default 0"
	],

	"1.4"	=>	[
"create	table VPBX_MOH
(
	ID			        INT(16)	  not null,
	MOH_CLASS           CHAR(100) not null,
    DESCRIPTION         CHAR(100),
	RU_DESCRIPTION		CHAR(100),

    CONSTRAINT PK_SERVICE_VBOX_MOH PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(0,'xvb-classic','Classic','Классическая')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(1,'xvb-rock','Rock','Рок')",
"INSERT INTO VPBX_MOH(ID,MOH_CLASS,DESCRIPTION,RU_DESCRIPTION) VALUES(2,'xvb-pop','Pop','Поп')",

"ALTER TABLE VPBX_ACCOUNTS ADD COLUMN MOH INT(15) not null default 0",
"ALTER TABLE VPBX_ACCOUNTS ADD CONSTRAINT FK_VPBX_MOH FOREIGN KEY (MOH) REFERENCES VPBX_MOH(ID)"
	],

	# === 23.04.09 ===
	"1.1"		=>	[
						"
create  table VPBX_DB_INFO
(
    VERSION CHAR(100) not null,
	    TIME    INT(16)
) ENGINE=INNODB DEFAULT CHARSET=utf8",

"INSERT into VPBX_DB_INFO(VERSION,TIME) VALUES('0',0)"
					],
);

########################################################################
							main();
########################################################################

########################################################################
#
sub new {
	my ( $class, $config_file ) = @_;

	my $obj = bless { _CONF	=> {} }, $class;

	$obj->core_cfg_init( $config_file );

	$obj->core_log_init();

	return $obj;
}

########################################################################
#
sub main {
	my $obj = VirtualPBX->new( '/opt/VirtualPBX/etc/xvb.cfg' );

	my $backup_dir =  $obj->core_cfg_get( 'PATH_TMP_DIR' );
	
	my $db_prefix = '';

	if ( $obj->core_cfg_get( 'DB_MASTER_DSN' ) ) {
		$db_prefix = 'MASTER_';
	}

	my $db_name = $obj->core_cfg_get( 'DB_'. $db_prefix .'NAME' );
	my $db_user = $obj->core_cfg_get( 'DB_'. $db_prefix .'USER' );
	my $db_pass = $obj->core_cfg_get( 'DB_'. $db_prefix .'PASSWORD' );
	
	if ( $obj->core_cfg_get( 'DB_NO_BACKUP4UPDATE' ) ) {
		print "DUMP DB\nSkipped\n";
	} else {
		my $start_time = localtime;
		my $bk_time = time;
		system("nice -n 19 mysqldump -u$db_user -p$db_pass --default-character-set=latin1 --routines --single-transaction $db_name | gzip -v9 > $backup_dir/update-$bk_time.gz");
		my $stop_time = localtime;

		print "DUMP DB\nStart: $start_time, stop: $stop_time, status: ",($? ? 'Error':'Ok'), "\n";

		return 0 if $?;
	}

	db_update( $obj, $ARGV[0] );
}

########################################################################
#
sub db_update {
	my ( $obj, $init ) = @_;

	if ( $init eq 'init' ) {
		$obj->db_do(1,"update VPBX_DB_INFO set VERSION='$VERSION', TIME=". time);
		exit;
	}

	$obj->{'_CONF'}->{'timeout_db'} = 3600*10;

	my $cur_db_version = $obj->db_get_value( 'select VERSION from VPBX_DB_INFO' ) || 0;

	my $start_time = localtime;

	print "\n\n\033[5m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\033[0m\n";
	print "Please wait until DB update completed, it may take some time\n";
	print "Start update ( from $cur_db_version to $VERSION ): $start_time...\n";

	foreach my $key ( sort { $a <=> $b } keys %update_data ) {
		next if $key <= $cur_db_version;
		print "\n.....$key\n";
		my $rc = $obj->db_do(1,"START TRANSACTION");
		unless ( $rc ) {
			die "Transaction Error !!!!";
		}
		foreach my $sql ( @{ $update_data{$key} } ) {
			next unless $sql;
			my $ignore_errors = 0;
			if ( ref $sql eq 'ARRAY' ) {
				$ignore_errors = $sql->[1];
				$sql = $sql->[0];
			} 
			my $sql2 = $sql;
			$sql2 =~ s#\s*\n\s*# #gs;
			print "Run '$sql2'....\n";
			$rc = $obj->db_do(1,$sql);
			if ( ! $rc and ! $ignore_errors ) {
				$rc = $obj->db_do(1,"ROLLBACK");
				print "Transaction Error ( rollback rc:$rc ) !!!!\n";
				die "Transaction Error ( rollback rc:$rc ) !!!!";
			}
		}
		$rc = $obj->db_do(1,"update VPBX_DB_INFO set VERSION='$key', TIME=". time);
		unless ( $rc ) {
			die "Transaction Error !!!!";
		}
		$rc = $obj->db_do(1,"COMMIT");
		unless ( $rc ) {
			die "Transaction Error !!!!";
		}
	}

	my $stop_time = localtime;
	
	print "Complite update: $stop_time...\n";
}

