public static function registerSearchObject($objectID, $version = null, $isMoved = false)
{
$objectID = (int) $objectID;
eZDebug::createAccumulatorGroup('search_total', 'Search Total');
$ini = eZINI::instance('site.ini');
$insertPendingAction = false;
$object = null;
switch ($ini->variable('SearchSettings', 'DelayedIndexing')) {
case 'enabled':
$insertPendingAction = true;
break;
case 'classbased':
$classList = $ini->variable('SearchSettings', 'DelayedIndexingClassList');
$object = eZContentObject::fetch($objectID);
if (is_array($classList) && in_array($object->attribute('class_identifier'), $classList)) {
$insertPendingAction = true;
}
}
if ($insertPendingAction) {
$action = $isMoved ? 'index_moved_node' : 'index_object';
eZDB::instance()->query("INSERT INTO ezpending_actions( action, param ) VALUES ( '{$action}', '{$objectID}' )");
return;
}
if ($object === null) {
$object = eZContentObject::fetch($objectID);
}
// Register the object in the search engine.
$needCommit = eZSearch::needCommit();
if (eZSearch::needRemoveWithUpdate()) {
eZDebug::accumulatorStart('remove_object', 'search_total', 'remove object');
eZSearch::removeObjectById($objectID);
eZDebug::accumulatorStop('remove_object');
}
eZDebug::accumulatorStart('add_object', 'search_total', 'add object');
if (!eZSearch::addObject($object, $needCommit)) {
eZDebug::writeError("Failed adding object ID {$object->attribute('id')} in the search engine", __METHOD__);
}
eZDebug::accumulatorStop('add_object');
}