mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Creating accesor methods for virtual fields and replacing direct access from DboSource with new methods
This commit is contained in:
parent
e7ee5e9eda
commit
4b9e03c9f7
2 changed files with 43 additions and 13 deletions
|
@ -408,7 +408,7 @@ class DboSource extends DataSource {
|
||||||
retrun;
|
retrun;
|
||||||
}
|
}
|
||||||
$model = ClassRegistry::getObject($alias);
|
$model = ClassRegistry::getObject($alias);
|
||||||
if (isset($model->virtualFields[$virtual])) {
|
if ($model->isVirtualField($virtual)) {
|
||||||
$result[$alias][$virtual] = $value;
|
$result[$alias][$virtual] = $value;
|
||||||
unset($result[0][$field]);
|
unset($result[0][$field]);
|
||||||
}
|
}
|
||||||
|
@ -1667,8 +1667,8 @@ class DboSource extends DataSource {
|
||||||
if (!isset($params[1])) {
|
if (!isset($params[1])) {
|
||||||
$params[1] = 'count';
|
$params[1] = 'count';
|
||||||
}
|
}
|
||||||
if (!empty($model->virtualFields[$params[0]])) {
|
if (is_object($model) && $model->isVirtualField($params[0])){
|
||||||
$arg = $model->virtualFields[$params[0]];
|
$arg = $model->getVirtualField($params[0]);
|
||||||
} else {
|
} else {
|
||||||
$arg = $this->name($params[0]);
|
$arg = $this->name($params[0]);
|
||||||
}
|
}
|
||||||
|
@ -1678,8 +1678,8 @@ class DboSource extends DataSource {
|
||||||
if (!isset($params[1])) {
|
if (!isset($params[1])) {
|
||||||
$params[1] = $params[0];
|
$params[1] = $params[0];
|
||||||
}
|
}
|
||||||
if (!empty($model->virtualFields[$params[0]])) {
|
if (is_object($model) && $model->isVirtualField($params[0])) {
|
||||||
$arg = $model->virtualFields[$params[0]];
|
$arg = $model->getVirtualField($params[0]);
|
||||||
} else {
|
} else {
|
||||||
$arg = $this->name($params[0]);
|
$arg = $this->name($params[0]);
|
||||||
}
|
}
|
||||||
|
@ -1816,7 +1816,7 @@ class DboSource extends DataSource {
|
||||||
$virtual = array();
|
$virtual = array();
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
$virtualField = $this->name("{$alias}__{$field}");
|
$virtualField = $this->name("{$alias}__{$field}");
|
||||||
$expression = $model->virtualFields[$field];
|
$expression = $model->getVirtualField($field);
|
||||||
$virtual[] = $expression . " {$this->alias} {$virtualField}";
|
$virtual[] = $expression . " {$this->alias} {$virtualField}";
|
||||||
}
|
}
|
||||||
return $virtual;
|
return $virtual;
|
||||||
|
@ -1865,8 +1865,8 @@ class DboSource extends DataSource {
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
$virtual = array();
|
$virtual = array();
|
||||||
if (!empty($model->virtualFields)) {
|
if ($model->getVirtualField()) {
|
||||||
$keys = array_keys($model->virtualFields);
|
$keys = array_keys($model->getVirtualField());
|
||||||
$virtual = ($allFields) ? $keys : array_intersect($keys,$fields);
|
$virtual = ($allFields) ? $keys : array_intersect($keys,$fields);
|
||||||
}
|
}
|
||||||
$count = count($fields);
|
$count = count($fields);
|
||||||
|
@ -2114,8 +2114,8 @@ class DboSource extends DataSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
$virtual = false;
|
$virtual = false;
|
||||||
if (!empty($model->virtualFields[$key])) {
|
if (is_object($model) && $model->isVirtualField($key)) {
|
||||||
$key = $model->virtualFields[$key];
|
$key = $model->getVirtualField($key);
|
||||||
$virtual = true;
|
$virtual = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2287,8 +2287,8 @@ class DboSource extends DataSource {
|
||||||
|
|
||||||
$key = trim($key);
|
$key = trim($key);
|
||||||
if (!preg_match('/\s/', $key) && !strpos($key,'.')) {
|
if (!preg_match('/\s/', $key) && !strpos($key,'.')) {
|
||||||
if (!empty($model->virtualFields[$key])) {
|
if (is_object($model) && $model->isVirtualField($key)) {
|
||||||
$key = $model->virtualFields[$key];
|
$key = $model->getVirtualField($key);
|
||||||
} else {
|
} else {
|
||||||
$key = $this->name($key);
|
$key = $this->name($key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1026,7 +1026,7 @@ class Model extends Overloadable {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($checkVirtual && !empty($this->virtualFields)) {
|
if ($checkVirtual && !empty($this->virtualFields)) {
|
||||||
if (array_key_exists($name,$this->virtualFields)) {
|
if ($this->isVirtualField($name)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1041,6 +1041,36 @@ class Model extends Overloadable {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the supplied field is a model Virtual Field
|
||||||
|
*
|
||||||
|
* @param mixed $name Name of field to look for
|
||||||
|
* @return boolean indicating whether the field exists as a model virtual field.
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
function isVirtualField($field) {
|
||||||
|
return !empty($this->virtualFields) && array_key_exists($field,$this->virtualFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the expression for a model virtual field
|
||||||
|
*
|
||||||
|
* @param mixed $name Name of field to look for
|
||||||
|
* @return mixed If $field is string expression bound to virtual field $field
|
||||||
|
* If $field is null, returns an array of all model virtual fields
|
||||||
|
* or false if none $field exist.
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
function getVirtualField($field = null) {
|
||||||
|
if ($field == null) {
|
||||||
|
return empty($this->virtualFields) ? false : $this->virtualFields;
|
||||||
|
}
|
||||||
|
if ($this->isVirtualField($field)) {
|
||||||
|
return $this->virtualFields[$field];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the model for writing a new record, loading the default values
|
* Initializes the model for writing a new record, loading the default values
|
||||||
* for those fields that are not defined in $data, and clearing previous validation errors.
|
* for those fields that are not defined in $data, and clearing previous validation errors.
|
||||||
|
|
Loading…
Reference in a new issue