/** * @test * @group library * @dataProvider pageContentProvider */ public function getUnitsFromPageContentSuccess($content) { $units = CmsUnitExtractor::getUnitsFromPageContent($content); $this->assertInternalType('array', $units); $this->assertSame(10, count($units['units'])); $this->assertSame(10, count($units['tunits'])); $this->assertArrayHasKey('MUNIT-1624dee4-9e5e-4701-ac5b-bfad188aeb05-MUNIT', $units['units']); $this->assertArrayHasKey('MUNIT-f5235e6c-208a-4525-a8e7-7c1f64639a01-MUNIT', $units['units']); $this->assertArrayHasKey('MUNIT-4c40334a-86c6-4b79-a2c9-876589c9902d-MUNIT', $units['tunits']); $this->assertArrayHasKey('MUNIT-9bc4a3c3-5bcd-4dbb-89c6-97b20fd93a07-MUNIT', $units['tunits']); $this->assertSame('TT Basismodul', $units['units']['MUNIT-1624dee4-9e5e-4701-ac5b-bfad188aeb05-MUNIT']['name']); $this->assertSame('TT Container', $units['units']['MUNIT-f5235e6c-208a-4525-a8e7-7c1f64639a01-MUNIT']['name']); }
/** * Content einer Page reparsen * * @param string $websiteId * @param string $pageContentAsJson * @param string $pageTemplateContentAsJson * @param string $templateContentAsJson * @param string $reparseType */ public static function reparseContent($websiteId, $pageContentAsJson, $pageTemplateContentAsJson, $templateContentAsJson, $reparseType = self::TYPE_REPARSE) { $pageUnits = UnitExtractor::getUnitsFromPageContent($pageContentAsJson); $pageTemplateUnits = UnitExtractor::getUnitsFromTemplateContent($pageTemplateContentAsJson); $templateUnits = UnitExtractor::getUnitsFromTemplateContent($templateContentAsJson); // Alle Units der Page durchlaufen und Reparsen $newPageUnits = array('units' => array(), 'tunits' => array()); if (is_array($pageUnits['units'])) { foreach ($pageUnits['units'] as $unitId => &$pageUnit) { // Template Unit-ID vorhanden if (isset($pageUnit['templateUnitId']) && isset($pageTemplateUnits['units'][$pageUnit['templateUnitId']]) && isset($templateUnits['units'][$pageUnit['templateUnitId']])) { $newPageUnit = array(); $state = self::reparseUnit($newPageUnit, $pageUnit, $pageTemplateUnits['units'][$pageUnit['templateUnitId']], $templateUnits['units'][$pageUnit['templateUnitId']], $reparseType); if ($state) { // Unit aufnehmen $newPageUnits['units'][$unitId] = $newPageUnit; if (!isset($newPageUnits['tunits'][$pageUnit['templateUnitId']])) { $newPageUnits['tunits'][$pageUnit['templateUnitId']] = array(); } $newPageUnits['tunits'][$pageUnit['templateUnitId']][$unitId] =& $newPageUnits['units'][$unitId]; } } elseif (!isset($pageUnit['templateUnitId']) || empty($pageUnit['templateUnitId'])) { // Fehler -> Nicht Reparsen // Template Unit-IDs muessen in den Page-Units vorhanden sein, damit // die Zuordnung der Page-Units zu den Template-Units hergestellt // werden kann $pageUnitId = isset($pageUnit['id']) && $pageUnit != '' ? $pageUnit['id'] : 'unknown'; $pageUnitName = isset($pageUnit['name']) && $pageUnit != '' ? $pageUnit['name'] : 'unknown'; $data = array('unitId' => $pageUnitId, 'unitName' => $pageUnitName); throw new Exception(801, __METHOD__, __LINE__, $data); } } } // Die Struktur reparsen $templateContent = \Zend_Json::decode($templateContentAsJson); $newPageContent = array(); $state = self::reparseStructure($websiteId, $newPageContent, $templateContent, $pageUnits, $newPageUnits, $pageTemplateUnits, $reparseType); return $newPageContent; }