aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Notify/RenameChange.php
blob: e581278c504718c8e8228832a972fff491b954de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
 * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
 *
 * @author Robin Appelman <robin@icewind.nl>
 *
 * @license GNU AGPL version 3 or any later version
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * 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
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 */
namespace OC\Files\Notify;

use OCP\Files\Notify\IRenameChange;

class RenameChange extends Change implements IRenameChange {
	/** @var string */
	private $targetPath;

	/**
	 * Change constructor.
	 *
	 * @param int $type
	 * @param string $path
	 * @param string $targetPath
	 */
	public function __construct($type, $path, $targetPath) {
		parent::__construct($type, $path);
		$this->targetPath = $targetPath;
	}

	/**
	 * Get the new path of the renamed file relative to the storage root
	 *
	 * @return string
	 */
	public function getTargetPath() {
		return $this->targetPath;
	}
}
Exception */ public function getEntries(IUser $user, ?string $filter): array { $maxAutocompleteResults = max(0, $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)); $minSearchStringLength = $this->config->getSystemValueInt('sharing.minSearchStringLength'); $topEntries = []; if (strlen($filter ?? '') >= $minSearchStringLength) { $entries = $this->store->getContacts($user, $filter, $maxAutocompleteResults); $sortedEntries = $this->sortEntries($entries); $topEntries = array_slice($sortedEntries, 0, $maxAutocompleteResults); $this->processEntries($topEntries, $user); } $contactsEnabled = $this->appManager->isEnabledForUser('contacts', $user); return [ 'contacts' => $topEntries, 'contactsAppEnabled' => $contactsEnabled, ]; } /** * @throws Exception */ public function findOne(IUser $user, int $shareType, string $shareWith): ?IEntry { $entry = $this->store->findOne($user, $shareType, $shareWith); if ($entry) { $this->processEntries([$entry], $user); } return $entry; } /** * @param IEntry[] $entries * @return IEntry[] */ private function sortEntries(array $entries): array { usort($entries, function (Entry $entryA, Entry $entryB) { $aStatusTimestamp = $entryA->getProperty(Entry::PROPERTY_STATUS_MESSAGE_TIMESTAMP); $bStatusTimestamp = $entryB->getProperty(Entry::PROPERTY_STATUS_MESSAGE_TIMESTAMP); if (!$aStatusTimestamp && !$bStatusTimestamp) { return strcasecmp($entryA->getFullName(), $entryB->getFullName()); } if ($aStatusTimestamp === null) { return 1; } if ($bStatusTimestamp === null) { return -1; } return $bStatusTimestamp - $aStatusTimestamp; }); return $entries; } /** * @param IEntry[] $entries * @throws Exception */ private function processEntries(array $entries, IUser $user): void { $providers = $this->actionProviderStore->getProviders($user); foreach ($providers as $provider) { if ($provider instanceof IBulkProvider && !($provider instanceof IProvider)) { $provider->process($entries); } elseif ($provider instanceof IProvider && !($provider instanceof IBulkProvider)) { foreach ($entries as $entry) { $provider->process($entry); } } } } }