diff --git a/docs/00_intro.md b/docs/00_intro.md new file mode 100644 index 0000000..5b5eda7 --- /dev/null +++ b/docs/00_intro.md @@ -0,0 +1,96 @@ +# Veranstaltungskalender, Terminbuchung, Terminanfragen, Anmeldungen und Teilnehmerlisten für REDAXO 5 auf YForm-Basis + +![web_banner_redaxo_addon_events](https://user-images.githubusercontent.com/3855487/204768716-fa9f5a97-c1de-421a-aea0-2a0ce8658813.png) + +Mit diesem Addon können Termine anhand von YForm und YOrm im Backend verwaltet und im Frontend ausgegeben werden. Auf Wunsch auch mehrsprachig. + +**Beispiele** + +![event](https://user-images.githubusercontent.com/3855487/180771758-d4a2e4ba-3034-4e96-8e1d-4cc5333de615.png) + +![event_date](https://user-images.githubusercontent.com/3855487/180771781-0f2cc875-3561-47e2-a3bb-50752177afa3.png) + +![event_settings](https://user-images.githubusercontent.com/3855487/180771783-1973c380-79af-42d6-9b14-babcc4378b3c.png) + +![event_category](https://user-images.githubusercontent.com/3855487/180771784-2baad1bb-052e-4dbf-aa64-ef93e1892875.png) + +## Features + +* Vollständig mit **YForm** umgesetzt: Alle Features und Anpassungsmöglichkeiten von YForm verfügbar +* Einfach: Die Ausgabe erfolgt über [`rex_sql`](https://redaxo.org/doku/master/datenbank-queries) oder objektorientiert über [YOrm](https://github.com/yakamara/redaxo_yform_docs/blob/master/de_de/yorm.md) +* Flexibel: **Zugriff** über die [YForm Rest-API](https://github.com/yakamara/redaxo_yform/blob/master/docs/plugins.md#restful-api-einf%C3%BChrung) +* Sinnvoll: Nur ausgewählte **Rollen**/Redakteure haben Zugriff +* Bereit für **mehrsprachige** Websites: Reiter für Sprachen auf Wunsch anzeigen oder ausblenden +* Bereit für mehr: Vorbereitet für das [JSON+LD-Format](https://jsonld.com/event/), ICS-Format +* Bereit für viel mehr: Kompatibel zum [URL2-Addon](https://github.com/tbaddade/redaxo_url) +* Mächtig: Datenbank-Struktur für **Anmeldeformulare** und einfache Teilnehmerlisten vorbereitet + +> **Tipp:** Events arbeitet hervorragend zusammen mit den Addons [`yform_usability`](https://github.com/FriendsOfREDAXO/yform_usability/) und [`yform_geo_osm`](https://github.com/FriendsOfREDAXO/yform_geo_osm) + +> **Steuere eigene Verbesserungen** dem [GitHub-Repository von events](https://github.com/alexplusde/events) bei. Oder **unterstütze dieses Addon:** Mit einer [Spende oder Beauftragung unterstützt du die Weiterentwicklung dieses AddOns](https://github.com/sponsors/alexplusde) + +## RESTful API (dev) + +Die [Rest-API](https://github.com/yakamara/redaxo_yform/blob/master/docs/plugins.md#restful-api-einf%C3%BChrung) ist über das REST-Plugin von YForm umgesetzt. + +### Einrichtung + +Zunächst das REST-Plugin von YForm installieren und einen Token einrichten. Den Token auf die jeweiligen Endpunkte legen: + +```php + /v2.0/event/date + /v2.0/event/category + /v2.0/event/location +``` + +### Endpunkt `date` + +**Auslesen:** GET `example.org/rest/v2.0/event/date/?token=###TOKEN###` + +**Auslesen einzelner Termin** GET `example.org/rest/v0.dev/event/date/7/?token=###TOKEN###` Termin der `id=7` + +### Endpunkt `category` + +**Auslesen:** GET `example.org/rest/v2.0/event/category/?token=###TOKEN###` + +**Auslesen einzelne Kategorie** GET `example.org/rest/v0.dev/event/category/7/?token=###TOKEN###` Termin der `id=7` + +### Endpunkt `location` + +**Auslesen:** GET `example.org/rest/v2.0/event/location/?token=###TOKEN###` + +**Auslesen einzelner Standort** GET `example.org/rest/v0.dev/event/location/7/?token=###TOKEN###` Termin der `id=7` + +## Import + +### Import von ICS-Kalendern (dev) + +Events kommt mit einem eigenen Cronjob zum importieren von ics-Kalendern aus dem Internet. Das Cronjob-Addon aufrufen, einen neuen Cronjob anlegen und den Instruktionen folgen. + +## Export + +## Export eines einzelnen Termins als ics-Datei (dev) + +Events kommt mit einer eigenen rex_api-Schnittstelle für den Export von einzelnen Terminen. `?rex-api-call=events_ics_file&id=2` aufrufen, um eine ICS-Datei anhand des Termins mit der `id=2` zu erzeugen. + +## Lizenz + +MIT Lizenz, siehe [LICENSE.md](https://github.com/alexplusde/events/blob/master/LICENSE.md) + +## Autoren + +**Alexander Walther** + + + +**Michael Schuler** + + +**Projekt-Lead** +[Alexander Walther](https://github.com/alexplusde) + +## Credits + +events basiert auf: [YForm](https://github.com/yakamara/redaxo_yform) +Danke an [Gregor Harlan](https://github.com/gharlan) für die Unterstützung +Danke an den Kulturkeller e.V. für die Beauftragung für die Weiterentwicklung diff --git a/docs/00_settings.md b/docs/00_settings.md new file mode 100644 index 0000000..193ff0c --- /dev/null +++ b/docs/00_settings.md @@ -0,0 +1,25 @@ +# Einstellungen der Events Addon + +## Währung + +Einstellung für die Währung, die in den Events verwendet wird. + +## Register Name + +Einstellung für den Namen, der in den Registrierungsformularen angezeigt wird. + +## Timezone API Code + +Einstellung für den API-Code, der für die Zeitzone verwendet wird. Weitere Informationen finden Sie unter [Google Maps Timezone API](https://developers.google.com/maps/documentation/timezone/intro?hl=de). + +## Default Organizer Name + +Einstellung für den Namen des Standardorganisators, der für die Events verwendet wird. + +## Editor + +Einstellung für den Editor, der für die Bearbeitung der Events verwendet wird. + +## Empty Message + +Einstellung für die Nachricht, die angezeigt wird, wenn keine Termine vorhanden sind. diff --git a/docs/01_event_date.md b/docs/01_event_date.md new file mode 100644 index 0000000..cf11b82 --- /dev/null +++ b/docs/01_event_date.md @@ -0,0 +1,34 @@ + +# Die Klasse `event_date` + +Typ `rex_yform_manager_dataset`. Greift auf die Tabelle `rex_event_date` zu. + +## Beispiel-Ausgabe eines Termins + +```php +dump(event_date::get(3)); // Termin mit der id=3 +``` + +## Zusätzliche Methoden + +| Methode | Beschreibung | +|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------| +| `getName()` | Titel der Veranstaltung | +| `getDescription()` | Beschreibungstext | +| `getTeaser()` | Unformatierter Teaser-Text | +| `getCategory()` | holt die passende Kategorie als `event_category`-Dataset. | +| `getLocation()` | holt den passenden Veranstaltungsort als `event_location`-Dataset. | +| `getOfferAll()` | holt die passenden Angebote / Preise als `event_offer`-Dataset | +| `getImage()` | gibt den Bild-Dateinamen aus dem Medienpool zurück | +| `getMedia()` | gibt ein REDAXO-Medienobjekt des Bildes zurück | +| `getIcs()` | gibt eine ICS-Datei zur Veranstaltung zurück | +| `getDescriptionAsPlaintext()` | gibt die Veranstaltungsbeschreibung als Plaintext zurück | +| `getIcsStatus()` | gibt den Status zurück, wie er im ICS-Format erwartet wird. | +| `getUid()` | gibt eine UID zurück, wie sie im ICS-Format erwartet wird. Wenn es die UID noch nicht gibt, wird sie automatisch erzeugt. | +| `getJsonLd()` | gibt den JSON-LD-Code zur Veranstaltung zurück | +| `getStartDate()` | gibt ein DateTime-Objekt zurück mit dem korrekten Startdatum in Abhängigkeit von den gewählten Optionen (ganztägig) | +| `getEndDate()` | gibt ein DateTime-Objekt zurück mit dem korrekten Enddatum, sofern vorhanden, in Abhängigkeit von den gewählten Optionen (ganztägig) | + +```php +dump(event_date::get(3)->getCategory()); // Kategorie des Termins mit der id=3 +``` diff --git a/docs/02_event_category.md b/docs/02_event_category.md new file mode 100644 index 0000000..e7ed050 --- /dev/null +++ b/docs/02_event_category.md @@ -0,0 +1,91 @@ +# Klasse event_category + +Die `event_category` Klasse repräsentiert eine Kategorie eines Events. Diese Klasse erweitert die +`rex_yform_manager_dataset` Klasse und bietet spezifische Funktionen und Eigenschaften, die für die Verwaltung von +Event-Kategorien notwendig sind. + +```php +$eventCategory = new event_category(); +``` + +## Methoden + +### getName() + +Gibt den Namen der Kategorie zurück. + +```php +$name = $eventCategory->getName(); +``` + +### getImage() + +Gibt das Bild der Kategorie zurück. + +```php +$image = $eventCategory->getImage(); +``` + +### getMedia() + +Gibt das rex_media Objekt des Bildes zurück. + +```php +$media = $eventCategory->getMedia(); +``` + +### getIcon() + +Gibt das Icon der Kategorie zurück. + +```php +$icon = $eventCategory->getIcon(); +``` + +### getPrice() + +Gibt den Preis der Kategorie zurück. + +```php +$price = $eventCategory->getPrice(); +``` + +### getUrl() + +Gibt die URL der Kategorie zurück. + +```php +$url = $eventCategory->getUrl(); +``` + +### getDateWhere($whereRaw) + +Gibt eine Sammlung von Event-Daten zurück, die auf einem bestimmten Kriterium basieren. + +```php +$dates = $eventCategory->getDateWhere('startDate > NOW()'); +``` + +### getRelatedDates($whereRaw) + +Gibt eine Sammlung von verwandten Event-Daten zurück. + +```php +$relatedDates = $eventCategory->getRelatedDates('startDate > NOW()'); +``` + +### getAttributes() + +Gibt ein Array von Attributen zurück. + +```php +$attributes = $eventCategory->getAttributes(); +``` + +### hasAttribute($needle) + +Überprüft, ob ein bestimmtes Attribut vorhanden ist. + +```php +$hasAttribute = $eventCategory->hasAttribute('attributeName'); +``` diff --git a/docs/03_event_location.md b/docs/03_event_location.md new file mode 100644 index 0000000..b5bb0da --- /dev/null +++ b/docs/03_event_location.md @@ -0,0 +1,84 @@ +# Dokumentation der `event_location` Klasse + +Die `event_location` Klasse repräsentiert einen Veranstaltungsort. Sie erbt von der `rex_yform_manager_dataset` Klasse und bietet zusätzliche Methoden zur Interaktion mit den Veranstaltungsorten. + +```php +// Erstellt einen neuen Veranstaltungsort +$location = new event_location(); +$location->setValue('name', 'Konzerthalle'); +$location->save(); +``` + +## Methoden + +### `getFormattedAddress()` + +Gibt die formatierte Adresse zurück. + +```php +$formattedAddress = $location->getFormattedAddress(); +``` + +### `getName()` + +Gibt den Namen des Veranstaltungsorts zurück. + +```php +$name = $location->getName(); +``` + +### `getZip()` + +Gibt die Postleitzahl des Veranstaltungsorts zurück. + +```php +$zip = $location->getZip(); +``` + +### `getLocality()` + +Gibt die Ortschaft des Veranstaltungsorts zurück. + +```php +$locality = $location->getLocality(); +``` + +### `getCity()` + +Gibt die Stadt des Veranstaltungsorts zurück. + +```php +$city = $location->getCity(); +``` + +### `getCountryCode()` + +Gibt den Ländercode des Veranstaltungsorts zurück. + +```php +$countryCode = $location->getCountryCode(); +``` + +### `getLatLng()` + +Gibt die geographischen Koordinaten des Veranstaltungsorts zurück. + +```php +$latLng = $location->getLatLng(); +``` + +### `getLat()` + +Gibt den Breitengrad des Veranstaltungsorts zurück. + +```php +$lat = $location->getLat(); +``` + +### `getLng()` + +Gibt den Längengrad des Veranstaltungsorts zurück. + +```php +$lng = $location->getLng(); +``` diff --git a/docs/04_event_date_offer.md b/docs/04_event_date_offer.md new file mode 100644 index 0000000..7c92603 --- /dev/null +++ b/docs/04_event_date_offer.md @@ -0,0 +1,62 @@ +# Dokumentation der `event_date_offer` Klasse + +Die `event_date_offer` Klasse repräsentiert ein Angebot für ein bestimmtes Event-Datum. Sie erbt von der `rex_yform_manager_dataset` Klasse und bietet zusätzliche Methoden zur Interaktion mit den Angeboten eines Event-Datums. + +```php +// Erstellt ein neues Angebot für ein Event-Datum +$offer = new event_date_offer(); +$offer->setValue('event_date_id', $eventDateId); +$offer->setValue('price', $price); +$offer->setValue('avaialabiility', $price); +$offer->save(); +``` + +## Methoden + +### `getUrl()` + +Gibt die URL des Angebots zurück. + +```php +$url = $offer->getUrl(); +``` + +### `getStatus()` + +Gibt den Status des Angebots zurück. + +```php +$status = $offer->getStatus(); +``` + +### `getPrice()` + +Gibt den Preis des Angebots zurück. + +```php +$price = $offer->getPrice(); +``` + +### `getCurrency()` + +Gibt die Währung des Angebots zurück. + +```php +$currency = $offer->getCurrency(); +``` + +### `getPriceFormatted()` + +Gibt den formatierten Preis des Angebots zurück. + +```php +$priceFormatted = $offer->getPriceFormatted(); +``` + +### `getAvailability()` + +Gibt die Verfügbarkeit des Angebots als schema.org kompatiblen Wert zurück. + +```php +$availability = $offer->getAvailability(); +``` diff --git a/docs/05_event_date_registration.md b/docs/05_event_date_registration.md new file mode 100644 index 0000000..c5df8d6 --- /dev/null +++ b/docs/05_event_date_registration.md @@ -0,0 +1,153 @@ +# event_registration Klasse + +## Methoden + +### getPhone + +Gibt die Telefonnummer der Registrierung zurück. + +Beispiel: + +```php +$phone = $eventRegistration->getPhone(); +``` + +### getBirthday + +Gibt das Geburtsdatum der Registrierung zurück. + +Beispiel: + +```php +$birthday = $eventRegistration->getBirthday(); +``` + +### getBirthdayFormatted + +Gibt das formatierte Geburtsdatum der Registrierung zurück. + +Beispiel: + +```php +$formattedBirthday = $eventRegistration->getBirthdayFormatted("d.m.Y"); +``` + +### getPayment + +Gibt die Zahlungsart der Registrierung zurück. + +Beispiel: + +```php +$payment = $eventRegistration->getPayment(); +``` + +### getMessage + +Gibt die Nachricht der Registrierung zurück. + +Beispiel: + +```php +$message = $eventRegistration->getMessage(); +``` + +### getChannel + +Gibt den Kanal der Registrierung zurück. + +Beispiel: + +```php +$channel = $eventRegistration->getChannel(); +``` + +### getStatus + +Gibt den Status der Registrierung zurück. + +Beispiel: + +```php +$status = $eventRegistration->getStatus(); +``` + +### getPrice + +Gibt den Preis der Registrierung zurück. + +Beispiel: + +```php +$price = $eventRegistration->getPrice(); +``` + +### getUuid + +Gibt die UUID der Registrierung zurück. + +Beispiel: + +```php +$uuid = $eventRegistration->getUuid(); +``` + +### hasAcceptedNewsletter + +Gibt zurück, ob die Registrierung den Newsletter akzeptiert hat. + +Beispiel: + +```php +$hasAcceptedNewsletter = $eventRegistration->hasAcceptedNewsletter(); +``` + +### hasAcceptedAgb + +Gibt zurück, ob die Registrierung die AGB akzeptiert hat. + +Beispiel: + +```php +$hasAcceptedAgb = $eventRegistration->hasAcceptedAgb(); +``` + +### hasAcceptedPrivacyPolicy + +Gibt zurück, ob die Registrierung die Datenschutzrichtlinie akzeptiert hat. + +Beispiel: + +```php +$hasAcceptedPrivacyPolicy = $eventRegistration->hasAcceptedPrivacyPolicy(); +``` + +### getByUuid + +Gibt die Registrierung mit der gegebenen UUID zurück. + +Beispiel: + +```php +$registration = event_registration::getByUuid($uuid); +``` + +### getHash + +Gibt den Hash der Registrierung zurück. + +Beispiel: + +```php +$hash = $eventRegistration->getHash(); +``` + +### getByHash + +Gibt die Registrierung mit dem gegebenen Hash zurück. + +Beispiel: + +```php +$registration = event_registration::getByHash($hash); +``` diff --git a/docs/06_event_date_registration_person.md b/docs/06_event_date_registration_person.md new file mode 100644 index 0000000..a56e1ef --- /dev/null +++ b/docs/06_event_date_registration_person.md @@ -0,0 +1,185 @@ +# event_registration_person + +Die `event_registration_person` Klasse repräsentiert eine Person, die sich für ein Event registriert hat. + +Sie erbt von der `rex_yform_manager_dataset` Klasse. + +Beispiel: + +```php +$person = new event_registration_person(); +$person->setName("Max Mustermann"); +$person->save(); +``` + +## Methoden + +### getName + +Gibt den Namen der registrierten Person zurück. + +Beispiel: + +```php +$name = $eventRegistrationPerson->getName(); +``` + +### getFirstName + +Gibt den Vornamen der registrierten Person zurück. + +Beispiel: + +```php +$firstName = $eventRegistrationPerson->getFirstName(); +``` + +### getLastName + +Gibt den Nachnamen der registrierten Person zurück. + +Beispiel: + +```php +$lastName = $eventRegistrationPerson->getLastName(); +``` + +### getMail + +Gibt die E-Mail-Adresse der registrierten Person zurück. + +Beispiel: + +```php +$mail = $eventRegistrationPerson->getMail(); +``` + +### getPhone + +Gibt die Telefonnummer der registrierten Person zurück. + +Beispiel: + +```php +$phone = $eventRegistrationPerson->getPhone(); +``` + +### getBirthday + +Gibt das Geburtsdatum der registrierten Person zurück. + +Beispiel: + +```php +$birthday = $eventRegistrationPerson->getBirthday(); +``` + +### getBirthdayFormatted + +Gibt das formatierte Geburtsdatum der registrierten Person zurück. + +Beispiel: + +```php +$formattedBirthday = $eventRegistrationPerson->getBirthdayFormatted("d.m.Y"); +``` + +### getStatus + +Gibt den Status der registrierten Person zurück. + +Beispiel: + +```php +$status = $eventRegistrationPerson->getStatus(); +``` + +### getEventDateId + +Gibt die ID des Event-Datums zurück, für das sich die Person registriert hat. + +Beispiel: + +```php +$eventDateId = $eventRegistrationPerson->getEventDateId(); +``` + +### getEventDate + +Gibt das Event-Datum zurück, für das sich die Person registriert hat. + +Beispiel: + +```php +$eventDate = $eventRegistrationPerson->getEventDate(); +``` + +### getRegistrationId + +Gibt die ID der Registrierung zurück. + +Beispiel: + +```php +$registrationId = $eventRegistrationPerson->getRegistrationId(); +``` + +### getRegistration + +Gibt die Registrierung zurück, für die die Person registriert ist. + +Beispiel: + +```php +$registration = $eventRegistrationPerson->getRegistration(); +``` + +### getCategoryId + +Gibt die ID der Kategorie zurück, für die die Person registriert ist. + +Beispiel: + +```php +$categoryId = $eventRegistrationPerson->getCategoryId(); +``` + +### getHash + +Gibt den Hash der registrierten Person zurück. + +Beispiel: + +```php +$hash = $eventRegistrationPerson->getHash(); +``` + +### getByUuid + +Gibt die registrierte Person zurück, die der angegebenen UUID entspricht. + +Beispiel: + +```php +$person = event_registration_person::getByUuid("123e4567-e89b-12d3-a456-426614174000"); +``` + +### getByHash + +Gibt die registrierte Person zurück, die dem angegebenen Hash entspricht. + +Beispiel: + +```php +$person = event_registration_person::getByHash("123abc456def"); +``` + +### ep_saved + +Wird aufgerufen, wenn ein Datensatz gespeichert wird. + +Beispiel: + +```php +$result = event_registration_person::ep_saved($ep); +``` diff --git a/docs/07_cronjobs.md b/docs/07_cronjobs.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/08_ics.md b/docs/08_ics.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/09_yform_action_event_date_registration_person_fill.md b/docs/09_yform_action_event_date_registration_person_fill.md new file mode 100644 index 0000000..62150f2 --- /dev/null +++ b/docs/09_yform_action_event_date_registration_person_fill.md @@ -0,0 +1,22 @@ +# YForm Action `event_date_registration_person_fill` + +Die Klasse `rex_yform_action_event_date_registration_person_fill` erweitert YForm um eine Aktion, +die es erleichtert, Teilnehmerlisten und Anmeldungen mit mehreren Personen zu erfassen, +wenn eine Registrierung mehr als eine Person beinhaltet. + +Sie erbt von der `rex_yform_action_abstract` Klasse und bietet zusätzliche Methoden +zur Interaktion mit den Anmeldungen eines Event-Datums. + +Als Wert, wie häufig eine Anmeldung ausgeführt werden soll, wird die Anzahl der Personen im Feld `person_count` erwartet. + +## Pipe-Schreibweise + +```text +action|event_date_registration_person_fill +``` + +## PHP-Schreibweise + +```php +$yform->setActionField('event_date_registration_person_fill', []); +``` diff --git a/docs/10_forcal_migration.md b/docs/10_forcal_migration.md new file mode 100644 index 0000000..33d3e54 --- /dev/null +++ b/docs/10_forcal_migration.md @@ -0,0 +1,75 @@ + +# Migration von REDAXO Forcal (ehem. Sked) + +Folgende SQL-Befehle (Quick & Dirty umgesetzt) dürften helfen bei der Übertragung der Daten: + +```sql +INSERT INTO rex_event_date +SELECT +id AS id, +name_1 AS name, +teaser_1 AS teaser, +text_1 AS description, +lang_1 AS lang_id, +category AS event_category_id, +start_date AS startDate, +start_time AS startTime, +full_time AS all_day, +start_time AS doorTime, +end_time AS endTime, +venue AS location, +end_date AS endDate, +id as space, +image AS image_poster, +image AS images, +id as url, +id as video_url, +status AS eventStatus, +uid AS uid, +updateuser AS updateuser, +createuser AS createuser, +updatedate AS updatedate, +createdate AS createdate, +id AS startDateTime +FROM rex_sked_entries +``` + +```sql +INSERT INTO rex_event_category +SELECT +id as id, +id as prio, +name_1 as name, +color as icon, +name_1 as teaser, +description_1 as description, +status as images, +status as status, +updateuser AS updateuser, +createuser AS createuser +FROM rex_sked_categories +``` + +```sql +INSERT INTO rex_event_location +SELECT +id as id, +id as google_places, +id as location_category_id, +name_1 as name, +street as street, +zip as zip, +city as locality, +country as countrycode, +id as lat, +id as lng, +updateuser AS updateuser, +createuser AS createuser +FROM rex_sked_venues +``` + +```sql +update rex_event_date set space = 0, url = "", video_url = "", startDateTime = 0000-00-00; +update rex_event_category set images = ""; +update rex_event_location set google_places = "", location_category_id = "", lat = "", lng = ""; +``` diff --git a/docs/11_yform_table_manager.md b/docs/11_yform_table_manager.md new file mode 100644 index 0000000..e7aa89a --- /dev/null +++ b/docs/11_yform_table_manager.md @@ -0,0 +1,74 @@ + +# Tabellen und Datenbankstruktur + +## Die Tabelle "SPRACHEN" + +Die Tabelle "TERMINE" mit Flaggen-Symbol ist eine Tabelle, in der zunächst Sprachen verwaltet werden können und im Anschluss die eigentliche Termin-Tabelle gefiltert nach dieser Sprache angezeigt wird. + +Wer keine mehrsprachigen Termine benötigt, kann diesen Menüpunkt problemlos für Redakteure über die Benutzer-Rollen ausblenden. Wichtig ist jedoch, dass mind. eine Sprache angelegt wurde. + +## Die Tabelle "TERMINE" + +In der Termin-Tabelle werden einzelne Daten festgehalten. Nach der Installation von `events` stehen folgende Felder zur Verfügung: + +| Typ | Typname | Name | Bezeichnung | +|----------|---------------------|---------------------|-------------------| +| value | text | name | Name | +| validate | empty | name | | +| value | textarea | description | Beschreibung | +| value | be_manager_relation | event_category_id | Kategorie | +| value | be_manager_relation | location | Veranstaltungsort | +| value | be_media | image | Bild | +| value | text | url | URL | +| value | datetime | startDate | Beginn | +| validate | compare_value | startDate | | +| value | time | doorTime | Einlass | +| value | datetime | endDate | Ende | +| value | select | eventStatus | Status | +| value | text | offers_url | Tickets-URL | +| value | text | offers_price | Preis | +| validate | type | offers_price | | +| value | select | offers_availability | Verfügbarkeit | +| validate | type | url | | + +Die Felder und Feldnamen orientieren sich dabei am [JSON+LD-Standard für Veranstaltungen](https://jsonld.com/event/), die wichtigsten Validierungen wurden bereits eingefügt. + +## Die Tabelle "KATEGORIEN" + +Die Tabelle Kategorien kann frei verändert werden, um Termine zu gruppieren (bspw. Veranstaltungsreihen) oder zu Verschlagworten (als Tags). + +| Typ | Typname | Name | Bezeichnung | +|----------|---------------------|---------|-------------| +| value | text | name | Titel | +| validate | unique | name | | +| validate | empty | name | | +| value | be_media | image | Bildmotiv | +| value | choice | status | Status | +| value | be_manager_relation | date_id | Termine | + +## Die Tabelle "ANGEBOTE" + +Die Tabelle Angebote enthält optional Ticket-URL und Preise für Veranstaltungen. + +| Typ | Typname | Name | Bezeichnung | +|----------|---------------------|---------|---------------| +| value | text | name | Titel | +| value | text | price | Preis | +| value | choice | status | Verfügbarkeit | +| value | be_manager_relation | date_id | Termin | + +## Die Tabelle "LOCATION" + +Die Tabelle Location enthält die passenden Veranstaltungsorte zu den Veranstaltungen. Sie wurde im Hinblick auf leichte Geocodierung erstellt, lässt sich aber beliebig um zusätzliche Informationen erweitern. + +| Typname | Name | Bezeichnung | Funktion | +|---------|-------------|-------------|--------------------| +| value | text | name | Name | +| value | text | street | Straße, Hausnummer | +| value | text | zip | PLZ | +| value | text | locality | Stadt | +| value | osm_geocode | lat_lng | Geoposition | +| value | text | lat | Latitude | +| value | text | lng | Lng | + +Die Felder und Feldnamen orientieren sich dabei am [JSON+LD-Standard für Veranstaltungen](https://jsonld.com/event/), die wichtigsten Validierungen wurden bereits eingefügt. diff --git a/lib/cronjob_events_ics_import.php b/lib/cronjob_events_ics_import.php index d886556..804ff4c 100644 --- a/lib/cronjob_events_ics_import.php +++ b/lib/cronjob_events_ics_import.php @@ -3,7 +3,7 @@ class rex_cronjob_events_ics_import extends rex_cronjob { - public function execute(): void + public function execute(): bool { $debug_dump = []; // Debug-Array, das bei enstprechender Option ausgegeben wird @@ -195,8 +195,8 @@ public function execute(): void $values[':end_repeat_date'] = date("Y-m-d", strtotime($rrules['UNTIL'])); // $debug_dump['$rrules'.$i] = $rrules; } - - + $error_counter = 0; + $success_counter = 0; try { $debug_dump['inserts'][$vEvent['UID']] = rex_sql::factory()->setDebug(0)->setQuery($query, $values); $success_counter++; diff --git a/lib/event_category.php b/lib/event_category.php index 3f9e243..03f1003 100644 --- a/lib/event_category.php +++ b/lib/event_category.php @@ -1,46 +1,288 @@ getName(); + * ``` + * + * --- + * + * Returns the name of the category. + * + * @return string The name of the category. + * + * Example: + * ```php + * $name = $eventCategory->getName(); + * ``` + */ public function getName(): string { return $this->name; } + + /** + * Gibt das Bild der Kategorie zurück. + * + * @return string Das Bild der Kategorie. + * + * Beispiel: + * ```php + * $image = $eventCategory->getImage(); + * ``` + * + * --- + * + * Returns the image of the category. + * + * @return string The image of the category. + * + * Example: + * ```php + * $image = $eventCategory->getImage(); + * ``` + */ public function getImage(): string { return $this->image; } + + /** + * Gibt das rex_media Objekt des Bildes zurück. + * + * @return rex_media Das rex_media Objekt des Bildes. + * + * Beispiel: + * ```php + * $media = $eventCategory->getMedia(); + * ``` + * + * --- + * + * Returns the rex_media object of the image. + * + * @return rex_media The rex_media object of the image. + * + * Example: + * ```php + * $media = $eventCategory->getMedia(); + * ``` + */ public function getMedia(): rex_media { return rex_media::get($this->image); } - + /** + * Gibt das Icon der Kategorie zurück. + * + * @return string Das Icon der Kategorie. + * + * Beispiel: + * ```php + * $icon = $eventCategory->getIcon(); + * ``` + * + * --- + * + * Returns the icon of the category. + * + * @return string The icon of the category. + * + * Example: + * ```php + * $icon = $eventCategory->getIcon(); + * ``` + */ public function getIcon(): string { return $this->getValue('icon'); } + + /** + * Gibt den Preis der Kategorie zurück. + * + * @return string Der Preis der Kategorie. + * + * Beispiel: + * ```php + * $price = $eventCategory->getPrice(); + * ``` + * + * --- + * + * Returns the price of the category. + * + * @return string The price of the category. + * + * Example: + * ```php + * $price = $eventCategory->getPrice(); + * ``` + */ public function getPrice(): string { return $this->getValue('msg_price'); } + + /** + * Gibt die URL der Kategorie zurück. + * + * @return string Die URL der Kategorie. + * + * Beispiel: + * ```php + * $url = $eventCategory->getUrl(); + * ``` + * + * --- + * + * Returns the URL of the category. + * + * @return string The URL of the category. + * + * Example: + * ```php + * $url = $eventCategory->getUrl(); + * ``` + */ public function getUrl(): string { return rex_getUrl('', '', ['event-category-id' => $this->getId()]); } + /** + * Gibt eine Sammlung von Event-Daten zurück, die auf einem bestimmten Kriterium basieren. + * + * @param string $whereRaw Das Kriterium, auf dem die Event-Daten basieren sollen. + * @return rex_yform_manager_collection|null Eine Sammlung von Event-Daten oder null. + * + * Beispiel: + * ```php + * $dates = $eventCategory->getDateWhere('startDate > NOW()'); + * ``` + * + * --- + * + * Returns a collection of event dates based on a certain criterion. + * + * @param string $whereRaw The criterion that the event dates should be based on. + * @return rex_yform_manager_collection|null A collection of event dates or null. + * + * Example: + * ```php + * $dates = $eventCategory->getDateWhere('startDate > NOW()'); + * ``` + */ public function getDateWhere($whereRaw = ''): ?rex_yform_manager_collection { return event_date::query()->joinRelation('event_category_id', 'c')->where('c.id', $this->getId())->whereRaw($whereRaw)->orderBy('startDate`, `startTime', 'DESC')->find(); } - - public function getRelatedDates($whereRaw = ''): array + + /** + * Gibt eine Sammlung von verwandten Event-Daten zurück. + * + * @param string $whereRaw Das Kriterium, auf dem die verwandten Event-Daten basieren sollen. + * @return rex_yform_manager_collection|null Eine Sammlung von verwandten Event-Daten oder null. + * + * Beispiel: + * ```php + * $relatedDates = $eventCategory->getRelatedDates('startDate > NOW()'); + * ``` + * + * --- + * + * Returns a collection of related event dates. + * + * @param string $whereRaw The criterion that the related event dates should be based on. + * @return rex_yform_manager_collection|null A collection of related event dates or null. + * + * Example: + * ```php + * $relatedDates = $eventCategory->getRelatedDates('startDate > NOW()'); + * ``` + */ + public function getRelatedDates($whereRaw = ''): ?rex_yform_manager_collection { return $this->getDateWhere($whereRaw); } - + /** + * Gibt ein Array von Attributen zurück. + * + * @return array Ein Array von Attributen. + * + * Beispiel: + * ```php + * $attributes = $eventCategory->getAttributes(); + * ``` + * + * --- + * + * Returns an array of attributes. + * + * @return array An array of attributes. + * + * Example: + * ```php + * $attributes = $eventCategory->getAttributes(); + * ``` + */ public function getAttributes(): array { return explode(",", $this->getValue('msg_form_presets')); } + + /** + * Überprüft, ob ein bestimmtes Attribut vorhanden ist. + * + * @param string $needle Das zu suchende Attribut. + * @return bool Wahr, wenn das Attribut vorhanden ist, sonst falsch. + * + * Beispiel: + * ```php + * $hasAttribute = $eventCategory->hasAttribute('attributeName'); + * ``` + * + * --- + * + * Checks if a certain attribute is present. + * + * @param string $needle The attribute to search for. + * @return bool True if the attribute is present, false otherwise. + * + * Example: + * ```php + * $hasAttribute = $eventCategory->hasAttribute('attributeName'); + * ``` + */ public function hasAttribute($needle): bool { return in_array($needle, $this->getAttributes()); diff --git a/lib/event_date.php b/lib/event_date.php index 52e86d7..84c26d5 100644 --- a/lib/event_date.php +++ b/lib/event_date.php @@ -2,43 +2,156 @@ use Ramsey\uuid\uuid; +/** +* Die `event_date` Klasse repräsentiert ein Event-Datum. +* Diese Klasse erweitert die `rex_yform_manager_dataset` Klasse und bietet spezifische Funktionen und Eigenschaften, die für die Verwaltung von Event-Daten notwendig sind. +* +* Beispiel: +* ```php +* $eventDate = new event_date(); +* $eventDate->setValue('startDate', '2022-12-31'); +* $eventDate->setValue('endDate', '2023-01-01'); +* $eventDate->save(); +* ``` +* +* --- +* +* The `event_date` class represents an event date. +* This class extends the `rex_yform_manager_dataset` class and provides specific functions and properties necessary for managing event dates. +* +* Example: +* ```php +* $eventDate = new event_date(); +* $eventDate->setValue('startDate', '2022-12-31'); +* $eventDate->setValue('endDate', '2023-01-01'); +* $eventDate->save(); +* ``` +*/ class event_date extends \rex_yform_manager_dataset { - private $location = null; - private $category = null; - private $offer = null; - + private ?event_location $location = null; + private ?event_category $category = null; + private ?event_date_offer $offer = null; + /** + * Generiert eine UUID basierend auf der gegebenen ID. + * + * @param mixed $id Die ID, auf der die UUID basieren soll. + * @return string Die generierte UUID. + * + * Beispiel: + * ```php + * $uuid = event_date::generateuuid(123); + * ``` + * + * --- + * + * Generates a UUID based on the given ID. + * + * @param mixed $id The ID that the UUID should be based on. + * @return string The generated UUID. + * + * Example: + * ```php + * $uuid = event_date::generateuuid(123); + * ``` + */ public static function generateuuid($id = null) :string { return uuid::uuid3(uuid::NAMESPACE_URL, $id); } - public function getCategory(): ?rex_yform_manager_collection + /** + * Gibt die Kategorie des Events zurück. + * + * @return event_category|null Die Kategorie des Events oder null. + * + * Beispiel: + * ```php + * $category = $eventDate->getCategory(); + * ``` + * + * --- + * + * Returns the category of the event. + * + * @return event_category|null The category of the event or null. + * + * Example: + * ```php + * $category = $eventDate->getCategory(); + * ``` + */ + public function getCategory(): ?event_category { $this->category = event_category::get((int)$this->getValue('event_category_id')); return $this->category; } - public function getCategories(): array + /** + * Gibt eine Sammlung von Kategorien zurück, die mit dem Event verbunden sind. + * + * @return rex_yform_manager_collection Eine Sammlung von Kategorien. + * + * Beispiel: + * ```php + * $categories = $eventDate->getCategories(); + * ``` + * + * --- + * + * Returns a collection of categories associated with the event. + * + * @return rex_yform_manager_collection A collection of categories. + * + * Example: + * ```php + * $categories = $eventDate->getCategories(); + * ``` + */ + public function getCategories(): rex_yform_manager_collection { $this->categories = $this->getRelatedCollection('event_category_id'); return $this->categories; } - + /** + * Gibt eine iCalendar-Repräsentation des Events zurück. + * + * Diese Methode erstellt eine iCalendar-Repräsentation des Events, die dann zum Beispiel in Kalenderanwendungen importiert werden kann. + * + * @return string Die iCalendar-Repräsentation des Events. + * + * Beispiel: + * ```php + * $ics = $eventDate->getIcs(); + * ``` + * + * --- + * + * Returns an iCalendar representation of the event. + * + * This method creates an iCalendar representation of the event, which can then be imported into calendar applications, for example. + * + * @return string The iCalendar representation of the event. + * + * Example: + * ```php + * $ics = $eventDate->getIcs(); + * ``` + */ public function getIcs(): string { $UID = $this->getUid(); - + $vCalendar = new \Eluceo\iCal\Component\Calendar('-//' . date("Y") . '//#' . rex::getServerName() . '//' . strtoupper((rex_clang::getCurrent())->getCode())); date_default_timezone_set(rex::getProperty('timezone')); - + $vEvent = new \Eluceo\iCal\Component\Event($UID); - + // date/time $vEvent ->setUseTimezone(true) - ->setDtStart($this->getStartDate()) - ->setDtEnd($this->getEndDate()) + ->setDtStart($this->getStartTime()) + ->setDtEnd($this->getEndTime()) ->setCreated(new \DateTime($this->getValue("createdate"))) ->setModified(new \DateTime($this->getValue("updatedate"))) ->setNoTime($this->getValue("all_day")) @@ -46,66 +159,243 @@ public function getIcs(): string // ->setCategories(explode(",", $sked['entry']->category_name)) ->setSummary($this->getName()) ->setDescription($this->getDescriptionAsPlaintext()); - + // add location - $locationICS = $this->getLocation(); - if (isset($locationICS)) { - $ics_lat = $locationICS->getValue('lat'); - $ics_lng = $locationICS->getValue('lng'); - $vEvent->setLocation($locationICS->getAsString(), $locationICS->getValue('name'), $ics_lat != '' ? $ics_lat . ',' . $ics_lng : ''); + /* @var $locationICS event_location */ + $location = $this->getLocation(); + if (isset($location)) { + $ics_lat = $location->getValue('lat'); + $ics_lng = $location->getValue('lng'); + $vEvent->setLocation($location->getAsString(), $location->getValue('name'), $ics_lat != '' ? $ics_lat . ',' . $ics_lng : ''); // fehlt: set timezone of location } - + // add event to calendar $vCalendar->addComponent($vEvent); - + return $vCalendar->render(); // ob_clean(); - + // exit($vEvent); } - - public function getLocation(): string + /** + * Gibt den Standort des Events zurück. + * + * @return event_location|null Der Standort des Events oder null. + * + * Beispiel: + * ```php + * $location = $eventDate->getLocation(); + * ``` + * + * --- + * + * Returns the location of the event. + * + * @return event_location|null The location of the event or null. + * + * Example: + * ```php + * $location = $eventDate->getLocation(); + * ``` + */ + public function getLocation(): ?event_location { if ($this->location === null) { $this->location = $this->getRelatedDataset('location'); } return $this->location; } + + /** + * Gibt die ID des Standorts zurück. + * + * @return int Die ID des Standorts. + * + * Beispiel: + * ```php + * $locationId = $eventDate->getLocationId(); + * ``` + * + * --- + * + * Returns the ID of the location. + * + * @return int The ID of the location. + * + * Example: + * ```php + * $locationId = $eventDate->getLocationId(); + * ``` + */ public function getLocationId(): int { return $this->getValue('location'); } - + + /** + * Gibt die Zeitzone basierend auf den gegebenen Koordinaten zurück. + * + * Diese Methode verwendet die Google Maps Timezone API, um die Zeitzone zu ermitteln. + * + * @param float $lat Der Breitengrad. + * @param float $lng Der Längengrad. + * @return string Die Zeitzone im JSON-Format. + * + * Beispiel: + * ```php + * $timezone = $eventDate->getTimezone(52.5200, 13.4050); + * ``` + * + * --- + * + * Returns the timezone based on the given coordinates. + * + * This method uses the Google Maps Timezone API to determine the timezone. + * + * @param float $lat The latitude. + * @param float $lng The longitude. + * @return string The timezone in JSON format. + * + * Example: + * ```php + * $timezone = $eventDate->getTimezone(52.5200, 13.4050); + * ``` + */ public function getTimezone(float $lat, float $lng): string { $event_timezone = "https://maps.googleapis.com/maps/api/timezone/json?location=" . $lat . "," . $lng . "×tamp=" . time() . "&sensor=false"; $event_location_time_json = file_get_contents($event_timezone); return $event_location_time_json; } - - public function getOfferAll(): array + /** + * Gibt eine Sammlung von Angeboten zurück, die mit dem Event verbunden sind. + * + * @return rex_yform_manager_collection|null Eine Sammlung von Angeboten oder null. + * + * Beispiel: + * ```php + * $offers = $eventDate->getOfferAll(); + * ``` + * + * --- + * + * Returns a collection of offers associated with the event. + * + * @return rex_yform_manager_collection|null A collection of offers or null. + * + * Example: + * ```php + * $offers = $eventDate->getOfferAll(); + * ``` + */ + public function getOfferAll(): ?rex_yform_manager_collection { return $this->getRelatedCollection('offer'); } + /** + * Gibt das Bild des Events zurück. + * + * @return string|null Das Bild des Events oder null. + * + * Beispiel: + * ```php + * $image = $eventDate->getImage(); + * ``` + * + * --- + * + * Returns the image of the event. + * + * @return string|null The image of the event or null. + * + * Example: + * ```php + * $image = $eventDate->getImage(); + * ``` + */ public function getImage(): ?string { return $this->image; } + + /** + * Gibt das Medienobjekt des Bildes zurück. + * + * @return rex_media Das Medienobjekt des Bildes. + * + * Beispiel: + * ```php + * $media = $eventDate->getMedia(); + * ``` + * + * --- + * + * Returns the media object of the image. + * + * @return rex_media The media object of the image. + * + * Example: + * ```php + * $media = $eventDate->getMedia(); + * ``` + */ public function getMedia(): rex_media { return rex_media::get($this->image); } - - public function getDescriptionAsPlaintext() : ?string - { - return strip_tags(html_entity_decode($this->description)); - } + /** + * Gibt den ICS-Status des Events zurück. + * + * @return int Der ICS-Status des Events. + * + * Beispiel: + * ```php + * $icsStatus = $eventDate->getIcsStatus(); + * ``` + * + * --- + * + * Returns the ICS status of the event. + * + * @return int The ICS status of the event. + * + * Example: + * ```php + * $icsStatus = $eventDate->getIcsStatus(); + * ``` + */ public function getIcsStatus(): int { - return strip_tags($this->eventStatus); + return strip_tags($this->getValue('eventStatus')); } + + /** + * Gibt die eindeutige ID (UID) des Events zurück. + * + * Wenn die UID noch nicht gesetzt wurde, wird sie generiert und in der Datenbank gespeichert. + * + * @return string Die UID des Events. + * + * Beispiel: + * ```php + * $uid = $eventDate->getUid(); + * ``` + * + * --- + * + * Returns the unique ID (UID) of the event. + * + * If the UID has not been set yet, it is generated and stored in the database. + * + * @return string The UID of the event. + * + * Example: + * ```php + * $uid = $eventDate->getUid(); + * ``` + */ public function getUid(): string { if ($this->uid === "" && $this->getValue("uid") === "") { @@ -116,18 +406,90 @@ public function getUid(): string return $this->uid; } + /** + * Gibt die JSON-LD-Darstellung des Events zurück. + * + * @return string Die JSON-LD-Darstellung des Events. + * + * Beispiel: + * ```php + * $jsonLd = $eventDate->getJsonLd(); + * ``` + * + * --- + * + * Returns the JSON-LD representation of the event. + * + * @return string The JSON-LD representation of the event. + * + * Example: + * ```php + * $jsonLd = $eventDate->getJsonLd(); + * ``` + */ public function getJsonLd(): string { $fragment = new rex_fragment(); $fragment->setVar("event_date", $this); return $fragment->parse('event-date-single.json-ld.php'); } - + /** + * Erstellt einen IntlDateFormatter für das angegebene Format und die angegebene Sprache. + * + * @param int $format_date Das Datumsformat. Standardwert ist IntlDateFormatter::FULL. + * @param int $format_time Das Zeitformat. Standardwert ist IntlDateFormatter::SHORT. + * @param string $lang Die Sprache. Standardwert ist "de". + * @return IntlDateFormatter Der erstellte IntlDateFormatter. + * + * Beispiel: + * ```php + * $formatter = event_date::formatDate(IntlDateFormatter::FULL, IntlDateFormatter::SHORT, "de"); + * ``` + * + * --- + * + * Creates an IntlDateFormatter for the specified format and language. + * + * @param int $format_date The date format. Default is IntlDateFormatter::FULL. + * @param int $format_time The time format. Default is IntlDateFormatter::SHORT. + * @param string $lang The language. Default is "de". + * @return IntlDateFormatter The created IntlDateFormatter. + * + * Example: + * ```php + * $formatter = event_date::formatDate(IntlDateFormatter::FULL, IntlDateFormatter::SHORT, "de"); + * ``` + */ public static function formatDate(int $format_date = IntlDateFormatter::FULL, int $format_time = IntlDateFormatter::SHORT, string $lang = "de"): IntlDateFormatter { return datefmt_create($lang, $format_date, $format_time, null, IntlDateFormatter::GREGORIAN); } + /** + * Erstellt ein DateTime-Objekt aus dem angegebenen Datum und der angegebenen Zeit. + * + * @param string $date Das Datum im Format "Y-m-d". + * @param string $time Die Zeit im Format "H:i". Standardwert ist "00:00". + * @return DateTime Das erstellte DateTime-Objekt. + * + * Beispiel: + * ```php + * $dateTime = $eventDate->getDateTime("2022-12-31", "23:59"); + * ``` + * + * --- + * + * Creates a DateTime object from the specified date and time. + * + * @param string $date The date in "Y-m-d" format. + * @param string $time The time in "H:i" format. Default is "00:00". + * @return DateTime The created DateTime object. + * + * Example: + * ```php + * $dateTime = $eventDate->getDateTime("2022-12-31", "23:59"); + * ``` + */ private function getDateTime(string $date, string $time = "00:00"): DateTime { $time = explode(":", $time); @@ -137,73 +499,407 @@ private function getDateTime(string $date, string $time = "00:00"): DateTime return $dateTime; } + /** + * Gibt das formatierte Startdatum des Events zurück. + * + * @param int $format_date Das Datumsformat. Standardwert ist IntlDateFormatter::FULL. + * @param int $format_time Das Zeitformat. Standardwert ist IntlDateFormatter::NONE. + * @return string Das formatierte Startdatum des Events. + * + * Beispiel: + * ```php + * $formattedStartDate = $eventDate->getFormattedStartDate(); + * ``` + * + * --- + * + * Returns the formatted start date of the event. + * + * @param int $format_date The date format. Default is IntlDateFormatter::FULL. + * @param int $format_time The time format. Default is IntlDateFormatter::NONE. + * @return string The formatted start date of the event. + * + * Example: + * ```php + * $formattedStartDate = $eventDate->getFormattedStartDate(); + * ``` + */ public function getFormattedStartDate(int $format_date = IntlDateFormatter::FULL, int $format_time = IntlDateFormatter::NONE): string { return self::formatDate($format_date, $format_time)->format($this->getDateTime($this->getValue("startDate"), $this->getStartTime())); } + /** + * Gibt das formatierte Enddatum des Events zurück. + * + * @param int $format_date Das Datumsformat. Standardwert ist IntlDateFormatter::FULL. + * @param int $format_time Das Zeitformat. Standardwert ist IntlDateFormatter::SHORT. + * @return string Das formatierte Enddatum des Events. + * + * Beispiel: + * ```php + * $formattedEndDate = $eventDate->getFormattedEndDate(); + * ``` + * + * --- + * + * Returns the formatted end date of the event. + * + * @param int $format_date The date format. Default is IntlDateFormatter::FULL. + * @param int $format_time The time format. Default is IntlDateFormatter::SHORT. + * @return string The formatted end date of the event. + * + * Example: + * ```php + * $formattedEndDate = $eventDate->getFormattedEndDate(); + * ``` + */ public function getFormattedEndDate(int $format_date = IntlDateFormatter::FULL, int $format_time = IntlDateFormatter::SHORT): string { return self::formatDate($format_date, $format_time)->format($this->getDateTime($this->getValue("endDate"), $this->getEndTime())); } - + + /** + * Gibt die formatierte Startzeit des Events zurück. + * + * @return string Die formatierte Startzeit des Events. + * + * Beispiel: + * ```php + * $formattedStartTime = $eventDate->getFormattedStartTime(); + * ``` + * + * --- + * + * Returns the formatted start time of the event. + * + * @return string The formatted start time of the event. + * + * Example: + * ```php + * $formattedStartTime = $eventDate->getFormattedStartTime(); + * ``` + */ public function getFormattedStartTime(): string { return $this->getStartTime(); } + /** + * Gibt die formatierte Endzeit des Events zurück. + * + * @return string Die formatierte Endzeit des Events. + * + * Beispiel: + * ```php + * $formattedEndTime = $eventDate->getFormattedEndTime(); + * ``` + * + * --- + * + * Returns the formatted end time of the event. + * + * @return string The formatted end time of the event. + * + * Example: + * ```php + * $formattedEndTime = $eventDate->getFormattedEndTime(); + * ``` + */ public function getFormattedEndTime(): string { return $this->getEndTime(); } + + /** + * Gibt die Startzeit des Events zurück. + * + * @return string|null Die Startzeit des Events oder null, wenn keine Startzeit gesetzt ist. + * + * Beispiel: + * ```php + * $startTime = $eventDate->getStartTime(); + * ``` + * + * --- + * + * Returns the start time of the event. + * + * @return string|null The start time of the event, or null if no start time is set. + * + * Example: + * ```php + * $startTime = $eventDate->getStartTime(); + * ``` + */ public function getStartTime() : ?string { return $this->getValue('startTime'); } + + /** + * Gibt die Endzeit des Events zurück. + * + * @return string|null Die Endzeit des Events oder null, wenn keine Endzeit gesetzt ist. + * + * Beispiel: + * ```php + * $endTime = $eventDate->getEndTime(); + * ``` + * + * --- + * + * Returns the end time of the event. + * + * @return string|null The end time of the event, or null if no end time is set. + * + * Example: + * ```php + * $endTime = $eventDate->getEndTime(); + * ``` + */ public function getEndTime() : ?string { return $this->getValue('endTime'); } - + /** + * Gibt den Namen des Events zurück. + * + * @return string|null Der Name des Events oder null. + * + * Beispiel: + * ```php + * $name = $eventDate->getName(); + * ``` + * + * --- + * + * Returns the name of the event. + * + * @return string|null The name of the event or null. + * + * Example: + * ```php + * $name = $eventDate->getName(); + * ``` + */ public function getName() : ?string { return $this->getValue("name"); } + /** + * Gibt die Beschreibung des Events zurück. + * + * @return string|null Die Beschreibung des Events oder null. + * + * Beispiel: + * ```php + * $description = $eventDate->getDescription(); + * ``` + * + * --- + * + * Returns the description of the event. + * + * @return string|null The description of the event or null. + * + * Example: + * ```php + * $description = $eventDate->getDescription(); + * ``` + */ public function getDescription() : ?string { return $this->getValue("description"); } + /** + * Gibt die Beschreibung des Events als reinen Text zurück. + * + * @return string|null Die Beschreibung des Events als reiner Text oder null, wenn keine Beschreibung gesetzt ist. + * + * Beispiel: + * ```php + * $descriptionAsPlaintext = $eventDate->getDescriptionAsPlaintext(); + * ``` + */ + public function getDescriptionAsPlaintext() : ?string + { + return strip_tags($this->getValue("description")); + } - public function geTeaser() : ?string + /** + * Gibt den Teaser des Events zurück. + * + * @return string|null Der Teaser des Events oder null. + * + * Beispiel: + * ```php + * $teaser = $eventDate->getTeaser(); + * ``` + * + * --- + * + * Returns the teaser of the event. + * + * @return string|null The teaser of the event or null. + * + * Example: + * ```php + * $teaser = $eventDate->getTeaser(); + * ``` + */ + public function getTeaser() : ?string { return $this->getValue("teaser"); } - + + /** + * Gibt den Preis des Events zurück. + * + * Wenn das Event spezielle Angebote hat, wird der Preis des ersten Angebots zurückgegeben. + * Wenn es keine Angebote gibt, wird der Preis der ersten Kategorie des Events zurückgegeben. + * + * @return string Der Preis des Events. + * + * Beispiel: + * ```php + * $price = $eventDate->getPrice(); + * ``` + * + * --- + * + * Returns the price of the event. + * + * If the event has special offers, the price of the first offer is returned. + * If there are no offers, the price of the first category of the event is returned. + * + * @return string The price of the event. + * + * Example: + * ```php + * $price = $eventDate->getPrice(); + * ``` + */ public function getPrice(): string { - $offer = rex_yform_manager_table::get('rex_event_date_offer')->query()->where("date_id", $this->getValue('id'))->find(); + /** @var rex_yform_manager_collection $offers */ + $offers = rex_yform_manager_table::get('rex_event_date_offer')->query()->where("date_id", $this->getValue('id'))->find(); - if (count($offer) > 0) { - return $offer[0]->getPrice(); + if (count($offers)) { + /** @var event_date_offer $offer */ + $offer = $offers->first(); + return $offer->getPrice(); } - return $this->getCategories()[0]->getPrice(); + $category = $this->getCategories()->first(); + /** @var event_category $category */ + return $category->getPrice(); } + + /** + * Gibt den formatierten Preis des Events zurück. + * + * Der Preis wird zusammen mit der Währung zurückgegeben, die in den Einstellungen festgelegt wurde. + * + * @return string Der formatierte Preis des Events. + * + * Beispiel: + * ```php + * $formattedPrice = $eventDate->getPriceFormatted(); + * ``` + * + * --- + * + * Returns the formatted price of the event. + * + * The price is returned along with the currency set in the settings. + * + * @return string The formatted price of the event. + * + * Example: + * ```php + * $formattedPrice = $eventDate->getPriceFormatted(); + * ``` + */ public function getPriceFormatted(): string { return $this->getPrice() . " " . rex_config::get('events', 'currency'); } - + /* Informationen zur Registrierung und Anmeldung */ + /** + * Gibt die Anzahl der verfügbaren Plätze für das Event zurück. + * + * @return int Die Anzahl der verfügbaren Plätze. + * + * Beispiel: + * ```php + * $spaceCount = $eventDate->getSpaceCount(); + * ``` + * + * --- + * + * Returns the number of available spaces for the event. + * + * @return int The number of available spaces. + * + * Example: + * ```php + * $spaceCount = $eventDate->getSpaceCount(); + * ``` + */ public function getSpaceCount() :int { return (int) $this->getTotalCount() - $this->countRegistrationPerson(); } + + /** + * Gibt die Gesamtanzahl der Plätze für das Event zurück. + * + * @return int Die Gesamtanzahl der Plätze. + * + * Beispiel: + * ```php + * $totalCount = $eventDate->getTotalCount(); + * ``` + * + * --- + * + * Returns the total number of spaces for the event. + * + * @return int The total number of spaces. + * + * Example: + * ```php + * $totalCount = $eventDate->getTotalCount(); + * ``` + */ public function getTotalCount() :int { return (int) $this->getValue('space'); } + /** + * Gibt die Anzahl der registrierten Personen für das Event zurück. + * + * @return int Die Anzahl der registrierten Personen. + * + * Beispiel: + * ```php + * $registerCount = $eventDate->getRegisterCount(); + * ``` + * + * --- + * + * Returns the number of registered persons for the event. + * + * @return int The number of registered persons. + * + * Example: + * ```php + * $registerCount = $eventDate->getRegisterCount(); + * ``` + */ public function getRegisterCount() :int { $registrations = event_registration::getTotalRegistrationsByDate($this->getId()); @@ -213,6 +909,28 @@ public function getRegisterCount() :int } return (int) $count; } + + /** + * Gibt den Prozentsatz der registrierten Personen im Verhältnis zur Gesamtanzahl der Plätze zurück. + * + * @return int Der Prozentsatz der registrierten Personen. + * + * Beispiel: + * ```php + * $registerPercentage = $eventDate->getRegisterCountPercentage(); + * ``` + * + * --- + * + * Returns the percentage of registered persons in relation to the total number of spaces. + * + * @return int The percentage of registered persons. + * + * Example: + * ```php + * $registerPercentage = $eventDate->getRegisterCountPercentage(); + * ``` + */ public function getRegisterCountPercentage() :int { if ($this->getTotalCount() > 0) { @@ -220,6 +938,28 @@ public function getRegisterCountPercentage() :int } return 0; } + + /** + * Überprüft, ob das Event voll ist. + * + * @return bool True, wenn das Event voll ist, sonst false. + * + * Beispiel: + * ```php + * $isFull = $eventDate->isFull(); + * ``` + * + * --- + * + * Checks whether the event is full. + * + * @return bool True if the event is full, otherwise false. + * + * Example: + * ```php + * $isFull = $eventDate->isFull(); + * ``` + */ public function isFull() :bool { if ($this->getSpaceCount() <= 0) { @@ -227,8 +967,9 @@ public function isFull() :bool } return false; } + /* Register-URL-Addon */ - + public static function combineCidDid($cid, $did): string { return $cid . str_pad($did, 3, '0', STR_PAD_LEFT); @@ -248,37 +989,38 @@ public function getRegisterButton($category_id = null) :string return 'ausgebucht'; } return 'Jetzt anmelden'; +href="'.$this->getRegisterUrl($category_id).'">Jetzt anmelden'; } public function getRegisterBar() :string { if ($this->isFull()) { return ' -
- '.$this->countRegistrationPerson()."/".$this->getTotalCount().' -
'; +
+'.$this->countRegistrationPerson()."/".$this->getTotalCount().' +
'; } return ' -
- '.$this->countRegistrationPerson()."/".$this->getTotalCount().' -
'; +
+'.$this->countRegistrationPerson()."/".$this->getTotalCount().' +
'; } public function getIcon(): string { if ($category = $this->getCategory()) { + /* @var event_category $category */ return $category->getIcon(); } } - + public function getRegistrationPerson($status = 0, $operator = ">="): ?rex_yform_manager_collection { return event_registration_person::query()->where('status', $status, $operator)->where('event_date_id', self::getId())->find(); diff --git a/lib/event_date_offer.php b/lib/event_date_offer.php index dcc4d88..91804ba 100644 --- a/lib/event_date_offer.php +++ b/lib/event_date_offer.php @@ -1,24 +1,189 @@ setValue('event_date_id', $eventDateId); + * $offer->setValue('offer', 'Spezielles Angebot'); + * $offer->save(); + * ``` + * + * --- + * + * The `event_date_offer` class represents an offer for a specific event date. + * + * It inherits from the `rex_yform_manager_dataset` class and provides additional methods + * for interacting with the offers of an event date. + * + * Example: + * ```php + * // Creates a new offer for an event date + * $offer = new event_date_offer(); + * $offer->setValue('event_date_id', $eventDateId); + * $offer->setValue('offer', 'Special Offer'); + * $offer->save(); + * ``` + */ class event_date_offer extends \rex_yform_manager_dataset { - public function getUrl() :string + /** + * Gibt die URL des Angebots zurück. + * + * @return string Die URL des Angebots. + * + * Beispiel: + * ```php + * $url = $offer->getUrl(); + * ``` + * + * --- + * + * Returns the URL of the offer. + * + * @return string The URL of the offer. + * + * Example: + * ```php + * $url = $offer->getUrl(); + * ``` + */ + public function getUrl(): string { return $this->getValue('url'); } - public function getStatus() :string + + /** + * Gibt den Status des Angebots zurück. + * + * @return string Der Status des Angebots. + * + * Beispiel: + * ```php + * $status = $offer->getStatus(); + * ``` + * + * --- + * + * Returns the status of the offer. + * + * @return string The status of the offer. + * + * Example: + * ```php + * $status = $offer->getStatus(); + * ``` + */ + public function getStatus(): string { return $this->getValue('status'); } - public function getPrice() :string + + /** + * Gibt den Preis des Angebots zurück. + * + * @return string Der Preis des Angebots. + * + * Beispiel: + * ```php + * $price = $offer->getPrice(); + * ``` + * + * --- + * + * Returns the price of the offer. + * + * @return string The price of the offer. + * + * Example: + * ```php + * $price = $offer->getPrice(); + * ``` + */ + public function getPrice(): string { return $this->getValue('price'); } + + /** + * Gibt die Währung des Angebots zurück. + * + * @return string Die Währung des Angebots. + * + * Beispiel: + * ```php + * $currency = $offer->getCurrency(); + * ``` + * + * --- + * + * Returns the currency of the offer. + * + * @return string The currency of the offer. + * + * Example: + * ```php + * $currency = $offer->getCurrency(); + * ``` + */ public function getCurrency() :string { return $this->getValue('currency') ?? rex_config::get('events', 'currency'); } - public function getAvialability() :string + + /** + * Gibt den formatierten Preis des Angebots zurück. + * + * @return string Der formatierte Preis des Angebots. + * + * Beispiel: + * ```php + * $priceFormatted = $offer->getPriceFormatted(); + * ``` + * + * --- + * + * Returns the formatted price of the offer. + * + * @return string The formatted price of the offer. + * + * Example: + * ```php + * $priceFormatted = $offer->getPriceFormatted(); + * ``` + */ + public function getPriceFormatted() :string { - return "https://schema.org/" . $this->status; + return number_format($this->getValue('price'), 2, ',', '.') . " " . $this->getCurrency(); + } + /** + * Gibt die Verfügbarkeit des Angebots als schema.org kompatiblen Wert zurück. + * + * @return string Die Verfügbarkeit des Angebots. + * + * Beispiel: + * ```php + * $availability = $offer->getAvailability(); + * ``` + * + * --- + * + * Returns the availability of the offer as schema.org compatible value. + * + * @return string The availability of the offer. + * + * Example: + * ```php + * $availability = $offer->getAvailability(); + * ``` + */ + public function getAvailability() :string + { + return "https://schema.org/" . $this->getValue('status'); } } diff --git a/lib/event_location.php b/lib/event_location.php index bb60a62..6858561 100644 --- a/lib/event_location.php +++ b/lib/event_location.php @@ -1,49 +1,314 @@ setValue('name', 'Konzerthalle'); + * $location->save(); + * ``` + * + * --- + * + * The `event_location` class represents an event location. + * + * It inherits from the `rex_yform_manager_dataset` class and provides additional methods + * for interacting with the event locations. + * + * Example: + * ```php + * // Creates a new event location + * $location = new event_location(); + * $location->setValue('name', 'Concert Hall'); + * $location->save(); + * ``` + */ class event_location extends \rex_yform_manager_dataset { + /** + * Gibt die Adresse als String zurück. + * + * @return string Die Adresse als String. + * + * Beispiel: + * ```php + * $addressString = $location->getAsString(); + * ``` + * + * --- + * + * Returns the address as a string. + * + * @return string The address as a string. + * + * Example: + * ```php + * $addressString = $location->getAsString(); + * ``` + */ public function getAsString() :string { return $this->getValue('street') .", ". $this->getValue('zip') .", ".$this->getValue('locality').", ".$this->getValue('countrycode'); } + + /** + * Gibt die formatierte Adresse zurück. + * + * @return string Die formatierte Adresse. + * + * Beispiel: + * ```php + * $formattedAddress = $location->getFormattedAddress(); + * ``` + * + * --- + * + * Returns the formatted address. + * + * @return string The formatted address. + * + * Example: + * ```php + * $formattedAddress = $location->getFormattedAddress(); + * ``` + */ public function getFormattedAddress() :string { return $this->getValue('street') .", ". $this->getValue('zip') ." ".$this->getValue('locality'); } + + /** + * Gibt den Namen des Veranstaltungsorts zurück. + * + * @return string Der Name des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $name = $location->getName(); + * ``` + * + * --- + * + * Returns the name of the event location. + * + * @return string The name of the event location. + * + * Example: + * ```php + * $name = $location->getName(); + * ``` + */ public function getName() :string { return $this->getValue('name'); } - + + /** + * Gibt die Straße des Veranstaltungsorts zurück. + * + * @return string Die Straße des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $street = $location->getStreet(); + * ``` + * + * --- + * + * Returns the street of the event location. + * + * @return string The street of the event location. + * + * Example: + * ```php + * $street = $location->getStreet(); + * ``` + */ public function getStreet() :string { return $this->getValue('street'); } + /** + * Gibt die Postleitzahl des Veranstaltungsorts zurück. + * + * @return string Die Postleitzahl des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $zip = $location->getZip(); + * ``` + * + * --- + * + * Returns the zip code of the event location. + * + * @return string The zip code of the event location. + * + * Example: + * ```php + * $zip = $location->getZip(); + * ``` + */ public function getZip() :string { return $this->getValue('zip'); } - + + /** + * Gibt die Ortschaft des Veranstaltungsorts zurück. + * + * @return string Die Ortschaft des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $locality = $location->getLocality(); + * ``` + * + * --- + * + * Returns the locality of the event location. + * + * @return string The locality of the event location. + * + * Example: + * ```php + * $locality = $location->getLocality(); + * ``` + */ public function getLocality() :string { return $this->getValue('locality'); } + + /** + * Gibt die Stadt des Veranstaltungsorts zurück. + * + * @return string Die Stadt des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $city = $location->getCity(); + * ``` + * + * --- + * + * Returns the city of the event location. + * + * @return string The city of the event location. + * + * Example: + * ```php + * $city = $location->getCity(); + * ``` + */ public function getCity() :string { return $this->getLocality(); } + /** + * Gibt den Ländercode des Veranstaltungsorts zurück. + * + * @return string Der Ländercode des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $countryCode = $location->getCountryCode(); + * ``` + * + * --- + * + * Returns the country code of the event location. + * + * @return string The country code of the event location. + * + * Example: + * ```php + * $countryCode = $location->getCountryCode(); + * ``` + */ public function getCountryCode() :string { return $this->getValue('countrycode'); } + + /** + * Gibt die geographischen Koordinaten des Veranstaltungsorts zurück. + * + * @return string Die geographischen Koordinaten des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $latLng = $location->getLatLng(); + * ``` + * + * --- + * + * Returns the geographical coordinates of the event location. + * + * @return string The geographical coordinates of the event location. + * + * Example: + * ```php + * $latLng = $location->getLatLng(); + * ``` + */ public function getLatLng() :string { return $this->getValue('lat_lng'); } + /** + * Gibt den Breitengrad des Veranstaltungsorts zurück. + * + * @return string Der Breitengrad des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $lat = $location->getLat(); + * ``` + * + * --- + * + * Returns the latitude of the event location. + * + * @return string The latitude of the event location. + * + * Example: + * ```php + * $lat = $location->getLat(); + * ``` + */ public function getLat() :string { return $this->getValue('lat'); } + + /** + * Gibt den Längengrad des Veranstaltungsorts zurück. + * + * @return string Der Längengrad des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $lng = $location->getLng(); + * ``` + * + * --- + * + * Returns the longitude of the event location. + * + * @return string The longitude of the event location. + * + * Example: + * ```php + * $lng = $location->getLng(); + * ``` + */ public function getLng() :string { return $this->getValue('lng'); diff --git a/lib/event_registration.php b/lib/event_registration.php index 046fbeb..85f06f9 100644 --- a/lib/event_registration.php +++ b/lib/event_registration.php @@ -2,72 +2,380 @@ class event_registration extends \rex_yform_manager_dataset { + /** + * Gibt die Gesamtzahl der Registrierungen für ein bestimmtes Datum zurück. + * + * @param int $date_id Die ID des Datums. + * @return rex_yform_manager_collection|null Eine Sammlung von Registrierungen oder null, wenn keine gefunden wurden. + * + * Beispiel: + * ```php + * $totalRegistrations = event_registration::getTotalRegistrationsByDate($date_id); + * ``` + * + * --- + * + * Returns the total number of registrations for a specific date. + * + * @param int $date_id The ID of the date. + * @return rex_yform_manager_collection|null A collection of registrations or null if none were found. + * + * Example: + * ```php + * $totalRegistrations = event_registration::getTotalRegistrationsByDate($date_id); + * ``` + */ public static function getTotalRegistrationsByDate(int $date_id): ?rex_yform_manager_collection { return self::query()->where('date_id', $date_id)->where('status', '0', '>=')->find(); } + /** + * Gibt eine Sammlung von registrierten Personen für ein bestimmtes Event zurück. + * + * @param int $status Der Status der Registrierung. + * @param string $operator Der Operator für den Statusvergleich. + * @return rex_yform_manager_collection|null Eine Sammlung von registrierten Personen oder null, wenn keine gefunden wurden. + * + * Beispiel: + * ```php + * $registrationPersons = $eventRegistration->getRegistrationPerson(0, ">="); + * ``` + * + * --- + * + * Returns a collection of registered persons for a specific event. + * + * @param int $status The status of the registration. + * @param string $operator The operator for the status comparison. + * @return rex_yform_manager_collection|null A collection of registered persons or null if none were found. + * + * Example: + * ```php + * $registrationPersons = $eventRegistration->getRegistrationPerson(0, ">="); + * ``` + */ public function getRegistrationPerson(int $status = 0, string $operator = ">="): ?rex_yform_manager_collection { return event_registration_person::query()->where('status', $status, $operator)->where('event_date_id', self::getDateId())->find(); } - public function countRegistrationPerson(int $status = 0, string $operator = ">="): int { + /** + * Zählt die Anzahl der registrierten Personen für ein bestimmtes Event. + * + * @param int $status Der Status der Registrierung. + * @param string $operator Der Operator für den Statusvergleich. + * @return int Die Anzahl der registrierten Personen. + * + * Beispiel: + * ```php + * $count = $eventRegistration->countRegistrationPerson(0, ">="); + * ``` + * + * --- + * + * Counts the number of registered persons for a specific event. + * + * @param int $status The status of the registration. + * @param string $operator The operator for the status comparison. + * @return int The number of registered persons. + * + * Example: + * ```php + * $count = $eventRegistration->countRegistrationPerson(0, ">="); + * ``` + */ + public function countRegistrationPerson(int $status = 0, string $operator = ">="): int + { return count($this->getRegistrationPerson($status, $operator)); } - + /** + * Gibt die Gesamtzahl der Personen für eine bestimmte Registrierung zurück. + * + * @return int Die Gesamtzahl der Personen. + * + * Beispiel: + * ```php + * $personTotal = $eventRegistration->getPersonTotal(); + * ``` + * + * --- + * + * Returns the total number of persons for a specific registration. + * + * @return int The total number of persons. + * + * Example: + * ```php + * $personTotal = $eventRegistration->getPersonTotal(); + * ``` + */ public function getPersonTotal(): int { return $this->getValue('person_count'); } - public static function ep_saved($ep): bool + /** + * Wird aufgerufen, wenn ein rex_extension_point gespeichert wird. + * + * @param rex_extension_point $ep Der rex_extension_point. + * @return bool Immer true. + * + * Beispiel: + * ```php + * $result = event_registration::ep_saved($ep); + * ``` + * + * --- + * + * Called when a rex_extension_point is saved. + * + * @param rex_extension_point $ep The rex_extension_point. + * @return bool Always true. + * + * Example: + * ```php + * $result = event_registration::ep_saved($ep); + * ``` + */ + public static function ep_saved(rex_extension_point $ep): bool { $lastId = $ep->getSubject()->getLastId(); $table = $ep->getParam('table'); return true; } - + /** + * Gibt die Kategorie-ID der Registrierung zurück. + * + * @return int Die Kategorie-ID. + * + * Beispiel: + * ```php + * $categoryId = $eventRegistration->getCategoryId(); + * ``` + * + * --- + * + * Returns the category ID of the registration. + * + * @return int The category ID. + * + * Example: + * ```php + * $categoryId = $eventRegistration->getCategoryId(); + * ``` + */ public function getCategoryId(): int { return $this->getValue('category_id'); } + + /** + * Gibt die Kategorie der Registrierung zurück. + * + * @return rex_yform_manager_collection|null Eine Sammlung von Kategorien oder null, wenn keine gefunden wurden. + * + * Beispiel: + * ```php + * $category = $eventRegistration->getCategory(); + * ``` + * + * --- + * + * Returns the category of the registration. + * + * @return rex_yform_manager_collection|null A collection of categories or null if none were found. + * + * Example: + * ```php + * $category = $eventRegistration->getCategory(); + * ``` + */ public function getCategory(): ?rex_yform_manager_collection { return $this->getRelatedDataset('category_id'); } + /** + * Gibt die Datum-ID der Registrierung zurück. + * + * @return int Die Datum-ID. + * + * Beispiel: + * ```php + * $dateId = $eventRegistration->getDateId(); + * ``` + * + * --- + * + * Returns the date ID of the registration. + * + * @return int The date ID. + * + * Example: + * ```php + * $dateId = $eventRegistration->getDateId(); + * ``` + */ public function getDateId(): int { return $this->getValue('date_id'); } + /** + * Gibt das Datum der Registrierung zurück. + * + * @return rex_yform_manager_collection|null Eine Sammlung von Daten oder null, wenn keine gefunden wurden. + * + * Beispiel: + * ```php + * $date = $eventRegistration->getDate(); + * ``` + * + * --- + * + * Returns the date of the registration. + * + * @return rex_yform_manager_collection|null A collection of dates or null if none were found. + * + * Example: + * ```php + * $date = $eventRegistration->getDate(); + * ``` + */ public function getDate(): ?rex_yform_manager_collection { return $this->getRelatedDataset('date_id'); } + /** + * Gibt die ID des Veranstaltungsorts der Registrierung zurück. + * + * @return int Die ID des Veranstaltungsorts. + * + * Beispiel: + * ```php + * $locationId = $eventRegistration->getLocationId(); + * ``` + * + * --- + * + * Returns the location ID of the registration. + * + * @return int The location ID. + * + * Example: + * ```php + * $locationId = $eventRegistration->getLocationId(); + * ``` + */ public function getLocationId(): int { return $this->getValue('event_location_id'); } + /** + * Gibt die Anrede der Registrierung zurück. + * + * @return string Die Anrede. + * + * Beispiel: + * ```php + * $salutation = $eventRegistration->getSalutation(); + * ``` + * + * --- + * + * Returns the salutation of the registration. + * + * @return string The salutation. + * + * Example: + * ```php + * $salutation = $eventRegistration->getSalutation(); + * ``` + */ public function getSalutation(): string { return $this->getValue('salutation'); } + /** + * Gibt den Vornamen der Registrierung zurück. + * + * @return string Der Vorname. + * + * Beispiel: + * ```php + * $firstName = $eventRegistration->getFirstName(); + * ``` + * + * --- + * + * Returns the first name of the registration. + * + * @return string The first name. + * + * Example: + * ```php + * $firstName = $eventRegistration->getFirstName(); + * ``` + */ public function getFirstName(): string { return $this->getValue('firstname'); } + /** + * Gibt den Nachnamen der Registrierung zurück. + * + * @return string Der Nachname. + * + * Beispiel: + * ```php + * $lastName = $eventRegistration->getLastName(); + * ``` + * + * --- + * + * Returns the last name of the registration. + * + * @return string The last name. + * + * Example: + * ```php + * $lastName = $eventRegistration->getLastName(); + * ``` + */ public function getLastName(): string { return $this->getValue('lastname'); } + /** + * Gibt den vollständigen Namen der Registrierung zurück. + * + * @param bool $reverse Wenn true, wird der Nachname vor dem Vornamen angezeigt. + * @return string Der vollständige Name. + * + * Beispiel: + * ```php + * $name = $eventRegistration->getName(true); + * ``` + * + * --- + * + * Returns the full name of the registration. + * + * @param bool $reverse If true, the last name is displayed before the first name. + * @return string The full name. + * + * Example: + * ```php + * $name = $eventRegistration->getName(true); + * ``` + */ public function getName(bool $reverse = false): string { $name = []; @@ -86,41 +394,209 @@ public function getName(bool $reverse = false): string } } + /** + * Gibt die E-Mail-Adresse der Registrierung zurück. + * + * @return string Die E-Mail-Adresse. + * + * Beispiel: + * ```php + * $email = $eventRegistration->getEmail(); + * ``` + * + * --- + * + * Returns the email address of the registration. + * + * @return string The email address. + * + * Example: + * ```php + * $email = $eventRegistration->getEmail(); + * ``` + */ public function getEmail(): string { return $this->getValue('email'); } + /** + * Gibt die Straße der Registrierung zurück. + * + * @return string Die Straße. + * + * Beispiel: + * ```php + * $street = $eventRegistration->getStreet(); + * ``` + * + * --- + * + * Returns the street of the registration. + * + * @return string The street. + * + * Example: + * ```php + * $street = $eventRegistration->getStreet(); + * ``` + */ public function getStreet(): string { return $this->getValue('street'); } + /** + * Gibt die Postleitzahl der Registrierung zurück. + * + * @return string Die Postleitzahl. + * + * Beispiel: + * ```php + * $postalCode = $eventRegistration->getPostalCode(); + * ``` + * + * --- + * + * Returns the postal code of the registration. + * + * @return string The postal code. + * + * Example: + * ```php + * $postalCode = $eventRegistration->getPostalCode(); + * ``` + */ public function getPostalCode(): string { return $this->getValue('zip'); } + /** + * Gibt die Postleitzahl der Registrierung zurück. + * + * @return string Die Postleitzahl. + * + * Beispiel: + * ```php + * $zip = $eventRegistration->getZip(); + * ``` + * + * --- + * + * Returns the zip code of the registration. + * + * @return string The zip code. + * + * Example: + * ```php + * $zip = $eventRegistration->getZip(); + * ``` + */ public function getZip(): string { return $this->getValue('zip'); } + /** + * Gibt die Stadt der Registrierung zurück. + * + * @return string Die Stadt. + * + * Beispiel: + * ```php + * $city = $eventRegistration->getCity(); + * ``` + * + * --- + * + * Returns the city of the registration. + * + * @return string The city. + * + * Example: + * ```php + * $city = $eventRegistration->getCity(); + * ``` + */ public function getCity(): string { return $this->getValue('city'); } - + /** + * Gibt die Telefonnummer der Registrierung zurück. + * + * @return string Die Telefonnummer. + * + * Beispiel: + * ```php + * $phone = $eventRegistration->getPhone(); + * ``` + * + * --- + * + * Returns the phone number of the registration. + * + * @return string The phone number. + * + * Example: + * ```php + * $phone = $eventRegistration->getPhone(); + * ``` + */ public function getPhone(): string { return $this->getValue('phone'); } + /** + * Gibt das Geburtsdatum der Registrierung zurück. + * + * @return string Das Geburtsdatum. + * + * Beispiel: + * ```php + * $birthday = $eventRegistration->getBirthday(); + * ``` + * + * --- + * + * Returns the birthday of the registration. + * + * @return string The birthday. + * + * Example: + * ```php + * $birthday = $eventRegistration->getBirthday(); + * ``` + */ public function getBirthday(): string { return $this->getValue('birthday'); } - + /** + * Gibt das formatierte Geburtsdatum der Registrierung zurück. + * + * @param string $format Das Datumsformat. Standard ist "Y-m-d H:i:s". + * @return string Das formatierte Geburtsdatum. + * + * Beispiel: + * ```php + * $formattedBirthday = $eventRegistration->getBirthdayFormatted("d.m.Y"); + * ``` + * + * --- + * + * Returns the formatted birthday of the registration. + * + * @param string $format The date format. Default is "Y-m-d H:i:s". + * @return string The formatted birthday. + * + * Example: + * ```php + * $formattedBirthday = $eventRegistration->getBirthdayFormatted("d.m.Y"); + * ``` + */ public function getBirthdayFormatted($format = "Y-m-d H:i:s") :string { if ($this->getBirthday() == "0000-00-00") { @@ -130,53 +606,261 @@ public function getBirthdayFormatted($format = "Y-m-d H:i:s") :string return date_format($date, $format); } } - + + /** + * Gibt die Zahlungsart der Registrierung zurück. + * + * @return string Die Zahlungsart. + * + * Beispiel: + * ```php + * $payment = $eventRegistration->getPayment(); + * ``` + * + * --- + * + * Returns the payment method of the registration. + * + * @return string The payment method. + * + * Example: + * ```php + * $payment = $eventRegistration->getPayment(); + * ``` + */ public function getPayment(): string { return $this->getValue('payment'); } - + /** + * Gibt die Nachricht der Registrierung zurück. + * + * @return string Die Nachricht. + * + * Beispiel: + * ```php + * $message = $eventRegistration->getMessage(); + * ``` + * + * --- + * + * Returns the message of the registration. + * + * @return string The message. + * + * Example: + * ```php + * $message = $eventRegistration->getMessage(); + * ``` + */ public function getMessage(): string { return $this->getValue('message'); } + /** + * Gibt den Kanal der Registrierung zurück. + * + * @return string Der Kanal. + * + * Beispiel: + * ```php + * $channel = $eventRegistration->getChannel(); + * ``` + * + * --- + * + * Returns the channel of the registration. + * + * @return string The channel. + * + * Example: + * ```php + * $channel = $eventRegistration->getChannel(); + * ``` + */ public function getChannel(): string { return $this->getValue('channel'); } + /** + * Gibt den Status der Registrierung zurück. + * + * @return int Der Status. + * + * Beispiel: + * ```php + * $status = $eventRegistration->getStatus(); + * ``` + * + * --- + * + * Returns the status of the registration. + * + * @return int The status. + * + * Example: + * ```php + * $status = $eventRegistration->getStatus(); + * ``` + */ public function getStatus(): int { return $this->getValue('status'); } - + /** + * Gibt den Preis der Registrierung zurück. + * + * @return float Der Preis. + * + * Beispiel: + * ```php + * $price = $eventRegistration->getPrice(); + * ``` + * + * --- + * + * Returns the price of the registration. + * + * @return float The price. + * + * Example: + * ```php + * $price = $eventRegistration->getPrice(); + * ``` + */ public function getPrice(): float { return $this->getValue('price'); } + /** + * Gibt die UUID der Registrierung zurück. + * + * @return string Die UUID. + * + * Beispiel: + * ```php + * $uuid = $eventRegistration->getUuid(); + * ``` + * + * --- + * + * Returns the UUID of the registration. + * + * @return string The UUID. + * + * Example: + * ```php + * $uuid = $eventRegistration->getUuid(); + * ``` + */ public function getUuid(): string { return $this->getValue('uuid'); } + /** + * Gibt zurück, ob die Registrierung den Newsletter akzeptiert hat. + * + * @return bool Wahr, wenn der Newsletter akzeptiert wurde, sonst falsch. + * + * Beispiel: + * ```php + * $hasAcceptedNewsletter = $eventRegistration->hasAcceptedNewsletter(); + * ``` + * + * --- + * + * Returns whether the registration has accepted the newsletter. + * + * @return bool True if the newsletter was accepted, otherwise false. + * + * Example: + * ```php + * $hasAcceptedNewsletter = $eventRegistration->hasAcceptedNewsletter(); + * ``` + */ public function hasAcceptedNewsletter(): bool { return $this->getValue('newsletter'); } - + /** + * Gibt zurück, ob die Registrierung die AGB akzeptiert hat. + * + * @return bool Wahr, wenn die AGB akzeptiert wurden, sonst falsch. + * + * Beispiel: + * ```php + * $hasAcceptedAgb = $eventRegistration->hasAcceptedAgb(); + * ``` + * + * --- + * + * Returns whether the registration has accepted the terms and conditions (AGB). + * + * @return bool True if the terms and conditions were accepted, otherwise false. + * + * Example: + * ```php + * $hasAcceptedAgb = $eventRegistration->hasAcceptedAgb(); + * ``` + */ public function hasAcceptedAgb(): bool { return $this->getValue('agb'); } + /** + * Gibt zurück, ob die Registrierung die Datenschutzrichtlinie akzeptiert hat. + * + * @return bool Wahr, wenn die Datenschutzrichtlinie akzeptiert wurde, sonst falsch. + * + * Beispiel: + * ```php + * $hasAcceptedPrivacyPolicy = $eventRegistration->hasAcceptedPrivacyPolicy(); + * ``` + * + * --- + * + * Returns whether the registration has accepted the privacy policy. + * + * @return bool True if the privacy policy was accepted, otherwise false. + * + * Example: + * ```php + * $hasAcceptedPrivacyPolicy = $eventRegistration->hasAcceptedPrivacyPolicy(); + * ``` + */ public function hasAcceptedPrivacyPolicy(): bool { return $this->getValue('dsgvo'); } - - public static function getByUuid(string $uuid = null): ?rex_yform_manager_collection + /** + * Gibt die Registrierung mit der gegebenen UUID zurück. + * + * @param string $uuid Die UUID der Registrierung. + * @return event_registration|null Die Registrierung oder null, wenn keine gefunden wurde. + * + * Beispiel: + * ```php + * $registration = event_registration::getByUuid($uuid); + * ``` + * + * --- + * + * Returns the registration with the given UUID. + * + * @param string $uuid The UUID of the registration. + * @return event_registration|null The registration or null if none was found. + * + * Example: + * ```php + * $registration = event_registration::getByUuid($uuid); + * ``` + */ + public static function getByUuid(string $uuid = null): ?event_registration { if (!$uuid) { return null; @@ -184,12 +868,56 @@ public static function getByUuid(string $uuid = null): ?rex_yform_manager_collec return self::query()->where('uuid', $uuid)->findOne(); } + /** + * Gibt den Hash der Registrierung zurück. + * + * @return string Der Hash. + * + * Beispiel: + * ```php + * $hash = $eventRegistration->getHash(); + * ``` + * + * --- + * + * Returns the hash of the registration. + * + * @return string The hash. + * + * Example: + * ```php + * $hash = $eventRegistration->getHash(); + * ``` + */ public function getHash(): string { return $this->getValue('hash'); } - public static function getByHash(string $hash = null): ?rex_yform_manager_collection + /** + * Gibt die Registrierung mit dem gegebenen Hash zurück. + * + * @param string $hash Der Hash der Registrierung. + * @return event_registration|null Die Registrierung oder null, wenn keine gefunden wurde. + * + * Beispiel: + * ```php + * $registration = event_registration::getByHash($hash); + * ``` + * + * --- + * + * Returns the registration with the given hash. + * + * @param string $hash The hash of the registration. + * @return event_registration|null The registration or null if none was found. + * + * Example: + * ```php + * $registration = event_registration::getByHash($hash); + * ``` + */ + public static function getByHash(string $hash = null): ?event_registration { if (!$hash) { return null; diff --git a/lib/event_registration_person.php b/lib/event_registration_person.php index eb7ac75..340f28a 100644 --- a/lib/event_registration_person.php +++ b/lib/event_registration_person.php @@ -1,7 +1,55 @@ setName("Max Mustermann"); + * $person->save(); + * ``` + * + * --- + * + * The `event_registration_person` class represents a person who has registered for an event. + * + * It inherits from the `rex_yform_manager_dataset` class. + * + * Example: + * ```php + * $person = new event_registration_person(); + * $person->setName("John Doe"); + * $person->save(); + * ``` + */ class event_registration_person extends \rex_yform_manager_dataset { + /** + * Gibt den Namen der registrierten Person zurück. + * + * @param bool $reverse Wenn true, wird der Nachname vor dem Vornamen zurückgegeben. Standardwert ist false. + * @return string Der Name der registrierten Person. + * + * Beispiel: + * ```php + * $name = $eventRegistrationPerson->getName(); + * ``` + * + * --- + * + * Returns the name of the registered person. + * + * @param bool $reverse If true, the last name is returned before the first name. Default is false. + * @return string The name of the registered person. + * + * Example: + * ```php + * $name = $eventRegistrationPerson->getName(); + * ``` + */ public function getName($reverse = false): string { $name = []; @@ -15,26 +63,158 @@ public function getName($reverse = false): string } return implode(" ", $name); } + /** + * Gibt den Vornamen der registrierten Person zurück. + * + * @return string Der Vorname der registrierten Person. + * + * Beispiel: + * ```php + * $firstName = $eventRegistrationPerson->getFirstName(); + * ``` + * + * --- + * + * Returns the first name of the registered person. + * + * @return string The first name of the registered person. + * + * Example: + * ```php + * $firstName = $eventRegistrationPerson->getFirstName(); + * ``` + */ public function getFirstName(): string { return $this->getValue('firstname'); } + + /** + * Gibt den Nachnamen der registrierten Person zurück. + * + * @return string Der Nachname der registrierten Person. + * + * Beispiel: + * ```php + * $lastName = $eventRegistrationPerson->getLastName(); + * ``` + * + * --- + * + * Returns the last name of the registered person. + * + * @return string The last name of the registered person. + * + * Example: + * ```php + * $lastName = $eventRegistrationPerson->getLastName(); + * ``` + */ public function getLastName(): string { return $this->getValue('lastname'); } + + /** + * Gibt die E-Mail-Adresse der registrierten Person zurück. + * + * @return string Die E-Mail-Adresse der registrierten Person. + * + * Beispiel: + * ```php + * $mail = $eventRegistrationPerson->getMail(); + * ``` + * + * --- + * + * Returns the email address of the registered person. + * + * @return string The email address of the registered person. + * + * Example: + * ```php + * $mail = $eventRegistrationPerson->getMail(); + * ``` + */ public function getMail(): string { return $this->getValue('email'); } + /** + * Gibt die Telefonnummer der registrierten Person zurück. + * + * @return string Die Telefonnummer der registrierten Person. + * + * Beispiel: + * ```php + * $phone = $eventRegistrationPerson->getPhone(); + * ``` + * + * --- + * + * Returns the phone number of the registered person. + * + * @return string The phone number of the registered person. + * + * Example: + * ```php + * $phone = $eventRegistrationPerson->getPhone(); + * ``` + */ public function getPhone(): string { return $this->getValue('phone'); } + + /** + * Gibt das Geburtsdatum der registrierten Person zurück. + * + * @return string Das Geburtsdatum der registrierten Person. + * + * Beispiel: + * ```php + * $birthday = $eventRegistrationPerson->getBirthday(); + * ``` + * + * --- + * + * Returns the birthday of the registered person. + * + * @return string The birthday of the registered person. + * + * Example: + * ```php + * $birthday = $eventRegistrationPerson->getBirthday(); + * ``` + */ public function getBirthday(): string { return $this->getValue('birthday'); } + + /** + * Gibt das formatierte Geburtsdatum der registrierten Person zurück. + * + * @param string $format Das Datumsformat. Standardwert ist "Y-m-d H:i:s". + * @return string Das formatierte Geburtsdatum der registrierten Person. + * + * Beispiel: + * ```php + * $formattedBirthday = $eventRegistrationPerson->getBirthdayFormatted("d.m.Y"); + * ``` + * + * --- + * + * Returns the formatted birthday of the registered person. + * + * @param string $format The date format. Default is "Y-m-d H:i:s". + * @return string The formatted birthday of the registered person. + * + * Example: + * ```php + * $formattedBirthday = $eventRegistrationPerson->getBirthdayFormatted("m/d/Y"); + * ``` + */ public function getBirthdayFormatted($format = "Y-m-d H:i:s") :string { if ($this->getBirthday() == "0000-00-00") { @@ -44,51 +224,273 @@ public function getBirthdayFormatted($format = "Y-m-d H:i:s") :string return date_format($date, $format); } } - + /** + * Gibt den Status der registrierten Person zurück. + * + * @return int Der Status der registrierten Person. + * + * Beispiel: + * ```php + * $status = $eventRegistrationPerson->getStatus(); + * ``` + * + * --- + * + * Returns the status of the registered person. + * + * @return int The status of the registered person. + * + * Example: + * ```php + * $status = $eventRegistrationPerson->getStatus(); + * ``` + */ public function getStatus(): int { return $this->getValue('status'); } + /** + * Gibt die ID des Event-Datums zurück, für das sich die Person registriert hat. + * + * @return int Die ID des Event-Datums. + * + * Beispiel: + * ```php + * $eventDateId = $eventRegistrationPerson->getEventDateId(); + * ``` + * + * --- + * + * Returns the ID of the event date for which the person has registered. + * + * @return int The ID of the event date. + * + * Example: + * ```php + * $eventDateId = $eventRegistrationPerson->getEventDateId(); + * ``` + */ public function getEventDateId(): int { return $this->getValue('event_date_id'); } + /** + * Gibt das Event-Datum zurück, für das sich die Person registriert hat. + * + * @return event_date|null Das Event-Datum oder null, wenn kein Event-Datum gesetzt ist. + * + * Beispiel: + * ```php + * $eventDate = $eventRegistrationPerson->getEventDate(); + * ``` + * + * --- + * + * Returns the event date for which the person has registered. + * + * @return event_date|null The event date or null if no event date is set. + * + * Example: + * ```php + * $eventDate = $eventRegistrationPerson->getEventDate(); + * ``` + */ + public function getEventDate(): ?event_date + { + return $this->getRelatedDataset('event_date_id'); + } + /** + * Gibt die ID der Registrierung zurück. + * + * @return int Die ID der Registrierung. + * + * Beispiel: + * ```php + * $registrationId = $eventRegistrationPerson->getRegistrationId(); + * ``` + * + * --- + * + * Returns the ID of the registration. + * + * @return int The ID of the registration. + * + * Example: + * ```php + * $registrationId = $eventRegistrationPerson->getRegistrationId(); + * ``` + */ public function getRegistrationId(): int { return $this->getValue('registration_id'); } - + /** + * Gibt die Registrierung zurück, für die die Person registriert ist. + * + * @return rex_yform_manager_collection|null Die Registrierung oder null, wenn keine Registrierung gesetzt ist. + * + * Beispiel: + * ```php + * $registration = $eventRegistrationPerson->getRegistration(); + * ``` + * + * --- + * + * Returns the registration for which the person is registered. + * + * @return rex_yform_manager_collection|null The registration or null if no registration is set. + * + * Example: + * ```php + * $registration = $eventRegistrationPerson->getRegistration(); + * ``` + */ public function getRegistration(): ?rex_yform_manager_collection { return $this->getRelatedDataset('registration_id'); } + /** + * Gibt die ID der Kategorie zurück, für die die Person registriert ist. + * + * @return int Die ID der Kategorie. + * + * Beispiel: + * ```php + * $categoryId = $eventRegistrationPerson->getCategoryId(); + * ``` + * + * --- + * + * Returns the ID of the category for which the person is registered. + * + * @return int The ID of the category. + * + * Example: + * ```php + * $categoryId = $eventRegistrationPerson->getCategoryId(); + * ``` + */ public function getCategoryId(): int { - return $this->getRegistration()->getCategory()->getId(); + /** @var event_registration $registration */ + $registration = $this->getRegistration(); + /** @var event_category $category */ + $category = $registration->getCategory(); + return $category->getId(); } - + /** + * Gibt den Hash der registrierten Person zurück. + * + * @return string Der Hash der registrierten Person. + * + * Beispiel: + * ```php + * $hash = $eventRegistrationPerson->getHash(); + * ``` + * + * --- + * + * Returns the hash of the registered person. + * + * @return string The hash of the registered person. + * + * Example: + * ```php + * $hash = $eventRegistrationPerson->getHash(); + * ``` + */ public function getHash(): string { return $this->getValue('hash'); } - - public static function getByUuid($uuid = null): ?rex_yform_manager_collection + + /** + * Gibt die registrierte Person zurück, die der angegebenen UUID entspricht. + * + * @param string|null $uuid Die UUID der gesuchten Person. Wenn null, wird null zurückgegeben. + * @return event_registration_person|null Die registrierte Person oder null, wenn keine Person gefunden wurde. + * + * Beispiel: + * ```php + * $person = event_registration_person::getByUuid("123e4567-e89b-12d3-a456-426614174000"); + * ``` + * + * --- + * + * Returns the registered person that corresponds to the specified UUID. + * + * @param string|null $uuid The UUID of the person being sought. If null, null is returned. + * @return event_registration_person|null The registered person or null if no person was found. + * + * Example: + * ```php + * $person = event_registration_person::getByUuid("123e4567-e89b-12d3-a456-426614174000"); + * ``` + */ + public static function getByUuid(string $uuid = null): ?event_registration_person { if (!$uuid) { - return; + return null; } return self::query()->where('uuid', $uuid)->findOne(); } - public static function getByHash($hash = null): ?rex_yform_manager_collection + /** + * Gibt die registrierte Person zurück, die dem angegebenen Hash entspricht. + * + * @param string|null $hash Der Hash der gesuchten Person. Wenn null, wird null zurückgegeben. + * @return event_registration_person|null Die registrierte Person oder null, wenn keine Person gefunden wurde. + * + * Beispiel: + * ```php + * $person = event_registration_person::getByHash("123abc456def"); + * ``` + * + * --- + * + * Returns the registered person that corresponds to the specified hash. + * + * @param string|null $hash The hash of the person being sought. If null, null is returned. + * @return event_registration_person|null The registered person or null if no person was found. + * + * Example: + * ```php + * $person = event_registration_person::getByHash("123abc456def"); + * ``` + */ + public static function getByHash(string $hash = null): ?event_registration_person { if (!$hash) { - return; + return null; } return self::query()->where('hash', $hash)->findOne(); } - public static function ep_saved($ep): bool + + /** + * Wird aufgerufen, wenn ein Datensatz gespeichert wird. + * + * @param rex_extension_point $ep Der Extension Point. + * @return bool Immer true. + * + * Beispiel: + * ```php + * $result = event_registration_person::ep_saved($ep); + * ``` + * + * --- + * + * Called when a record is saved. + * + * @param rex_extension_point $ep The extension point. + * @return bool Always true. + * + * Example: + * ```php + * $result = event_registration_person::ep_saved($ep); + * ``` + */ + public static function ep_saved(rex_extension_point $ep): bool { $lastId = $ep->getSubject()->getLastId(); $table = $ep->getParam('table'); diff --git a/lib/rex_api_events_ics_file.php b/lib/rex_api_events_ics_file.php index 51da212..9994814 100644 --- a/lib/rex_api_events_ics_file.php +++ b/lib/rex_api_events_ics_file.php @@ -11,11 +11,13 @@ public function execute(): void $result = [ 'errorcode' => 1, rex_i18n::msg('rex_api_events_ics_file_no_id') ]; self::httpError($result); } else { - $ics_filename = event_date::get($event_id)->getName(); + /** @var $event event_date */ + $event = event_date::get($event_id); + $ics_filename = $event->getName(); header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="' . $ics_filename . '.ics"'); - exit(event_date::get($event_id)->getIcs()); + exit($event->getIcs()); } } diff --git a/lib/yform/action/event_date_registration_person_fill.php b/lib/yform/action/event_date_registration_person_fill.php index ce4531d..aca83bd 100644 --- a/lib/yform/action/event_date_registration_person_fill.php +++ b/lib/yform/action/event_date_registration_person_fill.php @@ -1,5 +1,32 @@ setActionField('event_date_registration_person_fill', []); + * ``` + * + * --- + * + * The `rex_yform_action_event_date_registration_person_fill` class extends YForm with an action, + * that makes it easier to capture participant lists and registrations with multiple people, + * when a registration includes more than one person. + * + * It inherits from the `rex_yform_action_abstract` class and provides additional methods + * for interacting with the registrations of an event date. + * + * Example: + * ```php + * $yform->setActionField('event_date_registration_person_fill', []); + * ``` + */ class rex_yform_action_event_date_registration_person_fill extends rex_yform_action_abstract { public function executeAction(): void diff --git a/package.yml b/package.yml index b7d390a..ae88fe6 100644 --- a/package.yml +++ b/package.yml @@ -1,5 +1,5 @@ package: events -version: '4.0.1' +version: '4.0.2' author: 'Alexander Walther' supportpage: https://alexplusde.github.io/events/ load: late @@ -102,10 +102,10 @@ pages: perm: admin docs: title: Docs - subPath: README.md icon: rex-icon fa-info-circle itemclass: pull-right perm: events[docs] + pjax: false default_config: currency: EUR diff --git a/pages/data_edit.php b/pages/data_edit.php index 2884d5e..1c7dc99 100644 --- a/pages/data_edit.php +++ b/pages/data_edit.php @@ -1,32 +1,36 @@ getProperty('page')['title']); + $yform = rex_package::get("events")->getProperty('pages')[rex_be_controller::getCurrentPagePart(1)]['subpages'][rex_be_controller::getCurrentPagePart(2)]['yform']; $table_name = $yform['table_name'] ?? ''; $show_title = true === ($yform['show_title'] ?? false); $wrapper_class = $yform['wrapper_class'] ?? ''; -if( $table_name ) { +if($table_name) { $_REQUEST['table_name'] = $table_name; } -if( !$show_title ){ +if(!$show_title) { \rex_extension::register( 'YFORM_MANAGER_DATA_PAGE_HEADER', - function( \rex_extension_point $ep ) { + function (\rex_extension_point $ep) { if ($ep->getParam('yform')->table->getTableName() === $ep->getParam('table_name')) { return ''; } }, - \rex_extension::EARLY,['table_name'=>$table_name] + \rex_extension::EARLY, + ['table_name'=>$table_name] ); } -if( $wrapper_class ){ +if($wrapper_class) { echo '
'; } -include \rex_path::plugin('yform','manager','pages/data_edit.php'); +include \rex_path::plugin('yform', 'manager', 'pages/data_edit.php'); -if( $wrapper_class ) { +if($wrapper_class) { echo '
'; } diff --git a/pages/docs.php b/pages/docs.php new file mode 100644 index 0000000..2e47277 --- /dev/null +++ b/pages/docs.php @@ -0,0 +1,48 @@ +getPath('docs').'/*.md') ?: [] as $file) { + $mdFiles[mb_substr(basename($file), 0, -3)] = $file; +} + +$currenMDFile = rex_request('mdfile', 'string', '01_intro'); +if (!array_key_exists($currenMDFile, $mdFiles)) { + $currenMDFile = '01_intro'; +} + +$page = rex_be_controller::getPageObject('events/docs'); + +if (null !== $page) { + foreach ($mdFiles as $key => $mdFile) { + $keyWithoudPrio = mb_substr($key, 3); + $currenMDFileWithoudPrio = mb_substr($currenMDFile, 3); + $page->addSubpage( + (new rex_be_page($key, rex_i18n::msg('events_docs_'.$keyWithoudPrio))) + ->setSubPath($mdFile) + ->setHref('index.php?page=events/docs&mdfile='.$key) + ->setIsActive($key == $currenMDFile) + ); + } +} + +echo rex_view::title($this->i18n('events_title')); + +[$Toc, $Content] = rex_markdown::factory()->parseWithToc(rex_file::require($mdFiles[$currenMDFile]), 2, 3, [ + rex_markdown::SOFT_LINE_BREAKS => false, + rex_markdown::HIGHLIGHT_PHP => true, +]); + +$fragment = new rex_fragment(); +$fragment->setVar('content', $Content, false); +$fragment->setVar('toc', $Toc, false); +$content = $fragment->parse('core/page/docs.php'); + +$fragment = new rex_fragment(); +$fragment->setVar('title', rex_i18n::msg('package_help') . ' ', false); +$fragment->setVar('body', $content, false); +echo $fragment->parse('core/page/section.php'); diff --git a/pages/events.calendar.php b/pages/events.calendar.php index 2b4d12a..dad4684 100644 --- a/pages/events.calendar.php +++ b/pages/events.calendar.php @@ -1,5 +1,7 @@ getProperty('page')['title']); + $body = '
'; $fragment = new rex_fragment(); diff --git a/pages/events.dev.php b/pages/events.dev.php deleted file mode 100644 index cd07fa7..0000000 --- a/pages/events.dev.php +++ /dev/null @@ -1,5 +0,0 @@ -getTimezone(51.088506,13.723908)); -dump(event_date::get(2)); -dump(event_date::get(2)->getLocation()); -dump(event_date::get(2)->getJsonLd()); diff --git a/pages/events.docs.php b/pages/events.docs.php new file mode 100644 index 0000000..58e2e3c --- /dev/null +++ b/pages/events.docs.php @@ -0,0 +1,48 @@ +getPath('docs').'/*.md') ?: [] as $file) { + $mdFiles[mb_substr(basename($file), 0, -3)] = $file; +} + +$currenMDFile = rex_request('mdfile', 'string', '01_intro'); +if (!array_key_exists($currenMDFile, $mdFiles)) { + $currenMDFile = '00_intro'; +} + +$page = rex_be_controller::getPageObject('events/docs'); + +if (null !== $page) { + foreach ($mdFiles as $key => $mdFile) { + $keyWithoutPrio = mb_substr($key, 3); + $currenMDFileWithoudPrio = mb_substr($currenMDFile, 3); + $page->addSubpage( + (new rex_be_page($key, rex_i18n::msg(''.$keyWithoutPrio))) + ->setSubPath($mdFile) + ->setHref('index.php?page=events/docs&mdfile='.$key) + ->setIsActive($key == $currenMDFile) + ); + } +} + +echo rex_view::title($this->i18n('events_title')); + +[$Toc, $Content] = rex_markdown::factory()->parseWithToc(rex_file::require($mdFiles[$currenMDFile]), 2, 3, [ + rex_markdown::SOFT_LINE_BREAKS => false, + rex_markdown::HIGHLIGHT_PHP => true, +]); + +$fragment = new rex_fragment(); +$fragment->setVar('content', $Content, false); +$fragment->setVar('toc', $Toc, false); +$content = $fragment->parse('core/page/docs.php'); + +$fragment = new rex_fragment(); +$fragment->setVar('title', rex_i18n::msg('package_help') . ' ', false); +$fragment->setVar('body', $content, false); +echo $fragment->parse('core/page/section.php'); diff --git a/pages/events.php b/pages/events.php index 473d00b..f75e4b3 100644 --- a/pages/events.php +++ b/pages/events.php @@ -1,4 +1,3 @@ getProperty('page')['title']); rex_be_controller::includeCurrentPageSubPath(); diff --git a/pages/events.settings.php b/pages/events.settings.php index af4d5ff..8f2945e 100644 --- a/pages/events.settings.php +++ b/pages/events.settings.php @@ -1,5 +1,7 @@ getProperty('page')['title']); + $addon = rex_addon::get('events'); $form = rex_config_form::factory($addon->getName());