/** * Test to add an attribute factory to a factory and retrieve it again. * * @return void */ public function testGetMetaModelNameFromId() { $serviceContainer = $this->mockServiceContainer(); $factory = new Factory(); $factory->setServiceContainer($serviceContainer); $serviceContainer->getEventDispatcher()->addListener(GetMetaModelNameFromIdEvent::NAME, function (GetMetaModelNameFromIdEvent $event) { $event->setMetaModelName('mm_with_id_' . $event->getMetaModelId()); }); $this->assertSame('mm_with_id_10', $factory->translateIdToMetaModelName(10)); $factory->getMetaModel('mm_test'); }
/** * @param \DataContainer $dataContainer * @return array */ public function getAttributeNames($dataContainer) { $options = array(); if ($dataContainer->activeRecord->mm_metamodel) { $metaModel = $this->metaModelsFactory->byId($dataContainer->activeRecord->mm_metamodel); if ($metaModel) { $attributes = $metaModel->getAttributes(); foreach ($attributes as $name => $attribute) { $options[$attribute->get('id')] = $attribute->getName(); } } } return $options; }
/** * @param CreateProviderEvent $event */ public function createProvider(CreateProviderEvent $event) { $model = $event->getProviderModel(); if ($model->type != 'metamodels') { return; } $metaModel = MetaModelsFactory::byId($model->mm_metamodel); // metamodel does not exists. break it here if (!$metaModel) { return; } $provider = MetaModelsProvider::create($metaModel, $model->id)->setParent($model->mm_parent_type, $model->mm_parent_page); $attributeMappings = deserialize($model->mm_attributes, true); foreach ($attributeMappings as $config) { if ($config['id'] && $config['html']) { $provider->addAttributeMapping($config['id'], $config['html'], $config['type'], $config['format']); } } if ($model->mm_filter) { $filter = MetaModelsFilterFactory::byId($model->mm_filter); $params = $this->createFilterParams($filter); if ($filter) { $provider->setFilter($filter, $params); } } if ($model->mm_render_setting) { $renderSetting = Factory::byId($metaModel, $model->mm_render_setting); $provider->setRenderSetting($renderSetting); } if ($model->mm_sort_by) { $provider->setSorting($model->mm_sort_by, $model->mm_sort_direction ?: 'ASC'); } $event->setProvider($provider); }
/** * Get all attribute ids of a metamodel. * * @param \DataContainer $dataContainer The data container driver. * * @return array */ public function getAttributes($dataContainer) { $options = array(); if ($dataContainer->activeRecord) { $layer = LayerModel::findByPk($dataContainer->activeRecord->pid); if (!$layer) { return $options; } $name = $this->metaModelsFactory->translateIdToMetaModelName($layer->metamodel); $metaModel = $this->metaModelsFactory->getMetaModel($name); if ($metaModel) { foreach ($metaModel->getAttributes() as $attribute) { $options[$attribute->get('id')] = $attribute->getName(); } } } return $options; }
public function createCondition(CreateConditionEvent $event) { $model = $event->getConditionModel(); if ($model->type == 'metamodels_attribute') { $condition = new MetaModelsAttributeCondition(); $condition->setAttribute($model->mm_attribute)->setOperator($model->mm_operator)->setValue($model->mm_value); } elseif ($model->type == 'metamodels') { $condition = new MetaModelsCondition(); $metaModel = Factory::byId($model->mm_metamodel); if ($metaModel) { $condition->setMetaModel($metaModel); } } if (isset($condition)) { if ($model->invert) { $condition = new NotCondition($condition); } $event->setCondition($condition); } }
/** * Instantiate the Input Provider * * @param int $mmID The ID of an existing MetaModels * @param int $maskID The ID of an existing InputMask * @param string $uploadPath The UUID value of an DBAFS Folder * @throws \Exception */ public function __construct($mmID, $maskID, $uploadPath) { $this->objMM = \MetaModels\Factory::byId($mmID); $this->setUploadPath($uploadPath); $this->maskID = $maskID; }
/** * {@inheritdoc} * * @deprecated Use an instance of the factory and method createAttribute(). */ public static function createFromArray($arrData) { return self::getDefaultFactory()->createAttribute($arrData, \MetaModels\Factory::byId($arrData['pid'])); }
* Backend Module. */ $GLOBALS['BE_MOD']['leaflet']['leaflet_layer']['tables'][] = 'tl_leaflet_mm_renderer'; /* * Register models. */ $GLOBALS['TL_MODELS']['tl_leaflet_mm_renderer'] = 'Netzmacht\\Contao\\Leaflet\\MetaModels\\Model\\RendererModel'; /* * Add leaflet mapper. */ $GLOBALS['LEAFLET_MAPPERS'][] = 'Netzmacht\\Contao\\Leaflet\\MetaModels\\LayerMapper'; /* * Add metamodels layer. */ $GLOBALS['LEAFLET_LAYERS']['metamodels'] = array('children' => false, 'icon' => 'system/modules/leaflet-metamodels/assets/img/layer.png', 'metamodels' => true, 'boundsMode' => array('extend' => true, 'fit' => true), 'label' => function ($row, $label) { $metaModel = \MetaModels\Factory::byId($row['metamodel']); if (!$metaModel) { return $label; } return $label . sprintf(' <span><a href="%s" class="tl_gray">(%s)</a></span>', \Backend::addToUrl(sprintf('do=metamodel_%s&table=%s', $metaModel->getTableName(), $metaModel->getTableName())), $metaModel->getName()); }); /* * Metamodels layer renderers */ $GLOBALS['LEAFLET_MM_RENDERER']['marker'] = 'Netzmacht\\Contao\\Leaflet\\MetaModels\\Renderer\\MarkerRenderer'; $GLOBALS['LEAFLET_MM_RENDERER']['geojson'] = 'Netzmacht\\Contao\\Leaflet\\MetaModels\\Renderer\\GeoJsonRenderer'; $GLOBALS['LEAFLET_MM_RENDERER']['reference'] = 'Netzmacht\\Contao\\Leaflet\\MetaModels\\Renderer\\ReferenceRenderer'; /* * MetaModel attribute factory. */ $GLOBALS['TL_EVENTS'][\MetaModels\MetaModelsEvents::ATTRIBUTE_FACTORY_CREATE][] = function (\MetaModels\Attribute\Events\CreateAttributeFactoryEvent $event) {
/** * {@inheritdoc} */ public function handleGeoJson(\Model $model, DefinitionMapper $mapper, Filter $filter = null) { $collection = new FeatureCollection(); $metaModel = Factory::byId($model->metamodel); $items = $this->getItems($metaModel, $model, $filter); $renderers = $this->getRenderers($model, $metaModel, $items, $mapper, $filter, true); foreach ($items as $item) { foreach ($renderers as $renderer) { $renderer->loadData($item, $collection, $mapper, $model->alias, $filter, true); } } return $collection; }
/** * Test destruction of the auxiliary data. * * @return void */ public function testDestroyAUX() { // This marks the test skipped upon error as Contao related testing is not available. if (!$this->prepareDb()) { return; } $metamodel = Factory::byTableName('mm_movies'); /** @var Rating $rating */ $rating = $metamodel->getAttribute('rating'); $rating->destroyAUX(); $query1 = \Database::getInstance()->execute('SELECT * FROM tl_metamodel_rating WHERE mid=1 AND aid=1'); $this->assertEquals(0, $query1->numRows); $this->assertEquals(array(), $query1->fetchAllAssoc()); // Ensure the data from the other attribute is still present. $query2 = \Database::getInstance()->execute('SELECT * FROM tl_metamodel_rating WHERE mid=1 AND aid=2'); $this->assertEquals(1, $query2->numRows); $this->assertEquals(array(array('id' => 2, 'mid' => 1, 'aid' => 2, 'iid' => 1, 'votecount' => 1, 'meanvalue' => 1.0)), $query2->fetchAllAssoc()); }