Preferences: Fix saving preferences when using a database store

Our DbSelect::where() is not (or no longer?) compatible w/ Zend_Db_Select::where().
DbStore::load() now uses Zend_Db_Select but we should definitely think about our
DbSelect::where() implementation.

fixes #7353
This commit is contained in:
Eric Lippmann 2014-10-30 09:49:21 +01:00
parent c4554ac692
commit 1b83ec3ce2
2 changed files with 8 additions and 6 deletions

View File

@ -72,9 +72,11 @@ class DbStore extends PreferencesStore
public function load() public function load()
{ {
try { try {
$select = $this->getStoreConfig()->connection->select(); $select = $this->getStoreConfig()->connection->getDbAdapter()->select();
$result = $select->from($this->table, array(self::COLUMN_PREFERENCE, self::COLUMN_VALUE)) $result = $select
->from($this->table, array(self::COLUMN_PREFERENCE, self::COLUMN_VALUE))
->where(self::COLUMN_USERNAME . ' = ?', $this->getUser()->getUsername()) ->where(self::COLUMN_USERNAME . ' = ?', $this->getUser()->getUsername())
->query()
->fetchAll(); ->fetchAll();
} catch (Exception $e) { } catch (Exception $e) {
throw new NotReadableError( throw new NotReadableError(
@ -132,7 +134,7 @@ class DbStore extends PreferencesStore
*/ */
protected function insert(array $preferences) protected function insert(array $preferences)
{ {
$db = $this->getStoreConfig()->connection->getConnection(); $db = $this->getStoreConfig()->connection->getDbAdapter();
try { try {
foreach ($preferences as $key => $value) { foreach ($preferences as $key => $value) {
@ -163,7 +165,7 @@ class DbStore extends PreferencesStore
*/ */
protected function update(array $preferences) protected function update(array $preferences)
{ {
$db = $this->getStoreConfig()->connection->getConnection(); $db = $this->getStoreConfig()->connection->getDbAdapter();
try { try {
foreach ($preferences as $key => $value) { foreach ($preferences as $key => $value) {
@ -194,7 +196,7 @@ class DbStore extends PreferencesStore
*/ */
protected function delete(array $preferenceKeys) protected function delete(array $preferenceKeys)
{ {
$db = $this->getStoreConfig()->connection->getConnection(); $db = $this->getStoreConfig()->connection->getDbAdapter();
try { try {
$db->delete( $db->delete(

View File

@ -167,7 +167,7 @@ class DbStoreTest extends BaseTestCase
return new DbStoreWithSetPreferences( return new DbStoreWithSetPreferences(
new Zend_Config( new Zend_Config(
array( array(
'connection' => Mockery::mock(array('getConnection' => $dbMock)) 'connection' => Mockery::mock(array('getDbAdapter' => $dbMock))
) )
), ),
Mockery::mock('Icinga\User', array('getUsername' => 'unittest')) Mockery::mock('Icinga\User', array('getUsername' => 'unittest'))