/** * @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 the render setting. * * @param MetaModel $metaModel The MetaModel. * * @return RenderSetting|null */ protected function getRenderSettings(MetaModel $metaModel) { if ($this->model->renderSettings) { $settings = RenderSettingFactory::byId($metaModel, $this->model->renderSettings); return $settings; } return null; }