# fluent-booking/2.2.0/vendor/wpfluent/caldav/src/Clients/NextCloud.php

Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution, version 2.2.0. 74 lines.

- Page: https://pluginprobe.com/plugins/fluent-booking/2.2.0/code/vendor/wpfluent/caldav/src/Clients/NextCloud.php
- Raw: https://pluginprobe.com/plugins/fluent-booking/2.2.0/raw/vendor/wpfluent/caldav/src/Clients/NextCloud.php
- Modified: 2024-07-16T14:25:14+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluent-booking/2.2.0/code/vendor/wpfluent/caldav/src/Clients/NextCloud.php#L10-L20`.

```php
<?php

namespace FluentBooking\Package\CalDav\Clients;

use Exception;
use FluentBooking\Package\CalDav\ICal\XmlParser;
use FluentBooking\Package\CalDav\Entities\Calendar;

class NextCloud extends Client
{
	public function  getCalendars()
    {
        $url = $this->makeUrl("calendars/{$this->username}");

        return parent::getCalendarsInfo($url);
    }

    public function getCalendar($calendarName)
    {
    	$url = $this->buildUrlFrom($calendarName);

        return parent::getCalendarInfo($url);
    }

	public function getEvents($calendarName, $dateRange = [])
	{
		$url = $this->buildUrlFrom($calendarName);

		return parent::getEventsFrom($url, $dateRange);
	}

	public function getEvent($uid)
	{
		$url = $this->buildUrlFrom($uid);

		return parent::getEventFrom($url);
	}

	public function addEvent($calendarName, $payload)
	{
		$url = $this->buildUrlFrom($calendarName);

        return parent::addEventTo($url, $payload);
	}

	public function deleteEvent($url)
    {
        $url = $this->buildUrlFrom($url);

        return parent::deleteEvent($url);
    }

	protected function getAuthCredential()
	{
		return 'Basic ' . base64_encode(
            $this->username . ':' . $this->password
        );
	}

	protected function buildUrlFrom($calendarName)
	{
		if (str_contains($calendarName, 'remote.php/dav/calendars')) {
			$calendarName = str_replace('remote.php/dav/', '', $calendarName);
			$url = $this->makeUrl($calendarName);
		} else {
			$url = $this->makeUrl(
				"calendars/{$this->username}/{$calendarName}"
			);
		}

		return $url;
	}
}

```
