Skip to content

Commit

Permalink
Moved from simpletest to PHPUnit
Browse files Browse the repository at this point in the history
  • Loading branch information
KrisJordan committed Feb 17, 2009
1 parent ee292b2 commit 0732afa
Show file tree
Hide file tree
Showing 159 changed files with 1,331 additions and 43,689 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,6 +1,7 @@
*.cache
*.settings
.project
.buildpath
*.db
recess/temp/compiled/*
recess/temp/*.*
35 changes: 0 additions & 35 deletions TestRunner.php

This file was deleted.

7 changes: 6 additions & 1 deletion recess/lib/recess/database/orm/Model.class.php
Expand Up @@ -538,7 +538,12 @@ function __set_state($array) {
function setTable($table, $loadColumns = true) {
$this->table = $table;
if($loadColumns) {
$this->columns = $this->getSource()->getColumns($this->table);
$source = $this->getSource();
if(isset($source)) {
$this->columns = $this->getSource()->getColumns($this->table);
} else {
throw new RecessException('Data Source "' . $this->getSourceName() . '" is not set.', array());
}
} else {
$this->columns = array();
}
Expand Down
Expand Up @@ -388,17 +388,16 @@ function getStatementForBuilder(SqlBuilder $builder, $action, PdoDataSource $sou
}
}

$statement = $source->prepare($builder->$action());
$sql = $builder->$action();
$statement = $source->prepare($sql);
$arguments = $builder->getPdoArguments();
foreach($arguments as &$argument) {
// Begin workaround for PDO's poor numeric binding
$queryParameter = $argument->getQueryParameter();
if(is_numeric($queryParameter)) { continue; }
// End Workaround

// Ignore parameters that aren't used in this $action (i.e. assignments in select)
if(strpos($sql, $argument->getQueryParameter()) === false) { continue; }

$statement->bindValue($argument->getQueryParameter(), $argument->value);
}
return $statement;
Expand Down
6 changes: 4 additions & 2 deletions recess/lib/recess/database/pdo/PdoDataSet.class.php
Expand Up @@ -90,7 +90,7 @@ protected function reset() {
* Once results are needed this method executes the accumulated query
* on the data source.
*/
protected function realize() {
protected function realize() {
if(!$this->hasResults) {
unset($this->results);
$this->results = $this->source->queryForClass($this->sqlBuilder, $this->rowClass);
Expand All @@ -117,7 +117,9 @@ public function toArray() {
return $this->results;
}

public function count() { return iterator_count($this); }
public function count() {
return iterator_count($this);
}


/*
Expand Down
56 changes: 36 additions & 20 deletions recess/lib/recess/database/sql/SqlBuilder.class.php
Expand Up @@ -43,7 +43,7 @@ class SqlBuilder implements ISqlConditions, ISqlSelectOptions {
public function insert() {
$this->insertSanityCheck();

$sql = 'INSERT INTO ' . $this->table;
$sql = 'INSERT INTO ' . self::escapeWithTicks($this->table);

$columns = '';
$values = '';
Expand All @@ -52,7 +52,7 @@ public function insert() {
foreach($this->assignments as $assignment) {
if($first) { $first = false; }
else { $columns .= ', '; $values .= ', '; }
$columns .= '`' . str_replace($table_prefix, '', $assignment->column) . '`';
$columns .= self::escapeWithTicks(str_replace($table_prefix, '', $assignment->column));
$values .= $assignment->getQueryParameter();
}
$columns = ' (' . $columns . ')';
Expand Down Expand Up @@ -129,7 +129,7 @@ public function assign($column, $value) {
*/
public function delete() {
$this->deleteSanityCheck();
return 'DELETE FROM ' . $this->table . $this->whereHelper();
return 'DELETE FROM ' . self::escapeWithTicks($this->table) . $this->whereHelper();
}

/**
Expand Down Expand Up @@ -157,14 +157,14 @@ protected function deleteSanityCheck() {
*/
public function update() {
$this->updateSanityCheck();
$sql = 'UPDATE ' . $this->table . ' SET ';
$sql = 'UPDATE ' . self::escapeWithTicks($this->table) . ' SET ';

$first = true;
$table_prefix = $this->tableAsPrefix() . '.';
foreach($this->assignments as $assignment) {
if($first) { $first = false; }
else { $sql .= ', '; }
$sql .= '`' . str_replace($table_prefix, '', $assignment->column) . '` = ' . $assignment->getQueryParameter();;
$sql .= self::escapeWithTicks(str_replace($table_prefix, '', $assignment->column)) . ' = ' . $assignment->getQueryParameter();;
}

$sql .= $this->whereHelper();
Expand Down Expand Up @@ -370,13 +370,13 @@ protected function addCondition($column, $value, $operator) {
public function select() {
$this->selectSanityCheck();

$sql = 'SELECT ' . $this->distinct . $this->select;
$sql = 'SELECT ' . $this->distinct . self::escapeWithTicks($this->select);

foreach($this->selectAs as $selectAs) {
$sql .= ', ' . $selectAs;
}

$sql .= ' FROM ' . $this->table;
$sql .= ' FROM ' . self::escapeWithTicks($this->table);

$sql .= $this->joinHelper();

Expand Down Expand Up @@ -551,15 +551,15 @@ protected function whereHelper() {
if(!empty($this->conditions)) {
foreach($this->conditions as $clause) {
if(!$first) { $sql .= ' AND '; } else { $first = false; } // TODO: Figure out how we'll do ORing
$sql .= $clause->column . ' ' . $clause->operator . ' ' . $clause->getQueryParameter();
$sql .= self::escapeWithTicks($clause->column) . $clause->operator . $clause->getQueryParameter();
}
}

if($this->useAssignmentsAsConditions && !empty($this->assignments)) {
$assignments = $this->cleansedAssignmentsAsConditions();
foreach($assignments as $clause) {
if(!$first) { $sql .= ' AND '; } else { $first = false; } // TODO: Figure out how we'll do ORing
$sql .= $clause->column . ' = ' . $clause->getQueryParameter();
$sql .= self::escapeWithTicks($clause->column) . ' = ' . $clause->getQueryParameter();
}
}

Expand All @@ -573,8 +573,8 @@ protected function whereHelper() {
protected function joinHelper() {
$sql = '';
if(!empty($this->joins)) {
$this->joins = array_reverse($this->joins, true);
foreach($this->joins as $join) {
$joins = array_reverse($this->joins, true);
foreach($joins as $join) {
$joinStatement = '';

if(isset($join->natural)) {
Expand All @@ -587,15 +587,31 @@ protected function joinHelper() {
$joinStatement .= $join->innerOuterOrCross . ' ';
}

$onStatement = ' ON ' . $join->tablePrimaryKey . ' = ' . $join->fromTableForeignKey;
$joinStatement .= 'JOIN ' . $join->table . $onStatement;
$onStatement = ' ON ' . self::escapeWithTicks($join->tablePrimaryKey) . ' = ' . self::escapeWithTicks($join->fromTableForeignKey);
$joinStatement .= 'JOIN ' . self::escapeWithTicks($join->table) . $onStatement;

$sql .= $joinStatement;
}
}
return $sql;
}

protected static function escapeWithTicks($string) {
if($string == '*') {
return $string;
}
if(strpos($string,Library::dotSeparator) !== false) {
$parts = explode('.', $string);
if(isset($parts[1]) && $parts[1] == '*') {
return '`' . $parts[0] . '`.*';
} else {
return '`' . implode('`.`', $parts) . '`';
}
} else {
return '`' . $string . '`';
}
}

protected function orderByHelper() {
$sql = '';
if(!empty($this->orderBy)){
Expand Down Expand Up @@ -631,17 +647,17 @@ class Criterion {
public $value;
public $operator;

const GREATER_THAN = '>';
const GREATER_THAN_EQUAL_TO = '>=';
const GREATER_THAN = ' > ';
const GREATER_THAN_EQUAL_TO = ' >= ';

const LESS_THAN = '<';
const LESS_THAN_EQUAL_TO = '<=';
const LESS_THAN = ' < ';
const LESS_THAN_EQUAL_TO = ' <= ';

const EQUAL_TO = ' = ';
const NOT_EQUAL_TO = '!=';
const NOT_EQUAL_TO = ' != ';

const LIKE = 'LIKE';
const NOT_LIKE = 'NOT LIKE';
const LIKE = ' LIKE ';
const NOT_LIKE = ' NOT LIKE ';

const COLON = ':';

Expand Down

0 comments on commit 0732afa

Please sign in to comment.