/** * @covers \NewFrontiers\Framework\Output\Parser::parse * @covers \NewFrontiers\Framework\Output\Parser::getReplacement * @covers \NewFrontiers\Framework\Output\Parser::getWertFromEntity * @covers \NewFrontiers\Framework\Output\Parser::getWertFromVars */ public function testParse() { $instance = Parser::getInstance(); $instance->editMode = true; $entity = $this->createMock(BaseEntity::class); $control = new PanelControl(null, "ungewöhnliche ID"); $template = "This is {my} {thisControl.id} on {site.url}. " . "This is a {control_var} {controls}" . "<?php echo 'Merged'; echo 'string'; ?>"; //$ts = "{hallo}"; $result = Parser::parse($entity, $control, ["thisControl" => $entity], $template); //var_dump($result); $this->assertContains("This is", $result); $this->assertContains("This", $result); $this->assertContains("Mergedstring", $result); $result = Parser::parse($entity, $control, [], $template); //var_dump($result); /*$this->assertContains("Und", end($items)["msg"]); print_r(end($items)["msg"]);*/ }
/** * @param $match * @param BaseEntity $entity * @param $useControl * @return BaseEntity|string */ private function getWertFromEntity($match, BaseEntity $entity, $useControl) { if (!$useControl) { return $entity->{$match}; } else { /** @var Control $control */ $control = $entity->felder[$match]->getEditControl(); $control->setReadOnly(!Parser::getInstance()->editMode); $js = ''; foreach ($control->getJavascript() as $akt) { $js .= $akt; } if ($js !== '') { $js = '<script>' . $js . '</script>'; } return $control->toHtml() . $js; } }
/** * Exportiert einen Datensatz. Der Datensatz wird in ein passendes * Array gewandelt (auf Basis des Mappings). Dieses wird dann über * die Array-Funktion exportiert. * * @param BaseEntity $entity */ protected function exportEntityRow(BaseEntity $entity) { $row = []; foreach ($this->mapping as $header => $field) { $value = ''; if ($field !== '') { if (Parser::hasVariable($field)) { // Falls eine Variable enthalten ist -> Parsen $value = Parser::getInstance()->parse($entity, null, [], $field); } else { // Jetzt könnte es ein Feld oder ein fester Wert sein if ($entity->hasField($field)) { $value = $entity->{$field}; } else { $value = $field; } } // Muss ein Callback aufgerufen werden if (isset($this->callbacks[$header])) { $callable = $this->callbacks[$header]; $value = $callable($value); } $value = trim($value); if (strlen($value) > $this->length[$header]) { $value = substr($value, 0, $this->length[$header]); } } $row[$header] = trim($value); } $this->exportArrayRow($row); }