owner->ID) { return; } // Force SearchUpdater to mark this record as dirty // Note: Some extensions require entire hierarchy passed to augmentWrite() $manipulation = array(); foreach (ClassInfo::ancestry($this->owner) as $class) { if (!is_subclass_of($class, DataObject::class)) { continue; } $tableName = DataObject::getSchema()->tableName($class); $manipulation[$tableName] = array( 'fields' => array(), 'id' => $this->owner->ID, 'class' => $class, // Note: 'delete' command not actually handled by manipulations, // but added so that SearchUpdater can detect the deletion 'command' => 'delete' ); } $this->owner->extend('augmentWrite', $manipulation); SearchUpdater::handle_manipulation($manipulation); } /** * Forces this object to trigger a re-index in the current state */ public function triggerReindex() { if (!$this->owner->ID) { return; } $id = $this->owner->ID; $class = $this->owner->ClassName; $state = SearchVariant::current_state($class); $base = DataObject::getSchema()->baseDataClass($class); $key = "$id:$base:" . serialize($state); $statefulids = array(array( 'id' => $id, 'state' => $state )); $writes = array( $key => array( 'base' => $base, 'class' => $class, 'id' => $id, 'statefulids' => $statefulids, 'fields' => array() ) ); SearchUpdater::process_writes($writes); } }