Merge pull request #12350 from mprokop/link_expiration

fix calculation of expiration date if there is a default expiration date...
remotes/origin/fix-10825
Morris Jobke 10 years ago
commit 60e4aa120f
  1. 9
      lib/private/share/helper.php
  2. 6
      tests/lib/share/helper.php

@ -189,20 +189,23 @@ class Helper extends \OC\Share\Constants {
public static function calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate = null) {
$expires = false;
$defaultExpires = null;
if (!empty($defaultExpireSettings['defaultExpireDateSet'])) {
$expires = $creationTime + $defaultExpireSettings['expireAfterDays'] * 86400;
$defaultExpires = $creationTime + $defaultExpireSettings['expireAfterDays'] * 86400;
}
if (isset($userExpireDate)) {
// if the admin decided to enforce the default expire date then we only take
// the user defined expire date of it is before the default expire date
if ($expires && !empty($defaultExpireSettings['enforceExpireDate'])) {
$expires = min($userExpireDate, $expires);
if ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) {
$expires = min($userExpireDate, $defaultExpires);
} else {
$expires = $userExpireDate;
}
} else if ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) {
$expires = $defaultExpires;
}
return $expires;

@ -27,8 +27,8 @@ class Test_Share_Helper extends \Test\TestCase {
array(array('defaultExpireDateSet' => false), 2000000000, 2000010000, 2000010000),
// no default expire date and no user defined expire date, return false
array(array('defaultExpireDateSet' => false), 2000000000, null, false),
// unenforced expire data and no user defined expire date, take default expire date
array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, null, 2000086400),
// unenforced expire data and no user defined expire date, return false (because the default is not enforced)
array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, null, false),
// enforced expire date and no user defined expire date, take default expire date
array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true), 2000000000, null, 2000086400),
// unenforced expire date and user defined date > default expire date, take users expire date
@ -49,6 +49,4 @@ class Test_Share_Helper extends \Test\TestCase {
$result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate);
$this->assertSame($expected, $result);
}
}

Loading…
Cancel
Save