/** * * @param string $identifier The object's identifier * @param object $object The object to work on * @param array $properties The properties to collect (as per class schema) * @param boolean $dirty A dirty flag that is passed by reference and set to TRUE if a dirty property was found * @return array */ protected function collectProperties($identifier, $object, array $properties, &$dirty) { $propertyData = array(); foreach ($properties as $propertyName => $propertyMetaData) { $propertyValue = $this->checkPropertyValue($object, $propertyName, $propertyMetaData); // handle all objects now, because even clean ones need to be traversed // as dirty checking is not recursive if ($propertyValue instanceof \TYPO3\FLOW3\Persistence\Aspect\PersistenceMagicInterface) { if ($this->persistenceSession->isDirty($object, $propertyName)) { $dirty = TRUE; $this->flattenValue($identifier, $object, $propertyName, $propertyMetaData, $propertyData); } else { $this->persistObject($propertyValue, $identifier); } } elseif ($this->persistenceSession->isDirty($object, $propertyName)) { $dirty = TRUE; $this->flattenValue($identifier, $object, $propertyName, $propertyMetaData, $propertyData); } } return $propertyData; }