/**
  * Does not render anything, just tweaks configuration.
  *
  * @return string
  * @api
  */
 public function render()
 {
     $name = $this->arguments['property'];
     //$this->getName();
     $allowedPropertyNames = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode(',', $this->arguments['allowProperties']);
     foreach ($allowedPropertyNames as $allowedPropertyName) {
         for ($i = 0; $i <= $this->arguments['count']; $i++) {
             $this->registerFieldNameForFormTokenGeneration($name . '[' . $allowedPropertyName . ']');
         }
     }
     return '';
 }
示例#2
0
 /**
  * @param \GeorgRinger\News\Domain\Model\News $news
  * @param array $importItem
  * @param array $importItemOverwrite
  * @return \GeorgRinger\News\Domain\Model\News
  */
 protected function hydrateNewsRecord(\GeorgRinger\News\Domain\Model\News $news, array $importItem, array $importItemOverwrite)
 {
     if (!empty($importItemOverwrite)) {
         $importItem = array_merge($importItem, $importItemOverwrite);
     }
     $news->setPid($importItem['pid']);
     $news->setHidden($importItem['hidden']);
     $news->setStarttime($importItem['starttime']);
     $news->setEndtime($importItem['endtime']);
     $news->setFeGroup($importItem['fe_group']);
     $news->setTstamp($importItem['tstamp']);
     $news->setCrdate($importItem['crdate']);
     $news->setSysLanguageUid($importItem['sys_language_uid']);
     $news->setSorting((int) $importItem['sorting']);
     $news->setTitle($importItem['title']);
     $news->setTeaser($importItem['teaser']);
     $news->setBodytext($importItem['bodytext']);
     $news->setType($importItem['type']);
     $news->setKeywords($importItem['keywords']);
     $news->setDatetime(new \DateTime(date('Y-m-d H:i:sP', $importItem['datetime'])));
     $news->setArchive(new \DateTime(date('Y-m-d H:i:sP', $importItem['archive'])));
     $contentElementUidArray = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode(',', $importItem['content_elements'], TRUE);
     foreach ($contentElementUidArray as $contentElementUid) {
         if (is_object($contentElement = $this->ttContentRepository->findByUid($contentElementUid))) {
             $news->addContentElement($contentElement);
         }
     }
     $news->setInternalurl($importItem['internalurl']);
     $news->setExternalurl($importItem['externalurl']);
     $news->setType($importItem['type']);
     $news->setKeywords($importItem['keywords']);
     $news->setAuthor($importItem['author']);
     $news->setAuthorEmail($importItem['author_email']);
     $news->setImportid($importItem['import_id']);
     $news->setImportSource($importItem['import_source']);
     if (is_array($importItem['categories'])) {
         foreach ($importItem['categories'] as $categoryUid) {
             if ($this->settings['findCategoriesByImportSource']) {
                 $category = $this->categoryRepository->findOneByImportSourceAndImportId($this->settings['findCategoriesByImportSource'], $categoryUid);
             } else {
                 $category = $this->categoryRepository->findByUid($categoryUid);
             }
             if ($category) {
                 $news->addCategory($category);
             } else {
                 $this->logger->warning(sprintf('Category with ID "%s" was not found', $categoryUid));
             }
         }
     }
     /** @var $basicFileFunctions \TYPO3\CMS\Core\Utility\File\BasicFileUtility */
     $basicFileFunctions = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Utility\\File\\BasicFileUtility');
     // media relation
     if (is_array($importItem['media'])) {
         foreach ($importItem['media'] as $mediaItem) {
             // multi media
             if ((int) $mediaItem['type'] === Media::MEDIA_TYPE_MULTIMEDIA) {
                 if (($media = $this->getMultiMediaIfAlreadyExists($news, $mediaItem['multimedia'])) === FALSE) {
                     /** @var Media $media */
                     $media = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\Media');
                     $media->setMultimedia($mediaItem['multimedia']);
                     $news->addMedia($media);
                 }
                 if (isset($mediaItem['caption'])) {
                     $media->setDescription($mediaItem['caption']);
                 }
                 if (isset($mediaItem['copyright'])) {
                     $media->setCopyright($mediaItem['copyright']);
                 }
                 if (isset($mediaItem['showinpreview'])) {
                     $media->setShowinpreview($mediaItem['showinpreview']);
                 }
                 $media->setType($mediaItem['type']);
                 $media->setPid($importItem['pid']);
                 // Images FAL enabled
             } elseif ($this->emSettings->getUseFal() > 0) {
                 // get fileobject by given identifier (file UID, combined identifier or path/filename)
                 try {
                     $file = $this->getResourceFactory()->retrieveFileOrFolderObject($mediaItem['image']);
                 } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $exception) {
                     $file = FALSE;
                 }
                 // no file found skip processing of this item
                 if ($file === FALSE) {
                     continue;
                 }
                 // file not inside a storage then search for same file based on hash (to prevent duplicates)
                 if ($file->getStorage()->getUid() === 0) {
                     $existingFile = $this->findFileByHash($file->getSha1());
                     if ($existingFile !== NULL) {
                         $file = $existingFile;
                     }
                 }
                 /** @var $media FileReference */
                 if (!($media = $this->getIfFalRelationIfAlreadyExists($news->getFalMedia(), $file))) {
                     // file not inside a storage copy the one form storage 0 to the import folder
                     if ($file->getStorage()->getUid() === 0) {
                         $file = $this->getResourceStorage()->copyFile($file, $this->getImportFolder());
                     }
                     $media = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\FileReference');
                     $media->setFileUid($file->getUid());
                     $news->addFalMedia($media);
                 }
                 if ($media) {
                     $media->setTitle($mediaItem['title']);
                     $media->setAlternative($mediaItem['alt']);
                     $media->setDescription($mediaItem['caption']);
                     $media->setShowinpreview($mediaItem['showinpreview']);
                     $media->setPid($importItem['pid']);
                 }
             } else {
                 if (!($media = $this->getMediaIfAlreadyExists($news, $mediaItem['image']))) {
                     $uniqueName = $basicFileFunctions->getUniqueName($mediaItem['image'], PATH_site . self::UPLOAD_PATH);
                     copy(PATH_site . $mediaItem['image'], $uniqueName);
                     $media = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\Media');
                     $news->addMedia($media);
                     $media->setImage(basename($uniqueName));
                 }
                 $media->setTitle($mediaItem['title']);
                 $media->setAlt($mediaItem['alt']);
                 $media->setCaption($mediaItem['caption']);
                 $media->setType($mediaItem['type']);
                 $media->setShowinpreview($mediaItem['showinpreview']);
                 $media->setPid($importItem['pid']);
             }
         }
     }
     // related files
     if (is_array($importItem['related_files'])) {
         // FAL enabled
         if ($this->emSettings->getUseFal() > 0) {
             foreach ($importItem['related_files'] as $fileItem) {
                 // get fileObject by given identifier (file UID, combined identifier or path/filename)
                 try {
                     $file = $this->getResourceFactory()->retrieveFileOrFolderObject($fileItem['file']);
                 } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $exception) {
                     $file = FALSE;
                 }
                 // no file found skip processing of this item
                 if ($file === FALSE) {
                     continue;
                 }
                 // file not inside a storage then search for same file based on hash (to prevent duplicates)
                 if ($file->getStorage()->getUid() === 0) {
                     $existingFile = $this->findFileByHash($file->getSha1());
                     if ($existingFile !== NULL) {
                         $file = $existingFile;
                     }
                 }
                 /** @var $relatedFile FileReference */
                 if (!($relatedFile = $this->getIfFalRelationIfAlreadyExists($news->getFalRelatedFiles(), $file))) {
                     // file not inside a storage copy the one form storage 0 to the import folder
                     if ($file->getStorage()->getUid() === 0) {
                         $file = $this->getResourceStorage()->copyFile($file, $this->getImportFolder());
                     }
                     $relatedFile = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\FileReference');
                     $relatedFile->setFileUid($file->getUid());
                     $news->addFalRelatedFile($relatedFile);
                 }
                 if ($relatedFile) {
                     $relatedFile->setTitle($fileItem['title']);
                     $relatedFile->setDescription($fileItem['description']);
                     $relatedFile->setPid($importItem['pid']);
                 }
             }
         } else {
             foreach ($importItem['related_files'] as $file) {
                 if (!($relatedFile = $this->getRelatedFileIfAlreadyExists($news, $file['file']))) {
                     $uniqueName = $basicFileFunctions->getUniqueName($file['file'], PATH_site . self::UPLOAD_PATH);
                     copy(PATH_site . $file['file'], $uniqueName);
                     $relatedFile = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\File');
                     $news->addRelatedFile($relatedFile);
                     $relatedFile->setFile(basename($uniqueName));
                 }
                 $relatedFile->setTitle($file['title']);
                 $relatedFile->setDescription($file['description']);
                 $relatedFile->setPid($importItem['pid']);
             }
         }
     }
     if (is_array($importItem['related_links'])) {
         foreach ($importItem['related_links'] as $link) {
             /** @var $relatedLink Link */
             if (($relatedLink = $this->getRelatedLinkIfAlreadyExists($news, $link['uri'])) === FALSE) {
                 $relatedLink = $this->objectManager->get('GeorgRinger\\News\\Domain\\Model\\Link');
                 $relatedLink->setUri($link['uri']);
                 $news->addRelatedLink($relatedLink);
             }
             $relatedLink->setTitle($link['title']);
             $relatedLink->setDescription($link['description']);
             $relatedLink->setPid($importItem['pid']);
         }
     }
     $arguments = array('importItem' => $importItem, 'news' => $news);
     $this->emitSignal('postHydrate', $arguments);
     return $news;
 }
 /**
  * @param string $value
  * @return array
  */
 protected function determineValue($value)
 {
     $retArr = [];
     $parts = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode("|", $value);
     foreach ($parts as $num => $part) {
         if (preg_match('/^([0-9]|[0-1][0-9]|2[0-3]):([0-5][0-9])$/', $part)) {
             $retArr[$num] = array('type' => "singletime", 'value' => $part);
         } else {
             if (preg_match("/^([0-9]|[0-1][0-9]|2[0-3]):([0-5][0-9])-([0-9]|[0-1][0-9]|2[0-3]):([0-5][0-9])\$/", $part)) {
                 $timeParts = explode("-", $part);
                 $retArr[$num] = array('type' => "doubletime", 'value1' => $timeParts[0], 'value2' => $timeParts[1]);
             } else {
                 if ($part) {
                     $retArr[$num] = array('type' => "string", 'value' => $part);
                 }
             }
         }
     }
     return $retArr;
 }
示例#4
0
 /**
  * Find all Persons by search string
  *
  * @param array $groupList
  * @param \string $sterm
  * @param \string $fieldList
  * @param boolean $andSearch
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\QueryResult
  */
 public function findByGroupsAndSword($groupList, $sterm, $fieldList, $andSearch = FALSE)
 {
     $query = $this->createQuery();
     $fieldList = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode(',', $fieldList, true);
     $groupList = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(",", $groupList);
     if (sizeof($fieldList) <= 0) {
         return false;
     }
     foreach ($groupList as $group) {
         if ($group > 0) {
             $groupConstraints[] = $query->logicalAnd($query->contains('groups', $group), $query->equals('groups.hidden', 0), $query->equals('groups.deleted', 0));
         }
     }
     foreach ($fieldList as $field) {
         $constraints[] = $query->like($field, '%' . $sterm . '%');
     }
     if (sizeof($groupConstraints) > 0) {
         $query->matching($query->logicalAnd($query->logicalOr($constraints), $andSearch ? $query->logicalAnd($groupConstraints) : $query->logicalOr($groupConstraints)), $query->equals('pid', $this->storagePid));
     } else {
         $query->matching($query->logicalOr($constraints), $query->equals('pid', $this->storagePid));
     }
     return $query->execute();
 }