コード例 #1
0
 /**
  * Gets and registers a new reference.
  *
  * @param \TYPO3\CMS\Version\Dependency\ElementEntity $element
  * @param string $field
  * @return \TYPO3\CMS\Version\Dependency\ReferenceEntity
  */
 public function getReference(\TYPO3\CMS\Version\Dependency\ElementEntity $element, $field)
 {
     $referenceName = $element->__toString() . '.' . $field;
     if (!isset($this->references[$referenceName][$field])) {
         $this->references[$referenceName][$field] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Version\\Dependency\\ReferenceEntity', $element, $field);
     }
     return $this->references[$referenceName][$field];
 }
コード例 #2
0
 /**
  * Gets all nested elements (including the parent) of a particular outermost parent element.
  *
  * @throws \RuntimeException
  * @param \TYPO3\CMS\Version\Dependency\ElementEntity $outerMostParent
  * @return array
  */
 public function getNestedElements(\TYPO3\CMS\Version\Dependency\ElementEntity $outerMostParent)
 {
     $outerMostParentName = $outerMostParent->__toString();
     if (!isset($this->outerMostParents[$outerMostParentName])) {
         throw new \RuntimeException('Element "' . $outerMostParentName . '" was not detected as outermost parent.', 1289318609);
     }
     $nestedStructure = array_merge(array($outerMostParentName => $outerMostParent), $outerMostParent->getNestedChildren());
     return $nestedStructure;
 }
コード例 #3
0
 /**
  * Resolves nested child dependencies.
  *
  * @param Dependency\ElementEntity $parent
  * @param int $collection
  * @param string $nextParentIdentifier
  * @param int $collectionLevel
  */
 protected function resolveDataArrayChildDependencies(Dependency\ElementEntity $parent, $collection, $nextParentIdentifier = '', $collectionLevel = 0)
 {
     $parentIdentifier = $parent->__toString();
     $parentIsSet = isset($this->dataArray[$parentIdentifier]);
     if ($parentIsSet) {
         $this->dataArray[$parentIdentifier][GridDataService::GridColumn_Collection] = $collection;
         $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionLevel] = $collectionLevel;
         $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionCurrent] = md5($parentIdentifier);
         $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionChildren] = count($parent->getChildren());
         $nextParentIdentifier = $parentIdentifier;
         $collectionLevel++;
     }
     foreach ($parent->getChildren() as $child) {
         $this->resolveDataArrayChildDependencies($child->getElement(), $collection, $nextParentIdentifier, $collectionLevel);
         $childIdentifier = $child->getElement()->__toString();
         if (!empty($nextParentIdentifier) && isset($this->dataArray[$childIdentifier])) {
             // Remove from dataArray, but collect to process later
             // and add it just next to the accordant parent element
             $this->dataArray[$childIdentifier][GridDataService::GridColumn_CollectionParent] = md5($nextParentIdentifier);
             $this->nestedDataArray[$nextParentIdentifier][] = $this->dataArray[$childIdentifier];
             unset($this->dataArray[$childIdentifier]);
         }
     }
 }