getQueryBuilderForTable($tableName); } /** * @return ContentObjectRenderer */ public static function getContentObject(): ContentObjectRenderer { return GeneralUtility::makeInstance(ContentObjectRenderer::class); } /** * Checks if object was changed or not * * @param object $object * @return bool * @codeCoverageIgnore */ public static function isDirtyObject($object): bool { foreach (array_keys($object->_getProperties()) as $propertyName) { try { $property = ObjectAccess::getProperty($object, $propertyName); } catch (PropertyNotAccessibleException $e) { // if property can not be accessed continue; } /** * std::Property (string, int, etc..), * PHP-Objects (DateTime, RecursiveIterator, etc...), * TYPO3-Objects (user, page, etc...) */ if (!$property instanceof ObjectStorage) { if ($object->_isDirty($propertyName)) { return true; } } else { /** * ObjectStorage */ if ($property->_isDirty()) { return true; } } } return false; } /** * Implode subjobjects on a property (example for usergroups: "ug1, ug2, ug3") * * @param ObjectStorage $objectStorage * @param string $property * @param string $glue * @return string */ public static function implodeObjectStorageOnProperty( ObjectStorage $objectStorage, string $property = 'uid', string $glue = ', ' ): string { $values = []; if (!empty($objectStorage)) { foreach ($objectStorage as $object) { try { $values[] = ObjectAccess::getProperty($object, $property); } catch (\Exception $exception) { unset($exception); } } } return implode($glue, $values); } }