lithium\data\Entity::modified()
Gets the current state for a given field or, if no field is given, gets the array of fields modified on this entity.
Parameters
-
string
Thefield name to check its state.
Returns
mixedReturns true if a field is given and was updated, false otherwise and
null if the field was not set at all. If no field is given returns an arra
where the keys are entity field names, and the values are true for changed
fields.
Source
public function modified($field = null) {
if ($field) {
if (!isset($this->_updated[$field]) && !isset($this->_data[$field])) {
return null;
}
if (!array_key_exists($field, $this->_updated)) {
return false;
}
$value = $this->_updated[$field];
if (is_object($value) && method_exists($value, 'modified')) {
$modified = $value->modified();
return $modified === true || is_array($modified) && in_array(true, $modified, true);
}
$isSet = isset($this->_data[$field]);
return !$isSet || ($this->_data[$field] !== $this->_updated[$field]);
}
$fields = array_fill_keys(array_keys($this->_data), false);
foreach ($this->_updated as $field => $value) {
if (is_object($value) && method_exists($value, 'modified')) {
if (!isset($this->_data[$field])) {
$fields[$field] = true;
continue;
}
$modified = $value->modified();
$fields[$field] = (
$modified === true || is_array($modified) && in_array(true, $modified, true)
);
} else {
$fields[$field] = (
!isset($fields[$field]) || $this->_data[$field] !== $this->_updated[$field]
);
}
}
return $fields;
}