aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/caldav/calendar.php13
-rw-r--r--apps/dav/tests/unit/caldav/caldavbackendtest.php2
-rw-r--r--apps/dav/tests/unit/caldav/calendartest.php13
-rw-r--r--apps/dav/tests/unit/connector/publicauth.php7
-rw-r--r--apps/files_trashbin/lib/backgroundjob/expiretrash.php51
-rw-r--r--apps/files_trashbin/tests/backgroundjob/expiretrash.php1
-rw-r--r--apps/files_versions/lib/backgroundjob/expireversions.php28
-rw-r--r--cron.php8
8 files changed, 59 insertions, 64 deletions
diff --git a/apps/dav/lib/caldav/calendar.php b/apps/dav/lib/caldav/calendar.php
index 6d6c0b5d7a4..f3637692e43 100644
--- a/apps/dav/lib/caldav/calendar.php
+++ b/apps/dav/lib/caldav/calendar.php
@@ -33,7 +33,6 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
parent::__construct($caldavBackend, $calendarInfo);
if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) {
- $this->calendarInfo['{http://sabredav.org/ns}read-only'] = true;
$this->calendarInfo['{DAV:}displayname'] = $l10n->t('Contact birthdays');
}
}
@@ -94,11 +93,13 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
'principal' => $this->getOwner(),
'protected' => true,
]];
- $acl[] = [
- 'privilege' => '{DAV:}write',
- 'principal' => $this->getOwner(),
- 'protected' => true,
- ];
+ if ($this->getName() !== BirthdayService::BIRTHDAY_CALENDAR_URI) {
+ $acl[] = [
+ 'privilege' => '{DAV:}write',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ];
+ }
if ($this->getOwner() !== parent::getOwner()) {
$acl[] = [
'privilege' => '{DAV:}read',
diff --git a/apps/dav/tests/unit/caldav/caldavbackendtest.php b/apps/dav/tests/unit/caldav/caldavbackendtest.php
index a4a19f5bd3e..440db7636e1 100644
--- a/apps/dav/tests/unit/caldav/caldavbackendtest.php
+++ b/apps/dav/tests/unit/caldav/caldavbackendtest.php
@@ -25,6 +25,7 @@ use DateTimeZone;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Calendar;
use OCA\DAV\Connector\Sabre\Principal;
+use OCP\IL10N;
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
use Sabre\DAV\PropPatch;
use Sabre\DAV\Xml\Property\Href;
@@ -136,6 +137,7 @@ class CalDavBackendTest extends TestCase {
*/
public function testCalendarSharing($userCanRead, $userCanWrite, $groupCanRead, $groupCanWrite, $add) {
+ /** @var IL10N | \PHPUnit_Framework_MockObject_MockObject $l10n */
$l10n = $this->getMockBuilder('\OCP\IL10N')
->disableOriginalConstructor()->getMock();
$l10n
diff --git a/apps/dav/tests/unit/caldav/calendartest.php b/apps/dav/tests/unit/caldav/calendartest.php
index 812e0074d15..f13edde6085 100644
--- a/apps/dav/tests/unit/caldav/calendartest.php
+++ b/apps/dav/tests/unit/caldav/calendartest.php
@@ -21,6 +21,7 @@
namespace OCA\DAV\Tests\Unit\CalDAV;
+use OCA\DAV\CalDAV\BirthdayService;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Calendar;
use OCP\IL10N;
@@ -123,14 +124,14 @@ class CalendarTest extends TestCase {
/**
* @dataProvider providesReadOnlyInfo
*/
- public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet) {
+ public function testAcl($expectsWrite, $readOnlyValue, $hasOwnerSet, $uri = 'default') {
/** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock();
$backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1);
$calendarInfo = [
'principaluri' => 'user2',
'id' => 666,
- 'uri' => 'default'
+ 'uri' => $uri
];
if (!is_null($readOnlyValue)) {
$calendarInfo['{http://owncloud.org/ns}read-only'] = $readOnlyValue;
@@ -151,6 +152,13 @@ class CalendarTest extends TestCase {
'principal' => $hasOwnerSet ? 'user1' : 'user2',
'protected' => true
]];
+ if ($uri === BirthdayService::BIRTHDAY_CALENDAR_URI) {
+ $expectedAcl = [[
+ 'privilege' => '{DAV:}read',
+ 'principal' => $hasOwnerSet ? 'user1' : 'user2',
+ 'protected' => true
+ ]];
+ }
if ($hasOwnerSet) {
$expectedAcl[] = [
'privilege' => '{DAV:}read',
@@ -177,6 +185,7 @@ class CalendarTest extends TestCase {
'read-only property not set and no owner' => [true, null, false],
'read-only property is false and no owner' => [true, false, false],
'read-only property is true and no owner' => [false, true, false],
+ 'birthday calendar' => [false, false, false, BirthdayService::BIRTHDAY_CALENDAR_URI]
];
}
}
diff --git a/apps/dav/tests/unit/connector/publicauth.php b/apps/dav/tests/unit/connector/publicauth.php
index 5f46651d372..76a6e1ac6a1 100644
--- a/apps/dav/tests/unit/connector/publicauth.php
+++ b/apps/dav/tests/unit/connector/publicauth.php
@@ -7,6 +7,13 @@ use OCP\ISession;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
+/**
+ * Class PublicAuth
+ *
+ * @group DB
+ *
+ * @package OCA\DAV\Tests\Unit\Connector
+ */
class PublicAuth extends \Test\TestCase {
/** @var ISession|\PHPUnit_Framework_MockObject_MockObject */
diff --git a/apps/files_trashbin/lib/backgroundjob/expiretrash.php b/apps/files_trashbin/lib/backgroundjob/expiretrash.php
index 4ee0658840b..8a4e2d41fec 100644
--- a/apps/files_trashbin/lib/backgroundjob/expiretrash.php
+++ b/apps/files_trashbin/lib/backgroundjob/expiretrash.php
@@ -23,6 +23,7 @@
namespace OCA\Files_Trashbin\BackgroundJob;
use OCP\IConfig;
+use OCP\IUser;
use OCP\IUserManager;
use OCA\Files_Trashbin\AppInfo\Application;
use OCA\Files_Trashbin\Expiration;
@@ -31,40 +32,28 @@ use OCA\Files_Trashbin\Trashbin;
class ExpireTrash extends \OC\BackgroundJob\TimedJob {
- const ITEMS_PER_SESSION = 1000;
-
/**
* @var Expiration
*/
private $expiration;
-
- /**
- * @var IConfig
- */
- private $config;
/**
* @var IUserManager
*/
private $userManager;
-
- const USERS_PER_SESSION = 1000;
/**
- * @param IConfig|null $config
* @param IUserManager|null $userManager
* @param Expiration|null $expiration
*/
- public function __construct(IConfig $config = null,
- IUserManager $userManager = null,
+ public function __construct(IUserManager $userManager = null,
Expiration $expiration = null) {
// Run once per 30 minutes
$this->setInterval(60 * 30);
- if (is_null($expiration) || is_null($userManager) || is_null($config)) {
+ if (is_null($expiration) || is_null($userManager)) {
$this->fixDIForJobs();
} else {
- $this->config = $config;
$this->userManager = $userManager;
$this->expiration = $expiration;
}
@@ -72,7 +61,6 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob {
protected function fixDIForJobs() {
$application = new Application();
- $this->config = \OC::$server->getConfig();
$this->userManager = \OC::$server->getUserManager();
$this->expiration = $application->getContainer()->query('Expiration');
}
@@ -86,26 +74,15 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob {
if (!$maxAge) {
return;
}
-
- $offset = $this->config->getAppValue('files_trashbin', 'cronjob_user_offset', 0);
- $users = $this->userManager->search('', self::USERS_PER_SESSION, $offset);
- if (!count($users)) {
- // No users found, reset offset and retry
- $offset = 0;
- $users = $this->userManager->search('', self::USERS_PER_SESSION);
- }
-
- $offset += self::USERS_PER_SESSION;
- $this->config->setAppValue('files_trashbin', 'cronjob_user_offset', $offset);
-
- foreach ($users as $user) {
+
+ $this->userManager->callForAllUsers(function(IUser $user) {
$uid = $user->getUID();
if (!$this->setupFS($uid)) {
- continue;
+ return;
}
$dirContent = Helper::getTrashFiles('/', $uid, 'mtime');
Trashbin::deleteExpiredFiles($dirContent, $uid);
- }
+ });
\OC_Util::tearDownFS();
}
@@ -115,20 +92,16 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob {
* @param string $user
* @return boolean
*/
- private function setupFS($user){
- if (!$this->userManager->userExists($user)) {
- return false;
- }
+ protected function setupFS($user) {
+ \OC_Util::tearDownFS();
+ \OC_Util::setupFS($user);
- //Check if this user has a trashbin directory
+ // Check if this user has a trashbin directory
$view = new \OC\Files\View('/' . $user);
- if (!$view->is_dir('/files_trashbin/files')){
+ if (!$view->is_dir('/files_trashbin/files')) {
return false;
}
- \OC_Util::tearDownFS();
- \OC_Util::setupFS($user);
-
return true;
}
}
diff --git a/apps/files_trashbin/tests/backgroundjob/expiretrash.php b/apps/files_trashbin/tests/backgroundjob/expiretrash.php
index 79fc91884fc..c98a555c929 100644
--- a/apps/files_trashbin/tests/backgroundjob/expiretrash.php
+++ b/apps/files_trashbin/tests/backgroundjob/expiretrash.php
@@ -26,7 +26,6 @@ use \OCA\Files_Trashbin\BackgroundJob\ExpireTrash;
class ExpireTrash_Test extends \Test\TestCase {
public function testConstructAndRun() {
$backgroundJob = new ExpireTrash(
- $this->getMock('OCP\IConfig'),
$this->getMock('OCP\IUserManager'),
$this->getMockBuilder('OCA\Files_Trashbin\Expiration')->disableOriginalConstructor()->getMock()
);
diff --git a/apps/files_versions/lib/backgroundjob/expireversions.php b/apps/files_versions/lib/backgroundjob/expireversions.php
index 5d8eef4e351..8e14e65b9a7 100644
--- a/apps/files_versions/lib/backgroundjob/expireversions.php
+++ b/apps/files_versions/lib/backgroundjob/expireversions.php
@@ -21,6 +21,7 @@
namespace OCA\Files_Versions\BackgroundJob;
+use OCP\IUser;
use OCP\IUserManager;
use OCA\Files_Versions\AppInfo\Application;
use OCA\Files_Versions\Storage;
@@ -64,20 +65,13 @@ class ExpireVersions extends \OC\BackgroundJob\TimedJob {
return;
}
- $users = $this->userManager->search('');
- $isFSready = false;
- foreach ($users as $user) {
+ $this->userManager->callForAllUsers(function(IUser $user) {
$uid = $user->getUID();
- if (!$isFSready) {
- if (!$this->setupFS($uid)) {
- continue;
- }
- $isFSready = true;
+ if (!$this->setupFS($uid)) {
+ return;
}
Storage::expireOlderThanMaxForUser($uid);
- }
-
- \OC_Util::tearDownFS();
+ });
}
/**
@@ -85,14 +79,16 @@ class ExpireVersions extends \OC\BackgroundJob\TimedJob {
* @param string $user
* @return boolean
*/
- private function setupFS($user){
- if (!$this->userManager->userExists($user)) {
- return false;
- }
-
+ protected function setupFS($user) {
\OC_Util::tearDownFS();
\OC_Util::setupFS($user);
+ // Check if this user has a versions directory
+ $view = new \OC\Files\View('/' . $user);
+ if (!$view->is_dir('/files_versions')) {
+ return false;
+ }
+
return true;
}
}
diff --git a/cron.php b/cron.php
index f0dde4fea7f..c4bc9e9667c 100644
--- a/cron.php
+++ b/cron.php
@@ -131,6 +131,10 @@ try {
// Work
$jobList = \OC::$server->getJobList();
+ // We only ask for jobs for 14 minutes, because after 15 minutes the next
+ // system cron task should spawn.
+ $endTime = time() + 14 * 60;
+
$executedJobs = [];
while ($job = $jobList->getNext()) {
if (isset($executedJobs[$job->getId()])) {
@@ -144,6 +148,10 @@ try {
$jobList->setLastJob($job);
$executedJobs[$job->getId()] = true;
unset($job);
+
+ if (time() > $endTime) {
+ break;
+ }
}
// unlock the file