diff options
author | Jaime Perez Crespo <jaime.perez@uninett.no> | 2016-02-17 15:13:15 +0100 |
---|---|---|
committer | Jaime Perez Crespo <jaime.perez@uninett.no> | 2016-02-17 15:24:43 +0100 |
commit | 84547358ec38473cc1725affbebde7fe7c945bd1 (patch) | |
tree | 3495a99357c4c30110c926461534cdf0e1e049f0 /lib/SimpleSAML | |
parent | c20bf1823e3015db5cd1809768794d4b2d72bb46 (diff) | |
download | simplesamlphp-84547358ec38473cc1725affbebde7fe7c945bd1.zip simplesamlphp-84547358ec38473cc1725affbebde7fe7c945bd1.tar.gz simplesamlphp-84547358ec38473cc1725affbebde7fe7c945bd1.tar.bz2 |
Bugfix. While SimpleSAML\Database::query() returns a PDOStatement, SimpleSAML\Database::exec() doesn't. Make both return an integer with the amount of rows affected. Add a return value to SimpleSAML_Metadata_MetadataStorageHandlerPdo::initDatabase().
Diffstat (limited to 'lib/SimpleSAML')
-rw-r--r-- | lib/SimpleSAML/Database.php | 5 | ||||
-rw-r--r-- | lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php | 21 |
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/SimpleSAML/Database.php b/lib/SimpleSAML/Database.php index e66288b..1012e11 100644 --- a/lib/SimpleSAML/Database.php +++ b/lib/SimpleSAML/Database.php @@ -260,14 +260,15 @@ class Database * @param string $stmt Prepared SQL statement * @param array $params Parameters * - * @return \PDOStatement object + * @return int The number of rows affected by the query. */ public function write($stmt, $params = array()) { $db = $this->dbMaster; if (is_array($params)) { - return $this->query($db, $stmt, $params); + $obj = $this->query($db, $stmt, $params); + return $obj->rowCount(); } else { return $this->exec($db, $stmt); } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php index cb66c36..e898116 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php @@ -196,18 +196,18 @@ class SimpleSAML_Metadata_MetaDataStorageHandlerPdo extends SimpleSAML_Metadata_ ); if ($retrivedEntityIDs !== false && count($retrivedEntityIDs) > 0) { - $stmt = $this->db->write( + $rows = $this->db->write( "UPDATE $tableName SET entity_data = :entity_data WHERE entity_id = :entity_id", $params ); } else { - $stmt = $this->db->write( + $rows = $this->db->write( "INSERT INTO $tableName (entity_id, entity_data) VALUES (:entity_id, :entity_data)", $params ); } - return 1 === $stmt->rowCount(); + return $rows === 1; } @@ -229,16 +229,29 @@ class SimpleSAML_Metadata_MetaDataStorageHandlerPdo extends SimpleSAML_Metadata_ /** * Initialize the configured database + * + * @return int|false The number of SQL statements successfully executed, false if some error occurred. */ public function initDatabase() { + $stmt = 0; + $fine = true; foreach ($this->supportedSets as $set) { $tableName = $this->getTableName($set); - $this->db->write( + $rows = $this->db->write( "CREATE TABLE IF NOT EXISTS $tableName (entity_id VARCHAR(255) PRIMARY KEY NOT NULL, entity_data ". "TEXT NOT NULL)" ); + if ($rows === 0) { + $fine = false; + } else { + $stmt += $rows; + } + } + if (!$fine) { + return false; } + return $stmt; } } |