summaryrefslogtreecommitdiffstats
path: root/apps/theming/lib/ThemingDefaults.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/theming/lib/ThemingDefaults.php')
-rw-r--r--apps/theming/lib/ThemingDefaults.php46
1 files changed, 43 insertions, 3 deletions
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index 8200957edc0..5dd22fb6326 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -23,6 +23,8 @@
namespace OCA\Theming;
+use OCP\App\AppPathNotFoundException;
+use OCP\App\IAppManager;
use OCP\Files\IAppData;
use OCP\ICacheFactory;
use OCP\IConfig;
@@ -41,6 +43,10 @@ class ThemingDefaults extends \OC_Defaults {
private $appData;
/** @var ICacheFactory */
private $cacheFactory;
+ /** @var Util */
+ private $util;
+ /** @var IAppManager */
+ private $appManager;
/** @var string */
private $name;
/** @var string */
@@ -49,8 +55,7 @@ class ThemingDefaults extends \OC_Defaults {
private $slogan;
/** @var string */
private $color;
- /** @var Util */
- private $util;
+
/** @var string */
private $iTunesAppId;
/** @var string */
@@ -68,13 +73,15 @@ class ThemingDefaults extends \OC_Defaults {
* @param IAppData $appData
* @param ICacheFactory $cacheFactory
* @param Util $util
+ * @param IAppManager $appManager
*/
public function __construct(IConfig $config,
IL10N $l,
IURLGenerator $urlGenerator,
IAppData $appData,
ICacheFactory $cacheFactory,
- Util $util
+ Util $util,
+ IAppManager $appManager
) {
parent::__construct();
$this->config = $config;
@@ -83,6 +90,7 @@ class ThemingDefaults extends \OC_Defaults {
$this->appData = $appData;
$this->cacheFactory = $cacheFactory;
$this->util = $util;
+ $this->appManager = $appManager;
$this->name = parent::getName();
$this->url = parent::getBaseUrl();
@@ -249,6 +257,38 @@ class ThemingDefaults extends \OC_Defaults {
}
/**
+ * Check if the image should be replaced by the theming app
+ * and return the new image location then
+ *
+ * @param string $app name of the app
+ * @param string $image filename of the image
+ * @return bool|string false if image should not replaced, otherwise the location of the image
+ */
+ public function replaceImagePath($app, $image) {
+ if($app==='') {
+ $app = 'core';
+ }
+ $cacheBusterValue = $this->config->getAppValue('theming', 'cachebuster', '0');
+
+ if ($image === 'favicon.ico' && $this->shouldReplaceIcons()) {
+ return $this->urlGenerator->linkToRoute('theming.Icon.getFavicon', ['app' => $app]) . '?v=' . $cacheBusterValue;
+ }
+ if ($image === 'favicon-touch.png' && $this->shouldReplaceIcons()) {
+ return $this->urlGenerator->linkToRoute('theming.Icon.getTouchIcon', ['app' => $app]) . '?v=' . $cacheBusterValue;
+ }
+ if ($image === 'manifest.json') {
+ try {
+ $appPath = $this->appManager->getAppPath($app);
+ if (file_exists($appPath . '/img/manifest.json')) {
+ return false;
+ }
+ } catch (AppPathNotFoundException $e) {}
+ return $this->urlGenerator->linkToRoute('theming.Theming.getManifest') . '?v=' . $cacheBusterValue;
+ }
+ return false;
+ }
+
+ /**
* Check if Imagemagick is enabled and if SVG is supported
* otherwise we can't render custom icons
*