aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/app/codechecker/infochecker.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/app/codechecker/infochecker.php')
-rw-r--r--lib/private/app/codechecker/infochecker.php160
1 files changed, 0 insertions, 160 deletions
diff --git a/lib/private/app/codechecker/infochecker.php b/lib/private/app/codechecker/infochecker.php
deleted file mode 100644
index 812007d8839..00000000000
--- a/lib/private/app/codechecker/infochecker.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-/**
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OC\App\CodeChecker;
-
-use OC\App\InfoParser;
-use OC\Hooks\BasicEmitter;
-
-class InfoChecker extends BasicEmitter {
-
- /** @var InfoParser */
- private $infoParser;
-
- private $mandatoryFields = [
- 'author',
- 'description',
- 'id',
- 'licence',
- 'name',
- ];
- private $optionalFields = [
- 'bugs',
- 'category',
- 'default_enable',
- 'dependencies', // TODO: Mandatory as of ownCloud 11
- 'documentation',
- 'namespace',
- 'ocsid',
- 'public',
- 'remote',
- 'repository',
- 'types',
- 'version',
- 'website',
- ];
- private $deprecatedFields = [
- 'info',
- 'require',
- 'requiremax',
- 'requiremin',
- 'shipped',
- 'standalone',
- ];
-
- public function __construct(InfoParser $infoParser) {
- $this->infoParser = $infoParser;
- }
-
- /**
- * @param string $appId
- * @return array
- */
- public function analyse($appId) {
- $appPath = \OC_App::getAppPath($appId);
- if ($appPath === false) {
- throw new \RuntimeException("No app with given id <$appId> known.");
- }
-
- $errors = [];
-
- $info = $this->infoParser->parse($appPath . '/appinfo/info.xml');
-
- if (isset($info['dependencies']['owncloud']['@attributes']['min-version']) && ($info['requiremin'] || $info['require'])) {
- $this->emit('InfoChecker', 'duplicateRequirement', ['min']);
- $errors[] = [
- 'type' => 'duplicateRequirement',
- 'field' => 'min',
- ];
- } else if (!isset($info['dependencies']['owncloud']['@attributes']['min-version'])) {
- $this->emit('InfoChecker', 'missingRequirement', ['min']);
- }
-
- if (isset($info['dependencies']['owncloud']['@attributes']['max-version']) && $info['requiremax']) {
- $this->emit('InfoChecker', 'duplicateRequirement', ['max']);
- $errors[] = [
- 'type' => 'duplicateRequirement',
- 'field' => 'max',
- ];
- } else if (!isset($info['dependencies']['owncloud']['@attributes']['max-version'])) {
- $this->emit('InfoChecker', 'missingRequirement', ['max']);
- }
-
- foreach ($info as $key => $value) {
- if(is_array($value)) {
- $value = json_encode($value);
- }
- if (in_array($key, $this->mandatoryFields)) {
- $this->emit('InfoChecker', 'mandatoryFieldFound', [$key, $value]);
- continue;
- }
-
- if (in_array($key, $this->optionalFields)) {
- $this->emit('InfoChecker', 'optionalFieldFound', [$key, $value]);
- continue;
- }
-
- if (in_array($key, $this->deprecatedFields)) {
- // skip empty arrays - empty arrays for remote and public are always added
- if($value === '[]' && in_array($key, ['public', 'remote', 'info'])) {
- continue;
- }
- $this->emit('InfoChecker', 'deprecatedFieldFound', [$key, $value]);
- continue;
- }
-
- $this->emit('InfoChecker', 'unusedFieldFound', [$key, $value]);
- }
-
- foreach ($this->mandatoryFields as $key) {
- if(!isset($info[$key])) {
- $this->emit('InfoChecker', 'mandatoryFieldMissing', [$key]);
- $errors[] = [
- 'type' => 'mandatoryFieldMissing',
- 'field' => $key,
- ];
- }
- }
-
- $versionFile = $appPath . '/appinfo/version';
- if (is_file($versionFile)) {
- $version = trim(file_get_contents($versionFile));
- if (isset($info['version'])) {
- if($info['version'] !== $version) {
- $this->emit('InfoChecker', 'differentVersions',
- [$version, $info['version']]);
- $errors[] = [
- 'type' => 'differentVersions',
- 'message' => 'appinfo/version: ' . $version .
- ' - appinfo/info.xml: ' . $info['version'],
- ];
- } else {
- $this->emit('InfoChecker', 'sameVersions', [$versionFile]);
- }
- } else {
- $this->emit('InfoChecker', 'migrateVersion', [$version]);
- }
- }
-
- return $errors;
- }
-}