|
@@ -99,6 +99,11 @@ function materio_search_api_access_search(){
|
|
|
return user_access('use materio search api for breves') || user_access('use materio search api');
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/**
|
|
|
+* - - - - - - - - - - - - SOLR - - - - - - - - - - - -
|
|
|
+*/
|
|
|
+
|
|
|
/**
|
|
|
* Implements hook_search_api_data_type_info().
|
|
|
*
|
|
@@ -107,18 +112,20 @@ function materio_search_api_access_search(){
|
|
|
function materio_search_api_search_api_data_type_info() {
|
|
|
return array(
|
|
|
'edge_n2_kw_text' => array(
|
|
|
- 'name' => t('Fulltext (w/ partial matching)'),
|
|
|
+ 'name' => t('Fulltext (partial matching)'),
|
|
|
'fallback' => 'text',
|
|
|
'prefix' => 'tem',
|
|
|
'always multiValued' => TRUE,
|
|
|
),
|
|
|
+ 'edge_n2_kw_mapped_text' => array(
|
|
|
+ 'name' => t('Fulltext without accents (partial matching)'),
|
|
|
+ 'fallback' => 'text',
|
|
|
+ 'prefix' => 'temmap',
|
|
|
+ 'always multiValued' => TRUE,
|
|
|
+ ),
|
|
|
);
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
-* - - - - - - - - - - - - SOLR - - - - - - - - - - - -
|
|
|
-*/
|
|
|
-
|
|
|
/**
|
|
|
* Implements hook_search_api_solr_dynamic_field_info().
|
|
|
*
|
|
@@ -130,20 +137,30 @@ function materio_search_api_search_api_solr_dynamic_field_info() {
|
|
|
'prefix' => 'tem',
|
|
|
'always multiValued' => TRUE,
|
|
|
),
|
|
|
+ 'edge_n2_kw_mapped_text' => array(
|
|
|
+ 'prefix' => 'temmap',
|
|
|
+ 'always multiValued' => TRUE,
|
|
|
+ ),
|
|
|
);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* hook_entity_property_info_alter().
|
|
|
+ *
|
|
|
+ * define own fields
|
|
|
+ * - main taxonomy terms, the purpose is to be able to attribute differente boost on serach api depending on term order
|
|
|
+ * - companies infos (address) : retrieve for materiau content type the companie info from the tode node
|
|
|
+ *
|
|
|
*/
|
|
|
function materio_search_api_entity_property_info_alter(&$info){
|
|
|
// dsm($info, 'hook_entity_property_info_alter | info');
|
|
|
// watchdog('materio solr', 'materio_search_api_entity_property_info_alter', array());
|
|
|
- $properties = &$info['node']['properties'];
|
|
|
+ $node_props = &$info['node']['properties'];
|
|
|
|
|
|
for ($i=1; $i <= 5 ; $i++) {
|
|
|
- $properties['materio_search_api_onthologie_term_'.$i.'_text'] = array(
|
|
|
+ $node_props['materio_search_api_onthologie_term_'.$i.'_text'] = array(
|
|
|
'type'=>'text',
|
|
|
'label'=> t('Main onthologie term '.$i. ' as text (+ synonyms)'),
|
|
|
// 'query callback'=>'entity_metadata_table_query',
|
|
@@ -151,28 +168,42 @@ function materio_search_api_entity_property_info_alter(&$info){
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- $properties['materio_search_api_onthologie_term_others_text'] = array(
|
|
|
+ $node_props['materio_search_api_onthologie_term_others_text'] = array(
|
|
|
'type'=>'list<text>',
|
|
|
'label'=> t('Others onthologie terms as text (+ synonyms)'),
|
|
|
// 'query callback'=>'entity_metadata_table_query',
|
|
|
'getter callback'=>'materio_search_api_get_taxonomy_terms_others_text',
|
|
|
);
|
|
|
|
|
|
- $properties['materio_search_api_taglibres_text'] = array(
|
|
|
+ $node_props['materio_search_api_taglibres_text'] = array(
|
|
|
'type'=>'list<text>',
|
|
|
'label'=> t('Tag libres terms as text (+ synonyms)'),
|
|
|
// 'query callback'=>'entity_metadata_table_query',
|
|
|
'getter callback'=>'materio_search_api_get_taglibres_terms_text',
|
|
|
);
|
|
|
|
|
|
- $company_term_props = &$info['taxonomy_term']['bundles']['company']['properties'];
|
|
|
|
|
|
- $company_term_props['country'] = array(
|
|
|
- 'label' => t("Country"),
|
|
|
- 'description' => t("Company's Country get from tode node."),
|
|
|
+
|
|
|
+ $node_materiau_props = &$info['node']['bundles']['materiau']['properties'];
|
|
|
+
|
|
|
+ $node_materiau_props['materio_search_api_node_propertie_companie'] = array(
|
|
|
+ 'type'=>'list<text>',
|
|
|
+ 'label'=> t('Manufacturers and distributors companies localised (dont addresse)'),
|
|
|
+ // 'query callback'=>'entity_metadata_table_query',
|
|
|
+ 'getter callback'=>'materio_search_api_get_companies',
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $term_props = &$info['taxonomy_term']['properties'];
|
|
|
+
|
|
|
+ $term_props['materio_search_api_term_property_dup_name'] = array(
|
|
|
+ 'label' => t("Term name field dup"),
|
|
|
+ 'description' => t("Duplicate the term name field to apply different filter in solr (remove accents for instance)"),
|
|
|
'type' => 'text',
|
|
|
- 'getter callback' => 'company_term_property_country_get_props',
|
|
|
+ 'getter callback' => 'term_property_dup_name',
|
|
|
);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
function materio_search_api_get_onthologie_term_1_text($item){
|
|
@@ -256,20 +287,35 @@ function materio_search_api_get_taxo_term_field_text($item, $field_name, $delta)
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-function company_term_property_country_get_props($term){
|
|
|
- // dsm($term, 'company_term_property_country_get_props : term');
|
|
|
- if( $node = company_get_tode_node($term) ){
|
|
|
- // $field_values = field_get_items('node',$node,'field_public_address');
|
|
|
- // dsm($field_values, 'field_values');
|
|
|
-
|
|
|
- $output = rip_tags(render(field_view_field('node',$node,'field_public_address')));
|
|
|
- // dsm($output, 'output');
|
|
|
-
|
|
|
- return $output;
|
|
|
+function materio_search_api_node_propertie_companie($item){
|
|
|
+ // dsm($item, '$item');
|
|
|
+ $lang = "fr";//$item->language;
|
|
|
+
|
|
|
+ $languages = language_list();
|
|
|
+ global $language;
|
|
|
+ $language = $languages[$lang];
|
|
|
+
|
|
|
+ $cies = array();
|
|
|
+ $cie_fields = array("field_company_fab", "field_company_distrib");
|
|
|
+ foreach ($cie_fields as $cie_field_name) {
|
|
|
+ $delta = 0;
|
|
|
+ while( isset($item->{$cie_field_name}['und'][$delta]) ){
|
|
|
+ $tid = $item->{$cie_field_name}['und'][$delta]['tid'];
|
|
|
+ $cie_term = taxonomy_term_load($tid);
|
|
|
+ if($cie_node = company_get_tode_node($cie_term)){
|
|
|
+ $cie_node->language = $lang;
|
|
|
+ $cie_view = node_view($cie_node, "full", $lang);
|
|
|
+ $cie_rendered = rip_tags(drupal_render($cie_view));
|
|
|
+ // dsm($cie_rendered, 'cie_rendered');
|
|
|
+ $cies[] = $cie_rendered;
|
|
|
+ }
|
|
|
+ $delta++;
|
|
|
+ }
|
|
|
}
|
|
|
- return null;
|
|
|
+
|
|
|
+ return $cies;
|
|
|
}
|
|
|
+
|
|
|
function company_get_tode_node($term){
|
|
|
if(module_exists('tode'))
|
|
|
if( $entitys = tode_get_nids_from_term($term))
|
|
@@ -279,6 +325,7 @@ function company_get_tode_node($term){
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
function rip_tags($string) {
|
|
|
// ----- remove HTML TAGs -----
|
|
|
$string = preg_replace ('/<[^>]*>/', ' ', $string);
|
|
@@ -303,6 +350,20 @@ function rip_tags($string) {
|
|
|
return $string;
|
|
|
}
|
|
|
|
|
|
+function materio_search_api_term_property_dup_name($term){
|
|
|
+ $lang = $term->language;
|
|
|
+ return $term->name_field[$lang][0]['value'];
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * - - -- - - - - - - blocks - - - - - - - - - - -
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
/**
|
|
|
* Implements hook_block_info().
|
|
|
*/
|