HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/files.wb-cloud.nl/private_html/lib/public/Calendar/CalendarImportOptions.php
<?php

declare(strict_types=1);
/**
 * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */
namespace OCP\Calendar;

use InvalidArgumentException;

/**
 * Calendar Import Options
 *
 * @since 32.0.0
 */
final class CalendarImportOptions {

	public const FORMATS = ['ical', 'jcal', 'xcal'];

	public const VALIDATE_NONE = 0;
	public const VALIDATE_SKIP = 1;
	public const VALIDATE_FAIL = 2;
	public const VALIDATE_OPTIONS = [
		self::VALIDATE_NONE,
		self::VALIDATE_SKIP,
		self::VALIDATE_FAIL,
	];
	public const ERROR_CONTINUE = 0;
	public const ERROR_FAIL = 1;
	public const ERROR_OPTIONS = [
		self::ERROR_CONTINUE,
		self::ERROR_FAIL,
	];

	/** @var 'ical'|'jcal'|'xcal' */
	private string $format = 'ical';
	private bool $supersede = false;
	private int $errors = self::ERROR_FAIL;
	private int $validate = self::VALIDATE_SKIP;

	/**
	 * Gets the import format
	 *
	 * @return 'ical'|'jcal'|'xcal' (defaults to ical)
	 */
	public function getFormat(): string {
		return $this->format;
	}

	/**
	 * Sets the import format
	 *
	 * @param 'ical'|'jcal'|'xcal' $value
	 */
	public function setFormat(string $value): void {
		if (!in_array($value, self::FORMATS, true)) {
			throw new InvalidArgumentException('Format is not valid.');
		}
		$this->format = $value;
	}

	/**
	 * Gets whether to supersede existing objects
	 */
	public function getSupersede(): bool {
		return $this->supersede;
	}

	/**
	 * Sets whether to supersede existing objects
	 */
	public function setSupersede(bool $supersede): void {
		$this->supersede = $supersede;
	}

	/**
	 * Gets how to handle object errors
	 *
	 * @return int 0 - continue, 1 - fail
	 */
	public function getErrors(): int {
		return $this->errors;
	}

	/**
	 * Sets how to handle object errors
	 *
	 * @param int $value 0 - continue, 1 - fail
	 *
	 * @template $value of self::ERROR_*
	 */
	public function setErrors(int $value): void {
		if (!in_array($value, CalendarImportOptions::ERROR_OPTIONS, true)) {
			throw new InvalidArgumentException('Invalid errors option specified');
		}
		$this->errors = $value;
	}

	/**
	 * Gets how to handle object validation
	 *
	 * @return int 0 - no validation, 1 - validate and skip on issue, 2 - validate and fail on issue
	 */
	public function getValidate(): int {
		return $this->validate;
	}

	/**
	 * Sets how to handle object validation
	 *
	 * @param int $value 0 - no validation, 1 - validate and skip on issue, 2 - validate and fail on issue
	 *
	 * @template $value of self::VALIDATE_*
	 */
	public function setValidate(int $value): void {
		if (!in_array($value, CalendarImportOptions::VALIDATE_OPTIONS, true)) {
			throw new InvalidArgumentException('Invalid validation option specified');
		}
		$this->validate = $value;
	}

}