Пример #1
0
 /**
  * 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 [];
 }