/**
  * Registers the object in search engine.
  *
  * @note Transaction unsafe. If you call several transaction unsafe methods you must enclose
  *       the calls within a db transaction; thus within db->begin and db->commit.
  *
  * @param int $objectID Id of the object.
  */
 public static function registerSearchObject($objectID)
 {
     $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) {
         eZDB::instance()->query("INSERT INTO ezpending_actions( action, param ) VALUES ( 'index_object', '{$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::removeObject($object, $needCommit);
         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');
 }