/** * @param string $kw * @return array */ public function keywordsAutocomplete( $kw = null ) { $regularResults = parent::keywordsAutocomplete(); foreach( $regularResults as $k => $v ) $regularResults[$k]['type'] = 'r'; if( is_null($kw) ) $kw = isset($_GET['term']) ? $_GET['term'] : ''; $input = mb_strtolower( $kw, 'UTF-8' ); $solrFilter = $this->solrFilter(); $solrFacetsFiler = $this->solrFacetsFilter(); if( $solrFilter ) $filters[] = $solrFilter; if( $solrFacetsFiler ) $filters[] = $solrFacetsFiler; $filters[] = sprintf( 'attr_headline_lc_s:%s*', $input ); $params = array( 'q' => '*:*', 'qt' => 'ezpublish', 'defType' => 'edismax', 'rows' => 5, 'fl' => 'meta_main_node_id_si, attr_headline_t, subattr_section___source_id____s', 'fq' => implode( ' AND ', $filters ), 'json.nl' => 'arrarr' ); $solrResults = MerckManualFunctionCollection::rawSearch($params); $topics = array(); if( $solrResults['response']['numFound'] ) { foreach( $solrResults['response']['docs'] as $doc ) { $sectionId = $doc['subattr_section___source_id____s'][0]; $topicUrlResult = MerckManualFunctionCollection::fetchUnifiedUrl( $sectionId, null, $doc['meta_main_node_id_si'], 'topic' ); $topics[] = array( 'label' => $doc['attr_headline_t'], 'url' => $topicUrlResult['result'], 'type' => 't' ); } } return array_merge( $topics, array_slice($regularResults, 0, 10 - count( $topics ) ) ); }
/** * @param string $applicationName Compatibility with other getNodeUrl operators * @param eZContentObjectTreeNode $node * @param boolean $languageCode * @return string */ public static function getMerckManualNodeUrl($applicationName, $node, $languageCode = false) { if( $languageCode ) $node->setCurrentLanguage($languageCode); /* @type $dataMap eZContentObjectAttribute[] */ $chapterNode = ( $node->attribute( 'depth' ) > 4 ) ? $node->fetchParent() : $node; $topicNode = ( $node->attribute( 'depth' ) > 4 ) ? $node : null; $linkType = is_null( $topicNode ) ? 'chapter' : 'topic'; $dataMap = $chapterNode->dataMap(); if ( !$dataMap || !isset($dataMap['serialized_taxonomies']) || !$dataMap['serialized_taxonomies']->hasContent() ) return ""; $serial = $dataMap['serialized_taxonomies']->content(); $sectionRemote = null; if( isset($serial['section']) && is_array($serial['section']) ) $sectionRemote = $serial['section'][0]; $fetchResult = MerckManualFunctionCollection::fetchUnifiedUrl($sectionRemote, $chapterNode, $topicNode, $linkType); return $fetchResult['result']; }