18 use Doctrine\DBAL\Platforms\SQLServerPlatform;
64 if (!empty($record[
'newlyCreated'])) {
68 $imageInfo = GeneralUtility::makeInstance(
FileType\ImageInfo::class, $fileNameAndPath);
70 $additionalMetaInformation = [
71 'width' => $imageInfo->getWidth(),
72 'height' => $imageInfo->getHeight(),
94 throw new InvalidUidException(
'Metadata can only be retrieved for indexed files. UID: "' . $uid .
'"', 1381590731);
97 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->tableName);
99 $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(RootLevelRestriction::class));
101 $record = $queryBuilder
103 ->from($this->tableName)
105 $queryBuilder->expr()->eq(
'file', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)),
106 $queryBuilder->expr()->in(
'sys_language_uid', $queryBuilder->createNamedParameter([0, -1], Connection::PARAM_INT_ARRAY))
111 if (empty($record)) {
115 $passedData = new \ArrayObject($record);
118 return $passedData->getArrayCopy();
131 'file' => (int)$fileUid,
135 'cruser_id' => isset(
$GLOBALS[
'BE_USER']->user[
'uid']) ? (int)
$GLOBALS[
'BE_USER']->user[
'uid'] : 0,
136 'l10n_diffsource' =>
''
138 $emptyRecord = array_merge($emptyRecord, $additionalFields);
140 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->tableName);
147 $record = $emptyRecord;
148 $record[
'uid'] = $connection->lastInsertId($this->tableName);
149 $record[
'newlyCreated'] =
true;
163 public function update($fileUid, array $data)
165 if (empty($this->tableFields)) {
166 $this->tableFields = GeneralUtility::makeInstance(ConnectionPool::class)
167 ->getConnectionForTable($this->tableName)
169 ->listTableColumns($this->tableName);
171 $updateRow = array_intersect_key($data, $this->tableFields);
172 if (array_key_exists(
'uid', $updateRow)) {
173 unset($updateRow[
'uid']);
176 if (!empty($updateRow)) {
177 $updateRow[
'tstamp'] = time();
178 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->tableName);
180 if ($connection->getDatabasePlatform() instanceof SQLServerPlatform) {
182 $tableDetails = $connection->getSchemaManager()->listTableDetails($this->tableName);
183 foreach ($updateRow as $columnName => $columnValue) {
184 $types[$columnName] = $tableDetails->getColumn($columnName)->getType()->getBindingType();
191 'uid' => (
int)$row[
'uid']
207 GeneralUtility::makeInstance(ConnectionPool::class)
208 ->getConnectionForTable($this->tableName)
212 'file' => (
int)$fileUid
235 return GeneralUtility::makeInstance(ObjectManager::class);
285 return GeneralUtility::makeInstance(self::class);