mirror of
https://github.com/nextcloud/server.git
synced 2026-02-11 23:04:22 -05:00
External storage with session credentials is not accessible without a user session, hence background jobs and CLI commands can't work with them. The previously unhandled exception causes logged errors in the nextcloud log. This patch catches the specific exception and logs it as warnings. So for a production instance the error won't spam their logs for this non-recoverable and technically unsolvable error if the minimum log level is set to the default of 3 (error). Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
80 lines
2 KiB
PHP
80 lines
2 KiB
PHP
<?php
|
|
/**
|
|
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
|
*
|
|
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
|
* @author Joas Schilling <coding@schilljs.com>
|
|
* @author Robin Appelman <robin@icewind.nl>
|
|
* @author Vincent Petry <pvince81@owncloud.com>
|
|
*
|
|
* @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 OCA\Files_Versions\Command;
|
|
|
|
use OC\Command\FileAccess;
|
|
use OCA\Files_Versions\Storage;
|
|
use OCP\Command\ICommand;
|
|
use OCP\Files\StorageNotAvailableException;
|
|
use OCP\ILogger;
|
|
|
|
class Expire implements ICommand {
|
|
use FileAccess;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $fileName;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $user;
|
|
|
|
/**
|
|
* @param string $user
|
|
* @param string $fileName
|
|
*/
|
|
public function __construct($user, $fileName) {
|
|
$this->user = $user;
|
|
$this->fileName = $fileName;
|
|
}
|
|
|
|
|
|
public function handle() {
|
|
$userManager = \OC::$server->getUserManager();
|
|
if (!$userManager->userExists($this->user)) {
|
|
// User has been deleted already
|
|
return;
|
|
}
|
|
|
|
try {
|
|
Storage::expire($this->fileName, $this->user);
|
|
} catch (StorageNotAvailableException $e) {
|
|
// In case of external storage and session credentials, the expiration
|
|
// fails because the command does not have those credentials
|
|
|
|
/** @var ILogger $logger */
|
|
$logger = \OC::$server->query(ILogger::class);
|
|
|
|
$logger->logException($e, [
|
|
'level' => ILogger::WARN,
|
|
'uid' => $this->user,
|
|
'fileName' => $this->fileName,
|
|
]);
|
|
}
|
|
}
|
|
}
|