import { delimiter } from './regex.js' import { makeInstance } from '../../utils/adopter.js' import { globals } from '../../utils/window.js' let listenerId = 0 let windowEvents = {} function getEvents (instance) { let n = instance.getEventHolder() // We dont want to save events in global space if (n === globals.window) n = windowEvents if (!n.events) n.events = {} return n.events } function getEventTarget (instance) { return instance.getEventTarget() } function clearEvents (instance) { const n = instance.getEventHolder() if (n.events) n.events = {} } // Add event binder in the SVG namespace export function on (node, events, listener, binding, options) { var l = listener.bind(binding || node) var instance = makeInstance(node) var bag = getEvents(instance) var n = getEventTarget(instance) // events can be an array of events or a string of events events = Array.isArray(events) ? events : events.split(delimiter) // add id to listener if (!listener._svgjsListenerId) { listener._svgjsListenerId = ++listenerId } events.forEach(function (event) { var ev = event.split('.')[0] var ns = event.split('.')[1] || '*' // ensure valid object bag[ev] = bag[ev] || {} bag[ev][ns] = bag[ev][ns] || {} // reference listener bag[ev][ns][listener._svgjsListenerId] = l // add listener n.addEventListener(ev, l, options || false) }) } // Add event unbinder in the SVG namespace export function off (node, events, listener, options) { var instance = makeInstance(node) var bag = getEvents(instance) var n = getEventTarget(instance) // listener can be a function or a number if (typeof listener === 'function') { listener = listener._svgjsListenerId if (!listener) return } // events can be an array of events or a string or undefined events = Array.isArray(events) ? events : (events || '').split(delimiter) events.forEach(function (event) { var ev = event && event.split('.')[0] var ns = event && event.split('.')[1] var namespace, l if (listener) { // remove listener reference if (bag[ev] && bag[ev][ns || '*']) { // removeListener n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false) delete bag[ev][ns || '*'][listener] } } else if (ev && ns) { // remove all listeners for a namespaced event if (bag[ev] && bag[ev][ns]) { for (l in bag[ev][ns]) { off(n, [ ev, ns ].join('.'), l) } delete bag[ev][ns] } } else if (ns) { // remove all listeners for a specific namespace for (event in bag) { for (namespace in bag[event]) { if (ns === namespace) { off(n, [ event, ns ].join('.')) } } } } else if (ev) { // remove all listeners for the event if (bag[ev]) { for (namespace in bag[ev]) { off(n, [ ev, namespace ].join('.')) } delete bag[ev] } } else { // remove all listeners on a given node for (event in bag) { off(n, event) } clearEvents(instance) } }) } export function dispatch (node, event, data) { var n = getEventTarget(node) // Dispatch event if (event instanceof globals.window.Event) { n.dispatchEvent(event) } else { event = new globals.window.CustomEvent(event, { detail: data, cancelable: true }) n.dispatchEvent(event) } return event } option> Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/Files/ForbiddenException.php
blob: 514ef8623d3b786b66e599b1d4e7546471e68d67 (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
<?php

/**
 * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
 * SPDX-License-Identifier: AGPL-3.0-only
 */
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal Nextcloud classes

namespace OCP\Files;

/**
 * Class ForbiddenException
 *
 * @since 9.0.0
 */
class ForbiddenException extends \Exception {
	/** @var bool */
	private $retry;

	/**
	 * @param string $message
	 * @param bool $retry
	 * @param \Exception|null $previous previous exception for cascading
	 * @since 9.0.0
	 */
	public function __construct($message, $retry, ?\Exception $previous = null) {
		parent::__construct($message, 0, $previous);
		$this->retry = $retry;
	}

	/**
	 * @return bool
	 * @since 9.0.0
	 */
	public function getRetry() {
		return (bool)$this->retry;
	}
}