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 $definitionTitle = Title::makeTitleSafe(
40 $this->handle->getTitle()->getNamespace(),
41 $this->handle->getKey() .
'/' . $this->group->getSourceLanguage()
44 if ( !$definitionTitle || !$definitionTitle->exists() ) {
49 $oldRevRecord = MediaWikiServices::getInstance()
51 ->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( wfGetLangObj( $this->group->getSourceLanguage() ) );
73 $diff->setContent( $oldContent, $newContent );
74 $diff->setReducedLineNumbers();
75 $diff->showDiffStyle();
77 $html = $diff->getDiff(
78 $this->context->msg(
'tpt-diff-old' )->escaped(),
79 $this->context->msg(
'tpt-diff-new' )->escaped()
83 'value_old' => $oldContent->getText(),
84 'value_new' => $newContent->getText(),
85 'revisionid_old' => $oldRevRecord->getId(),
86 'revisionid_new' => $definitionTitle->getLatestRevID(),
87 'language' => $this->group->getSourceLanguage(),