/** * 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'); }