public function __construct(&$subject, $config = array()) { parent::__construct($subject, $config); $this->set('highlighting', array("title", "title_*", "body_*", "metadescription_*", "category_*")); $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select(array('name', 'title'))->from('#__jreviews_fields')->where("location='content'"); $db->setQuery($query); $array = array(); foreach ($db->loadObjectList() as $item) { $key = JString::strtolower(JStringNormalise::toVariable($item->name)) . '_fc'; $array[$key] = $item->title; } $this->set('operators', $array); }
/** * Prepares a listing for indexing. */ protected function getDocument(&$record) { $doc = new JSolrApacheSolrDocument(); $created = JFactory::getDate($record->created); $modified = JFactory::getDate($record->modified); $lang = $this->getLanguage($record, false); $created = JFactory::getDate($record->created); $modified = JFactory::getDate($record->modified); $publishUp = JFactory::getDate($record->publish_up); $publishDown = JFactory::getDate($record->publish_down); if ($created > $modified) { $modified = $created; } $lang = $this->getLanguage($record, false); $doc->addField('created', $created->format('Y-m-d\\TH:i:s\\Z', false)); $doc->addField('modified', $modified->format('Y-m-d\\TH:i:s\\Z', false)); $doc->addField('publish_up_dt', $publishUp->format('Y-m-d\\TH:i:s\\Z', false)); $doc->addField('publish_down_dt', $publishDown->format('Y-m-d\\TH:i:s\\Z', false)); $doc->addField("title", $record->title); $doc->addField("title_{$lang}", $record->title); $doc->addField("access", $record->access); $doc->addField("title_ac", $record->title); // for auto complete $doc->addField("title_sort", $record->title); $record->summary = JSolrHelper::prepareContent($record->summary, $record->params); $record->body = JSolrHelper::prepareContent($record->body, $record->params); $doc->addField("body_{$lang}", strip_tags($record->summary)); $doc->addField("body_{$lang}", strip_tags($record->body)); foreach (explode(',', $record->metakey) as $metakey) { $doc->addField("metakeywords_{$lang}", trim($metakey)); } $doc->addField("metadescription_{$lang}", $record->metadesc); $doc->addField("author", $record->author); $doc->addField("author_fc", $record->author); // for faceting $doc->addField("author_ac", $record->author); // for auto complete foreach (JSolrHelper::getTags($record, array("<h1>")) as $item) { $doc->addField("tags_h1_{$lang}", $item); } foreach (JSolrHelper::getTags($record, array("<h2>", "<h3>")) as $item) { $doc->addField("tags_h2_h3_{$lang}", $item); } foreach (JSolrHelper::getTags($record, array("<h4>", "<h5>", "<h6>")) as $item) { $doc->addField("tags_h4_h5_h6_{$lang}", $item); } $doc->addField("hits_i", (int) $record->hits); if ($record->catid) { $doc->addField("parent_id", $record->catid); $doc->addField("category_{$lang}", $record->category); $doc->addField("category_fc", $record->category); // for faceting } // index image data (if available) if ($record->media_type == 'photo' && $record->main_media == 1) { $doc->addField("media_id_i", (int) $record->media_id); $doc->addField("media_relative_path_s", $record->rel_path); $doc->addField("media_filename_s", $record->filename); $doc->addField("media_fileextension_s", $record->file_extension); $doc->addField("media_filesize_i", (int) $record->filesize); $doc->addField("media_info_s", $record->media_info); $doc->addField("media_metadata_s", $record->media_metadata); $doc->addField("media_published_i", (int) $record->media_published); $doc->addField("media_extension_s", $record->media_extension); } $doc->addField("video_count_i", (int) $record->video_count); $doc->addField("photo_count_i", (int) $record->photo_count); $doc->addField("audio_count_i", (int) $record->audio_count); $doc->addField("attachment_count_i", (int) $record->attachment_count); if (isset($record->user_rating)) { $doc->addField("user_rating_tf", $record->user_rating); } if (isset($record->user_rating_count)) { $doc->addField("user_rating_count_i", (int) $record->user_rating_count); } if (isset($record->user_criteria_rating)) { $doc->addField("user_criteria_rating_tf", $record->user_criteria_rating); } if (isset($record->user_criteria_rating_count)) { $doc->addField("user_criteria_rating_count_i", (int) $record->user_criteria_rating_count); } if (isset($record->review_count)) { $doc->addField("review_count_i", (int) $record->review_count); } if (isset($record->editor_rating)) { $doc->addField("editor_rating_tf", $record->editor_rating); } if (isset($record->editor_rating_count)) { $doc->addField("editor_rating_count_i", (int) $record->editor_rating_count); } if (isset($record->editor_criteria_rating)) { $doc->addField("editor_criteria_rating_tf", $record->editor_criteria_rating); } if (isset($record->editor_criteria_rating_count)) { $doc->addField("editor_criteria_rating_count_s", $record->editor_criteria_rating_count); } if (isset($record->editor_review_count)) { $doc->addField("editor_review_count_s", $record->editor_review_count); } if (isset($record->favorites)) { $doc->addField("favorites_i", (int) $record->favorites); } // Obtain the configured fields to index. if (array_search('jsolr_all', $this->params->def('index_fields')) === false) { $indexes = $this->params->def('index_fields'); } else { $indexes = $this->_getJRFields(); } foreach ($indexes as $index) { $key = JString::strtolower(JStringNormalise::toVariable($index)); $doc->addField($key . '_txt', $record->{$index}); // for searching. switch ($this->_getJRField($index)->type) { case 'checkboxes': case 'selectmultiple': case 'radiobuttons': foreach (explode('*', $record->{$index}) as $value) { if (!empty($value)) { $doc->addField($key . '_sm', $value); } } break; case 'integer': $doc->addField($key . '_i', (int) $record->{$index}); break; default: $doc->addField($key . '_s', $record->{$index}); // for faceting break; } } // Obtain the configured fields to index. if (array_search('jsolr_all', $this->params->def('facet_fields')) === false) { $facets = $this->params->def('facet_fields'); } else { $facets = $this->_getJRFields(); } // Obtain the configured fields to facet. foreach ($facets as $facet) { $key = JString::strtolower(JStringNormalise::toVariable($facet)); switch ($this->_getJRField($facet)->type) { case 'checkboxes': case 'selectmultiple': case 'radiobuttons': foreach (explode('*', rtrim(ltrim($record->{$facet}, '*'), '*')) as $value) { if (!empty($value)) { $doc->addField($key . '_fc', $value); } } break; default: if (!empty($record->{$facet})) { $doc->addField($key . '_fc', $record->{$facet}); // for faceting } break; } } return $doc; }
/** * Method to test JStringNormalise::toVariable(). * * @param string $expected The expected value from the method. * @param string $input The input value for the method. * * @return void * * @dataProvider seedToVariable * @since 11.3 */ public function testToVariable($expected, $input) { $this->assertEquals($expected, JStringNormalise::toVariable($input)); }
/** * Helper wrapper method for toVariable * * @param string $input The string input (ASCII only). * * @return string The variable string. * * @see JUserHelper::toVariable() * @since 3.4 */ public function toVariable($input) { return JStringNormalise::toVariable($input); }