/** * @see LoggedUpdateMaintenance::doDBUpdates * * @throws EntityIdParsingException * @return bool */ public function doDBUpdates() { if (!defined('WB_VERSION')) { $this->error("You need to have Wikibase enabled in order to use this maintenance script!", 1); } $idParser = WikibaseRepo::getDefaultInstance()->getEntityIdParser(); $startItemOption = $this->getOption('start-item'); $startItem = $startItemOption === null ? null : $idParser->parse($startItemOption); if ($startItem !== null && !$startItem instanceof ItemId) { throw new EntityIdParsingException('Not an Item ID: ' . $startItemOption); } $verbose = (bool) $this->getOption('verbose', false); $reporter = new ObservableMessageReporter(); $reporter->registerReporterCallback(array($this, 'report')); $builder = new ChangesSubscriptionTableBuilder(wfGetLB(), 'wb_changes_subscription', $this->mBatchSize, $verbose ? 'verbose' : 'standard'); $builder->setProgressReporter($reporter); $builder->setExceptionHandler(new ReportingExceptionHandler($reporter)); $builder->fillSubscriptionTable($startItem); return true; }