/**
  * @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;
 }