/**
  * Sets the correct id on the insert query.
  *
  * @param ezcPersistentObjectDefinition $def
  * @param ezcDbHandler $db
  * @param ezcQueryInsert $q
  * @return void
  */
 public function preSave(ezcPersistentObjectDefinition $def, ezcDbHandler $db, ezcQueryInsert $q)
 {
     // Sanity check.
     // ID must have been stored during the persistence check before inserting the object.
     if ($this->id === null) {
         throw new ezcPersistentIdentifierGenerationException($def->class, 'ezcPersistentManualGenerator expects the ID to be present before saving.');
     }
     $q->set($db->quoteIdentifier($def->idProperty->columnName), $q->bindValue($this->id, null, $def->idProperty->databaseType));
 }
Beispiel #2
0
 public function setUp()
 {
     try {
         $this->db = ezcDbInstance::get();
         if ($this->db === false) {
             $this->markTestSkipped("You must provide a database to runtests.php.");
         }
         $tables = array(self::$table => new ezcDbSchemaTable(array(self::$fieldId => new ezcDbSchemaField('integer', false, true, null, true), self::$fieldUser => new ezcDbSchemaField('text', 32, true), self::$fieldPassword => new ezcDbSchemaField('text', 64, true), self::$fieldName => new ezcDbSchemaField('text', 64, true), self::$fieldCountry => new ezcDbSchemaField('text', 32, true)), array(self::$fieldUser => new ezcDbSchemaIndex(array(self::$fieldUser => new ezcDbSchemaIndexField()), false, false))));
         $schema = new ezcDbSchema($tables);
         $schema->writeToDb($this->db);
     } catch (Exception $e) {
         // Oracle seems to skip every other test if the next line is enabled
         // $this->markTestSkipped( "Cannot create test table '" . self::$table . "'. " . $e->getMessage() );
     }
     if (!isset($this->db)) {
         $this->markTestSkipped("You must provide a database to runtests.php. Run runtests.php --help to see how to specify a database.");
     }
     try {
         $query = new ezcQueryInsert($this->db);
         $query->insertInto($this->db->quoteIdentifier(self::$table))->set($this->db->quoteIdentifier(self::$fieldId), $query->bindValue('1'))->set($this->db->quoteIdentifier(self::$fieldUser), $query->bindValue('jan.modaal'))->set($this->db->quoteIdentifier(self::$fieldPassword), $query->bindValue(sha1('qwerty')))->set($this->db->quoteIdentifier(self::$fieldName), $query->bindValue('Jan Modaal'))->set($this->db->quoteIdentifier(self::$fieldCountry), $query->bindValue('NL'));
         $stmt = $query->prepare();
         $stmt->execute();
         $query = new ezcQueryInsert($this->db);
         $query->insertInto($this->db->quoteIdentifier(self::$table))->set($this->db->quoteIdentifier(self::$fieldId), $query->bindValue('2'))->set($this->db->quoteIdentifier(self::$fieldUser), $query->bindValue('john.doe'))->set($this->db->quoteIdentifier(self::$fieldPassword), $query->bindValue(crypt('foobar', 'jo')))->set($this->db->quoteIdentifier(self::$fieldName), $query->bindValue('John Doe'))->set($this->db->quoteIdentifier(self::$fieldCountry), $query->bindValue('US'));
         $stmt = $query->prepare();
         $stmt->execute();
         $query = new ezcQueryInsert($this->db);
         $query->insertInto($this->db->quoteIdentifier(self::$table))->set($this->db->quoteIdentifier(self::$fieldId), $query->bindValue('3'))->set($this->db->quoteIdentifier(self::$fieldUser), $query->bindValue('zhang.san'))->set($this->db->quoteIdentifier(self::$fieldPassword), $query->bindValue(md5('asdfgh')))->set($this->db->quoteIdentifier(self::$fieldName), $query->bindValue('Zhang San'))->set($this->db->quoteIdentifier(self::$fieldCountry), $query->bindValue('CN'));
         $stmt = $query->prepare();
         $stmt->execute();
         $query = new ezcQueryInsert($this->db);
         $query->insertInto($this->db->quoteIdentifier(self::$table))->set($this->db->quoteIdentifier(self::$fieldId), $query->bindValue('4'))->set($this->db->quoteIdentifier(self::$fieldUser), $query->bindValue('hans.mustermann'))->set($this->db->quoteIdentifier(self::$fieldPassword), $query->bindValue('abcdef'))->set($this->db->quoteIdentifier(self::$fieldName), $query->bindValue('Hans Mustermann'))->set($this->db->quoteIdentifier(self::$fieldCountry), $query->bindValue('DE'));
         $stmt = $query->prepare();
         $stmt->execute();
     } catch (Exception $e) {
         $this->markTestSkipped("Cannot insert test values into table '" . self::$table . "'. " . $e->getMessage());
     }
 }
 /**
  * Bind all non-id properties to the given query $q.
  *
  * Binds all property values contained in $state to the given query $q, as
  * defined by $def.
  * 
  * @param ezcQueryUpdate|ezcQueryInsert $q
  * @param ezcPersistentObjectDefinition $def
  * @param array $state
  * @return ezcQueryUpdate|ezcQueryInsert
  */
 private function bindNonIdPropertyValuesToQuery($q, ezcPersistentObjectDefinition $def, array $state)
 {
     foreach ($state as $name => $value) {
         if ($name !== $def->idProperty->propertyName) {
             // Set each of the properties.
             $q->set($this->database->quoteIdentifier($def->properties[$name]->columnName), $q->bindValue($value, null, $def->properties[$name]->databaseType));
         }
     }
 }
 public function testOnDatabaseWithWhere()
 {
     // fill database with some dummy data
     $q = new ezcQueryInsert(ezcDbInstance::get());
     // insert some data we can update
     $company = 'eZ systems';
     $section = 'Norway';
     $q->insertInto('query_test')->set('id', 1)->set('company', $q->bindParam($company))->set('section', $q->bindParam($section))->set('employees', 20);
     $stmt = $q->prepare();
     $stmt->execute();
     $q->insertInto('query_test');
     $q->set('id', 2);
     $q->set('employees', 70);
     $company = 'trolltech';
     $section = 'Norway';
     $stmt = $q->prepare();
     $stmt->execute();
     // delete one
     $this->q->deleteFrom('query_test')->where($this->q->expr->eq('id', 1));
     $stmt = $this->q->prepare();
     $stmt->execute();
     // test that table has one row
     $db = ezcDbInstance::get();
     $q = $db->createSelectQuery();
     // get select query
     $q->select('*')->from('query_test');
     $stmt = $q->prepare();
     $stmt->execute();
     $result = $stmt->fetchAll();
     $this->assertEquals(1, count($result));
 }
 /**
  * Stores an association in the store linked to the OpenID provider URL.
  *
  * Returns true always.
  *
  * @param string $url The URL of the OpenID provider
  * @param ezcAuthenticationOpenidAssociation $association The association value to store
  * @return bool
  */
 public function storeAssociation($url, $association)
 {
     $table = $this->options->tableAssociations;
     $data = serialize($association);
     $query = new ezcQueryInsert($this->instance);
     $query->insertInto($this->instance->quoteIdentifier($table['name']))->set($this->instance->quoteIdentifier($table['fields']['url']), $query->bindValue($url))->set($this->instance->quoteIdentifier($table['fields']['association']), $query->bindValue($data));
     $stmt = $query->prepare();
     $stmt->execute();
     return true;
 }
 public function testOnDatabaseWithWhere()
 {
     $q = new ezcQueryInsert(ezcDbInstance::get());
     $company = 'eZ systems';
     $section = 'Norway';
     // insert some data we can update
     $q->insertInto('query_test')->set('id', 1)->set('company', $q->bindParam($company))->set('section', $q->bindParam($section))->set('employees', 20);
     $stmt = $q->prepare();
     $stmt->execute();
     $q->insertInto('query_test');
     $q->set('id', 2);
     $q->set('employees', 70);
     $company = 'trolltech';
     $section = 'Norway';
     $stmt = $q->prepare();
     $stmt->execute();
     $this->q->update('query_test')->set('employees', 50)->where($this->q->expr->eq('id', 1));
     $stmt = $this->q->prepare();
     $stmt->execute();
     // check that entry 1 was updated correctly
     // but not two
     $db = ezcDbInstance::get();
     $q = $db->createSelectQuery();
     // get select query
     $q->select('*')->from('query_test')->orderBy('company');
     $stmt = $q->prepare();
     $stmt->execute();
     $result = $stmt->fetchAll();
     $this->assertEquals(50, (int) $result[0][3]);
     $this->assertEquals(70, (int) $result[1][3]);
 }
 /**
  * Inserts $field with $newFieldId or not
  *
  * @param Content $content
  * @param Field $field
  * @param StorageFieldValue $value
  * @param mixed $newFieldId
  *
  * @return int|null Maybe a new field ID
  */
 protected function setInsertFieldValues(\ezcQueryInsert $q, Content $content, Field $field, StorageFieldValue $value)
 {
     $q->insertInto($this->dbHandler->quoteTable('ezcontentobject_attribute'))->set($this->dbHandler->quoteColumn('contentobject_id'), $q->bindValue($content->versionInfo->contentInfo->id, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('contentclassattribute_id'), $q->bindValue($field->fieldDefinitionId, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('data_type_string'), $q->bindValue($field->type))->set($this->dbHandler->quoteColumn('language_code'), $q->bindValue($field->languageCode))->set($this->dbHandler->quoteColumn('version'), $q->bindValue($field->versionNo, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('data_float'), $q->bindValue($value->dataFloat))->set($this->dbHandler->quoteColumn('data_int'), $q->bindValue($value->dataInt, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('data_text'), $q->bindValue($value->dataText))->set($this->dbHandler->quoteColumn('sort_key_int'), $q->bindValue($value->sortKeyInt, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('sort_key_string'), $q->bindValue($value->sortKeyString))->set($this->dbHandler->quoteColumn('language_id'), $q->bindValue($this->languageMaskGenerator->generateLanguageIndicator($field->languageCode, $content->versionInfo->contentInfo->alwaysAvailable), null, \PDO::PARAM_INT));
 }