Merge pull request #1033 from nextcloud/fix_theming_autoloader_magic

Fix theming autoloader magic
This commit is contained in:
Roeland Jago Douma 2016-08-24 14:16:48 +02:00 committed by GitHub
commit 42ef33661f
2 changed files with 12 additions and 7 deletions

View file

@ -29,21 +29,20 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\ISettings;
use \OC_Defaults;
class Admin implements ISettings {
/** @var IConfig */
private $config;
/** @var IL10N */
private $l;
/** @var ThemingDefaults|OC_Defaults */
/** @var ThemingDefaults */
private $themingDefaults;
/** @var IURLGenerator */
private $urlGenerator;
public function __construct(IConfig $config,
IL10N $l,
OC_Defaults $themingDefaults,
ThemingDefaults $themingDefaults,
IURLGenerator $urlGenerator) {
$this->config = $config;
$this->l = $l;

View file

@ -643,10 +643,16 @@ class Server extends ServerContainer implements IServerContainer {
return $factory->getManager();
});
$this->registerService('ThemingDefaults', function(Server $c) {
try {
$classExists = class_exists('OCA\Theming\ThemingDefaults');
} catch (\OCP\AutoloadNotAllowedException $e) {
// App disabled or in maintenance mode
/*
* Dark magic for autoloader.
* If we do a class_exists it will try to load the class which will
* make composer cache the result. Resulting in errors when enabling
* the theming app.
*/
$prefixes = \OC::$composerAutoloader->getPrefixesPsr4();
if (isset($prefixes['OCA\\Theming\\'])) {
$classExists = true;
} else {
$classExists = false;
}