Esempio n. 1
0
function elgg_solr_add_tags($doc, $entity)
{
    if (!elgg_instanceof($entity)) {
        return $doc;
    }
    // store tags the old way - lumped together in $doc->tags as $name . '%%' . $value'
    $doc->tags = elgg_solr_get_tags_array($entity);
    // also store them separately with magick fields
    // store in different field types for different search types
    $valid_tag_names = elgg_get_registered_tag_metadata_names();
    if ($valid_tag_names && is_array($valid_tag_names)) {
        foreach ($valid_tag_names as $tagname) {
            $tags = $entity->{$tagname};
            if ($tags && !is_array($tags)) {
                $tags = array($tags);
            }
            $name = 'tag_' . $tagname . '_ss';
            // multivalued string
            $doc->{$name} = $tags;
        }
    }
    return $doc;
}
Esempio n. 2
0
function plugin_index($h, $t, $doc, $p)
{
    if (!$doc) {
        return $doc;
        // something else prevented this index
    }
    if (!elgg_instanceof($p['entity'], 'object', 'plugin_project')) {
        return $doc;
    }
    $entity = $p['entity'];
    // add brief description to the full description
    $description = trim($entity->summary . ' ' . $entity->description);
    $doc->description = $description;
    // use generic fields for some filter queries
    // eg.
    $releases = $entity->getReleases(array('limit' => false));
    $elgg_versions = array();
    if ($releases) {
        foreach ($releases as $release) {
            if (is_array($release->elgg_version)) {
                foreach ($release->elgg_version as $version) {
                    $elgg_versions[] = $version;
                }
            } else {
                $elgg_versions[] = $release->elgg_version;
            }
        }
    }
    $screenshots = $entity->getScreenshots();
    $doc->version_ss = array_unique($elgg_versions);
    $doc->plugin_type_s = $entity->plugin_type;
    $doc->plugincat_s = $entity->plugincat;
    $doc->license_s = $entity->license;
    $doc->screenshots_i = $screenshots ? 1 : 0;
    // store category with the tags
    $categoryname = 'plugincat';
    $tag_registered = false;
    $md = elgg_get_registered_tag_metadata_names();
    if ($md && in_array($categoryname, $md)) {
        $tag_registered = true;
    }
    if (!$tag_registered) {
        elgg_register_tag_metadata_name($categoryname);
    }
    $doc->tags = elgg_solr_get_tags_array($entity);
    if (!$tag_registered) {
        // we should unregister it now in case anything else
        // wants to use registered tag names
        elgg_set_config('registered_tag_metadata_names', $md);
    }
    return $doc;
}