array(
'enabled' => array('create' => "INT(2) NULL DEFAULT '0'"),
'nametemplate' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL'),
'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL")
),
'sccpdevice' => array(
'_hwlang' => array('create' => 'varchar(12) NULL DEFAULT NULL'),
//'useRedialMenu' => array('create' => "VARCHAR(5) NULL DEFAULT 'no' AFTER `_hwlang`"),
//'dtmfmode' => array('create' => "VARCHAR(10) default 'outofband'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'outofband'),
'deny' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'permit' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'backgroundImage' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'ringtone' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
// 'force_dtmfmode' => array('create' => "VARCHAR(10) default 'auto'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'auto'),
'transfer' => array('def_modify' => "on"),
'cfwdall' => array('def_modify' => "on"),
'cfwdbusy' => array('def_modify' => "on"),
'directrtp' => array('def_modify' => "off"),
'dndFeature' => array('def_modify' => "on"),
'earlyrtp' => array('def_modify' => "on"),
'audio_tos' => array('def_modify' => "0xB8"),
'audio_cos' => array('def_modify' => "6"),
'video_tos' => array('def_modify' => "0x88"),
'video_cos' => array('def_modify' => "5"),
'mwilamp' => array('def_modify' => "on"),
'mwioncall' => array('def_modify' => "on"),
'private' => array('def_modify' => "on"),
'privacy' => array('def_modify' => "off"),
'nat' => array('def_modify' => "auto"),
'softkeyset' => array('def_modify' => "softkeyset")
),
'sccpline' => array(
'namedcallgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `setvar`", 'modify' => "VARCHAR(100)"),
'namedpickupgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `namedcallgroup`", 'modify' => "VARCHAR(100)"),
'adhocNumber' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `namedpickupgroup`"),
'meetme' => array('create' => "VARCHAR(5) NULL DEFAULT NULL AFTER `adhocNumber`"),
'meetmenum' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetme`"),
'meetmeopts' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmenum`"),
'regexten' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmeopts`"),
'incominglimit' => array('def_modify' => "2"),
'transfer' => array('def_modify' => "on"),
'vmnum' => array('def_modify' => "*97"),
'musicclass' => array('def_modify' => "default"),
'echocancel' => array('def_modify' => "on"),
'silencesuppression' => array('def_modify' => "off"),
'id' => array('create' => 'VARCHAR( 20 ) NULL DEFAULT NULL', 'modify' => "VARCHAR(20)", 'def_modify' => "NULL"),
'dnd' => array('create' => 'VARCHAR( 12 ) DEFAULT "reject" AFTER `amaflags`', 'modify' => "VARCHAR(12)", 'def_modify' => "reject")
)
);
/* Old */
$db_config_v_test = array(
'sccpdevmodel' => array(
'enabled' => array('create' => "INT(2) NULL DEFAULT '0'"),
'nametemplate' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL'),
'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL")
),
'sccpdevice' => array(
'pickupexten' => array('rename' => "directed_pickup"),
'directed_pickup' => array('create' => "VARCHAR(5) NULL DEFAULT 'yes'"),
'pickupcontext' => array('rename' => "directed_pickup_context"),
'directed_pickup_context' => array('create' => "VARCHAR(100) NULL DEFAULT NULL"),
'pickupmodeanswer' => array('rename' => "directed_pickup_modeanswer"),
'directed_pickup_modeanswer' => array('create' => "VARCHAR(5) NULL DEFAULT 'yes'"),
'hwlang' => array('rename' => "_hwlang"),
'_hwlang' => array('create' => 'varchar(12) NULL DEFAULT NULL'),
'useRedialMenu' => array('create' => "VARCHAR(5) NULL DEFAULT 'no' AFTER `_hwlang`"),
//'dtmfmode' => array('create' => "VARCHAR(10) default 'outofband'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'outofband'),
'dtmfmode' => array('drop' => "yes"),
// 'force_dtmfmode' => array('create' => "ENUM('auto','rfc2833','skinny') NOT NULL default 'auto'", 'modify' => "ENUM('auto','rfc2833','skinny')", 'def_modify'=> 'auto'),
'deny' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'permit' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'backgroundImage' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'ringtone' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'transfer' => array('create' => 'VARCHAR(5) DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'cfwdall' => array('create' => 'VARCHAR(5) NULL DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'cfwdbusy' => array('create' => 'VARCHAR(5) NULL DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'directrtp' => array('create' => 'VARCHAR(3) NULL DEFAULT "off"', 'modify' => "VARCHAR(3)", 'def_modify' => "off"),
'dndFeature' => array('create' => 'VARCHAR(5) NULL DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'earlyrtp' => array('create' => 'VARCHAR(10) NULL DEFAULT "progress"', 'modify' => "VARCHAR(10)", 'def_modify' => "progress"),
'audio_tos' => array('def_modify' => "0xB8"),
'audio_cos' => array('def_modify' => "6"),
'video_tos' => array('def_modify' => "0x88"),
'video_cos' => array('def_modify' => "5"),
'trustphoneip' => array('drop' => "yes"),
'mwilamp' => array('create' => 'VARCHAR(5) DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'mwioncall' => array('create' => 'VARCHAR(5) DEFAULT "off"', 'modify' => "VARCHAR(5)", 'def_modify' => "off"),
'private' => array('create' => 'VARCHAR(5) DEFAULT "on"', 'modify' => "VARCHAR(5)", 'def_modify' => "on"),
'privacy' => array('create' => 'VARCHAR(100) DEFAULT "full"', 'modify' => "VARCHAR(5)", 'def_modify' => "full"),
'nat' => array('create' => 'VARCHAR(7) DEFAULT "auto"', 'modify' => "VARCHAR(7)", 'def_modify' => "auto"),
'softkeyset' => array('def_modify' => "softkeyset")
),
'sccpline' => array(
'namedcallgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `setvar`", 'modify' => "VARCHAR(100)"),
'namedpickupgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `namedcallgroup`", 'modify' => "VARCHAR(100)"),
'adhocNumber' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `namedpickupgroup`"),
'meetme' => array('create' => "VARCHAR(5) NULL DEFAULT NULL AFTER `adhocNumber`"),
'meetmenum' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetme`"),
'meetmeopts' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmenum`"),
'regexten' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmeopts`"),
'rtptos' => array('drop' => "yes"),
'audio_tos' => array('drop' => "yes"),
'audio_cos' => array('drop' => "yes"),
'video_tos' => array('drop' => "yes"),
'video_cos' => array('drop' => "yes"),
'incominglimit' => array('def_modify' => "2"),
'transfer' => array('def_modify' => "on"),
'vmnum' => array('def_modify' => "*97"),
'musicclass' => array('def_modify' => "default"),
'echocancel' => array('def_modify' => "on"),
'silencesuppression' => array('def_modify' => "off"),
'dnd' => array('create' => 'VARCHAR( 12 ) DEFAULT "reject" AFTER `amaflags`', 'modify' => "VARCHAR(12)", 'def_modify' => "reject")
)
);
$db_config_v3 = array(
'sccpdevmodel' => array(
'enabled' => array('create' => "INT(2) NULL DEFAULT '0'"),
'nametemplate' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL'),
'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL")
),
'sccpdevice' => array(
'pickupexten' => array('rename' => "directed_pickup"),
'directed_pickup' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'pickupcontext' => array('rename' => "directed_pickup_context"),
'directed_pickup_context' => array('create' => "VARCHAR(100) NULL DEFAULT NULL"),
'pickupmodeanswer' => array('rename' => "directed_pickup_modeanswer"),
'directed_pickup_modeanswer' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'description' => array('rename' => "_description"),
'hwlang' => array('rename' => "_hwlang"),
'_hwlang' => array('create' => 'varchar(12) NULL DEFAULT NULL'),
'_loginname' => array('create' => 'varchar(20) NULL DEFAULT NULL AFTER `_hwlang`'),
'_profileid' => array('create' => "INT(11) NOT NULL DEFAULT '0' AFTER `_loginname`"),
'useRedialMenu' => array('create' => "VARCHAR(5) NULL DEFAULT 'no' AFTER `_profileid`"),
//'dtmfmode' => array('create' => "VARCHAR(10) default 'outofband'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'outofband'),
'dtmfmode' => array('drop' => "yes"),
// 'force_dtmfmode' => array('create' => "VARCHAR(10) default 'auto'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'auto'),
'force_dtmfmode' => array('create' => "ENUM('auto','rfc2833','skinny') NOT NULL default 'auto'", 'modify' => "ENUM('auto','rfc2833','skinny')", 'def_modify'=> 'auto'),
'deny' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'permit' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'backgroundImage' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'ringtone' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'transfer' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'cfwdall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'cfwdbusy' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'directrtp' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'dndFeature' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'earlyrtp' => array('create' => "ENUM('immediate','offHook','dialing','ringout','progress','none') NULL default NULL", 'modify' => "ENUM('immediate','offHook','dialing','ringout','progress','none')"),
'audio_tos' => array('def_modify' => "0xB8"),
'audio_cos' => array('def_modify' => "6"),
'video_tos' => array('def_modify' => "0x88"),
'video_cos' => array('def_modify' => "5"),
'trustphoneip' => array('drop' => "yes"),
'mwilamp' => array('create' => "enum('on','off','wink','flash','blink') NULL default 'on'", 'modify' => "enum('on','off','wink','flash','blink')"),
'mwioncall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'private' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), // Что-то лишенне
'privacy' => array('create' => "enum('full','on','off') NOT NULL default 'full'", 'modify' => "enum('full','on','off')"), // Что-то лишенне
'nat' => array('create' => "enum('on','off','auto') NULL default NULL", 'modify' => "enum('on','off','auto')"),
'conf_allow' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'conf_play_part_announce' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'conf_mute_on_entry' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'conf_show_conflist' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'type' => array('create' => 'VARCHAR(15) NULL DEFAULT NULL', 'modify' => "VARCHAR(15)"),
'imageversion' => array('create' => 'VARCHAR(31) NULL DEFAULT NULL', 'modify' => "VARCHAR(31)"),
'softkeyset' => array('def_modify' => "softkeyset")
),
'sccpline' => array(
'namedcallgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `setvar`", 'modify' => "VARCHAR(100)"),
'namedpickupgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `namedcallgroup`", 'modify' => "VARCHAR(100)"),
'adhocNumber' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `namedpickupgroup`"),
'meetme' => array('create' => "VARCHAR(5) NULL DEFAULT NULL AFTER `adhocNumber`"),
'meetmenum' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetme`"),
'meetmeopts' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmenum`"),
'regexten' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmeopts`"),
'rtptos' => array('drop' => "yes"),
'audio_tos' => array('drop' => "yes"),
'audio_cos' => array('drop' => "yes"),
'video_tos' => array('drop' => "yes"),
'video_cos' => array('drop' => "yes"),
'phonecodepage' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL', 'modify' => "VARCHAR(50)"),
'incominglimit' => array('create' => "INT(11) DEFAULT '6'", 'modify' => 'INT(11)', 'def_modify' => "6"),
'transfer' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'vmnum' => array('def_modify' => "*97"),
'musicclass' => array('def_modify' => "default"),
'id' => array('create' => 'MEDIUMINT(9) NOT NULL AUTO_INCREMENT, ADD UNIQUE(id);', 'modify' => "MEDIUMINT(9)", 'index' => 'id'),
// 'id' =>array('create' => 'VARCHAR( 20 ) NULL DEFAULT NULL', 'modify' => "VARCHAR(20)", 'def_modify' =>"NULL"),
'echocancel' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'silencesuppression' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'dnd' => array('create' => "enum('off','reject','silent','user') NOT NULL default 'reject'", 'modify' => "enum('off','reject','silent','user')", 'def_modify' => "reject")
)
);
// Software mobile
$db_config_v4 = array(
'sccpdevmodel' => array(
'enabled' => array('create' => "INT(2) NULL DEFAULT '0'"),
'nametemplate' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL'),
'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL")
),
'sccpdevice' => array(
'pickupexten' => array('drop' => "yes"),
'directed_pickup' => array('drop' => "yes"),
'directed_pickup_context' => array('drop' => "yes"),
'pickupcontext' => array('drop' => "yes"),
'allow' => array('drop' => "yes"),
'disallow' => array('drop' => "yes"),
'directed_pickup_modeanswer' => array('drop' => "yes"),
'pickupmodeanswer' => array('drop' => "yes"),
'disallow' => array('drop' => "yes"),
'disallow' => array('drop' => "yes"),
'callhistory_answered_elsewhere' => array('create' => "enum('Ignore','Missed Calls','Received Calls', 'Placed Calls') NULL default NULL", 'modify' => "enum('Ignore','Missed Calls','Received Calls','Placed Calls')"),
'description' => array('rename' => "_description"),
'hwlang' => array('rename' => "_hwlang"),
'_hwlang' => array('create' => 'varchar(12) NULL DEFAULT NULL'),
'_loginname' => array('create' => 'varchar(20) NULL DEFAULT NULL AFTER `_hwlang`'),
'_profileid' => array('create' => "INT(11) NOT NULL DEFAULT '0' AFTER `_loginname`"),
'_dialrules' => array('create' => "VARCHAR(255) NULL DEFAULT NULL AFTER `_profileid`"),
'useRedialMenu' => array('create' => "VARCHAR(5) NULL DEFAULT 'no' AFTER `_dialrules`"),
//'dtmfmode' => array('create' => "VARCHAR(10) default 'outofband'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'outofband'),
'dtmfmode' => array('drop' => "yes"),
// 'force_dtmfmode' => array('create' => "VARCHAR(10) default 'auto'", 'modify' => "VARCHAR(10)", 'def_modify'=> 'auto'),
'force_dtmfmode' => array('create' => "ENUM('auto','rfc2833','skinny') NOT NULL default 'auto'", 'modify' => "ENUM('auto','rfc2833','skinny')", 'def_modify'=> 'auto'),
'deny' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'permit' => array('create' => 'VARCHAR(100) NULL DEFAULT NULL', 'modify' => "VARCHAR(100)"),
'backgroundImage' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'ringtone' => array('create' => 'VARCHAR(255) NULL DEFAULT NULL', 'modify' => "VARCHAR(255)"),
'transfer' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'cfwdall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'cfwdbusy' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'cfwdnoanswer' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'park' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'directrtp' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'dndFeature' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'earlyrtp' => array('create' => "ENUM('immediate','offHook','dialing','ringout','progress','none') NULL default NULL", 'modify' => "ENUM('immediate','offHook','dialing','ringout','progress','none')"),
'monitor' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'audio_tos' => array('def_modify' => "0xB8"),
'audio_cos' => array('def_modify' => "6"),
'video_tos' => array('def_modify' => "0x88"),
'video_cos' => array('def_modify' => "5"),
'trustphoneip' => array('drop' => "yes"),
'transfer_on_hangup' => array('create' => "enum('on','off') NULL DEFAULT NULL", 'modify' => "enum('on','off')"),
'phonecodepage' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL', 'modify' => "VARCHAR(50)"),
'mwilamp' => array('create' => "enum('on','off','wink','flash','blink') NULL default 'on'", 'modify' => "enum('on','off','wink','flash','blink')"),
'mwioncall' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'private' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"), // Что-то лишенне
'privacy' => array('create' => "enum('full','on','off') NOT NULL default 'full'", 'modify' => "enum('full','on','off')"), // Что-то лишенне
'nat' => array('create' => "enum('on','off','auto') NULL default NULL", 'modify' => "enum('on','off','auto')"),
'conf_allow' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'conf_play_part_announce' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'conf_mute_on_entry' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'conf_show_conflist' => array('create' => "enum('on','off') NOT NULL default 'on'", 'modify' => "enum('on','off')"),
'type' => array('create' => 'VARCHAR(15) NULL DEFAULT NULL', 'modify' => "VARCHAR(15)"),
'imageversion' => array('create' => 'VARCHAR(31) NULL DEFAULT NULL', 'modify' => "VARCHAR(31)"),
'phonecodepage' => array('create' => 'VARCHAR(50) NULL DEFAULT NULL', 'modify' => "VARCHAR(50)"),
'softkeyset' => array('def_modify' => "softkeyset")
),
'sccpline' => array(
'directed_pickup' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'directed_pickup_context' => array('create' => "VARCHAR(100) NULL DEFAULT NULL"),
'pickup_modeanswer' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'namedcallgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `setvar`", 'modify' => "VARCHAR(100)"),
'namedpickupgroup' => array('create' => "VARCHAR(100) NULL DEFAULT NULL AFTER `namedcallgroup`", 'modify' => "VARCHAR(100)"),
'adhocNumber' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `namedpickupgroup`"),
'meetme' => array('create' => "VARCHAR(5) NULL DEFAULT NULL AFTER `adhocNumber`"),
'meetmenum' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetme`"),
'meetmeopts' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmenum`"),
'regexten' => array('create' => "VARCHAR(45) NULL DEFAULT NULL AFTER `meetmeopts`"),
'rtptos' => array('drop' => "yes"),
'audio_tos' => array('drop' => "yes"),
'audio_cos' => array('drop' => "yes"),
'video_tos' => array('drop' => "yes"),
'video_cos' => array('drop' => "yes"),
'videomode' => array('create' => "enum('user','auto','off') NULL default 'auto'", 'modify' => "enum('user','auto','off')"),
'incominglimit' => array('create' => "INT(11) DEFAULT '6'", 'modify' => 'INT(11)', 'def_modify' => "6"),
'transfer' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'vmnum' => array('def_modify' => "*97"),
'musicclass' => array('def_modify' => "default"),
'disallow' => array('create' => "VARCHAR(255) NULL DEFAULT NULL"),
'allow' => array('create' => "VARCHAR(255) NULL DEFAULT NULL"),
'id' => array('create' => 'MEDIUMINT(9) NOT NULL AUTO_INCREMENT, ADD UNIQUE(id);', 'modify' => "MEDIUMINT(9)", 'index' => 'id'),
// 'id' =>array('create' => 'VARCHAR( 20 ) NULL DEFAULT NULL', 'modify' => "VARCHAR(20)", 'def_modify' =>"NULL"),
'echocancel' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'silencesuppression' => array('create' => "enum('on','off') NOT NULL default 'off'", 'modify' => "enum('on','off')"),
'dnd' => array('create' => "enum('off','reject','silent','user') NOT NULL default 'reject'", 'modify' => "enum('off','reject','silent','user')", 'def_modify' => "reject")
),
'sccpuser' => array(
'name' => array('create' => "varchar(20) NOT NULL", 'modify' => "VARCHAR(20)" ),
'pin' => array('create' => "varchar(7) NOT NULL", 'modify' => "VARCHAR(7)" ),
'password' => array('create' => "varchar(7) NOT NULL", 'modify' => "VARCHAR(7)" ),
'description' => array('create' => "varchar(45) NOT NULL", 'modify' => "VARCHAR(45)" ),
'roaminglogin' => array('create' => "ENUM('on','off','multi') NULL DEFAULT 'off'", 'modify' => "ENUM('on','off','multi')" ),
'auto_logout' => array('create' => "ENUM('on','off') NULL DEFAULT 'off'", 'modify' => "ENUM('on','off')" ),
'homedevice' => array('create' => "varchar(20) NOT NULL", 'modify' => "VARCHAR(20)" ),
'devicegroup' => array('create' => "varchar(7) NOT NULL", 'modify' => "VARCHAR(7)" ),
),
'sccpbuttonconfig' => array(
'reftype' => array('create' => "enum('sccpdevice', 'sipdevice', 'sccpuser') NOT NULL default 'sccpdevice'", 'modify' => "enum('sccpdevice', 'sipdevice', 'sccpuser')" ),
)
);
// Hardware Mobile. Can switch Softwate to Hardware
$db_config_v4M = array(
'sccpdevmodel' => array(
'loadinformationid' => array('create' => "VARCHAR(30) NULL DEFAULT NULL")
),
'sccpdevice' => array(
'pickupexten' => array('drop' => "yes"),
'directed_pickup' => array('drop' => "yes"),
'cfwdnoanswer' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'park' => array('create' => "enum('on','off') NULL default 'on'", 'modify' => "enum('on','off')"),
'monitor' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'_description' => array('rename' => "description"),
'_loginname' => array('drop' => "yes"),
'_profileid' => array('drop' => "yes"),
'_dialrules' => array('create' => "VARCHAR(255) NULL DEFAULT NULL AFTER `_profileid`"),
'transfer_on_hangup' => array('create' => "enum('on','off') NULL DEFAULT NULL", 'modify' => "enum('on','off')"),
),
'sccpline' => array(
'directed_pickup' => array('create' => "enum('on','off') NULL default NULL", 'modify' => "enum('on','off')"),
'videomode' => array('create' => "enum('user','auto','off') NULL default 'auto'", 'modify' => "enum('user','auto','off')"),
),
'sccpuser' => array(
'id' => array('create' => "varchar(20) NOT NULL", 'modify' => "VARCHAR(20)" ),
'name' => array('create' => "varchar(45) NOT NULL", 'modify' => "VARCHAR(45)" ),
)
);
if ($sccp_compatible >= 433) {
if ($mobile_hw == '1') {
return $db_config_v4M;
}
return $db_config_v4;
}
if ($sccp_compatible >= 430) {
return $db_config_v3;
} else {
return $db_config_v0;
}
}
$autoincrement = (($amp_conf["AMPDBENGINE"] == "sqlite") || ($amp_conf["AMPDBENGINE"] == "sqlite3")) ? "AUTOINCREMENT" : "AUTO_INCREMENT";
$table_req = array('sccpdevice', 'sccpline');
$ss = FreePBX::create()->Sccp_manager;
$astman = FreePBX::create()->astman;
$sccp_compatible = 0;
$chanSCCPWarning = true;
//$db_config = $db_config_v0;
$db_config = '';
function CheckSCCPManagerDBTables($table_req)
{
global $amp_conf;
global $astman;
global $db;
outn("
" . _("Checking for Sccp_manager database tables..") . "");
foreach ($table_req as $value) {
$check = $db->getRow("SELECT 1 FROM `$value` LIMIT 0", DB_FETCHMODE_ASSOC);
if (DB::IsError($check)) {
//print_r("none, creating table :". $value);
outn(_("Can't find table: " . $value));
outn(_("Please goto the chan-sccp/conf directory and create the DB schema manually (See wiki)"));
die_freepbx("!!!! Installation error: Can not find required " . $value . " table !!!!!!\n");
}
}
}
function CheckSCCPManagerDBVersion()
{
global $db;
outn("" . _("Checking for previous version of Sccp_manager.") . "");
$check = $db->getRow("SELECT data FROM `sccpsettings` where keyword ='sccp_compatible'", DB_FETCHMODE_ASSOC);
if (DB::IsError($check)) {
outn(_("No previous version found "));
return false;
}
if (!empty($check['data'])) {
outn(_("Found DB Schema : " . $check['data']));
return $check['data'];
} else {
return false;
}
}
/* notused */
function CheckPermissions()
{
outn("" . _("Checking Filesystem Permissions") . "");
$dst = $_SERVER['DOCUMENT_ROOT'] . '/admin/modules/sccp_manager/views';
if (fileowner($_SERVER['DOCUMENT_ROOT']) != fileowner($dst)) {
die_freepbx('Please (re-)check permissions by running "amportal chown. Installation Failed"');
}
}
function CheckAsteriskVersion()
{
outn("" . _("Checking Asterisk Version : ") . $version . "");
$version = FreePBX::Config()->get('ASTVERSION');
if (!empty($version)) {
// Woo, we have a version
if (version_compare($version, "12.2.0", ">=")) {
$ver_compatible = true;
} else {
die_freepbx('Asterisk Version is to old, please upgrade to asterisk-12 or higher. Installation Failed');
}
} else {
// Well. I don't know what version of Asterisk I'm running.
// Assume less than 12.
$ver_compatible = false;
die_freepbx('Asterisk Version could not be verified. Installation Failed');
}
return $ver_compatible;
}
function CheckChanSCCPCompatible()
{
global $chanSCCPWarning;
global $srvinterface, $astman;
if (!$astman) {
ie_freepbx('No asterisk manager connection provided!. Installation Failed');
}
// calling with true returns array with compatibility and RevisionNumber
return $srvinterface->get_compatible_sccp(true);
}
function InstallDB_Buttons()
{
global $db;
outn("" . _("Creating buttons table...") . "");
// $check = $db->getRow("SELECT 1 FROM buttonconfig LIMIT 0", DB_FETCHMODE_ASSOC);
// if (DB::IsError($check)) {
$sql = "DROP TABLE IF EXISTS `buttonconfig`;
CREATE TABLE IF NOT EXISTS `sccpbuttonconfig` (
`ref` varchar(15) NOT NULL default '',
`reftype` enum('sccpdevice', 'sipdevice', 'sccpuser') NOT NULL default 'sccpdevice',
`instance` tinyint(4) NOT NULL default 0,
`buttontype` enum('line','speeddial','service','feature','empty') NOT NULL default 'line',
`name` varchar(36) default NULL,
`options` varchar(100) default NULL,
PRIMARY KEY (`ref`,`reftype`,`instance`,`buttontype`),
KEY `ref` (`ref`,`reftype`)
) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not create sccpbuttonconfig table, error:$check\n");
}
return true;
}
function InstallDB_sccpsettings()
{
global $db;
outn("" . _("Creating sccpsettings table...") . "");
$stmt = $db-> prepare('CREATE TABLE IF NOT EXISTS sccpsettings (
keyword VARCHAR (50) NOT NULL,
data VARCHAR (255) NOT NULL,
seq TINYINT (1),
type TINYINT (1) NOT NULL,
PRIMARY KEY (keyword, seq, type )
);');
$check = $stmt->execute();
if (DB::IsError($check)) {
die_freepbx("Can not create sccpsettings table, error: $check\n");
}
return true;
}
function InstallDB_sccpdevmodel()
{
global $db;
outn("" . _("Creating sccpdevmodel table...") . "");
$sql = "CREATE TABLE IF NOT EXISTS `sccpdevmodel` (
`model` varchar(20) NOT NULL DEFAULT '',
`vendor` varchar(40) DEFAULT '',
`dns` int(2) DEFAULT '1',
`buttons` int(2) DEFAULT '0',
`loadimage` varchar(40) DEFAULT '',
`loadinformationid` VARCHAR(30) NULL DEFAULT NULL,
`enabled` INT(2) NULL DEFAULT '0',
`nametemplate` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`model`),
KEY `model` (`model`)
) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not create sccpdevmodel table, error:$check\n");
}
return true;
}
function InstallDB_sccpuser()
{
global $db;
outn("" . _("Creating sccpuser table...") . "");
$sql = "CREATE TABLE IF NOT EXISTS `sccpuser` (
`name` VARCHAR(20) NULL DEFAULT NULL,
`pin` VARCHAR(7) NULL DEFAULT NULL,
`password` VARCHAR(7) NULL DEFAULT NULL,
`description` VARCHAR(45) NULL DEFAULT NULL,
`roaminglogin` ENUM('on','off','multi') NULL DEFAULT 'off',
`devicegroup` VARCHAR(20) NULL DEFAULT 'all',
`auto_logout` ENUM('on','off') NULL DEFAULT 'off',
`homedevice` VARCHAR(20) NULL DEFAULT NULL,
UNIQUE INDEX (`name`),
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not create sccpdevmodel table, error:$check\n");
}
return true;
}
function InstallDB_updateSchema($db_config)
{
global $db;
if (!$db_config) {
die_freepbx("No db_config provided");
}
$count_modify = 0;
outn("" . _("Modify Database schema") . "");
foreach ($db_config as $tabl_name => &$tab_modify) {
// 0 - name 1-type 4- default
$sql = "DESCRIBE " . $tabl_name . "";
$db_result = $db->getAll($sql);
if (DB::IsError($db_result)) {
die_freepbx("Can not add get information from " . $tabl_name . " table\n");
}
foreach ($db_result as $tabl_data) {
$fld_id = $tabl_data[0];
if (!empty($tab_modify[$fld_id])) {
$db_config[$tabl_name][$fld_id]['status'] = 'yes';
if (!empty($tab_modify[$fld_id]['def_modify'])) {
if (strtoupper($tab_modify[$fld_id]['def_modify']) == strtoupper($tabl_data[4])) {
$db_config[$tabl_name][$fld_id]['def_mod_stat'] = 'no';
}
}
if (!empty($tab_modify[$fld_id]['modify'])) {
if (strtoupper($tab_modify[$fld_id]['modify']) == strtoupper($tabl_data[1])) {
$db_config[$tabl_name][$fld_id]['mod_stat'] = 'no';
}
}
if (!empty($tab_modify[$fld_id]['rename'])) {
$fld_id_source = $tab_modify[$fld_id]['rename'];
$db_config[$tabl_name][$fld_id_source]['status'] = 'yes';
if (!empty($db_config[$tabl_name][$fld_id_source]['create'])) {
$db_config[$tabl_name][$fld_id]['create'] = $db_config[$tabl_name][$fld_id_source]['create'];
} else {
$db_config[$tabl_name][$fld_id]['create'] = strtoupper($tabl_data[1]).(($tabl_data[2] == 'NO') ?' NOT NULL': ' NULL');
$db_config[$tabl_name][$fld_id]['create'] .= ' DEFAULT '. ((empty($tabl_data[4]))?'NULL': "'". $tabl_data[4]."'" );
}
}
}
}
$sql_create = '';
$sql_modify = '';
$sql_update = '';
foreach ($tab_modify as $row_fld => $row_data) {
if (empty($row_data['status'])) {
if (!empty($row_data['create'])) {
$sql_create .= 'ADD COLUMN `' . $row_fld . '` ' . $row_data['create'] . ', ';
$count_modify ++;
}
} else {
if (!empty($row_data['rename'])) {
$sql_modify .= 'CHANGE COLUMN `' . $row_fld . '` `' . $row_data['rename'] . '` ' . $row_data['create'] . ', ';
$count_modify ++;
}
if (!empty($row_data['modify'])) {
if (empty($row_data['mod_stat'])) {
if (!empty($row_data['create'])) {
// $sql_modify .= "CHANGE COLUMN `".$row_fld."` `".$row_fld."` ".$row_data['create'].", ";
$sql_modify .= "MODIFY COLUMN `" . $row_fld . "` " . $row_data['create'] . ", ";
} else {
// $sql_modify .= "CHANGE COLUMN `".$row_fld."` `".$row_fld."` ".$row_data['modify']." DEFAULT '".$row_data['def_modify']."', ";
$sql_modify .= "MODIFY COLUMN `" . $row_fld . "` " . $row_data['modify'] . " DEFAULT '" . $row_data['def_modify'] . "', ";
}
if (strpos($row_data['modify'], 'enum') !== false) {
$sql_update .= "UPDATE " . $tabl_name . " set `" . $row_fld . "`=case when lower(`" . $row_fld . "`) in ('yes','true','1') then 'on' when lower(`" . $row_fld . "`) in ('no', 'false', '0') then 'off' else `" . $row_fld . "` end; ";
}
$row_data['def_mod_stat'] = 'no';
$count_modify ++;
}
}
if (!empty($row_data['def_modify'])) {
if (empty($row_data['def_mod_stat'])) {
$sql_modify .= "ALTER COLUMN `" . $row_fld . "` SET DEFAULT '" . $row_data['def_modify'] . "', ";
$count_modify ++;
}
}
if (!empty($row_data['drop'])) {
$sql_create .= 'DROP COLUMN `' . $row_fld . '`, ';
$count_modify ++;
}
}
}
// out("" . print_r($sql_update, 1) . "");
// out("" . print_r($sql_modify, 1) . "");
// die("Can not modify Е" . $tabl_name . " table sql: " . $sql_modify . "n");
if (!empty($sql_update)) {
$sql_update = 'BEGIN; ' . $sql_update . ' COMMIT;';
sql($sql_update);
$affected_rows = $db->affectedRows();
// $check = $db->query($sql_update);
// $db->closeCursor();
outn("" . _("Update table row :") . $affected_rows . "");
// if (db::IsError($check)) {
// die_freepbx("Can not update ".$tabl_name." table sql: ".$sql_update."n");
// die_freepbx("Can not update ".$tabl_name." table\n");
// }
}
if (!empty($sql_create)) {
outn("" . _("Create New table") . "");
$sql_create = "ALTER TABLE `" . $tabl_name . "` " . substr($sql_create, 0, -2);
$check = $db->query($sql_create);
if (DB::IsError($check)) {
die_freepbx("Can not create " . $tabl_name . " table sql: " . $sql_create . "n");
}
}
if (!empty($sql_modify)) {
outn("" . _("Modify table") . "");
$sql_modify = "ALTER TABLE `" . $tabl_name . "` " . substr($sql_modify, 0, -2) . ';';
$check = $db->query($sql_modify);
if (DB::IsError($check)) {
out("" . print_r($check, 1) . "");
die("Can not modify " . $tabl_name . " table sql: " . $sql_modify . "n");
die_freepbx("Can not modify " . $tabl_name . " table sql: " . $sql_modify . "n");
}
}
}
outn("" . _("Total modify count :") . $count_modify . "");
return true;
}
function InstallDB_fillsccpdevmodel()
{
global $db;
outn("" . _("Fill sccpdevmodel") . "");
$sql = "REPLACE INTO `sccpdevmodel` (`model`, `vendor`, `dns`, `buttons`, `loadimage`, `loadinformationid`, `enabled`, `nametemplate`) VALUES " .
"('12 SP', 'CISCO', 1, 1, '', 'loadInformation3', 0, NULL)," .
"('12 SP+', 'CISCO', 1, 1, '', 'loadInformation2', 0, NULL), " .
"('30 SP+', 'CISCO', 1, 1, '', 'loadInformation1', 0, NULL), " .
"('30 VIP', 'CISCO', 1, 1, '', 'loadInformation5', 0, NULL), " .
"('3911', 'CISCO', 1, 1, '', 'loadInformation446', 0, NULL), " .
"('3951', 'CISCO', 1, 1, '', 'loadInformation412', 0, ''), " .
"('6901', 'CISCO', 1, 1, 'SCCP6901.9-2-1-a', 'loadInformation547', 0, NULL), " .
"('6911', 'CISCO', 1, 1, 'SCCP6911.9-2-1-a', 'loadInformation548', 0, NULL), " .
"('6921', 'CISCO', 1, 1, 'SCCP69xx.9-4-1-3SR3', 'loadInformation496', 0, NULL), " .
"('6941', 'CISCO', 1, 1, 'SCCP69xx.9-3-1-3', 'loadInformation495', 0, NULL), " .
"('6945', 'CISCO', 1, 1, 'SCCP6945.9-3-1-3', 'loadInformation564', 0, NULL), " .
"('6961', 'CISCO', 1, 1, 'SCCP69xx.9-2-1-0', 'loadInformation497', 0, NULL), " .
"('7902', 'CISCO', 1, 1, 'CP7902080002SCCP060817A', 'loadInformation30008', 0, NULL), " .
"('7905', 'CISCO', 1, 1, 'CP7905080003SCCP070409A', 'loadInformation20000', 0, NULL), " .
"('7906', 'CISCO', 1, 1, 'SCCP11.9-4-2SR3-1S', 'loadInformation369', 1, 'SEP0000000000.cnf.xml_791x_template'), " .
"('7910', 'CISCO', 1, 1, 'P00405000700', 'loadInformation6', 1, 'SEP0000000000.cnf.xml_791x_template'), " .
"('7911', 'CISCO', 1, 1, 'SCCP11.9-4-2SR3-1S', 'loadInformation307', 1, 'SEP0000000000.cnf.xml_791x_template'), " .
"('7912', 'CISCO', 1, 1, 'CP7912080004SCCP080108A', 'loadInformation30007', 0, NULL), " .
"('7914', 'CISCO', 0, 14, 'S00105000400', 'loadInformation124', 1, NULL), " .
"('7914;7914', 'CISCO', 0, 28, 'S00105000400', 'loadInformation124', 1, NULL), " .
"('7915', 'CISCO', 0, 24, 'B015-1-0-4-2', 'loadInformation227', 1, NULL), " .
"('7915;7915', 'CISCO', 0, 48, 'B015-1-0-4-2', 'loadInformation228', 1, NULL), " .
"('7916', 'CISCO', 0, 24, 'B016-1-0-4-2', 'loadInformation229', 1, NULL), " .
"('7916;7916', 'CISCO', 0, 48, 'B016-1-0-4-2', 'loadInformation230', 1, NULL), " .
"('7920', 'CISCO', 1, 1, 'cmterm_7920.4.0-03-02', 'loadInformation30002', 0, NULL), " .
"('7921', 'CISCO', 1, 1, 'CP7921G-1.4.6.3', 'loadInformation365', 0, NULL), " .
"('7925', 'CISCO', 1, 6, 'CP7925G-1.4.1SR1', 'loadInformation484', 0, 'SEP0000000000.cnf.xml_7925_template'), " .
"('7926', 'CISCO', 1, 1, 'CP7926G-1.4.1SR1', 'loadInformation557', 0, NULL), " .
"('7931', 'CISCO', 1, 34, 'SCCP31.9-2-1S', 'loadInformation348', 0, NULL), " .
"('7935', 'CISCO', 1, 2, 'P00503021900', 'loadInformation9', 0, NULL), " .
"('7936', 'CISCO', 1, 1, 'cmterm_7936.3-3-21-0', 'loadInformation30019', 0, NULL), " .
"('7937', 'CISCO', 1, 1, 'apps37sccp.1-4-5-7', 'loadInformation431', 0, 'SEP0000000000.cnf.xml_7937_template'), " .
"('7940', 'CISCO', 1, 2, 'P0030801SR02', 'loadInformation8', 1, 'SEP0000000000.cnf.xml_7940_template'), " .
"('7941', 'CISCO', 1, 2, 'SCCP41.9-4-2SR3-1S', 'loadInformation115', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7941G-GE', 'CISCO', 1, 2, 'SCCP41.9-4-2SR3-1S', 'loadInformation309', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7942', 'CISCO', 1, 2, 'SCCP42.9-4-2SR3-1S', 'loadInformation434', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7945', 'CISCO', 1, 2, 'SCCP45.9-3-1SR1-1S', 'loadInformation435', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7960', 'CISCO', 3, 6, 'P0030801SR02', 'loadInformation7', 1, 'SEP0000000000.cnf.xml_7940_template'), " .
"('7961', 'CISCO', 3, 6, 'SCCP41.9-4-2SR3-1S', 'loadInformation30018', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7961G-GE', 'CISCO', 3, 6, 'SCCP41.9-4-2SR3-1S', 'loadInformation308', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7962', 'CISCO', 3, 6, 'SCCP42.9-4-2SR3-1S', 'loadInformation404', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7965', 'CISCO', 3, 6, 'SCCP45.9-3-1SR1-1S', 'loadInformation436', 0, 'SEP0000000000.cnf.xml_796x_template'), " .
"('7970', 'CISCO', 3, 8, 'SCCP70.9-4-2SR3-1S', 'loadInformation30006', 0, 'SEP0000000000.cnf.xml_797x_template'), " .
"('7971', 'CISCO', 1, 2, 'SCCP70.9-4-2SR3-1S', 'loadInformation119', 0, 'SEP0000000000.cnf.xml_797x_template'), " .
"('7975', 'CISCO', 3, 8, 'SCCP75.9-4-2SR3-1S', 'loadInformation437', 0, 'SEP0000000000.cnf.xml_7975_template'), " .
"('7985', 'CISCO', 3, 8, 'cmterm_7985.4-1-7-0', 'loadInformation302', 0, NULL), " .
"('8941', 'CISCO', 1, 1, 'SCCP894x.9-2-2-0', 'loadInformation586', 0, NULL), " .
"('8945', 'CISCO', 1, 1, 'SCCP894x.9-2-2-0', 'loadInformation585', 0, NULL), " .
"('ATA 186', 'CISCO', 1, 1, 'ATA030204SCCP090202A', 'loadInformation12', 0, 'SEP0000000000.cnf.xml_ATA_template'), " .
"('ATA 187', 'CISCO', 1, 1, 'ATA187.9-2-3-1', 'loadInformation550', 0, 'SEP0000000000.cnf.xml_ATA_template'), " .
"('CN622', 'MOTOROLA', 1, 1, '', 'loadInformation335', 0, NULL), " .
"('Digital Access', 'CISCO', 1, 1, 'D001M022', 'loadInformation40', 0, NULL), " .
"('Digital Access+', 'CISCO', 1, 1, 'D00303010033', 'loadInformation42', 0, NULL), " .
"('E-Series', 'NOKIA', 1, 1, '', '', 0, NULL), " .
"('ICC', 'NOKIA', 1, 1, '', '', 0, NULL), " .
"('Analog Access', 'CISCO', 1, 1, 'A001C030', 'loadInformation30', 0, ''),('WS-X6608', 'CISCO', 1, 1, 'D00404000032', 'loadInformation43', 0, ''), " .
"('WS-X6624', 'CISCO', 1, 1, 'A00204000013', 'loadInformation43', 0, ''), " .
"('WS-X6608', 'CISCO', 1, 1, 'C00104000003', 'loadInformation51', 0, ''), " .
"('H.323 Phone', 'CISCO', 1, 1, '', 'loadInformation61', 0, ''), " .
"('Simulator', 'CISCO', 1, 1, '', 'loadInformation100', 0, ''), " .
"('MTP', 'CISCO', 1, 1, '', 'loadInformation111', 0, ''), " .
"('MGCP Station', 'CISCO', 1, 1, '', 'loadInformation120', 0, ''), " .
"('MGCP Trunk', 'CISCO', 1, 1, '', 'loadInformation121', 0, ''), " .
"('UPC', 'CISCO', 1, 1, '', 'loadInformation358', 0, ''), ".
"('TelePresence', 'TELEPRESENCE', 1, 1, '', 'loadInformation375', 0, ''), " .
"('1000', 'TELEPRESENCE', 1, 1, '', 'loadInformation478', 0, ''), " .
"('3000', 'TELEPRESENCE', 1, 1, '', 'loadInformation479', 0, ''), " .
"('3200', 'TELEPRESENCE', 1, 1, '', 'loadInformation480', 0, ''), " .
"('500-37', 'TELEPRESENCE', 1, 1, '', 'loadInformation481', 0, ''), " .
"('1300-65', 'TELEPRESENCE', 1, 1, '', 'loadInformation505', 0, ''), " .
"('1100', 'TELEPRESENCE', 1, 1, '', 'loadInformation520', 0, ''), " .
"('200', 'TELEPRESENCE', 1, 1, '', 'loadInformation557', 0, ''), " .
"('400', 'TELEPRESENCE', 1, 1, '', 'loadInformation558', 0, ''), " .
"('EX90', 'TELEPRESENCE', 1, 1, '', 'loadInformation584', 0, ''), " .
"('500-32', 'TELEPRESENCE', 1, 1, '', 'loadInformation590', 0, ''), " .
"('1300-47', 'TELEPRESENCE', 1, 1, '', 'loadInformation591', 0, ''), " .
"('TX1310-65', 'TELEPRESENCE', 1, 1, '', 'loadInformation596', 0, ''), " .
"('EX60', 'TELEPRESENCE', 1, 1, '', 'loadInformation604', 0, ''), " .
"('C90', 'TELEPRESENCE', 1, 1, '', 'loadInformation606', 0, ''), " .
"('C60', 'TELEPRESENCE', 1, 1, '', 'loadInformation607', 0, ''), " .
"('C40', 'TELEPRESENCE', 1, 1, '', 'loadInformation608', 0, ''), " .
"('C20', 'TELEPRESENCE', 1, 1, '', 'loadInformation609', 0, ''), " .
"('C20-42', 'TELEPRESENCE', 1, 1, '', 'loadInformation610', 0, ''), " .
"('C60-42', 'TELEPRESENCE', 1, 1, '', 'loadInformation611', 0, ''), " .
"('C40-52', 'TELEPRESENCE', 1, 1, '', 'loadInformation612', 0, ''), " .
"('C60-52', 'TELEPRESENCE', 1, 1, '', 'loadInformation613', 0, ''), " .
"('C60-52D', 'TELEPRESENCE', 1, 1, '', 'loadInformation614', 0, ''), " .
"('C60-65', 'TELEPRESENCE', 1, 1, '', 'loadInformation615', 0, ''), " .
"('C90-65', 'TELEPRESENCE', 1, 1, '', 'loadInformation616', 0, ''), " .
"('MX200', 'TELEPRESENCE', 1, 1, '', 'loadInformation617', 0, ''), " .
"('TX9000', 'TELEPRESENCE', 1, 1, '', 'loadInformation619', 0, ''), " .
"('TX9200', 'TELEPRESENCE', 1, 1, '', 'loadInformation620', 0, ''), " .
"('SX20', 'TELEPRESENCE', 1, 1, '', 'loadInformation626', 0, ''), " .
"('MX300', 'TELEPRESENCE', 1, 1, '', 'loadInformation627', 0, ''), " .
"('C40-42', 'TELEPRESENCE', 1, 1, '', 'loadInformation633', 0, ''), " .
"('Jabber', 'CISCO', 1, 1, '', 'loadInformation652', 0, ''), ".
"('S60', 'NOKIA', 0, 1, '', 'loadInformation376', 0, ''), " .
"('9971', 'CISCO', 1, 1, '', 'loadInformation493', 0, ''), " .
"('9951', 'CISCO', 1, 1, '', 'loadInformation537', 0, ''), " .
"('8961', 'CISCO', 1, 1, '', 'loadInformation540', 0, ''), " .
"('Iphone', 'APPLE', 0, 1, '', 'loadInformation562', 0, ''), " .
"('Android', 'ANDROID', 0, 1, '', 'loadInformation575', 0, ''), " .
"('7926', 'CISCO', 1, 1, 'CP7926G-1.4.5.3', 'loadInformation577', 0, ''), " .
"('7821', 'CISCO', 1, 1, '', 'loadInformation621', 0, ''), " .
"('7841', 'CISCO', 1, 1, '', 'loadInformation622', 0, ''), " .
"('7861', 'CISCO', 1, 1, '', 'loadInformation623', 0, ''), " .
"('VXC 6215', 'CISCO', 1, 1, '', 'loadInformation634', 0, ''), " .
"('8831', 'CISCO', 1, 1, '', 'loadInformation659', 0, ''), " .
"('8841', 'CISCO', 1, 1, '', 'loadInformation683', 0, ''), " .
"('8851', 'CISCO', 1, 1, '', 'loadInformation684', 0, ''), " .
"('8861', 'CISCO', 1, 1, '', 'loadInformation685', 0, ''), ".
"('Analog', 'CISCO', 1, 1, '', 'loadInformation30027', 0, ''), " .
"('ISDN', 'CISCO', 1, 1, '', 'loadInformation30028', 0, ''), " .
"('SCCP GW', 'CISCO', 1, 1, '', 'loadInformation30032', 0, ''), " .
"('IP-STE', 'CISCO', 1, 1, '', 'loadInformation30035', 0, ''), ".
"('SPA 521S', 'CISCO', 1, 1, '', 'loadInformation80000', 0, ''), " .
"('SPA 502G', 'CISCO', 1, 1, '', 'loadInformation80003', 0, ''), " .
"('SPA 504G', 'CISCO', 1, 1, '', 'loadInformation80004', 0, ''), " .
"('SPA 525G', 'CISCO', 1, 1, '', 'loadInformation80005', 0, ''), " .
"('SPA 525G2', 'CISCO', 1, 1, '', 'loadInformation80009', 0, ''), " .
"('SPA 303G', 'CISCO', 1, 1, '', 'loadInformation80011', 0, ''),".
"('IP Communicator', 'CISCO', 1, 1, '', 'loadInformation30016', 0, NULL), " .
"('Nokia E', 'Nokia', 1, 28, '', 'loadInformation275', 0, NULL), " .
"('VGC Phone', 'CISCO', 1, 1, '', 'loadInformation10', 0, NULL),".
"('7911-sip', 'CISCO-SIP', 1, 1, 'SIP11.9-2-1S', 'loadInformation307', 1, 'SEP0000000000.cnf.xml_791x_sip_template'),".
"('9951-sip', 'CISCO-SIP', 1, 1, 'sip9951.9-2-2SR1-9', 'loadinformation537', 1, 'SEP0000000000.cnf.xml_99xx_sip_template'),".
"('VGC Virtual', 'CISCO', 1, 1, '', 'loadInformation11', 0, NULL);";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not create sccpdevmodel table, error:$check\n");
}
return true;
}
function InstallDB_updateSccpDevice()
{
global $db;
outn("" . _("Update sccpdevice") . "");
$sql = "UPDATE `sccpdevice` set audio_tos='0xB8',audio_cos='6',video_tos='0x88',video_cos='5' where audio_tos=NULL or audio_tos='';";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not REPLACE defaults into sccpdevice table\n");
}
}
function InstallDB_createButtonConfigTrigger()
{
global $db;
outn("" . _("(Re)Create buttonconfig trigger") . "");
$sql = "DROP TRIGGER IF EXISTS sccp_trg_buttonconfig;";
$sql .= "CREATE TRIGGER `sccp_trg_buttonconfig` BEFORE INSERT ON `sccpbuttonconfig` FOR EACH ROW BEGIN
IF NEW.`reftype` = 'sccpdevice' THEN
IF (SELECT COUNT(*) FROM `sccpdevice` WHERE `sccpdevice`.`name` = NEW.`ref` ) = 0 THEN
UPDATE `Foreign key contraint violated: ref does not exist in sccpdevice` SET x=1;
END IF;
END IF;
IF NEW.`reftype` = 'sccpline' THEN
IF (SELECT COUNT(*) FROM `sccpline` WHERE `sccpline`.`name` = NEW.`ref`) = 0 THEN
UPDATE `Foreign key contraint violated: ref does not exist in sccpline` SET x=1;
END IF;
END IF;
IF NEW.`buttontype` = 'line' THEN
SET @line_x = SUBSTRING_INDEX(NEW.`name`,'!',1);
SET @line_x = SUBSTRING_INDEX(@line_x,'@',1);
IF NEW.`reftype` != 'sipdevice' THEN
IF (SELECT COUNT(*) FROM `sccpline` WHERE `sccpline`.`name` = @line_x ) = 0 THEN
UPDATE `Foreign key contraint violated: line does not exist in sccpline` SET x=1;
END IF;
END IF;
END IF;
END;";
$check = $db->query($sql);
if (DB::IsError($check)) {
die_freepbx("Can not modify sccpdevice table\n");
}
outn("" . _("(Re)Create trigger Ok") . "");
// outn("" . $sql . "");
return true;
}
function InstallDB_updateDBVer($sccp_compatible)
{
global $db;
outn("" . _("Update DB Ver") . "");
$sql = "REPLACE INTO `sccpsettings` (`keyword`, `data`, `seq`, `type`) VALUES ('SccpDBmodel', '". $sccp_compatible. "','30','0');";
$results = $db->query($sql);
if (DB::IsError($results)) {
die_freepbx(sprintf(_("Error updating sccpsettings. Command was: %s; error was: %s "), $sql, $results->getMessage()));
}
return true;
}
function InstallDB_CreateSccpDeviceConfigView($sccp_compatible)
{
global $db;
outn("" . _("(Re)Create sccpdeviceconfig view") . "");
$sql = "";
if ($sccp_compatible < 431) {
$sql = "
CREATE OR REPLACE
ALGORITHM = MERGE
VIEW sccpdeviceconfig AS
SELECT GROUP_CONCAT( CONCAT_WS( ',', buttonconfig.type, buttonconfig.name, buttonconfig.options )
ORDER BY instance ASC
SEPARATOR ';' ) AS button,
`sccpdevice`.`type` AS `type`,`sccpdevice`.`addon` AS `addon`,`sccpdevice`.`description` AS `description`,`sccpdevice`.`tzoffset` AS `tzoffset`,
`sccpdevice`.`transfer` AS `transfer`,`sccpdevice`.`cfwdall` AS `cfwdall`,`sccpdevice`.`cfwdbusy` AS `cfwdbusy`,`sccpdevice`.`imageversion` AS `imageversion`,
`sccpdevice`.`deny` AS `deny`,`sccpdevice`.`permit` AS `permit`,`sccpdevice`.`dndFeature` AS `dndFeature`,`sccpdevice`.`directrtp` AS `directrtp`,
`sccpdevice`.`earlyrtp` AS `earlyrtp`,`sccpdevice`.`mwilamp` AS `mwilamp`,`sccpdevice`.`mwioncall` AS `mwioncall`,`sccpdevice`.`pickupexten` AS `pickupexten`,
`sccpdevice`.`pickupcontext` AS `pickupcontext`,`sccpdevice`.`pickupmodeanswer` AS `pickupmodeanswer`,`sccpdevice`.`private` AS `private`,
`sccpdevice`.`privacy` AS `privacy`,`sccpdevice`.`nat` AS `nat`,`sccpdevice`.`softkeyset` AS `softkeyset`,`sccpdevice`.`audio_tos` AS `audio_tos`,
`sccpdevice`.`audio_cos` AS `audio_cos`,`sccpdevice`.`video_tos` AS `video_tos`,`sccpdevice`.`video_cos` AS `video_cos`,`sccpdevice`.`conf_allow` AS `conf_allow`,
`sccpdevice`.`conf_play_general_announce` AS `conf_play_general_announce`,`sccpdevice`.`conf_play_part_announce` AS `conf_play_part_announce`,
`sccpdevice`.`conf_mute_on_entry` AS `conf_mute_on_entry`,`sccpdevice`.`conf_music_on_hold_class` AS `conf_music_on_hold_class`,
`sccpdevice`.`conf_show_conflist` AS `conf_show_conflist`,`sccpdevice`.`setvar` AS `setvar`,`sccpdevice`.`disallow` AS `disallow`,
`sccpdevice`.`allow` AS `allow`,`sccpdevice`.`backgroundImage` AS `backgroundImage`,`sccpdevice`.`ringtone` AS `ringtone`,`sccpdevice`.`name` AS `name`
FROM sccpdevice
LEFT JOIN sccpbuttonconfig buttonconfig ON ( buttonconfig.device = sccpdevice.name )
GROUP BY sccpdevice.name;";
} else {
/* $sql = "
CREATE OR REPLACE
ALGORITHM = MERGE
VIEW sccpdeviceconfig AS
SELECT IF(sccpdevice._profileid = 0,
GROUP_CONCAT(CONCAT_WS( ',', defbutton.buttontype, defbutton.name, defbutton.options ) ORDER BY defbutton.instance ASC SEPARATOR ';' ),
GROUP_CONCAT( CONCAT_WS( ',', userbutton.buttontype, userbutton.name, userbutton.options ) ORDER BY userbutton.instance ASC SEPARATOR ';' )
) AS button,
sccpdevice.*
FROM sccpdevice
LEFT JOIN sccpbuttonconfig defbutton ON ( defbutton.ref = sccpdevice.name )
LEFT JOIN sccpbuttonconfig userbutton ON ( userbutton.ref = sccpdevice._loginname )
LEFT JOIN sccpline ON ( sccpline.name = sccpdevice._loginname)
GROUP BY sccpdevice.name;";
*/
$sql = "DROP VIEW IF EXISTS `sccpdeviceconfig`;
DROP VIEW IF EXISTS `sccpuserconfig`;";
/// global $hw_mobil;
global $mobile_hw;
if ($mobile_hw == '1') {
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpdeviceconfig AS
SELECT GROUP_CONCAT( CONCAT_WS( ',', sccpbuttonconfig.buttontype, sccpbuttonconfig.name, sccpbuttonconfig.options )
ORDER BY instance ASC SEPARATOR ';' ) AS sccpbutton, sccpdevice.*
FROM sccpdevice
LEFT JOIN sccpbuttonconfig ON (sccpbuttonconfig.reftype = 'sccpdevice' AND sccpbuttonconfig.ref = sccpdevice.name )
GROUP BY sccpdevice.name; ";
$sql .= "CREATE OR REPLACE ALGORITHM = MERGE VIEW sccpuserconfig AS
SELECT GROUP_CONCAT( CONCAT_WS( ',', sccpbuttonconfig.buttontype, sccpbuttonconfig.name, sccpbuttonconfig.options )
ORDER BY instance ASC SEPARATOR ';' ) AS button, sccpuser.*
FROM sccpuser
LEFT JOIN sccpbuttonconfig ON ( sccpbuttonconfig.reftype = 'sccpuser' AND sccpbuttonconfig.ref = sccpuser.id)
GROUP BY sccpuser.name; ";
} else {
$sql .= "CREATE OR REPLACE
ALGORITHM = MERGE
VIEW sccpdeviceconfig AS
SELECT case sccpdevice._profileid
when 0 then
(select GROUP_CONCAT(CONCAT_WS( ',', defbutton.buttontype, defbutton.name, defbutton.options ) SEPARATOR ';') from `sccpbuttonconfig` as defbutton where defbutton.ref = sccpdevice.name ORDER BY defbutton.instance )
when 1 then
(select GROUP_CONCAT(CONCAT_WS( ',', userbutton.buttontype, userbutton.name, userbutton.options ) SEPARATOR ';') from `sccpbuttonconfig` as userbutton where userbutton.ref = sccpdevice._loginname ORDER BY userbutton.instance )
when 2 then
(select GROUP_CONCAT(CONCAT_WS( ',', homebutton.buttontype, homebutton.name, homebutton.options ) SEPARATOR ';') from `sccpbuttonconfig` as homebutton where homebutton.ref = sccpuser.homedevice ORDER BY homebutton.instance )
end as button, if(sccpdevice._profileid = 0, sccpdevice._description, sccpuser.description) as description, sccpdevice.*
FROM sccpdevice
LEFT JOIN sccpuser sccpuser ON ( sccpuser.name = sccpdevice._loginname )
GROUP BY sccpdevice.name;";
}
}
$results = $db->query($sql);
if (DB::IsError($results)) {
die_freepbx(sprintf(_("Error updating sccpdeviceconfig view. Command was: %s; error was: %s "), $sql, $results->getMessage()));
}
return true;
}
function CreateBackUpConfig()
{
global $amp_conf;
outn("" . _("Create Config BackUp") . "");
$cnf_int = \FreePBX::Config();
$backup_files = array('extensions','extconfig','res_mysql', 'res_config_mysql','sccp','sccp_hardware','sccp_extensions');
$backup_ext = array('_custom.conf', '_additional.conf','.conf');
$dir = $cnf_int->get('ASTETCDIR');
$fsql = $dir.'/sccp_backup_'.date("Ymd").'.sql';
$result = exec('mysqldump '.$amp_conf['AMPDBNAME'].' --password='.$amp_conf['AMPDBPASS'].' --user='.$amp_conf['AMPDBUSER'].' --single-transaction >'.$fsql, $output);
$zip = new \ZipArchive();
$filename = $dir . "/sccp_instal_backup" . date("Ymd"). ".zip";
if ($zip->open($filename, \ZIPARCHIVE::CREATE)) {
foreach ($backup_files as $file) {
foreach ($backup_ext as $b_ext) {
if (file_exists($dir . '/'.$file . $b_ext)) {
$zip->addFile($dir . '/'.$file . $b_ext);
}
}
}
if (file_exists($fsql)) {
$zip->addFile($fsql);
}
$zip->close();
} else {
outn("" . _("Error Create BackUp: ") . $filename ."");
}
unlink($fsql);
outn("" . _("Create Config BackUp: ") . $filename ."");
}
function RenameConfig()
{
global $amp_conf;
outn("" . _("Move Old Config") . "");
$cnf_int = \FreePBX::Config();
$rename_files = array('sccp_hardware','sccp_extensions');
$rename_ext = array('_custom.conf', '_additional.conf','.conf');
$dir = $cnf_int->get('ASTETCDIR');
foreach ($rename_files as $file) {
foreach ($rename_ext as $b_ext) {
if (file_exists($dir . '/'.$file . $b_ext)) {
rename($dir . '/'.$file . $b_ext, $dir . '/'.$file . $b_ext.'.old');
}
}
}
}
function Setup_RealTime()
{
global $amp_conf;
outn("" . _("Pre config RealTime") . "");
$cnf_int = \FreePBX::Config();
$cnf_wr = \FreePBX::WriteConfig();
$cnf_read = \FreePBX::LoadConfig();
$backup_ext = array('_custom.conf', '_additional.conf','.conf');
$def_config = array('sccpdevice' => 'mysql,sccp,sccpdeviceconfig', 'sccpline' => ' mysql,sccp,sccpline');
$def_bd_config = array('dbhost' => $amp_conf['AMPDBHOST'], 'dbname' => $amp_conf['AMPDBNAME'],
'dbuser' => $amp_conf['AMPDBUSER'], 'dbpass' => $amp_conf['AMPDBPASS'],
'dbport' => '3306', 'dbsock' => '/var/lib/mysql/mysql.sock','dbcharset'=>'utf8');
$def_bd_sec = 'sccp';
$dir = $cnf_int->get('ASTETCDIR');
$res_conf_sql = ini_get('pdo_mysql.default_socket');
$res_conf = '';
$ext_conf = '';
$ext_conf_file = 'extconfig.conf';
foreach ($backup_ext as $value) {
if (file_exists($dir . '/extconfig' . $value)) {
$ext_conf_file = 'extconfig' . $value;
$ext_conf = $cnf_read->getConfig($ext_conf_file);
break;
}
}
if (!empty($res_conf_sql)) {
if (file_exists($res_conf_sql)) {
$def_bd_config['dbsock'] = $res_conf_sql;
}
}
if (!empty($ext_conf)) {
$tmp = array();
if (!empty($ext_conf['settings']['sccpdevice'])) {
$tmp = explode(',', $ext_conf['settings']['sccpdevice']);
$def_config['sccpdevice'] = $ext_conf['settings']['sccpdevice'];
}
if (!empty($ext_conf['settings']['sccpline'])) {
if (empty($tmp)) {
$tmp = explode(',', $ext_conf['settings']['sccpline']);
$tmp[2] = 'sccpdevice';
$def_config['sccpdevice'] = implode(',', $tmp);
}
$def_config['sccpline'] = $ext_conf['settings']['sccpline'];
}
if (!empty($tmp)) {
$def_bd_sec = $tmp[1];
}
}
$ext_conf['settings']['sccpdevice'] = $def_config['sccpdevice'];
$ext_conf['settings']['sccpline'] = $def_config['sccpline'];
if (file_exists($dir . '/res_mysql.conf')) {
$res_conf = $cnf_read->getConfig('res_mysql.conf');
if (empty($res_conf[$def_bd_sec])) {
$res_conf[$def_bd_sec] = $def_bd_config;
}
$cnf_wr->writeConfig('res_mysql.conf', $res_conf, false);
}
if (file_exists($dir . '/res_config_mysql.conf')) {
$res_conf = $cnf_read->getConfig('res_config_mysql.conf');
if (empty($res_conf[$def_bd_sec])) {
$res_conf[$def_bd_sec] = $def_bd_config;
}
$cnf_wr->writeConfig('res_config_mysql.conf', $res_conf, false);
}
if (empty($res_conf)) {
$res_conf[$def_bd_sec] = $def_bd_config;
// $res_conf['general']['dbsock'] = $def_bd_config['dbsock'];
$cnf_wr->writeConfig('res_config_mysql.conf', $res_conf, false);
}
$cnf_wr->writeConfig($ext_conf_file, $ext_conf, false);
}
CheckSCCPManagerDBTables($table_req);
#CheckPermissions();
CheckAsteriskVersion();
$sccp_version = array();
$sccp_version = CheckChanSCCPCompatible();
$sccp_compatible = $sccp_version[0];
$chanSCCPWarning = $sccp_version[1] ^= 1;
outn("" . _("Sccp model Compatible code : ") . $resultReturned[0] . "");
if ($sccp_compatible == 0) {
// die_freepbx('Chan Sccp not Found. Install it before continuing');
outn("
");
outn("Chan Sccp not Found. Install it before continuing !");
die();
}
$db_config = Get_DB_config($sccp_compatible);
$sccp_db_ver = CheckSCCPManagerDBVersion();
// BackUp Old config
CreateBackUpConfig();
RenameConfig();
if ($sccp_compatible > 431) {
InstallDB_sccpuser();
InstallDB_Buttons();
}
InstallDB_sccpsettings();
InstallDB_sccpdevmodel();
InstallDB_updateSchema($db_config);
$stmt = $db->prepare('SELECT CASE WHEN EXISTS(SELECT 1 FROM sccpdevmodel) THEN 0 ELSE 1 END AS IsEmpty;');
$stmt->execute();
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
if ($result[0]['IsEmpty']) {
outn("Populating sccpdevmodel...");
InstallDB_fillsccpdevmodel();
}
if (!$sccp_db_ver) {
InstallDB_updateSccpDevice();
} else {
outn("Skip update Device model");
}
InstallDB_createButtonConfigTrigger();
InstallDB_CreateSccpDeviceConfigView($sccp_compatible);
InstallDB_updateDBVer($sccp_compatible);
if ($chanSCCPWarning) {
outn("
");
outn("Warning: Upgrade chan_sccp_b to use full ami functionality");
}
if (!$sccp_db_ver) {
Setup_RealTime();
outn("
");
outn("Install Complete !");
} else {
outn("
");
outn("Update Complete !");
}
outn("
");
// $ss->handleSubmit($request);
// $ss->createDefaultSccpConfig();
// $ss->saveSccpSettings();
//
//}