Switch to PDO model
Switch to PDO model and correct transactions
This commit is contained in:
parent
c77c8b76cc
commit
a1c020c772
|
@ -1868,10 +1868,22 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
|
||||||
// $save_settings = array();
|
// $save_settings = array();
|
||||||
if (empty($save_value)) {
|
if (empty($save_value)) {
|
||||||
$this->dbinterface->write('sccpsettings', $this->sccpvalues, 'clear');
|
$this->dbinterface->write('sccpsettings', $this->sccpvalues, 'clear');
|
||||||
|
|
||||||
|
/* foreach ($this->sccpvalues as $key => $val) {
|
||||||
|
if ((trim($val['data']) !== '') or ($val['data'] == '0')) {
|
||||||
|
$save_settings[] = array($key, $val['data'], $val['seq'], $val['type']);
|
||||||
|
} else {
|
||||||
|
$unsaved_settings[] = array($key, $val['data'], $val['seq'], $val['type']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->dbinterface->write('sccpsettings', $save_settings, 'clear');
|
||||||
|
*/
|
||||||
} else {
|
} else {
|
||||||
$this->dbinterface->write('sccpsettings', $save_value, 'update');
|
$this->dbinterface->write('sccpsettings', $save_value, 'update');
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -45,7 +45,6 @@ class dbinterface
|
||||||
|
|
||||||
public function HWextension_db_SccpTableData($dataid, $data = array())
|
public function HWextension_db_SccpTableData($dataid, $data = array())
|
||||||
{
|
{
|
||||||
// $stmt is a single row fetch, $stmts is a fetchAll.
|
|
||||||
global $db;
|
global $db;
|
||||||
$stmt = '';
|
$stmt = '';
|
||||||
$stmts = '';
|
$stmts = '';
|
||||||
|
@ -60,7 +59,7 @@ class dbinterface
|
||||||
$stmts = $db->prepare('SELECT * FROM sccpline WHERE name = $data[name]');
|
$stmts = $db->prepare('SELECT * FROM sccpline WHERE name = $data[name]');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'SccpDevice':
|
case "SccpDevice":
|
||||||
$filtered ='';
|
$filtered ='';
|
||||||
$singlerow = false;
|
$singlerow = false;
|
||||||
if (empty($data['fields'])) {
|
if (empty($data['fields'])) {
|
||||||
|
@ -113,22 +112,22 @@ class dbinterface
|
||||||
case 'HWextension':
|
case 'HWextension':
|
||||||
$raw_settings = $this->getDb_model_info($get = "extension", $format_list = "model");
|
$raw_settings = $this->getDb_model_info($get = "extension", $format_list = "model");
|
||||||
break;
|
break;
|
||||||
case 'get_columns_sccpdevice':
|
case "get_colums_sccpdevice":
|
||||||
$sql = 'DESCRIBE sccpdevice';
|
$sql = "DESCRIBE sccpdevice";
|
||||||
$stmt = $db->prepare($sql);
|
$stmt = $db->prepare($sql);
|
||||||
break;
|
break;
|
||||||
case 'get_columns_sccpuser':
|
case "get_colums_sccpuser":
|
||||||
$sql = 'DESCRIBE sccpuser';
|
$sql = "DESCRIBE sccpuser";
|
||||||
$stmts = $db->prepare($sql);
|
$stmts = $db->prepare($sql);
|
||||||
break;
|
break;
|
||||||
case 'get_sccpdevice_byid':
|
case "get_sccpdevice_byid":
|
||||||
$sql = 'SELECT t1.*, types.dns, types.buttons, types.loadimage, types.nametemplate as nametemplate,
|
$sql = 'SELECT t1.*, types.dns, types.buttons, types.loadimage, types.nametemplate as nametemplate, '
|
||||||
addon.buttons as addon_buttons FROM sccpdevice AS t1
|
. 'addon.buttons as addon_buttons FROM sccpdevice AS t1 '
|
||||||
LEFT JOIN sccpdevmodel as types ON t1.type=types.model
|
. 'LEFT JOIN sccpdevmodel as types ON t1.type=types.model '
|
||||||
LEFT JOIN sccpdevmodel as addon ON t1.addon=addon.model WHERE name =\'' . $data['id'] . '\'';
|
. 'LEFT JOIN sccpdevmodel as addon ON t1.addon=addon.model WHERE name="' . $data['id'] . '';
|
||||||
$stmt = $db->prepare($sql);
|
$stmt = $db->prepare($sql);
|
||||||
break;
|
break;
|
||||||
case 'get_sccpuser':
|
case "get_sccpuser":
|
||||||
$sql = 'SELECT * FROM sccpuser ';
|
$sql = 'SELECT * FROM sccpuser ';
|
||||||
if (!empty($data['id'])) {
|
if (!empty($data['id'])) {
|
||||||
$sql .= 'WHERE name= ' . $data['id'] . '';
|
$sql .= 'WHERE name= ' . $data['id'] . '';
|
||||||
|
@ -192,6 +191,7 @@ class dbinterface
|
||||||
if ($format_list === 'model') {
|
if ($format_list === 'model') {
|
||||||
$sel_inf = 'model, vendor, dns, buttons, 0 as validate';
|
$sel_inf = 'model, vendor, dns, buttons, 0 as validate';
|
||||||
}
|
}
|
||||||
|
$sel_inf .= ", '0' as 'validate'";
|
||||||
switch ($get) {
|
switch ($get) {
|
||||||
case 'byciscoid':
|
case 'byciscoid':
|
||||||
if (!empty($filter)) {
|
if (!empty($filter)) {
|
||||||
|
@ -199,7 +199,7 @@ class dbinterface
|
||||||
if (strpos($filter['model'], 'loadInformation')) {
|
if (strpos($filter['model'], 'loadInformation')) {
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (loadinformationid =' . $filter['model'] . ') ORDER BY model';
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (loadinformationid =' . $filter['model'] . ') ORDER BY model';
|
||||||
} else {
|
} else {
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (loadinformationid = loadInformation' . $filter['model'] . ') ORDER BY model';
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (loadinformationid =loadInformation' . $filter['model'] . ') ORDER BY model';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// $sql = "SELECT ".$filter['model'];
|
// $sql = "SELECT ".$filter['model'];
|
||||||
|
@ -219,29 +219,31 @@ class dbinterface
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'extension':
|
case "extension":
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns = 0) and (enabled > 0) ORDER BY model'; //check table
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns = 0) and (enabled > 0) ORDER BY model'; //check table
|
||||||
break;
|
break;
|
||||||
case 'enabled':
|
case "enabled":
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE enabled > 0 ORDER BY model '; //previously this fell through to phones.
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE enabled > 0 ORDER BY model ';
|
||||||
break;
|
break;
|
||||||
case 'phones':
|
case "phones":
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) ORDER BY model '; //check table
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) ORDER BY model '; //check table
|
||||||
break;
|
break;
|
||||||
case 'ciscophones':
|
case "ciscophones":
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) AND vendor NOT LIKE \'%-sip\' ORDER BY model';
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) AND vendor NOT LIKE \'%-sip\' ORDER BY model';
|
||||||
break;
|
break;
|
||||||
case 'sipphones':
|
case "sipphones":
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) AND `vendor` LIKE \'%-sip\' ORDER BY model';
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel WHERE (dns > 0) and (enabled > 0) AND `vendor` LIKE \'%-sip\' ORDER BY model';
|
||||||
break;
|
break;
|
||||||
case 'all': // Fall through to default
|
case "all":
|
||||||
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel ORDER BY model';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel ORDER BY model';
|
$sql = 'SELECT ' . $sel_inf . ' FROM sccpdevmodel ORDER BY model';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$stmt = $db->prepare($sql);
|
$stmt = $db->prepare($sql);
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
return $stmt->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
function write($table_name = "", $save_value = array(), $mode = 'update', $key_fld = "", $hwid = "")
|
function write($table_name = "", $save_value = array(), $mode = 'update', $key_fld = "", $hwid = "")
|
||||||
|
@ -253,37 +255,42 @@ class dbinterface
|
||||||
$delete_value = array();
|
$delete_value = array();
|
||||||
switch ($table_name) {
|
switch ($table_name) {
|
||||||
case 'sccpsettings':
|
case 'sccpsettings':
|
||||||
$time = -microtime(true);
|
foreach ($save_value as $key_v => $data) {
|
||||||
if ($mode == 'clear') {
|
if (!empty($data) && isset($data['data'])) {
|
||||||
$db->prepare('TRUNCATE sccpsettings')->execute();
|
if ($data['data'] == $this->val_null) {
|
||||||
$stmt = $db->prepare('INSERT INTO sccpsettings (keyword, data, seq, type) VALUES (:keyword,:data,:seq,:type)');
|
$delete_value[] = $save_value[$key_v]['keyword'];
|
||||||
} else {
|
unset($save_value[$key_v]);
|
||||||
$stmt = $db->prepare('REPLACE INTO sccpsettings (keyword, data, seq, type) VALUES (:keyword,:data,:seq,:type)');
|
}
|
||||||
}
|
/* if (isset($data['data'])) {
|
||||||
foreach ($save_value as $key => $dataArr) {
|
if ($data['data'] == $this->val_null) {
|
||||||
if (!empty($dataArr) && isset($dataArr['data'])) {
|
$delete_value[] = $save_value[$key_v]['keyword'];
|
||||||
if ($dataArr['data'] == $this->val_null) {
|
unset($save_value[$key_v]);
|
||||||
$delete_value[] = $save_value[$key]['keyword'];
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
*/ }
|
||||||
$stmt->bindParam(':keyword',$dataArr['keyword'],\PDO::PARAM_STR);
|
|
||||||
$stmt->bindParam(':data',$dataArr['data'],\PDO::PARAM_STR);
|
|
||||||
$stmt->bindParam(':seq',$dataArr['seq'],\PDO::PARAM_INT);
|
|
||||||
$stmt->bindParam(':type',$dataArr['type'],\PDO::PARAM_INT);
|
|
||||||
$result = $stmt->execute();
|
|
||||||
}
|
}
|
||||||
if (!empty($delete_value)) {
|
if ($mode == 'clear') {
|
||||||
$stmt = $db->prepare('DELETE FROM sccpsettings WHERE keyword = :keyword');
|
// $sql = 'truncate `sccpsettings`';
|
||||||
foreach ($delete_value as $del_key) {
|
$db->prepare('TRUNCATE sccpsettings')->execute();
|
||||||
$stmt->bindParam(':keyword',$del_key,\PDO::PARAM_STR);
|
$stmt = $db->prepare('INSERT INTO sccpsettings (`keyword`, `data`, `seq`, `type`) VALUES (?,?,?,?)');
|
||||||
$result = $stmt->execute();
|
$result = $db->executeMultiple($stmt, $save_value);
|
||||||
|
} else {
|
||||||
|
if (!empty($delete_value)) {
|
||||||
|
$stmt = $db->prepare('DELETE FROM sccpsettings WHERE `keyword`=?');
|
||||||
|
$result = $db->executeMultiple($stmt, $delete_value);
|
||||||
|
}
|
||||||
|
if (!empty($save_value)) {
|
||||||
|
$stmt = $db->prepare('REPLACE INTO sccpsettings (`keyword`, `data`, `seq`, `type`) VALUES (?,?,?,?)');
|
||||||
|
$result = $db->executeMultiple($stmt, $save_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'sccpdevmodel': // Fall through to next intentionally
|
case 'sccpdevmodel':
|
||||||
case 'sccpdevice': // Fall through to next intentionally
|
break;
|
||||||
|
case 'sccpdevice':
|
||||||
|
break;
|
||||||
case 'sccpuser':
|
case 'sccpuser':
|
||||||
|
$sql_db = $table_name;
|
||||||
$sql_key = "";
|
$sql_key = "";
|
||||||
$sql_var = "";
|
$sql_var = "";
|
||||||
foreach ($save_value as $key_v => $data) {
|
foreach ($save_value as $key_v => $data) {
|
||||||
|
@ -300,39 +307,40 @@ class dbinterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!empty($sql_var)) {
|
if (!empty($sql_var)) {
|
||||||
switch ($mode) {
|
if ($mode == 'delete') {
|
||||||
case 'delete':
|
$req = 'DELETE FROM sccpuser WHERE ' . $sql_key . '';
|
||||||
$req = 'DELETE FROM '. $table_name . ' WHERE ' . $sql_key;
|
} else {
|
||||||
break;
|
if ($mode == 'update') {
|
||||||
case 'update':
|
$req = 'UPDATE sccpuser SET ' . $sql_var . WHERE . $sql_key . '';
|
||||||
$req = 'UPDATE ' . $table_name . ' SET ' . $sql_var . ' WHERE ' . $sql_key;
|
} else {
|
||||||
break;
|
$req = 'REPLACE INTO sccpuser SET ' . $sql_var . '';
|
||||||
default:
|
}
|
||||||
$req = 'REPLACE INTO ' . $table_name . ' SET ' . $sql_var;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$result = $db->prepare($req)->execute();
|
$result = $db->prepare($req)->execute();
|
||||||
break;
|
break;
|
||||||
case 'sccpbuttons':
|
case 'sccpbuttons':
|
||||||
switch ($mode) {
|
if (($mode == 'clear') || ($mode == 'delete')) {
|
||||||
case 'clear': // no break here as clear is same as delete
|
$sql = 'DELETE FROM sccpbuttonconfig WHERE ref=' . $hwid . '';
|
||||||
case 'delete':
|
$result = $db->prepare($sql)->execute();
|
||||||
$sql = 'DELETE FROM sccpbuttonconfig WHERE ref=' . $hwid . '';
|
}
|
||||||
$result = $db->prepare($sql)->execute();
|
if ($mode == 'delete') {
|
||||||
break;
|
break;
|
||||||
case 'replace':
|
}
|
||||||
if (!empty($save_value)) {
|
if (empty($save_value)) {
|
||||||
$sql = 'UPDATE sccpbuttonconfig SET name =? WHERE ref = ? AND reftype =? AND instance =? AND buttontype =?';
|
break;
|
||||||
$stmt = $db->prepare($sql);
|
}
|
||||||
$result= $db->executeMultiple($stmt, $save_value);
|
if ($mode == 'replace') {
|
||||||
}
|
$sql = 'UPDATE sccpbuttonconfig SET `name`=? WHERE `ref`= ? AND `reftype`=? AND `instance`=? AND `buttontype`=?';
|
||||||
break;
|
// $sql = 'INSERT INTO `sccpbuttonconfig` (`ref`, `reftype`,`instance`, `buttontype`, `name`, `options`) VALUES (?,?,?,?,?,?);';
|
||||||
default:
|
// die(print_r($save_value,1));
|
||||||
if (!empty($save_value)) {
|
$stmt = $db->prepare($sql);
|
||||||
$sql = 'INSERT INTO sccpbuttonconfig (ref, reftype, instance, buttontype, name, options) VALUES (?,?,?,?,?,?)';
|
$result= $db->executeMultiple($stmt, $save_value);
|
||||||
$stmt = $db->prepare($sql);
|
} else {
|
||||||
$result = $db->executeMultiple($stmt, $save_value);
|
$sql = 'INSERT INTO sccpbuttonconfig (`ref`, `reftype`,`instance`, `buttontype`, `name`, `options`) VALUES (?,?,?,?,?,?)';
|
||||||
}
|
// die(print_r($save_value,1));
|
||||||
|
$stmt = $db->prepare($sql);
|
||||||
|
$result = $db->executeMultiple($stmt, $save_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
@ -355,15 +363,11 @@ class dbinterface
|
||||||
public function validate()
|
public function validate()
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
$result = 0;
|
$result = false;
|
||||||
$check_fields = [
|
$check_fields = array('430' => array('_hwlang' => "varchar(12)"), '431' => array('private'=> "enum('on','off')"), '433' => array('directed_pickup'=>'') );
|
||||||
'430' => ['_hwlang' => "varchar(12)"],
|
|
||||||
'431' => ['private'=> "enum('on','off')"],
|
|
||||||
'433' => ['directed_pickup'=>'']
|
|
||||||
];
|
|
||||||
$stmt = $db->prepare('DESCRIBE sccpdevice');
|
$stmt = $db->prepare('DESCRIBE sccpdevice');
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC) as $value) {
|
foreach ($stmt->fetchAll() as $value) {
|
||||||
$id_result[$value['Field']] = $value['Type'];
|
$id_result[$value['Field']] = $value['Type'];
|
||||||
}
|
}
|
||||||
foreach ($check_fields as $key => $value) {
|
foreach ($check_fields as $key => $value) {
|
||||||
|
@ -378,6 +382,7 @@ class dbinterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue