summaryrefslogtreecommitdiffstats
path: root/apps/theming/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/theming/lib')
-rw-r--r--apps/theming/lib/Capabilities.php15
-rw-r--r--apps/theming/lib/IconBuilder.php20
-rw-r--r--apps/theming/lib/Util.php27
3 files changed, 42 insertions, 20 deletions
diff --git a/apps/theming/lib/Capabilities.php b/apps/theming/lib/Capabilities.php
index 2a9e9a3c6cf..6e098940ff1 100644
--- a/apps/theming/lib/Capabilities.php
+++ b/apps/theming/lib/Capabilities.php
@@ -24,6 +24,7 @@
namespace OCA\Theming;
use OCP\Capabilities\ICapability;
+use OCP\IConfig;
use OCP\IURLGenerator;
/**
@@ -36,17 +37,21 @@ class Capabilities implements ICapability {
/** @var ThemingDefaults */
protected $theming;
-
/** @var IURLGenerator */
protected $url;
+ /** @var IConfig */
+ protected $config;
+
/**
* @param ThemingDefaults $theming
* @param IURLGenerator $url
+ * @param IConfig $config
*/
- public function __construct(ThemingDefaults $theming, IURLGenerator $url) {
+ public function __construct(ThemingDefaults $theming, IURLGenerator $url, IConfig $config) {
$this->theming = $theming;
$this->url = $url;
+ $this->config = $config;
}
/**
@@ -55,6 +60,8 @@ class Capabilities implements ICapability {
* @return array
*/
public function getCapabilities() {
+ $backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime', false);
+
return [
'theming' => [
'name' => $this->theming->getName(),
@@ -62,7 +69,9 @@ class Capabilities implements ICapability {
'slogan' => $this->theming->getSlogan(),
'color' => $this->theming->getColorPrimary(),
'logo' => $this->url->getAbsoluteURL($this->theming->getLogo()),
- 'background' => $this->url->getAbsoluteURL($this->theming->getBackground()),
+ 'background' => $backgroundLogo === 'backgroundColor' ?
+ $this->theming->getColorPrimary() :
+ $this->url->getAbsoluteURL($this->theming->getBackground()),
],
];
}
diff --git a/apps/theming/lib/IconBuilder.php b/apps/theming/lib/IconBuilder.php
index 477ba966c64..4383ccc7cd9 100644
--- a/apps/theming/lib/IconBuilder.php
+++ b/apps/theming/lib/IconBuilder.php
@@ -26,6 +26,7 @@ namespace OCA\Theming;
use Imagick;
use ImagickPixel;
use OCP\App\AppPathNotFoundException;
+use OCP\Files\SimpleFS\ISimpleFile;
class IconBuilder {
/** @var ThemingDefaults */
@@ -94,19 +95,23 @@ class IconBuilder {
* @return Imagick|false
*/
public function renderAppIcon($app, $size) {
- try {
- $appIcon = $this->util->getAppIcon($app);
- $appIconContent = file_get_contents($appIcon);
- } catch (AppPathNotFoundException $e) {
+ $appIcon = $this->util->getAppIcon($app);
+ if($appIcon === false) {
return false;
}
+ if ($appIcon instanceof ISimpleFile) {
+ $appIconContent = $appIcon->getContent();
+ $mime = $appIcon->getMimeType();
+ } else {
+ $appIconContent = file_get_contents($appIcon);
+ $mime = mime_content_type($appIcon);
+ }
- if($appIconContent === false) {
+ if($appIconContent === false || $appIconContent === "") {
return false;
}
$color = $this->themingDefaults->getColorPrimary();
- $mime = mime_content_type($appIcon);
// generate background image with rounded corners
$background = '<?xml version="1.0" encoding="UTF-8"?>' .
@@ -144,10 +149,9 @@ class IconBuilder {
} else {
$appIconFile = new Imagick();
$appIconFile->setBackgroundColor(new ImagickPixel('transparent'));
- $appIconFile->readImageBlob(file_get_contents($appIcon));
+ $appIconFile->readImageBlob($appIconContent);
$appIconFile->scaleImage(512, 512, true);
}
-
// offset for icon positioning
$border_w = (int)($appIconFile->getImageWidth() * 0.05);
$border_h = (int)($appIconFile->getImageHeight() * 0.05);
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index 5c9ccb3baa6..286756a4849 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -25,6 +25,9 @@ namespace OCA\Theming;
use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
+use OCP\Files\IAppData;
+use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IConfig;
use OCP\Files\IRootFolder;
@@ -33,23 +36,23 @@ class Util {
/** @var IConfig */
private $config;
- /** @var IRootFolder */
- private $rootFolder;
-
/** @var IAppManager */
private $appManager;
+ /** @var IAppData */
+ private $appData;
+
/**
* Util constructor.
*
* @param IConfig $config
- * @param IRootFolder $rootFolder
* @param IAppManager $appManager
+ * @param IAppData $appData
*/
- public function __construct(IConfig $config, IRootFolder $rootFolder, IAppManager $appManager) {
+ public function __construct(IConfig $config, IAppManager $appManager, IAppData $appData) {
$this->config = $config;
- $this->rootFolder = $rootFolder;
$this->appManager = $appManager;
+ $this->appData = $appData;
}
/**
@@ -111,7 +114,7 @@ class Util {
/**
* @param $app string app name
- * @return string path to app icon / logo
+ * @return string|ISimpleFile path to app icon / file of logo
*/
public function getAppIcon($app) {
$app = str_replace(array('\0', '/', '\\', '..'), '', $app);
@@ -127,8 +130,14 @@ class Util {
}
} catch (AppPathNotFoundException $e) {}
- if($this->config->getAppValue('theming', 'logoMime', '') !== '' && $this->rootFolder->nodeExists('/themedinstancelogo')) {
- return $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/themedinstancelogo';
+ if ($this->config->getAppValue('theming', 'logoMime', '') !== '') {
+ $logoFile = null;
+ try {
+ $folder = $this->appData->getFolder('images');
+ if ($folder !== null) {
+ return $folder->getFile('logo');
+ }
+ } catch (NotFoundException $e) {}
}
return \OC::$SERVERROOT . '/core/img/logo.svg';
}