jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/371658 )
Change subject: Moves ProofreadPagePage::getPageNumber to FileProvider
......................................................................
Moves ProofreadPagePage::getPageNumber to FileProvider
Change-Id: I8b2e6d02582961ff1d988d6c6418b15f69db7a96
---
M ProofreadPage.body.php
M extension.json
M includes/FileProvider.php
A includes/PageNumberNotFoundException.php
M includes/Pagination/FilePagination.php
M includes/page/PageContentBuilder.php
M includes/page/PageDisplayHandler.php
M includes/page/ProofreadPagePage.php
M tests/phpunit/FileProviderTest.php
M tests/phpunit/page/ProofreadPagePageTest.php
10 files changed, 103 insertions(+), 40 deletions(-)
Approvals:
jenkins-bot: Verified
Tpt: Looks good to me, approved
diff --git a/ProofreadPage.body.php b/ProofreadPage.body.php
index c771bed..c088bc1 100644
--- a/ProofreadPage.body.php
+++ b/ProofreadPage.body.php
@@ -22,6 +22,7 @@
use ProofreadPage\Context;
use ProofreadPage\FileNotFoundException;
use ProofreadPage\Page\PageContentBuilder;
+use ProofreadPage\PageNumberNotFoundException;
use ProofreadPage\Pagination\PageNotInPaginationException;
use ProofreadPage\ProofreadPageInit;
@@ -708,16 +709,19 @@
// Image link
try {
- $image =
Context::getDefaultContext()->getFileProvider()->getForPagePage( $page );
+ $fileProvider =
Context::getDefaultContext()->getFileProvider();
+ $image = $fileProvider->getForPagePage( $page );
$imageUrl = null;
if ( $image->isMultipage() ) {
$transformAttributes = [
'width' => $image->getWidth()
];
- $pageNumber = $page->getPageNumber();
- if ( $pageNumber !== null ) {
- $transformAttributes['page'] =
$pageNumber;
+ try {
+ $transformAttributes['page'] =
$fileProvider->getPageNumberForPagePage( $page );
+ } catch ( PageNumberNotFoundException $e ) {
+ // We do not care
}
+
$handler = $image->getHandler();
if ( $handler && $handler->normaliseParams(
$image, $transformAttributes ) ) {
$thumbName = $image->thumbName(
$transformAttributes );
@@ -736,8 +740,7 @@
'text' => wfMessage(
'proofreadpage_image' )->plain()
];
}
- }
- catch ( FileNotFoundException $e ) {
+ } catch ( FileNotFoundException $e ) {
}
// Prev, Next and Index links
diff --git a/extension.json b/extension.json
index ae1ab61..1a2eba4 100644
--- a/extension.json
+++ b/extension.json
@@ -49,6 +49,7 @@
"ProofreadPage\\ProofreadPageInit":
"includes/ProofreadPageInit.php",
"ProofreadPage\\DiffFormatterUtils":
"includes/DiffFormatterUtils.php",
"ProofreadPage\\FileNotFoundException":
"includes/FileNotFoundException.php",
+ "ProofreadPage\\PageNumberNotFoundException":
"includes/PageNumberNotFoundException.php",
"ProofreadPage\\FileProvider": "includes/FileProvider.php",
"ProofreadPage\\Link": "includes/Link.php",
"ProofreadIndexPage": "includes/index/ProofreadIndexPage.php",
diff --git a/includes/FileProvider.php b/includes/FileProvider.php
index dea9d38..037dea9 100644
--- a/includes/FileProvider.php
+++ b/includes/FileProvider.php
@@ -63,4 +63,26 @@
Title::makeTitle( NS_FILE, strtok(
$page->getTitle()->getText(), '/' ) )
);
}
+
+ /**
+ * @param ProofreadPagePage $page
+ * @return int
+ * @throws PageNumberNotFoundException
+ */
+ public function getPageNumberForPagePage( ProofreadPagePage $page ) {
+ $parts = explode( '/', $page->getTitle()->getText() );
+ if ( count( $parts ) === 1 ) {
+ throw new PageNumberNotFoundException(
+ $page->getTitle()->getFullText() . ' does not
provide a page number.'
+ );
+ }
+ $number =
$page->getTitle()->getPageLanguage()->parseFormattedNumber( end( $parts ) );
+ if ( $number > 0 ) {
+ // Valid page numbers are integer > 0.
+ return (int)$number;
+ }
+ throw new PageNumberNotFoundException(
+ $page->getTitle()->getFullText() . ' does not provide a
valid page number.'
+ );
+ }
}
diff --git a/includes/PageNumberNotFoundException.php
b/includes/PageNumberNotFoundException.php
new file mode 100644
index 0000000..342203b
--- /dev/null
+++ b/includes/PageNumberNotFoundException.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace ProofreadPage;
+
+use RuntimeException;
+
+/**
+ * @licence GNU GPL v2+
+ *
+ * An exception thrown if a page number is not found
+ */
+class PageNumberNotFoundException extends RuntimeException {
+}
diff --git a/includes/Pagination/FilePagination.php
b/includes/Pagination/FilePagination.php
index 0a34c23..d3519e4 100644
--- a/includes/Pagination/FilePagination.php
+++ b/includes/Pagination/FilePagination.php
@@ -6,6 +6,7 @@
use OutOfBoundsException;
use ProofreadIndexPage;
use ProofreadPage\Context;
+use ProofreadPage\PageNumberNotFoundException;
use ProofreadPagePage;
use Title;
@@ -59,14 +60,19 @@
* @see ProofreadPagination::getPageNumber
*/
public function getPageNumber( ProofreadPagePage $page ) {
- $pageNumber = $page->getPageNumber();
$index =
$this->context->getIndexForPageLookup()->getIndexForPage( $page );
- if ( $pageNumber === null || $index === null ||
!$this->index->equals( $index ) ) {
+ if ( $index === null || !$this->index->equals( $index ) ) {
throw new PageNotInPaginationException(
$page->getTitle()->getFullText() . ' does not
belong to the pagination'
);
}
- return $pageNumber;
+ try {
+ return
$this->context->getFileProvider()->getPageNumberForPagePage( $page );
+ } catch ( PageNumberNotFoundException $e ) {
+ throw new PageNotInPaginationException(
+ $page->getTitle()->getFullText() . ' does not
have page numbers'
+ );
+ }
}
/**
diff --git a/includes/page/PageContentBuilder.php
b/includes/page/PageContentBuilder.php
index 9f33b0e..add144d 100644
--- a/includes/page/PageContentBuilder.php
+++ b/includes/page/PageContentBuilder.php
@@ -6,6 +6,7 @@
use OutOfBoundsException;
use ProofreadPage\Context;
use ProofreadPage\FileNotFoundException;
+use ProofreadPage\PageNumberNotFoundException;
use ProofreadPage\Pagination\PageNotInPaginationException;
use ProofreadPagePage;
use WikitextContent;
@@ -74,16 +75,19 @@
// Extract text layer
try {
- $image =
$this->context->getFileProvider()->getForPagePage( $page );
- $pageNumber = $page->getPageNumber();
+ $fileProvider = $this->context->getFileProvider();
+ $image = $fileProvider->getForPagePage( $page );
if ( $image->exists() ) {
- if ( $pageNumber !== null &&
$image->isMultipage() ) {
- $text =
$image->getHandler()->getPageText( $image, $pageNumber );
- } else {
- $text = $image->getHandler()
- ?
$image->getHandler()->getPageText( $image, 1 )
- : '';
+ $pageNumber = 1;
+ if ( $image->isMultipage() ) {
+ try {
+ $pageNumber =
$fileProvider->getPageNumberForPagePage( $page );
+ } catch ( PageNumberNotFoundException
$e ) {
+ }
}
+ $text = $image->getHandler()
+ ? $image->getHandler()->getPageText(
$image, $pageNumber )
+ : '';
if ( $text ) {
$text = preg_replace( "/(\\\\n)/",
"\n", $text );
$body = preg_replace( "/(\\\\\d*)/",
'', $text );
diff --git a/includes/page/PageDisplayHandler.php
b/includes/page/PageDisplayHandler.php
index a80f705..98252b7 100644
--- a/includes/page/PageDisplayHandler.php
+++ b/includes/page/PageDisplayHandler.php
@@ -6,6 +6,7 @@
use OutOfBoundsException;
use ProofreadPage\Context;
use ProofreadPage\FileNotFoundException;
+use ProofreadPage\PageNumberNotFoundException;
use ProofreadPagePage;
use Sanitizer;
@@ -108,8 +109,9 @@
* @return null|string
*/
private function buildImageHtml( ProofreadPagePage $page, $options ) {
+ $fileProvider = $this->context->getFileProvider();
try {
- $image =
$this->context->getFileProvider()->getForPagePage( $page );
+ $image = $fileProvider->getForPagePage( $page );
} catch ( FileNotFoundException $e ) {
return null;
}
@@ -125,9 +127,9 @@
];
if ( $image->isMultipage() ) {
- $pageNumber = $page->getPageNumber();
- if ( $pageNumber !== null ) {
- $transformAttributes['page'] = $pageNumber;
+ try {
+ $transformAttributes['page'] =
$fileProvider->getPageNumberForPagePage( $page );
+ } catch ( PageNumberNotFoundException $e ) {
}
}
$handler = $image->getHandler();
diff --git a/includes/page/ProofreadPagePage.php
b/includes/page/ProofreadPagePage.php
index 5877690..75343d5 100644
--- a/includes/page/ProofreadPagePage.php
+++ b/includes/page/ProofreadPagePage.php
@@ -62,17 +62,4 @@
public function getTitle() {
return $this->title;
}
-
- /**
- * Returns number of the page in the file if it's a multi-page file or
null
- * @return int|null
- */
- public function getPageNumber() {
- $parts = explode( '/', $this->title->getText() );
- if ( count( $parts ) === 1 ) {
- return null;
- }
- return (int)$this->title->getPageLanguage()
- ->parseFormattedNumber( $parts[count( $parts ) - 1] );
- }
}
diff --git a/tests/phpunit/FileProviderTest.php
b/tests/phpunit/FileProviderTest.php
index 85d5786..3b0373d 100644
--- a/tests/phpunit/FileProviderTest.php
+++ b/tests/phpunit/FileProviderTest.php
@@ -138,4 +138,35 @@
],
];
}
+
+ public function testGetPageNumberForPagePage() {
+ $fileProvider = new FileProviderMock( [] );
+ $this->assertEquals( 1, $fileProvider->getPageNumberForPagePage(
+ $this->newPagePage( 'Test.djvu/1' )
+ ) );
+ }
+
+ /**
+ * @expectedException \ProofreadPage\PageNumberNotFoundException
+ */
+ public function testGetPageNumberForPageNumberNotFound() {
+ $fileProvider = new FileProviderMock( [] );
+ $fileProvider->getPageNumberForPagePage( $this->newPagePage(
'Test.djvu' ) );
+ }
+
+ /**
+ * @expectedException \ProofreadPage\PageNumberNotFoundException
+ */
+ public function testGetPageNumberForPageNotANumber() {
+ $fileProvider = new FileProviderMock( [] );
+ $fileProvider->getPageNumberForPagePage( $this->newPagePage(
'Test.djvu/foo' ) );
+ }
+
+ /**
+ * @expectedException \ProofreadPage\PageNumberNotFoundException
+ */
+ public function testGetPageNumberForPageBadNumber() {
+ $fileProvider = new FileProviderMock( [] );
+ $fileProvider->getPageNumberForPagePage( $this->newPagePage(
'Test.djvu/-1' ) );
+ }
}
diff --git a/tests/phpunit/page/ProofreadPagePageTest.php
b/tests/phpunit/page/ProofreadPagePageTest.php
index 236f81b..25a38b0 100644
--- a/tests/phpunit/page/ProofreadPagePageTest.php
+++ b/tests/phpunit/page/ProofreadPagePageTest.php
@@ -21,10 +21,4 @@
$page = $this->newPagePage( $title );
$this->assertEquals( $title, $page->getTitle() );
}
-
- public function testGetPageNumber() {
- $this->assertEquals( 1, $this->newPagePage( 'Test.djvu/1'
)->getPageNumber() );
-
- $this->assertNull( $this->newPagePage( 'Test.djvu'
)->getPageNumber() );
- }
}
--
To view, visit https://gerrit.wikimedia.org/r/371658
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8b2e6d02582961ff1d988d6c6418b15f69db7a96
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: master
Gerrit-Owner: Tpt <[email protected]>
Gerrit-Reviewer: Tpt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits