diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index c3811a4084..328f86c877 100644 --- a/apps/dav/appinfo/application.php +++ b/apps/dav/appinfo/application.php @@ -153,11 +153,6 @@ class Application extends App { return $this->getContainer()->query('SyncService'); } - public function setupCron() { - $jl = $this->getContainer()->getServer()->getJobList(); - $jl->add(new SyncJob()); - } - public function generateBirthdays() { try { /** @var BirthdayService $migration */ diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index bb447c9a42..e2688e2f92 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -16,4 +16,7 @@ + + OCA\DAV\CardDAV\Sync\SyncJob + diff --git a/apps/dav/appinfo/install.php b/apps/dav/appinfo/install.php index fbd41d25f4..dbb23022b3 100644 --- a/apps/dav/appinfo/install.php +++ b/apps/dav/appinfo/install.php @@ -22,5 +22,4 @@ use OCA\Dav\AppInfo\Application; $app = new Application(); -$app->setupCron(); $app->generateBirthdays(); diff --git a/apps/dav/appinfo/update.php b/apps/dav/appinfo/update.php index fbd41d25f4..dbb23022b3 100644 --- a/apps/dav/appinfo/update.php +++ b/apps/dav/appinfo/update.php @@ -22,5 +22,4 @@ use OCA\Dav\AppInfo\Application; $app = new Application(); -$app->setupCron(); $app->generateBirthdays(); diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php index 21422d4060..e945655020 100644 --- a/lib/private/App/InfoParser.php +++ b/lib/private/App/InfoParser.php @@ -89,6 +89,9 @@ class InfoParser { if (!array_key_exists('uninstall', $array['repair-steps'])) { $array['repair-steps']['uninstall'] = []; } + if (!array_key_exists('background-jobs', $array)) { + $array['background-jobs'] = []; + } if (array_key_exists('documentation', $array) && is_array($array['documentation'])) { foreach ($array['documentation'] as $key => $url) { @@ -128,6 +131,9 @@ class InfoParser { if (isset($array['repair-steps']['uninstall']['step']) && is_array($array['repair-steps']['uninstall']['step'])) { $array['repair-steps']['uninstall'] = $array['repair-steps']['uninstall']['step']; } + if (isset($array['background-jobs']['job']) && is_array($array['background-jobs']['job'])) { + $array['background-jobs'] = $array['background-jobs']['job']; + } return $array; } @@ -147,10 +153,7 @@ class InfoParser { if (!isset($array[$element])) { $array[$element] = ""; } - /** - * @var \SimpleXMLElement $node - */ - + /** @var \SimpleXMLElement $node */ // Has attributes if ($attributes = $node->attributes()) { $data = [ diff --git a/lib/private/Installer.php b/lib/private/Installer.php index 8ecc92e134..edc6306b8f 100644 --- a/lib/private/Installer.php +++ b/lib/private/Installer.php @@ -133,6 +133,8 @@ class Installer { } } + \OC_App::setupBackgroundJobs($info['background-jobs']); + //run appinfo/install.php if((!isset($data['noinstall']) or $data['noinstall']==false)) { self::includeAppScript($basedir . '/appinfo/install.php'); @@ -569,6 +571,7 @@ class Installer { if (is_null($info)) { return false; } + \OC_App::setupBackgroundJobs($info['background-jobs']); OC_App::executeRepairSteps($app, $info['repair-steps']['install']); diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index fe590e4159..dab4c1a70c 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -1190,6 +1190,7 @@ class OC_App { self::loadApp($appId, false); include $appPath . '/appinfo/update.php'; } + self::setupBackgroundJobs($appData['background-jobs']); //set remote/public handlers if (array_key_exists('ocsid', $appData)) { @@ -1240,6 +1241,13 @@ class OC_App { $r->run(); } + public static function setupBackgroundJobs(array $jobs) { + $queue = \OC::$server->getJobList(); + foreach ($jobs as $job) { + $queue->add($job); + } + } + /** * @param string $appId * @param string[] $steps diff --git a/tests/data/app/expected-info.json b/tests/data/app/expected-info.json index cef7a7fdab..81de5341ef 100644 --- a/tests/data/app/expected-info.json +++ b/tests/data/app/expected-info.json @@ -74,5 +74,6 @@ "post-migration": [], "live-migration": [], "uninstall": [] - } + }, + "background-jobs": [] }