/** * Test the Meta Method * * @param string $name * @param string $content * * @dataProvider metasSampleProvider */ public function testMetaObject($name, $content) { $meta = new Meta($name, $content); $this->assertEquals($name, $meta->getName()); $this->assertEquals($content, $meta->getContent()); $this->assertEquals($name, $meta->attribute('name')); $this->assertEquals($content, $meta->attribute('content')); $this->assertTrue($meta->hasAttribute('name')); $this->assertTrue($meta->hasAttribute('content')); $this->assertTrue($content == '' ? $meta->isEmpty() : !$meta->isEmpty()); }
/** * Compute Meta by reference * * @param Content $content * @param string|Field $fieldDefIdentifier * @param ContentType $contentType * @param bool $needFallback * * @return Meta[] */ protected function innerComputeMetas(Content $content, $fieldDefIdentifier, ContentType $contentType, &$needFallback = false) { if ($fieldDefIdentifier instanceof Field) { $metasFieldValue = $fieldDefIdentifier->value; $fieldDefIdentifier = $fieldDefIdentifier->fieldDefIdentifier; } else { $metasFieldValue = $content->getFieldValue($fieldDefIdentifier); } if ($metasFieldValue instanceof MetasFieldValue) { $metasConfig = $this->configResolver->getParameter('fieldtype_metas', 'novae_zseo'); // as the configuration is the last fallback we need to loop on it. foreach ($metasConfig as $metaName => $metasSettings) { if ($metasFieldValue->nameExists($metaName)) { $meta = $metasFieldValue->metas[$metaName]; } else { $meta = new Meta($metaName); $metasFieldValue->metas[$metaName] = $meta; } /** @var Meta $meta */ if ($meta->isEmpty()) { $meta->setContent($metasConfig[$meta->getName()]['default_pattern']); $fieldDefinition = $contentType->getFieldDefinition($fieldDefIdentifier); $configuration = $fieldDefinition->getFieldSettings()['configuration']; // but if we need something is the configuration we take it if ($configuration[$meta->getName()]) { $meta->setContent($configuration[$meta->getName()]); } } if (!$this->metaNameSchema->resolveMeta($meta, $content, $contentType)) { $needFallback = true; } } return $metasFieldValue->metas; } return []; }