From 18319f51e54e60b0905e6dc85137b3ea5968af55 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Thu, 11 Apr 2013 10:20:50 +0000 Subject: [PATCH] Fix a bug that affected dialplan entries for ring groups when using MySQL. Add additional exception handling. --- app/ring_groups/ring_groups_edit.php | 5 +---- includes/classes/database.php | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/ring_groups/ring_groups_edit.php b/app/ring_groups/ring_groups_edit.php index 71095a3e82..e9fb0bc1a9 100644 --- a/app/ring_groups/ring_groups_edit.php +++ b/app/ring_groups/ring_groups_edit.php @@ -253,13 +253,11 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql = "select count(*) as num_rows from v_dialplans "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and dialplan_uuid = '".$dialplan_uuid."' "; - $db->exec(check_sql($sql)); $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + $row = $prep_statement->fetchAll(PDO::FETCH_ASSOC); if ($row['num_rows'] == 0) { - //add the dialplan require_once "includes/classes/database.php"; $database = new database; @@ -313,7 +311,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { //apply settings reminder $_SESSION["reload_xml"] = true; - } } diff --git a/includes/classes/database.php b/includes/classes/database.php index fbe7f5c577..358551db99 100644 --- a/includes/classes/database.php +++ b/includes/classes/database.php @@ -125,7 +125,6 @@ include "root.php"; } unset ($file_contents, $sql); $db->commit(); - if (is_writable($this->path.'/'.$this->name)) { //is writable - use database in current location } @@ -429,8 +428,22 @@ include "root.php"; $i++; } $sql .= ")"; - $this->sql = $sql; - $this->db->exec($sql); + //execute the query, show exceptions + $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + try { + $this->sql = $sql; + $this->db->exec($sql); + } + catch(PDOException $e) { + echo "Error:
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + echo $e->getMessage(); + echo "
\n"; + } unset($this->fields); unset($sql); }