Пример #1
0
 public function getIndexItems($resource, Metadata $metadata, $properties = null)
 {
     $indexItems = [];
     $accessor = PropertyAccess::createPropertyAccessor();
     //walk over each field of the property that should get indexed
     foreach ($metadata->getProperties() as $propertyNode) {
         //get the right indexType
         $type = $this->collector->getType($propertyNode->getType());
         //get the IndexItems of the right IndexType
         $newIndexItems = $type->index($accessor->getValue($resource, $propertyNode->getProperty()), $propertyNode->getOptions(), $properties);
         if ($newIndexItems) {
             foreach ($newIndexItems as $indexItem) {
                 //set fieldname
                 if ((empty($properties) || in_array('fieldName', $properties)) && $indexItem->getFieldName() == null) {
                     $indexItem->setFieldName($metadata->getHumanizedBundleName() . '_' . strtolower($metadata->getEntityName() . '_' . strtolower($propertyNode->getProperty())));
                 }
                 $indexItems[] = $indexItem;
             }
         }
     }
     return $indexItems;
 }
Пример #2
0
 public function testSetAndGetBundleName()
 {
     $metadata = new Metadata();
     $metadata->setBundleName('BundleName');
     $this->assertEquals('BundleName', $metadata->getBundleName());
 }
Пример #3
0
 public function create($resource)
 {
     $className = null;
     if (is_string($resource)) {
         $className = $resource;
     } else {
         $className = $this->getClassName($resource);
         // ...Entity/Article
     }
     $configuration = $this->getConfiguration($className);
     // array(properties => array(title, teaser, ...))
     if ($configuration === null) {
         return null;
     }
     $metadata = new Metadata();
     $metadata->setBundleName($this->getBundleName($className));
     $metadata->setHumanizedBundleName($this->getHumanizedBundleName($className));
     $metadata->setClassName($className);
     $metadata->setEntityName($this->getEntityName($resource));
     if ($configuration['properties']) {
         $properties = [];
         foreach ($configuration['properties'] as $property => $config) {
             if (is_array($config[0])) {
                 foreach ($config[0] as $type => $options) {
                     $propertyNode = new PropertyNode();
                     $propertyNode->setType($type);
                     // type: Plain
                     $propertyNode->setOptions($options);
                     // weight, type
                     $propertyNode->setProperty($property);
                     //property: title
                     $properties[] = $propertyNode;
                 }
             } else {
                 $propertyNode = new PropertyNode();
                 $propertyNode->setType($config[0]);
                 $propertyNode->setOptions(null);
                 $propertyNode->setProperty($property);
                 $properties[] = $propertyNode;
             }
         }
         $metadata->setProperties($properties);
     }
     return $metadata;
 }