From 9963ce31dc18282aad98a876c5e1f15acd4fa037 Mon Sep 17 00:00:00 2001 From: doctrine Date: Tue, 30 May 2006 09:02:35 +0000 Subject: [PATCH] Added a folder remotely --- Doctrine/Session/Common.php | 19 ++++ Doctrine/Session/Exception.php | 13 +++ Doctrine/Session/Firebird.php | 21 +++++ Doctrine/Session/Informix.php | 7 ++ Doctrine/Session/Mssql.php | 19 ++++ Doctrine/Session/Mysql.php | 159 +++++++++++++++++++++++++++++++++ Doctrine/Session/Oracle.php | 26 ++++++ Doctrine/Session/Pgsql.php | 18 ++++ Doctrine/Session/Sqlite.php | 7 ++ 9 files changed, 289 insertions(+) create mode 100644 Doctrine/Session/Common.php create mode 100644 Doctrine/Session/Exception.php create mode 100644 Doctrine/Session/Firebird.php create mode 100644 Doctrine/Session/Informix.php create mode 100644 Doctrine/Session/Mssql.php create mode 100644 Doctrine/Session/Mysql.php create mode 100644 Doctrine/Session/Oracle.php create mode 100644 Doctrine/Session/Pgsql.php create mode 100644 Doctrine/Session/Sqlite.php diff --git a/Doctrine/Session/Common.php b/Doctrine/Session/Common.php new file mode 100644 index 000000000..e0b1a8270 --- /dev/null +++ b/Doctrine/Session/Common.php @@ -0,0 +1,19 @@ + diff --git a/Doctrine/Session/Exception.php b/Doctrine/Session/Exception.php new file mode 100644 index 000000000..b8b42966e --- /dev/null +++ b/Doctrine/Session/Exception.php @@ -0,0 +1,13 @@ +openSession() to open a new session.",Doctrine::ERR_NO_SESSIONS); + } +} +?> diff --git a/Doctrine/Session/Firebird.php b/Doctrine/Session/Firebird.php new file mode 100644 index 000000000..75d6b00f5 --- /dev/null +++ b/Doctrine/Session/Firebird.php @@ -0,0 +1,21 @@ +query("SELECT UNIQUE FROM ".$sequence); + $data = $stmt->fetch(PDO::FETCH_NUM); + return $data[0]; + } +} +?> diff --git a/Doctrine/Session/Informix.php b/Doctrine/Session/Informix.php new file mode 100644 index 000000000..e96a3d27c --- /dev/null +++ b/Doctrine/Session/Informix.php @@ -0,0 +1,7 @@ + diff --git a/Doctrine/Session/Mssql.php b/Doctrine/Session/Mssql.php new file mode 100644 index 000000000..1b4ff6b36 --- /dev/null +++ b/Doctrine/Session/Mssql.php @@ -0,0 +1,19 @@ +query("INSERT INTO $sequence (vapor) VALUES (0)"); + $stmt = $this->query("SELECT @@IDENTITY FROM $sequence"); + $data = $stmt->fetch(PDO::FETCH_NUM); + return $data[0]; + } +} +?> diff --git a/Doctrine/Session/Mysql.php b/Doctrine/Session/Mysql.php new file mode 100644 index 000000000..4ca2457e0 --- /dev/null +++ b/Doctrine/Session/Mysql.php @@ -0,0 +1,159 @@ +setAttribute(PDO::ATTR_EMULATE_PREPARES, true); + parent::__construct($manager,$pdo); + } + /** + * deletes all data access object from the collection + * @param Doctrine_Collection $coll + */ + /** + public function deleteCollection(Doctrine_Collection $coll) { + + $a = $coll->getTable()->getCompositePaths(); + $a = array_merge(array($coll->getTable()->getComponentName()),$a); + + $graph = new Doctrine_DQL_Parser($this); + foreach($coll as $k=>$record) { + switch($record->getState()): + case Doctrine_Record::STATE_DIRTY: + case Doctrine_Record::STATE_CLEAN: + $ids[] = $record->getID(); + break; + endswitch; + } + if(empty($ids)) + return array(); + + $graph->parseQuery("FROM ".implode(", ",$a)." WHERE ".$coll->getTable()->getTableName().".id IN(".implode(", ",$ids).")"); + + $query = $graph->buildDelete(); + + $this->getDBH()->query($query); + return $ids; + } + */ + + /** + * returns maximum identifier values + * + * @param array $names an array of component names + * @return array + */ + public function getMaximumValues2(array $names) { + $values = array(); + foreach($names as $name) { + $table = $this->tables[$name]; + $keys = $table->getPrimaryKeys(); + $tablename = $table->getTableName(); + + if(count($keys) == 1 && $keys[0] == $table->getIdentifier()) { + // record uses auto_increment column + + $sql[] = "SELECT MAX(".$tablename.".".$table->getIdentifier().") as $tablename FROM ".$tablename; + $values[$tablename] = 0; + $array[] = $tablename; + } + } + $sql = implode(" UNION ",$sql); + $stmt = $this->getDBH()->query($sql); + $data = $stmt->fetchAll(PDO::FETCH_NUM); + + foreach($data as $k => $v) { + $values[$array[$k]] = $v[0]; + } + return $values; + } + /** + * bulkInsert + * inserts all the objects in the pending insert list into database + * TODO: THIS IS NOT WORKING YET AS THERE ARE BUGS IN COMPONENTS USING SELF-REFERENCENCING + * + * @return boolean + */ + + /** + public function bulkInsert() { + if(empty($this->insert)) + return false; + + foreach($this->insert as $name => $inserts) { + if( ! isset($inserts[0])) + continue; + + $record = $inserts[0]; + $table = $record->getTable(); + $seq = $table->getSequenceName(); + $keys = $table->getPrimaryKeys(); + + $marks = array(); + $params = array(); + foreach($inserts as $k => $record) { + $record->getTable()->getAttribute(Doctrine::ATTR_LISTENER)->onPreSave($record); + // listen the onPreInsert event + $record->getTable()->getAttribute(Doctrine::ATTR_LISTENER)->onPreInsert($record); + + $array = $record->getPrepared(); + + if(isset($this->validator)) { + if( ! $this->validator->validateRecord($record)) { + continue; + } + } + + $key = implode(", ",array_keys($array)); + if( ! isset($params[$key])) + $params[$key] = array(); + + $marks[$key][] = "(".substr(str_repeat("?, ",count($array)),0,-2).")"; + $params[$key] = array_merge($params[$key], array_values($array)); + + + // listen the onInsert event + $record->getTable()->getAttribute(Doctrine::ATTR_LISTENER)->onInsert($record); + + $record->getTable()->getAttribute(Doctrine::ATTR_LISTENER)->onSave($record); + } + + if( ! empty($marks)) { + foreach($marks as $key => $list) { + $query = "INSERT INTO ".$table->getTableName()." (".$key.") VALUES ".implode(", ", $list); + $stmt = $this->getDBH()->prepare($query); + $stmt->execute($params[$key]); + } + } + if(count($keys) == 1 && $keys[0] == $table->getIdentifier()) { + + // record uses auto_increment column + + $sql = "SELECT MAX(".$table->getIdentifier().") FROM ".$record->getTable()->getTableName(); + $stmt = $this->getDBH()->query($sql); + $data = $stmt->fetch(PDO::FETCH_NUM); + $id = $data[0]; + $stmt->closeCursor(); + + foreach(array_reverse($inserts) as $record) { + + $record->setID((int) $id); + $id--; + } + } + } + + $this->insert = array(); + return true; + } + */ + +} +?> diff --git a/Doctrine/Session/Oracle.php b/Doctrine/Session/Oracle.php new file mode 100644 index 000000000..840067345 --- /dev/null +++ b/Doctrine/Session/Oracle.php @@ -0,0 +1,26 @@ += ".++$offset; + return $query; + } + /** + * returns the next value in the given sequence + * @param string $sequence + * @return integer + */ + public function getNextID($sequence) { + $stmt = $this->query("SELECT $sequence.nextval FROM dual"); + $data = $stmt->fetch(PDO::FETCH_NUM); + return $data[0]; + } +} +?> diff --git a/Doctrine/Session/Pgsql.php b/Doctrine/Session/Pgsql.php new file mode 100644 index 000000000..f4a069b30 --- /dev/null +++ b/Doctrine/Session/Pgsql.php @@ -0,0 +1,18 @@ +query("SELECT NEXTVAL('$sequence')"); + $data = $stmt->fetch(PDO::FETCH_NUM); + return $data[0]; + } +} +?> diff --git a/Doctrine/Session/Sqlite.php b/Doctrine/Session/Sqlite.php new file mode 100644 index 000000000..fa7e42309 --- /dev/null +++ b/Doctrine/Session/Sqlite.php @@ -0,0 +1,7 @@ +