/** * Delete entity event * * @param string $event "delete" * @param string $type "object"|"group"|"user" * @param ElggEntity $entity Entity * @return void */ function elgg_solr_delete_entity($event, $type, $entity) { if (!elgg_instanceof($entity)) { return; } if (!elgg_solr_is_registered_entity_type($entity->type, $entity->getSubtype())) { return; } // if shutdown just do it, otherwise defer if ($GLOBALS['shutdown_flag']) { $client = elgg_solr_get_client(); $query = $client->createUpdate(); $query->addDeleteById($entity->guid); $query->addCommit(); try { $client->update($query); } catch (Exception $ex) { //something went wrong, lets cache the id and try again on cron elgg_get_site_entity()->annotate('elgg_solr_delete_cache', $entity->guid, ACCESS_PUBLIC); elgg_solr_debug_log($ex->getMessage()); } } else { elgg_solr_defer_index_delete($entity->guid); } }
/** * Index an Elgg entity * * @param ElggEntity $entity Entity * @return bool */ function elgg_solr_add_update(ElggEntity $entity) { if (!elgg_solr_is_registered_entity_type($entity->type, $entity->getSubtype())) { return false; } if ($entity instanceof ElggFile) { return elgg_solr_add_update_file($entity); } $client = elgg_solr_get_client(); $commit = elgg_get_config('elgg_solr_nocommit') ? false : true; $query = $client->createUpdate(); // add document $doc = $query->createDocument(); $doc = elgg_solr_prepare_entity_doc($doc, $entity); if (!$doc) { return true; // a plugin has stopped the index } $query->addDocument($doc); if ($commit) { $query->addCommit($commit); } // this executes the query and returns the result try { $client->update($query); } catch (Exception $exc) { elgg_solr_debug_log($exc->getMessage()); } return true; }