| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Contains materio_sapi.module.
 
-  */
 
- use Drupal\Core\Routing\RouteMatchInterface;
 
- use Solarium\QueryType\Select\Query\Query;
 
- use Drupal\search_api\Query\QueryInterface;
 
- use Drupal\Core\Template\Attribute;
 
- /**
 
-  * Implements hook_help().
 
-  */
 
- function materio_sapi_help($route_name, RouteMatchInterface $route_match) {
 
-   switch ($route_name) {
 
-     // Main module help for the materio_sapi module.
 
-     case 'help.page.materio_sapi':
 
-       $output = '';
 
-       $output .= '<h3>' . t('About') . '</h3>';
 
-       $output .= '<p>' . t('Search Api Materio module') . '</p>';
 
-       return $output;
 
-     default:
 
-   }
 
- }
 
- /**
 
-  * Implements hook_search_api_solr_query_alter();
 
-  */
 
- function materio_sapi_search_api_solr_query_alter(Query $solarium_query,  QueryInterface $query) {
 
-   if ($termid = (int)$query->getOption('termid')) {
 
-     // get solarium fileds name
 
-     $index = $query->getIndex();
 
-     $solrFields = $index->getServerInstance()
 
-       ->getBackend()
 
-       ->getSolrFieldNames($index);
 
-     // tag_tid"itm_tag_tid"
 
-     // thesaurus_tid"itm_thesaurus_tid"
 
-     $tag_fname = $solrFields['tag_tid'];
 
-     $thes_fname = $solrFields['thesaurus_tid'];
 
-     // $solarium_query->addParam('bf', "recip(abs(ms(NOW,{$solrField})),3.16e-11,10,0.1)");
 
-     // $bfparam = "if(or(gt(termfreq({$tag_fname},{$termid}),0),gt(termfreq({$thes_fname},{$termid}),0)),^21,0)";
 
-     $bfparam = "if(or(exists(query({$tag_fname}:{$termid})),exists(query({$thes_fname}:{$termid}))),^21,0)";
 
-     // boost=if(or(exists(query(itm_tag_tid:396)),exists(query(itm_thesaurus_tid:396))),^21,0 )
 
-     $solarium_query->addParam('boost', $bfparam);
 
-     // $solarium_query->addParam('debugQuery', 'on');
 
-   }
 
- }
 
- /**
 
-  * Prepares variables for fieldset element templates.
 
-  *
 
-  * Default template: fieldset.html.twig.
 
-  *
 
-  * @param array $variables
 
-  *   An associative array containing:
 
-  *   - element: An associative array containing the properties of the element.
 
-  *     Properties used: #attributes, #children, #description, #id, #title,
 
-  *     #value.
 
-  */
 
- function materio_sapi_preprocess_fieldset(&$variables) {
 
-   if (isset($variables['element']['#legend_attributes'])) {
 
-     $variables['legend']['attributes'] = new Attribute($variables['element']['#legend_attributes']);
 
-   }
 
- }
 
- // ? https://happyculture.coop/blog/drupal-8-declarer-un-champ-extrafield-calcule-computed-field
 
- // ? https://fivejars.com/blog/entity-basefielddefinitions-fields-examples-drupal-8
 
- /**
 
-  * Implements hook_entity_bundle_field_info().
 
-  */
 
- function materio_sapi_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
 
-   $fields = [];
 
-   if ($entity_type->id() == 'node') {
 
-     if ($bundle == 'materiau') {
 
-       for ($i=0; $i < 5 ; $i++) { 
 
-         $fields["thesaurus_$i"] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference')
 
-           ->setLabel(t("Thesaurus $i"))
 
-           ->setComputed(TRUE)
 
-           ->setSetting('target_type', 'taxonomy_term')
 
-           ->setSetting('handler_settings',['target_bundles'=>['thesaurus'=>'thesaurus']] )
 
-           ->setClass('\Drupal\materio_sapi\ThesaurusRefComputed')
 
-           ->setDisplayConfigurable('view', FALSE);
 
-       }
 
-       $fields["field_country_name_computed"] = \Drupal\Core\Field\BaseFieldDefinition::create('string')
 
-         ->setLabel(t("Country Name"))
 
-         ->setComputed(TRUE)
 
-         ->setTranslatable(TRUE)
 
-         ->setClass('\Drupal\materio_sapi\CountryNameNodeComputed')
 
-         ->setDisplayConfigurable('view', FALSE);
 
-       }
 
-   }
 
-   // if ($entity_type->id() == 'taxonomy_term') {
 
-   //   if ($bundle == 'company') {
 
-   //     $fields["field_country_name_computed"] =  \Drupal\Core\Field\BaseFieldDefinition::create('string')
 
-   //       ->setName('field_country_name_computed')
 
-   //       ->setLabel(t("Country Name"))
 
-   //       ->setComputed(TRUE)
 
-   //       ->setTranslatable(TRUE)
 
-   //       ->setClass('\Drupal\materio_sapi\CountryNameComputed')
 
-   //       ->setDisplayConfigurable('view', FALSE);
 
-   //   }
 
-   // }
 
-   return $fields;
 
- }
 
- // ? https://www.webomelette.com/creating-pseudo-fields-drupal-8
 
- // /**
 
- //  * Implements hook_entity_extra_field_info().
 
- //  */
 
- // function materio_sapi_entity_extra_field_info() {
 
- //   $extra = array();
 
- //   foreach (NodeType::loadMultiple() as $bundle) {
 
- //     $extra['node'][$bundle->Id()]['display']['my_own_pseudo_field'] = array(
 
- //       'label' => t('My own field'),
 
- //       'description' => t('This is my own pseudo-field'),
 
- //       'weight' => 100,
 
- //       'visible' => false,
 
- //     );
 
- //   }
 
- //   return $extra;
 
- // }
 
 
  |