27 'rt_page' => $this->handle->getTitle()->getArticleID(),
28 'rt_type' => RevTagStore::TRANSVER_PROP,
31 'ORDER BY' =>
'rt_revision DESC',
34 $translationRevision = $db->selectField(
'revtag',
'rt_value', $conds, __METHOD__, $options );
35 if ( $translationRevision ===
false ) {
39 $sourceLanguage = $this->group->getSourceLanguage();
40 $definitionTitle = Title::makeTitleSafe(
41 $this->handle->getTitle()->getNamespace(),
42 $this->handle->getKey() .
'/' . $sourceLanguage
45 if ( !$definitionTitle || !$definitionTitle->exists() ) {
50 $mwInstance = MediaWikiServices::getInstance();
51 $oldRevRecord = $mwInstance->getRevisionLookup()->getRevisionById( $translationRevision );
52 if ( !$oldRevRecord ) {
56 $oldContent = $oldRevRecord->getContent( SlotRecord::MAIN );
57 $newContent = $this->dataProvider->getDefinitionContent();
60 throw new TranslationHelperException(
'Old definition version does not exist anymore' );
63 if ( !$oldContent instanceof WikitextContent || !$newContent instanceof WikitextContent ) {
64 throw new TranslationHelperException(
'Can only work on Wikitext content' );
67 if ( $oldContent->equals( $newContent ) ) {
68 throw new TranslationHelperException(
'No changes' );
71 $diff =
new DifferenceEngine( $this->context );
72 $diff->setTextLanguage(
73 $mwInstance->getLanguageFactory()->getLanguage( $sourceLanguage )
75 $diff->setContent( $oldContent, $newContent );
76 $diff->setReducedLineNumbers();
77 $diff->showDiffStyle();
79 $html = $diff->getDiff(
80 $this->context->msg(
'tpt-diff-old' )->escaped(),
81 $this->context->msg(
'tpt-diff-new' )->escaped()
85 'value_old' => $oldContent->getText(),
86 'value_new' => $newContent->getText(),
87 'revisionid_old' => $oldRevRecord->getId(),
88 'revisionid_new' => $definitionTitle->getLatestRevID(),
89 'language' => $this->group->getSourceLanguage(),