/** * @test * @group library * @dataProvider templateContentProvider */ public function getUnitsFromTemplateContentSuccess($content) { $units = CmsUnitExtractor::getUnitsFromTemplateContent($content); $this->assertInternalType('array', $units); $this->assertSame(6, count($units['units'])); $this->assertArrayHasKey('MUNIT-7c470156-7a6c-4075-90ab-e8d8637ab3b5-MUNIT', $units['units']); $this->assertArrayHasKey('MUNIT-371aeeb6-903b-4d43-876d-78497475d716-MUNIT', $units['units']); $this->assertSame('UVK Basismodul', $units['units']['MUNIT-7c470156-7a6c-4075-90ab-e8d8637ab3b5-MUNIT']['name']); $this->assertSame('UVK Bildgalerie', $units['units']['MUNIT-371aeeb6-903b-4d43-876d-78497475d716-MUNIT']['name']); }
protected static function reparseChildernStructure($websiteId, &$orgPageOptionalUnit, &$newPageUnit, &$templateUnit, &$pageUnits, &$newPageUnits, &$pageTemplateUnits, $reparseType) { // Kindelemente vorhanden? if (isset($templateUnit['children']) && is_array($templateUnit['children']) && count($templateUnit['children']) > 0) { // Kinder zuruecksetzen $newPageUnit['children'] = array(); // Sind die Kindelemente optional? $ghostContainer = isset($templateUnit['ghostContainer']) && $templateUnit['ghostContainer'] ? true : false; // Als erstes die nicht 'optionalen Kindelemente' aufnehmen // Die ist bei Kindelementen der Fall wenn: // wir nicht in einem ghostContainer sind oder // wenn sich Elemente mit dem ModulTyp 'extension' innerhalb eines ghostContainers befinden $ret = self::reparseStructure($websiteId, $newPageUnit['children'], $templateUnit['children'], $pageUnits, $newPageUnits, $pageTemplateUnits, $reparseType, $ghostContainer); if ($ret === false) { // Fehler return false; } // Kindelemente als Ghost aufnehmen? if ($ghostContainer) { // In der Page kommen diese Units in den seperaten ghost Bereich $newPageUnit['ghostChildren'] = array(); self::createGhostChildrenStructure($websiteId, $newPageUnit['ghostChildren'], $templateUnit['children'], $pageTemplateUnits, $reparseType); // evtl. Optionale Elemente ermitteln if (!isset($orgPageOptionalUnit)) { self::findUnitForReparse($pageUnits, $templateUnit['id'], $orgPageOptionalUnit, $reparseType); } // Optionale Kindunits vorhanden? if (isset($orgPageOptionalUnit['children']) && is_array($orgPageOptionalUnit['children']) && count($orgPageOptionalUnit['children']) > 0) { // Duerfen ueberhaupt optionale Units unter dieser Unit vorhanden sein if (isset($templateUnit['children']) && is_array($templateUnit['children']) && count($templateUnit['children']) > 0) { // Alle optionalen Elemente ermitteln $nextGhostUnits = array('units' => array(), 'tunits' => array()); UnitExtractor::getUnitsFromContent($newPageUnit['ghostChildren'], $nextGhostUnits, true, false, true); // Vorhandene optionale Units wieder einfuegen $ret = self::reparseOptionalStructure($websiteId, $newPageUnit['children'], $orgPageOptionalUnit['children'], $pageUnits, $newPageUnits, $nextGhostUnits, $templateUnit['children'], $pageTemplateUnits, $reparseType); if ($ret === false) { // Fehler return false; } } } } } // reparsen der Kindelemente erfolgreich return true; }