| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- <?php
 
- use Drupal\Core\Entity\EntityTypeInterface;
 
- use Drupal\Core\Field\BaseFieldDefinition;
 
- use Drupal\Core\Field\FieldStorageDefinitionInterface;
 
- use Drupal\mymodule\Plugin\Field\FieldType\MyFieldComputed;
 
- // https://www.drupal.org/project/drupal/issues/2916266#comment-12301574
 
- // $key_value_factory = \Drupal::service('keyvalue');
 
- // $field_map_kv_store = $key_value_factory->get('entity.definitions.bundle_field_map');
 
- // $node_map = $field_map_kv_store->get('node');
 
- // unset($node_map['field_workflow']['bundles']['breve']);
 
- // unset($node_map['field_visuel']['bundles']['breve']);
 
- // unset($node_map['field_video']['bundles']['breve']);
 
- // unset($node_map['field_thesaurus']['bundles']['breve']);
 
- // unset($node_map['field_tags']['bundles']['breve']);
 
- // unset($node_map['field_source']['bundles']['breve']);
 
- // unset($node_map['field_showroom']['bundles']['breve']);
 
- // unset($node_map['field_migration']['bundles']['breve']);
 
- // unset($node_map['field_linked_materials']['bundles']['breve']);
 
- // unset($node_map['field_memo']['bundles']['breve']);
 
- // $field_map_kv_store->set('node', $node_map);
 
- /**
 
-  * Implement hook_entity_bundle_field_info().
 
-  *
 
-  * @param EntityTypeInterface $entity_type
 
-  * @param $bundle
 
-  * @param array $base_field_definitions
 
-  * @return array
 
-  */
 
- function materio_home_entity_bundle_field_info(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
 
- // function materio_home_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) {
 
-   // $fields = array();
 
-   // if ($entity_type->id() == 'node' && $bundle === 'frontpage') {
 
-   // \Drupal::logger('materio_home')->notice('bundle: '.$bundle);
 
-   if ($entity_type->id() == 'node' && $bundle == 'frontpage') {
 
-     $fields['computed_materials_reference'] = BaseFieldDefinition::create('entity_reference')
 
-       ->setName('computed_materials_reference')
 
-       ->setLabel(t('Computed Materials References'))
 
-       ->setDescription(t('Computed Materials References.'))
 
-       // // The Entity Type this field belongs to.
 
-       ->setTargetEntityTypeId($entity_type->id())
 
-       // // The Entity Type bundle this field belongs to.
 
-       ->setTargetBundle($bundle)
 
-       ->setSetting('target_type', 'node')
 
-       ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
 
-       ->setComputed(TRUE)
 
-       ->setRevisionable(FALSE)
 
-       ->setTranslatable(FALSE)
 
-       ->setDisplayConfigurable('view', TRUE)
 
-       ->setDisplayOptions('view', [
 
-           'label' => 'hidden',
 
-           'weight' => -5,
 
-         ])
 
-       ->setClass(\Drupal\materio_home\Plugin\Field\FieldType\ComputedMaterialsReferences::class);
 
-     $fields['computed_showrooms_reference'] = BaseFieldDefinition::create('entity_reference')
 
-       ->setName('computed_showrooms_reference')
 
-       ->setLabel(t('Computed Showrooms References'))
 
-       ->setDescription(t('Computed Showrooms References.'))
 
-       // // The Entity Type this field belongs to.
 
-       ->setTargetEntityTypeId($entity_type->id())
 
-       // // The Entity Type bundle this field belongs to.
 
-       ->setTargetBundle($bundle)
 
-       ->setSetting('target_type', 'taxonomy_term')
 
-       ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
 
-       ->setComputed(TRUE)
 
-       ->setRevisionable(FALSE)
 
-       ->setTranslatable(FALSE)
 
-       ->setDisplayConfigurable('view', TRUE)
 
-       ->setDisplayOptions('view', [
 
-           'label' => 'hidden',
 
-           'weight' => -5,
 
-         ])
 
-       ->setClass(\Drupal\materio_home\Plugin\Field\FieldType\ComputedShowroomsReferences::class);
 
-     $fields['computed_articles_reference'] = BaseFieldDefinition::create('entity_reference')
 
-       ->setName('computed_articles_reference')
 
-       ->setLabel(t('Computed Articles References'))
 
-       ->setDescription(t('Computed Articles References.'))
 
-       // // The Entity Type this field belongs to.
 
-       ->setTargetEntityTypeId($entity_type->id())
 
-       // // The Entity Type bundle this field belongs to.
 
-       ->setTargetBundle($bundle)
 
-       ->setSetting('target_type', 'node')
 
-       ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
 
-       ->setComputed(TRUE)
 
-       ->setRevisionable(FALSE)
 
-       ->setTranslatable(FALSE)
 
-       ->setDisplayConfigurable('view', TRUE)
 
-       ->setDisplayOptions('view', [
 
-           'label' => 'hidden',
 
-           'weight' => -5,
 
-         ])
 
-       ->setClass(\Drupal\materio_home\Plugin\Field\FieldType\ComputedArticlesReferences::class);
 
-       return $fields;
 
-   }
 
- }
 
- /**
 
-  * Implement hook_entity_base_field_info_alter().
 
-  *
 
-  * @param $fields
 
-  * @param EntityTypeInterface $entity_type
 
-  */
 
- function materio_home_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) {
 
-   if ($entity_type->id() == 'node') {
 
-     if (isset($fields['title'])) {
 
-       $fields['title']->setDisplayConfigurable('view', TRUE);
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implement hook_cron().
 
-  *
 
-  */
 
- function materio_home_cron(){
 
-   $logger = \Drupal::logger('materio_home');
 
-   // recompile every 5 minutes
 
-   // $request_time = \Drupal::time()->getRequestTime();
 
-   // if ($request_time - \Drupal::state()->get('materio_home.last_recompute') >= 300) {
 
-     // Short-running operation example, not using a queue
 
-     $query = \Drupal::entityQuery('node')
 
-       ->condition('status', 1)
 
-       ->condition('type', 'frontpage');
 
-     $nids = $query->execute();
 
-     $nodes = entity_load_multiple('node', $nids);
 
-     foreach ($nodes as $nid => $node) {
 
-       $logger->notice('cron | regenerating computed fields for '.$nid);
 
-       $node->save();
 
-     }
 
-     // \Drupal::state()->set('materio_home.last_recompute', $request_time);
 
-   // }
 
- }
 
- /**
 
-  * Implements hook_theme().
 
-  */
 
- // function materio_home_theme($existing, $type, $theme, $path) {
 
- //   // @see https://www.drupal.org/docs/8/theming/twig/create-custom-twig-templates-from-custom-module
 
- //
 
- //   return array(
 
- //     'materio_home' => array(
 
- //       // 'render element' => '',
 
- //       'file' => 'includes/materio_home.inc',
 
- //       'variables' => array(
 
- //         'frontpage_node' => NULL,
 
- //       ),
 
- //     ),
 
- //   );
 
- // }
 
- // /**
 
- //  * implements hook_entity_extra_field_info
 
- //  *
 
- //  */
 
- // function materio_home_entity_extra_field_info() {
 
- //   $extra = [];
 
- //   // $extra['node']['frontpage']['form']['computed_materials_reference'] = [
 
- //   //   'label' => t('Computed Materials References'),
 
- //   //   'description' => t('Computed Materials References'),
 
- //   //   'weight' => 10,
 
- //   // ];
 
- //   // $extra['node']['frontpage']['display']['computed_materials_reference'] = [
 
- //   //   'label' => t('Computed Materials References'),
 
- //   //   'description' => t('Computed Materials References'),
 
- //   //   'weight' => 10,
 
- //   // ];
 
- //   return $extra;
 
- // }
 
- //
 
- // /**
 
- //  * Implements hook_install().
 
- //  */
 
- // function materio_home_install() {
 
- //   $entity_type = \Drupal::service('entity_type.manager')->getDefinition('node');
 
- //   \Drupal::service('entity.definition_update_manager')->updateEntityType($entity_type);
 
- // }
 
- //
 
- // /**
 
- //  * Implements hook_uninstall().
 
- //  */
 
- // function materio_home_uninstall() {
 
- //   $entity_type = \Drupal::service('entity_type.manager')->getDefinition('node');
 
- //   \Drupal::service('entity.definition_update_manager')->updateEntityType($entity_type);
 
- // }
 
 
  |