diff --git a/airtime_mvc/application/common/Database.php b/airtime_mvc/application/common/Database.php index 2c61bc589..bb9557474 100644 --- a/airtime_mvc/application/common/Database.php +++ b/airtime_mvc/application/common/Database.php @@ -2,9 +2,11 @@ class Application_Common_Database { public static function prepareAndExecute($sql, array $paramValueMap, - $type='all', $fetchType=PDO::FETCH_ASSOC) + $type='all', $fetchType=PDO::FETCH_ASSOC, $con=null) { - $con = Propel::getConnection(); + if (is_null($con)) { + $con = Propel::getConnection(); + } $stmt = $con->prepare($sql); foreach ($paramValueMap as $param => $v) { $stmt->bindValue($param, $v); diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index e96d4e888..6cba9814c 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -11,6 +11,9 @@ class Application_Model_Preference private static function setValue($key, $value, $isUserValue = false, $userId = null) { try { + $con = Propel::getConnection(CcPrefPeer::DATABASE_NAME); + $con->beginTransaction(); + //called from a daemon process if (!class_exists("Zend_Auth", false) || !Zend_Auth::getInstance()->hasIdentity()) { $id = NULL; @@ -35,7 +38,11 @@ class Application_Model_Preference $paramMap[':id'] = $userId; } - $result = Application_Common_Database::prepareAndExecute($sql, $paramMap, 'column'); + $result = Application_Common_Database::prepareAndExecute($sql, + $paramMap, + 'column', + PDO::FETCH_ASSOC, + $con); $paramMap = array(); if ($result > 1) { @@ -80,9 +87,15 @@ class Application_Model_Preference $paramMap[':key'] = $key; $paramMap[':value'] = $value; - Application_Common_Database::prepareAndExecute($sql, $paramMap, 'execute'); + Application_Common_Database::prepareAndExecute($sql, + $paramMap, + 'execute', + PDO::FETCH_ASSOC, + $con); + $con->commit(); } catch (Exception $e) { + $con->rollback(); header('HTTP/1.0 503 Service Unavailable'); Logging::info("Database error: ".$e->getMessage()); exit;