summaryrefslogtreecommitdiff
path: root/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php')
-rw-r--r--bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php56
1 files changed, 56 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php
new file mode 100644
index 00000000..ba5624dc
--- /dev/null
+++ b/bin/wiki/vendor/addwiki/mediawiki-api/src/Service/ImageRotator.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Mediawiki\Api\Service;
+
+use Mediawiki\Api\SimpleRequest;
+use Mediawiki\Api\UsageException;
+use Mediawiki\DataModel\File;
+
+/**
+ * @access private
+ *
+ * @author Addshore
+ */
+class ImageRotator extends Service {
+
+ /**
+ * NOTE: This service has not been fully tested
+ *
+ * @param File $file
+ * @param int $rotation Degrees to rotate image clockwise, One value: 90, 180, 270
+ *
+ * @throws UsageException
+ * @return bool
+ */
+ public function rotate( File $file, $rotation ) {
+ $params = [
+ 'rotation' => $rotation,
+ 'token' => $this->api->getToken(),
+ ];
+
+ if ( !is_null( $file->getPageIdentifier()->getTitle() ) ) {
+ $params['titles'] = $file->getPageIdentifier()->getTitle()->getText();
+ } else {
+ $params['pageids'] = $file->getPageIdentifier()->getId();
+ }
+
+ $result = $this->api->postRequest( new SimpleRequest( 'imagerotate', $params ) );
+
+ // This module sometimes gives odd errors so deal with them..
+ if ( array_key_exists( 'imagerotate', $result ) ) {
+ $imageRotate = array_pop( $result['imagerotate'] );
+ if ( array_key_exists( 'result', $imageRotate ) &&
+ $imageRotate['result'] == 'Failure'
+ ) {
+ throw new UsageException(
+ 'imagerotate-Failure',
+ $imageRotate['errormessage'],
+ $result
+ );
+ }
+ }
+
+ return true;
+ }
+
+}