summaryrefslogtreecommitdiffstats
path: root/lib/SimpleSAML
diff options
context:
space:
mode:
authorJaime Perez Crespo <jaime.perez@uninett.no>2016-02-17 15:13:15 +0100
committerJaime Perez Crespo <jaime.perez@uninett.no>2016-02-17 15:24:43 +0100
commit84547358ec38473cc1725affbebde7fe7c945bd1 (patch)
tree3495a99357c4c30110c926461534cdf0e1e049f0 /lib/SimpleSAML
parentc20bf1823e3015db5cd1809768794d4b2d72bb46 (diff)
downloadsimplesamlphp-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.php5
-rw-r--r--lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php21
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;
}
}