mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Merge remote-tracking branch 'origin/2.0' into 2.0-class-loading
This commit is contained in:
commit
ba694c45c9
21 changed files with 626 additions and 624 deletions
|
@ -317,8 +317,8 @@ class ProjectTask extends Shell {
|
|||
$path = (empty($this->configPath)) ? CONFIGS : $this->configPath;
|
||||
$File = new File($path . 'core.php');
|
||||
$contents = $File->read();
|
||||
if (preg_match('%([/\s]*Configure::write\(\'Routing.prefixes\',[\s\'a-z,\)\(]*\);)%', $contents, $match)) {
|
||||
$result = str_replace($match[0], "\t" . 'Configure::write(\'Routing.prefixes\', array(\''.$name.'\'));', $contents);
|
||||
if (preg_match('%(\s*[/]*Configure::write\(\'Routing.prefixes\',[\s\'a-z,\)\(]*\);)%', $contents, $match)) {
|
||||
$result = str_replace($match[0], "\n" . 'Configure::write(\'Routing.prefixes\', array(\''.$name.'\'));', $contents);
|
||||
if ($File->write($result)) {
|
||||
Configure::write('Routing.prefixes', array($name));
|
||||
return true;
|
||||
|
|
|
@ -64,7 +64,7 @@ class AclNode extends AppModel {
|
|||
* @return array Node found in database
|
||||
*/
|
||||
public function node($ref = null) {
|
||||
$db =& ConnectionManager::getDataSource($this->useDbConfig);
|
||||
$db = $this->getDataSource();
|
||||
$type = $this->alias;
|
||||
$result = null;
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ class TranslateBehavior extends ModelBehavior {
|
|||
if (empty($locale)) {
|
||||
return $query;
|
||||
}
|
||||
$db = ConnectionManager::getDataSource($model->useDbConfig);
|
||||
$db = $model->getDataSource();
|
||||
$RuntimeModel = $this->translateModel($model);
|
||||
if (!empty($RuntimeModel->tablePrefix)) {
|
||||
$tablePrefix = $RuntimeModel->tablePrefix;
|
||||
|
@ -100,12 +100,16 @@ class TranslateBehavior extends ModelBehavior {
|
|||
$tablePrefix = $db->config['prefix'];
|
||||
}
|
||||
|
||||
if ($tablePrefix == $db->config['prefix']) {
|
||||
$tablePrefix = null;
|
||||
}
|
||||
|
||||
if (is_string($query['fields']) && 'COUNT(*) AS '.$db->name('count') == $query['fields']) {
|
||||
$query['fields'] = 'COUNT(DISTINCT('.$db->name($model->alias . '.' . $model->primaryKey) . ')) ' . $db->alias . 'count';
|
||||
$query['joins'][] = array(
|
||||
'type' => 'INNER',
|
||||
'alias' => $RuntimeModel->alias,
|
||||
'table' => $db->name($tablePrefix . $RuntimeModel->useTable),
|
||||
'table' => $db->fullTableName($tablePrefix . $RuntimeModel->useTable),
|
||||
'conditions' => array(
|
||||
$model->alias . '.' . $model->primaryKey => $db->identifier($RuntimeModel->alias.'.foreign_key'),
|
||||
$RuntimeModel->alias.'.model' => $model->name,
|
||||
|
@ -151,7 +155,7 @@ class TranslateBehavior extends ModelBehavior {
|
|||
$query['joins'][] = array(
|
||||
'type' => 'LEFT',
|
||||
'alias' => 'I18n__'.$field.'__'.$_locale,
|
||||
'table' => $db->name($tablePrefix . $RuntimeModel->useTable),
|
||||
'table' => $db->fullTableName($tablePrefix . $RuntimeModel->useTable),
|
||||
'conditions' => array(
|
||||
$model->alias . '.' . $model->primaryKey => $db->identifier("I18n__{$field}__{$_locale}.foreign_key"),
|
||||
'I18n__'.$field.'__'.$_locale.'.model' => $model->name,
|
||||
|
@ -168,7 +172,7 @@ class TranslateBehavior extends ModelBehavior {
|
|||
$query['joins'][] = array(
|
||||
'type' => 'LEFT',
|
||||
'alias' => 'I18n__'.$field,
|
||||
'table' => $db->name($tablePrefix . $RuntimeModel->useTable),
|
||||
'table' => $db->fullTableName($tablePrefix . $RuntimeModel->useTable),
|
||||
'conditions' => array(
|
||||
$model->alias . '.' . $model->primaryKey => $db->identifier("I18n__{$field}.foreign_key"),
|
||||
'I18n__'.$field.'.model' => $model->name,
|
||||
|
|
|
@ -248,7 +248,7 @@ class CakeSchema extends Object {
|
|||
}
|
||||
|
||||
$Object = ClassRegistry::init(array('class' => $model, 'ds' => $connection));
|
||||
|
||||
$db = $Object->getDataSource();
|
||||
if (is_object($Object) && $Object->useTable !== false) {
|
||||
$fulltable = $table = $db->fullTableName($Object, false);
|
||||
if ($prefix && strpos($table, $prefix) !== 0) {
|
||||
|
@ -583,7 +583,7 @@ class CakeSchema extends Object {
|
|||
* @return array Formatted columns
|
||||
*/
|
||||
public function __columns(&$Obj) {
|
||||
$db = ConnectionManager::getDataSource($Obj->useDbConfig);
|
||||
$db = $Obj->getDataSource();
|
||||
$fields = $Obj->schema(true);
|
||||
|
||||
$columns = $props = array();
|
||||
|
|
|
@ -32,112 +32,6 @@ class DataSource extends Object {
|
|||
*/
|
||||
public $connected = false;
|
||||
|
||||
/**
|
||||
* Print full query debug info?
|
||||
*
|
||||
* @var boolean
|
||||
* @access public
|
||||
*/
|
||||
public $fullDebug = false;
|
||||
|
||||
/**
|
||||
* Error description of last query
|
||||
*
|
||||
* @var unknown_type
|
||||
* @access public
|
||||
*/
|
||||
public $error = null;
|
||||
|
||||
/**
|
||||
* String to hold how many rows were affected by the last SQL operation.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $affected = null;
|
||||
|
||||
/**
|
||||
* Number of rows in current resultset
|
||||
*
|
||||
* @var int
|
||||
* @access public
|
||||
*/
|
||||
public $numRows = null;
|
||||
|
||||
/**
|
||||
* Time the last query took
|
||||
*
|
||||
* @var int
|
||||
* @access public
|
||||
*/
|
||||
public $took = null;
|
||||
|
||||
/**
|
||||
* The starting character that this DataSource uses for quoted identifiers.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $startQuote = null;
|
||||
|
||||
/**
|
||||
* The ending character that this DataSource uses for quoted identifiers.
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $endQuote = null;
|
||||
|
||||
/**
|
||||
* Result
|
||||
*
|
||||
* @var array
|
||||
* @access protected
|
||||
*/
|
||||
protected $_result = null;
|
||||
|
||||
/**
|
||||
* Queries count.
|
||||
*
|
||||
* @var int
|
||||
* @access protected
|
||||
*/
|
||||
protected $_queriesCnt = 0;
|
||||
|
||||
/**
|
||||
* Total duration of all queries.
|
||||
*
|
||||
* @var unknown_type
|
||||
* @access protected
|
||||
*/
|
||||
protected $_queriesTime = null;
|
||||
|
||||
/**
|
||||
* Log of queries executed by this DataSource
|
||||
*
|
||||
* @var unknown_type
|
||||
* @access protected
|
||||
*/
|
||||
protected $_queriesLog = array();
|
||||
|
||||
/**
|
||||
* Maximum number of items in query log
|
||||
*
|
||||
* This is to prevent query log taking over too much memory.
|
||||
*
|
||||
* @var int Maximum number of queries in the queries log.
|
||||
* @access protected
|
||||
*/
|
||||
protected $_queriesLogMax = 200;
|
||||
|
||||
/**
|
||||
* Caches serialzed results of executed queries
|
||||
*
|
||||
* @var array Maximum number of queries in the queries log.
|
||||
* @access protected
|
||||
*/
|
||||
protected $_queryCache = array();
|
||||
|
||||
/**
|
||||
* The default configuration of a specific DataSource
|
||||
*
|
||||
|
@ -162,14 +56,6 @@ class DataSource extends Object {
|
|||
*/
|
||||
protected $_sources = null;
|
||||
|
||||
/**
|
||||
* A reference to the physical connection of this DataSource
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $connection = null;
|
||||
|
||||
/**
|
||||
* The DataSource configuration
|
||||
*
|
||||
|
@ -178,14 +64,6 @@ class DataSource extends Object {
|
|||
*/
|
||||
public $config = array();
|
||||
|
||||
/**
|
||||
* The DataSource configuration key name
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $configKeyName = null;
|
||||
|
||||
/**
|
||||
* Whether or not this DataSource is in the middle of a transaction
|
||||
*
|
||||
|
@ -238,21 +116,7 @@ class DataSource extends Object {
|
|||
Cache::write($key, $data, '_cake_model_');
|
||||
}
|
||||
|
||||
$this->_sources = $sources;
|
||||
return $sources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method for DboSource::listSources(). Returns source names in lowercase.
|
||||
*
|
||||
* @param boolean $reset Whether or not the source list should be reset.
|
||||
* @return array Array of sources available in this datasource
|
||||
*/
|
||||
public function sources($reset = false) {
|
||||
if ($reset === true) {
|
||||
$this->_sources = null;
|
||||
}
|
||||
return array_map('strtolower', $this->listSources());
|
||||
return $this->_sources = $sources;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -261,7 +125,7 @@ class DataSource extends Object {
|
|||
* @param Model $model
|
||||
* @return array Array of Metadata for the $model
|
||||
*/
|
||||
public function describe($model) {
|
||||
public function describe(Model $model) {
|
||||
if ($this->cacheSources === false) {
|
||||
return null;
|
||||
}
|
||||
|
@ -326,7 +190,7 @@ class DataSource extends Object {
|
|||
* @param array $values An Array of values to save.
|
||||
* @return boolean success
|
||||
*/
|
||||
public function create($model, $fields = null, $values = null) {
|
||||
public function create(Model $model, $fields = null, $values = null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -339,7 +203,7 @@ class DataSource extends Object {
|
|||
* @param array $queryData An array of query data used to find the data you want
|
||||
* @return mixed
|
||||
*/
|
||||
public function read($model, $queryData = array()) {
|
||||
public function read(Model $model, $queryData = array()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -353,7 +217,7 @@ class DataSource extends Object {
|
|||
* @param array $values Array of values to be update $fields to.
|
||||
* @return boolean Success
|
||||
*/
|
||||
public function update($model, $fields = null, $values = null) {
|
||||
public function update(Model $model, $fields = null, $values = null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -365,7 +229,7 @@ class DataSource extends Object {
|
|||
* @param Model $model The model class having record(s) deleted
|
||||
* @param mixed $id Primary key of the model
|
||||
*/
|
||||
public function delete($model, $id = null) {
|
||||
public function delete(Model $model, $id = null) {
|
||||
if ($id == null) {
|
||||
$id = $model->id;
|
||||
}
|
||||
|
@ -412,20 +276,6 @@ class DataSource extends Object {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the DataSource supports the given interface (method)
|
||||
*
|
||||
* @param string $interface The name of the interface (method)
|
||||
* @return boolean True on success
|
||||
*/
|
||||
public function isInterfaceSupported($interface) {
|
||||
static $methods = false;
|
||||
if ($methods === false) {
|
||||
$methods = array_map('strtolower', get_class_methods($this));
|
||||
}
|
||||
return in_array(strtolower($interface), $methods);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the configuration for the DataSource.
|
||||
* Merges the $config information with the _baseConfig and the existing $config property.
|
||||
|
@ -479,7 +329,7 @@ class DataSource extends Object {
|
|||
* @access public
|
||||
* @todo Remove and refactor $assocData, ensure uses of the method have the param removed too.
|
||||
*/
|
||||
function insertQueryData($query, $data, $association, $assocData, &$model, &$linkModel, $stack) {
|
||||
function insertQueryData($query, $data, $association, $assocData, Model $model, Model $linkModel, $stack) {
|
||||
$keys = array('{$__cakeID__$}', '{$__cakeForeignKey__$}');
|
||||
|
||||
foreach ($keys as $key) {
|
||||
|
@ -559,7 +409,7 @@ class DataSource extends Object {
|
|||
* @param string $key Key name to make
|
||||
* @return string Key name for model.
|
||||
*/
|
||||
public function resolveKey($model, $key) {
|
||||
public function resolveKey(Model $model, $key) {
|
||||
return $model->alias . $key;
|
||||
}
|
||||
|
||||
|
@ -570,8 +420,7 @@ class DataSource extends Object {
|
|||
*/
|
||||
public function __destruct() {
|
||||
if ($this->_transactionStarted) {
|
||||
$null = null;
|
||||
$this->rollback($null);
|
||||
$this->rollback();
|
||||
}
|
||||
if ($this->connected) {
|
||||
$this->close();
|
||||
|
|
|
@ -184,7 +184,7 @@ class Mysql extends DboSource {
|
|||
if ($cache != null) {
|
||||
return $cache;
|
||||
}
|
||||
$result = $this->_execute('SHOW TABLES FROM ' . $this->config['database']);
|
||||
$result = $this->_execute('SHOW TABLES FROM ' . $this->name($this->config['database']));
|
||||
|
||||
if (!$result) {
|
||||
$result->closeCursor();
|
||||
|
@ -211,21 +211,19 @@ class Mysql extends DboSource {
|
|||
$this->map = array();
|
||||
$numFields = $results->columnCount();
|
||||
$index = 0;
|
||||
$j = 0;
|
||||
|
||||
while ($j < $numFields) {
|
||||
$column = $results->getColumnMeta($j);
|
||||
if (!empty($column['native_type'])) {
|
||||
$type = $column['native_type'];
|
||||
} else {
|
||||
while ($numFields-- > 0) {
|
||||
$column = $results->getColumnMeta($index);
|
||||
if (empty($column['native_type'])) {
|
||||
$type = ($column['len'] == 1) ? 'boolean' : 'string';
|
||||
} else {
|
||||
$type = $column['native_type'];
|
||||
}
|
||||
if (!empty($column['table']) && strpos($column['name'], $this->virtualFieldSeparator) === false) {
|
||||
$this->map[$index++] = array($column['table'], $column['name'], $type);
|
||||
} else {
|
||||
$this->map[$index++] = array(0, $column['name'], $type);
|
||||
}
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,15 +238,14 @@ class Mysql extends DboSource {
|
|||
foreach ($this->map as $col => $meta) {
|
||||
list($table, $column, $type) = $meta;
|
||||
$resultRow[$table][$column] = $row[$col];
|
||||
if ($type == 'boolean' && !is_null($row[$col])) {
|
||||
if ($type === 'boolean' && !is_null($row[$col])) {
|
||||
$resultRow[$table][$column] = $this->boolean($resultRow[$table][$column]);
|
||||
}
|
||||
}
|
||||
return $resultRow;
|
||||
} else {
|
||||
$this->_result->closeCursor();
|
||||
return false;
|
||||
}
|
||||
$this->_result->closeCursor();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -307,7 +304,7 @@ class Mysql extends DboSource {
|
|||
foreach ($cols as $column) {
|
||||
$fields[$column->Field] = array(
|
||||
'type' => $this->column($column->Type),
|
||||
'null' => ($column->Null == 'YES' ? true : false),
|
||||
'null' => ($column->Null === 'YES' ? true : false),
|
||||
'default' => $column->Default,
|
||||
'length' => $this->length($column->Type),
|
||||
);
|
||||
|
@ -412,7 +409,7 @@ class Mysql extends DboSource {
|
|||
* @param string $enc Database encoding
|
||||
*/
|
||||
function setEncoding($enc) {
|
||||
return $this->_execute('SET NAMES ' . $enc) != false;
|
||||
return $this->_execute('SET NAMES ' . $enc) !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -502,7 +499,7 @@ class Mysql extends DboSource {
|
|||
}
|
||||
$colList = array_merge($colList, $this->_alterIndexes($curTable, $indexes));
|
||||
$colList = array_merge($colList, $this->_alterTableParameters($curTable, $tableParameters));
|
||||
$out .= "\t" . join(",\n\t", $colList) . ";\n\n";
|
||||
$out .= "\t" . implode(",\n\t", $colList) . ";\n\n";
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
|
@ -519,7 +516,7 @@ class Mysql extends DboSource {
|
|||
function dropSchema(CakeSchema $schema, $table = null) {
|
||||
$out = '';
|
||||
foreach ($schema->tables as $curTable => $columns) {
|
||||
if (!$table || $table == $curTable) {
|
||||
if (!$table || $table === $curTable) {
|
||||
$out .= 'DROP TABLE IF EXISTS ' . $this->fullTableName($curTable) . ";\n";
|
||||
}
|
||||
}
|
||||
|
@ -586,7 +583,7 @@ class Mysql extends DboSource {
|
|||
/**
|
||||
* Returns an detailed array of sources (tables) in the database.
|
||||
*
|
||||
* @param string $name Table name to get parameters
|
||||
* @param string $name Table name to get parameters
|
||||
* @return array Array of tablenames in the database
|
||||
*/
|
||||
function listDetailedSources($name = null) {
|
||||
|
@ -631,7 +628,7 @@ class Mysql extends DboSource {
|
|||
if (is_array($real)) {
|
||||
$col = $real['name'];
|
||||
if (isset($real['limit'])) {
|
||||
$col .= '('.$real['limit'].')';
|
||||
$col .= '(' . $real['limit'] . ')';
|
||||
}
|
||||
return $col;
|
||||
}
|
||||
|
@ -645,19 +642,19 @@ class Mysql extends DboSource {
|
|||
if (in_array($col, array('date', 'time', 'datetime', 'timestamp'))) {
|
||||
return $col;
|
||||
}
|
||||
if (($col == 'tinyint' && $limit == 1) || $col == 'boolean') {
|
||||
if (($col === 'tinyint' && $limit == 1) || $col === 'boolean') {
|
||||
return 'boolean';
|
||||
}
|
||||
if (strpos($col, 'int') !== false) {
|
||||
return 'integer';
|
||||
}
|
||||
if (strpos($col, 'char') !== false || $col == 'tinytext') {
|
||||
if (strpos($col, 'char') !== false || $col === 'tinytext') {
|
||||
return 'string';
|
||||
}
|
||||
if (strpos($col, 'text') !== false) {
|
||||
return 'text';
|
||||
}
|
||||
if (strpos($col, 'blob') !== false || $col == 'binary') {
|
||||
if (strpos($col, 'blob') !== false || $col === 'binary') {
|
||||
return 'binary';
|
||||
}
|
||||
if (strpos($col, 'float') !== false || strpos($col, 'double') !== false || strpos($col, 'decimal') !== false) {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -466,14 +466,16 @@ class Model extends Object {
|
|||
$this->Behaviors = new BehaviorCollection();
|
||||
|
||||
if ($this->useTable !== false) {
|
||||
|
||||
if ($this->useTable === null) {
|
||||
$this->useTable = Inflector::tableize($this->name);
|
||||
}
|
||||
$this->setSource($this->useTable);
|
||||
|
||||
if ($this->displayField == null) {
|
||||
unset($this->displayField);
|
||||
}
|
||||
$this->table = $this->useTable;
|
||||
$this->tableToModel[$this->table] = $this->alias;
|
||||
} elseif ($this->table === false) {
|
||||
$this->table = Inflector::tableize($this->name);
|
||||
}
|
||||
|
@ -797,7 +799,7 @@ class Model extends Object {
|
|||
$db = ConnectionManager::getDataSource($this->useDbConfig);
|
||||
$db->cacheSources = ($this->cacheSources && $db->cacheSources);
|
||||
|
||||
if ($db->isInterfaceSupported('listSources')) {
|
||||
if (method_exists($db, 'listSources')) {
|
||||
$sources = $db->listSources();
|
||||
if (is_array($sources) && !in_array(strtolower($this->tablePrefix . $tableName), array_map('strtolower', $sources))) {
|
||||
throw new MissingTableException(array(
|
||||
|
@ -979,7 +981,7 @@ class Model extends Object {
|
|||
if (!is_array($this->_schema) || $field === true) {
|
||||
$db = $this->getDataSource();
|
||||
$db->cacheSources = ($this->cacheSources && $db->cacheSources);
|
||||
if ($db->isInterfaceSupported('describe') && $this->useTable !== false) {
|
||||
if (method_exists($db, 'describe') && $this->useTable !== false) {
|
||||
$this->_schema = $db->describe($this, $field);
|
||||
} elseif ($this->useTable === false) {
|
||||
$this->_schema = array();
|
||||
|
@ -1880,7 +1882,7 @@ class Model extends Object {
|
|||
if (!$filters || !$this->exists()) {
|
||||
return false;
|
||||
}
|
||||
$db = ConnectionManager::getDataSource($this->useDbConfig);
|
||||
$db = $this->getDataSource();
|
||||
|
||||
$this->_deleteDependent($id, $cascade);
|
||||
$this->_deleteLinks($id);
|
||||
|
@ -2071,7 +2073,7 @@ class Model extends Object {
|
|||
/**
|
||||
* Queries the datasource and returns a result set array.
|
||||
*
|
||||
* Also used to perform new-notation finds, where the first argument is type of find operation to perform
|
||||
* Also used to perform notation finds, where the first argument is type of find operation to perform
|
||||
* (all / first / count / neighbors / list / threaded ),
|
||||
* second parameter options for finding ( indexed array, including: 'conditions', 'limit',
|
||||
* 'recursive', 'page', 'fields', 'offset', 'order')
|
||||
|
@ -2107,43 +2109,31 @@ class Model extends Object {
|
|||
*
|
||||
* Behaviors and find types can also define custom finder keys which are passed into find().
|
||||
*
|
||||
* Specifying 'fields' for new-notation 'list':
|
||||
* Specifying 'fields' for notation 'list':
|
||||
*
|
||||
* - If no fields are specified, then 'id' is used for key and 'model->displayField' is used for value.
|
||||
* - If a single field is specified, 'id' is used for key and specified field is used for value.
|
||||
* - If three fields are specified, they are used (in order) for key, value and group.
|
||||
* - Otherwise, first and second fields are used for key and value.
|
||||
*
|
||||
* @param array $conditions SQL conditions array, or type of find operation (all / first / count /
|
||||
* neighbors / list / threaded)
|
||||
* @param mixed $fields Either a single string of a field name, or an array of field names, or
|
||||
* options for matching
|
||||
* @param string $order SQL ORDER BY conditions (e.g. "price DESC" or "name ASC")
|
||||
* @param integer $recursive The number of levels deep to fetch associated records
|
||||
* @param string $type Type of find operation (all / first / count / neighbors / list / threaded)
|
||||
* @param array $query Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
|
||||
* @return array Array of records
|
||||
* @access public
|
||||
* @link http://book.cakephp.org/view/1018/find
|
||||
*/
|
||||
function find($conditions = null, $fields = array(), $order = null, $recursive = null) {
|
||||
if (!is_string($conditions) || (is_string($conditions) && !array_key_exists($conditions, $this->_findMethods))) {
|
||||
$type = 'first';
|
||||
$query = array_merge(compact('conditions', 'fields', 'order', 'recursive'), array('limit' => 1));
|
||||
} else {
|
||||
list($type, $query) = array($conditions, $fields);
|
||||
}
|
||||
|
||||
public function find($type = 'first', $query = array()) {
|
||||
$this->findQueryType = $type;
|
||||
$this->id = $this->getID();
|
||||
|
||||
$query = array_merge(
|
||||
array(
|
||||
'conditions' => null, 'fields' => null, 'joins' => array(), 'limit' => null,
|
||||
'offset' => null, 'order' => null, 'page' => null, 'group' => null, 'callbacks' => true
|
||||
'offset' => null, 'order' => null, 'page' => 1, 'group' => null, 'callbacks' => true
|
||||
),
|
||||
(array)$query
|
||||
);
|
||||
|
||||
if ($type != 'all') {
|
||||
if ($type !== 'all') {
|
||||
if ($this->_findMethods[$type] === true) {
|
||||
$query = $this->{'_find' . ucfirst($type)}('before', $query);
|
||||
}
|
||||
|
@ -2181,15 +2171,11 @@ class Model extends Object {
|
|||
}
|
||||
}
|
||||
|
||||
if (!$db = $this->getDataSource()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$results = $db->read($this, $query);
|
||||
$results = $this->getDataSource()->read($this, $query);
|
||||
$this->resetAssociations();
|
||||
|
||||
if ($query['callbacks'] === true || $query['callbacks'] === 'after') {
|
||||
$results = $this->__filterResults($results);
|
||||
$results = $this->_filterResults($results);
|
||||
}
|
||||
|
||||
$this->findQueryType = null;
|
||||
|
@ -2210,14 +2196,13 @@ class Model extends Object {
|
|||
* @param array $query
|
||||
* @param array $data
|
||||
* @return array
|
||||
* @access protected
|
||||
* @see Model::find()
|
||||
*/
|
||||
function _findFirst($state, $query, $results = array()) {
|
||||
if ($state == 'before') {
|
||||
protected function _findFirst($state, $query, $results = array()) {
|
||||
if ($state === 'before') {
|
||||
$query['limit'] = 1;
|
||||
return $query;
|
||||
} elseif ($state == 'after') {
|
||||
} elseif ($state === 'after') {
|
||||
if (empty($results[0])) {
|
||||
return false;
|
||||
}
|
||||
|
@ -2232,11 +2217,10 @@ class Model extends Object {
|
|||
* @param array $query
|
||||
* @param array $data
|
||||
* @return int The number of records found, or false
|
||||
* @access protected
|
||||
* @see Model::find()
|
||||
*/
|
||||
function _findCount($state, $query, $results = array()) {
|
||||
if ($state == 'before') {
|
||||
protected function _findCount($state, $query, $results = array()) {
|
||||
if ($state === 'before') {
|
||||
$db = $this->getDataSource();
|
||||
if (empty($query['fields'])) {
|
||||
$query['fields'] = $db->calculate($this, 'count');
|
||||
|
@ -2247,7 +2231,7 @@ class Model extends Object {
|
|||
}
|
||||
$query['order'] = false;
|
||||
return $query;
|
||||
} elseif ($state == 'after') {
|
||||
} elseif ($state === 'after') {
|
||||
if (isset($results[0][0]['count'])) {
|
||||
return intval($results[0][0]['count']);
|
||||
} elseif (isset($results[0][$this->alias]['count'])) {
|
||||
|
@ -2264,11 +2248,10 @@ class Model extends Object {
|
|||
* @param array $query
|
||||
* @param array $data
|
||||
* @return array Key/value pairs of primary keys/display field values of all records found
|
||||
* @access protected
|
||||
* @see Model::find()
|
||||
*/
|
||||
function _findList($state, $query, $results = array()) {
|
||||
if ($state == 'before') {
|
||||
protected function _findList($state, $query, $results = array()) {
|
||||
if ($state === 'before') {
|
||||
if (empty($query['fields'])) {
|
||||
$query['fields'] = array("{$this->alias}.{$this->primaryKey}", "{$this->alias}.{$this->displayField}");
|
||||
$list = array("{n}.{$this->alias}.{$this->primaryKey}", "{n}.{$this->alias}.{$this->displayField}", null);
|
||||
|
@ -2277,14 +2260,14 @@ class Model extends Object {
|
|||
$query['fields'] = String::tokenize($query['fields']);
|
||||
}
|
||||
|
||||
if (count($query['fields']) == 1) {
|
||||
if (count($query['fields']) === 1) {
|
||||
if (strpos($query['fields'][0], '.') === false) {
|
||||
$query['fields'][0] = $this->alias . '.' . $query['fields'][0];
|
||||
}
|
||||
|
||||
$list = array("{n}.{$this->alias}.{$this->primaryKey}", '{n}.' . $query['fields'][0], null);
|
||||
$query['fields'] = array("{$this->alias}.{$this->primaryKey}", $query['fields'][0]);
|
||||
} elseif (count($query['fields']) == 3) {
|
||||
} elseif (count($query['fields']) === 3) {
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
if (strpos($query['fields'][$i], '.') === false) {
|
||||
$query['fields'][$i] = $this->alias . '.' . $query['fields'][$i];
|
||||
|
@ -2307,7 +2290,7 @@ class Model extends Object {
|
|||
}
|
||||
list($query['list']['keyPath'], $query['list']['valuePath'], $query['list']['groupPath']) = $list;
|
||||
return $query;
|
||||
} elseif ($state == 'after') {
|
||||
} elseif ($state === 'after') {
|
||||
if (empty($results)) {
|
||||
return array();
|
||||
}
|
||||
|
@ -2326,7 +2309,7 @@ class Model extends Object {
|
|||
* @return array
|
||||
*/
|
||||
protected function _findNeighbors($state, $query, $results = array()) {
|
||||
if ($state == 'before') {
|
||||
if ($state === 'before') {
|
||||
extract($query);
|
||||
$conditions = (array)$conditions;
|
||||
if (isset($field) && isset($value)) {
|
||||
|
@ -2343,7 +2326,7 @@ class Model extends Object {
|
|||
$query['field'] = $field;
|
||||
$query['value'] = $value;
|
||||
return $query;
|
||||
} elseif ($state == 'after') {
|
||||
} elseif ($state === 'after') {
|
||||
extract($query);
|
||||
unset($query['conditions'][$field . ' <']);
|
||||
$return = array();
|
||||
|
@ -2362,9 +2345,9 @@ class Model extends Object {
|
|||
if (!array_key_exists('prev', $return)) {
|
||||
$return['prev'] = $return2[0];
|
||||
}
|
||||
if (count($return2) == 2) {
|
||||
if (count($return2) === 2) {
|
||||
$return['next'] = $return2[1];
|
||||
} elseif (count($return2) == 1 && !$return['prev']) {
|
||||
} elseif (count($return2) === 1 && !$return['prev']) {
|
||||
$return['next'] = $return2[0];
|
||||
} else {
|
||||
$return['next'] = null;
|
||||
|
@ -2383,9 +2366,9 @@ class Model extends Object {
|
|||
* @return array Threaded results
|
||||
*/
|
||||
protected function _findThreaded($state, $query, $results = array()) {
|
||||
if ($state == 'before') {
|
||||
if ($state === 'before') {
|
||||
return $query;
|
||||
} elseif ($state == 'after') {
|
||||
} elseif ($state === 'after') {
|
||||
$return = $idMap = array();
|
||||
$ids = Set::extract($results, '{n}.' . $this->alias . '.' . $this->primaryKey);
|
||||
|
||||
|
@ -2425,9 +2408,8 @@ class Model extends Object {
|
|||
* @param array Results to filter
|
||||
* @param boolean $primary If this is the primary model results (results from model where the find operation was performed)
|
||||
* @return array Set of filtered results
|
||||
* @access private
|
||||
*/
|
||||
function __filterResults($results, $primary = true) {
|
||||
protected function _filterResults($results, $primary = true) {
|
||||
$return = $this->Behaviors->trigger(
|
||||
'afterFind',
|
||||
array(&$this, $results, $primary),
|
||||
|
|
|
@ -203,7 +203,7 @@ class CakeRequest implements ArrayAccess {
|
|||
|
||||
$base = $this->base;
|
||||
|
||||
if (strpos($uri, $base) === 0) {
|
||||
if (strlen($base) > 0 && strpos($uri, $base) === 0) {
|
||||
$uri = substr($uri, strlen($base));
|
||||
}
|
||||
if (strpos($uri, '?') !== false) {
|
||||
|
|
|
@ -89,13 +89,9 @@ class MediaView extends View {
|
|||
* @return mixed
|
||||
*/
|
||||
function render() {
|
||||
$name = $download = $extension = $id = $modified = $path = $size = $cache = $mimeType = $compress = null;
|
||||
$name = $download = $extension = $id = $modified = $path = $cache = $mimeType = $compress = null;
|
||||
extract($this->viewVars, EXTR_OVERWRITE);
|
||||
|
||||
if ($size) {
|
||||
$id = $id . '_' . $size;
|
||||
}
|
||||
|
||||
if (is_dir($path)) {
|
||||
$path = $path . $id;
|
||||
} else {
|
||||
|
@ -109,15 +105,12 @@ class MediaView extends View {
|
|||
throw new NotFoundException('The requested file was not found');
|
||||
}
|
||||
|
||||
if (is_null($name)) {
|
||||
$name = $id;
|
||||
}
|
||||
|
||||
if (is_array($mimeType)) {
|
||||
$this->response->type($mimeType);
|
||||
}
|
||||
|
||||
if (isset($extension) && $this->response->type($extension) && $this->_isActive()) {
|
||||
if (isset($extension) && $this->_isActive()) {
|
||||
$extension = strtolower($extension);
|
||||
$chunkSize = 8192;
|
||||
$buffer = '';
|
||||
$fileSize = @filesize($path);
|
||||
|
@ -131,6 +124,9 @@ class MediaView extends View {
|
|||
} else {
|
||||
$modified = time();
|
||||
}
|
||||
if ($this->response->type($extension) === false) {
|
||||
$download = true;
|
||||
}
|
||||
|
||||
if ($cache) {
|
||||
$this->response->cache($modified, $cache);
|
||||
|
@ -155,7 +151,10 @@ class MediaView extends View {
|
|||
if (!empty($contentType)) {
|
||||
$this->response->type($contentType);
|
||||
}
|
||||
$this->response->download($name . '.' . $extension);
|
||||
if (is_null($name)) {
|
||||
$name = $id;
|
||||
}
|
||||
$this->response->download($name);
|
||||
$this->response->header(array('Accept-Ranges' => 'bytes'));
|
||||
|
||||
$httpRange = env('HTTP_RANGE');
|
||||
|
@ -176,7 +175,6 @@ class MediaView extends View {
|
|||
$this->response->header('Content-Length', $fileSize);
|
||||
}
|
||||
} else {
|
||||
$this->response->type($extension);
|
||||
$this->response->header(array(
|
||||
'Content-Length' => $fileSize
|
||||
));
|
||||
|
@ -237,7 +235,7 @@ class MediaView extends View {
|
|||
|
||||
/**
|
||||
* Flushes the contents of the output buffer
|
||||
*
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function _flushBuffer() {
|
||||
|
|
|
@ -26,7 +26,7 @@ if ($noLogs):
|
|||
$logs = array();
|
||||
foreach ($sources as $source):
|
||||
$db =& ConnectionManager::getDataSource($source);
|
||||
if (!$db->isInterfaceSupported('getLog')):
|
||||
if (!method_exists($db, 'getLog')):
|
||||
continue;
|
||||
endif;
|
||||
$logs[$source] = $db->getLog();
|
||||
|
|
|
@ -98,7 +98,7 @@ TEXT;
|
|||
if (php_sapi_name() == 'cli') {
|
||||
$template = $text;
|
||||
}
|
||||
if ($showHtml === null) {
|
||||
if ($showHtml === null && $template !== $text) {
|
||||
$showHtml = true;
|
||||
}
|
||||
$var = print_r($var, true);
|
||||
|
|
|
@ -684,7 +684,7 @@ class BasicsTest extends CakeTestCase {
|
|||
$this->assertPattern($pattern, $result);
|
||||
|
||||
ob_start();
|
||||
debug('<div>this-is-a-test</div>');
|
||||
debug('<div>this-is-a-test</div>', true);
|
||||
$result = ob_get_clean();
|
||||
$pattern = '/(.+?tests(\/|\\\)cases(\/|\\\)basics\.test\.php|';
|
||||
$pattern .= preg_quote(substr(__FILE__, 1), '/') . ')';
|
||||
|
@ -762,7 +762,7 @@ class BasicsTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testStripslashesDeepSybase() {
|
||||
$this->skipUnless(ini_get('magic_quotes_sybase') === '1', '%s magic_quotes_sybase is off');
|
||||
$this->skipUnless(ini_get('magic_quotes_sybase') === '1', 'magic_quotes_sybase is off');
|
||||
|
||||
$this->assertEqual(stripslashes_deep("tes\'t"), "tes\'t");
|
||||
|
||||
|
|
|
@ -1273,6 +1273,31 @@ class CakeRequestTestCase extends CakeTestCase {
|
|||
'webroot' => '/site/',
|
||||
),
|
||||
),
|
||||
array(
|
||||
'Apache - w/rewrite, document root set to webroot, request root, no PATH_INFO/REQUEST_URI',
|
||||
array(
|
||||
'App' => array(
|
||||
'base' => false,
|
||||
'baseUrl' => false,
|
||||
'dir' => 'app',
|
||||
'webroot' => 'webroot'
|
||||
),
|
||||
'SERVER' => array(
|
||||
'SERVER_NAME' => 'localhost',
|
||||
'DOCUMENT_ROOT' => '/Library/WebServer/Documents/site/app/webroot',
|
||||
'SCRIPT_FILENAME' => '/Library/WebServer/Documents/site/app/webroot/index.php',
|
||||
'SCRIPT_NAME' => '/index.php',
|
||||
'PHP_SELF' => '/index.php',
|
||||
'PATH_INFO' => null,
|
||||
'REQUEST_URI' => null,
|
||||
),
|
||||
),
|
||||
array(
|
||||
'url' => '',
|
||||
'base' => '',
|
||||
'webroot' => '/',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -290,7 +290,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$this->Tree->save(array($modelClass => array('name' => 'testAddOrphan', $parentField => null)));
|
||||
$result = $this->Tree->find(null, array('name', $parentField), $modelClass . '.' . $leftField . ' desc');
|
||||
$result = $this->Tree->find('first', array('fields' => array('name', $parentField), 'order' => $modelClass . '.' . $leftField . ' desc'));
|
||||
$expected = array($modelClass => array('name' => 'testAddOrphan', $parentField => null));
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
|
@ -309,7 +309,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data= $this->Tree->find(array($modelClass . '.name' => '1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$initialCount = $this->Tree->find('count');
|
||||
|
||||
$this->Tree->create();
|
||||
|
@ -369,7 +369,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$this->Tree->save(array('name' => 'testAddNotIndexed', $parentField => null));
|
||||
$result = $this->Tree->find(null, array('name', $parentField), $modelClass . '.' . $leftField . ' desc');
|
||||
$result = $this->Tree->find('first', array('fields' => array('name', $parentField), 'order' => $modelClass . '.' . $leftField . ' desc'));
|
||||
$expected = array($modelClass => array('name' => 'testAddNotIndexed', $parentField => null));
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
|
@ -389,10 +389,10 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1.1')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
$direct = $this->Tree->children($parent_id, true, array('id', 'name', $parentField, $leftField, $rightField));
|
||||
|
@ -416,10 +416,10 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1.1')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->whitelist = array($parentField, 'name', 'description');
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
|
@ -463,10 +463,10 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1.1'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data= $this->Tree->find(array($modelClass . '.name' => '1.2'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.2')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
|
||||
|
@ -492,10 +492,10 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1.2'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data= $this->Tree->find(array($modelClass . '.name' => '1.1'), array('id'));
|
||||
$data= $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
|
||||
|
@ -521,10 +521,10 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1.1')));
|
||||
|
||||
$expects = $this->Tree->find('all');
|
||||
$before = $this->Tree->read(null, $data[$modelClass]['id']);
|
||||
|
@ -608,7 +608,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.2'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.2')));
|
||||
$this->Tree->moveUp($data[$modelClass]['id']);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -630,7 +630,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.1')));
|
||||
|
||||
$this->Tree->moveUp($data[$modelClass]['id']);
|
||||
|
||||
|
@ -653,7 +653,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 10);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.5'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
|
||||
$this->Tree->moveUp($data[$modelClass]['id'], 2);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -684,7 +684,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 10);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.5'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
|
||||
$this->Tree->moveUp($data[$modelClass]['id'], true);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -715,7 +715,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id']);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -737,7 +737,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.2'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id']);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -759,7 +759,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 10);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.5'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id'], true);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -790,7 +790,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 10);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.5'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id'], 2);
|
||||
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -821,7 +821,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 10);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.5'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.5')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->saveField('name', 'renamed');
|
||||
$parent = $this->Tree->findByName('1. Root', array('id'));
|
||||
|
@ -851,7 +851,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
extract($this->settings);
|
||||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(1, 1);
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->save(array($parentField => null));
|
||||
|
||||
|
@ -1079,7 +1079,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
|
||||
$direct = $this->Tree->children(null, true, array('id', 'name', $parentField, $leftField, $rightField));
|
||||
|
@ -1110,7 +1110,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
|
||||
$direct = $this->Tree->childCount(null, true);
|
||||
|
@ -1131,7 +1131,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.2.2'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2.2')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
|
||||
$result = $this->Tree->getParentNode(null, array('name'));
|
||||
|
@ -1150,7 +1150,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.2.2'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1.2.2')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
|
||||
$result = $this->Tree->getPath(null, array('name'));
|
||||
|
@ -1173,7 +1173,7 @@ class NumberTreeTest extends CakeTestCase {
|
|||
array('className' => $modelClass, 'foreignKey' => $parentField, 'conditions' => array('Dummy.id' => null)))), false);
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
|
||||
$direct = $this->Tree->children(null, true, array('id', 'name', $parentField, $leftField, $rightField));
|
||||
|
@ -1205,13 +1205,13 @@ class NumberTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(3, 3);
|
||||
$nodes = $this->Tree->find('list', array('order' => $leftField));
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id']);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.2.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.2.1')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id']);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.3.2.2'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.3.2.2')));
|
||||
$this->Tree->moveDown($data[$modelClass]['id']);
|
||||
|
||||
$unsortedNodes = $this->Tree->find('list', array('order' => $leftField));
|
||||
|
@ -1678,10 +1678,10 @@ class UuidTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1.1')));
|
||||
$this->Tree->id= $data[$modelClass]['id'];
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
$direct = $this->Tree->children($parent_id, true, array('name', $leftField, $rightField));
|
||||
|
@ -1704,10 +1704,10 @@ class UuidTreeTest extends CakeTestCase {
|
|||
$this->Tree->initialize(2, 2);
|
||||
$this->Tree->id = null;
|
||||
|
||||
$parent = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$parent = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$parent_id = $parent[$modelClass]['id'];
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1.1.1'), array('id'));
|
||||
$data = $this->Tree->find('first', array('fields' => array('id'), 'conditions' => array($modelClass . '.name' => '1.1.1')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
$this->Tree->whitelist = array($parentField, 'name', 'description');
|
||||
$this->Tree->saveField($parentField, $parent_id);
|
||||
|
@ -1796,7 +1796,7 @@ class UuidTreeTest extends CakeTestCase {
|
|||
$this->Tree = new $modelClass();
|
||||
$this->Tree->initialize(2, 2);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
|
||||
$direct = $this->Tree->children(null, true, array('name', $leftField, $rightField));
|
||||
|
@ -1827,7 +1827,7 @@ class UuidTreeTest extends CakeTestCase {
|
|||
$this->Tree->bindModel(array('belongsTo' => array('Dummy' =>
|
||||
array('className' => $modelClass, 'foreignKey' => $parentField, 'conditions' => array('Dummy.id' => null)))), false);
|
||||
|
||||
$data = $this->Tree->find(array($modelClass . '.name' => '1. Root'));
|
||||
$data = $this->Tree->find('first', array('conditions' => array($modelClass . '.name' => '1. Root')));
|
||||
$this->Tree->id = $data[$modelClass]['id'];
|
||||
|
||||
$direct = $this->Tree->children(null, true, array('name', $leftField, $rightField));
|
||||
|
|
|
@ -591,22 +591,33 @@ class CakeSchemaTest extends CakeTestCase {
|
|||
$read = $this->Schema->read(array('connection' => 'schema_prefix', 'models' => false));
|
||||
$this->assertTrue(empty($read['tables']));
|
||||
|
||||
$SchemaPost = ClassRegistry::init('SchemaPost');
|
||||
$SchemaPost->table = 'sts';
|
||||
$SchemaPost->tablePrefix = 'po';
|
||||
$read = $this->Schema->read(array(
|
||||
'connection' => 'test',
|
||||
'name' => 'TestApp',
|
||||
'models' => array('SchemaPost')
|
||||
));
|
||||
$this->assertFalse(isset($read['tables']['missing']['posts']), 'Posts table was not read from tablePrefix %s');
|
||||
|
||||
$read = $this->Schema->read(array(
|
||||
'connection' => 'test',
|
||||
'name' => 'TestApp',
|
||||
'models' => array('SchemaComment', 'SchemaTag', 'SchemaPost')
|
||||
));
|
||||
$this->assertFalse(isset($read['tables']['missing']['posts_tags']), 'Join table marked as missing %s');
|
||||
$this->assertFalse(isset($read['tables']['missing']['posts_tags']), 'Join table marked as missing');
|
||||
}
|
||||
|
||||
/**
|
||||
* testSchemaReadWithOddTablePrefix method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testSchemaReadWithOddTablePrefix() {
|
||||
$config = ConnectionManager::getDataSource('test')->config;
|
||||
$this->skipIf(!empty($config['prefix']), 'This test can not be executed with datasource prefix set');
|
||||
$SchemaPost = ClassRegistry::init('SchemaPost');
|
||||
$SchemaPost->tablePrefix = 'po';
|
||||
$SchemaPost->useTable = 'sts';
|
||||
$read = $this->Schema->read(array(
|
||||
'connection' => 'test',
|
||||
'name' => 'TestApp',
|
||||
'models' => array('SchemaPost')
|
||||
));
|
||||
|
||||
$this->assertFalse(isset($read['tables']['missing']['posts']), 'Posts table was not read from tablePrefix');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -615,6 +626,9 @@ class CakeSchemaTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testSchemaReadWithTablePrefix() {
|
||||
$config = ConnectionManager::getDataSource('test')->config;
|
||||
$this->skipIf(!empty($config['prefix']), 'This test can not be executed with datasource prefix set');
|
||||
|
||||
$model = new SchemaPrefixAuthUser();
|
||||
|
||||
$Schema = new CakeSchema();
|
||||
|
|
|
@ -458,6 +458,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
*/
|
||||
function testAlterSchemaIndexes() {
|
||||
$this->Dbo->cacheSources = $this->Dbo->testing = false;
|
||||
$table = $this->Dbo->fullTableName('altertest');
|
||||
|
||||
$schema1 = new CakeSchema(array(
|
||||
'name' => 'AlterTest1',
|
||||
|
@ -494,7 +495,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
)));
|
||||
|
||||
$result = $this->Dbo->alterSchema($schema2->compare($schema1));
|
||||
$this->assertContains('ALTER TABLE `altertest`', $result);
|
||||
$this->assertContains("ALTER TABLE $table", $result);
|
||||
$this->assertContains('ADD KEY name_idx (`name`),', $result);
|
||||
$this->assertContains('ADD KEY group_idx (`group1`),', $result);
|
||||
$this->assertContains('ADD KEY compound_idx (`group1`, `group2`),', $result);
|
||||
|
@ -521,7 +522,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
)));
|
||||
|
||||
$result = $this->Dbo->alterSchema($schema3->compare($schema2));
|
||||
$this->assertContains('ALTER TABLE `altertest`', $result);
|
||||
$this->assertContains("ALTER TABLE $table", $result);
|
||||
$this->assertContains('DROP PRIMARY KEY,', $result);
|
||||
$this->assertContains('DROP KEY name_idx,', $result);
|
||||
$this->assertContains('DROP KEY group_idx,', $result);
|
||||
|
@ -540,7 +541,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
// Drop the indexes
|
||||
$result = $this->Dbo->alterSchema($schema1->compare($schema3));
|
||||
|
||||
$this->assertContains('ALTER TABLE `altertest`', $result);
|
||||
$this->assertContains("ALTER TABLE $table", $result);
|
||||
$this->assertContains('DROP KEY name_idx,', $result);
|
||||
$this->assertContains('DROP KEY group_idx,', $result);
|
||||
$this->assertContains('DROP KEY compound_idx,', $result);
|
||||
|
@ -611,11 +612,11 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$this->assertContains('COLLATE=utf8_general_ci', $result);
|
||||
|
||||
$this->Dbo->rawQuery($result);
|
||||
$result = $this->Dbo->listDetailedSources('altertest');
|
||||
$result = $this->Dbo->listDetailedSources($this->Dbo->fullTableName('altertest', false));
|
||||
$this->assertEqual($result['Collation'], 'utf8_general_ci');
|
||||
$this->assertEqual($result['Engine'], 'InnoDB');
|
||||
$this->assertEqual($result['charset'], 'utf8');
|
||||
|
||||
|
||||
$this->Dbo->rawQuery($this->Dbo->dropSchema($schema1));
|
||||
}
|
||||
|
||||
|
@ -662,18 +663,20 @@ class DboMysqlTest extends CakeTestCase {
|
|||
function testReadTableParameters() {
|
||||
$this->Dbo->cacheSources = $this->Dbo->testing = false;
|
||||
$tableName = 'tinyint_' . uniqid();
|
||||
$this->Dbo->rawQuery('CREATE TABLE ' . $this->Dbo->fullTableName($tableName) . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;');
|
||||
$result = $this->Dbo->readTableParameters($tableName);
|
||||
$this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName));
|
||||
$table = $this->Dbo->fullTableName($tableName);
|
||||
$this->Dbo->rawQuery('CREATE TABLE ' . $table . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;');
|
||||
$result = $this->Dbo->readTableParameters($this->Dbo->fullTableName($tableName, false));
|
||||
$this->Dbo->rawQuery('DROP TABLE ' . $table);
|
||||
$expected = array(
|
||||
'charset' => 'utf8',
|
||||
'collate' => 'utf8_unicode_ci',
|
||||
'engine' => 'InnoDB');
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$this->Dbo->rawQuery('CREATE TABLE ' . $this->Dbo->fullTableName($tableName) . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id)) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_general_ci;');
|
||||
$result = $this->Dbo->readTableParameters($tableName);
|
||||
$this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName));
|
||||
$table = $this->Dbo->fullTableName($tableName);
|
||||
$this->Dbo->rawQuery('CREATE TABLE ' . $table . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id)) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_general_ci;');
|
||||
$result = $this->Dbo->readTableParameters($this->Dbo->fullTableName($tableName, false));
|
||||
$this->Dbo->rawQuery('DROP TABLE ' . $table);
|
||||
$expected = array(
|
||||
'charset' => 'cp1250',
|
||||
'collate' => 'cp1250_general_ci',
|
||||
|
@ -762,7 +765,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
|
||||
$this->Dbo->execute($this->Dbo->createSchema($schema));
|
||||
$model = new CakeTestModel(array('table' => 'testdescribes', 'name' => 'Testdescribes'));
|
||||
$result = $this->Dbo->describe($model);
|
||||
$result = $model->getDataSource()->describe($model);
|
||||
$this->Dbo->execute($this->Dbo->dropSchema($schema));
|
||||
|
||||
$this->assertEqual($result['stringy']['collate'], 'cp1250_general_ci');
|
||||
|
@ -779,7 +782,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$queryResult = $this->getMock('PDOStatement');
|
||||
$db->expects($this->once())
|
||||
->method('_execute')
|
||||
->with('SHOW TABLES FROM cake')
|
||||
->with('SHOW TABLES FROM `cake`')
|
||||
->will($this->returnValue($queryResult));
|
||||
$queryResult->expects($this->at(0))
|
||||
->method('fetch')
|
||||
|
@ -807,7 +810,8 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$this->assertEquals(array(), $result, 'Should be empty when table does not exist.');
|
||||
|
||||
$result = $this->Dbo->listDetailedSources();
|
||||
$this->assertTrue(isset($result['apples']), 'Key should exist');
|
||||
$tableName = $this->Dbo->fullTableName('apples', false);
|
||||
$this->assertTrue(isset($result[$tableName]), 'Key should exist');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1633,8 +1637,9 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$params = $this->_prepareAssociationQuery($this->Model, $queryData, $binding);
|
||||
|
||||
$result = $this->Dbo->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);
|
||||
$assocTable = $this->Dbo->fullTableName($this->Model->TestModel4TestModel7, false);
|
||||
$this->assertPattern('/^SELECT\s+`TestModel7`\.`id`, `TestModel7`\.`name`, `TestModel7`\.`created`, `TestModel7`\.`updated`, `TestModel4TestModel7`\.`test_model4_id`, `TestModel4TestModel7`\.`test_model7_id`\s+/', $result);
|
||||
$this->assertPattern('/\s+FROM\s+`test_model7` AS `TestModel7`\s+JOIN\s+`' . $this->Dbo->fullTableName('test_model4_test_model7', false) . '`/', $result);
|
||||
$this->assertPattern('/\s+FROM\s+`test_model7` AS `TestModel7`\s+JOIN\s+`' . $assocTable . '`/', $result);
|
||||
$this->assertPattern('/\s+ON\s+\(`TestModel4TestModel7`\.`test_model4_id`\s+=\s+{\$__cakeID__\$}\s+AND/', $result);
|
||||
$this->assertPattern('/\s+AND\s+`TestModel4TestModel7`\.`test_model7_id`\s+=\s+`TestModel7`\.`id`\)/', $result);
|
||||
$this->assertPattern('/WHERE\s+(?:\()?1 = 1(?:\))?\s*$/', $result);
|
||||
|
@ -2869,14 +2874,15 @@ class DboMysqlTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testVirtualFields() {
|
||||
$this->loadFixtures('Article', 'Comment');
|
||||
$this->loadFixtures('Article', 'Comment', 'Tag');
|
||||
$this->Dbo->virtualFieldSeparator = '__';
|
||||
$Article = ClassRegistry::init('Article');
|
||||
$commentsTable = $this->Dbo->fullTableName('comments', false);
|
||||
$Article->virtualFields = array(
|
||||
'this_moment' => 'NOW()',
|
||||
'two' => '1 + 1',
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $this->Dbo->fullTableName('comments') .
|
||||
' WHERE Article.id = ' . $this->Dbo->fullTableName('comments') . '.article_id'
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $commentsTable .
|
||||
' WHERE Article.id = ' . $commentsTable . '.article_id'
|
||||
);
|
||||
$result = $this->Dbo->fields($Article);
|
||||
$expected = array(
|
||||
|
@ -2889,8 +2895,9 @@ class DboMysqlTest extends CakeTestCase {
|
|||
'`Article`.`updated`',
|
||||
'(NOW()) AS `Article__this_moment`',
|
||||
'(1 + 1) AS `Article__two`',
|
||||
'(SELECT COUNT(*) FROM comments WHERE `Article`.`id` = `comments`.`article_id`) AS `Article__comment_count`'
|
||||
"(SELECT COUNT(*) FROM $commentsTable WHERE `Article`.`id` = `$commentsTable`.`article_id`) AS `Article__comment_count`"
|
||||
);
|
||||
|
||||
$this->assertEqual($expected, $result);
|
||||
|
||||
$result = $this->Dbo->fields($Article, null, array('this_moment', 'title'));
|
||||
|
@ -2919,7 +2926,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
'`Article`.*',
|
||||
'(NOW()) AS `Article__this_moment`',
|
||||
'(1 + 1) AS `Article__two`',
|
||||
'(SELECT COUNT(*) FROM comments WHERE `Article`.`id` = `comments`.`article_id`) AS `Article__comment_count`'
|
||||
"(SELECT COUNT(*) FROM $commentsTable WHERE `Article`.`id` = `$commentsTable`.`article_id`) AS `Article__comment_count`"
|
||||
);
|
||||
$this->assertEqual($expected, $result);
|
||||
|
||||
|
@ -2928,7 +2935,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
'*',
|
||||
'(NOW()) AS `Article__this_moment`',
|
||||
'(1 + 1) AS `Article__two`',
|
||||
'(SELECT COUNT(*) FROM comments WHERE `Article`.`id` = `comments`.`article_id`) AS `Article__comment_count`'
|
||||
"(SELECT COUNT(*) FROM $commentsTable WHERE `Article`.`id` = `$commentsTable`.`article_id`) AS `Article__comment_count`"
|
||||
);
|
||||
$this->assertEqual($expected, $result);
|
||||
}
|
||||
|
@ -2940,11 +2947,13 @@ class DboMysqlTest extends CakeTestCase {
|
|||
*/
|
||||
function testVirtualFieldsInConditions() {
|
||||
$Article = ClassRegistry::init('Article');
|
||||
$commentsTable = $this->Dbo->fullTableName('comments', false);
|
||||
|
||||
$Article->virtualFields = array(
|
||||
'this_moment' => 'NOW()',
|
||||
'two' => '1 + 1',
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $this->Dbo->fullTableName('comments') .
|
||||
' WHERE Article.id = ' . $this->Dbo->fullTableName('comments') . '.article_id'
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $commentsTable .
|
||||
' WHERE Article.id = ' . $commentsTable . '.article_id'
|
||||
);
|
||||
$conditions = array('two' => 2);
|
||||
$result = $this->Dbo->conditions($conditions, true, false, $Article);
|
||||
|
@ -2957,7 +2966,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$this->assertEqual($expected, $result);
|
||||
|
||||
$conditions = array('comment_count >' => 5);
|
||||
$expected = '(SELECT COUNT(*) FROM comments WHERE `Article`.`id` = `comments`.`article_id`) > 5';
|
||||
$expected = "(SELECT COUNT(*) FROM $commentsTable WHERE `Article`.`id` = `$commentsTable`.`article_id`) > 5";
|
||||
$result = $this->Dbo->conditions($conditions, true, false, $Article);
|
||||
$this->assertEqual($expected, $result);
|
||||
|
||||
|
@ -2973,7 +2982,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testConditionsWithComplexVirtualFields() {
|
||||
$Article = ClassRegistry::init('Article');
|
||||
$Article = ClassRegistry::init('Article', 'Comment', 'Tag');
|
||||
$Article->virtualFields = array(
|
||||
'distance' => 'ACOS(SIN(20 * PI() / 180)
|
||||
* SIN(Article.latitude * PI() / 180)
|
||||
|
@ -2997,11 +3006,12 @@ class DboMysqlTest extends CakeTestCase {
|
|||
*/
|
||||
function testVirtualFieldsInCalculate() {
|
||||
$Article = ClassRegistry::init('Article');
|
||||
$commentsTable = $this->Dbo->fullTableName('comments', false);
|
||||
$Article->virtualFields = array(
|
||||
'this_moment' => 'NOW()',
|
||||
'two' => '1 + 1',
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $this->Dbo->fullTableName('comments') .
|
||||
' WHERE Article.id = ' . $this->Dbo->fullTableName('comments'). '.article_id'
|
||||
'comment_count' => 'SELECT COUNT(*) FROM ' . $commentsTable .
|
||||
' WHERE Article.id = ' . $commentsTable . '.article_id'
|
||||
);
|
||||
|
||||
$result = $this->Dbo->calculate($Article, 'count', array('this_moment'));
|
||||
|
@ -3009,7 +3019,7 @@ class DboMysqlTest extends CakeTestCase {
|
|||
$this->assertEqual($expected, $result);
|
||||
|
||||
$result = $this->Dbo->calculate($Article, 'max', array('comment_count'));
|
||||
$expected = 'MAX(SELECT COUNT(*) FROM comments WHERE `Article`.`id` = `comments`.`article_id`) AS `comment_count`';
|
||||
$expected = "MAX(SELECT COUNT(*) FROM $commentsTable WHERE `Article`.`id` = `$commentsTable`.`article_id`) AS `comment_count`";
|
||||
$this->assertEqual($expected, $result);
|
||||
}
|
||||
|
||||
|
|
|
@ -365,8 +365,8 @@ class AclNodeTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testNodeAliasParenting() {
|
||||
$Aco = new DbAcoTest();
|
||||
$db = ConnectionManager::getDataSource('test');
|
||||
$Aco = ClassRegistry::init('DbAcoTest');
|
||||
$db = $Aco->getDataSource();
|
||||
$db->truncate($Aco);
|
||||
|
||||
$Aco->create(array('model' => null, 'foreign_key' => null, 'parent_id' => null, 'alias' => 'Application'));
|
||||
|
|
|
@ -3496,19 +3496,16 @@ class ModelReadTest extends BaseModelTest {
|
|||
* @return void
|
||||
*/
|
||||
public function testFindNeighbors() {
|
||||
$this->loadFixtures('User', 'Article');
|
||||
$this->loadFixtures('User', 'Article', 'Comment', 'Tag', 'ArticlesTag', 'Attachment');
|
||||
$TestModel = new Article();
|
||||
|
||||
$TestModel->id = 1;
|
||||
$result = $TestModel->find('neighbors', array('fields' => array('id')));
|
||||
$expected = array(
|
||||
'prev' => null,
|
||||
'next' => array(
|
||||
'Article' => array('id' => 2),
|
||||
'Comment' => array(),
|
||||
'Tag' => array()
|
||||
));
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$this->assertNull($result['prev']);
|
||||
$this->assertEqual($result['next']['Article'], array('id' => 2));
|
||||
$this->assertEqual(count($result['next']['Comment']), 2);
|
||||
$this->assertEqual(count($result['next']['Tag']), 2);
|
||||
|
||||
$TestModel->id = 2;
|
||||
$TestModel->recursive = 0;
|
||||
|
@ -3530,15 +3527,11 @@ class ModelReadTest extends BaseModelTest {
|
|||
$TestModel->id = 3;
|
||||
$TestModel->recursive = 1;
|
||||
$result = $TestModel->find('neighbors', array('fields' => array('id')));
|
||||
$expected = array(
|
||||
'prev' => array(
|
||||
'Article' => array('id' => 2),
|
||||
'Comment' => array(),
|
||||
'Tag' => array()
|
||||
),
|
||||
'next' => null
|
||||
);
|
||||
$this->assertEqual($result, $expected);
|
||||
|
||||
$this->assertNull($result['next']);
|
||||
$this->assertEqual($result['prev']['Article'], array('id' => 2));
|
||||
$this->assertEqual(count($result['prev']['Comment']), 2);
|
||||
$this->assertEqual(count($result['prev']['Tag']), 2);
|
||||
|
||||
$TestModel->id = 1;
|
||||
$result = $TestModel->find('neighbors', array('recursive' => -1));
|
||||
|
@ -5094,7 +5087,7 @@ class ModelReadTest extends BaseModelTest {
|
|||
$this->loadFixtures('Portfolio', 'Item', 'ItemsPortfolio', 'Syfile', 'Image');
|
||||
$Portfolio = new Portfolio();
|
||||
|
||||
$result = $Portfolio->find(array('id' => 2), null, null, 3);
|
||||
$result = $Portfolio->find('first', array('conditions' => array('id' => 2), 'recursive' => 3));
|
||||
$expected = array(
|
||||
'Portfolio' => array(
|
||||
'id' => 2,
|
||||
|
@ -5732,7 +5725,7 @@ class ModelReadTest extends BaseModelTest {
|
|||
$fullDebug = $this->db->fullDebug;
|
||||
$this->db->fullDebug = true;
|
||||
$TestModel->recursive = 6;
|
||||
$result = $TestModel->find(array('CategoryThread.id' => 7));
|
||||
$result = $TestModel->find('first', array('conditions' => array('CategoryThread.id' => 7)));
|
||||
|
||||
$expected = array(
|
||||
'CategoryThread' => array(
|
||||
|
@ -6014,12 +6007,12 @@ class ModelReadTest extends BaseModelTest {
|
|||
function testConditionalNumerics() {
|
||||
$this->loadFixtures('NumericArticle');
|
||||
$NumericArticle = new NumericArticle();
|
||||
$data = array('title' => '12345abcde');
|
||||
$result = $NumericArticle->find($data);
|
||||
$data = array('conditions' => array('title' => '12345abcde'));
|
||||
$result = $NumericArticle->find('first', $data);
|
||||
$this->assertTrue(!empty($result));
|
||||
|
||||
$data = array('title' => '12345');
|
||||
$result = $NumericArticle->find($data);
|
||||
$data = array('conditions' => array('title' => '12345'));
|
||||
$result = $NumericArticle->find('first', $data);
|
||||
$this->assertTrue(empty($result));
|
||||
}
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
$result = $Article->save($data);
|
||||
$this->assertFalse(empty($result));
|
||||
|
||||
$testResult = $Article->find(array('Article.title' => 'Test Title'));
|
||||
$testResult = $Article->find('first', array('conditions' => array('Article.title' => 'Test Title')));
|
||||
|
||||
$this->assertEqual($testResult['Article']['title'], $data['Article']['title']);
|
||||
$this->assertEqual($testResult['Article']['created'], '2008-01-01 00:00:00');
|
||||
|
@ -1019,17 +1019,17 @@ class ModelWriteTest extends BaseModelTest {
|
|||
$Article = new Article();
|
||||
$result = $Article->save(Xml::build('<article title="test xml" user_id="5" />'));
|
||||
$this->assertFalse(empty($result));
|
||||
$results = $Article->find(array('Article.title' => 'test xml'));
|
||||
$results = $Article->find('first', array('conditions' => array('Article.title' => 'test xml')));
|
||||
$this->assertFalse(empty($results));
|
||||
|
||||
$result = $Article->save(Xml::build('<article><title>testing</title><user_id>6</user_id></article>'));
|
||||
$this->assertFalse(empty($result));
|
||||
$results = $Article->find(array('Article.title' => 'testing'));
|
||||
$results = $Article->find('first', array('conditions' => array('Article.title' => 'testing')));
|
||||
$this->assertFalse(empty($results));
|
||||
|
||||
$result = $Article->save(Xml::build('<article><title>testing with DOMDocument</title><user_id>7</user_id></article>', array('return' => 'domdocument')));
|
||||
$this->assertFalse(empty($result));
|
||||
$results = $Article->find(array('Article.title' => 'testing with DOMDocument'));
|
||||
$results = $Article->find('first', array('conditions' => array('Article.title' => 'testing with DOMDocument')));
|
||||
$this->assertFalse(empty($results));
|
||||
}
|
||||
|
||||
|
@ -1111,7 +1111,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
$this->assertFalse(empty($result));
|
||||
|
||||
$TestModel->unbindModel(array('belongsTo' => array('User'), 'hasMany' => array('Comment')));
|
||||
$result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1145,7 +1145,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1180,7 +1180,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id' => 2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1227,7 +1227,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1250,7 +1250,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1290,7 +1290,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1330,7 +1330,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1372,7 +1372,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -1414,7 +1414,7 @@ class ModelWriteTest extends BaseModelTest {
|
|||
'belongsTo' => array('User'),
|
||||
'hasMany' => array('Comment')
|
||||
));
|
||||
$result = $TestModel->find(array('Article.id'=>2), array('id', 'user_id', 'title', 'body'));
|
||||
$result = $TestModel->find('first', array('fields' => array('id', 'user_id', 'title', 'body'), 'conditions' => array('Article.id' => 2)));
|
||||
$expected = array(
|
||||
'Article' => array(
|
||||
'id' => '2',
|
||||
|
@ -2987,10 +2987,6 @@ class ModelWriteTest extends BaseModelTest {
|
|||
$db = ConnectionManager::create('mock_transaction', array(
|
||||
'datasource' => 'MockTransactionDboSource',
|
||||
));
|
||||
$db->expects($this->at(2))
|
||||
->method('isInterfaceSupported')
|
||||
->with('describe')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$db->expects($this->once())
|
||||
->method('describe')
|
||||
|
@ -3026,8 +3022,6 @@ class ModelWriteTest extends BaseModelTest {
|
|||
$db->columns = $testDb->columns;
|
||||
|
||||
$db->expects($this->once())->method('rollback');
|
||||
$db->expects($this->any())->method('isInterfaceSupported')
|
||||
->will($this->returnValue(true));
|
||||
$db->expects($this->any())->method('describe')
|
||||
->will($this->returnValue(array(
|
||||
'id' => array('type' => 'integer'),
|
||||
|
|
|
@ -80,7 +80,7 @@ class MediaViewTest extends CakeTestCase {
|
|||
->method('_isActive')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$this->MediaView->response->expects($this->exactly(2))
|
||||
$this->MediaView->response->expects($this->exactly(1))
|
||||
->method('type')
|
||||
->with('css')
|
||||
->will($this->returnArgument(0));
|
||||
|
@ -94,7 +94,7 @@ class MediaViewTest extends CakeTestCase {
|
|||
'Pragma' => 'no-cache'
|
||||
));
|
||||
|
||||
$this->MediaView->response->expects($this->at(3))
|
||||
$this->MediaView->response->expects($this->at(2))
|
||||
->method('header')
|
||||
->with(array(
|
||||
'Content-Length' => 31
|
||||
|
@ -110,6 +110,61 @@ class MediaViewTest extends CakeTestCase {
|
|||
$this->assertTrue($result !== false);
|
||||
}
|
||||
|
||||
/**
|
||||
* testRenderWithUnknownFileType method
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testRenderWithUnknownFileType() {
|
||||
$this->MediaView->viewVars = array(
|
||||
'path' => TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'config' . DS,
|
||||
'id' => 'no_section.ini',
|
||||
'extension' => 'ini',
|
||||
);
|
||||
$this->MediaView->expects($this->exactly(2))
|
||||
->method('_isActive')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$this->MediaView->response->expects($this->exactly(1))
|
||||
->method('type')
|
||||
->with('ini')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$this->MediaView->response->expects($this->at(1))
|
||||
->method('header')
|
||||
->with(array(
|
||||
'Date' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
|
||||
'Expires' => '0',
|
||||
'Cache-Control' => 'private, must-revalidate, post-check=0, pre-check=0',
|
||||
'Pragma' => 'no-cache'
|
||||
));
|
||||
|
||||
$this->MediaView->response->expects($this->once())
|
||||
->method('download')
|
||||
->with('no_section.ini');
|
||||
|
||||
$this->MediaView->response->expects($this->at(3))
|
||||
->method('header')
|
||||
->with(array(
|
||||
'Accept-Ranges' => 'bytes'
|
||||
));
|
||||
|
||||
$this->MediaView->response->expects($this->at(4))
|
||||
->method('header')
|
||||
->with('Content-Length', 35);
|
||||
|
||||
$this->MediaView->response->expects($this->once())->method('send');
|
||||
$this->MediaView->expects($this->once())->method('_clearBuffer');
|
||||
$this->MediaView->expects($this->once())->method('_flushBuffer');
|
||||
|
||||
ob_start();
|
||||
$result = $this->MediaView->render();
|
||||
$output = ob_get_clean();
|
||||
$this->assertEqual("some_key = some_value\nbool_key = 1\n", $output);
|
||||
$this->assertTrue($result !== false);
|
||||
}
|
||||
|
||||
/**
|
||||
* testConnectionAborted method
|
||||
*
|
||||
|
@ -127,10 +182,8 @@ class MediaViewTest extends CakeTestCase {
|
|||
->method('_isActive')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$this->MediaView->response->expects($this->once())
|
||||
->method('type')
|
||||
->with('css')
|
||||
->will($this->returnArgument(0));
|
||||
$this->MediaView->response->expects($this->never())
|
||||
->method('type');
|
||||
|
||||
$result = $this->MediaView->render();
|
||||
$this->assertFalse($result);
|
||||
|
|
Loading…
Reference in a new issue