aboutsummaryrefslogtreecommitdiffstats
path: root/apps/theming
diff options
context:
space:
mode:
authorJulius Haertl <jus@bitgrid.net>2016-11-18 10:49:03 +0100
committerJulius Haertl <jus@bitgrid.net>2016-11-18 11:07:44 +0100
commit2ab4d1e0a3f15af2b8f04edcf18b7fe3fc0be262 (patch)
treeec035e8aec9d655e07bd06e4337a41c0bb8c4846 /apps/theming
parentd409fe1c525ba05f342d52a9686ae395a0dac465 (diff)
downloadnextcloud-server-2ab4d1e0a3f15af2b8f04edcf18b7fe3fc0be262.tar.gz
nextcloud-server-2ab4d1e0a3f15af2b8f04edcf18b7fe3fc0be262.zip
Use IAppManager instead of OC_App
Signed-off-by: Julius Haertl <jus@bitgrid.net>
Diffstat (limited to 'apps/theming')
-rw-r--r--apps/theming/lib/IconBuilder.php16
-rw-r--r--apps/theming/lib/Util.php73
-rw-r--r--apps/theming/tests/Controller/ThemingControllerTest.php6
-rw-r--r--apps/theming/tests/IconBuilderTest.php6
-rw-r--r--apps/theming/tests/UtilTest.php16
5 files changed, 81 insertions, 36 deletions
diff --git a/apps/theming/lib/IconBuilder.php b/apps/theming/lib/IconBuilder.php
index be3035eb0d8..d8161051ebb 100644
--- a/apps/theming/lib/IconBuilder.php
+++ b/apps/theming/lib/IconBuilder.php
@@ -25,6 +25,7 @@ namespace OCA\Theming;
use Imagick;
use ImagickPixel;
+use OCP\App\AppPathNotFoundException;
class IconBuilder {
/** @var ThemingDefaults */
@@ -85,8 +86,13 @@ class IconBuilder {
* @return Imagick|false
*/
public function renderAppIcon($app) {
- $appIcon = $this->util->getAppIcon($app);
- $appIconContent = file_get_contents($appIcon);
+ try {
+ $appIcon = $this->util->getAppIcon($app);
+ $appIconContent = file_get_contents($appIcon);
+ } catch (AppPathNotFoundException $e) {
+ return false;
+ }
+
if($appIconContent === false) {
return false;
}
@@ -158,7 +164,11 @@ class IconBuilder {
}
public function colorSvg($app, $image) {
- $imageFile = $this->util->getAppImage($app, $image);
+ try {
+ $imageFile = $this->util->getAppImage($app, $image);
+ } catch (AppPathNotFoundException $e) {
+ return false;
+ }
$svg = file_get_contents($imageFile);
if ($svg !== false) {
$color = $this->util->elementColor($this->themingDefaults->getMailHeaderColor());
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index 963cf56633b..9fea56838ad 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -23,6 +23,8 @@
namespace OCA\Theming;
+use OCP\App\AppPathNotFoundException;
+use OCP\App\IAppManager;
use OCP\IConfig;
use OCP\Files\IRootFolder;
@@ -34,15 +36,20 @@ class Util {
/** @var IRootFolder */
private $rootFolder;
+ /** @var IAppManager */
+ private $appManager;
+
/**
* Util constructor.
*
* @param IConfig $config
* @param IRootFolder $rootFolder
+ * @param IAppManager $appManager
*/
- public function __construct(IConfig $config, IRootFolder $rootFolder) {
+ public function __construct(IConfig $config, IRootFolder $rootFolder, IAppManager $appManager) {
$this->config = $config;
$this->rootFolder = $rootFolder;
+ $this->appManager = $appManager;
}
/**
@@ -108,8 +115,8 @@ class Util {
*/
public function getAppIcon($app) {
$app = str_replace(array('\0', '/', '\\', '..'), '', $app);
- $appPath = \OC_App::getAppPath($app);
- if ($appPath !== false) {
+ try {
+ $appPath = $this->appManager->getAppPath($app);
$icon = $appPath . '/img/' . $app . '.svg';
if (file_exists($icon)) {
return $icon;
@@ -118,7 +125,8 @@ class Util {
if (file_exists($icon)) {
return $icon;
}
- }
+ } catch (AppPathNotFoundException $e) {}
+
if($this->config->getAppValue('theming', 'logoMime', '') !== '' && $this->rootFolder->nodeExists('/themedinstancelogo')) {
return $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/') . '/themedinstancelogo';
}
@@ -128,40 +136,45 @@ class Util {
/**
* @param $app string app name
* @param $image string relative path to image in app folder
- * @return string absolute path to image
+ * @return string|false absolute path to image
*/
public function getAppImage($app, $image) {
$app = str_replace(array('\0', '/', '\\', '..'), '', $app);
$image = str_replace(array('\0', '\\', '..'), '', $image);
- $appPath = \OC_App::getAppPath($app);
- if ($app === "core") {
- $icon = \OC::$SERVERROOT . '/core/img/' . $image;
- if (file_exists($icon)) {
- return $icon;
- }
- }
- if ($appPath !== false) {
- $icon = $appPath . '/img/' . $image;
- if (file_exists($icon)) {
- return $icon;
- }
- $icon = $appPath . '/img/' . $image . '.svg';
- if (file_exists($icon)) {
- return $icon;
- }
- $icon = $appPath . '/img/' . $image . '.png';
- if (file_exists($icon)) {
- return $icon;
- }
- $icon = $appPath . '/img/' . $image . '.gif';
- if (file_exists($icon)) {
- return $icon;
- }
- $icon = $appPath . '/img/' . $image . '.jpg';
+ if ($app === "core") {
+ $icon = \OC::$SERVERROOT . '/core/img/' . $image;
if (file_exists($icon)) {
return $icon;
}
}
+
+ try {
+ $appPath = $this->appManager->getAppPath($app);
+ } catch (AppPathNotFoundException $e) {
+ return false;
+ }
+
+ $icon = $appPath . '/img/' . $image;
+ if (file_exists($icon)) {
+ return $icon;
+ }
+ $icon = $appPath . '/img/' . $image . '.svg';
+ if (file_exists($icon)) {
+ return $icon;
+ }
+ $icon = $appPath . '/img/' . $image . '.png';
+ if (file_exists($icon)) {
+ return $icon;
+ }
+ $icon = $appPath . '/img/' . $image . '.gif';
+ if (file_exists($icon)) {
+ return $icon;
+ }
+ $icon = $appPath . '/img/' . $image . '.jpg';
+ if (file_exists($icon)) {
+ return $icon;
+ }
+
return false;
}
diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php
index 3bf7709b0de..9ce4fb86b52 100644
--- a/apps/theming/tests/Controller/ThemingControllerTest.php
+++ b/apps/theming/tests/Controller/ThemingControllerTest.php
@@ -26,6 +26,7 @@ namespace OCA\Theming\Tests\Controller;
use OCA\Theming\Controller\ThemingController;
use OCA\Theming\Util;
+use OCP\App\IAppManager;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\Files\IRootFolder;
@@ -55,6 +56,8 @@ class ThemingControllerTest extends TestCase {
private $rootFolder;
/** @var ITempManager */
private $tempManager;
+ /** @var IAppManager */
+ private $appManager;
public function setUp() {
$this->request = $this->getMockBuilder('OCP\IRequest')->getMock();
@@ -66,7 +69,8 @@ class ThemingControllerTest extends TestCase {
->getMock();
$this->l10n = $this->getMockBuilder('OCP\IL10N')->getMock();
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
- $this->util = new Util($this->config, $this->rootFolder);
+ $this->appManager = $this->getMockBuilder('OCP\App\IAppManager')->getMock();
+ $this->util = new Util($this->config, $this->rootFolder, $this->appManager);
$this->timeFactory->expects($this->any())
->method('getTime')
->willReturn(123);
diff --git a/apps/theming/tests/IconBuilderTest.php b/apps/theming/tests/IconBuilderTest.php
index a13d4b9476d..54850c8f3c2 100644
--- a/apps/theming/tests/IconBuilderTest.php
+++ b/apps/theming/tests/IconBuilderTest.php
@@ -25,6 +25,7 @@ namespace OCA\Theming\Tests;
use OCA\Theming\IconBuilder;
use OCA\Theming\ThemingDefaults;
use OCA\Theming\Util;
+use OCP\App\IAppManager;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\Files\IRootFolder;
use OCP\IConfig;
@@ -42,6 +43,8 @@ class IconBuilderTest extends TestCase {
protected $util;
/** @var IconBuilder */
protected $iconBuilder;
+ /** @var IAppManager */
+ protected $appManager;
protected function setUp() {
parent::setUp();
@@ -50,7 +53,8 @@ class IconBuilderTest extends TestCase {
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
$this->themingDefaults = $this->getMockBuilder('OCA\Theming\ThemingDefaults')
->disableOriginalConstructor()->getMock();
- $this->util = new Util($this->config, $this->rootFolder);
+ $this->appManager = $this->getMockBuilder('OCP\App\IAppManager')->getMock();
+ $this->util = new Util($this->config, $this->rootFolder, $this->appManager);
$this->iconBuilder = new IconBuilder($this->themingDefaults, $this->util);
}
diff --git a/apps/theming/tests/UtilTest.php b/apps/theming/tests/UtilTest.php
index d82ec8eeb85..83895208fea 100644
--- a/apps/theming/tests/UtilTest.php
+++ b/apps/theming/tests/UtilTest.php
@@ -23,6 +23,7 @@
namespace OCA\Theming\Tests;
use OCA\Theming\Util;
+use OCP\App\IAppManager;
use OCP\IConfig;
use OCP\Files\IRootFolder;
use Test\TestCase;
@@ -35,12 +36,15 @@ class UtilTest extends TestCase {
protected $config;
/** @var IRootFolder */
protected $rootFolder;
+ /** @var IAppManager */
+ protected $appManager;
protected function setUp() {
parent::setUp();
$this->config = $this->getMockBuilder('\OCP\IConfig')->getMock();
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
- $this->util = new Util($this->config, $this->rootFolder);
+ $this->appManager = $this->getMockBuilder('OCP\App\IAppManager')->getMock();
+ $this->util = new Util($this->config, $this->rootFolder, $this->appManager);
}
public function testInvertTextColorLight() {
@@ -108,6 +112,10 @@ class UtilTest extends TestCase {
* @dataProvider dataGetAppIcon
*/
public function testGetAppIcon($app, $expected) {
+ $this->appManager->expects($this->once())
+ ->method('getAppPath')
+ ->with($app)
+ ->willReturn(\OC_App::getAppPath($app));
$icon = $this->util->getAppIcon($app);
$this->assertEquals($expected, $icon);
}
@@ -134,6 +142,12 @@ class UtilTest extends TestCase {
* @dataProvider dataGetAppImage
*/
public function testGetAppImage($app, $image, $expected) {
+ if($app !== 'core') {
+ $this->appManager->expects($this->once())
+ ->method('getAppPath')
+ ->with($app)
+ ->willReturn(\OC_App::getAppPath($app));
+ }
$this->assertEquals($expected, $this->util->getAppImage($app, $image));
}