diff --git a/Sccp_manager.class.php b/Sccp_manager.class.php index c08e21e..7e6381e 100644 --- a/Sccp_manager.class.php +++ b/Sccp_manager.class.php @@ -742,7 +742,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { foreach ($request['idn'] as $idv) { if ($this->strpos_array($idv, array('SEP', 'ATA', 'VG')) !== false) { $this->dbinterface->write('sccpdevice', array('name' => $idv), 'delete', "name"); - $this->dbinterface->write("sccpbuttons", array(), 'delete', '', $idv); + $this->dbinterface->write('sccpbuttons', array(), 'delete', '', $idv); $this->deleteSccpDeviceXML($idv); // Концы в вводу !! $this->srvinterface->sccpDeviceReset($idv); } @@ -1289,9 +1289,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { $save_settings[$key] = $value; } } - $this->dbinterface->write("sccpdevice", $save_settings, 'replace'); + $this->dbinterface->write('sccpdevice', $save_settings, 'replace'); $save_buttons = $this->getPhoneButtons($get_settings, $name_dev, $hw_type); - $this->dbinterface->write("sccpbuttons", $save_buttons, $update_hw, 'add', $name_dev); //was empty so would fall through to INSERT + $this->dbinterface->write('sccpbuttons', $save_buttons, $update_hw, '', $name_dev); $this->createSccpDeviceXML($name_dev); if ($hw_id == 'new') { $this->srvinterface->sccpDeviceReset($name_dev); @@ -1482,8 +1482,8 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { $save_settings[$key] = $value; } } - $this->dbinterface->write("sccpuser", $save_settings, 'replace', 'name'); - $this->dbinterface->write("sccpbuttons", $save_buttons, 'delete', '', $name_dev); //standardise to delete + $this->dbinterface->write('sccpuser', $save_settings, 'replace', 'name'); + $this->dbinterface->write('sccpbuttons', $save_buttons, 'delete', '', $name_dev); //standardise to delete return $save_buttons; // Why is there a second return here??????? return $save_settings; @@ -1856,7 +1856,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO { if (empty($save_buttons)) { return array('Response' => 'No update required', 'data' => ' 0 - records '); } - $res = $this->dbinterface->write("sccpbuttons", $save_buttons, 'replace', '', ''); + $res = $this->dbinterface->write('sccpbuttons', $save_buttons, 'replace', '', ''); return array('Response' => 'Update records :' . count($save_buttons), 'data' => $res); } diff --git a/Sccp_manager.inc/dbinterface.class.php b/Sccp_manager.inc/dbinterface.class.php index e36f2de..9f79c80 100644 --- a/Sccp_manager.inc/dbinterface.class.php +++ b/Sccp_manager.inc/dbinterface.class.php @@ -147,7 +147,6 @@ class dbinterface $stmt->execute(); $raw_settings = $stmt->fetch(\PDO::FETCH_ASSOC); } elseif (!empty($stmts)) { -dbug('statement is before execute', $stmts); $stmts->execute(); $raw_settings = $stmts->fetchAll(\PDO::FETCH_ASSOC); } @@ -331,18 +330,34 @@ dbug('statement is before execute', $stmts); $result = $stmt->execute(); break; case 'replace': - if (!empty($save_value)) { - $stmt = $dbh->prepare('UPDATE sccpbuttonconfig SET name =? WHERE ref = ? AND reftype =? AND instance =? AND buttontype =?'); - $result= $dbh->executeMultiple($stmt, $save_value); + foreach ($save_value as $button_array) { + $stmt = $dbh->prepare('UPDATE sccpbuttonconfig SET name =:name WHERE ref = :ref AND reftype =:reftype AND instance = :instance AND buttontype = :buttontype'); + $stmt->bindParam(':ref', $button_array['ref'],\PDO::PARAM_STR); + $stmt->bindParam(':reftype', $button_array['reftype'],\PDO::PARAM_STR); + $stmt->bindParam(':instance', $button_array['instance'],\PDO::PARAM_INT); + $stmt->bindParam(':buttontype', $button_array['type'],\PDO::PARAM_STR); + $stmt->bindParam(':name', $button_array['name'],\PDO::PARAM_STR); + $result= $dbh->execute(); } break; case 'add': - if (!empty($save_value)) { - $stmt = $dbh->prepare('INSERT INTO sccpbuttonconfig (ref, reftype, instance, buttontype, name, options) VALUES (?,?,?,?,?,?)'); - $result = $dbh->executeMultiple($stmt, $save_value); + foreach ($save_value as $button_array) { + $stmt = $dbh->prepare('INSERT INTO sccpbuttonconfig (ref, reftype, instance, buttontype, name, options) VALUES (:ref, :reftype, :instance, :buttontype, :name, :options)'); + $stmt->bindParam(':ref', $button_array['ref'],\PDO::PARAM_STR); + $stmt->bindParam(':reftype', $button_array['reftype'],\PDO::PARAM_STR); + $stmt->bindParam(':instance', $button_array['instance'],\PDO::PARAM_INT); + $stmt->bindParam(':buttontype', $button_array['type'],\PDO::PARAM_STR); + $stmt->bindParam(':name', $button_array['name'],\PDO::PARAM_STR); + $stmt->bindParam(':options', $button_array['options'],\PDO::PARAM_STR); + $result = $stmt->execute(); } break; - // No default case - must be specific in request. + case 'clear'; + // Clear is equivalent of delete + insert. + $this->write('sccpbuttons', '', $mode = 'delete','', $hwid); + $this->write('sccpbuttons', $save_value, $mode = 'add','', $hwid); + break; + // No default case - must be specific in request. } } return $result;