11646 lines
428 KiB
HTML
11646 lines
428 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
iCalcreator, the PHP class package managing iCal (rfc2445/rfc5545) calendar information.
|
|
|
|
This file is a part of iCalcreator.
|
|
|
|
author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
|
|
copyright 2007-2022 Kjell-Inge Gustafsson, kigkonsult, All rights reserved
|
|
link https://kigkonsult.se
|
|
license Subject matter of licence is the software iCalcreator.
|
|
The above copyright, link, package and version notices,
|
|
this licence notice and the invariant [rfc5545] PRODID result use
|
|
as implemented and invoked in iCalcreator shall be included in
|
|
all copies or substantial portions of the iCalcreator.
|
|
|
|
iCalcreator is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as
|
|
published by the Free Software Foundation, either version 3 of
|
|
the License, or (at your option) any later version.
|
|
|
|
iCalcreator is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with iCalcreator. If not, see <https://www.gnu.org/licenses/>.
|
|
-->
|
|
<html lang="en">
|
|
<head>
|
|
<title>iCalcreator 2.41.70 manual</title>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
|
<meta name="author" content="Kjell-Inge Gustafsson, kigkonsult, All rights reserved">
|
|
<meta name="copyright" content="2007-2022 Kjell-Inge Gustafsson, kigkonsult">
|
|
<meta name="keywords" content="ical, calendar, calender, xcal, xml, icalender, rfc2445, rfc5545, vcalender, php, create">
|
|
<meta name="description" content="using iCalcreator v2.41.70">
|
|
<style>
|
|
* {
|
|
FONT-FAMILY : "Bitstream Vera Sans", Helvetica, "Lucida Grande","Lucida Sans Unicode", Lucida, Arial, Geneva, sans-serif;
|
|
BACKGROUND-COLOR: white;
|
|
COLOR : black;
|
|
FONT-SIZE : small;
|
|
}
|
|
body {
|
|
MARGIN-LEFT : 10px;
|
|
WIDTH : 750px;
|
|
}
|
|
a.ref {
|
|
BACKGROUND-COLOR: inherit;
|
|
FONT-SIZE : 8pt;
|
|
LETTER-SPACING : 0.1em;
|
|
}
|
|
h1 {
|
|
BACKGROUND-COLOR: silver;
|
|
BORDER : thin solid black;
|
|
FONT-SIZE : x-large;
|
|
FONT-WEIGHT : bold;
|
|
DISPLAY : block;
|
|
}
|
|
h2 {
|
|
FONT-SIZE : large;
|
|
}
|
|
h3 {
|
|
FONT-SIZE : medium;
|
|
}
|
|
h4 {
|
|
FONT-SIZE : small;
|
|
FONT-WEIGHT : bold;
|
|
}
|
|
h5 {
|
|
FONT-SIZE : small;
|
|
FONT-WEIGHT : normal;
|
|
TEXT-DECORATION : underline;
|
|
}
|
|
table {
|
|
border-collapse : collapse;
|
|
width : 100%;
|
|
}
|
|
.bb {
|
|
BORDER-BOTTOM : gray dotted thin;
|
|
}
|
|
.bl {
|
|
BORDER-LEFT : gray dotted thin;
|
|
}
|
|
.center {
|
|
TEXT-ALIGN : center;
|
|
}
|
|
p.comment {
|
|
FONT-FAMILY : monospace;
|
|
FONT-SIZE : 9pt;
|
|
FONT-WEIGHT : 500;
|
|
WHITE-SPACE : pre-wrap; /* css-3 */
|
|
WHITE-SPACE : -moz-pre-wrap; /* Mozilla, since 1999 */
|
|
WHITE-SPACE : -o-pre-wrap; /* Opera 7 */
|
|
}
|
|
span.comment {
|
|
BACKGROUND-COLOR: transparent;
|
|
FONT-FAMILY : Areal, sans-serif;
|
|
FONT-SIZE : 8pt;
|
|
LETTER-SPACING : 0.2em;
|
|
}
|
|
p.example {
|
|
BACKGROUND-COLOR: #DCDCDC;
|
|
font-family : monospace;
|
|
FONT-SIZE : 9pt;
|
|
LETTER-SPACING : 0.1em;
|
|
LINE-HEIGHT : 1.5em;
|
|
WHITE-SPACE : pre-wrap; /* css-3 */
|
|
WHITE-SPACE : -moz-pre-wrap; /* Mozilla, since 1999 */
|
|
WHITE-SPACE : -o-pre-wrap; /* Opera 7 */
|
|
}
|
|
p.format, span.format {
|
|
BORDER : gray dotted thin;
|
|
FONT-FAMILY : Helvetica, sans-serif;
|
|
FONT-SIZE : 9pt;
|
|
LETTER-SPACING : 0.2em;
|
|
LINE-HEIGHT : 2em;
|
|
WHITE-SPACE : pre-wrap; /* css-3 */
|
|
WHITE-SPACE : -moz-pre-wrap; /* Mozilla, since 1999 */
|
|
WHITE-SPACE : -o-pre-wrap; /* Opera 7 */
|
|
}
|
|
.header {
|
|
BACKGROUND-COLOR: silver;
|
|
BORDER : thin solid black;
|
|
FONT-SIZE : xx-large;
|
|
}
|
|
p.label {
|
|
FONT-FAMILY : Arial, sans-serif;
|
|
FONT-WEIGHT : bold;
|
|
LETTER-SPACING : 0.1em;
|
|
}
|
|
p.quotes {
|
|
BACKGROUND-COLOR: #F5F5F5;
|
|
FONT-FAMILY : Arial, sans-serif;
|
|
FONT-STYLE : italic;
|
|
LETTER-SPACING : 0.1em;
|
|
}
|
|
sup {
|
|
BACKGROUND-COLOR: transparent;
|
|
FONT-SIZE : x-small;
|
|
FONT-WEIGHT : bold;
|
|
VERTICAL-ALIGN : super;
|
|
}
|
|
.ref {
|
|
BACKGROUND-COLOR: transparent;
|
|
FONT-SIZE : 8pt;
|
|
LETTER-SPACING : 0.1em;
|
|
}
|
|
.top {
|
|
VERTICAL-ALIGN : top;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a id="top"></a>
|
|
<p class="header">iCalcreator v2.41.70</p>
|
|
<p>
|
|
iCalcreator v2.41.70<br>
|
|
Copyright © 2007-2022 Kjell-Inge Gustafsson, kigkonsult, All rights reserved.<br>
|
|
<a href="#Copyright_and_Licence">Copyright_and_Licence</a><br>
|
|
<a href="https://kigkonsult.se" title="kigkonsult.se" target="_blank">kigkonsult.se</a><br>
|
|
Contact iCal_at_kigkonsult_dot_se
|
|
</p>
|
|
|
|
<h2>Preface</h2>
|
|
<p>
|
|
This document describes usage of iCalcreator, the <em>PHP</em> software implementation of standards
|
|
<a href="https://tools.ietf.org/html/rfc5545" title="Download rfc5545" target="_blank">rfc5545</a>/
|
|
<a href="https://tools.ietf.org/html/rfc5546" title="Download rfc5546" target="_blank">rfc5546</a>/
|
|
<a href="https://tools.ietf.org/html/rfc5870" title="Download rfc5870" target="_blank">rfc5870</a>/
|
|
<a href="https://tools.ietf.org/html/rfc6321" title="Download rfc6321" target="_blank">rfc6321</a>/
|
|
<a href="https://tools.ietf.org/html/rfc6868" title="Download rfc6868" target="_blank">rfc6868</a>/
|
|
<a href="https://tools.ietf.org/html/rfc7529" title="Download rfc7529" target="_blank">rfc7529</a>/
|
|
<a href="https://tools.ietf.org/html/rfc7808" title="Download rfc7808" target="_blank">rfc7808</a>/
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>/
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>/
|
|
<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank"> rfc9074</a>
|
|
and other IETF rfc documents to manage calendar information.
|
|
The fc5545/rfc5546 obsoletes rfc2445/rfc2446.
|
|
</p>
|
|
<p>
|
|
This document is provided by kigkonsult for informational purposes
|
|
and is provided on an "as is" basis without any warranties expressed or implied.
|
|
</p>
|
|
<p>
|
|
Information in this document is subject to change without notice and does
|
|
not represent a commitment on the part of kigkonsult.
|
|
The software described in this document is provided under a <a href="#Copyright_and_Licence">license agreement</a>.
|
|
The software may be used only in accordance with the terms of that <a href="#Copyright_and_Licence">license agreement</a>.
|
|
It is against the law to copy or use the software except as specifically allowed in the <a href="#Copyright_and_Licence">license agreement</a>.
|
|
</p>
|
|
<p>
|
|
It is the users responsibility to ensure the suitability of the software before using it.
|
|
In no circumstances will kigkonsult be responsible for
|
|
the use of the software's outcomes or results or any loss
|
|
or damage of data or programs as a result of using the software.
|
|
</p>
|
|
<p>
|
|
The use of the software implies acceptance of these terms and the <a href="#Copyright_and_Licence">license</a>.
|
|
</p>
|
|
<p>
|
|
This document makes previous versions obsolete.
|
|
</p>
|
|
<a href="#INDEX">[index]</a>
|
|
|
|
<a id="INTRO"></a><h1>1 INTRO</h1>
|
|
<p>
|
|
iCalcreator is the <em>PHP</em> class package managing iCal calendar information,
|
|
supporting (non-)calendar
|
|
systems and applications to process and communicate calendar information like
|
|
events, agendas, tasks, reports, totos and journaling information.
|
|
</p>
|
|
<p>
|
|
iCalcreator features create, parse, edit and select <strong>calendar</strong> and <strong>calendar</strong> components.
|
|
</p>
|
|
<p>
|
|
For iCalcreator 2.40 version (and later), <em>PHP</em> version >= 8.0 is required,
|
|
version v2.39 <em>PHP</em>7+.
|
|
|
|
To support the development, maintenance and test process
|
|
<a href="https://github.com/PHPCompatibility/PHPCompatibility" title="PHPCompatibility">PHPCompatibility</a>,
|
|
<a href="https://github.com/phpstan/phpstan" title="PHPStan">PHPStan</a>
|
|
and
|
|
<a href="https://github.com/DeGraciaMathieu/php-arguments-detector" title="php-arguments-detector">php-arguments-detector</a>
|
|
are included.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
<a id="Standards"></a><h2>1.1 Standards</h2>
|
|
|
|
<h4>iCal</h4>
|
|
<p>
|
|
A short iCal description is found at <a href="https://en.wikipedia.org/wiki/ICalendar" title="iCalendar From Wikipedia, the free encyclopedia" target="_blank">Wikipedia</a>.
|
|
If You are not familiar with iCal, read this first!
|
|
</p>
|
|
<a id="IETF_rfc"></a>
|
|
<p>
|
|
The <strong>iCalendar</strong> format, <strong>iCal</strong>, are described in
|
|
</p>
|
|
<dl>
|
|
<dt><a href="https://tools.ietf.org/html/rfc5545" title="Download rfc5545" target="_blank">rfc5545</a></dt>
|
|
<dd>quot;Internet Calendaring and Scheduling Core Object Specification (<strong>iCalendar</strong>)"quot;</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc5546" title="Download rfc5546" target="_blank">rfc5546</a></dt>
|
|
<dd>"iCalendar Transport-Independent Interoperability Protocol (iTIP)"<br>Scheduling Events, BusyTime, To-dos and Journal Entries
|
|
<p class="quotes">. ..allows for the capture and exchange of information normally stored
|
|
within a calendaring and scheduling application.</p>
|
|
and
|
|
<p class="quotes">. ..is an exchange format between applications or systems.</p>
|
|
</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc5870" title="Download rfc5870" target="_blank">rfc5870</a></dt>
|
|
<dd>"A Uniform Resource Identifier for Geographic Locations (geo URI)"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc6321" title="Download rfc6321" target="_blank">rfc6321</a></dt>
|
|
<dd>"xCal: The XML Format for iCalendar"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc6868" title="Download rfc6868" target="_blank">rfc6868</a></dt>
|
|
<dd>"Parameter Value Encoding in iCalendar and vCard"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc7529" title="Download rfc7529" target="_blank">rfc7529</a></dt>
|
|
<dd>"Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Specification (iCalendar)"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc7808" title="Download rfc7808" target="_blank">rfc7808</a></dt>
|
|
<dd>"Time Zone Data Distribution Service"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a></dt>
|
|
<dd>"Calendar Availability"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a></dt>
|
|
<dd>"New Properties for iCalendar"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a></dt>
|
|
<dd>"Event Publishing Extensions to iCalendar"</dd>
|
|
|
|
<dt><a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank"> rfc9074</a></dt>
|
|
<dd>"VALARM Extensions for iCalendar"</dd>
|
|
|
|
</dl>
|
|
|
|
<p>
|
|
<a href="https://tools.ietf.org/html/rfc5545" title="Download rfc5545" target="_blank">rfc5545</a> and
|
|
<a href="https://tools.ietf.org/html/rfc5546" title="Download rfc5546" target="_blank">rfc5546</a>
|
|
obsoletes, respectively,
|
|
<a href="https://tools.ietf.org/html/rfc2445" title="Download rfc2445" target="_blank">rfc2445</a> and
|
|
<a href="https://tools.ietf.org/html/rfc2446" title="Download rfc2446" target="_blank">rfc2446</a>.
|
|
</p>
|
|
|
|
<p>
|
|
For <a href="https://www.ietf.org/" target="_blank">IETF</a> rfc documents, copyright and licence,
|
|
see the "Copyright Notice" content part in top of each IETF rfc document.
|
|
</p>
|
|
|
|
<p>
|
|
A short xCal description is found at <a href="https://en.wikipedia.org/wiki/XCal" title="xCal on Wikipedia, the free encyclopedia" target="_blank">Wikipedia</a>.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="This_manual"></a><h2>1.2 This manual</h2>
|
|
<p>This style is used for text.</p>
|
|
<p class="format">This style is used for formats.</p>
|
|
<p class="example">
|
|
This style is used for <em>PHP</em> coding examples.
|
|
<span class="comment"> // this style is used for coding comments.</span>
|
|
|
|
</p>
|
|
<p class="comment">This style is used for content details.</p>
|
|
<p class="quotes">This style may be used for quotes and/or extracts.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="Versioning"></a><h2>1.3 Versioning</h2>
|
|
|
|
<p>The release numbering convention used is major.minor(.micro / suffix).</p>
|
|
<dl>
|
|
<dt>Major
|
|
<dd>Indicates a very large change in the core package. Rewrites or major milestones.
|
|
<dt>Minor
|
|
<dd>Significant amount of feature addition/modification.<br>odd number - development/experimental release<br> even number - production release
|
|
<dt>Micro
|
|
<dd>Primarily bug fix and maintenance number.
|
|
<dt>Suffix (opt)
|
|
<dd>rc1 for first release candidate etc.
|
|
</dl>
|
|
|
|
<p>The release plan is based on yearly releases with exception of emergency releases.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
<a id="Support"></a><h2>1.4 Support</h2>
|
|
<p>
|
|
For bug report or support request, use <a href="https://github.com/iCalcreator/iCalcreator/issues" title="kigkonsult.se issues" target="_blank"> github issues</a>.
|
|
</p>
|
|
<p>
|
|
For previous iCalcreator (master) releases or non-emergency issues, support upon (paid) request only.
|
|
</p>
|
|
<p>
|
|
kigkonsult offer professional services for software support, design and new/re-development and unit tests
|
|
of <em>PHP</em>/<em>MySQL</em> solutions with focus on software lifecycle management, including long term utility, reliability and maintainability.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="Donate"></a><h2>1.5 Donate</h2>
|
|
<p>
|
|
You can show your appreciation for our free software,
|
|
and can support future development by making a donation to the kigkonsult project iCalcreator
|
|
using <a href="https://paypal.me/kigkonsult" rel="nofollow" target="_blank">paypal.me/kigkonsult</a>.
|
|
For invoice, <a href="mailto:ical@kigkonsult.se">please e-mail</a>.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
<a id="INSTALL"></a><h2>1.6 Install</h2>
|
|
|
|
<dl>
|
|
<dt>Composer (https://getcomposer.org/)
|
|
<dd>
|
|
<dd>composer require kigkonsult/icalcreator
|
|
<dd>
|
|
<dt>Or
|
|
<dd> include the (download) iCalcreator folder to your include-path
|
|
<dd>Add
|
|
<dd><span class="format">require_once "[path/]iCalcreator-2.41.70/autoload.php";</span>
|
|
<dd>to your <em>PHP</em>-script.
|
|
</dl>
|
|
<p>Builds :</p>
|
|
<dl>
|
|
<dt>v2.41.70</dt>
|
|
<dd>v2.42 pre-release</dd>
|
|
<dt>v2.40</dt>
|
|
<dd>stable PHP8</dd>
|
|
<dt>v2.39</dt>
|
|
<dd>PHP7</dd>
|
|
</dl>
|
|
|
|
<p>
|
|
iCalcreator 2.41.70 is using namespace "Kigkonsult\Icalcreator".
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="Major_changes"></a><h2>1.7 Major changes</h2>
|
|
<p>
|
|
Here are update headlines in this version.
|
|
</p>
|
|
|
|
<ul>
|
|
<li>more PHP8 updates, StringFactory::getRandChars() upd</li>
|
|
|
|
<li>rfc7808 new Vtimezone properties TZID-ALIAS-OF/TZUNTIL</li>
|
|
|
|
<li>rfc9074 new Valarm properties: UID, RELATED-TO, ACKNOWLEDGED, PROXIMITY</li>
|
|
|
|
<li>rfc9073 new properties <br>
|
|
for Vevent, Vtodo, Vjournal : STRUCTURED-DATA <br>
|
|
for Vevent, Vtodo, Vjournal, Valarm : STYLED_DESCRIPTION <br>
|
|
new Vcalendar/component method participants2Attendees()
|
|
</li>
|
|
|
|
<li>rfc9073 new component PARTICIPANT with new property CALENDAR-ADDRESS</li>
|
|
|
|
<li>rfc9073 new subComponent VLOCATION with new property LOCATION-TYPE</li>
|
|
|
|
<li>method(s) Vcalendar/caledarComponent::getComponent() moved to IcalBase</li>
|
|
|
|
<li>rfc9073 new subComponent VRESOURCE with new property RESOURCE-TYPE<br>
|
|
restructure of abstract classes</li>
|
|
|
|
<li>(new) signature of newAlarm, newParticipant, newVlocation, newVresource methods</li>
|
|
|
|
<li>rfc7953 new component VAVAILABILITY with new property BUSYTYPE</li>
|
|
|
|
<li>rfc7953 new component AVAILABLE</li>
|
|
|
|
<li>upd VtimezonePopulateFactory::process(), accept multiple timeszones<br>
|
|
arg timezone as string|string[]</li>
|
|
|
|
<li>rfc5870 Uniform Resource Identifier for Geographic Locations ('geo' URI)</li>
|
|
|
|
<li>rfc6868 Parameter Value Encoding in iCalendar and vCard</li>
|
|
|
|
<li>general upd factory methods (ex newVevent), arguments</li>
|
|
|
|
<li>
|
|
Vcalendar/component method participants2Attendees() upd (Participant uid+type as x-params)<br>
|
|
Vcalendar/Vevent/Vtodo method vlocationNames2Locations()() upd (Vlocation uid+type as x-params)<br>
|
|
Vcalendar/Vevent/Vtodo method vresourceNames2Resources() upd (Vresource uid+type as x-params)
|
|
</li>
|
|
|
|
<li>
|
|
<b>upd</b> multi Decription<br>
|
|
bug component::setDtend()<br>
|
|
<b>upd</b> createCalendar/Component methods<br>
|
|
using.html doc upd<br>
|
|
Vcalendar/Component::getXprop() consecutive invokes bug
|
|
</li>
|
|
|
|
<li>
|
|
Parsetest upd<br>
|
|
<b>upd</b> doc GEO/NAME component occurence<br>
|
|
CONTACT/DESCRIPTION/LOCATION/NAME property get-methods and IcalXMLFactory::compProps2Xml() logic<br>
|
|
Vcalendar::setComponents() bug, insert Vtimezone(s) first (not last)<br>
|
|
<b>upd</b> participants2Attendees() : Participant-type to (ATTENDEE) parameter ROLE
|
|
<br><br>
|
|
</li>
|
|
<li>
|
|
<b>new</b>, Component::is<Property>Set() methods
|
|
<br><br>
|
|
</li>
|
|
|
|
<li>
|
|
<b>upd</b>, all property value/params contents are now (class) Pc, an ArrayObject extend class<br>
|
|
Vcalendar/Component::get<Property>() methods return property->value or Pc (dep. on arg inclParam)<br>
|
|
For arg inclParam=true return usage: $return["value"] <=> $return->value (dito params)<br>
|
|
Pc has also getter/setter-methods etc<br>
|
|
rewrite of Vcalendar/Component::set<property> methods<br>
|
|
Vcalendar/Component::set<property>() methods accepts Pc as first arg
|
|
<br><br>
|
|
</li>
|
|
|
|
<li>
|
|
Component::createAttendee() param format bug<br>
|
|
Changed Freebusy::getFreebusy() output, fbBusyType now in params<br>
|
|
Multi-properties help methods moved to trait
|
|
</li>
|
|
|
|
<li>
|
|
RequestSstatus exRule, int properties bug<br>
|
|
Pc::getParams() new arg (bool) asXparamkey<br>
|
|
github #99-101
|
|
</li>
|
|
|
|
<li>
|
|
Extended tests<br>
|
|
Refresh_Interval trait bug<br>
|
|
Calendar parse upd
|
|
<br><br>
|
|
</li>
|
|
|
|
<li>
|
|
<b>new</b> vCalendar/CalendarComponent::getComponents() methods, return array(*component)
|
|
</li>
|
|
<li>
|
|
ALL multi-props have <getAllProperty> method, return array, values only / full
|
|
</li>
|
|
<li>
|
|
opt URI (email) mailto-prefix in lowercase
|
|
</li>
|
|
<li>
|
|
<b>new</b> class factory methods, upd class constructs
|
|
</li>
|
|
<li>
|
|
Vcalendar/Component parser logic moved to parser classes<br>
|
|
Vcalendar/Component format logic moved to formatter classes
|
|
</li>
|
|
<li>
|
|
removed deleteDtstamp/deleteUid methods (use set-method to recreate)<br>
|
|
Vtimezone, Util and misc code tidy up...
|
|
<br><br>
|
|
</li>
|
|
|
|
<li>
|
|
GitHub#103 (non-PHP timezones)<br>
|
|
Note Vtimezone::TZID property still accepts any timezone<br>
|
|
RegulateTimezoneFactory deprecated<br>
|
|
code clean up, phpdoc args etc<br>
|
|
Geo/Version property (empty-)bug
|
|
</li>
|
|
|
|
<li>
|
|
new Pc::getValueParam() method<br>
|
|
upd property parameters format logic<br>
|
|
SelectFactory method argument typing<br>
|
|
upd Pc::getParams() return types<br>
|
|
upd format property output logic<br>
|
|
DateTimeInterface adapt
|
|
</li>
|
|
|
|
<li>
|
|
upd Pc::getParams() return types<br>
|
|
upd tests and format property output logic<br>
|
|
DateTimeInterface adapt<br>
|
|
Util/IcalXMLFactory split up in Xml/Formatter+Parser
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="Additional_Descriptors"></a><h2>1.8 Additional descriptors</h2>
|
|
<p>
|
|
Some properties (ex. as described in
|
|
<a href="https://en.wikipedia.org/wiki/ICalendar#Calendar_extensions" title="https://en.wikipedia.org/wiki/ICalendar#Calendar_extensions" target="_blank">wikipedia:iCal</a>)
|
|
may be required when importing iCal formatted data into some calendaring software (MS etc).
|
|
Also <a href="#X-PROPERTY">X-properties</a> may appear in exports. Below are examples</p>
|
|
<dl>
|
|
<dt>on <strong>calendar</strong> level
|
|
<dd><a href="#METHOD">METHOD</a> property (value PUBLISH etc.)
|
|
<dd><a href="#X-PROPERTY">X-WR-CALNAME</a> x-property
|
|
<dd><a href="#X-PROPERTY">X-WR-CALDESC</a> x-property
|
|
<dd><a href="#X-PROPERTY">X-WR-RELCALID</a> x-property <span class="comment">(Read more info about <a href="https://en.wikipedia.org/wiki/Universally_Unique_Identifier" title="Universally Unique Identifier">UUID</a>.)</span>
|
|
<dd><a href="#X-PROPERTY">X-WR-TIMEZONE</a> x-property
|
|
<dt>on component level
|
|
<dd><a href="#DTSTAMP">DTSTAMP</a> <sup>*</sup>
|
|
<dd><a href="#UID">UID</a> <sup>*</sup>
|
|
<dt>on component level in a <a href="#VTIMEZONE">vtimezone</a> component
|
|
<dd><a href="#X-PROPERTY">X-LIC-LOCATION</a> x-property
|
|
</dl>
|
|
<p>
|
|
<sup>*</sup>
|
|
Created automatically in iCalcreator at component creation.
|
|
<p>
|
|
To ease up usage, constants <br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::METHOD,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_CALNAME,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_CALDESC,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_RELCALID,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_TIMEZONE,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_LIC_LOCATION<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p>
|
|
A strong recommendation is also to set config <a href="#Unique_id">unique_id</a> when creating a new Vcalendar instance,
|
|
to ensure accurate setting of PRODID property.
|
|
Also setting "X-WR-TIMEZONE" (below) is to recommend.
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$vcalendar->setMethod( Vcalendar::PUBLISH )
|
|
->setXprop( Vcalendar::X_WR_CALNAME, "Calendar Sample" )
|
|
->setXprop( Vcalendar::X_WR_CALDESC, "Calendar Description" )
|
|
->setXProp( Vcalendar::X_WR_RELCALID, "3E26604A-50F4-4449-8B3E-E4F4932D05B5" )
|
|
->setXprop( Vcalendar::X_WR_TIMEZONE, "Europe/Stockholm" );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
|
|
<a id="INDEX"></a><h2>1.9 INDEX</h2>
|
|
|
|
<a href="#INTRO">1 INTRO</a><br>
|
|
<br>
|
|
<a href="#Standards">1.1 Standards</a><br>
|
|
<a href="#This_manual">1.2 This manual</a><br>
|
|
<a href="#Versioning">1.3 Versioning</a><br>
|
|
<a href="#Support">1.4 Support</a><br>
|
|
<a href="#Donate">1.5 Donate</a><br>
|
|
<a href="#INSTALL">1.6 Install</a><br>
|
|
<a href="#Major_changes">1.7 Major changes</a><br>
|
|
<a href="#Additional_Descriptors">1.8 Additional descriptors</a><br>
|
|
<a href="#INDEX">1.9 INDEX</a><br>
|
|
<br>
|
|
<a href="#Calendar_Component_list">2 Calendar Component list</a><br>
|
|
<br>
|
|
<a href="#VCALENDAR">2.1 VCALENDAR</a><br>
|
|
<a href="#VEVENT">2.2 VEVENT</a><br>
|
|
<a href="#VTODO">2.3 VTODO</a><br>
|
|
<a href="#VJOURNAL">2.4 VJOURNAL</a><br>
|
|
<a href="#VFREEBUSY">2.5 VFREEBUSY</a><br>
|
|
<a href="#VALARM">2.6 VALARM</a><br>
|
|
<a href="#PARTICIPANT">2.7 PARTICIPANT</a><br>
|
|
<a href="#VLOCATION">2.8 VLOCATION</a><br>
|
|
<a href="#VRESOURCE">2.9 VRESOURCE</a><br>
|
|
<a href="#VAVAILABILITY">2.10 VAVAILABILITY</a><br>
|
|
<a href="#AVAILABLE">2.11 AVAILABLE</a><br>
|
|
<a href="#VTIMEZONE">2.14 VTIMEZONE</a><br>
|
|
<br>
|
|
<a href="#methodList">3 Methods</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_object_methods">3.1 Vcalendar methods</a><br>
|
|
<br>
|
|
<a href="#Calendar_object_constructors">3.1.1 Constructors</a><br>
|
|
<a href="#vcalendar_constr">3.1.1.1 Vcalendar</a><br>
|
|
<a href="#vevent_constr">3.1.1.2 Vevent</a><br>
|
|
<a href="#vtodo_constr">3.1.1.3 Vtodo</a><br>
|
|
<a href="#vjournal_constr">3.1.1.4 Vjournal</a><br>
|
|
<a href="#vfreebusy_constr">3.1.1.5 Vfreebusy</a><br>
|
|
<a href="#valarm_constr">3.1.1.6 Valarm</a><br>
|
|
|
|
<a href="#vavailability_constr">3.1.1.7 Vavailability</a><br>
|
|
<a href="#available_constr">3.1.1.8 Available</a><br>
|
|
|
|
<a href="#participant_constr">3.1.1.9 Participant</a><br>
|
|
<a href="#vlocation_constr">3.1.1.10 Vlocation</a><br>
|
|
<a href="#vresource_constr">3.1.1.11 Vresource</a><br>
|
|
|
|
|
|
<a href="#vtimezone_constr">3.1.1.12 Vtimezone</a><br>
|
|
<a href="#standard_daylight_constr">3.1.1.13 Standard / Daylight</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_object_property_methods">3.1.2 Vcalendar property methods</a><br>
|
|
<a href="#CALSCALE">3.1.2.1 CALSCALE</a><br>
|
|
<a href="#METHOD">3.1.2.2 METHOD</a><br>
|
|
<a href="#VERSION">3.1.2.3 VERSION</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_component_object_methods">3.1.3 Vcalendar component object methods</a><br>
|
|
<a href="#deleteComponent">3.1.3.1 deleteComponent</a><br>
|
|
<a href="#getComponent">3.1.3.2 getComponent</a><br>
|
|
<a href="#getComponents">3.1.3.3 getComponents</a><br>
|
|
<a href="#replaceComponent">3.1.3.4 replaceComponent</a><br>
|
|
<a href="#selectComponents">3.1.3.5 selectComponents</a><br>
|
|
<a href="#setComponent">3.1.3.6 setComponent</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_calendar_methods">3.1.4 Vcalendar calendar methods</a><br>
|
|
<a href="#parse_merge">3.1.4.1 parse and merge</a><br>
|
|
<a href="#createCalendar">3.1.4.2 createCalendar</a><br>
|
|
<a href="#returnCalendar">3.1.4.3 returnCalendar</a><br>
|
|
<a href="#sort">3.1.4.4 sort</a><br>
|
|
<a href="#countComponents">3.1.4.5 countComponents</a><br>
|
|
<a href="#iCalcreatorVersion">3.1.4.6 iCalcreatorVersion</a><br>
|
|
<a href="#valendarVtimezonePopulate">3.1.4.7 vtimezonePopulate</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_configuration_methods">3.1.5 Vcalendar configuration</a><br>
|
|
<a href="#configKeys">3.1.5.1 configuration keys</a><br>
|
|
<a href="#getConfig">3.1.5.2 getConfig</a><br>
|
|
<a href="#initConfig">3.1.5.3 calendar/component initialization</a><br>
|
|
<a href="#setConfig">3.1.5.4 setConfig</a><br>
|
|
<a href="#allowEmpty">3.1.5.5 Allow empty components</a><br>
|
|
<a href="#Compsinfo">3.1.5.6 Component information</a><br>
|
|
<a href="#Language">3.1.5.7 Language</a><br>
|
|
<a href="#setPropertyNames">3.1.5.8 setPropertyNames</a><br>
|
|
<a href="#Unique_id">3.1.5.9 Unique_id</a><br>
|
|
<br>
|
|
<a href="#Calendar_component_object_property_function_list">3.2 Component property methods</a><br>
|
|
<a href="#date_restraints">3.2.1 Date restraints</a><br>
|
|
<a href="#propValueParam">3.2.2 Property value/params</a><br>
|
|
<a href="#componentParse">3.2.3 Parse</a><br>
|
|
<dl>
|
|
<dt>Properties in ascending name order</dt>
|
|
<dd><a href="#ACKNOWLEDGED">3.2.4 ACKNOWLEDGED</a>
|
|
<dd><a href="#ACTION">3.2.5 ACTION</a>
|
|
<dd><a href="#ATTACH">3.2.6 ATTACH</a>
|
|
<dd><a href="#ATTENDEE">3.2.7 ATTENDEE</a>
|
|
<dd><a href="#BUSYTYPE">3.2.8 BUSYTYPE</a>
|
|
<dd><a href="#CALENDAR-ADDRESS">3.2.9 CALENDAR-ADDRESS</a>
|
|
<dd><a href="#CATEGORIES">3.2.10 CATEGORIES</a>
|
|
<dd><a href="#CLASS">3.2.11 CLASS</a>
|
|
<dd><a href="#COLOR">3.2.12 COLOR</a>
|
|
<dd><a href="#COMMENT">3.2.13 COMMENT</a>
|
|
<dd><a href="#COMPLETED">3.2.14 COMPLETED</a>
|
|
<dd><a href="#CONFERENCE">3.2.15 CONFERENCE</a>
|
|
<dd><a href="#CONTACT">3.2.16 CONTACT</a>
|
|
<dd><a href="#CREATED">3.2.17 CREATED</a>
|
|
<dd><a href="#DESCRIPTION">3.2.18 DESCRIPTION</a>
|
|
<dd><a href="#DTEND">3.2.19 DTEND</a>
|
|
<dd><a href="#DTSTAMP">3.2.20 DTSTAMP</a>
|
|
<dd><a href="#DTSTART">3.2.21 DTSTART</a>
|
|
<dd><a href="#DUE">3.2.22 DUE</a>
|
|
<dd><a href="#DURATION">3.2.22 DURATION</a>
|
|
<dd><a href="#EXDATE">3.2.24 EXDATE</a>
|
|
<dd><a href="#EXRULE">3.2.25 EXRULE</a>
|
|
<dd><a href="#FREEBUSY_PROP">3.2.26 FREEBUSY</a>
|
|
<dd><a href="#GEO">3.2.27 GEO</a>
|
|
<dd><a href="#IMAGE">3.2.28 IMAGE</a>
|
|
<dd><a href="#LAST-MODIFIED">3.2.29 LAST-MODIFIED</a>
|
|
<dd><a href="#LOCATION">3.2.30 LOCATION</a>
|
|
<dd><a href="#LOCATION-TYPE">3.2.31 LOCATION-TYPE</a>
|
|
<dd><a href="#NAME">3.2.32 NAME</a>
|
|
<dd><a href="#ORGANIZER">3.2.33 ORGANIZER</a>
|
|
<dd><a href="#PARTICIPANT-TYPE">3.2.34 PARTICIPANT-TYPE</a>
|
|
<dd><a href="#PERCENT-COMPLETE">3.2.35 PERCENT-COMPLETE</a>
|
|
<dd><a href="#PRIORITY">3.2.36 PRIORITY</a>
|
|
<dd><a href="#PROXIMITY">3.2.37 PROXIMITY</a>
|
|
<dd><a href="#RDATE">3.2.38 RDATE</a>
|
|
<dd><a href="#RECURRENCE-ID">3.2.39 RECURRENCE-ID</a>
|
|
<dd><a href="#REFRESH-INTERVAL">3.2.40 REFRESH-INTERVAL</a>
|
|
<dd><a href="#RELATED-TO">3.2.41 RELATED-TO</a>
|
|
<dd><a href="#REPEAT">3.2.42 REPEAT</a>
|
|
<dd><a href="#REQUEST-STATUS">3.2.43 REQUEST-STATUS</a>
|
|
<dd><a href="#RESOURCE-TYPE">3.2.44 RESOURCE-TYPE</a>
|
|
<dd><a href="#RESOURCES">3.2.45 RESOURCES</a>
|
|
<dd><a href="#RRULE">3.2.46 RRULE</a>
|
|
<dd><a href="#SEQUENCE">3.2.47 SEQUENCE</a>
|
|
<dd><a href="#SOURCE">3.2.48 SOURCE</a>
|
|
<dd><a href="#STATUS">3.2.49 STATUS</a>
|
|
<dd><a href="#STRUCTURED-DATA">3.2.50 STRUCTURED-DATA</a>
|
|
<dd><a href="#STYLED-DESCRIPTION">3.2.51 STYLED-DESCRIPTION</a>
|
|
<dd><a href="#SUMMARY">3.2.52 SUMMARY</a>
|
|
<dd><a href="#TRANSP">3.2.53 TRANSP</a>
|
|
<dd><a href="#TRIGGER">3.2.54 TRIGGER</a>
|
|
<dd><a href="#TZID">3.2.55 TZID</a>
|
|
<dd><a href="#TZID-ALIAS-OF">3.2.56 TZID-ALIAS-OF</a>
|
|
<dd><a href="#TZNAME">3.2.57 TZNAME</a>
|
|
<dd><a href="#TZOFFSETFROM">3.2.58 TZOFFSETFROM</a>
|
|
<dd><a href="#TZOFFSETTO">3.2.59 TZOFFSETTO</a>
|
|
<dd><a href="#TZUNTIL">3.2.60 TZUNTIL</a>
|
|
<dd><a href="#TZURL">3.2.61 TZURL</a>
|
|
<dd><a href="#UID">3.2.62 UID</a>
|
|
<dd><a href="#URL">3.2.63 URL</a>
|
|
<dd><a href="#X-PROPERTY">3.2.64 X-PROPERTY</a>
|
|
</dl>
|
|
<a href="#iCalcreator_component_configuration_methods">3.3 iCalcreator Component configuration methods</a><br>
|
|
<a href="#Language_PROP">3.3.1 Language</a><br>
|
|
<br>
|
|
<a href="#iCalcreator_misc_methods">3.4 iCalcreator misc. methods</a><br>
|
|
<a href="#deleteComponent_PROP">3.4.1 deleteComponent</a><br>
|
|
<a href="#getComponent_PROP">3.4.2 getComponent</a><br>
|
|
<a href="#getComponents_PROP">3.4.3 getComponents</a><br>
|
|
<a href="#setComponent_PROP">3.4.4 setComponent</a><br>
|
|
<a href="#vtimezone_populate">3.4.5 Vtimezone populate</a><br>
|
|
<a href="#msTimezone2PHPtz">3.4.6 Review timezones, opt alter to PHP timezone</a><br>
|
|
|
|
<br>
|
|
<a href="#TimezoneXMLjsonvCard">4 XML, json and vCard support</a><br>
|
|
<a href="#XMLhelpers">4.3 iCalcreator and (RFC6321) XML</a><br>
|
|
<a href="#iCal2XML">4.3.1 iCal2XML</a><br>
|
|
<a href="#XML2iCal">4.3.2 XML2iCal</a><br>
|
|
<a href="#iCal2jSon">4.4 iCalcreator and json export</a><br>
|
|
<a href="#vCardhelpers">4.5 iCalcreator and iCalvCardFactory class</a><br>
|
|
<a href="#iCal2vCard">4.5.1 iCal2vCard</a><br>
|
|
<a href="#iCal2vCards">4.5.2 iCal2vCards</a><br>
|
|
<br>
|
|
<a href="#Copyright_and_Licence">5 COPYRIGHT AND LICENSE</a><br>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a>
|
|
|
|
<a id="Calendar_Component_list"></a><h1>2 Calendar Component list</h1>
|
|
<p>
|
|
Note, to ease up usage, you will find convenient constants for component names,
|
|
properties, config keys etc in (src/)IcalInterface.
|
|
</p>
|
|
|
|
<a id="VCALENDAR"></a><h2>2.1 VCALENDAR</h2>
|
|
<dl>
|
|
<dt>
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> (availabilityc below), as described in
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
may NOT be supported by all calendaring software.g1
|
|
|
|
</dd>
|
|
<dt>
|
|
Properties suffixed by "*", described in
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
may NOT be supported by all calendaring software.<br>
|
|
If not set, <a href="#UID">UID</a> property
|
|
is automatically created by iCalcreator at instance creation
|
|
or using Vcalendar method <a href="#returnCalendar">returnCalendar</a>
|
|
or component::getUid() (<a href="#UID">UID</a>) methods.
|
|
</dd>
|
|
</dl>
|
|
<p class="center">icalobject = 1*("BEGIN" ":" "VCALENDAR" CRLF</p>
|
|
<p class="center">icalbody</p>
|
|
<p class="center">"END" ":" "VCALENDAR" CRLF)</p>
|
|
<p>icalbody = calprops component</p>
|
|
<p>calprops = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once
|
|
<p class="center">prodid / <a href="#VERSION">version</a> /</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#CALSCALE">calscale</a> / <a href="#METHOD">method</a> /</p>
|
|
<p class="center">
|
|
<a href="#UID">uid*</a> / <a href="#LAST-MODIFIED">last-mod*</a> / <a href="#URL">url*</a> /
|
|
<a href="#REFRESH-INTERVAL">refresh*</a> / <a href="#SOURCE">source*</a> / <a href="#COLOR">color*</a>
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#NAME">name*</a> / <a href="#DESCRIPTION">description*</a> / <a href="#CATEGORIES">categories*</a> / <a href="#IMAGE">image*</a>
|
|
</p>
|
|
<p class="center"><a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
<p class="center">component = 1*(
|
|
<a href="#VEVENT">eventc</a> /
|
|
<a href="#VTODO">todoc</a> /
|
|
<a href="#VJOURNAL">journalc</a> /
|
|
<a href="#VFREEBUSY">freebusyc</a> /
|
|
<a href="#VTIMEZONE">timezonec</a> /
|
|
<a href="#VAVAILABILITY">availabilityc</a> /
|
|
iana-comp<sup>1</sup> /
|
|
x-comp<sup>1</sup>
|
|
)
|
|
</p>
|
|
<p class="center">iana-comp = "BEGIN" ":" iana-token CRLF</p>
|
|
<p class="center">1*contentline</p>
|
|
<p class="center">"END" ":" iana-token CRLF</p>
|
|
<p class="center">x-comp = "BEGIN" ":" x-name CRLF</p>
|
|
<p class="center">1*contentline</p>
|
|
<p class="center">"END" ":" x-name CRLF</p>
|
|
<p><sup>1</sup>) <span class="comment">not supported by iCalcreator</span></p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VEVENT"></a><h2>2.2 VEVENT</h2>
|
|
<p>
|
|
Properties suffixed by "*", described in
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"New Properties for iCalendar",
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
Components and properties suffixed by "*2", described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VEVENT" CRLF</p>
|
|
<p class="center">
|
|
eventprop
|
|
*<a href="#VALARM">alarmc</a>
|
|
*<a href="#PARTICIPANT">participantc*2</a>
|
|
*<a href="#VLOCATION">locationc*2</a>
|
|
*<a href="#VRESOURCE">resoucec*2</a>
|
|
</p>
|
|
<p class="center">"END" ":" "VEVENT" CRLF</p>
|
|
<p>eventprop = *(</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#COLOR">color*</a> /
|
|
<a href="#CLASS">class</a> /
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#GEO">geo</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
<a href="#LOCATION">location</a> /
|
|
<a href="#ORGANIZER">organizer</a> /
|
|
<a href="#PRIORITY">priority</a> /
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#SEQUENCE">seq</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#STATUS">status</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
<a href="#TRANSP">transp</a> /
|
|
<a href="#UID">uid</a> /
|
|
<a href="#URL">url</a> /
|
|
<a href="#RECURRENCE-ID">recurid</a> /
|
|
</p>
|
|
<p class="center">
|
|
either "<a href="#DTEND">dtend</a>" or "<a href="#DURATION">duration</a>" may appear in a "eventprop",<br>
|
|
but "<a href="#DTEND">dtend</a>" and "<a href="#DURATION">duration</a>" MUST NOT occur in the same "eventprop"
|
|
</p>
|
|
<p class="center">
|
|
<a href="#DTEND">dtend</a> /
|
|
<a href="#DURATION">duration</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTACH">attach</a> /
|
|
<a href="#ATTENDEE">attendee</a> /
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONFERENCE">conference*</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#EXDATE">exdate</a> /
|
|
<a href="#EXRULE">exrule</a> /
|
|
<a href="#IMAGE">image*</a> /
|
|
<a href="#REQUEST-STATUS">rstatus</a> /
|
|
<a href="#RELATED-TO">related</a> /
|
|
<a href="#RESOURCES">resources</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#RDATE">rdate</a> /
|
|
<a href="#RRULE">rrule</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#STRUCTURED-DATA">sdataprop*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VTODO"></a><h2>2.3 VTODO</h2>
|
|
<p>
|
|
Properties suffixed by "*", described in
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"New Properties for iCalendar",
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
Components and properties suffixed by "*2", described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VTODO" CRLF</p>
|
|
<p class="center">
|
|
todoprop
|
|
*<a href="#VALARM">alarmc</a>
|
|
*<a href="#PARTICIPANT">participantc*2</a>
|
|
*<a href="#VLOCATION">locationc*2</a>
|
|
*<a href="#VRESOURCE">resoucec*2</a>
|
|
</p>
|
|
<p class="center">"END" ":" "VTODO" CRLF</p>
|
|
<p>todoprop = *(</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CLASS">class</a> /
|
|
<a href="#COLOR">color*</a> /
|
|
<a href="#COMPLETED">completed</a> /
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#GEO">geo</a> /
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
<a href="#LOCATION">location</a> /
|
|
<a href="#ORGANIZER">organizer</a> /
|
|
<a href="#PERCENT-COMPLETE">percent</a> /
|
|
<a href="#PRIORITY">priority</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#RECURRENCE-ID">recurid</a> /
|
|
<a href="#SEQUENCE">seq</a> /
|
|
<a href="#STATUS">status</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
<a href="#UID">uid</a> /
|
|
<a href="#URL">url</a> /
|
|
</p>
|
|
<p class="center">
|
|
either "<a href="#DUE">due</a>" or "<a href="#DURATION">duration</a>" may appear in a "todoprop",<br>
|
|
but "<a href="#DUE">due</a>" and "<a href="#DURATION">duration</a>" MUST NOT occur in the same "todoprop"
|
|
</p>
|
|
<p class="center"><a href="#DUE">due</a> / <a href="#DURATION">duration</a> /</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTACH">attach</a> /
|
|
<a href="#ATTENDEE">attendee</a> /
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONFERENCE">conference*</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#IMAGE">image*</a> /
|
|
<a href="#EXDATE">exdate</a> /
|
|
<a href="#EXRULE">exrule</a> /
|
|
<a href="#REQUEST-STATUS">rstatus</a> /
|
|
<a href="#RELATED-TO">related</a> /
|
|
<a href="#RESOURCES">resources</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#RDATE">rdate</a> /
|
|
<a href="#RRULE">rrule</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#STRUCTURED-DATA">sdataprop*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VJOURNAL"></a><h2>2.4 VJOURNAL</h2>
|
|
<p>
|
|
Properties suffixed by "*", described in
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"New Properties for iCalendar",
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
Components and properties suffixed by "*2", described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">journalc = "BEGIN" ":" "VJOURNAL" CRLF</p>
|
|
<p class="center">
|
|
jourprop
|
|
*<a href="#PARTICIPANT">participantc*2</a>
|
|
*<a href="#VLOCATION">locationc*2</a>
|
|
*<a href="#VRESOURCE">resoucec*2</a>
|
|
</p>
|
|
<p class="center">"END" ":" "VJOURNAL" CRLF</p>
|
|
<p>jourprop = *(</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CLASS">class</a> /
|
|
<a href="#COLOR">color*</a> /
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
<a href="#ORGANIZER">organizer</a> /
|
|
<a href="#RECURRENCE-ID">recurid</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#SEQUENCE">seq</a> /
|
|
<a href="#STATUS">status</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
<a href="#UID">uid</a> /
|
|
<a href="#URL">url</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTACH">attach</a> /
|
|
<a href="#ATTENDEE">attendee</a> /
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#IMAGE">image*</a> /
|
|
<a href="#EXDATE">exdate</a> /
|
|
<a href="#EXRULE">exrule</a> /
|
|
<a href="#RELATED-TO">related</a> /
|
|
<a href="#RDATE">rdate</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#RRULE">rrule</a> /
|
|
<a href="#REQUEST-STATUS">rstatus</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#STRUCTURED-DATA">sdataprop*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VFREEBUSY"></a><h2>2.5 VFREEBUSY</h2>
|
|
<p>
|
|
Components and properties suffixed by "*2", described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VFREEBUSY" CRLF</p>
|
|
<p class="center">
|
|
fbprop
|
|
*<a href="#PARTICIPANT">participantc*2</a>
|
|
*<a href="#VLOCATION">locationc*2</a>
|
|
*<a href="#VRESOURCE">resoucec*2</a>
|
|
</p>
|
|
<p class="center">"END" ":" "VFREEBUSY" CRLF</p>
|
|
<p>fbprop = *(</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CONTACT">contact</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#DTEND">dtend</a> /
|
|
<a href="#DURATION">duration</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#ORGANIZER">organizer</a> /
|
|
<a href="#UID">uid</a> /
|
|
<a href="#URL">url</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTENDEE">attendee</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#FREEBUSY_PROP">freebusy</a> /
|
|
<a href="#REQUEST-STATUS">rstatus</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
|
|
<a id="VALARM"></a><h2>2.6 VALARM</h2>
|
|
<p class="quotes">
|
|
The "VALARM" calendar component MUST only appear within either a
|
|
<a href="#VEVENT">VEVENT</a> or <a href="#VTODO">VTODO</a> calendar component.
|
|
</p>
|
|
<p class="quotes">
|
|
Multiple mutually independent "VALARM" calendar
|
|
components can be specified for a single <a href="#VEVENT">VEVENT</a> or <a href="#VTODO">VTODO</a> calendar
|
|
component.
|
|
</p>
|
|
<p>
|
|
Component and properties suffixed by "*3", described in
|
|
<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>
|
|
"VALARM Extensions for iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VALARM" CRLF</p>
|
|
<p class="center">(audioprop / dispprop / emailprop / procprop) <a href="#VLOCATION">*locationc*3</a></p>
|
|
<p class="center">"END" ":" "VALARM" CRLF</p>
|
|
<p>audioprop = *(</p>
|
|
<p class="center">REQUIRED, but MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#ACTION">action</a> / <a href="#TRIGGER">trigger</a> /</p>
|
|
<p class="center">
|
|
"<a href="#DURATION">duration</a>" and "<a href="#REPEAT">repeat</a>"
|
|
are both optional,and MUST NOT occur more than once each,<br>
|
|
but if one occurs, so MUST the other
|
|
</p>
|
|
<p class="center"><a href="#DURATION">duration</a> / <a href="#REPEAT">repeat</a> /</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTACH">attach</a> /
|
|
<a href="#ACKNOWLEDGED">acknowledged*3</a> /
|
|
<a href="#PROXIMITY">proximity*3</a> /
|
|
<a href="#UID">uid*3</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#RELATED-TO">related*3</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<p>dispprop = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ACTION">action</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#TRIGGER">trigger</a> /
|
|
</p>
|
|
<p class="center">
|
|
"<a href="#DURATION">duration</a>" and "<a href="#REPEAT">repeat</a>" are both optional,and MUST NOT occur more than once each,<br>
|
|
but if one occurs, so MUST the other
|
|
</p>
|
|
<p class="center"><a href="#DURATION">duration</a> / <a href="#REPEAT">repeat</a> /</p>
|
|
|
|
<p class="center">OPTIONAL, but MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ACKNOWLEDGED">acknowledged*3</a> /
|
|
<a href="#PROXIMITY">proximity*3'</a> /
|
|
<a href="#UID">uid</a> /
|
|
</p>
|
|
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#RELATED-TO">related*3</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<p>emailprop = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ACTION">action</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#TRIGGER">trigger</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
</p>
|
|
<p class="center">REQUIRED, MAY occur more than once</p>
|
|
<p class="center"><a href="#ATTENDEE">attendee</a> / </p>
|
|
<p class="center">
|
|
"<a href="#DURATION">duration</a>" and "<a href="#REPEAT">repeat</a>" are both optional, and MUST NOT occur more than once each,<br>
|
|
but if one occurs, so MUST the other
|
|
</p>
|
|
<p class="center"><a href="#DURATION">duration</a> / <a href="#REPEAT">repeat</a> /</p>
|
|
|
|
<p class="center">OPTIONAL, but MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ACKNOWLEDGED">acknowledged*3</a> /
|
|
<a href="#PROXIMITY">proximity*3'</a> /
|
|
<a href="#RELATED-TO">related*3</a> /
|
|
<a href="#UID">uid</a> /
|
|
</p>
|
|
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center"><a href="#ATTACH">attach</a> / <a href="#RELATED-TO">related</a> / <a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
|
|
<p>procprop (defined in <a href="https://tools.ietf.org/html/rfc2445" title="Download rfc2445" target="_blank">rfc2445</a>
|
|
but excluded in <a href="https://tools.ietf.org/html/rfc5545" title="Download rfc5545" target="_blank">rfc5545</a>)
|
|
= *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#ACTION">action</a> / <a href="#ATTACH">attach</a> / <a href="#TRIGGER">trigger</a> /</p>
|
|
<p class="center">
|
|
"<a href="#DURATION">duration</a>" and "<a href="#REPEAT">repeat</a>" are both optional,
|
|
and MUST NOT occur more than once each,<br>
|
|
but if one occurs, so MUST the other
|
|
</p>
|
|
<p class="center"><a href="#DURATION">duration</a> /
|
|
<a href="#REPEAT">repeat</a> /</p>
|
|
<p class="center">OPTIONAL and MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ACKNOWLEDGED">acknowledged*3</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#PROXIMITY">proximity*3</a> /
|
|
<a href="#UID">uid</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#RELATED-TO">related*3</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription*2</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="PARTICIPANT"></a><h2>2.7 PARTICIPANT</h2>
|
|
<p class="quotes">...can be specified multiple times in a
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>, or <a href="#VFREEBUSY">VFREEBUSY</a> calendar component
|
|
</p>
|
|
<dl>
|
|
<dt>
|
|
Note, PARTICIPANT, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>may NOT be supported by all calendaring software</dd>
|
|
<dd>
|
|
<dl>
|
|
<dt>
|
|
<p class="quotes">
|
|
"For backwards compatibility with existing clients and servers when
|
|
used to schedule events and tasks, the <a href="#ATTENDEE">ATTENDEE</a> property MUST be
|
|
used to specify the scheduling parameters as defined for that property."
|
|
</p>
|
|
</dt>
|
|
<dd>see <a href="#ATTENDEE">ATTENDEE</a> rfc9073 note </dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "PARTICIPANT" CRLF</p>
|
|
<p class="center">
|
|
partprop
|
|
*<a href="#VLOCATION">locationc</a>
|
|
*<a href="#VRESOURCE">resourcec</a>
|
|
<p class="center">"END" ":" "PARTICIPANT" CRLF</p>
|
|
<p>partprop = *(</p>
|
|
<p class="center">REQUIRED, but MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#PARTICIPANT-TYPE">participanttype</a> / <a href="#UID">uid</a> / </p>
|
|
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CALENDAR-ADDRESS">calendaraddress</a> /
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#GEO">geo</a> /
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#PRIORITY">priority</a> /
|
|
<a href="#SEQUENCE">seq</a> /
|
|
<a href="#STATUS">status</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
<a href="#URL">url</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#ATTACH">attach</a> /
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
<a href="#LOCATION">location</a> /
|
|
<a href="#REQUEST-STATUS">rstatus</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#RELATED-TO">related</a> /
|
|
<a href="#RESOURCES">resources</a> /
|
|
<a href="#STYLED-DESCRIPTION">styleddescription</a> /
|
|
<a href="#STRUCTURED-DATA">sdataprop</a> /
|
|
<a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VLOCATION"></a><h2>2.8 VLOCATION</h2>
|
|
<p class="quotes">
|
|
can be specified multiple times in a
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>, <a href="#VFREEBUSY">VFREEBUSY</a> or <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
calendar component
|
|
</p>
|
|
<p>
|
|
Note, VLOCATION, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>See <a href="#LOCATION">LOCATION</a> rfc9073 note </p>
|
|
|
|
<p>
|
|
The <a href="#UID">UID</a> property
|
|
is automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VLOCATION" CRLF</p>
|
|
<p class="center">locprop</p>
|
|
<p class="center">"END" ":" "VLOCATION" CRLF</p>
|
|
<p>locprop = *(</p>
|
|
<p class="center">REQUIRED, but MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#UID">uid</a> /</p>
|
|
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#GEO">geo</a> /
|
|
<a href="#LOCATION-TYPE">loctype</a> /
|
|
<a href="#NAME">name</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#STRUCTURED-DATA">sdataprop</a> /
|
|
<a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
<a id="VRESOURCE"></a><h2>2.9 VRESOURCE</h2>
|
|
<p class="quotes">
|
|
can be specified multiple times in a
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>, <a href="#VFREEBUSY">VFREEBUSY</a> or <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
calendar component
|
|
</p>
|
|
<p>
|
|
Note, VRESOURCE, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>See <a href="#RESOURCES">RESOURCES</a> rfc9073 note </p>
|
|
<p>
|
|
The <a href="#UID">UID</a> property
|
|
is automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VRESOURCE" CRLF</p>
|
|
<p class="center">resprop</p>
|
|
<p class="center">"END" ":" "VRESOURCE" CRLF</p>
|
|
<p>resprop = *(</p>
|
|
<p class="center">REQUIRED, but MUST NOT occur more than once</p>
|
|
<p class="center"><a href="#UID">uid</a> / </p>
|
|
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#GEO">geo</a> /
|
|
<a href="#NAME">name</a> /
|
|
<a href="#RESOURCE-TYPE">restype</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#STRUCTURED-DATA">sdataprop</a> /
|
|
<a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
|
|
<a id="VAVAILABILITY"></a><h2>2.10 VAVAILABILITY</h2>
|
|
<p>
|
|
VAVAILABILITY component can be specified multiple times in a <a href="#VCALENDAR">VCALENDAR</a>
|
|
</p>
|
|
<p>
|
|
The component, as described in
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar",
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VAVAILABILITY" CRLF</p>
|
|
<p class="center">
|
|
availabilityprop
|
|
*<a href="#AVAILABLE">availablec</a>
|
|
</p>
|
|
<p class="center">"END" ":" "VAVAILABILITY" CRLF</p>
|
|
<p>availabilityprop = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#UID">uid</a>
|
|
</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#BUSYTYPE">busytype</a> /
|
|
<a href="#CLASS">class</a> /
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
</p>
|
|
<p class="center">
|
|
<a href="#LOCATION">location</a> /
|
|
<a href="#ORGANIZER">organizer</a> /
|
|
<a href="#PRIORITY">priority</a> /
|
|
<a href="#SEQUENCE">seq</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
<a href="#URL">url</a> /
|
|
</p>
|
|
<p class="center">
|
|
either "<a href="#DTEND">dtend</a>" or "<a href="#DURATION">duration</a>" may appear in a "availabilityprop",<br>
|
|
but "<a href="#DTEND">dtend</a>" and "<a href="#DURATION">duration</a>" MUST NOT occur in the same "availabilityprop"<br>
|
|
<a href="#DURATION">duration</a>" MUST NOT be present if "<a href="#DTSTART">dtstart</a>" is not present
|
|
</p>
|
|
<p class="center">
|
|
<a href="#DTEND">dtend</a> /
|
|
<a href="#DURATION">duration</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
|
|
<a id="AVAILABLE"></a><h2>2.11 AVAILABLE</h2>
|
|
<p>
|
|
AVAILABLE component can be specified multiple times in a <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
</p>
|
|
<p>
|
|
Component, as described in
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar",
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
The <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties
|
|
are automatically created by iCalcreator at instance creation.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "AVAILABLE" CRLF</p>
|
|
<p class="center">
|
|
availableprop
|
|
</p>
|
|
<p class="center">"END" ":" "AVAILABLE" CRLF</p>
|
|
<p>availableprop = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#DTSTAMP">dtstamp</a> /
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#UID">uid</a>
|
|
</p>
|
|
<p class="center">
|
|
either "<a href="#DTEND">dtend</a>" or "<a href="#DURATION">duration</a>" may appear in a "availableprop",<br>
|
|
but "<a href="#DTEND">dtend</a>" and "<a href="#DURATION">duration</a>" MUST NOT occur in the same "availableprop"
|
|
</p>
|
|
<p class="center">
|
|
<a href="#DTEND">dtend</a> /
|
|
<a href="#DURATION">duration</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CREATED">created</a> /
|
|
<a href="#DESCRIPTION">description</a> /
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
<a href="#LOCATION">location</a> /
|
|
<a href="#RECURRENCE-ID">recurid</a> /
|
|
<a href="#RRULE">rrule</a> /
|
|
<a href="#SUMMARY">summary</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL and MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#CATEGORIES">categories</a> /
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#CONTACT">contact</a> /
|
|
<a href="#EXDATE">exdate</a> /
|
|
<a href="#RDATE">rdate</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
|
|
<a id="VTIMEZONE"></a><h2>2.14 VTIMEZONE</h2>
|
|
<p>
|
|
Properties suffixed by "*4", described in
|
|
<a href="https://tools.ietf.org/html/rfc7808" title="Download rfc7808" target="_blank">rfc7808</a>
|
|
"Time Zone Data Distribution Service"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p class="center">"BEGIN" ":" "VTIMEZONE" CRLF</p>
|
|
<p>*(</p>
|
|
<p class="center">REQUIRED, but MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#TZID">tzid</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, but MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#LAST-MODIFIED">last-mod</a> /
|
|
<a href="#TZUNTIL">tzuntil*4</a> /
|
|
<a href="#TZURL">tzurl</a>
|
|
</p>
|
|
<p class="center">OPTIONAL, but MAY occur more than once</p>
|
|
<p class="center"><a href="#TZID-ALIAS-OF">tz-alias-of*4</a> /</p>
|
|
|
|
<p class="center">one of "standardc" or "daylightc" MUST occur and each MAY occur more than once.</p>
|
|
<p class="center">standardc / daylightc /</p>
|
|
<p class="center">optional, MAY occur more than once</p>
|
|
<p class="center"><a href="#X-PROPERTY">x-prop</a></p>
|
|
<p>)</p>
|
|
<p class="center">"END" ":" "VTIMEZONE" CRLF</p>
|
|
<a id="STANDARD"></a>
|
|
<p class="center">standardc = "BEGIN" ":" "STANDARD" CRLF</p>
|
|
<p class="center">tzprop</p>
|
|
<p class="center">"END" ":" "STANDARD" CRLF</p>
|
|
<a id="DAYLIGHT"></a>
|
|
<p class="center">daylightc = "BEGIN" ":" "DAYLIGHT" CRLF</p>
|
|
<p class="center">tzprop</p>
|
|
<p class="center">"END" ":" "DAYLIGHT" CRLF</p>
|
|
|
|
<p>tzprop = *(</p>
|
|
<p class="center">REQUIRED, MUST NOT occur more than once</p>
|
|
<p class="center">
|
|
<a href="#DTSTART">dtstart</a> /
|
|
<a href="#TZOFFSETTO">tzoffsetto</a> /
|
|
<a href="#TZOFFSETFROM">tzoffsetfrom</a> /
|
|
</p>
|
|
<p class="center">OPTIONAL, MAY occur more than once</p>
|
|
<p class="center">
|
|
<a href="#COMMENT">comment</a> /
|
|
<a href="#RDATE">rdate</a> /
|
|
<a href="#RRULE">rrule</a> /
|
|
<a href="#TZNAME">tzname</a> /
|
|
<a href="#X-PROPERTY">x-prop</a>
|
|
</p>
|
|
<p>)</p>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_Component_list">[up]</a>
|
|
|
|
|
|
<a id="methodList"></a><h1>3 methods</h1>
|
|
|
|
|
|
<a id="iCalcreator_object_methods"></a><h2>3.1 Vcalendar methods</h2>
|
|
|
|
<a id="Calendar_object_constructors"></a><h3>3.1.1 Constructors</h3>
|
|
<a id="vcalendar_constr"></a><h4>3.1.1.1 Vcalendar</h4>
|
|
<p>Create a new <a href="#VCALENDAR">VCALENDAR</a> object instance.</p>
|
|
<h5>Constructor</h5>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$config = [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ];
|
|
$vcalendar = new Vcalendar( $config );
|
|
|
|
</p>
|
|
<p>
|
|
The <strong>calendar</strong> PRODID property (based on the configuration <a href="#Unique_id">unique_id</a>)
|
|
and the <strong>calendar</strong>/component <a href="#UID">UID</a> property
|
|
are AUTOMATICALLY generated in iCalcreator at instance creation.
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$tz = "Europe/Stockholm"
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$vcalendar->setXProp( Vcalendar::X_WR_TIMEZONE, $tz );
|
|
|
|
// <span class="comment">insert components or parse an iCal string calendar (and edit components)</span>
|
|
.. .
|
|
|
|
</p>
|
|
<p>
|
|
Some <strong>calendar</strong> software may also require calendar property <a href="#Additional_Descriptors">X-WR-TIMEZONE</a>
|
|
and vtimezone component with property <a href="#Additional_Descriptors">X-LIC-LOCATION</a>,
|
|
review Vcalendar <a href="#valendarVtimezonePopulate">populate</a> or
|
|
<a href="#vtimezone_populate">Util/VtimezonePopulateFactory::process</a> methods.
|
|
</p>
|
|
|
|
<h5>factory</h5>
|
|
<p>
|
|
Create a new Vcalendar object instance using a factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::factory( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = Vcalendar::factory( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] )
|
|
->setMethod( "PUBLIC" );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vevent_constr"></a><h4>3.1.1.2 Vevent</h4>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VEVENT is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VEVENT">VEVENT</a> object instance
|
|
using a <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVevent( [ dtstart [, dtend [, duration [, summary ]]]] )</p>
|
|
<p class="comment">
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VEVENT">VEVENT</a>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vevent = $vcalendar->newVevent( $dtStart );
|
|
.. .
|
|
|
|
</p>
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VEVENT">VEVENT</a> object instance using a VEVENT factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vevent::factory( [ config [, dtstart [, dtend [, duration [, summary ]]]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VEVENT">VEVENT</a>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vevent = Vevent::factory( null, $dtStart );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VEVENT">VEVENT</a> object instance.</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Vevent::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$config = $vcalendar->getConfig();
|
|
$vevent = new Vevent( $config );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vtodo_constr"></a><h4>3.1.1.3 Vtodo</h4>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VTODO is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VTODO">VTODO</a> object instance
|
|
using a <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVtodo( [ dtstart [, due [, duration [, summary ]]]] )</p>
|
|
<p class="comment">
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
due = property <a href="#DUE">DUE</a> string|DateTimeInterface value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VEVENT">VEVENT</a>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vtodo = $vcalendar->newVtodo( $dtStart );
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VTODO">VTODO</a> object instance using VTODO factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVtodo( [ config [, dtstart [, due [, duration [, summary ]]]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
due = property <a href="#DUE">DUE</a> string|DateTimeInterface value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VEVENT">VEVENT</a>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vtodo = Vtodo::factory( null, $dtStart );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vtodo );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VTODO">VTODO</a> object instance.</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Vtodo::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vtodo;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$config = $vcalendar->getConfig();
|
|
$vtodo = new Vtodo( $config );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vtodo );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vjournal_constr"></a><h4>3.1.1.4 Vjournal</h4>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VJOURNAL is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VJOURNAL">VJOURNAL</a> object instance
|
|
using a <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVjournal( [ dtstart [, summary ]] )</p>
|
|
<p class="comment">
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vjournal = $vcalendar->newVjournal( $dtStart );
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VJOURNAL">VJOURNAL</a> object instance using a VJOURNAL factory-method.
|
|
</p>
|
|
|
|
<p class="format">Vjournal::factory( [ config [, dtstart [, summary ]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
summary = property <a href="#SUMMARY">SUMMARY</a> string value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vjournal = Vjournal::factory( null, $dtStart );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vjournal );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VJOURNAL">VJOURNAL</a> object instance.</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Vtodo::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vjournal;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$config = $vcalendar->getConfig();
|
|
$vjournal = new Vjournal( $config );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vjournal );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vfreebusy_constr"></a><h4>3.1.1.5 Vfreebusy</h4>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VFREEBUSY is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VFREEBUSY">VFREEBUSY</a> object instance
|
|
using a <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVfreebuy( [ attendee [, dtstart [, dtend ]]] )</p>
|
|
<p class="comment">
|
|
attendee = property <a href="#ATTENDEE">ATTENDEE</a> string value
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vtodo = $vcalendar->newVfreebusy( $attendee, $dtStart, $dtend );
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VFREEBUSY">VFREEBUSY</a> object instance using a factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
|
|
<p class="format">Vcalendar::newVfreebuy( [ config [, attendee [, dtstart [, dtend ]]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
attendee = property <a href="#ATTENDEE">ATTENDEE</a> string value
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface value
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$config =[ Vcalendar::UNIQUE_ID => "kigkonsult.se" ];
|
|
$vcalendar = new Vcalendar( $config );
|
|
|
|
.. .
|
|
$vtodo = Vfreebusy::factory( $config, $attendee, $dtStart, $dtend );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vfreebusy );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VTODO">VTODO</a> object instance.</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Vfreebusy::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vfreebusy;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$config = $vcalendar->getConfig();
|
|
$vfreebusy = new Vfreebusy( $config );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vfreebusy );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="valarm_constr"></a><h4>3.1.1.6 Valarm</h4>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VALARM is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VALARM">VALARM</a> object instance using a Vcalendar component factory-method.
|
|
The <a href="#VALARM">VALARM</a> calendar component MUST only appear (one or more)
|
|
in either a <a href="#VEVENT">VEVENT</a> or <a href="#VTODO">VTODO</a> calendar component.
|
|
</p>
|
|
<p class="format">calendarComponent::newValarm( [ action [, trigger ]] )</p>
|
|
<p class="comment">
|
|
action = property <a href="#ACTION">ACTION</a> string value
|
|
trigger = property <a href="#TRIGGER">TRIGGER</a> string|DateInterval|DateTimeInterface value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
.. .
|
|
$vevent = $vcalendar->newVevent( $eventDtstart );
|
|
.. .
|
|
|
|
$valarm = $vevent->newValarm( Vcalendar::DISPLAY, $veventAlarmDtstart );
|
|
.. .
|
|
|
|
$vtodo = $vcalendar->newVtodo( $todoDtstart );
|
|
.. .
|
|
|
|
$valarm = $vtodo->newValarm( Vcalendar::AUDIO, $totoAlarmDtstart );
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VALARM">VALARM</a> object instance. using a factory-method.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Valarm::factory( [ config [, action [, trigger ]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
action = property <a href="#ACTION">ACTION</a> string value
|
|
trigger = property <a href="#TRIGGER">TRIGGER</a> string|DateInterval|DateTimeInterface value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Valarm;
|
|
|
|
$config = [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ]:
|
|
$vcalendar = new Vcalendar( $config );
|
|
|
|
.. .
|
|
$vevent = Vevent::factory( $config );
|
|
.. .
|
|
|
|
$valarm = Valarm::factory( $config, Vcalendar::DISPLAY, $veventAlarmDtstart );
|
|
.. .
|
|
|
|
$vevent->setComponent( $valarm );
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VALARM">VALARM</a> object instance.</p>
|
|
<p>
|
|
Throws InvalidArgumentException on (set)config error.
|
|
</p>
|
|
<p class="format">Valarm::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Valarm;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = new Vevent( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$valarm = new Valarm( $vevent->getConfig());
|
|
.. .
|
|
|
|
$vevent->setComponent( $valarm );
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vavailability_constr"></a><h4>3.1.1.7 Vavailability</h4>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VAVAILABILITY is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VAVAILABILITY">VAVAILABILITY</a> object instance
|
|
using an <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
<p class="format">Vcalendar::newVavailability( [ busytype [, [ dtstart [, dtend [, duration ]]]] )</p>
|
|
<p class="comment">
|
|
busytype = property <a href="#BUSYTYPE">BUSYTYPE</a> string value,
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface datetime value,
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface datetime value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = $vcalendar->newVavailability(
|
|
"BYSY",
|
|
"20220101T080000",
|
|
"20220101T170000"
|
|
);
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VAVAILABILITY">VAVAILABILITY</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Vavailability::factory( [ config [, busytype [, [ dtstart [, dtend [, duration ]]]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
busytype = property <a href="#BUSYTYPE">BUSYTYPE</a> string value,
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface datetime value,
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface datetime value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
*) dtend and duration MUST NOT occur in the same <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = Vavailability::factory(
|
|
null,
|
|
"BYSY",
|
|
"20220101T080000",
|
|
"20220101T170000"
|
|
);
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vavailability );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VAVAILABILITY">VAVAILABILITY</a> object instance.</p>
|
|
<p class="format">Vavailability::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vavailability;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = new Vavailability( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vavailability );
|
|
|
|
</p>
|
|
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
<a id="available_constr"></a><h4>3.1.1.8 Available</h4>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
<a href="#AVAILABLE">AVAILABLE</a> may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::AVAILABLE is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#AVAILABLE">AVAILABLE</a> object instance
|
|
using an <a href="#VAVAILABILITY">VAVAILABILITY</a> component factory-method.
|
|
</p>
|
|
<p class="format">Vavailability::newAvailable( [ dtstart [, dtend [, duration ]]] )</p>
|
|
<p class="comment">
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface datetime value,
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface datetime value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
*) dtend and duration MUST NOT occur in the same <a href="#AVAILABLE">AVAILABLE</a>
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = $vcalendar->newVavailability();
|
|
.. .
|
|
|
|
$available = $vavailability->newAvailable();
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#AVAILABLE">AVAILABLE</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Available::factory( [ config [, dtstart [, dtend [, duration ]]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
dtstart = property <a href="#DTSTART">DTSTART</a> string|DateTimeInterface datetime value,
|
|
dtend = property <a href="#DTEND">DTEND</a> string|DateTimeInterface datetime value *
|
|
duration = property <a href="#DURATION">DURATION</a> string|DateInterval value *
|
|
*) dtend and duration MUST NOT occur in the same <a href="#AVAILABLE">AVAILABLE</a>
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = Vavailability::factory();
|
|
.. .
|
|
|
|
$available = Available::factory();
|
|
.. .
|
|
|
|
$vavailability->setComponent( $available );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vavailability );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#AVAILABLE">AVAILABLE</a> object instance.</p>
|
|
<p class="format">Available::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vavailability;
|
|
use Kigkonsult\Icalcreator\Available;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vavailability = new Vavailability( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$available = new Available( $vavailability->getConfig());
|
|
.. .
|
|
|
|
$vavailability->setComponent( $available );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vavailability );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="participant_constr"></a><h4>3.1.1.9 Participant</h4>
|
|
<p>
|
|
Note, <a href="#PARTICIPANT">PARTICIPANT</a>, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::PARTICIPANT is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#PARTICIPANT">PARTICIPANT</a> object instance
|
|
using a <a href="#VEVENT">VEVENT</a> /
|
|
<a href="#VTODO">VTODO</a> /
|
|
<a href="#VJOURNAL">VJOURNAL</a> /
|
|
<a href="#VFREEBUSY">VFREEBUSY</a>
|
|
component factory-method, used below as "Component".
|
|
</p>
|
|
<p class="format">Component::newParticipant( [ participanttype [, calendaraddress ]] )</p>
|
|
<p class="comment">
|
|
participanttype = property <a href="#PARTICIPANT-TYPE">PARTICIPANT-TYPE</a> string value,
|
|
calendaraddress = property <a href="#CALENDAR-ADDRESS">CALENDAR-ADDRESS</a> string CAL-ADDRESS (uri) value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$participant = $vevent->newParticipant( Vcalendar::SPONSOR, "hq@acme.com");
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#PARTICIPANT">PARTICIPANT</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Participant::factory( [ config [, participanttype [, calendaraddress ]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
participanttype = property <a href="#PARTICIPANT-TYPE">PARTICIPANT-TYPE</a> string value,
|
|
calendaraddress = property <a href="#CALENDAR-ADDRESS">CALENDAR-ADDRESS</a> string CAL-ADDRESS (uri) value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$participant = Participant::factory( null, Vcalendar::SPONSOR, "hq@acme.com");
|
|
.. .
|
|
|
|
$vevent->setComponent( $participant );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#PARTICIPANT">PARTICIPANT</a> object instance.</p>
|
|
<p class="format">Participant::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Participant;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = new Vevent( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$participant = new Participant( $vevent->getConfig());
|
|
.. .
|
|
|
|
$vevent->setComponent( $participant );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vlocation_constr"></a><h4>3.1.1.10 Vlocation</h4>
|
|
<p>
|
|
Note, <a href="#VLOCATION">VLOCATION</a>, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VLOCATION< is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#PARTICIPANT">VLOCATION</a> object instance
|
|
using a <a href="#VEVENT">VEVENT</a> /
|
|
<a href="#VTODO">VTODO</a> /
|
|
<a href="#VJOURNAL">VJOURNAL</a> /
|
|
<a href="#VFREEBUSY">VFREEBUSY</a> /
|
|
<a href="#PARTICIPANT">PARTICIPANT</a>
|
|
component factory-method, used below as "Component".
|
|
</p>
|
|
<p class="format">Component::newVlocation( [ locationType [, name ] ] )</p>
|
|
<p class="comment">
|
|
locationType = property <a href="#LOCATION-TYPE">LOCATION-TYPE</a> string value
|
|
name = property <a href="#NAME">NAME</a> string value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$vlocation = $vevent->newVlocation();
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#PARTICIPANT">VLOCATION</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Vlocation:factory( [ config [, locationType [, name ]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
locationType = property <a href="#LOCATION-TYPE">LOCATION-TYPE</a> string value
|
|
name = property <a href="#NAME">NAME</a> string value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$vlocation = Vlocation::factory( null, $locationType , $name );
|
|
.. .
|
|
|
|
$vevent->setComponent( $vlocation );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VLOCATION">VLOCATION</a> object instance.</p>
|
|
<p class="format">Vlocation::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Vlocation;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = new Vevent( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$vlocation = new Vlocation( $vevent->getConfig());
|
|
.. .
|
|
|
|
$vevent->setComponent( $vlocation );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vresource_constr"></a><h4>3.1.1.11 Vresource</h4>
|
|
<p>
|
|
Note, <a href="#VRESOURCE">VRESOURCE</a>, described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VRESOURCE is available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VRESOURCE">VRESOURCE</a> object instance
|
|
using a <a href="#VEVENT">VEVENT</a> /
|
|
<a href="#VTODO">VTODO</a> /
|
|
<a href="#VJOURNAL">VJOURNAL</a> /
|
|
<a href="#VFREEBUSY">VFREEBUSY</a> /
|
|
<a href="#PARTICIPANT">PARTICIPANT</a>
|
|
component factory-method, used below as "Component".
|
|
</p>
|
|
<p class="format">Component::newVresource( [ resourceType [, name ] ] )</p>
|
|
<p class="comment">
|
|
resourceType = property <a href="#RESOURCE-TYPE">RESOURCE-TYPE</a> string value
|
|
name = property <a href="#NAME">NAME</a> string value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$vresource = $vevent->newVresource();
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VRESOURCE">VRESOURCE</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Vresource::factory( [ config [, resourceType [, name ]]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
resourceType = property <a href="#RESOURCE-TYPE">RESOURCE-TYPE</a> string value
|
|
name = property <a href="#NAME">NAME</a> string value
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent();
|
|
.. .
|
|
|
|
$vresource = Vresource:factory( null, $resourceType, $name );
|
|
.. .
|
|
|
|
$vevent->setComponent( $vresource );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VRESOURCE">VRESOURCE</a> object instance.</p>
|
|
<p class="format">Vlocation::__construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Vresource;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = new Vevent( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$vresource = new Vresource( $vevent->getConfig());
|
|
.. .
|
|
|
|
$vevent->setComponent( $vresource );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="vtimezone_constr"></a><h4>3.1.1.12 Vtimezone</h4>
|
|
<p>
|
|
The vtimezone component describe, at a minimum, the base offset from <b>UTC</b> for the time zone.
|
|
For dates with UTC DATE-TIME, read <a href="#DATE_WITH_UTC_TIME">this</a>!
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VTIMEZONE is available.
|
|
</p>
|
|
<p>
|
|
You can use <a href="#vtimezone_populate">Vtimezone populate</a> to ease up including Vtimezone(s) in a calendar.
|
|
</p>
|
|
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VTIMEZONE">VTIMEZONE</a> object instance
|
|
using an <a href="#VCALENDAR">VCALENDAR</a> component factory-method.
|
|
</p>
|
|
<p class="format">Vcalendar::newVtimezone( [ tzid ] )</p>
|
|
<p class="comment">
|
|
tzid = property <a href="#TZID">TZID</a> string value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone( "Europe/Stockholm");
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Create a new <a href="#VTIMEZONE">VTIMEZONE</a> object instance using a factory-method.
|
|
</p>
|
|
<p class="format">Vtimezone::factory( [ config [, tzid ]] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
tzid = property <a href="#TZID">TZID</a> string value
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = Vtimezone::factory( null, "Europe/Stockholm" );
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vtimezone );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 3</p>
|
|
<p>Create a new <a href="#VTIMEZONE">VTIMEZONE</a> object instance.</p>
|
|
<p class="format">Vtimezone::_construct( [ config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vtimezone;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = new Vtimezone( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$vcalendar->setComponent( $vtimezone );
|
|
.. .
|
|
|
|
</p>
|
|
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="standard_daylight_constr"></a><h4>3.1.1.13 Standard / Daylight</h4>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STANDARD<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DAYLIGHT<br>
|
|
are available.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Create a new <a href="#VTIMEZONE">VTIMEZONE</a>
|
|
<a href="#STANDARD">STANDARD</a> / <a href="#DAYLIGHT">DAYLIGHT</a> object instance
|
|
using a VTIMEZONE component factory-method.
|
|
</p>
|
|
<p class="format">Vtimezone::newStandard()</p>
|
|
<p class="format">Vtimezone::newDaylight()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone();
|
|
.. .
|
|
|
|
$standard = $vtimezone->newStandard();
|
|
.. .
|
|
|
|
$daylight = $vtimezone->newDaylight();
|
|
.. .
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>Create a new <a href="#VTIMEZONE">VTIMEZONE</a> STANDARD object instance.</p>
|
|
<p class="format">Vtimezone::__construct( "standard" [, config ] )</p>
|
|
<p class="comment">
|
|
config = array, review <a href="#iCalcreator_configuration_methods">configuration</a> options.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vtimezone;
|
|
use Kigkonsult\Icalcreator\Standard;
|
|
use Kigkonsult\Icalcreator\Daylight;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = new Vtimezone( $vcalendar->getConfig());
|
|
.. .
|
|
|
|
$standard = new Standard( $vtimezone->getConfig());
|
|
.. .
|
|
|
|
$vtimezone->setComponent( $standard );
|
|
|
|
$daylight = new Daylight( $vtimezone->getConfig());
|
|
.. .
|
|
|
|
$vtimezone->setComponent( $daylight );
|
|
|
|
$vcalendar->setComponent( $vtimezone );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#methodList">[up]</a>
|
|
|
|
|
|
<a id="iCalcreator_object_property_methods"></a><h3>3.1.2 Vcalendar property methods</h3>
|
|
|
|
<a id="CALSCALE"></a><h4>3.1.2.1 CALSCALE</h4>
|
|
<p>
|
|
This property defines the <strong>calendar</strong> scale used for the <strong>calendar</strong> information specified in the <strong>iCalendar</strong> object.
|
|
</p>
|
|
<p>
|
|
The default (pre-set) value is "GREGORIAN".
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::CALSCALE is available.
|
|
</p>
|
|
<h5>Create CALSCALE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createCalscale()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $vcalendar->createCalscale();
|
|
|
|
</p>
|
|
<h5>Delete CALSCALE</h5>
|
|
<p>Remove CALSCALE from calendar.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::deleteCalscale()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vcalendar->deleteCalscale();
|
|
|
|
</p>
|
|
<h5>Get Calscale</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::getCalscale()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$calscale = $vcalendar->getCalscale();
|
|
|
|
</p>
|
|
<h5>Set CALSCALE</h5>
|
|
<p>Set property value. The default value is "GREGORIAN", it is pre-set.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::setCalscale()</p>
|
|
<p class="comment">value = (string) calscale value</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$config = [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ];
|
|
$vcalendar = new Vcalendar( $config );
|
|
$vcalendar->setCalscale( "GREGORIAN" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_object_property_methods">[up]</a>
|
|
|
|
|
|
<a id="METHOD"></a><h4>3.1.2.2 METHOD</h4>
|
|
<p>
|
|
This property defines the <strong>iCalendar</strong> object method associated with the <strong>calendar</strong> object.
|
|
</p>
|
|
<p>
|
|
METHOD property (value PUBLISH etc.) may be required when importing iCal formatted information
|
|
into some calendaring software (MS etc.), as well as <a href="#X-PROPERTY">x-properties</a>
|
|
"X-WR-CALNAME", "X-WR-CALDESC" and "X-WR-TIMEZONE"
|
|
and the (automatically created) <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::METHOD<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PUBLISH<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REQUEST<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REPLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ADD<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CANCEL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REFRESH<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::COUNTER<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DECLINECOUNTER<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create METHOD</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createMethod()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $vcalendar->createMethod();
|
|
|
|
</p>
|
|
<h5>Delete METHOD</h5>
|
|
<p>Remove METHOD from calendar.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::deleteMethod()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vcalendar->deleteMethod();
|
|
|
|
</p>
|
|
<h5>Get METHOD</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::getMethod();</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$vcalendar->parse();
|
|
$method = $vcalendar->getMethod();
|
|
|
|
</p>
|
|
<h5>Set METHOD</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::setMethod( value )</p>
|
|
<p class="comment">value = (string) method value</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$vcalendar->setMethod( Vcalendar::PUBLISH );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_object_property_methods">[up]</a>
|
|
|
|
|
|
<a id="VERSION"></a><h4>3.1.2.3 VERSION</h4>
|
|
<p>
|
|
This property specifies the identifier corresponding to the version number of the <strong>iCalendar</strong> specification.
|
|
This property is always placed first in the formatted <strong>calendar</strong>.
|
|
</p>
|
|
<p>
|
|
Version is <b>AUTO</b> generated as "2.0" at <strong>calendar</strong> creation.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::VERSION is available.
|
|
</p>
|
|
<h5>Create Version</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createVersion()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $vcalendar->createVersion();
|
|
|
|
</p>
|
|
<h5>Get Version</h5>
|
|
<p>Fetch property value.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::getVersion()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$version = $vcalendar->getVersion()
|
|
|
|
</p>
|
|
<h5>Set Version</h5>
|
|
<p>Set property value.
|
|
Only version 2.0 valid, version is <b>AUTO</b> generated at <strong>calendar</strong> creation.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::setVersion( version )</p>
|
|
<p class="comment">version = (string) iCal version</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se", ] );
|
|
$vcalendar->setVersion("2.0" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_object_property_methods">[up]</a>
|
|
|
|
|
|
<a id="iCalcreator_component_object_methods"></a><h3>3.1.3 Vcalendar component object methods</h3>
|
|
|
|
<a id="deleteComponent"></a><h4>3.1.3.1 deleteComponent</h4>
|
|
<p>
|
|
Remove component from the Vcalendar instance.
|
|
</p>
|
|
<p>
|
|
Bool false is returned if no component exists or at end-of-components invoking the method consecutive.
|
|
</p>
|
|
<p class="label">format 1</p>
|
|
Remove component with order number (1st=1, 2nd=2).
|
|
<p class="format">Vcalendar::deleteComponent( orderNumber )</p>
|
|
<p class="comment">orderNumber = (int) order number</p>
|
|
<p class="label">format 2</p>
|
|
<P>Remove component with component type (e.g. "vevent") and order 1 alt. suborder number.</p>
|
|
<p class="format">Vcalendar::deleteComponent( componentType [, componentSuborderNumber])</p>
|
|
<p class="comment">componentType = (string) component type
|
|
componentSuborderNumber = (int) order number</p>
|
|
<p class="label">format 3</p>
|
|
<p>Remove component with <a href="#UID">UID</a>. N.B <a href="#UID">UID</a> is NOT set for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">TIMEZONE</a> components.</p>
|
|
<p class="format">Vcalendar::deleteComponent( <a href="#UID">UID</a> )</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$vcalendar->deleteComponent( 1 );
|
|
$vcalendar->deleteComponent( Kigkonsult\Icalcreator\Vcalendar::VTODO, 2 );
|
|
$vcalendar->deleteComponent( "20070803T194810CEST-0123U3PXiX@kigkonsult.se");
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Deleting all components, using format 2 without order number.</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
while( $vcalendar->deleteComponent( Vcalendar::VEVENT)) {
|
|
continue;
|
|
}
|
|
$vtodo = $vcalendar->getComponent( Vcalendar::VTODO );
|
|
while( $vtodo->deleteComponent( Vcalendar::VALARM)) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="getComponent"></a><h4>3.1.3.2 getComponent</h4>
|
|
<p>Get (next) component from the Vcalendar instance.</p>
|
|
<p>
|
|
Bool false is returned if no component exists or at end-of-components invoking the method consecutive.
|
|
</p>
|
|
<p class="label">format 1</p>
|
|
<p>Get next component, until end-of-components.</p>
|
|
<p class="format">Vcalendar::getComponent()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
while( $comp = $vcalendar->getComponent()) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
<p class="label">format 2</p>
|
|
<P>Get specific component with order number (1st=1, 2nd=2).</p>
|
|
<p class="format">Vcalendar::getComponent( orderNumber )</p>
|
|
<p class="comment">orderNumber = (int) order number</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
if( $comp = $vcalendar->getComponent( 1 )) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">format 3</p>
|
|
<p>
|
|
Get (first/next) component with component type (until end-of-components) alt.
|
|
get specific component with component type and suborder number (1st=1, 2nd=2).
|
|
</p>
|
|
<p class="format">Vcalendar::getComponent( componentType [, componentSuborderNumber])</p>
|
|
<p class="comment">componentType = (string) component type
|
|
componentSuborderNumber = (int) order number</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
if( $comp = $vcalendar->getComponent( Kigkonsult\Icalcreator\Vcalendar::VTODO, 2 )) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">format 4</p>
|
|
<p>
|
|
Get (first/next) component with <a href="#UID">UID</a> as key.
|
|
(<a href="#UID">UID</a> is NOT set for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">TIMEZONE</a> components.)
|
|
May be used when trying to find (base) component and corresponding <a href="#RECURRENCE-ID">RECURRENCE-ID</a> components.
|
|
</p>
|
|
<p class="format">Vcalendar::getComponent( <a href="#UID">UID</a> )</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$uid = "20070803T194810CEST-0123U3PXiX@kigkonsult.se";
|
|
if( $comp = $vcalendar->getComponent( $uid )) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
|
|
<a id="getComponent5"></a>
|
|
<p class="label">format 5</p>
|
|
<p>
|
|
Get (first/next) component based on specific property contents:
|
|
<p>
|
|
Note, to ease up usage, you will find convenient constants for component names,
|
|
properties, config keys etc in (src/)IcalInterface.
|
|
</p>
|
|
<dl>
|
|
<dt>Supported Descriptive Component Properties
|
|
<dd><a href="#CATEGORIES">CATEGORIES</a>
|
|
<dd><a href="#LOCATION">LOCATION</a>
|
|
<dd><a href="#PRIORITY">PRIORITY</a>
|
|
<dd><a href="#RESOURCES">RESOURCES</a>
|
|
<dd><a href="#STATUS">STATUS</a>
|
|
<dd><a href="#SUMMARY">SUMMARY</a>
|
|
<dt>Date and Time Component Properties
|
|
<dd><a href="#COMPLETED">COMPLETED</a>
|
|
<dd><a href="#DTEND">DTEND</a>
|
|
<dd><a href="#DUE">DUE</a>
|
|
<dd><a href="#DTSTART">DTSTART</a>
|
|
<dt>SupportedRelationship Component Properties
|
|
<dd><a href="#ATTENDEE">ATTENDEE</a> <sup>*1</sup>
|
|
<dd><a href="#CONTACT">CONTACT</a>
|
|
<dd><a href="#ORGANIZER">ORGANIZER</a> <sup>*1</sup>
|
|
<dd><a href="#RECURRENCE-ID">RECURRENCE-ID</a>
|
|
<dd><a href="#RELATED-TO">RELATED-TO</a>
|
|
<dd><a href="#URL">URL</a>
|
|
<dd><a href="#UID">UID</a>
|
|
<dt>Change Management Component Properties
|
|
<dd><a href="#CREATED">CREATED</a>
|
|
<dd><a href="#DTSTAMP">DTSTAMP</a>
|
|
<dd><a href="#LAST-MODIFIED">LAST-MODIFIED</a>
|
|
</dl>
|
|
<dl>
|
|
<dt><sup>*1</sup>
|
|
<dd><a href="#ATTENDEE">ATTENDEE</a> and
|
|
<a href="#ORGANIZER">ORGANIZER</a> search values must be prefixed by protocol ex. "MAILTO:chair@ical.net".
|
|
</dl>
|
|
<p>
|
|
For the property "SUMMARY" ,if a search value (any case) exists within property value, a hit exists.
|
|
For the other, non-date, properties an exact (strict case) match is required.
|
|
</p>
|
|
<p>
|
|
To select components based on property values, use <a href="#selectComponents2">selectComponents</a> (Format 2).
|
|
</p>
|
|
<p class="format">Vcalendar::getComponent( search )</p>
|
|
<p class="comment">
|
|
search = (array) ( *[ propertyName => uniqueValue ]), multiple array elements are combined by "OR"
|
|
propertyName = (string) property name, above
|
|
propertyData = (string) unique property value (strict case),
|
|
date format "YYYYMMDD" (if any side is DATE, only dates are used),
|
|
datetime format "YYYYMMDDTHHMMSS"</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
while( $comp = $vcalendar->getComponent( [ Vcalendar::RESOURCES => "PC" ]) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="getComponents"></a><h4>3.1.3.3 getComponents</h4>
|
|
<p>Return (array) Vcalendar instance components.</p>
|
|
<p class="label">format</p>
|
|
<p class="format">Vcalendar::getComponents( [ compType ] )</p>
|
|
<p class="comment">compType : (string) component type
|
|
|
|
<p class="label">Example</p>
|
|
<p>Return all Vevents</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
foreach( $vcalendar->getComponents( Vcalendar::VEVENT ) as $component ) {
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="replaceComponent"></a><h4>3.1.3.4 replaceComponent</h4>
|
|
<P>
|
|
Replace calendar component in vcalendar based on component property <a href="#UID">UID</a>
|
|
(<a href="#VEVENT">EVENT</a> / <a href="#VTODO">VTODO</a> / <a href="#VJOURNAL">VJOURNAL</a> / <a href="#VFREEBUSY">VFREEBUSY</a>).
|
|
If not found, inserted last in component chain.
|
|
</p>
|
|
<p>
|
|
In case of multiple components sharing the same UID (ex. a RECURRENCE-ID property altering a recurrence pattern),
|
|
the first found is replaced and it may lead to unpredictable result, to use with care.
|
|
</p>
|
|
<p>
|
|
For a <a href="#VTIMEZONE">VTIMEZONE</a> component, a <a href="#TZID">TZID</a> match is required.
|
|
</p>
|
|
<p>
|
|
A successfull replace returns bool true otherwise bool false.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException/UnexpectedValueException on unknown or not-found component error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::replaceComponent( component )</p>
|
|
<p class="comment">component = (object) component instance</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vcalendar->replaceComponent( $component );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="selectComponents"></a><h4>3.1.3.5 selectComponents</h4>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Selects <a href="#VEVENT">EVENT</a> / <a href="#VTODO">VTODO</a> / <a href="#VJOURNAL">VJOURNAL</a> /
|
|
<a href="#VFREEBUSY">VFREEBUSY</a> components from the Vcalendar instance on based on <b>dates</b>
|
|
(notice <a href="#date_restraints">date restraints</a>), based on the initial <a href="#DTSTART">DTSTART</a>
|
|
property along with the <a href="#RRULE">RRULE</a>, <a href="#RDATE">RDATE</a>, <a href="#EXDATE">EXDATE</a>
|
|
and <a href="#EXRULE">EXRULE</a> properties in the component and <a href="#UID">UID</a>-matched component(s)
|
|
with <a href="#RECURRENCE-ID">RECURRENCE-ID</a>.
|
|
</p>
|
|
<p>Requirement:</p>
|
|
<ul>
|
|
<li>
|
|
The property <a href="#DTSTART">DTSTART</a> is required.
|
|
If missing in a <a href="#VTODO">VTODO</a> component, <a href="#DTSTART">DUE</a> is used.
|
|
</li>
|
|
<li>If not using local date, timezone in property <a href="#DTSTART">DTSTART</a> etc. MUST be PHP compliant.</li>
|
|
</ul>
|
|
<p>Limitations:</p>
|
|
<ul>
|
|
<li>The values "SECONDLY" / "MINUTELY" / "HOURLY" in the "FREQ" rule part are NOT supported.</li>
|
|
<li>
|
|
<dl>
|
|
<dt>If using components with properties</dt>
|
|
<dd>
|
|
<a href="#UID">UID</a> in combination with <a href="#SEQUENCE">SEQUENCE</a> and
|
|
<a href="#RECURRENCE-ID">RECURRENCE-ID</a>
|
|
(i.e. altering an individual instance within the recurrence set),
|
|
</dd>
|
|
</dl>
|
|
the <a href="#RECURRENCE-ID">RECURRENCE-ID</a> parameter "RANGE" ("THISANDPRIOR" / "THISANDFUTURE")
|
|
is NOT (yet) supported.
|
|
</li>
|
|
<li>only one reccurrence a day</li>
|
|
<li>a RDATE reccurrence will overwrite any RRULE reccurrence, on an date (Ymd) basis</li>
|
|
<li>no X-CURRENT-DTEND if no DTEND (DUE) is set (below)</li>
|
|
<li>
|
|
if <a href="https://tools.ietf.org/html/rfc7529" title="Download rfc7529" target="_blank">rfc7529</a>
|
|
RRULE RSCALE set, only GREGORY/GREGORIAN/ISO8601 accepted.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
Returns an array with components (events) or bool falses if no found component(s) exists.
|
|
Opt. replaced (<a href="#RECURRENCE-ID">RECURRENCE-ID</a>) components has (if missing)
|
|
updated <a href="#SUMMARY">SUMMARY</a>,
|
|
<a href="#DESCRIPTION">DESCRIPTION</a> and <a href="#COMMENT">COMMENT</a>s properties.
|
|
</p>
|
|
<p>
|
|
Added X-properties in recurrent instances of a <strong>calendar</strong> component:
|
|
</p>
|
|
<ul>
|
|
<li>"X-CURRENT-DTSTART", TEXT content, <i>"Y-m-d [H:i:s [timezone]]"</i> showing the current start date.</li>
|
|
<li>"X-CURRENT-DTEND" alt. "X-CURRENT-DUE" (opt), TEXT content, <i>"Y-m-d [H:i:s [timezone]]"</i> showing the current end date.</li>
|
|
<li>"X-RECURRENCE", the RRULE/RDATE recurrence pattarn number (not in the recurrence start), also after an RECURRENCE-ID change</li>
|
|
<li>"X-OCCURENCE", contains, where applicable, single multi-day recurrence event day number (formatted as 'day X of Y')</li>
|
|
</ul>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_CURRENT_DTSTART,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_CURRENT_DTEND,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_CURRENT_DUE,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_RECURRENCE,<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_OCCURENCE<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p>
|
|
Throws InvalidArgumentException on argument error, Exception on DateTime/DateInterval error.
|
|
</p>
|
|
<p>
|
|
The following recur rule sets has improved base selects :
|
|
</p>
|
|
<dl>
|
|
<dt>FREQ=DAILY</dt>
|
|
<dd>BYDAY opt, only fixed weekdays ex. "TH", not "-1TH"</dd>
|
|
<dd>BYMONTH opt</dd>
|
|
<dd>BYMONTHDAY opt</dd>
|
|
<dd>BYSETPOS, only if BYMONTH or BYMONTHDAY is set</dd>
|
|
|
|
<dt>FREQ=WEEKLY</dt>
|
|
<dd>1
|
|
<ul>
|
|
<li>BYMONTH opt</li>
|
|
</ul>
|
|
</dd>
|
|
<dd>2
|
|
<ul>
|
|
<li>BYDAY req, only fixed weekdays ex. "TH", not "-1TH"</li>
|
|
<li>BYMONTH opt</li>
|
|
</ul>
|
|
</dd>
|
|
|
|
<dt>FREQ=MONTHLY</dt>
|
|
<dd>1
|
|
<ul>
|
|
<li>BYDAY opt, only fixed weekdays ex. "TH", not "-1TH"</li>
|
|
<li>BYMONTH opt, BYMONTHDAY opt</li>
|
|
<li>BYSETPOS opt, only if BYMONTHDAY is set</li>
|
|
</ul>
|
|
</dd>
|
|
<dd>2
|
|
<ul>
|
|
<li>BYDAY req</li>
|
|
<li>BYMONTH opt</li>
|
|
<li>BYSETPOS opt</li>
|
|
</ul>
|
|
</dd>
|
|
|
|
<dt>FREQ=YEARLY</dt>
|
|
<dd>1
|
|
<ul>
|
|
<li>BYMONTH opt</li>
|
|
<li>BYMONTHDAY opt</li>
|
|
</ul>
|
|
</dd>
|
|
<dd>2
|
|
<ul>
|
|
<li>BYMONTH opt</li>
|
|
<li>BYDAY req</li>
|
|
<li>BYSETPOS opt</li>
|
|
</ul>
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
<p class="format">Vcalendar::selectComponents([ startYear, startMonth, startDay
|
|
[, endYear, endMonth, endDay
|
|
[, cType [, flat [, any [, split]]]]]])
|
|
</p>
|
|
<p class="comment">startYear : (int) start year (4*digit), default current year
|
|
(object) DateTimeInterface instance, start date<sup>*</sup>
|
|
startMonth : (int) start month (1-2*digit), default current month
|
|
(object) DateTimeInterface instance, end date<sup>*</sup>
|
|
startDay : (int) start day (1-2*digit), default current day
|
|
endYear : (int) end year (4*digit), default startYear
|
|
endMonth : (int) end month (1-2*digit), default startMonth
|
|
endDay : (int) end day (1-2*digit), default startDay
|
|
cType : (mixed) <strong>calendar</strong> component type(-s), (string/array)
|
|
("vevent", "vtodo", "vjournal", "vfreebusy")
|
|
(bool) false (default) => all
|
|
flat : (bool) true => output : array[] (ignores split)
|
|
component where recurrence pattern exists within period
|
|
false (default) => output : array[Year][Month][Day][]
|
|
any : (bool) true (default) => select components with recurrence within period
|
|
false => only components that starts (DTSTART) within period
|
|
split : (bool) true (default) => one component copy for every day it occurs
|
|
within the period
|
|
false => one occurrence of component in output array,
|
|
start date/recurrence (start) date
|
|
<sup>*</sup>When using DateTimeInterface instances, other start/end arguments are ignored.
|
|
|
|
valid flat any split
|
|
combinations (defaults in upper case)
|
|
1 false true true
|
|
2 false true false
|
|
3 false false [false] (split set to false if flat=false and any=false)
|
|
4 true true [false] (split set to false if flat=true)
|
|
5 true false [false] (split set to false if flat=true)
|
|
|
|
If flat is set to false, output array is sorted in 'Y-m-d h-i-s' asc. order.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se", ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$events_arr = $vcalendar->selectComponents(
|
|
2007, 11, 1, 2007, 11, 30, Vcalendar::VEVENT
|
|
);
|
|
// <span class="comment">select all events occurring 1-30 nov. 2007</span>
|
|
foreach( $events_arr as $year => $year_arr ) {
|
|
foreach( $year_arr as $month => $month_arr ) {
|
|
foreach( $month_arr as $day => $day_arr ) {
|
|
foreach( $day_arr as $event ) {
|
|
$currddate = $event->getDtstart();
|
|
<span class="comment">// if member of a recurrence set
|
|
// X-prop " x-current-dtstart" returns
|
|
// <(string) date("Y-m-d [H:i:s][timezone/UTC offset]")></span>
|
|
$startDate = $event->getDtstart(;
|
|
$summary = $event->getSummary();
|
|
$description = $event->getDescription();
|
|
.. .
|
|
|
|
</p>
|
|
<a id="selectComponents2"></a>
|
|
<p class="label">format 2</p>
|
|
<p>
|
|
Using this format, the Vcalendar method selects components based on specific property value(-s).
|
|
</p>
|
|
<dl>
|
|
<dt>Supported Descriptive Component Properties
|
|
<dd><a href="#CATEGORIES">CATEGORIES</a>
|
|
<dd><a href="#LOCATION">LOCATION</a>
|
|
<dd><a href="#PRIORITY">PRIORITY</a>
|
|
<dd><a href="#RESOURCES">RESOURCES</a>
|
|
<dd><a href="#STATUS">STATUS</a>
|
|
<dd><a href="#SUMMARY">SUMMARY</a>
|
|
<dt>Supported Relationship Component Properties
|
|
<dd><a href="#ATTENDEE">ATTENDEE</a> <sup>*1</sup>
|
|
<dd><a href="#CONTACT">CONTACT</a>
|
|
<dd><a href="#ORGANIZER">ORGANIZER</a> <sup>*1</sup>
|
|
<dd><a href="#RELATED-TO">RELATED-TO</a>
|
|
<dd><a href="#URL">URL</a>
|
|
<dd><a href="#UID">UID</a>
|
|
</dl>
|
|
<dl>
|
|
<dt><sup>*1</sup>
|
|
<dd><a href="#ATTENDEE">ATTENDEE</a> and
|
|
<a href="#ORGANIZER">ORGANIZER</a> search values must be prefixed by (upper case) protocol like "MAILTO:chair@ical.net".
|
|
</dl>
|
|
<p>
|
|
Note, to ease up usage, you will find convenient constants for component names,
|
|
properties, config keys etc in (src/)IcalInterface.
|
|
</p>
|
|
<p>
|
|
For the property <a href="#SUMMARY">SUMMARY</a>, if a search value (any case) exists within property value, a hit is found.
|
|
For the other properties an exact (strict case) match is required. Multiple search properties may coexist.
|
|
</p>
|
|
<p>
|
|
To retrieve specific Vcalendar instance property values,
|
|
searching <b>ALL</b> components,
|
|
Vcalendar::getProperty() may work.
|
|
</p>
|
|
<p>
|
|
To get components based on property values, use <a href="#getComponent5">getComponent</a> (Format 5).
|
|
</p>
|
|
<p class="format">Vcalendar::selectComponents( searchArray )</p>
|
|
<p>Outputs an array of matched (unique) components in <a href="#UID">UID</a> order.</p>
|
|
<p class="comment">searchArray : (array) *( propertyName => propertyValue )
|
|
propertyName : (string) above (any case)
|
|
propertyValue : (string) value / (array) ( *[ (string) value] )
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$searchArray = [ Vcalendar::PRIORITY => [ 1, 2, 3, 4 ]];
|
|
$highPrioArr = $vcalendar->selectComponents( $searchArray );
|
|
// <span class="comment">select all components with PRIORITY set to high (1-4)</span>
|
|
if( ! empty( $highPrioArr )) {
|
|
$highPrioCal = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$highPrioCal->setXProp( Vcalendar::X_WR_CALDESC, "High priority events" );
|
|
foreach( $highPrioArr as $highPrioComponent ) {
|
|
$highPrioCal->setComponent( $highPrioComponent );
|
|
}
|
|
$highPrioCal->returnCalendar();
|
|
} // end if
|
|
exit;
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="setComponent"></a><h4>3.1.3.6 setComponent</h4>
|
|
<p>
|
|
Replace or update component in the Vcalendar instance.
|
|
Also add a <strong>calendar</strong> component to the Vcalendar instance
|
|
when <strong>calendar</strong> component is created with the procedural (<b>non</b>-factory) method,
|
|
see example <a href="#vevent_constr">VEVENT</a>, format 2.
|
|
</p>
|
|
<p>A successful update returns true.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on unknown component.
|
|
</p>
|
|
|
|
<p class="label">format 1</p>
|
|
<p>Insert last in component chain.</p>
|
|
<p class="format">Vcalendar::setComponent( component )
|
|
Vcalendar::addComponent( component ) // <span class="comment">alias</span></p>
|
|
<p class="comment">component = (object) Vcalendar component instance</p>
|
|
<p class="comment">addComponent, may be removed in future versions.</p>
|
|
<p class="label">format 2</p>
|
|
<p>
|
|
Insert/replace component with order number (1st=1, 2nd=2).
|
|
If replace and orderNumber is not found, component is inserted last in chain.
|
|
</p>
|
|
<p class="format">Vcalendar::setComponent( component, orderNumber )</p>
|
|
<p class="comment">component = (object) Vcalendar component instance
|
|
int = (int) order numder</p>
|
|
<p class="label">format 3</p>
|
|
<p>
|
|
Replace component with component type and 1st alt. component order number.
|
|
If orderNumber is not found, component is inserted last in chain.
|
|
</p>
|
|
<p class="format">Vcalendar::setComponent( component, componentType [, componentSuborderNo])</p>
|
|
<p class="comment">component = (object) Vcalendar component instance
|
|
componentType = (string) component type
|
|
componentSuborderNo = (int) component Suborder Number</p>
|
|
<p class="label">format 4</p>
|
|
<p>
|
|
Replace component with <a href="#UID">UID</a>.
|
|
N.B <a href="#UID">UID</a> is NOT set for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">TIMEZONE</a> components.
|
|
If <a href="#UID">UID</a> is not found, component is inserted last in chain.
|
|
</p>
|
|
<p>
|
|
As described in <a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>
|
|
"VALARM Extensions for iCalendar",
|
|
<a href="#VALARM">ALARM</a> may have <a href="#UID">UID</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</p>
|
|
|
|
|
|
<p class="format">Vcalendar::setComponent( component, <a href="#UID">UID</a> )</p>
|
|
<p class="comment">component = (object) Vcalendar component instance</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$vevent = vcalendar->getComponent( 1 ); // <span class="comment">fetch first EVENT</span>
|
|
$vevent->setDtstart(
|
|
new DateTime( "2006-12-24 19:30:00" )
|
|
); // <span class="comment">update <a class="ref" href="#DTSTART">DTSTART</a> property</span>
|
|
$vcalendar->setComponent( $vevent, 1 ); // <span class="comment">replace first component</span>
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_object_methods">[up]</a>
|
|
|
|
<a id="iCalcreator_calendar_methods"></a><h3>3.1.4 Vcalendar calendar methods</h3>
|
|
|
|
<a id="parse_merge"></a><h4>3.1.4.1 parse and merge</h4>
|
|
<p>
|
|
Parse string <strong>calendar</strong> content (or iCal file(-s)) into a single Vcalendar instance (components, properties and parameters),
|
|
including multiple vcalendars (within a single iCal calendar) parse, e.g. Oracle Calendar exports.
|
|
</p>
|
|
<p>
|
|
If missing, component property <a href="#UID">UID</a> is created when parsing.
|
|
</p>
|
|
<p>
|
|
Minor errors like non-standard line-endings, initial and trailing empty lines
|
|
as well as files without proper end line(-s) (i.e. missing component end and/or "END:CALENDAR" iCal directives)
|
|
are managed.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException on argument error, UnexpectedValueException on parse error.<br>
|
|
Note, parsing an empty calendar (ie without <a href="#VEVENT">EVENT</a>s etc) will NOT lead to error.
|
|
To count components, before and after parse, use <a href="#countComponents">countComponents</a> method.
|
|
</p>
|
|
<p>
|
|
Non-standard iCal properties (except the <a href="#X-PROPERTY">X-properties</a>) are ignored.
|
|
</p>
|
|
<p>
|
|
For parsing an internet URL resource, <a href="https://github.com/iCalcreator/UrlRsrc" target="_blank" title="download UrlRsrc">UrlRsrc</a> can be used.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p class="format">Vcalendar::parse( [ textToParse ] )</p>
|
|
<p class="comment">textToParse = (string) calendarContent
|
|
ex. result from - file_get_contents( "filename")
|
|
(array) calendarContent
|
|
ex. result from - file( "filename", FILE_IGNORE_NEW_LINES )
|
|
</p>
|
|
|
|
<p class="label">parse example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
// <span class="comment">set Your unique id, </span>
|
|
// <span class="comment">site info for the Vcalendar PRODID property</span>
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se", ] );
|
|
|
|
// <span class="comment">get iCal contents from file</span>
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
|
|
// <span class="comment">parse iCal contents</span>
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
</p>
|
|
|
|
<p class="label">parse example 2</p>
|
|
<p>
|
|
PHP <span class="example">file_get_contents</span> may work on external resources.
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
// <span class="comment">set Your unique id, </span>
|
|
// <span class="comment">site info for the Vcalendar PRODID property</span>
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
// <span class="comment">get iCal contents from external resource</span>
|
|
$iCalContent = file_get_contents( "https://www.ical.net/calendars/calendar.ics" );
|
|
|
|
// <span class="comment">parse iCal contents</span>
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
</p>
|
|
|
|
<p class="label">parse example 3</p>
|
|
<p>
|
|
Here using <a href="https://github.com/iCalcreator/UrlRsrc" target="_blank" title="download UrlRsrc">UrlRsrc</a> to download an internet (URL) resource.
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Http\UrlRsrc;
|
|
|
|
// <span class="comment">set Your unique id, </span>
|
|
// <span class="comment">site info for the Vcalendar PRODID property</span>
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
// <span class="comment">get iCal contents from external resource</span>
|
|
$iCalContent = UrlRsrc::getContent( "https://www.ical.net/calendars/calendar.ics" );
|
|
|
|
// <span class="comment">parse iCal contents</span>
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
</p>
|
|
|
|
<p class="label">parse example 4</p>
|
|
<p>
|
|
Parse an array with iCal formatted rows.
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$str = [
|
|
"BEGIN:VCALENDAR",
|
|
"PRODID:-//kigkonsult.se//NONSGML kigkonsult.se iCalcreator 2.41.70//",
|
|
"VERSION:2.0",
|
|
"BEGIN:VEVENT",
|
|
"DTSTART:20101224T190000Z",
|
|
"DTEND:20101224T200000Z",
|
|
"DTSTAMP:20101020T103827Z",
|
|
"UID:20101020T113827-1234GkdhFR@test.org",
|
|
"DESCRIPTION:example",
|
|
"END:VEVENT",
|
|
"END:VCALENDAR"
|
|
];
|
|
$vcalendar->parse( $str );
|
|
|
|
</p>
|
|
|
|
<p class="label">merge example</p>
|
|
<p>
|
|
Parse two iCal files into one.
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$iCalContent = file_get_contents( "file1.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
$iCalContent = file_get_contents( "file2.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
|
|
file_put_contents(
|
|
"icalmerge.ics",
|
|
$vcalendar->createCalendar(),
|
|
LOCK_EX
|
|
);
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="createCalendar"></a><h4>3.1.4.2 createCalendar</h4>
|
|
Generate and return (string) <strong>calendar</strong>.
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createCalendar()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $vcalendar->createCalendar();
|
|
|
|
echo $str;
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="returnCalendar"></a><h4>3.1.4.3 returnCalendar</h4>
|
|
<p>
|
|
Redirect the Vcalendar instance content to user browser.
|
|
Filename, addressed to browser, is automatically generated if missing or not set,
|
|
the filename will look like it is set using<br>
|
|
</p>
|
|
<p class="example">
|
|
$filename = date( "YmdHis" ).".ics"</p>
|
|
<p>
|
|
The method do not stop PHP script (exit), returns (bool) true on success.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::returnCalendar( [ utf8Encode [, gzip [, cdType [, fileName ]]]] )</p>
|
|
<p class="comment">utf8Encode = (bool) true: utf8 encoded output,
|
|
false: (default) no encoding
|
|
gzip = (bool) true: gzip compressed output
|
|
Header "Content-Length" only sent when gzip=true
|
|
false: (default) no compressing
|
|
cdType = (bool) true: (default) Content-Disposition: attachment
|
|
false: Content-Disposition: inline
|
|
fileName = (string) returned file Name</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vevent = $vcalendar->newVevent()
|
|
->setDtstart(
|
|
new DateTime(
|
|
"2007-04-01 19:00:00",
|
|
new DateTimezone( "Europe/Stockholm" )
|
|
)
|
|
)
|
|
->setDuration( new DateInterval( "PT1H" ))
|
|
->setLocation( "Central Plaza" )
|
|
->setSummary( "PHP summit" );
|
|
|
|
$vcalendar->returnCalendar();
|
|
exit;
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$utf8Encode = true;
|
|
if( isset( $_SERVER["HTTP_ACCEPT_ENCODING"] ) &&
|
|
( false !== strpos( strtolower( $_SERVER["HTTP_ACCEPT_ENCODING"] ), "gzip" ))) {
|
|
$gzip = true;
|
|
}
|
|
else {
|
|
$gzip = false;
|
|
}
|
|
$vcalendar->returnCalendar( $utf8Encode, $gzip );
|
|
exit;
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="sort"></a><h4>3.1.4.4 sort</h4>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Sort created/parsed <strong>calendar</strong> components on the following (prioritized) keys:<br>
|
|
1 - X-CURRENT-DTSTART - X-CURRENT-DTEND/X-CURRENT-DUE<br>
|
|
(if created in Vcalendar method <a href="#selectComponents">selectComponents</a>)<br>
|
|
1 - <a href="#DTSTART">DTSTART</a> + <a href="#DTEND">DTEND</a> alt. <a href="#DURATION">DURATION</a> (where exists)<br>
|
|
1 - <a href="#DTSTART">DTSTART</a> + <a href="#DUE">DUE</a> alt. <a href="#DURATION">DURATION</a> (where exists)<br>
|
|
1 - <a href="#DTSTART">DTSTART</a> (if exists)<br>
|
|
2 - <a href="#CREATED">CREATED</a> / <a href="#DTSTAMP">DTSTAMP</a><br>
|
|
3 - <a href="#UID">UID</a><br>
|
|
A date value, like "DTSTART;VALUE=DATE:20120717", are sorted before a datetime value.<br>
|
|
<a href="#VTIMEZONE">VTIMEZONE</a> component(-s) is always placed first (ordered by <a href="#TZID">TZID</a>). The
|
|
<a href="#VTIMEZONE">STANDARD</a> / <a href="#VTIMEZONE">DAYLIGHT</a> sub-components are sorted (on asc. key <a href="#DTSTART">DTSTART</a>) when using
|
|
<a href="#createCalendar">createCalendar</a> method (or <a href="#returnCalendar">returnCalendar</a>).
|
|
<br>
|
|
Sub-components, if exists, ex.<a href="#VALARM">ALARM</a>, are not sorted.
|
|
|
|
</p>
|
|
<p class="format">Vcalendar::sort()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$vcalendar->sort();
|
|
$vcalendar->returnCalendar();
|
|
exit;
|
|
</p>
|
|
|
|
<a id="sort2"></a>
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Sort created/parsed <strong>calendar</strong> components based on specific property values and ascending order.
|
|
If a property is not set in component, an empty sort key is used (i.e. sorted first).
|
|
</p>
|
|
<p class="format">Vcalendar::sort( sortArgument )</p>
|
|
<p class="comment">sortArgument: (string) "<a href="#ATTENDEE">ATTENDEE</a>" <sup>*</sup> / "<a href="#CATEGORIES">CATEGORIES</a>" <sup>*</sup> / "<a href="#CONTACT">CONTACT</a>" <sup>*</sup> / "<a href="#DTSTAMP">DTSTAMP</a>" /
|
|
"<a href="#LOCATION">LOCATION"</a>" / "<a href="#ORGANIZER">ORGANIZER</a>" / "<a href="#PRIORITY">PRIORITY</a>" /
|
|
"<a href="#RESOURCES">RESOURCES</a>" <sup>*</sup> / "<a href="#STATUS">STATUS</a>" / "<a href="#SUMMARY">SUMMARY</a>" / "<a href="#URL">URL</a>" / "<a href="#UID">UID</a>" <sup>**</sup>.
|
|
<p class="comment"><sup>*) </sup> For a property where multiple occurrence may exist (<a href="#ATTENDEE">ATTENDEE</a>, <a href="#CATEGORIES">CATEGORIES</a>, <a href="#CONTACT">CONTACT</a>, <a href="#RESOURCES">RESOURCES</a>) lowest (alphabetic) value is used as sort key.</p>
|
|
<p class="comment"><sup>**)</sup> For multiple components with the same <a href="#UID">UID</a>, components with <a href="#RECURRENCE-ID">RECURRENCE-ID</a> / <a href="#SEQUENCE">SEQUENCE</a> set are sorted first (on asc. values) and components without <a href="#RECURRENCE-ID">RECURRENCE-ID</a> last.</p>
|
|
<p>
|
|
Note, to ease up usage, you will find convenient constants for component names,
|
|
properties, config keys etc in (src/)IcalInterface.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="countComponents"></a><h4>3.1.4.5 countComponents</h4>
|
|
<p>
|
|
The method returns (int) number of components in valendar.
|
|
Ex. usage counting components, before and after parse.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::countComponents()</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="iCalcreatorVersion"></a><h4>3.1.4.6 iCalcreatorVersion</h4>
|
|
<p>
|
|
This static class method returns the iCalcreator class version number.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::ICALCREATOR_VERSION is available.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::iCalcreatorVersion()</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
<a id="valendarVtimezonePopulate"></a><h4>3.1.4.7 vtimezonePopulate</h4>
|
|
<p>
|
|
Adds populated Vtimezone to calendar with base from arguments or calendar data.
|
|
</p>
|
|
<p>
|
|
A shortcut using <a href="#vtimezone_populate">Util/VtimezonePopulateFactory::process</a> method.
|
|
</p>
|
|
<p>
|
|
Return Vcalendar instance.
|
|
</p>
|
|
<p>
|
|
Throws Exception on invalid (<em>PHP</em>) timezone.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::vtimezonePopulate( [ timezone [, xprops, [ start [, end ]]]] )</p>
|
|
<p class="comment">timezone = (string|array) valid timezone(s), acceptable by <em>PHP</em> DateTimeZone
|
|
xprops = (array) ( *[ x-propName => value ] ), timezone non-standard properties
|
|
from = DateTimeInterface | (int) timestamp, period start date<sup>*</sup>
|
|
to = DateTimeInterface | (int) timestamp, period end date<sup>*</sup>
|
|
</p>
|
|
<p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_calendar_methods">[up]</a>
|
|
|
|
|
|
|
|
<a id="iCalcreator_configuration_methods"></a><h3>3.1.5 Vcalendar configuration</h3>
|
|
|
|
<a id="configKeys"></a><h4>3.1.5.1 configuration keys</h4>
|
|
<p>
|
|
Note, to ease up usage, you will find convenient constants for config keys etc in (src/)IcalInterface.
|
|
</p>
|
|
<table>
|
|
<tr>
|
|
<td class="bl bb">key</td>
|
|
<td class="bl bb"><strong>calendar</strong></td>
|
|
<td class="bl bb">component</td>
|
|
<td class="bl bb">remark</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="bl bb"><a class="ref" href="#allowEmpty">allowEmpty</a></td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb ref"> </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="bl bb"><a class="ref" href="#Compsinfo">Compsinfo</a></td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb ref">getConfig only</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="bl bb"><a class="ref" href="#Language">Language</a></td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb ref"> </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="bl bb"><a class="ref" href="#setPropertyNames">setPropertyNames</a></td>
|
|
<td class="bl bb center"> </td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb ref">getConfig only</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="bl bb"><a class="ref" href="#Unique_id">Unique_id</a></td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb center">*</td>
|
|
<td class="bl bb ref"> </td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="getConfig"></a><h4>3.1.5.2 getConfig</h4>
|
|
<p class="format">Vcalendar::getConfig( [ key ] )</p>
|
|
<p class="comment">key = (string) config key</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
.. .
|
|
$uniqueId = $vcalendar->getConfig( Vcalendar::UNIQUE_ID );
|
|
.. .
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
.. .
|
|
$config = $vcalendar->getConfig();
|
|
.. .
|
|
</p>
|
|
<p class="comment">Output= [
|
|
*( string key => mixed value )
|
|
]
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="initConfig"></a><h4>3.1.5.3 calendar/component initialization</h4>
|
|
<p class="label">Format</p>
|
|
<p>Create a new Vcalendar object instance.</p>
|
|
<p class="format">Vcalendar::vcalendar( [ config ] )</p>
|
|
<p class="comment">config = (array) ( *[, key => value] )
|
|
key = (string) config key
|
|
value = (mixed) config value</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
</p>
|
|
<p>Create a new <strong>calendar</strong> component.</p>
|
|
<p class="format">Vcalendar::component( [ config ] )</p>
|
|
<p class="comment">config = (array) ( key => value *[, key => value] )
|
|
key = (string) config key
|
|
value = (mixed) config value</p>
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
|
|
$config = [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ];
|
|
$vevent = new Vevent( $config );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
|
|
.. .
|
|
$config = $vcalendar->getConfig();
|
|
$vevent = new Vevent( $config );
|
|
.. .
|
|
|
|
</p>
|
|
<p>
|
|
Only component relevant configuration are set.
|
|
If using a <a href="#vevent_constr">component factory method</a>, configuration is set automatically.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="setConfig"></a><h4>3.1.5.4 setConfig</h4>
|
|
<p>A successful "setConfig" returns true.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">Vcalendar::setConfig( [ config ] )</p>
|
|
<p class="comment">config = (array) ( key => value *[, key => value] )
|
|
key = (string) config key
|
|
value = (mixed) config value</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar();
|
|
$config = [
|
|
Vcalendar::UNIQUE_ID => "kigkonsult.se",
|
|
];
|
|
$vcalendar->setConfig( $config );
|
|
|
|
</p>
|
|
|
|
<p class="label">Format 2</p>
|
|
<p class="format">Vcalendar::setConfig( key, value )</p>
|
|
<p class="comment">key = (string) config key
|
|
value = (mixed) config value</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar();
|
|
$vcalendar->setConfig( Vcalendar::UNIQUE_ID, "kigkonsult.se" );
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="allowEmpty"></a><h4>3.1.5.5 Allow empty components</h4>
|
|
<p>
|
|
Allow or reject empty <strong>calendar</strong> properties. Used in <a href="#createCalendar">createCalendar</a>, <a href="#returnCalendar">returnCalendar</a> or
|
|
create<Property> methods, creating [RFC5545] formats.
|
|
</p>
|
|
<p>
|
|
Default true (allow).
|
|
</p>
|
|
<p>
|
|
There is a convenient config key constant available: Vcalendar::ALLOWEMPTY.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="Compsinfo"></a><h4>3.1.5.6 Component information</h4>
|
|
<p>Only to use with Vcalendar method getConfig.</p>
|
|
<p>
|
|
Get information about the Vcalendar instance components. Returns array with basic information
|
|
about all components (in array format) within the Vcalendar instance.
|
|
</p>
|
|
<p class="comment">Output = [ *compinfo ]
|
|
compinfo = [
|
|
"ordno" => int ordno,
|
|
// <span class="commsnt">order number (1st=1, 2nd=2..)</span>
|
|
"type" => string type,
|
|
// <span class="comment">component type (vevent, vtodo</span>
|
|
"uid" => string uid,
|
|
// <span class="comment">component <a href="#UID">UID</a> (not for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">TIMEZONE</a>)</span>
|
|
"props" =>, [ *( propertyName => Property count ) ],
|
|
// <span class="comment">for every set property</span>
|
|
"sub" => [ *compinfo ] )
|
|
// <span class="comment">if subcomponents exists, an array for each subcomponent</span></p>
|
|
]
|
|
<p>
|
|
There is a convenient config key constant available: Vcalendar::COMPSINFO.
|
|
</p>
|
|
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$compsinfo = $vcalendar->getConfig( Vcalendar::COMPSINFO );
|
|
foreach( $compsinfo as compinfo) {
|
|
echo " order number : " . $compinfo["ordno"]."<br/>";
|
|
echo " type : " . $compinfo["type"]."<br/>";
|
|
echo " UID : " . $compinfo["uid"]."<br/>";
|
|
foreach( $compinfo["props"] as $propertyName => $propertyCount ) {
|
|
echo " $propertyName = $propertyCount";
|
|
if( is_array( $compinfo["sub"] )) {
|
|
foreach( $compinfo["sub"] as $subcompinfo ) {
|
|
echo " order number : " . $subcompinfo["ordno"]."<br/>";
|
|
/* .. dito if subcomponents exists */
|
|
}
|
|
} // end foreach
|
|
} // end foreach
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="Language"></a><h4>3.1.5.7 Language</h4>
|
|
<p>
|
|
Language for the Vcalendar instance and component TEXT value properties as defined in [RFC5546].
|
|
</p>
|
|
<p>
|
|
Default empty.
|
|
</p>
|
|
<p>
|
|
If NOT set in TEXT property parameters, language from component instance "setConfig( "language", ..)" method will be used, if set,
|
|
otherwise language from <strong>calendar</strong> method "setConfig( "language", ..)" will be used, if set.
|
|
</p>
|
|
<p>
|
|
The <strong>calendar</strong> property PRODID is always recreated when setting (<strong>calendar</strong>) language
|
|
(, note <a href="#Unique_id">Unique_id</a>, below).
|
|
</p>
|
|
<p>
|
|
There is a convenient config key constant available: Vcalendar::LANGUAGE.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="setPropertyNames"></a><h4>3.1.5.8 setPropertyNames</h4>
|
|
<p>
|
|
Returns array of property names for all set properties in component. "X-PROP" will be used when <a href="#X-PROPERTY">X-properties</a> are set.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="Unique_id"></a><h4>3.1.5.9 Unique_id</h4>
|
|
<p>
|
|
"Unique_id" is used in <strong>calendar</strong> property PRODID, created automatically.
|
|
</p>
|
|
<p class="quotes">PRODID
|
|
The identifier is RECOMMENDED to be the identical syntax to the [RFC 822] addr-spec.
|
|
A good method to assure uniqueness is to put the domain name or a domain literal IP address of the host on which
|
|
</p>
|
|
<p>
|
|
Default AUTOMATICALLY generated by using <em>PHP</em> function gethostbyname( $_SERVER["SERVER_NAME"] )
|
|
when running in a web server environment or "localhost" when using command line interface.
|
|
Used when setting other (domain) name than server name.
|
|
</p>
|
|
<p>
|
|
The <strong>calendar</strong> property PRODID is always recreated when setting unique_id.
|
|
</p>
|
|
<p>
|
|
There is a convenient config key constant available: Vcalendar::UNIQUE_ID.
|
|
</p>
|
|
<br>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_configuration_methods">[up]</a>
|
|
|
|
<a id="Calendar_component_object_property_function_list"></a><h2>3.2 Component property methods</h2>
|
|
<p>
|
|
All iCalcreator component object property methods for get/set data.<br>
|
|
For property format in detail, see
|
|
<a href="https://tools.ietf.org/html/rfc5545" title="RFC5545" target="_blank">RFC5545</a>
|
|
"Internet Calendaring and Scheduling Core Object Specification (iCalendar)".
|
|
</p>
|
|
|
|
|
|
<a id="date_restraints"></a><h3>3.2.1 Date restraints</h3>
|
|
|
|
<a id="DATE_WITH_UTC_TIME"></a>
|
|
<p>
|
|
Notice for properties and VALUE=DATE-TIME in <b>UTC</b> timezone.
|
|
<p class="quotes">RFC5545:
|
|
The date with UTC time, or absolute time,
|
|
is identified by a LATIN CAPITAL LETTER Z suffix character (US-ASCII decimal 90),
|
|
the UTC designator, appended to the time value.
|
|
For example, the following represents January 19, 1998, at 0700 UTC:
|
|
</p>
|
|
<p class="quotes">DTSTART:19980119T070000Z</p>
|
|
<p class="quotes">The TZID property parameter MUST <b>NOT</b> be applied to DATE-TIME properties
|
|
whose time values are specified in UTC timezone.
|
|
</p>
|
|
|
|
<p>
|
|
Due to a limitation in <em>PHP</em> date functions (on 32 bit systems),
|
|
a date (ex. while setting <a href="#DTSTART">DTSTART</a> property)
|
|
before 1970 or after GMT may force a <em>PHP</em> date function to generate an error or set date to "January 1 1970".
|
|
</p>
|
|
<p class="comment">string date(time) formats:
|
|
"20110625", "2011-06-25", "2011/06/26"
|
|
"20110625051015", "20110625 051015"
|
|
"20110625T051015", "20110625t051015"
|
|
"2011-06-25 05:10:15", "2011-06-25T05:10:15", "2011-06-25t05:10:15"
|
|
"2011/06/25 05:10:15", "2011/06/25T05:10:15", "2011/06/25t05:10:15"
|
|
Other string formats, acceptable by <em>PHP</em> strtotime function, may work.
|
|
Any trailing characters, will be interpreted as offset/timezone.
|
|
Input string dates with timezone should have a space character between datePart and timezonePart.
|
|
</p>
|
|
<p>
|
|
If a DateTime instance used as (date[time]) property input (to recommend),
|
|
opt. param TZID (timezone) should match
|
|
or not be set at all.
|
|
</p>
|
|
<p>
|
|
As of 2.41.60, GitHub#103,
|
|
using a non-PHP complient (ex ms) timezone in a date property string value input
|
|
or in a TZID parameter
|
|
may be accepted and converted to a corr. PHP timezone but may result in an unpredictable one.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="propValueParam"></a><h3>3.2.2 Property value/params</h3>
|
|
<p>
|
|
From 2.41.36 all (but
|
|
<a href="#VCALENDAR">VCALENDAR</a>
|
|
<a href="#CALSCALE">CALSCALE</a>,
|
|
<a href="#METHOD">METHOD</a> and
|
|
<a href="#VERSION">VERSION</a>)
|
|
properties value and parameters
|
|
are stored in a (class) Pc instance,
|
|
changed from a PHP type array to an somewhat restricted ArrayObject extend class, Pc.
|
|
</p>
|
|
<p>
|
|
The <span class="format"> component::get<Property>( true )</span> method output
|
|
is an cloned Pc instance with property contents.<br>
|
|
For properties where multiple occurences are allowed (ex <a href="#COMMENT">COMMENT</a>),<br>
|
|
format is <span class="format"> component::get<Property>( propOrderNo/null, true );</span><br>
|
|
The current property contents will not be affected of any output Pc instance changes.<br>
|
|
Parameter ("params") keys always in uppercase,
|
|
</p>
|
|
<p>An pre-2.41.36 get-example, still works in post-2.41.36.</p>
|
|
<p class="example">
|
|
.. .
|
|
$output = $event->getSummary( true );
|
|
$value = $output["value"];
|
|
$params = $output["params"];
|
|
.. .
|
|
</p>
|
|
<p>
|
|
All property set-methods (but <a href="#VCALENDAR">VCALENDARs</a>, above) accepts
|
|
Pc class instance as first (and only) argument.
|
|
</p>
|
|
<p>An post-2.41.36 get/set-example, get-methods works as in example above.</p>
|
|
<p class="example">
|
|
.. .
|
|
$output = $event->getSummary( true );
|
|
$value = $output->value;
|
|
$params = $output->params;
|
|
.. .
|
|
$event->setSummary( Pc::factory( $value, $params ));
|
|
.. .
|
|
|
|
</p>
|
|
<p>Pc class methods :</p>
|
|
|
|
<dl>
|
|
<dt><span class="format">Pc::factory( [ value [, params ]] )</span></dt>
|
|
<dd>Pc class factory (static) method</dd>
|
|
<dd><span class="comment">value = mixed </span></dd>
|
|
<dd><span class="comment">params = array </span></dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">Pc::getAsArray()</span></dt>
|
|
<dd>(Pc::getArrayCopy() alias)</dd>
|
|
<dd>return property (key/value) assoc array</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">Pc::isset()</span></dt>
|
|
<dd>Return bool true if property value property is set, i.e not null</dd>
|
|
|
|
<dt><span class="format">Pc::getValue()</span></dt>
|
|
<dd>Return property value, false if not set</dd>
|
|
|
|
<dt><span class="format">Pc::setEmpty()</span></dt>
|
|
<dd>Set (reset) to "empty" state (property value "" params [] )</dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">Pc::setValue( [ value ] )</span></dt>
|
|
<dd><span class="comment">value = mixed </span></dd>
|
|
<dd>Set property value</dd>
|
|
<dd>Return class instance</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">Pc::getParamKeys()</span></dt>
|
|
<dd>Return array, property parameter keys (in uppercase)</dd>
|
|
|
|
<dt><span class="format">Pc::getParams( [ pKey [, asXparamKey ] ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase </span></dd>
|
|
<dd><span class="comment">asXparamKey = bool, opt do X-prefix pkey, default false </span></dd>
|
|
<dd>Return all property parameters (key/value) assoc array or single parameter key value, null if not key exists</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">Pc::hasParamKey( [ pKey [, pValue ] ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase </span></dd>
|
|
<dd><span class="comment">pValue = string </span></dd>
|
|
<dd>Return bool true if property params has key, opt with spec. value</dd>
|
|
|
|
<dt><span class="format">Pc::hasXparamKey( [ pKey [, pValue ] ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase, x-prefixed if missing </span></dd>
|
|
<dd><span class="comment">pValue = string </span></dd>
|
|
<dd>Return bool true if property params has X-key, opt with spec. value</dd>
|
|
|
|
<dt><span class="format">Pc::hasParamValue( [ pValue ] )</span></dt>
|
|
<dd><span class="comment">pValue = string, set to uppercase </span></dd>
|
|
<dd>Return bool true if property params has "VALUE" key with spec. value</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">Pc::removeParam( [ pKey [, pValue ] ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase </span></dd>
|
|
<dd><span class="comment">pValue = string </span></dd>
|
|
<dd>Remove property parameter key, opt only with spec. value</dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">removeXparam( pKey )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase, x-prefixed if missing </span></dd>
|
|
<dd>Remove property parameter X-key</dd>
|
|
<dd>Return class instance</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">addParam( pKey, pValue [, overwrite = true ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase </span></dd>
|
|
<dd><span class="comment">pValue = string </span></dd>
|
|
<dd><span class="comment">overwrite = bool, default true </span></dd>
|
|
<dd>Set property parameter key/value, default overwrite</dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">addParamValue( pValue [, overwrite = true ] ] )</span></dt>
|
|
<dd><span class="comment">pValue = string, set to uppercase </span></dd>
|
|
<dd><span class="comment">overwrite = bool, default true </span></dd>
|
|
<dd>Set contents for property parameter key "VALUE", default overwrite</dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">addXparam( pKey, pValue [, overwrite = true ] )</span></dt>
|
|
<dd><span class="comment">pKey = string, set to uppercase, x-prefixed if missing </span></dd>
|
|
<dd><span class="comment">pValue = string </span></dd>
|
|
<dd><span class="comment">overwrite = bool, default true </span></dd>
|
|
<dd>Set property parameter X-key/value, default overwrite</dd>
|
|
<dd>Return class instance</dd>
|
|
|
|
<dt><span class="format">setParams( params [, overwrite = true ] ] )</span></dt>
|
|
<dd><span class="comment">params = array </span></dd>
|
|
<dd><span class="comment">overwrite = bool, default true </span></dd>
|
|
<dd>Set property parameter X-key/value array, default overwrite (keys set to uppercase )</dd>
|
|
<dd>Return class instance</dd>
|
|
<dd><br></dd>
|
|
|
|
<dt><span class="format">isXprefixed( key )</span></dt>
|
|
<dd>static method</dd>
|
|
<dd><span class="comment">key = string </span></dd>
|
|
<dd>Return bool true if key is X-Prefixed, otherwise false</dd>
|
|
|
|
<dt><span class="format">setXPrefix( key )</span></dt>
|
|
<dd>static method</dd>
|
|
<dd><span class="comment">key = string </span></dd>
|
|
<dd>Return (string) X-prefixed key in upper case</dd>
|
|
|
|
<dt><span class="format">unsetXPrefix( key )</span></dt>
|
|
<dd>static method</dd>
|
|
<dd><span class="comment">key = string </span></dd>
|
|
<dd>Return string with opt. leading x-prefix removed</dd>
|
|
|
|
</dl>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="componentParse"></a><h3>3.2.3 Parse</h3>
|
|
<p>
|
|
Parse iCal component property text from a string or an array.
|
|
Each string/array row must be strict RFC5545 formatted, i.e. begin with a property name.
|
|
</p>
|
|
<p>
|
|
You can also parse complete <a href="#VALARM">ALARM</a>s, all properties included, in array format and
|
|
first array row as "BEGIN:VALARM", last as "END:VALARM"
|
|
as well as <a href="#VTIMEZONE">TIMEZONE</a> and standard/daylight subcomponents.
|
|
Empty lines in a text property must be replaced by "\n".
|
|
</p>
|
|
<p>
|
|
Minor errors like non-standard line-endings, initial and trailing empty lines
|
|
as well as files without proper end line(-s) (i.e. missing component end iCal directives)
|
|
are managed.
|
|
</p>
|
|
<p>
|
|
Throws InvalidArgumentException, UnexpectedValueException on parse error.
|
|
</p>
|
|
<p>
|
|
Except for the <a href="#X-PROPERTY">X-properties</a>, non-standard properties are ignored.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::parse( propertyText )</p>
|
|
<p class="comment">propertyText = (string) [RFC5545] formatted property,
|
|
(array) [RFC5545] formatted properties,
|
|
property name <b>must</b> start string / rows(-s)
|
|
// <span class="comment">For a property array MUST all, but first row, be prefixed by space.</span></p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$e = $vcalendar->newVevent();
|
|
$e->parse( "DTSTAMP:19970324T1200Z" );
|
|
$e->parse( "SEQUENCE:0" );
|
|
$e->parse( "ORGANIZER:MAILTO:jdoe@host1.com" );
|
|
$e->parse( [
|
|
"ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host1.com",
|
|
"ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host2.com",
|
|
"ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host3.com",
|
|
"ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host4.com"
|
|
]);
|
|
$e->parse( "DTSTART:19970324T123000Z" );
|
|
$e->parse( "DTEND:19970324T210000Z" );
|
|
$e->parse( "CATEGORIES:MEETING,PROJECT" );
|
|
$e->parse( "CLASS:PUBLIC" );
|
|
$e->parse( "SUMMARY:Calendaring Interoperability Planning Meeting" );
|
|
$e->parse( "STATUS:DRAFT" );
|
|
$e->parse(
|
|
"DESCRIPTION:Project xyz Review Meeting Minutes\\n " .
|
|
"Agenda\\n " .
|
|
"1. Review of project version 1.0 requirements.\\n " .
|
|
"2. Definition of project processes.\\n " .
|
|
"3. Review of project schedule.\\n " .
|
|
"Participants: John Smith, Jane Doe, Jim Dandy\\n " .
|
|
"- It was decided that the requirements need to be signed off by \\n " .
|
|
"product marketing.\\n " .
|
|
"- Project processes were accepted.\\n " .
|
|
"- Project schedule needs to account for scheduled holidays and employee\\n " .
|
|
" vacation time. Check with HR for specific dates.\\n " .
|
|
"- New schedule will be distributed by Friday.\\n " .
|
|
"- Next weeks meeting is cancelled. No meeting until 3/23."
|
|
);
|
|
$e->parse( "LOCATION:LDB Lobby" );
|
|
$e->parse( "ATTACH;FMTTYPE=application/postscript:ftp://xyz.com/pub/conf/bkgrnd.ps" );
|
|
$e->parse(
|
|
[
|
|
"BEGIN:VALARM",
|
|
"ACTION:AUDIO",
|
|
"TRIGGER;VALUE=DATE-TIME:19970224T070000Z",
|
|
"ATTACH;FMTTYPE=audio/basic:https://host.com/pub/audio-files/ssbanner.aud",
|
|
"REPEAT:4",
|
|
"DURATION:PT1H",
|
|
"X-alarm:non-standard ALARM property",
|
|
"END:VALARM"
|
|
]
|
|
);
|
|
$e->parse( "X-xomment:non-standard property will be displayed, comma escaped");
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="ACKNOWLEDGED"></a><h3>3.2.4 ACKNOWLEDGED</h3>
|
|
<p class="quotes">
|
|
ACKNOWLEDGED specifies the UTC date and time at which the corresponding alarm was last sent or acknowledged
|
|
</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>
|
|
"VALARM Extensions for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
ACKNOWLEDGED is OPTIONAL but MUST NOT occur more than once in <a href="#VALARM">VALARM</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is (UTC) DATE-TIME.</p>
|
|
<p>
|
|
To ease up usage, constan Kigkonsult\Icalcreator\Vcalendar::ACKNOWLEDGED is available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#CREATED">CREATED</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="ACTION"></a><h3>3.2.5 ACTION</h3>
|
|
<p class="quotes">
|
|
This property defines the action to be invoked when an <a href="#VALARM">VALARM</a> is triggered,
|
|
<br> "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE".
|
|
This property is REQUIRED and MUST NOT occur more than once. ("PROCEDURE" is deprecated in [RFC5545].)
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ACTION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::AUDIO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DISPLAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EMAIL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PROCEDURE // Deprecated in rfc5545<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create ACTION</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createAction()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createAction();
|
|
|
|
</p>
|
|
<h5>Delete ACTION</h5>
|
|
<p>Remove ACTION from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteAction()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->deleteAction();
|
|
|
|
</p>
|
|
<h5>Get ACTION</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getAction()</p>
|
|
<p class="comment">output = actionValue<sup>1</sup>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getAction( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => actionValue<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup> )
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$action = $valarm->getAction();
|
|
|
|
<h5>is ACTION set</h5>
|
|
<p>Return bool true if ACTION is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isActionSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $valarm->isActionSet();
|
|
|
|
</p>
|
|
<h5>Set ACTION</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setAction( actionValue [, xparams ] )</p>
|
|
<p class="comment">actionValue<sup>1</sup> = (string) one of
|
|
Vcalendar::AUDIO / Vcalendar::DISPLAY / Vcalendar::EMAIL / Vcalendar::PROCEDURE
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->setAction( "DISPLAY" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="ATTACH"></a><h3>3.2.6 ATTACH</h3>
|
|
<p class="quotes">
|
|
The property provides the capability to associate a document object with a <strong>calendar</strong> component.
|
|
The property is<br>
|
|
- OPTIONAL and MUST NOT occur more than once in an "ALARM" ("audio")<br>
|
|
- REQUIRED and MUST NOT occur more than once in an <a href="#VALARM">VALARM</a> ("display"/"procedure"),<br>
|
|
- OPTIONAL and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a> and
|
|
<a href="#VALARM">VALARM</a> ("email").
|
|
</p>
|
|
<p>Logic, described above, is NOT implemented in the method setAttach(), below, multiple ATTACH are allowed in all.</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
ATTACH may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The default value type for ATTACH is URI. The value type can also be set to BINARY to indicate inline binary encoded content (params<sup>2</sup>).
|
|
</p>
|
|
<p>
|
|
If using other parameters than the recommended "FMTTYPE" and the mandatory "ENCODING" (="BASE64")and "VALUE" (="BINARY")
|
|
for an inline binary encoded attachment,
|
|
please use only characters within the ASCII character set in parameter name and content,
|
|
to ensure proper line folding when using <a href="#createCalendar">createCalendar</a> and/or <a href="#returnCalendar">returnCalendar</a>.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ATTACH<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ENCODING<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FMTTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EIGHTBIT // e.i 8BIT <br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BASE64<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create ATTACH</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createAttach()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createAttach();
|
|
|
|
</p>
|
|
<h5>Delete ATTACH</h5>
|
|
<p>Remove ATTACH from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteAttach()</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$valarm->deleteAttach();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
Delete ATTACH property no 2.
|
|
<p class="example">
|
|
$valarm->deleteAttach( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
Deleting all ATTACH properties.
|
|
<p class="example">
|
|
while( $valarm->deleteAttach()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
|
|
<h5>Get ALL ATTACH</h5>
|
|
<p>Returns array : all ATTACH, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllAttach( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get ATTACH</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getAttach()</p>
|
|
<p class="comment">output = attachValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getAttach( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value,
|
|
<p class="comment">output = [
|
|
"value" => attachValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getAttach( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo ATTACH</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$attach = $valarm->getAttach();
|
|
|
|
<h5>is ATTACH set</h5>
|
|
<p>Return bool true if ATTACH is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isAttachSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isAttachSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set ATTACH</h5>
|
|
<p>
|
|
Set property value. Parameters will be ordered as prescribed in [RFC5545].
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setAttach( attachValue<sup>1</sup> [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">attachValue<sup>1</sup> = (string) URI / inline binary encoded content
|
|
params<sup>2</sup> = (array ) ( [ "ENCODING" => "BASE64", "VALUE" => "BINARY" ]
|
|
[, "FMTTYPE" => contentType ]
|
|
*[, xparams ] )
|
|
contentType = (string) The parameter value MUST be the TEXT for either an IANA
|
|
registered content type or a non-standard content type.
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setAttach(
|
|
"ftp://domain.com/pub/docs/agenda.doc",
|
|
[ Vcalendar::FMTTYPE => "application/binary" ]
|
|
);
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="ATTENDEE"></a><h3>3.2.7 ATTENDEE</h3>
|
|
<p class="quotes">
|
|
The property defines an "Attendee" within a <strong>calendar</strong> component and is OPTIONAL
|
|
and MAY occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>, <a href="#VFREEBUSY">VFREEBUSY</a> components and
|
|
<a href="#VALARM">VALARM</a> ("ACTION" "email").
|
|
</p>
|
|
<dl>
|
|
<dt>
|
|
Note, as described in
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>(may NOT be supported by all calendaring software)</dd>
|
|
<dd>for <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
<p class="quotes">
|
|
"For backwards compatibility with existing clients and servers when
|
|
used to schedule events and tasks, the ATTENDEE property MUST be
|
|
used to specify the scheduling parameters as defined for that property."
|
|
</p>
|
|
</dd>
|
|
<dd>
|
|
the <a href="#VCALENDAR">VCALENDAR</a>/component method <i>participants2Attendees()</i><br>
|
|
may be used to create new ATTENDEEs from
|
|
<a href="#PARTICIPANT">PARTICIPANT</a> (sub-)components
|
|
and the <a href="#CALENDAR-ADDRESS">CALENDAR-ADDRESS</a> property value
|
|
with X-parameters : ATTENDEE default values, see setAttendee() below, and PARTICIPANT
|
|
<a href="#UID">UID</a> and <a href="#PARTICIPANT-TYPE">PARTICIPANT-TYPE</a>.<br>
|
|
Another option is to set ATTENDEE and <a href="#PARTICIPANT">PARTICIPANT</a> in pairs.
|
|
</dd>
|
|
</dl>
|
|
<p>This value type for ATTENDEE is URI, a <strong>calendar</strong> user address.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) ATTENDEE values.</p>
|
|
<p>You can export <strong>calendar</strong> ATTENDEE values as <a href="#iCal2vCards">vCards</a>.
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ATTENDEE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CUTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::MEMBER<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ROLE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PARTSTAT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RSVP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DELEGATED_TO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DELEGATED_FROM<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SENT_BY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CN<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DIR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::GROUP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::INDIVIDUAL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RESOURCE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ROOM<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::UNKNOWN<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::COMPLETED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::NEEDS_ACTION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ACCEPTED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DECLINED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TENTATIVE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DELEGATED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::IN_PROCESS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CHAIR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REQ_PARTICIPANT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::OPT_PARTICIPANT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::NON_PARTICIPANT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FALSE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TRUE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create ATTENDEE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createAttendee()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createAttendee();
|
|
|
|
</p>
|
|
<h5>Delete ATTENDEE</h5>
|
|
<p>Remove ATTENDEE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteAttendee()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) ATTENDEE property</p>
|
|
<p class="example">
|
|
$valarm->deleteAttendee();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete ATTENDEE property no 2.</p>
|
|
<p class="example">
|
|
$valarm->deleteAttendee();
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
Deleting all ATTENDEE properties.
|
|
<p class="example">
|
|
while( $valarm->deleteAttendee()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
<h5>Get ALL ATTENDEE</h5>
|
|
<p>Returns array : all ATTENDEE, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllAttendee( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get ATTENDEE</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getAttendee()</p>
|
|
<p class="comment">output = attendeeValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getAttendee( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => attendeeValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getAttendee( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = attendeeValue<sup>1</sup></p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$attendee = $valarm->getAttendee();
|
|
|
|
<h5>is ATTENDEE set</h5>
|
|
<p>Return bool true if ATTENDEE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isAttendeeSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isAttendeeSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set ATTENDEE</h5>
|
|
<p>
|
|
Set property value. If exist, default parameter values are removed after input (params<sup>2</sup>).
|
|
Property value must be prefixed by protocol (ftp://, https://, mailto:, file:// etc, ref.
|
|
<a href="https://tools.ietf.org/html/rfc1738" title="Download rfc1738" target="_blank">rfc1738</a>),
|
|
if missing, "mailto:" is set (indicating an internet mail address).
|
|
Also MEMBER and DIR parameters must be prefixed by protocol. DELEGATED-TO, DELEGATED-FROM, SENT-BY parameters
|
|
must use protocol "mailto:", prefixed if missing (indicating an internet mail address).
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>
|
|
The CN, ROLE, PARTSTAT, RSVP, CUTYPE, MEMBER, DELEGATED-TO,DELEGATED-FROM, ORDER, SENT-BY and DIR
|
|
properties are not accepted (i.e. removed) in a "VFREEBUSY" or "VALARM" "ATTENDEE" property content.
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setAttendee( attendeeValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">attendeeValue<sup>1</sup> = (string) a <strong>calendar</strong> user address, a URI as defined by
|
|
[RFC 1738] or any other IANA registered form
|
|
for a URI.
|
|
params<sup>2</sup> = (array) ( [CUTYPE] [,MEMBER] [,ROLE] [,PARTSTAT]
|
|
[,RVSP] [,DELEGATED-TO] [,DELEGATED-FROM]
|
|
[,SENT-BY] [,CN] [,DIR] [,LANGUAGE]
|
|
*[,xparams] )
|
|
CUTYPE = "CUTYPE" => "INDIVIDUAL"
|
|
(An individual, <b>Default</b>)
|
|
/ "GROUP"
|
|
(A group of individuals)
|
|
/ "RESOURCE"
|
|
(A physical resource)
|
|
/ "ROOM"
|
|
(A room resource)
|
|
/ "UNKNOWN"
|
|
(Otherwise not known)
|
|
/ (string) x-name
|
|
(Experimental type)
|
|
/ iana-token
|
|
(string) (Other IANA registered type)
|
|
MEMBER = "MEMBER" => array( *[ (string) "single member
|
|
of the group or list membership"])
|
|
ROLE = "ROLE" => "CHAIR"
|
|
(Indicates chair of the <strong>calendar</strong>
|
|
entity)
|
|
/ "REQ-PARTICIPANT"
|
|
(required participation, <b>Default</b>)
|
|
/ "OPT-PARTICIPANT"
|
|
(optional participation)
|
|
/ "NON-PARTICIPANT"
|
|
(information purposes only)
|
|
/ (string) x-name
|
|
(Experimental role)
|
|
/ (string) iana-token
|
|
(Other IANA role)
|
|
PARTSTAT = Vcalendar::PARTSTAT => "NEEDS-ACTION"
|
|
(Event needs action, <b>Default</b>)
|
|
/ "ACCEPTED"
|
|
(Event accepted)
|
|
/ "DECLINED"
|
|
(Event declined)
|
|
/ "TENTATIVE"
|
|
(Event tentatively accepted)
|
|
/ "DELEGATED"
|
|
(Event delegated)
|
|
/ "NEEDS-ACTION"
|
|
(To-do needs action, <b>Default</b>)
|
|
/ "ACCEPTED"
|
|
(To-do accepted)
|
|
/ "DECLINED"
|
|
(To-do declined)
|
|
/ "TENTATIVE"
|
|
(To-do tentatively accepted)
|
|
/ "DELEGATED"
|
|
(To-do delegated)
|
|
/ "COMPLETED"
|
|
(To-do completed.
|
|
<a href="#COMPLETED">COMPLETED</a> property
|
|
has date/time completed)
|
|
/ "IN-PROCESS"
|
|
(To-do in process of being completed)
|
|
/ "NEEDS-ACTION"
|
|
(Journal needs action, <b>Default</b>)
|
|
/ "ACCEPTED"
|
|
(Journal accepted)
|
|
/ "DECLINED"
|
|
(Journal declined)
|
|
/ (string) x-name
|
|
(Experimental status)
|
|
/ (string) iana-token
|
|
(Other IANA registered status)
|
|
RSVP = Vcalendar::RSVP => (string) "true"
|
|
/ "false", <b>Default</b> (reply expectation)
|
|
DELEGATED-TO = "DELEGATED-TO" => array(*[(string) "single <strong>calendar</strong> user
|
|
to specified by the property
|
|
has delegated participation"])
|
|
DELEGATED-FROM = "DELEGATED-FROM" => array( *[ (string) "single <strong>calendar</strong> user that
|
|
have delegated their
|
|
participation to the
|
|
<strong>calendar</strong> user specified
|
|
by the property" ] )
|
|
SENT-BY = Vcalendar::SENT_BY => (string) single <strong>calendar</strong> user that is
|
|
acting on behalf
|
|
of the <strong>calendar</strong> user
|
|
specified by the property"
|
|
LANGUAGE = Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>" (applies to the CN parameter value)
|
|
CN = Vcalendar::CN => (string) "common name to be associated with the <strong>calendar</strong>
|
|
user specified by the property"
|
|
DIR = Vcalendar::DIR => (string) "reference to a directory entry associated with
|
|
the <strong>calendar</strong> user specified by the property"
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p>
|
|
See rules in detail in <a href="https://tools.ietf.org/html/rfc5545" title="rfc5545" target="_blank">rfc5545</a>
|
|
"Internet Calendaring and Scheduling Core Object Specification (iCalendar)".
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setAttendee( "attendee1@ical.net" );
|
|
$vevent->setAttendee(
|
|
"attendee2@ical.net",
|
|
[
|
|
Vcalendar::CUTYPE => "INDIVIDUAL",
|
|
Vcalendar::MEMBER => [
|
|
"member1@ical.net",
|
|
"member2@ical.net",
|
|
"member3@ical.net"
|
|
],
|
|
Vcalendar::ROLE => "CHAIR",
|
|
Vcalendar::PARTSTAT => "ACCEPTED",
|
|
Vcalendar::RSVP => "true",
|
|
Vcalendar::DELEGATED_TO => [
|
|
"part1@ical.net",
|
|
"part2@ical.net",
|
|
"part3@ical.net"
|
|
],
|
|
Vcalendar::DELEGATED_FROM => [
|
|
"cio@ical.net",
|
|
"vice.cio@ical.net"
|
|
],
|
|
Vcalendar::SENT_BY => "secretary@ical.net",
|
|
Vcalendar::LANGUAGE => "us-EN",
|
|
Vcalendar::CN => "John Doe",
|
|
Vcalendar::DIR => "https://www.ical.net/info.doc",
|
|
"x-agenda" => "status reports", <span class="comment">// xparam</span>
|
|
"x-time" => "15 min" <span class="comment">// xparam</span>
|
|
]
|
|
);
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="BUSYTYPE"></a><h3>3.2.8 BUSYTYPE</h3>
|
|
<p class="quotes">BUSYTYPE specifies the default busy time type</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
BUSYTYPE specifies the default busy time type
|
|
and may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p class="quotes">
|
|
The values correspond to those used by the "FBTYPE"
|
|
parameter used on a "FREEBUSY" property, with the exception that
|
|
the "FREE" value is not used in this property. If not specified
|
|
on a component that allows this property, the default is "BUSY-
|
|
UNAVAILABLE".
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSYTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY-UNAVAILABLE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY-TENTATIVE<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#CLASS">CLASS</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CALENDAR-ADDRESS"></a><h3>3.2.9 CALENDAR-ADDRESS</h3>
|
|
<p class="quotes">
|
|
This property specifies the calendar address for a <a href="#PARTICIPANT">PARTICIANT</a>.
|
|
</p>
|
|
<p>This value type for CALENDAR-ADDRESS is CAL-ADDRESS (uri).</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::CALENDAR-ADDRESS is available.
|
|
</p>
|
|
|
|
<p class="quotes">
|
|
"For backwards compatibility with existing clients and servers when
|
|
used to schedule events and tasks, the <a href="#ATTENDEE">ATTENDEE</a> property MUST be
|
|
used to specify the scheduling parameters as defined for that property.",
|
|
</p>
|
|
<p>
|
|
see <a href="#ATTENDEE">ATTENDEE</a> rfc9073 note.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#ORGANIZER">ORGANIZER</a> property but with no prescribed parameters</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CATEGORIES"></a><h3>3.2.10 CATEGORIES</h3>
|
|
<p class="quotes">
|
|
This property defines the categories for a <strong>calendar</strong> component and is OPTIONAL
|
|
and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a> and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CATEGORIES may occur more than once in <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
CATEGORIES may occur more than once in <a href="#VCALENDAR">VCALENDAR</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CATEGORIES may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The value type for CATEGORIES is TEXT.
|
|
</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) CATEGORIES values.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::CATEGORIES is available.
|
|
</p>
|
|
|
|
<h5>Create CATEGORIES</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createCategories()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createCategories();
|
|
|
|
</p>
|
|
<h5>Delete CATEGORIES</h5>
|
|
<p>Remove CATEGORIES from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteCategories( [ propOrderNo ] )</p>
|
|
<p class="comment">propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span></p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) CATEGORIES property</p>
|
|
<p class="example">
|
|
$vevent->deleteCategories();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete CATEGORIES property no 2.</p>
|
|
<p class="example">
|
|
$vevent->deleteCategories( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all CATEGORIES properties.</p>
|
|
<p class="example">
|
|
while( $vevent->deleteCategories()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
|
|
<h5>Get ALL CATEGORIES</h5>
|
|
<p>Returns array : all CATEGORIES, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllCategories( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get CATEGORIES</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getCategories()</p>
|
|
<p class="comment">output = categoryValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getCategories( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => categories<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getCategories( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo CATEGORIES</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$categories = $valarm->getCategories();
|
|
|
|
</p>
|
|
|
|
<h5>is CATEGORIES set</h5>
|
|
<p>Return bool true if CATEGORIES is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isCategoriesSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isCategoriesSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set CATEGORIES</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
In spite of the fact that CATEGORIES may contain a (comma separated) list of values,
|
|
a strong recommendation is to split a CATEGORIES "list" into multiple single CATEGORIES entries.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setCategories( categories [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">categories<sup>1</sup> = (string) textual categories or subtypes of the <strong>calendar</strong> component,
|
|
can be specified as a list of categories
|
|
separated by the COMMA character
|
|
params<sup>2</sup> = (array) ( [Vcalendar::LANGUAGE => (string) "<lang<sup>*</sup>>"] *[, xparams] )
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setCategories( "project_x" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CLASS"></a><h3>3.2.11 CLASS</h3>
|
|
<p class="quotes">
|
|
This property defines the access classification for a <strong>calendar</strong> component and is OPTIONAL
|
|
and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a> and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CLASS may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::KLASS // note CLASS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::P_BLIC // note PUBLIC<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::P_IVATE // note PRIVATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONFIDENTIAL<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create CLASS</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createClass()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createClass();
|
|
|
|
</p>
|
|
<h5>Delete CLASS</h5>
|
|
<p>Remove CLASS from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteClass()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
|
|
$vjournal->deleteClass();
|
|
|
|
</p>
|
|
|
|
<h5>Get CLASS</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getClass()</p>
|
|
<p class="comment">output = classValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p class="format">calendarComponent::getClass( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => classValue<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$class = $valarm->getClass();
|
|
|
|
</p>
|
|
|
|
<h5>is CLASS set</h5>
|
|
<p>Return bool true if CLASS is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isClassSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isClassSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set CLASS</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setClass( classvalue [, xparams ] )</p>
|
|
<p class="comment">classvalue<sup>1</sup> = "PUBLIC"
|
|
/ "PRIVATE"
|
|
/ "CONFIDENTIAL"
|
|
/ (string) iana-token
|
|
/ (string) x-name
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setClass( Vcalendar::CONFIDENTIAL );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="COLOR"></a><h3>3.2.12 COLOR</h3>
|
|
<p class="quotes">
|
|
This property specifies a color used for displaying the
|
|
<a href="#VCALENDAR">VCALENDAR</a>
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a> data.
|
|
The value is a case-insensitive color name taken from the CSS3 set of
|
|
names, defined in Section 4.3 of
|
|
<a href="https://www.w3.org/TR/2011/REC-css3-color-20110607" title="Download" target="_blank">[W3C.REC-css3-color-20110607]</a>.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
COLOR may occur once and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants Kigkonsult\Icalcreator\Vcalendar::COLOR is available.
|
|
</p>
|
|
<h5>Create COLOR</h5>
|
|
<p>If set, returns [RFC7986] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createColor()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createColor();
|
|
|
|
</p>
|
|
<h5>Delete COLOR</h5>
|
|
<p>Remove COLOR from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteColor()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteColor();
|
|
|
|
</p>
|
|
|
|
<h5>Get COLOR</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getColor( )</p>
|
|
<p class="comment">output = color<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getColor( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => color<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$transp = $vtodo->getColor();
|
|
|
|
</p>
|
|
|
|
<h5>is COLOR set</h5>
|
|
<p>Return bool true if COLOR is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isColorSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isColorSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set COLOR</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setColor( color [, xparams ] )</p>
|
|
<p class="comment">transp<sup>1</sup> = <color>
|
|
xparams<sup>2</sup> = (array) *( (string) key => (string) value ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setColor( "Blue" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="COMMENT"></a><h3>3.2.13 COMMENT</h3>
|
|
<p class="quotes">
|
|
This property specifies non-processing information intended to provide a comment to the <strong>calendar</strong> user
|
|
and is OPTIONAL and MAY occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>, <a href="#VFREEBUSY">VFREEBUSY</a>,
|
|
<a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
COMMENT may occur more than once in <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
COMMENT may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for COMMENT is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::COMMENT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create COMMENT</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createComment()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createComment();
|
|
|
|
</p>
|
|
<h5>Delete COMMENT</h5>
|
|
<p>Remove COMMENT from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteComment()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) COMMENT property</p>
|
|
<p class="example">
|
|
$vevent->deleteComment();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete COMMENT property no 2.</p>
|
|
<p class="example">
|
|
$vevent->deleteComment( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all COMMENT properties.</p>
|
|
<p class="example">
|
|
while( $vevent->deleteComment()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
|
|
<h5>Get ALL COMMENT</h5>
|
|
<p>Returns array : all COMMENT, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllComment( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get COMMENT</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getComment()</p>
|
|
<p class="comment">output = commentValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getComment( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => commentValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getComment( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo COMMENT</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$comment = $vevent->getComment();
|
|
|
|
</p>
|
|
|
|
<h5>is COMMENT set</h5>
|
|
<p>Return bool true if COMMENT is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isCommentSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isCommentSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set COMMENT</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setComment( commentValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">commentValue<sup>1</sup> = (string) Value type Text
|
|
params<sup>2</sup> = array(
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>"],
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"]
|
|
*(xparams )
|
|
)
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setComment( "this is a comment" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="COMPLETED"></a><h3>3.2.14 COMPLETED</h3>
|
|
<p class="quotes">
|
|
This property defines the date and time that a <a href="#VTODO">VTODO</a> was actually completed and is OPTIONAL and MUST NOT occur more than once.
|
|
</p>
|
|
<p>The value type for COMPLETED is <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::COMPLETED is available.
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#CREATED">CREATED</a> property.</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CONFERENCE"></a><h3>3.2.15 CONFERENCE</h3>
|
|
<p class="quotes">
|
|
CONFERENCE specifies information for accessing a conferencing system for attendees of a meeting or task.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
CONFERENCE may be specified multiple times in a
|
|
<a href="#VEVENT">VEVENT</a> and <a href="#VTODO">VTODO</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is URI.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONFERENCE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::URI<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FEATURE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LABEL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::URI<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LABEL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create CONFERENCE</h5>
|
|
<p>If set, returns [RFC7986] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createConference()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createConference();
|
|
|
|
</p>
|
|
<h5>Delete CONFERENCE</h5>
|
|
<p>Remove CONFERENCE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteConference()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteConference();
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL CONFERENCE</h5>
|
|
<p>Returns array : all CONFERENCE, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllConference( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get CONFERENCE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getConference()</p>
|
|
<p class="comment">output = url<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getConference( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => conference<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$conference = $vevent->getConference();
|
|
|
|
</p>
|
|
|
|
<h5>is CONFERENCE set</h5>
|
|
<p>Return bool true if CONFERENCE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isConferenceSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isConferenceSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set CONFERENCE</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
InvalidArgumentException on url error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setConference( conference [, params ] )</p>
|
|
<p class="comment">conference<sup>1</sup> = (string) Value type URI
|
|
params<sup>2</sup> = [
|
|
Vcalendar::VALUE => Vcalendar::URI,
|
|
Vcalendar::FEATURE => featureValue,
|
|
Vcalendar::LABEL => human-readable data,
|
|
Vcalendar::LANGUAGE => (string) "lang" // opt. if LABEL is set
|
|
xparams
|
|
]
|
|
featureValue = one or more (comma separated)
|
|
Vcalendar::AUDIO // Audio capability
|
|
Vcalendar::CHAT // Chat or instant messaging
|
|
Vcalendar::FEED // Blog or Atom feed
|
|
Vcalendar::MODERATOR // Moderator dial-in code
|
|
Vcalendar::PHONE // Phone conference
|
|
Vcalendar::SCREEN // Screen sharing
|
|
Vcalendar::VIDEO // Video capability
|
|
x-name // Experimental type
|
|
iana-token // Other IANA-registered type
|
|
lang = as defined in [RFC5546]
|
|
xparams = *[ (string) key => (string) value ] // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CONTACT"></a><h3>3.2.16 CONTACT</h3>
|
|
<p class="quotes">
|
|
The property is used to represent textual contact information or alternately a reference to textual contact information
|
|
associated with the <strong>calendar</strong> component. The property is OPTIONAL and MUST NOT occur more than once in
|
|
a <a href="#VFREEBUSY">VFREEBUSY</a> or MAY occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a> and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CONTACT may occur more than once in <a href="#VAVAILABILITY">VAVAILABILITY</a>
|
|
and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CONTACT may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for CONTACT is TEXT.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) CONTACT values.</p>
|
|
<p>You can export <strong>calendar</strong> CONTACT values as <a href="#iCal2vCards">vCards</a>.
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create CONTACT</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createContact()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createContact();
|
|
|
|
</p>
|
|
<h5>Delete CONTACT</h5>
|
|
<p>Remove CONTACT from component.</p>
|
|
<p>For CONTACT in <a href="#VFREEBUSY">VFREEBUSY</a> (may only occur once), skip the "propOrderNo" argument.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteContact( [ propOrderNo ] )</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) CONTACT property<p>
|
|
<p class="example">
|
|
$vevent->deleteContact();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete CONTACT property no 2.</p>
|
|
<p class="example">
|
|
$vevent->deleteContact( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all CONTACT properties.</p>
|
|
<p class="example">
|
|
while( $vevent->deleteContact()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
|
|
<h5>Get ALL CONTACT</h5>
|
|
<p>Returns array : all CONTACT, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllContact( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get CONTACT</h5>
|
|
<p>For CONTACT in <a href="#VFREEBUSY">VFREEBUSY</a> (may only occur once), skip the "propOrderNo" argument.</p>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getContact()</p>
|
|
<p class="comment">output = contactValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getContact( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => contactValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getContact( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo CONTACT</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$contact = $vevent->getContact();
|
|
|
|
</p>
|
|
|
|
<h5>is CONTACT set</h5>
|
|
<p>Return bool true if CONTACT is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isContactSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isContactSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set CONTACT</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p>For CONTACT in <a href="#VFREEBUSY">VFREEBUSY</a> (may only occur once), skip the "propOrderNo" argument.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setContact( contactValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">contactValue<sup>1</sup> = (string) Value type TEXT
|
|
params<sup>2</sup> = [
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>"],
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"],
|
|
*(xparams )
|
|
]
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$c->setContact( "tel 012-34 56 789" )
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="CREATED"></a><h3>3.2.17 CREATED</h3>
|
|
<p class="quotes">
|
|
This property specifies the date and time that the <strong>calendar</strong> information was created by
|
|
the <strong>calendar</strong> user agent in the <strong>calendar</strong> store.
|
|
Note: This is analogous to the creation date and time for a file in the file system.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a> and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
CREATED may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar",
|
|
</dt>
|
|
<dd>
|
|
CREATED may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The value type for CREATED is <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::CREATED is available.
|
|
</p>
|
|
<h5>Create CREATED</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createCreated()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createCreated();
|
|
|
|
</p>
|
|
<h5>Delete CREATED</h5>
|
|
<p>Remove CREATED from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteCreated()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteCreated();
|
|
|
|
</p>
|
|
<h5>Get CREATED</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getCreated()</p>
|
|
<p class="comment">output = createdDate<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getCreated( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => createdDate<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$created = $vevent->getCreated();
|
|
|
|
</p>
|
|
|
|
<h5>is CREATED set</h5>
|
|
<p>Return bool true if CREATED is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isCreatedSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isCreatedSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set CREATED</h5>
|
|
<p>
|
|
Set property value. Input date is always a <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME or,
|
|
if "offset" parameter is used, timezone is set to first found matching timezone.
|
|
</p>
|
|
<p>
|
|
The current UTC date-time is set if invoked without or an empty value
|
|
and may be used to set or update a previously set property value to current UTC date-time.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws Exception on DateTime error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setCreated( [ createdDate [, xparams ]] )</p>
|
|
<p class="comment">
|
|
createdDate = (object) DateTimeInterface instance, will be set to UTC if not UTC timezone
|
|
createdDate = (string) date/datetime string<sup>*</sup>
|
|
xparams<sup>2</sup> = array( *[ (string) key => (string) value ] )
|
|
<br>date/datetime string<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ calendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtodo = $vcalendar->newVtodo();
|
|
try {
|
|
$vtodo->setCreated( new DateTime( "2006-08-11 14:30:35 UTC" ));
|
|
// <span class="comment">11 august 2006 14.30.35 UTC</span>
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DESCRIPTION"></a><h3>3.2.18 DESCRIPTION</h3>
|
|
<p class="quotes">
|
|
This property provides a more complete textual description of the <strong>calendar</strong> component,
|
|
than that provided by the <a href="#SUMMARY">SUMMARY</a> property (, analogous to a mail BODY).
|
|
The property is OPTIONAL, MUST NOT occur more than once within
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a> or
|
|
<a href="#VALARM">VALARM</a> (PROCEDURE)
|
|
but can be specified multiple times within the <a href="#VJOURNAL">VJOURNAL</a> <strong>calendar</strong> component.
|
|
The property is REQUIRED in <a href="#VALARM">VALARM</a> (DISPLAY, EMAIL) component.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
DESCRIPTION may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
DESCRIPTION may occur more than once in <a href="#VCALENDAR">VCALENDAR</a>
|
|
(with different "LANGUAGE" parameter values on each)
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
DESCRIPTION may occur once in
|
|
<a href="#PARTICIPANT">PARTICIPANT</a>,
|
|
<a href="#VRESOURCE">VRESOURCE</a> and
|
|
<a href="#VLOCATION">VLOCATION</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for DESCRIPTION is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DESCRIPTION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create DESCRIPTION</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createDescription()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createDescription();
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL DESCRIPTION</h5>
|
|
<p>Returns array : all DESCRIPTION, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllDescription( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Delete DESCRIPTION</h5>
|
|
<p>Remove DESCRIPTION from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteDescription()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) DESCRIPTION property.</p>
|
|
<p class="example">
|
|
$vevent->deleteDescription();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete DESCRIPTION property no 2, <a href="#VCALENDAR">VCALENDAR</a>/<a href="#VJOURNAL">VJOURNAL</a> only.</p>
|
|
<p class="example">
|
|
$vjournal->deleteDescription( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all DESCRIPTION properties. <a href="#VCALENDAR">VCALENDAR</a>/<a href="#VJOURNAL">VJOURNAL</a> only.</p>
|
|
<p class="example">
|
|
while( $vjournal->deleteDescription()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
<h5>Get DESCRIPTION</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p>get (single) DESCRIPTION property, for <a href="#VCALENDAR">VCALENDAR</a>/<a href="#VJOURNAL">VJOURNAL</a>, first/next</p>
|
|
<p class="format">calendarComponent::getDescription()</p>
|
|
<p class="comment">output = descriptionValue<sup>1</sup></p>
|
|
|
|
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getDescription( propOrderNo/null ,true )</p>
|
|
<p class="comment">
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc, <a href="#VCALENDAR">VCALENDAR</a>/<a href="#VJOURNAL">VJOURNAL</a> only</span>
|
|
</p>
|
|
<p class="comment">output = [
|
|
"value" => descriptionValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$description = $vevent->getDescription();
|
|
|
|
</p>
|
|
|
|
<h5>is DESCRIPTION set</h5>
|
|
<p>Return bool true if DESCRIPTION is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isDescriptionSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isDescriptionSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set DESCRIPTION</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setDescription( descriptionValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">descriptionValue<sup>1</sup> = (string) Value type TEXT
|
|
params<sup>2</sup> = array(
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>"],
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"]
|
|
*(xparams )
|
|
)
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc, <a href="#VCALENDAR">VCALENDAR</a>/<a href="#VJOURNAL">VJOURNAL</a> only</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setDescription( "This is a description" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DTEND"></a><h3>3.2.19 DTEND</h3>
|
|
<p class="quotes">
|
|
This property specifies the date and time that a <strong>calendar</strong> component ends.
|
|
The property is OPTIONAL and MUST NOT occur more than once in
|
|
<a href="#VFREEBUSY">VFREEBUSY</a> and <a href="#VEVENT">VEVENT</a>.
|
|
In <a href="#VEVENT">VEVENT</a>, it only occurs if <a href="#DURATION">DURATION</a> NOT occurs.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
DTEND may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
only if <a href="#DURATION">DURATION</a> NOT occurs.
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dd>
|
|
<p class="quotes">
|
|
If specified, DTEND MUST be "DATE-TIME" value specified as either the date with UTC time or
|
|
the date with local time and a time zone reference.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The default value type for DTEND is DATE-TIME, can be set to a DATE value type.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DTEND<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TZID<br>
|
|
are available.
|
|
</p>
|
|
<p class="quotes">
|
|
The value type of the "DTEND" or "DUE" properties MUST match the value type of "DTSTART" property as defined in [RFC5545])
|
|
</p>
|
|
<p>
|
|
Notice that an end date without a time is in effect midnight of the day before the date,
|
|
so for timeless dates, use the date following the event date for it to be correct.
|
|
For an "all-day event" and using timeless dates, the DTEND is equal DTSTART plus one day,
|
|
example all-day event (2007-12-01)<br>DTSTART;VALUE=DATE:20071201<br> DTEND;VALUE=DATE:20071202.
|
|
</p>
|
|
<h5>Create DTEND</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createDtend()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createDtend();
|
|
|
|
</p>
|
|
<h5>Delete DTEND</h5>
|
|
<p>Remove DTEND from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteDtend()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteDtend();
|
|
|
|
</p>
|
|
<h5>Get DTEND</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getDtend()</p>
|
|
<p class="comment">output = dtendDate<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getDtend( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => dtendDate<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$dtend = $vevent->getDtend();
|
|
|
|
</p>
|
|
|
|
<h5>is DTEND set</h5>
|
|
<p>Return bool true if DTEND is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isDtendSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isDtendSet();
|
|
|
|
</p>
|
|
|
|
<a id="tzidparam"><h5>Set DTEND</h5></a>
|
|
<p>
|
|
Set property value. If DATE value type is expected, "VALUE" = "DATE" <b>must</b> be set
|
|
(in params<sup>2</sup>) otherwise DATE-TIME (default) value type is set.
|
|
</p>
|
|
<p>
|
|
Within the "VFREEBUSY" <strong>calendar</strong> component,
|
|
the time MUST be specified in the <a href="#DATE_WITH_UTC_TIME">UTC</a> datetime zone.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
Exception on DateTime error.
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setDtend( dtendDate [, params<sup>2</sup> ] )
|
|
<p class="comment">
|
|
dtendDate = (object) DateTimeInterface instance
|
|
dtendDate = (string) date/datetime string<sup>*</sup>
|
|
params<sup>2</sup> = (array) ([ tzidparam/datetimeparam/dateparam ] *[,xparams])
|
|
tzidparam = Vcalendar::TZID => (string) <timezone identifier>
|
|
// <span class="comment">output as local date-time with timezone identifier</span>
|
|
// <span class="comment">if tzidparam is "UTC" then output date-time is suffixed by 'Z'</span>
|
|
datetimeparam = Vcalendar::VALUE => Vcalendar::DATE_TIME // <span class="comment">default, output as date-time</span>
|
|
dateparam = Vcalendar::VALUE => Vcalendar::DATE // <span class="comment">output as DATE, ex. all-day event</span>
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
try {
|
|
$vevent->setDtend( new DateTime( '2006-08-11 16:30:00' ));
|
|
<span class="comment">// 11 august 2006 16.30.00 local date</span>
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>End of an all-day event.<p>
|
|
<p class="example">use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
try {
|
|
$vevent->setDtend(
|
|
'20060811',
|
|
[ Vcalendar::VALUE => Vcalendar::DATE ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Will output: DTEND;TZID=Europe/Stockholm:20060811T093000</p>
|
|
<p class="example">
|
|
try {
|
|
$vevent->setDtend(
|
|
new DateTime( '2006-08-11 09:30:00', new DateTImeZone( 'Europe/Stockholm' ));
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DTSTAMP"></a><h3>3.2.20 DTSTAMP</h3>
|
|
<p class="quotes">
|
|
The property indicates the date/time the Vcalendar instance was created and is OPTIONAL and
|
|
MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a> and <a href="#VFREEBUSY">VFREEBUSY</a> components.
|
|
DTSTAMP is <b>AUTOMATICALLY GENERATED</b> in iCalcreator at instance creation.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
DTSTAMP MUST occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
DTSTAMP may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
DTSTAMP may be required when importing iCal formatted information
|
|
into some <strong>calendar</strong> software<br>(MS etc.),
|
|
as well as (<strong>calendar</strong>) <a href="#X-PROPERTY">x-properties</a> "X-WR-CALNAME",
|
|
"X-WR-CALDESC" and<br>"X-WR-TIMEZONE",
|
|
<a href="#METHOD">METHOD</a> property (value PUBLISH etc.)
|
|
and the (also auto created) <a href="#UID">UID</a> property.
|
|
</p>
|
|
<p>The value type for DTSTAMP is <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) DTSTAMP values.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::DTSTAMP is available.
|
|
</p>
|
|
<p>
|
|
For methods and formatting, explore the <a href="#CREATED">CREATED</a> property.
|
|
Note, NO deleteDtstamp() method, use setDtstamp() to recreate.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DTSTART"></a><h3>3.2.21 DTSTART</h3>
|
|
<p class="quotes">
|
|
This property specifies when the <strong>calendar</strong> component begins.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a> and <a href="#VFREEBUSY">VFREEBUSY</a> components.
|
|
The property is REQUIRED, but MUST NOT occur more than once in
|
|
<a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
DTSTART may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and
|
|
MUST occur once in <a href="#AVAILABLE">AVAILABLE</a>.<br>
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dd>
|
|
If specified in <a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>,
|
|
DTSTART MUST be "DATE-TIME" value specified as either the date with UTC time or
|
|
the date with local time and a time zone reference.
|
|
</dd>
|
|
</dl>
|
|
<p>The default value type for DTSTART is DATE-TIME, can be set to a DATE value type.</p>
|
|
<p>
|
|
For an "all-day event" and using timeless dates, example (2007-12-01)<br>
|
|
DTSTART;VALUE=DATE:20071201<br>
|
|
DTEND;VALUE=DATE:20071202. // <span class="comment">opt., in effect midnight of the day <u>before</u> the date!!</span>
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#DTEND">DTEND</a> property.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DTSTART<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TZID<br>
|
|
are available.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DUE"></a><h3>3.2.22 DUE</h3>
|
|
<p class="quotes">
|
|
This property defines the date and time when a <a href="#VTODO">VTODO</a> is expected to be completed
|
|
and is OPTIONAL and MUST NOT occur more than once and only if DURATION NOT occurs.
|
|
</p>
|
|
<p>
|
|
The default value type for DUE is DATE-TIME, can be set to a DATE value type.
|
|
</p>
|
|
<p class="quotes">
|
|
The value type of the "DTEND" or "DUE" properties MUST match the value type of "DTSTART" property as defined in [RFC5545])
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#DTEND">DTEND</a> property.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TZID<br>
|
|
are available.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="DURATION"></a><h3>3.2.23 DURATION</h3>
|
|
<p class="quotes">
|
|
The property specifies a positive duration of time.
|
|
</p>
|
|
<dl>
|
|
<dt>In a <a href="#VEVENT">VEVENT</a>
|
|
<dd>it is OPTIONAL and MUST NOT occur more than once and MUST NOT occur in pair with DTEND. If one occurs, so MUST NOT the other.<br>
|
|
<dt>In a <a href="#VTODO">VTODO</a>
|
|
<dd>it is OPTIONAL and MUST NOT occur more than once and MUST NOT occur in pair with DUE. If one occurs, so MUST NOT the other.<br>
|
|
<dt>In a <a href="#VFREEBUSY">VFREEBUSY</a>
|
|
<dd>it is OPTIONAL and MUST NOT occur more than once. ([RFC5545])<br>
|
|
<dd>it can not appear. ([RFC5545])<br>
|
|
<dt>In a <a href="#VALARM">VALARM</a>
|
|
<dd>it is OPTIONAL and MUST NOT occur more than once and MUST occur in pair with TRIGGER. If one occurs, so MUST the other.
|
|
</dl>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"Calendar Availability"
|
|
</dt>
|
|
<dd>
|
|
Either <a href="#DTEND">DTEND</a> or DURATION MAY appear in
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>,
|
|
but <a href="#DTEND">DTEND</a> and DURATION MUST NOT occur in the same
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>.<br>
|
|
<a href="#VAVAILABILITY">VAVAILABILITY</a> / <a href="#AVAILABLE">AVAILABLE</a>
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dd>
|
|
The <a href="#VAVAILABILITY">VAVAILABILITY</a> DURATION MUST NOT be present if
|
|
<a href="#DTSTART">DTSTART</a> is not present
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::DURATION is available.
|
|
</p>
|
|
<h5>Create DURATION</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createDuration()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createDuration();
|
|
|
|
</p>
|
|
<h5>Delete DURATION</h5>
|
|
<p>Remove DURATION from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteDuration()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->deleteDuration();
|
|
|
|
</p>
|
|
<h5>Get DURATION</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getDuration()</p>
|
|
<p class="comment">output = duration<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getDuration( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => duration<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$duration = $vtodo->getDuration();
|
|
|
|
</p>
|
|
<p class="label">option</p>
|
|
<p>
|
|
If (1st) argument is true and a 2nd is used and set to true, returned output is in a DATE-TIME
|
|
output format (like <a href="#DTEND">DTEND</a> / <a href="#DUE">DUE</a>), based on
|
|
<a href="#DTSTART">DTSTART</a> value with the added DURATION value (incl. opt. timezone).
|
|
</p>
|
|
|
|
<h5>is DURATION set</h5>
|
|
<p>Return bool true if DURATION is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isDurationSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isDurationSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set DURATION</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
Exception on DateInterval error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setDuration( duration [, xparams ] )</p>
|
|
<p class="comment">
|
|
duration = (object) DateInterval class instance
|
|
duration = (string) dur-value = ["+"] "P" (dur-date/dur-time/dur-week) like "P15DT5H0M20S"
|
|
dur-date = dur-day [dur-time]
|
|
dur-time = "T" (dur-hour / dur-minute / dur-second)
|
|
dur-week = 1*DIGIT "W"
|
|
dur-hour = 1*DIGIT "H" [dur-minute]
|
|
dur-minute = 1*DIGIT "M" [dur-second]
|
|
dur-second = 1*DIGIT "S"
|
|
dur-day = 1*DIGIT "D"
|
|
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p>One day duration.</p>
|
|
<p class="example">
|
|
try {
|
|
$vtodo->setDuration( new DateInterval( "P1D" ));
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Four hours duration.</p>
|
|
<p class="example">
|
|
try {
|
|
$vtodo->setDuration( "PT4H" );
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="EXDATE"></a><h3>3.2.24 EXDATE</h3>
|
|
<p class="quotes">
|
|
This property defines the list of date/time exceptions for a recurring <strong>calendar</strong> component
|
|
and is OPTIONAL and MAY occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>The default value type for EXDATE is DATE-TIME, can be set to a DATE value type.</p>
|
|
<p>
|
|
</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
EXDATE may occur more than once in <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EXDATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
are available.
|
|
</p>
|
|
|
|
<h5>Create EXDATE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createExdate()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createExdate();
|
|
|
|
</p>
|
|
|
|
<h5>Delete EXDATE</h5>
|
|
<p>Remove EXDATE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteExdate()</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$vtodo->deleteExdate();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<P>Delete EXDATE property no 2.</p>
|
|
<p class="example">
|
|
$vjournal->deleteExdate( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all EXDATE properties.</p>
|
|
<p class="example">
|
|
while( $vjournal->deleteExdate()) {
|
|
continue;
|
|
}
|
|
</p>
|
|
|
|
<h5>Get ALL EXDATE</h5>
|
|
<p>Returns array : all EXDATE, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllExdate( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get EXDATE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getExdate()<p>
|
|
<p class="comment">output = exdates<sup>1</sup> (with date<sup>1</sup>)</p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getExdate( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => exdates<sup>1</sup> (with date<sup>1</sup>),
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$exdate = $vtodo->getExdate();
|
|
|
|
</p>
|
|
|
|
<h5>is EXDATE set</h5>
|
|
<p>Return bool true if EXDATE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isExdateSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isExdateSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set EXDATE</h5>
|
|
<p>Set property value.</p>
|
|
<p>The value type for EXDATE should match the <a href="#DTSTART">DTSTART</a> value type.</p>
|
|
<p>
|
|
If no "VALUE" value type is set, DATE-TIME (default) value type is set.
|
|
</p>
|
|
<p>
|
|
If timezone in 1st date, all remaining dates are within this timezone and param "TZID" is set.<br>
|
|
</p>
|
|
<p>EXDATEs are automatically sorted in ascending order (Y-m-d[-H-i-s]).</p>
|
|
<p>
|
|
In spite of the fact that EXDATE may contain a (comma separated) list of values,
|
|
a strong recommendation is to split an EXDATE "list" into multiple single EXDATE entries.
|
|
(But if you do, don't mix timezones, may result in incorrect date values.)
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
Exception on DateTime error.
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setExdate( exdates [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">exdates<sup>1</sup> = date / (array) ( date *[, date ] )
|
|
|
|
date = (object) DateTimeInterface instance
|
|
date = (string) date/datetime string<sup>*</sup>
|
|
|
|
params<sup>2</sup> = (array) ([(datetimeparam/dateparam) / tzidparam] *[,xparams])
|
|
// <span class="comment">default, output as date-time</span>
|
|
datetimeparam = Vcalendar::VALUE => Vcalendar::DATE_TIME
|
|
// <span class="comment">output as DATE</span>
|
|
dateparam = Vcalendar::VALUE => Vcalendar::DATE
|
|
tzidparam = Vcalendar::TZID => (string) <timezone identifier>
|
|
// <span class="comment">key prefix "X-"</span>
|
|
xparams = (string) key => (string) value
|
|
// <span class="comment">1=1st, 2=2nd etc</span>
|
|
propOrderNo = (int) order number
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p>Exclude 2006-08-11 from the recurrence pattern.</p>
|
|
<p class="example">use Kigkonsult\Icalcreator\Vcalendar;
|
|
try {
|
|
$vevent->setExdate(
|
|
[ new DateTime( '2006-08-11' ) ],
|
|
[ Vcalendar::VALUE => Vcalendar::DATE ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="EXRULE"></a><h3>3.2.25 EXRULE</h3>
|
|
<p class="quotes">
|
|
This property defines a rule or repeating pattern for an exception to a recurrence set and is OPTIONAL
|
|
and MAY occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>EXRULE is deprecated in [RFC5545]!</p>
|
|
<p>
|
|
Uses the methods and formats as <a href="#RRULE">RRULE</a>.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="FREEBUSY_PROP"></a><h3>3.2.26 FREEBUSY</h3>
|
|
<p class="quotes">
|
|
The property defines one or more free or busy time intervals in a <a href="#VFREEBUSY">VFREEBUSY</a>
|
|
<strong>calendar</strong> component.
|
|
<p>
|
|
<p>The value type for FREEBUSY is PERIOD. A PERIOD is DATE-TIME/DATE-TIME or DATE-TIME/duration and in the <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FREEBUSY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FBTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FREE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY_UNAVAILABLE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BUSY_TENTATIVE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create FREEBUSY</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createFreebusy()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createfreebusy();
|
|
|
|
</p>
|
|
<h5>Delete FREEBUSY</h5>
|
|
<p>Remove FREEBUSY from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteFreebusy()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) FREEBUSY property</p>
|
|
<p class="example">
|
|
$vfreebusy->deleteFreebusy();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete FREEBUSY property no 2.</p>
|
|
<p class="example">
|
|
$vfreebusy->deleteFreebusy( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all FREEBUSY properties.</p>
|
|
<p class="example">
|
|
while( $vfreebusy->deleteFreebusy()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL FREEBUSY</h5>
|
|
<p>Returns array : all FREEBUSY, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllFreebusy( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get FREEBUSY</h5>
|
|
<p>If set, returns property value, otherwise bool false. Note, NO freebusytype!</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getFreebusy()</p>
|
|
<p class="comment">
|
|
output = (array) periods<sup>2</sup> with (array) startdate, enddate/duration<sup>2</sup> below
|
|
</p>
|
|
<p class="label">Format 2</p>
|
|
<p>If set, returns property value and params, otherwise bool false. Freebusytype in params.</p>
|
|
<p class="format">calendarComponent::getFreebusy( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">
|
|
output = [
|
|
"value" => array( periods),
|
|
"params" => [ "FBTYPE" => freebusytype, *xparams<sup>3</sup> ]
|
|
]
|
|
periods = (array) periods<sup>2</sup> with (array) startdate, enddate/duration<sup>2</sup> below
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$freebusy = $vfreebusy->getFreebusy();
|
|
|
|
</p>
|
|
|
|
<h5>is FREEBUSY set</h5>
|
|
<p>Return bool true if FREEBUSY is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isFreebusySet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vfreebusy->isFreebusySet();
|
|
|
|
</p>
|
|
|
|
<h5>Set FREEBUSY</h5>
|
|
<p>
|
|
Set property value. FREEBUSY date is always a <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME
|
|
in pair with another <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME or a DateInteval.
|
|
Set dates within the same timezone, otherwise it may lead to unpredictable result;
|
|
</p>
|
|
<p>
|
|
In spite of the fact that FREEBUSYs may contain a (comma separated) list of values,
|
|
a strong recommendation is to split a FREEBUSYs "list" into multiple single FREEBUSY entries.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
Exception on DateTime/DateInterval error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setFreebusy( freebusytype, periods<sup>2</sup> [,xparams [,propOrderNo ]] )</p>
|
|
<p class="comment">freebusytype = one of Vcalendar::FREE
|
|
/ Vcalendar::BUSY <b>Default</b>
|
|
/ Vcalendar::BUSY-UNAVAILABLE
|
|
/ Vcalendar::BUSY-TENTATIVE
|
|
/ x-name
|
|
periods<sup>2</sup> = (array) ( period [, period... ] )
|
|
period = (array) ( startdate, enddate/duration )
|
|
|
|
startdate/enddate = (object) DateTimeInterface instance, will be set to UTC if not UTC timezone
|
|
startdate/enddate = (string) datetime string<sup>*</sup>
|
|
|
|
duration = (object) DateInterval class instance
|
|
duration = (string) dur-value = ("+")"P"(dur-date/dur-time/dur-week) like "P15DT5H0M20S"
|
|
dur-date = dur-day [dur-time]
|
|
dur-time = "T" (dur-hour / dur-minute / dur-second)
|
|
dur-week = 1*DIGIT "W"
|
|
dur-hour = 1*DIGIT "H" [dur-minute]
|
|
dur-minute = 1*DIGIT "M" [dur-second]
|
|
dur-second = 1*DIGIT "S"
|
|
dur-day = 1*DIGIT "D"
|
|
|
|
xparams<sup>3 </sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p>
|
|
See rules in detail in <a href="https://tools.ietf.org/html/rfc5545" title="RFC5545" target="_blank">RFC5545</a>
|
|
"Internet Calendaring and Scheduling Core Object Specification (iCalendar)".
|
|
The recommended way :
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Single FREEBUSY entries</p>
|
|
<p class="example">
|
|
try {
|
|
$freebusy1->setFreebusy(
|
|
Vcalendar::FREE,
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
]
|
|
);
|
|
$freebusy1->setFreebusy(
|
|
Vcalendar::FREE,
|
|
[
|
|
new DateTime( "2003-03-03 03:03:03 UTC" ),
|
|
new DateInterval( "P5DT5H5M5S" )
|
|
],
|
|
);
|
|
$freebusy1->setFreebusy(
|
|
Vcalendar::FREE,
|
|
[
|
|
"4 April 2005 4:4:4 UTC",
|
|
"P2D"
|
|
]
|
|
)
|
|
->setFreebusy(
|
|
Vcalendar::BUSY,
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
)
|
|
->setFreebusy(
|
|
Vcalendar::BUSY,
|
|
[
|
|
new DateTime( "2003-03-03 03:03:03 UTC" ),
|
|
"P2D"
|
|
],
|
|
)
|
|
->setFreebusy(
|
|
Vcalendar::BUSY,
|
|
[
|
|
"4 April 2005 4:4:4 UTC",
|
|
new DateInterval( "PT5H" )
|
|
],
|
|
)
|
|
->setFreebusy(
|
|
Vcalendar::BUSY,
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2003-03-03 03:03:03 UTC" )
|
|
]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>FREEBUSY entries as <i>list</i> of entries</p>
|
|
<p class="example">
|
|
try {
|
|
$freebusy2->setFreebusy(
|
|
Vcalendar::FREE,
|
|
[
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
[
|
|
new DateTime( "2003-03-03 03:03:03 UTC" ),
|
|
new DateInterval( "P5DT5H5M5S" )
|
|
],
|
|
[
|
|
"4 April 2005 4:4:4 UTC",
|
|
"P2D"
|
|
]
|
|
]
|
|
)
|
|
->setFreebusy(
|
|
Vcalendar::BUSY,
|
|
[
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
[
|
|
new DateTime( "2003-03-03 03:03:03 UTC" ),
|
|
"P2D"
|
|
],
|
|
[
|
|
"4 April 2005 4:4:4 UTC",
|
|
new DateInterval( "PT5H" )
|
|
],
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2003-03-03 03:03:03 UTC" )
|
|
]
|
|
]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="GEO"></a><h3>3.2.27 GEO</h3>
|
|
<p class="quotes">
|
|
This property specifies information related to the global position for the activity specified by
|
|
<a href="#VEVENT">VEVENT</a> and <a href="#VTODO">VTODO</a> components
|
|
and is OPTIONAL and MUST NOT occur more than once.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
GEO may occur once in
|
|
<a href="#PARTICIPANT">PARTICIPANT</a>,
|
|
<a href="#VRESOURCE">VRESOURCE</a>and
|
|
<a href="#VLOCATION">VLOCATION</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>Value type for latitude and longitude is FLOAT.</p>
|
|
<p class="quotes">Values for latitude and longitude shall be expressed as decimal
|
|
fractions of degrees. Whole degrees of latitude shall be represented by
|
|
a two-digit decimal number ranging from 0 through 90. Whole degrees
|
|
of longitude shall be represented by a decimal number ranging from 0
|
|
through 180. When a decimal fraction of a degree is specified, it shall
|
|
be separated from the whole number of degrees by a decimal point.</p>
|
|
<p>The output (float) latitude and longitude values are presented up to six decimals.</p>
|
|
<p>Using the non-standard directive "GEOLOCATION", iCalcreator returns output
|
|
by combining the <a href="#LOCATION">LOCATION</a> and <a href="#GEO">GEO</a> property values,
|
|
(separated by "/") and only if <a href="#GEO">GEO</a> is set).
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::GEO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LATITUDE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LONGITUDE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create GEO</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createGeo()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createGeo();
|
|
|
|
</p>
|
|
<h5>Delete GEO</h5>
|
|
<p>Remove GEO from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteGeo()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteGeo();
|
|
|
|
</p>
|
|
<h5>Get GEO</h5>
|
|
<p>If set, returns GEO property value (latitude/longitude) as prescribed in [RFC5545], otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getGeo()</p>
|
|
<p class="comment">output = array( "latitude" => <latitude>
|
|
, "longitude" => <longitude>))</p>
|
|
<p class="label">Format 2</p>
|
|
<p class="format">calendarComponent::getGeo( true )</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="comment">output = [
|
|
"value" => array ( "latitude" => <latitude>, "longitude" => <longitude> ),
|
|
"params" => xparams<sup>1</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$geo = $vevent->getGeo();
|
|
|
|
</p>
|
|
|
|
<h5>is GEO set</h5>
|
|
<p>Return bool true if GEO is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isGeoSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isGeoSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set GEO</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty values and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setGeo( latitude, longitude [, xparams ] )</p>
|
|
<p class="comment">latitude = (float) latitude
|
|
longitude = (float) longitude
|
|
xparams<sup>1</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setGeo( 11.23456, -23.45678 );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="IMAGE"></a><h3>3.2.28 IMAGE</h3>
|
|
<p class="quotes">
|
|
<p>IMAGE specifies an image associated with the calendar or a calendar component.</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
IMAGE may be specified multiple times in <a href="#VCALENDAR">VCALENDAR</a> and in
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is URI.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::IMAGE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DISPLAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::URI<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BINERY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ENCODING<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FMTTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BASE64<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p>
|
|
Methods and usage, below, applies also to Vcalendar instance.
|
|
</p>
|
|
<h5>Create IMAGE</h5>
|
|
<p>If set, returns [RFC7986] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createImage()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createImage();
|
|
|
|
</p>
|
|
|
|
<h5>Delete IMAGE</h5>
|
|
<p>Remove IMAGE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteImage()</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$vevent->deleteImage();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
Delete IMAGE property no 2.
|
|
<p class="example">
|
|
$vevent->deleteImage( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
Deleting all IMAGE properties.
|
|
<p class="example">
|
|
while( $vevent->deleteImage()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL IMAGE</h5>
|
|
<p>Returns array : all IMAGE, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllImage( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get IMAGE</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getImage()</p>
|
|
<p class="comment">output = imageValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getImage( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value,
|
|
<p class="comment">output = [
|
|
"value" => imageValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getImage( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value order number</p>
|
|
<p class="comment">Get propOrderNo IMAGE</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$image = $valarm->getImage();
|
|
|
|
</p>
|
|
|
|
<h5>is IMAGE set</h5>
|
|
<p>Return bool true if IMAGE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isImageSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isImageSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set IMAGE</h5>
|
|
<p>
|
|
Set property value. Parameters will be ordered as prescribed in [RFC7986].
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setImage( imageValue<sup>1</sup> [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">imageValue<sup>1</sup> = (string) URI / inline binary encoded content
|
|
params<sup>2</sup> 1 = [ // value is URI
|
|
Vcalendar::VALUE => Vcalendar::URI ], imageParams
|
|
]
|
|
params<sup>2</sup> 2 = [ // value is binary
|
|
Vcalendar::ENCODING => Vcalendar::BASE64,
|
|
Vcalendar::VALUE => Vcalendar::BINARY,
|
|
imageParams
|
|
]
|
|
imageParams = [
|
|
Vcalendar::FMTTYPE => contentType,
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>",
|
|
Vcalendar::DISPLAY => displayVal,
|
|
xparams
|
|
]
|
|
contentType = (string) The parameter value MUST be the TEXT for either an IANA
|
|
registered content type or a non-standard content type.
|
|
displayval = one or more (comma separated)
|
|
Vcalendar::BADGE // image inline with the title of the event, DEFAULT
|
|
Vcalendar::GRAPHIC // a full image replacement for the event itself
|
|
Vcalendar::FULLSIZE // an image that is used to enhance the event
|
|
Vcalendar::THUMBNAIL // a smaller variant of "FULLSIZE" to be used
|
|
// when space for the image is constrained
|
|
x-name // Experimental type
|
|
iana-token // Other IANA-registered type
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setImage(
|
|
"ftp://domain.com/pub/docs/agenda.doc",
|
|
[ Vcalendar::FMTTYPE => "application/binary" ]
|
|
);
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="LAST-MODIFIED"></a><h3>3.2.29 LAST-MODIFIED</h3>
|
|
<p class="quotes">
|
|
The property specifies the date and time that the information associated with the <strong>calendar</strong>
|
|
component was last revised in the <strong>calendar</strong> store.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a>
|
|
and <a href="#VTIMEZONE">VTIMEZONE</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
LAST-MODIFIED may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
LAST-MODIFIED may occur once in <a href="#VCALENDAR">VCALENDAR</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
LAST-MODIFIED may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The value type for LAST-MODIFIED is <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::LAST_MODIFIED is available.
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#CREATED">CREATED</a> property.</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="LOCATION"></a><h3>3.2.30 LOCATION</h3>
|
|
<p class="quotes">
|
|
The property defines the intended venue for the activity defined by a <strong>calendar</strong> component.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>
|
|
and <a href="#VTODO">VTODO</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
LOCATION may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
LOCATION may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dd>
|
|
<br>
|
|
the <a href="#VCALENDAR">VCALENDAR</a> / <a href="#VEVENT">VEVENT</a> / <a href="#VTODO">VTODO</a> method
|
|
<i>vlocationNames2Location()</i><br>
|
|
may be used to create a new LOCATION from (first found)
|
|
<a href="#VLOCATION">VLOCATION</a> (sub-)component
|
|
and the <a href="#NAME">NAME</a> property value
|
|
with X-parameters for <a href="#VLOCATION">VLOCATION</a> properties
|
|
<a href="#UID">UID</a> and <a href="#LOCATION-TYPE">LOCATION-TYPE</a>.<br>
|
|
Another option is to set LOCATION and <a href="#VLOCATION">VLOCATION</a> in pairs.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for LOCATION is TEXT.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) LOCATION values.</p>
|
|
<p>
|
|
Using the non-standard directive "GEOLOCATION", iCalcreator returns output
|
|
by combining the <a href="#LOCATION">LOCATION</a> and <a href="#GEO">GEO</a> property values,
|
|
(separated by "/") and only if <a href="#GEO">GEO</a> is set).
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LOCATION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
|
|
<h5>Create LOCATION</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createLocation()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createLocation();
|
|
|
|
</p>
|
|
|
|
<h5>Delete LOCATION</h5>
|
|
<p>Remove LOCATION from component.</p>
|
|
<p>
|
|
For LOCATION in <a href="#PARTICIPANT">PARTICIPANT</a> (may occur more than once),
|
|
review <a href="#CATEGORIES">CATEGORIES</a> delete-method with "propOrderNo" argument.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteLocation()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteLocation();
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL LOCATION</h5>
|
|
<p>Returns array : all LOCATION, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllLocation( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get LOCATION</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p>
|
|
For LOCATION in <a href="#PARTICIPANT">PARTICIPANT</a> (may occur more than once),
|
|
review <a href="#CATEGORIES">CATEGORIES</a> get-method with "propOrderNo" argument.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getLocation()</p>
|
|
<p class="comment">output = location<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getLocation( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => location<sup>1</sup>,
|
|
"params" => param<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$location = $vevent->getLocation();
|
|
|
|
</p>
|
|
|
|
<h5>is LOCATION set</h5>
|
|
<p>Return bool true if LOCATION is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isLocationSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isLocationSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set LOCATION</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
For LOCATION in <a href="#PARTICIPANT">PARTICIPANT</a> (may occur more than once),
|
|
review <a href="#CATEGORIES">CATEGORIES</a> set-method with "propOrderNo" argument.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setLocation( location [, param [, propOrderNo]] )</p>
|
|
<p class="comment">location<sup>1</sup> = (string) Value type TEXT
|
|
params<sup>2</sup> = (array) (
|
|
[ Vcalendar::ALTREP => (string) "<an alternate text representation, URI>"]
|
|
[, Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"]
|
|
*[, xparams ]
|
|
)
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]
|
|
propOrderNo = (int) order number // <span class="comment">opt, 1=1st, 2=2nd etc, <a href="#PARTICIPANT">PARTICIPANT</a> only</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setLocation( "Buckingham Palace" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="LOCATION-TYPE"></a><h3>3.2.31 LOCATION-TYPE</h3>
|
|
<p class="quotes">LOCATION-TYPE specifies the type(s) of a location</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
LOCATION-TYPE specifies the type(s) of a location
|
|
and may occur once in <a href="#VLOCATION">VLOCATION</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
Values are taken from the values defined in Section 3 of
|
|
<a href="https://tools.ietf.org/html/rfc4589" title="Download rfc4589" target="_blank">rfc4589</a>.
|
|
</p>
|
|
|
|
<p>
|
|
To ease up usage, constants Kigkonsult\Icalcreator\Vcalendar::LOCATION-TYPE is available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#NAME">NAME</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="NAME"></a><h3>3.2.32 NAME</h3>
|
|
<p class="quotes">
|
|
NAME specifies the name of the calendar.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
NAME may occur more than once in <a href="#VCALENDAR">VCALENDAR</a> and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
NAME may occur once in <a href="#VLOCATION">VLOCATION</a> and <a href="#VRESOURCE">VRESOURCE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::NAME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create NAME</h5>
|
|
<p>If set, returns [RFC7986] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createDescription()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $calendar->createName();
|
|
|
|
</p>
|
|
<h5>Delete NAME</h5>
|
|
<p>Remove NAME from calendar.</p>
|
|
<p>
|
|
For NAME in <a href="#VCALENDAR">VCALENDAR</a> (may occur more than once),
|
|
review <a href="#CATEGORIES">CATEGORIES</a> delete-method with "propOrderNo" argument.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::deleteName()</p>
|
|
<p class="label">Example</p>
|
|
<p>Delete (single/first) NAME property.</p>
|
|
<p class="example">
|
|
$calendar->deleteName();
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL NAME</h5>
|
|
<p>Returns array : all NAME, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllName( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get NAME</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p>
|
|
For NAME in <a href="#VCALENDAR">VCALENDAR</a> (may occur more than once),
|
|
review <a href="#CATEGORIES">CATEGORIES</a> get-method with "propOrderNo" argument.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">Vcalendar::getName()</p>
|
|
<p class="comment">output = nameValue<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">Vcalendar::getName( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => nameValue<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$name = $calendar->getName();
|
|
|
|
</p>
|
|
|
|
<h5>is NAME set</h5>
|
|
<p>Return bool true if NAME is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isNameSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vcalendar->isNameSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set NAME</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC7986].
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::setName( nameValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">nameValue<sup>1</sup> = (string) Value type TEXT
|
|
params<sup>2</sup> = [
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>",
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"
|
|
],
|
|
*xparams
|
|
lang<sup>*</sup> = as defined in [RFC5546]
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">opt, 1=1st, 2=2nd etc, <a href="#VCALENDAR">VCALENDAR</a> only</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$calendar->setName( "This is a name" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="ORGANIZER"></a><h3>3.2.33 ORGANIZER</h3>
|
|
<p class="quotes">
|
|
The property defines the organizer for a <strong>calendar</strong> component and is OPTIONAL
|
|
and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a> and <a href="#VFREEBUSY">VFREEBUSY</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
ORGANIZER may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>This value type for ORGANIZER is URI, a <strong>calendar</strong> user address.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) ORGANIZER values.</p>
|
|
<p>You can export <strong>calendar</strong> ORGANIZER values as <a href="#iCal2vCards">vCards</a>.
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ORGANIZER<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CN<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DIR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SENT_BY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create ORGANIZER</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createOrganizer()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createOrganizer();
|
|
|
|
</p>
|
|
<h5>Delete ORGANIZER</h5>
|
|
<p>Remove ORGANIZER from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteOrganizer()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteOrganizer();
|
|
|
|
</p>
|
|
<h5>Get ORGANIZER</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getOrganizer()</p>
|
|
<p class="comment">output = organizer<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getOrganizer( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => organizer<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$organizer = $vevent->getOrganizer();
|
|
|
|
</p>
|
|
|
|
<h5>is ORGANIZER set</h5>
|
|
<p>Return bool true if ORGANIZER is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isOrganizerSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isOrganizerSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set ORGANIZER</h5>
|
|
<p>Set property value.
|
|
Property value must be prefixed by protocol
|
|
("ftp://", "https://", "mailto:", "file://" etc,
|
|
ref. <a href="https://tools.ietf.org/html/rfc1738" title="Download 1738" target="_blank">rfc1738</a>),
|
|
"mailto:" is prefixed if missing.
|
|
Also DIR parameter must be prefixed by protocol.
|
|
SENT-BY parameter must use protocol "mailto:", prefixed if missing.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setOrganizer( organizer [, params] )</p>
|
|
<p class="comment">organizer<sup>1</sup> = (string) a <strong>calendar</strong> user address (cal-address), a URI as defined by
|
|
[RFC 1738] or any other IANA registered form for a URI.
|
|
params<sup>2</sup> = (array) Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>", // applies to the CN parameter value
|
|
Vcalendar::CN => (string) "common name to be associated with the
|
|
<strong>calendar</strong> user specified by the property",
|
|
Vcalendar::DIR => (string) "reference to a directory entry associated
|
|
with the <strong>calendar</strong> user specified by the property",
|
|
Vcalendar::SENT_BY => (string) (cal-address, above)
|
|
"single <strong>calendar</strong> user that is acting on behalf
|
|
of the <strong>calendar</strong> user specified by the property",
|
|
*xparams
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$dir = "ldap://domain.com:6666/o=3DDC%20Comp,c=3DUS??(cn=3DJohn%20Doe)";
|
|
$vevent->setOrganizer(
|
|
"ical@domain.com",
|
|
[
|
|
Vcalendar::CN => "John Doe",
|
|
Vcalendar::DIR => $dir,
|
|
Vcalendar::SENT_BY => "secretary@domain.com",
|
|
"X-Key1" => "X-Value1",
|
|
"X-Key2" => "X-Value2"
|
|
]
|
|
);
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="PARTICIPANT-TYPE"></a><h3>3.2.34 PARTICIPANT-TYPE</h3>
|
|
<p class="quotes">PARTICIPANT-TYPE specifies the type of participant.</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
PARTICIPANT-TYPE specifies the type of participant
|
|
and may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PARTICIPANT_TYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ACTIVE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::INACTIVE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SPONSOR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BOOKING_CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EMERGENCY_CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PUBLICITY_CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PLANNER_CONTACT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PERFORMER<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SPEAKER<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#CLASS">CLASS</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="PERCENT-COMPLETE"></a><h3>3.2.35 PERCENT-COMPLETE</h3>
|
|
<p class="quotes">
|
|
This property is used by an assignee or delegatee of a <a href="#VTODO">VTODO</a> to
|
|
convey the percent completion of a <a href="#VTODO">VTODO</a> to the Organizer and is
|
|
OPTIONAL and MUST NOT occur more than once.
|
|
</p>
|
|
<p>
|
|
The property value is a positive integer between zero and one hundred.
|
|
A value of "0" indicates the <a href="#VTODO">VTODO</a> has not yet been started.
|
|
A value of "100" indicates that the <a href="#VTODO">VTODO</a> has been completed.
|
|
Integer values in between indicate the percent partially complete.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::PERCENT_COMPLETE is available.
|
|
</p>
|
|
<h5>Create PERCENT-COMPLETE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createPercentComplete()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createPercentComplete();
|
|
|
|
</p>
|
|
<h5>Delete PERCENT-COMPLETE</h5>
|
|
<p>Remove PERCENT-COMPLETE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deletePercentcomplete()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtodo->deletePercentcomplete()
|
|
|
|
</p>
|
|
<h5>Get PERCENT-COMPLETE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getPercentcomplete()</p>
|
|
<p class="comment">output = percent<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getPercentcomplete( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => percent<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$percent = $vtodo->getPercentcomplete();
|
|
|
|
</p>
|
|
|
|
<h5>is PERCENT-COMPLETE set</h5>
|
|
<p>Return bool true if PERCENT-COMPLETE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isPercentcompleteSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vtodo->isPercentcompleteSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set PERCENT-COMPLETE</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty (non-zero) value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setPercentcomplete( percent [, xparams ] )</p>
|
|
<p class="comment">percent<sup>1</sup> = (int) Value type INTEGER
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtodo->setPercentcomplete( 90 );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="PRIORITY"></a><h3>3.2.36 PRIORITY</h3>
|
|
<p class="quotes">
|
|
The property defines the relative priority for a <strong>calendar</strong> component and is OPTIONAL
|
|
and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a> and <a href="#VTODO">VTODO</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
PRIORITY may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
PRIORITY may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The priority is specified as an integer in the range zero to nine.<br>
|
|
A value of zero (US-ASCII decimal 48) specifies an undefined priority.<br>
|
|
A value of one (US-ASCII decimal 49) is the highest priority.<br>
|
|
A value of two (US-ASCII decimal 50) is the second highest priority.<br>
|
|
Subsequent numbers specify a decreasing ordinal priority.<br>
|
|
A value of nine (US-ASCII decimal 58) is the lowest priority.
|
|
</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) PRIORITY values.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::PRIORITY is available.
|
|
</p>
|
|
<h5>Create PRIORITY</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createPriority()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createPriority();
|
|
|
|
</p>
|
|
<h5>Delete PRIORITY</h5>
|
|
<p>Remove PRIORITY from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deletePriority()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deletePriority();
|
|
|
|
</p>
|
|
<h5>Get PRIORITY</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getPriority()</p>
|
|
<p class="comment">output = priority<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getPriority( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => priority<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$priority = $vevent->getPriority();
|
|
|
|
</p>
|
|
|
|
<h5>is PRIORITY set</h5>
|
|
<p>Return bool true if PRIORITY is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isPrioritySet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isPrioritySet();
|
|
|
|
</p>
|
|
|
|
<h5>Set PRIORITY</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and if value is not an integer.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setPriority( priority [, xparams ] )</p>
|
|
<p class="comment">priority<sup>1</sup> = (int) Value type INTEGER
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setPriority( 3 );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="PROXIMITY"></a><h3>3.2.37 PROXIMITY</h3>
|
|
<p class="quotes">PROXIMITY indicates that a location-based trigger is applied to an <a href="#VALARM">VALARM</a></p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>
|
|
"VALARM Extensions for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
PROXIMITY is OPTIONAL but MUST NOT occur more than once in <a href="#VALARM">VALARM</a>
|
|
and may NOT be supported by all calendaring software.<br>
|
|
|
|
The <a href="#VALARM">VALARM</a> subcomponent <a href="#VLOCATION">VLOCATION</a> is OPTIONAL
|
|
and MAY occur more than once
|
|
but only when a PROXIMITY property is also present.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constant<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PROXIMITY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ARRIVE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DEPART<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONNECT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DISCONNECT<br>
|
|
are available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#ACTION">ACTION</a> property, opt with usage of constants above</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RDATE"></a><h3>3.2.38 RDATE</h3>
|
|
<p class="quotes">
|
|
This property defines the list of date/times for a recurrence set and is OPTIONAL and MAY occur
|
|
more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a>,
|
|
<a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RDATE may occur more than once in <a href="#AVAILABLE">AVAILABLE</a>
|
|
</dd>
|
|
<dd>
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The default value type for RDATE is DATE-TIME, can be set to DATE or PERIOD (params<sup>2</sup>).
|
|
In <a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components,
|
|
RDATE MUST be specified as a date-time value type with local time value.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RDATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PERIOD<br>
|
|
are available.
|
|
</p>
|
|
|
|
<h5>Create RDATE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createRdate()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createRdate();
|
|
|
|
</p>
|
|
|
|
<h5>Delete RDATE</h5>
|
|
<p>Remove RDATE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteRdate()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) RDATE property.</p>
|
|
<p class="example">
|
|
$vtodo->deleteRdate();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete RDATE property no 2.</p>
|
|
<p class="example">
|
|
$vjournal->deleteRdate( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Delete all RDATE properties.</p>
|
|
<p class="example">
|
|
while( $vjournal->deleteRdate()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL RDATE</h5>
|
|
<p>Returns array : all RDATE, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllRdate( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get RDATE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getRdate()</p>
|
|
<p class="comment">output = dates<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getRdate( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => dates<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getRdate( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo RDATE</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$rdates = $vevent->getRdate();
|
|
|
|
</p>
|
|
|
|
<h5>is RDATE set</h5>
|
|
<p>Return bool true if RDATE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isRdateSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isRdateSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set RDATE</h5>
|
|
<p>Set property value.</p>
|
|
<p>The value type for RDATE should match the <a href="#DTSTART">DTSTART</a> value type.</p>
|
|
<p>
|
|
If no "VALUE" value type is set, DATE-TIME (default) value type is set.
|
|
</p>
|
|
<p>
|
|
If no "TZID" is set in params and timezone in 1st date, all remaining dates are within this timezone and param "TZID" is set.<br>
|
|
</p>
|
|
<p>RDATEs are automatically sorted in ascending order (Y-m-d[-H-i-s]).</p>
|
|
<p>
|
|
A RDATE may contain a (comma separated) list of date values, BUT,
|
|
a strong recommendation is to split a RDATE "list" into multiple single RDATE entries.
|
|
(But if you do, don't mix timezones, may result in incorrect date values.)
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
Exception on DateTime/DateInterval error.
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setRdate( dates [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">dates<sup>1</sup> = singledate / (array) ( *singledate ) / (array) ( date2 *[, date2 ] )
|
|
date2 = (array) ( startdate, enddate/duration )
|
|
singledate = date
|
|
startdate = date
|
|
enddate = date
|
|
|
|
date = (object) DateTimeInterface instance
|
|
date = (string) date/datetime string<sup>*</sup>
|
|
|
|
duration = (object) DateInterval class instance
|
|
duration = (string) dur-value = ("+")"P"(dur-date/dur-time/dur-week) like "P15DT5H0M20S"
|
|
dur-date = dur-day [dur-time]
|
|
dur-time = "T" (dur-hour / dur-minute / dur-second)
|
|
dur-week = 1*DIGIT "W"
|
|
dur-day = 1*DIGIT "D"
|
|
dur-hour = 1*DIGIT "H" [dur-minute]
|
|
dur-minute = 1*DIGIT "M" [dur-second]
|
|
dur-second = 1*DIGIT "S"
|
|
|
|
params<sup>2</sup> = ([tzidparam ( / datetimeparam / dateparam / periodparam )] *[, xparams ] )
|
|
tzidparam = Vcalendar::TZID => (string) <timezone identifier>
|
|
// <span class="comment">output as local DATE-TIME with timezone identifier</span>
|
|
// <span class="comment">if tzidparam="GMT"/"UTC" then</span>
|
|
// <span class="comment">output date-time is suffixed by 'Z'</span>
|
|
|
|
datetimeparam = Vcalendar::VALUE => Vcalendar::DATE_TIME // <span class="comment">default, DATE-TIME</span>
|
|
|
|
dateparam = Vcalendar::VALUE => Vcalendar::DATE // <span class="comment">required if DATE</span>
|
|
periodparam = Vcalendar::VALUE => Vcalendar::PERIOD
|
|
// <span class="comment">required if PERIOD (datetime - datetime/duration)</span>
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
See rules in detail in <a href="https://tools.ietf.org/html/rfc5545" title="RFC5545" target="_blank">RFC5545</a>
|
|
"Internet Calendaring and Scheduling Core Object Specification (iCalendar)".<br>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
try {
|
|
$vevent = $vcalendar->newVevent()
|
|
|
|
<span class="comment">// one recurrence date, if param VALUE is missing, DATE-TIME default</span>
|
|
->setRdate(
|
|
new DateTime( "2001-01-01 01:01:01 UTC" )
|
|
)
|
|
|
|
<span class="comment">// two or more recurrence dates</span>
|
|
->setRdate(
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" )
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
]
|
|
[ Vcalendar::VALUE => Vcalendar::DATE_TIME ]
|
|
)
|
|
|
|
<span class="comment">// one PERIOD, startdate-duration, VALUE "PERIOD" required</span>
|
|
->setRdate(
|
|
[
|
|
[
|
|
new DateTime( "2002-02-02 02:02:02 UTC" ),
|
|
new DateInterval( "PT5H5M5S" )
|
|
]
|
|
],
|
|
[ Vcalendar::VALUE => Vcalendar::PERIOD ]
|
|
)
|
|
|
|
<span class="comment">// one PERIOD, start- and endDate (accepted format for ONE period)</span>
|
|
->setRdate(
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
[ Vcalendar::VALUE => Vcalendar::PERIOD ]
|
|
)
|
|
|
|
<span class="comment">// PERIOD, pairs of start- and endDates</span>
|
|
->setRdate(
|
|
[
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
[
|
|
"3 March 2003 03.03.03 UTC",
|
|
new DateTime( "2004-04-04 04:04:04 UTC" )
|
|
]
|
|
],
|
|
[ Vcalendar::VALUE => Vcalendar::PERIOD ]
|
|
)
|
|
|
|
<span class="comment">// PERIOD, pairs of start-/enddate and startdate-duration</span>
|
|
->setRdate(
|
|
[
|
|
[
|
|
new DateTime( "2001-01-01 01:01:01 UTC" ),
|
|
new DateTime( "2002-02-02 02:02:02 UTC" )
|
|
],
|
|
[
|
|
"3 March 2003 03.03.03 UTC",
|
|
new DateInterval( "PT7H" )
|
|
]
|
|
],
|
|
[ Vcalendar::VALUE => Vcalendar::PERIOD ]
|
|
)
|
|
|
|
<span class="comment">// start- and enddate as DATE</span>
|
|
->setRdate(
|
|
[
|
|
[
|
|
new DateTime( "2005-10-05 05:05:05 UTC" ),
|
|
"2008-08-08 08:08:08 UTC" )
|
|
]
|
|
],
|
|
[ Vcalendar::VALUE => Vcalendar::DATE ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RECURRENCE-ID"></a><h3>3.2.39 RECURRENCE-ID</h3>
|
|
<p class="quotes">
|
|
This property is used in conjunction with the <a href="#UID">UID</a> and <a href="#SEQUENCE">SEQUENCE</a>
|
|
property to identify a specific instance of a recurring <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>
|
|
or <a href="#VJOURNAL">VJOURNAL</a> <strong>calendar</strong> component and is OPTIONAL and MAY NOT occur more than once.
|
|
</p>
|
|
<p>
|
|
</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RECURRENCE-ID may occur once in <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The property value is the effective value of the <a href="#DTSTART">DTSTART</a> property of the recurrence instance.
|
|
The default value type is DATE-TIME, can be set to DATE (params<sup>2</sup>).
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#DTEND">DTEND</a> property.</p>
|
|
<p>
|
|
The calendar method <a href="#sort2">SORT</a> with argument <a href="#UID">UID</a>
|
|
also use RECURRENCE-ID / <a href="#SEQUENCE">SEQUENCE</a> as sort parameters.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RECURRENCE_ID<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TZID<br>
|
|
are available.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="REFRESH-INTERVAL"></a><h3>3.2.40 REFRESH-INTERVAL</h3>
|
|
<p class="quotes">
|
|
REFRESH-INTERVAL specifies a suggested minimum interval for
|
|
polling for changes of the calendar data from the original source
|
|
of that data.
|
|
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
REFRESH-INTERVAL may occur once in <a href="#VCALENDAR">VCALENDAR</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is DURATION.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::REFRESH_INTERVAL is available.
|
|
</p>
|
|
<p>
|
|
For methods and usage, see <a href="#DURATION">3.2.23 DURATION</a> but applied on a Vcalendar instance.
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RELATED-TO"></a><h3>3.2.41 RELATED-TO</h3>
|
|
<p class="quotes">
|
|
The property is used to represent a relationship or reference
|
|
between one <strong>calendar</strong> component and another
|
|
and is OPTIONAL and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a> and
|
|
<a href="#VALARM">VALARM</a>
|
|
(<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>)
|
|
components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RELATED-TO may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The property value consists of the persistent, globally unique identifier of another <strong>calendar</strong> component.
|
|
This value would be represented in a <strong>calendar</strong> component by the <a href="#UID">UID</a> property.
|
|
</p>
|
|
<p>
|
|
The value type for RELATED-TO is TEXT.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RELATED_TO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RELTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PARENT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CHILD<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SIBLING<br>
|
|
- available.
|
|
</p>
|
|
|
|
<h5>Create RELATED-TO</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createRelatedTo()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createRelatedTo();
|
|
|
|
</p>
|
|
|
|
<h5>Delete RELATED-TO</h5>
|
|
<p>Remove RELATED-TO from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteRelatedto()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete /single/first) RELATED-TO property</p>
|
|
<p class="example">
|
|
$vtodo->deleteRelatedto()
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete RELATED-TO property no 2.</p>
|
|
<p class="example">
|
|
$vjournal->deleteRelatedto( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all RELATED-TO properties.</p>
|
|
<p class="example">
|
|
while( $vjournal->deleteRelatedto()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL RELATED-TO</h5>
|
|
<p>Returns array : all RELATED-TO, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllRelatedto( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get RELATED-TO</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getRelatedto()</p>
|
|
<p class="comment">output = relid<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getRelatedto( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => relid<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getRelatedto(propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo RELATED-TO</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$relatedId = $vtodo->getRelatedto();
|
|
|
|
</p>
|
|
|
|
<h5>is RELATED-TO set</h5>
|
|
<p>Return bool true if RELATED-TO is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isRelatedtoSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isRelatedtoSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set RELATED-TO</h5>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setRelatedto( relid [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">relid<sup>1</sup> = (string) Value type TEXT.
|
|
params<sup>2</sup> = (array) ( [ reltype ] *[, xparams] )
|
|
reltype = Vcalendar::RELTYPE =>
|
|
Vcalendar::PARENT (Default)
|
|
/ Vcalendar::CHILD
|
|
/ Vcalendar::SIBLING
|
|
/ (string) iana-token
|
|
/ (string) x-name
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtodo->setRelatedto( "19960401-080045-4000F192713@host.com" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
<a id="REPEAT"></a><h3>3.2.42 REPEAT</h3>
|
|
<p class="quotes">
|
|
This property defines the number of time the <a href="#VALARM">ALARM</a> should be repeated,
|
|
after the initial trigger.
|
|
If the <a href="#VALARM">ALARM</a> triggers more than once,
|
|
then this property MUST be specified along with the <a href="#DURATION">DURATION</a> property.
|
|
</p>
|
|
<p>The value type for REPEAT is INTEGER.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::REPEAT is available.
|
|
</p>
|
|
<h5>Create REPEAT</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createRepeat()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createRepeat();
|
|
|
|
</p>
|
|
<h5>Delete REPEAT</h5>
|
|
<p>Remove REPEAT from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteRepeat()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->deleteRepeat();
|
|
|
|
</p>
|
|
<h5>Get REPEAT</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getRepeat()</p>
|
|
<p class="comment">output = repeatTimes<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getRepeat( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => repeatTimes<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$repeat = $valarm->getRepeat();
|
|
|
|
</p>
|
|
|
|
<h5>is REPEAT set</h5>
|
|
<p>Return bool true if REPEAT is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isRepeatSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $valarm->isRepeatSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set REPEAT</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and if value is not an integer.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setRepeat( , repeatTimes [, xparams ] )</p>
|
|
<p class="comment">repeatTimes<sup>1</sup> = (int) Value type INTEGER
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->setRepeat( 2 );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="REQUEST-STATUS"></a><h3>3.2.43 REQUEST-STATUS</h3>
|
|
<p class="quotes">
|
|
This property defines the status code returned for a scheduling request and is OPTIONAL and
|
|
MAY occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a>
|
|
and <a href="#VFREEBUSY">VFREEBUSY</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
REQUEST-STATUS may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for REQUEST-STATUS is TEXT and consists of</p>
|
|
<dl>
|
|
<dt>a short return status component,
|
|
<dd>(in output) a PERIOD character separated 3-tuple of integers, ex 3.11
|
|
<dt>a longer return status description component
|
|
<dt>optionally a statusspecific data component
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REQUEST_STATUS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STATCODE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STATDESC<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EXTDATA<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
|
|
<h5>Create REQUEST-STATUS</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createRequestStatus()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createRequestStatus();
|
|
|
|
</p>
|
|
|
|
<h5>Delete REQUEST-STATUS</h5>
|
|
<p>Remove REQUEST-STATUS from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteRequeststatus()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) REQUEST-STATUS property.</p>
|
|
<p class="example">
|
|
$vtodo->deleteRequeststatus();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete REQUEST-STATUS property no 2.</p>
|
|
<p class="example">
|
|
$vjournal->deleteRequeststatus( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all REQUEST-STATUS properties.</p>
|
|
<p class="example">
|
|
while( $vjournal->deleteRequeststatus()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL REQUEST-STATUS</h5>
|
|
<p>Returns array : all REQUEST-STATUS, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllRequeststatus( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get REQUEST-STATUS</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getRequeststatus()</p>
|
|
<p class="comment">output = [
|
|
Vcalendar::STATCODE => statcode<sup>1</sup>,
|
|
Vcalendar::STATDESC => statdesc<sup>2</sup>,
|
|
Vcalendar::EXTDATA => extdata<sup>3</sup> // opt
|
|
]
|
|
</p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getRequeststatus( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output =
|
|
[
|
|
"value" =>
|
|
[
|
|
Vcalendar::STATDESC => statcode<sup>1</sup>,
|
|
Vcalendar::STATDESC => errtext<sup>2</sup>,
|
|
Vcalendar::EXTDATA => extdata<sup>3</sup> // opt
|
|
),
|
|
"params" => params<sup>4</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getRequeststatus( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo REQUEST-STATUS</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$requestStatus = $vtodo->getRequeststatus();
|
|
|
|
</p>
|
|
|
|
<h5>is REQUEST-STATUS set</h5>
|
|
<p>Return bool true if REQUEST-STATUS is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isRequeststatusSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isRequeststatusSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set REQUEST-STATUS</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setRequeststatus(
|
|
statcode<sup>1</sup>,
|
|
statdesc<sup>2</sup>
|
|
[,extdata<sup>3</sup>
|
|
[,params<sup>4</sup> [,propOrderNo]]]
|
|
)
|
|
</p>
|
|
<p class="comment">statcode<sup>1</sup> = Hierarchical, numeric return status code (1*DIGIT "." 1*DIGIT 1*DIGIT)
|
|
statdesc<sup>2</sup> = (string) Textual status description
|
|
extdata<sup>3</sup> = (string) Textual exception data.
|
|
For example, the offending property name and value
|
|
or complete property line.
|
|
params<sup>4</sup> = (array) ( Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"] *xparams )
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vfreebusy->setRequeststatus(
|
|
2.00,
|
|
"Invalid property value",
|
|
"DTSTART:96-Apr-31"
|
|
);
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RESOURCE-TYPE"></a><h3>3.2.44 RESOURCE-TYPE</h3>
|
|
<p class="quotes">RESOURCE-TYPE specifies the type of resource</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RESOURCE-TYPE specifies the type of participant
|
|
and may occur once in <a href="#VRESOURCE">VRESOURCE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RESOURCE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ROOM<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::PROJECTOR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REMOTE_CONFERENCE_AUDIO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::REMOTE_CONFERENCE_VIDEOSPEAKER<br>
|
|
are available.
|
|
</p>
|
|
<p>For methods and formatting, explore the <a href="#CLASS">CLASS</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RESOURCES"></a><h3>3.2.45 RESOURCES</h3>
|
|
<p class="quotes">
|
|
This property defines the equipment or resources anticipated for an activity specified by a
|
|
<strong>calendar</strong> entity and is OPTIONAL and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a> and <a href="#VTODO">VTODO</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RESOURCES may occur more than once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dd>
|
|
<br>
|
|
the <a href="#VCALENDAR">VCALENDAR</a> / <a href="#VEVENT">VEVENT</a> / <a href="#VTODO">VTODO</a> method
|
|
<i>vresourceNames2Resources()</i><br>
|
|
may be used to create new RESOURCES from
|
|
<a href="#VRESOURCE">VRESOURCE</a> (sub-)components
|
|
and the <a href="#NAME">NAME</a> property value
|
|
with X-parameters for <a href="#VRESOURCE">VRESOURCE</a> properties
|
|
<a href="#UID">UID</a> and <a href="#RESOURCE-TYPE">RESOURCE-TYPE</a>.<br>
|
|
Another option is to set RESOURCES and <a href="#VRESOURCE">VRESOURCE</a> in pairs.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for RESOURCES is TEXT.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) RESOURCES values.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RESOURCES<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create RESOURCES</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createResources()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createResources();
|
|
|
|
</p>
|
|
|
|
<h5>Delete RESOURCES</h5>
|
|
<p>Remove RESOURCES from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteResources()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) RESOURCES property.</p>
|
|
<p class="example">
|
|
$vevent->deleteResources();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete RESOURCES property no 2.</p>
|
|
<p class="example">
|
|
$vevent->deleteResources( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Delete all RESOURCES properties.<p>
|
|
<p class="example">
|
|
while( $vevent->deleteResources()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL RESOURCES</h5>
|
|
<p>Returns array : all RESOURCES, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllResources( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get RESOURCES</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getResources()</p>
|
|
<p class="comment">output = resources<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getResources( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => resources<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getResources( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo RESOURCES</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$resources = $vtodo->getResources();
|
|
|
|
</p>
|
|
|
|
<h5>is RESOURCES set</h5>
|
|
<p>Return bool true if RESOURCES is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isResourcesSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isResourcesSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set RESOURCES</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
In spite of the fact that RESOURCES may contain a (comma separated) list of values,
|
|
a strong recommendation is to split a RESOURCES "list" into multiple single RESOURCES entries.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setResources( resources [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">resources<sup>1</sup> = (string) textual resources or subtypes of the <strong>calendar</strong> component,
|
|
can be specified as a list of resources
|
|
separated by the COMMA character.
|
|
params<sup>2</sup> = (array) (
|
|
Vcalendar::ALTREP => (string) "<an alternate text representation, URI>",
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>",
|
|
*xparams )
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setResources( "COMPUTER PROJECTOR" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="RRULE"></a><h3>3.2.46 RRULE</h3>
|
|
<p class="quotes">
|
|
This property defines a rule or repeating pattern
|
|
for recurring <a href="#VEVENT">EVENTs</a>, <a href="#VTODO">TODOs</a>,
|
|
<a href="#VTIMEZONE">STANDARD</a> or <a href="#VTIMEZONE">DAYLIGHT</a> definitions
|
|
and is OPTIONAL and MAY occur more than once ([RFC2445]),
|
|
SHOULD NOT occur more than once ([RFC5545]). iCalcreator allows only one in component.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
RRULE may occur once in <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RRULE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::EXRULE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FREQ<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::UNTIL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::COUNT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::INTERVAL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYSECOND<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYMINUTE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYHOUR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYDAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYMONTHDAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYYEARDAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYWEEKNO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYMONTH<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BYSETPOS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::WKST<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SECONDLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::MINUTELY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::HOURLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DAILY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::WEEKLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::MONTHLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::YEARLY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DAY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SU<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::MO<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TU<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::WE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TH<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FR<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SA<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create RRULE</h5>
|
|
<p>If set, returns iCal formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createRrule()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createRrule();
|
|
|
|
</p>
|
|
<h5>Delete RRULE</h5>
|
|
<p>Remove RRULE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteRrule()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) RRULE property.</p>
|
|
<p class="example">
|
|
$vevent->deleteRrule();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete RRULE property no 2.</p>
|
|
<p class="example">
|
|
$vevent->deleteRrule( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Delete all RRULE properties.</p>
|
|
<p class="example">
|
|
while( $vevent->deleteRrule()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
<h5>Get RRULE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getRrule()</p>
|
|
<p class="comment">output = recur<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getRrule( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => recur<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$rrules = $vtodo->getRrule();
|
|
|
|
</p>
|
|
|
|
<h5>is RRULE set</h5>
|
|
<p>Return bool true if RRULE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isRruleSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isRruleSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set RRULE</h5>
|
|
<p>
|
|
Set property single value, "RECUR", multiple values not allowed.
|
|
</p>
|
|
<p class="quotes">
|
|
The "RECUR" property SHOULD NOT occur more than once in a component.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws
|
|
</p>
|
|
<ul>
|
|
<li>InvalidArgumentException on
|
|
<ul>
|
|
<li>empty value and config ALLOWEMPTY is set to false (default true)</li>
|
|
<li>basic recur rule errors (<a href="https://tools.ietf.org/html/rfc5545" title="RFC5545" target="_blank">RFC5545</a>)</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>Exception on
|
|
<ul>
|
|
<li>DateTime error</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setRrule( recur [, xparams [, propOrderNo ]] )</p>
|
|
<p>
|
|
See rules in detail in <a href="https://tools.ietf.org/html/rfc5545" title="RFC5545" target="_blank">RFC5545</a>
|
|
"Internet Calendaring and Scheduling Core Object Specification (iCalendar)".
|
|
</p>
|
|
<p class="comment">recur<sup>1</sup> = (array) (
|
|
Vcalendar::FREQ => freq,
|
|
// <span class="comment">either UNTIL or COUNT may appear in a "recur",
|
|
but UNTIL and COUNT MUST NOT occur in the same "recur"</span>
|
|
Vcalendar::UNTIL "=>" >enddate,
|
|
Vcalendar::COUNT "=>" 1*DIGIT,
|
|
// <span class="comment">the rest of these keywords are optional,
|
|
but MUST NOT occur more than once</span>
|
|
Vcalendar::INTERVAL "=>" 1*DIGIT,
|
|
Vcalendar::BYSECOND "=>" byseclist,
|
|
Vcalendar::BYMINUTE "=>" byminlist,
|
|
Vcalendar::BYHOUR "=>" byhrlist,
|
|
Vcalendar::BYDAY "=>" bywdaylist,
|
|
Vcalendar::BYMONTHDAY "=>" bymodaylist,
|
|
Vcalendar::BYYEARDAY "=>" byyrdaylist,
|
|
Vcalendar::BYWEEKNO "=>" bywknolist,
|
|
Vcalendar::BYMONTH "=>" bymolist,
|
|
Vcalendar::BYSETPOS "=>" bysplist,
|
|
Vcalendar::WKST "=>" weekday ]
|
|
x-name "=>" (string) text ]
|
|
)
|
|
freq =
|
|
Vcalendar::SECONDLY" /
|
|
Vcalendar::MINUTELY /
|
|
Vcalendar::HOURLY /
|
|
Vcalendar::DAILY /
|
|
Vcalendar::WEEKLY /
|
|
Vcalendar::MONTHLY /
|
|
Vcalendar::YEARLY
|
|
|
|
enddate = date // <span class="comment">a DATE value or a <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME value</span>
|
|
|
|
date = (object) DateTimeInterface instance, will be set to UTC if not UTC timezone
|
|
date = (string) date/datetime string<sup>*</sup>
|
|
|
|
|
|
byseclist = seconds
|
|
byseclist = (array) (seconds *(, seconds ))
|
|
seconds = 1DIGIT / 2DIGIT ;0 to 59
|
|
byminlist = minutes
|
|
byminlist = (array) ( minutes *(, minutes ))
|
|
minutes = 1DIGIT / 2DIGIT ;0 to 59
|
|
byhrlist = hour
|
|
byhrlist = (array) ( hour *(, hour ))
|
|
hour = 1DIGIT / 2DIGIT ;0 to 23
|
|
bywdaylist = weekdaynum
|
|
bywdaylist = (array) ( weekdaynum *("," weekdaynum ))
|
|
weekdaynum = (array) ( [([plus] ordwk / minus ordwk)], "DAY" => weekday )
|
|
plus = "+"
|
|
minus = "-"
|
|
ordwk = 1DIGIT / 2DIGIT ;1 to 53
|
|
// Vcalander::SU etc available
|
|
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
|
|
; Corresponding to
|
|
; SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
|
|
; FRIDAY and SATURDAY days of the week.
|
|
bymodaylist = monthdaynum
|
|
bymodaylist = (array) ( monthdaynum *(, monthdaynum ))
|
|
monthdaynum = ( [plus] ordmoday ) / ( minus ordmoday )
|
|
ordmoday = 1DIGIT / 2DIGIT ;1 to 31
|
|
byyrdaylist = yeardaynum
|
|
byyrdaylist = (array) ( yeardaynum *(, yeardaynum ))
|
|
yeardaynum = ( [plus] ordyrday ) / ( minus ordyrday )
|
|
ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366
|
|
bywknolist = weeknum
|
|
bywknolist = (array) ( weeknum *(, weeknum ))
|
|
weeknum = ( [plus] ordwk ) / ( minus ordwk )
|
|
bymolist = monthnum
|
|
bymolist = (array) ( monthnum *(, monthnum ))
|
|
monthnum = 1DIGIT / 2DIGIT ;1 to 12
|
|
bysplist = setposday
|
|
bysplist = (array) ( setposday *(, setposday ))
|
|
setposday = yeardaynum
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
try {
|
|
$vevent->setRrule( [
|
|
Vcalendar::FREQ => Vcalendar::MONTHLY,
|
|
Vcalendar::UNTIL => new DateTime( "20060831" ),
|
|
// DATE, if DATE-TIME, UTC timezone
|
|
Vcalendar::INTERVAL => 2,
|
|
Vcalendar::WKST => Vcalendar::SU,
|
|
Vcalendar::BYSECOND => 2,
|
|
Vcalendar::BYMINUTE => [ 2, -4, 6 ], // (*)
|
|
Vcalendar::BYHOUR => [ 2, 4, -6 ], // (*)
|
|
Vcalendar::BYMONTHDAY => -2, // (*)
|
|
Vcalendar::BYYEARDAY => 2, // (*)
|
|
Vcalendar::BYWEEKNO => [ 2, -4, 6 ], // (*)
|
|
Vcalendar::BYMONTH => 2, // (*)
|
|
Vcalendar::BYSETPOS => [ 2, -4, 6 [, // (*)
|
|
Vcalendar::BYDAY => [ //
|
|
[ -1, Vcalendar::DAY => Vcalendar::WE ], // last WE
|
|
[ 3, Vcalendar::DAY => Vcalendar::TH ], // third TH
|
|
[ 5, Vcalendar::DAY => Vcalendar::FR ], // fifth FR
|
|
[ Vcalendar::DAY => Vcalendar::MO ] // every MO
|
|
],
|
|
[ "x-key" => "xparamValue" ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
$vtodo->setRrule(
|
|
[
|
|
Vcalendar::FREQ => Vcalendar::WEEKLY,
|
|
Vcalendar::COUNT => 2,
|
|
Vcalendar::INTERVAL => 2,
|
|
Vcalendar::WKST => Vcalendar::SU,
|
|
Vcalendar::BYSECOND => [ -2, 4, 6 ], // (*)
|
|
Vcalendar::BYMINUTE => -2, // (*)
|
|
Vcalendar::BYHOUR => 2, // (*)
|
|
Vcalendar::BYMONTHDAY => [ 2, -4, 6 ], // (*)
|
|
Vcalendar::BYYEARDAY => [ -2, 4, 6 ], // (*)
|
|
Vcalendar::BYWEEKNO => -2, // (*)
|
|
Vcalendar::BYMONTH => [ 2, 4, -6 ], // (*)
|
|
Vcalendar::BYSETPOS => -2, // (*)
|
|
// Vcalendar::BYday => Vcalendar::WE // one day
|
|
// Vcalendar::BYday => [ Vcalendar::WE, Vcalendar::TH ], // days
|
|
Vcalendar::BYday => [ 5, Vcalendar::DAY => Vcalendar::WE ], // pos. day
|
|
],
|
|
[ "x-key" => "xparamValue" ]
|
|
);
|
|
|
|
// <span class="comment">(*) single value/array of values</span>
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
<a id="SEQUENCE"></a><h3>3.2.47 SEQUENCE</h3>
|
|
<p class="quotes">
|
|
This property defines the revision sequence number of the <strong>calendar</strong> component
|
|
within a sequence of revisions.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a> and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
SEQUENCE may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
SEQUENCE may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p class="quotes">
|
|
It is monotonically incremented by the <a href="#ORGANIZER">ORGANIZER's</a> CUA (Calendar
|
|
User Agent) each time the <a href="#ORGANIZER">ORGANIZER</a> makes a significant revision
|
|
to the <strong>calendar</strong> component.
|
|
<br><br>
|
|
When the <a href="#ORGANIZER">ORGANIZER</a> makes changes to one of the following
|
|
properties, the sequence number MUST be incremented: <a href="#DTSTART">DTSTART</a>,
|
|
<a href="#DTEND">DTEND</a>, <a href="#DUE">DUE</a>, <a href="#RDATE">RDATE</a>, <a href="#RRULE">RRULE</a>,
|
|
<a href="#EXDATE">EXDATE</a>, <a href="#EXRULE">EXRULE</a>, <a href="#STATUS">STATUS</a>. In addition,
|
|
changes made by the <a href="#ORGANIZER">ORGANIZER</a> to other properties can also force
|
|
the sequence number to be incremented. The <a href="#ORGANIZER">ORGANIZER</a> CUA MUST
|
|
increment the sequence number when ever it makes changes to
|
|
properties in the <strong>calendar</strong> component that the <a href="#ORGANIZER">ORGANIZER</a>
|
|
deems will jeopardize the validity of the participation status of the
|
|
<a href="#ATTENDEE">Attendees</a>. For example, changing the location
|
|
of a meeting from one locale to another distant locale could
|
|
effectively impact the participation status of the <a href="#ATTENDEE">Attendees</a>.
|
|
</p>
|
|
<p>The value type of SEQUENCE is INTEGER.</p>
|
|
<p>The calendar method <a href="#sort2">SORT</a> with argument <a href="#UID">UID</a> also use <a href="#RECURRENCE-ID">RECURRENCE-ID</a> / SEQUENCE as
|
|
sort parameters.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::SEQUENCE is available.
|
|
</p>
|
|
<h5>Create SEQUENCE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createSequence()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createSequence();
|
|
|
|
</p>
|
|
<h5>Delete SEQUENCE</h5>
|
|
<p>Remove SEQUENCE from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteSequence()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtodo->deleteSequence();
|
|
|
|
</p>
|
|
<h5>Get SEQUENCE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getSequence()</p>
|
|
<p class="comment">output = sequence<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getSequence( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => sequence<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$sequence = $vtodo->getSequence();
|
|
|
|
</p>
|
|
|
|
<h5>is SEQUENCE set</h5>
|
|
<p>Return bool true if SEQUENCE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isSequenceSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isSequenceSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set SEQUENCE</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and if value is not an integer.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setSequence( [, sequence [, xparams ]] )</p>
|
|
<p class="comment">sequence<sup>1</sup> = (int) Value type INTEGER
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$vevent->setSequence( 2 ); <span class="comment">// set sequence number to 2</span>
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
$vevent->setSequence();
|
|
<span class="comment">// force sequence number to be set to 0
|
|
// or, if sequence exists, incremented by 1</span>
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="SOURCE"></a><h3>3.2.48 SOURCE</h3>
|
|
<p class="quotes">SOURCE identifies a URI where calendar data can be refreshed from</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
SOURCE may occur once in <a href="#VCALENDAR">VCALENDAR</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is URI.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::SOURCE is available.
|
|
</p>
|
|
<h5>Create SOURCE</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::createSource()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createSource();
|
|
|
|
</p>
|
|
<h5>Delete SOURCE</h5>
|
|
<p>Remove URL from Vcalendar.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::deleteSource()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$calendar->deleteSource();
|
|
|
|
</p>
|
|
<h5>Get SOURCE</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">Vcalendar::getSource()</p>
|
|
<p class="comment">output = url<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">Vcalendar::getSource( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => source<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$url = $calendar->getSource();
|
|
|
|
</p>
|
|
|
|
<h5>is SOURCE set</h5>
|
|
<p>Return bool true if SOURCE is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isSourceSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vcalendar->isSourceSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set SOURCE</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
InvalidArgumentException on url error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Vcalendar::setSource( source [, xparams ] )</p>
|
|
<p class="comment">source<sup>1</sup> = (string) Value type URI
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
try {
|
|
$calendar->setSource( "https://www.icaldomain.net&q=1" );
|
|
}
|
|
catch( InvalidArgumentException $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="STATUS"></a><h3>3.2.49 STATUS</h3>
|
|
<p class="quotes">
|
|
This property defines the overall status or confirmation for the <strong>calendar</strong> component.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>
|
|
and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
STATUS may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) STATUS values.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STATUS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::COMPLETED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CANCELLED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::CONFIRMED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DRAFT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::F_NAL // note FINAL<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::IN_PROCESS<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::NEEDS_ACTION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TENTATIVE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create STATUS</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createStatus()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createStatus();
|
|
|
|
</p>
|
|
<h5>Delete STATUS</h5>
|
|
<p>Remove STATUS from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteStatus()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtodo->deleteStatus();
|
|
|
|
</p>
|
|
<h5>Get STATUS</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getStatus()</p>
|
|
<p class="comment">output = status<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getStatus( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => status<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$status = $vtodo->getStatus();
|
|
|
|
</p>
|
|
|
|
<h5>is STATUS set</h5>
|
|
<p>Return bool true if STATUS is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isStatusSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isStatusSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set STATUS</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on<br>
|
|
- empty value and config ALLOWEMPTY is set to false (default true),<br>
|
|
- invalid value (below).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setStatus( status [, xparams ] )</p>
|
|
<p class="comment"> // <span class="comment">Status values for a <a href="#VEVENT">VEVENT</a></span>
|
|
status<sup>1</sup> = Vcalendar::TENTATIVE // <span class="comment">Indicates event is tentative</span>
|
|
/ Vcalendar::CONFIRMED // <span class="comment">Indicates event is definite</span>
|
|
/ Vcalendar::CANCELLED // <span class="comment">Indicates event was cancelled</span>
|
|
// <span class="comment">Status values for <a href="#VTODO">VTODO</a></span>
|
|
status<sup>1</sup> = Vcalendar::NEEDS_ACTION // <span class="comment">Indicates to-do needs action</span>
|
|
/ Vcalendar::COMPLETED // <span class="comment">Indicates to-do completed</span>
|
|
/ Vcalendar::IN_PROCESS // <span class="comment">Indicates to-do in process of</span>
|
|
/ Vcalendar::CANCELLED // <span class="comment">Indicates to-do was cancelled</span>
|
|
// <span class="commsnt">Status values for <a href="#VJOURNAL">VJOURNAL</a></span>
|
|
status<sup>1</sup> = Vcalendar::DRAFT // <span class="comment">Indicates journal is draft</span>
|
|
/ Vcalendar::F_NAL; // <span class="comment">Indicates journal is final</span>
|
|
/ Vcalendar::CANCELLED // <span class="comment">Indicates journal is removed</span>
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setStatus( "COMPLETED" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="STRUCTURED-DATA"></a><h3>3.2.50 STRUCTURED-DATA</h3>
|
|
<p class="quotes">
|
|
STRUCTURED-DATA specifies ancillary data associated with the calendar component
|
|
</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
STRUCTURED-DATA is OPTIONAL and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>,
|
|
<a href="#PARTICIPANT">PARTICIPANT</a>,
|
|
<a href="#VLOCATION">VLOCATION</a> and
|
|
<a href="#VRESOURCE">VRESOURCE</a><br>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type is TEXT, BINARY, or URI.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STRUCTURED_DATA<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BASE64<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::BINARY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ENCODING<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FMTTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TEXT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::URI<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create STRUCTURED-DATA</h5>
|
|
<p>If set, returns [RFC9073] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createStructureddata()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createStructureddata();
|
|
|
|
</p>
|
|
|
|
<h5>Delete STRUCTURED-DATA</h5>
|
|
<p>Remove STRUCTURED-DATA from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteStructureddata()</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$vevent->deleteStructureddata();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
Delete STRUCTURED-DATA property no 2.
|
|
<p class="example">
|
|
$vevent->deleteStructureddata( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
Deleting all STRUCTURED-DATA properties.
|
|
<p class="example">
|
|
while( $vevent->deleteStructureddata()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL STRUCTURED-DATA</h5>
|
|
<p>Returns array : all STRUCTURED-DATA, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllStructureddata( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get STRUCTURED-DATA</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getStructureddata()</p>
|
|
<p class="comment">output = structureddataValue</p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getStructureddata( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value,
|
|
<p class="comment">output = [
|
|
"value" => structureddataValue,
|
|
"params" => params
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getStructureddata( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo ATTACH</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$structureddata = $vevent->getStructureddata();
|
|
|
|
</p>
|
|
|
|
<h5>is STRUCTURED-DATA set</h5>
|
|
<p>Return bool true if STRUCTURED-DATA is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isStructureddataSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isStructureddataSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set STRUCTURED-DATA</h5>
|
|
<p>
|
|
Set property value.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setStructureddata( structureddataValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">structureddataValue = (string) TEXT/ URI / inline BINARY encoded content
|
|
params = [ "VALUE" => "TEXT" ] /
|
|
[ "VALUE" => "BINARY", "ENCODING" => "BASE64" ] /
|
|
[ "VALUE" => "URI" ]
|
|
[, "FMTTYPE" => contentType ] // <span class="comment">opt. for URI, req. otherwise</span>
|
|
[, "SCHEMAE" => schema ] // <span class="comment">opt. for URI, req. otherwise</span>
|
|
*[, xparams ] )
|
|
contentType = (string) The parameter value MUST be the TEXT for either an IANA
|
|
registered content type or a non-standard content type.
|
|
schema = "uri"
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setStructureddata(
|
|
"https://dir.example.com/vcard/aviolinist.vcf",
|
|
[ Vcalendar::VALUE => Vcalendar::URI ]
|
|
);
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="STYLED-DESCRIPTION"></a><h3>3.2.51 STYLED-DESCRIPTION</h3>
|
|
<p class="quotes">
|
|
STYLED-DESCRIPTION provides for one or more rich-text
|
|
descriptions to replace that provided by the "DESCRIPTION"
|
|
property.
|
|
</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
STYLED-DESCRIPTION is OPTIONAL and MAY occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>,
|
|
<a href="#VJOURNAL">VJOURNAL</a>,
|
|
<a href="#VFREEBUSY">VFREEBUSY</a>,
|
|
<a href="#PARTICIPANT">PARTICIPANT</a> and
|
|
<a href="#VALARM">VALARM</a><br>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p> The value type can be set to TEXT or URI but no default.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::STYLED_DESCRIPTION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DERIVED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::FMTTYPE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANG<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TEXT<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::URI<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create STYLED-DESCRIPTION</h5>
|
|
<p>If set, returns [RFC9073] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createStyleddescription()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createStyleddescription();
|
|
|
|
</p>
|
|
|
|
<h5>Delete STYLED-DESCRIPTION</h5>
|
|
<p>Remove STYLED-DESCRIPTION from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteStyleddescription()</p>
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
$vevent->deleteStyleddescription();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
Delete STYLED-DESCRIPTION property no 2.
|
|
<p class="example">
|
|
$vevent->deleteStyleddescription( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
Deleting all STYLED-DESCRIPTION properties.
|
|
<p class="example">
|
|
while( $vevent->deleteStyleddescription()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get ALL STYLED-DESCRIPTION</h5>
|
|
<p>Returns array : all STYLED-DESCRIPTION, value/params OR only values</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getAllStyleddescription( [ valueOnly ] )</p>
|
|
<p class="comment">valueOnly = (bool) default false, value/params OR only values (true)
|
|
</p>
|
|
|
|
<h5>Get STYLED-DESCRIPTION</h5>
|
|
<p>If set, returns property value(-s), otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getStyleddescription()</p>
|
|
<p class="comment">output = styleddescriptionValue</p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getStyleddescription( propOrderNo/null , true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value,
|
|
<p class="comment">output = [
|
|
"value" => styleddescriptionValue,
|
|
"params" => params
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getStyleddescription( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo ATTACH</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$structureddata = $vevent->getStyleddescription();
|
|
|
|
</p>
|
|
|
|
<h5>is STYLED-DESCRIPTION set</h5>
|
|
<p>Return bool true if STYLED-DESCRIPTION is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isStyleddescriptionSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isStyleddescriptionSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set STYLED-DESCRIPTION</h5>
|
|
<p>
|
|
Set property value.
|
|
</p>
|
|
<p>
|
|
The method returns the class instance (static).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setStyleddescription( tyleddescriptionValue [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">styleddescriptionValue = (string) TEXT/ URI / inline BINARY encoded content
|
|
params = [ "VALUE" => "TEXT" ] /
|
|
[ "VALUE" => "URI" ]
|
|
[, "ALTREP" => altrep ] // <span class="comment">optional</span>
|
|
[, "LANG" => lang ] // <span class="comment">optional</span>
|
|
[, "FMTTYPE" => contentType ] // <span class="comment">optional</span>
|
|
[, "DERIVED" => derived ] // <span class="comment">optional</span>
|
|
*[, xparams ] )
|
|
altrep = (string) an alternate text representation, URI
|
|
lang = (string) as defined in [RFC5546]
|
|
contentType = (string) The parameter value MUST be the TEXT for either an IANA
|
|
registered content type or a non-standard content type.
|
|
derived = "true" / "false" default is false
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
</p>
|
|
<p class="label">Examples</p>
|
|
<p class="example">
|
|
$vevent->setStyleddescription(
|
|
"<html>...</html>",
|
|
[ Vcalendar::FMTTYPE => "text/html;" ]
|
|
);
|
|
|
|
</p>
|
|
<p class="example">
|
|
$vevent->setStyleddescription(
|
|
"https://example.org/desc001.html",
|
|
[ Vcalendar::VALUE => Vcalendar::URI ]
|
|
);
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="SUMMARY"></a><h3>3.2.52 SUMMARY</h3>
|
|
<p class="quotes">
|
|
This property defines a short ("one line") summary or subject for the <strong>calendar</strong> component.
|
|
(In "[RFC5545], Recommended Practices", up to 255 characters) (, analogous to a mail SUBJECT).
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a>
|
|
and <a href="#VJOURNAL">VJOURNAL</a> components.
|
|
The property is REQUIRED and MUST occur once in <a href="#VALARM">VALARM</a> (EMAIL) <strong>calendar</strong> component.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
SUMMARY may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
SUMMARY may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for SUMMARY is TEXT.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) SUMMARY values.</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::SUMMARY<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::ALTREP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create SUMMARY</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createSummary()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createSummary();
|
|
|
|
</p>
|
|
<h5>Delete SUMMARY</h5>
|
|
<p>Remove SUMMARY from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteSummary()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteSummar();
|
|
|
|
</p>
|
|
<h5>Get SUMMARY</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getSummary()</p>
|
|
<p class="comment">output = summary<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getSummary( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => summary<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$summary = $vtodo->getSummary();
|
|
|
|
</p>
|
|
|
|
<h5>is SUMMARY set</h5>
|
|
<p>Return bool true if SUMMARY is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isSummarySet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isSummarySet();
|
|
|
|
</p>
|
|
|
|
<h5>Set SUMMARY</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>Parameters will be ordered as prescribed in [RFC5545].</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setSummary( summary [, params ] )</p>
|
|
<p CLASS="comment">summary<sup>1</sup> = (string) Value type TEXT,
|
|
a short, one line summary about the activity or journal entry.
|
|
params<sup>2</sup> = array( Vcalendar::ALTREP => (string) "<an alternate text representation, URI>",
|
|
Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>",
|
|
*xparams
|
|
)
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setSummary( "This is a summary" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TRANSP"></a><h3>3.2.53 TRANSP</h3>
|
|
<p class="quotes">
|
|
This property defines whether an <a href="#VEVENT">EVENT</a> is transparent or not to busy time searches and is OPTIONAL and MUST NOT occur more than once.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TRANSP<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::OPAQUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TRANSPARENT<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create TRANSP</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createTransp()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTransp();
|
|
|
|
</p>
|
|
<h5>Delete TRANSP</h5>
|
|
<p>Remove TRANSP from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteTransp()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteTransp();
|
|
|
|
</p>
|
|
<h5>Get TRANSP</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getTransp( )</p>
|
|
<p class="comment">output = transp<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getTransp( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => transp<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$transp = $vtodo->getTransp();
|
|
|
|
</p>
|
|
|
|
<h5>is TRANSP set</h5>
|
|
<p>Return bool true if TRANSP is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTranspSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isTranspSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TRANSP</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setTransp( transp [, xparams ] )</p>
|
|
<p class="comment">transp<sup>1</sup> = Vcalendar::OPAQUE / Vcalendar::TRANSPARENT
|
|
xparams<sup>2</sup> = (array) *( (string) key => (string) value ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setTransp( "TRANSPARENT" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TRIGGER"></a><h3>3.2.54 TRIGGER</h3>
|
|
<p class="quotes">
|
|
This property specifies when an <a href="#VALARM">ALARM</a> will trigger and is REQUIRED and MUST NOT occur more than once.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9074" title="Download rfc9074" target="_blank">rfc9074</a>
|
|
"VALARM Extensions for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
Typically, when a <a href="#PROXIMITY">PROXIMITY</a> property is used, there is no need to
|
|
specify a time-based trigger using the <a href="#TRIGGER">TRIGGER</a> property. However,
|
|
since <a href="#TRIGGER">TRIGGER</a> is defined as a required property for a <a href="#VALARM">VALARM</a>
|
|
component, for backwards compatibility, it has to be present but
|
|
ignored. To indicate a <a href="#TRIGGER">TRIGGER</a> that is to be ignored, clients
|
|
SHOULD use a value a long time in the past. A value of
|
|
"19760401T005545Z" has been commonly used for this purpose.
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
The default value type is DURATION. The value type can be set to a DATE-TIME value type,
|
|
in which case the value MUST specify an <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME value.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TRIGGER<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::VALUE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DURATION<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::DATE_TIME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::RELATED<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::START<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::END<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create TRIGGER</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">valarm::createTrigger()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTrigger();
|
|
|
|
</p>
|
|
<h5>Delete TRIGGER</h5>
|
|
<p>Remove TRIGGER from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">valarm::deleteTrigger()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$valarm->deleteTrigger();
|
|
|
|
</p>
|
|
<h5>Get TRIGGER</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">valarm::getTrigger()</p>
|
|
<p class="comment">output = duration<sup>1</sup>/date<sup>3</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">valarm::getTrigger( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => duration<sup>1</sup>/date<sup>3</sup> ),
|
|
"params" => params<sup>4</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$trigger = $valarm->getTrigger();
|
|
|
|
</p>
|
|
|
|
<h5>is TRIGGER set</h5>
|
|
<p>Return bool true if TRIGGER is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTriggerSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $valarm->isTriggerSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TRIGGER</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and on DateTime/DateInterval error.
|
|
</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">valarm::setTrigger( duration<sup>1</sup> [, params<sup>4</sup> ] )</p>
|
|
<p class="label">Format 2</p>
|
|
<p class="format">valarm::setTrigger( duration<sup>2</sup> [, params<sup>4</sup> ] )</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">valarm::setTrigger( date<sup>3</sup> [, params<sup>4</sup> ] )</p>
|
|
<p class="comment">
|
|
duration<sup>1</sup> = (object) DateInterval class instance
|
|
duration<sup>1</sup> = (string) dur-value = (["+"]/"-")"P"(dur-date/dur-time/dur-week) like "P1DT2H3M4S"
|
|
dur-date = dur-day [dur-time]
|
|
dur-time = "T" (dur-hour / dur-minute / dur-second)
|
|
dur-week = 1*DIGIT "W"
|
|
dur-day = 1*DIGIT "D"
|
|
dur-hour = 1*DIGIT "H" [dur-minute]
|
|
dur-minute = 1*DIGIT "M" [dur-second]
|
|
dur-second = 1*DIGIT "S"
|
|
|
|
date<sup>3</sup> = (object) DateTimeInterface instance, will be set to UTC if not UTC timezone
|
|
date<sup>3</sup> = (string) datetime string<sup>*</sup>
|
|
|
|
params<sup>4</sup> = (array) ( [[ reltype [, trigRelparam ]] / datetimeparam ] *[, xparams ] )
|
|
reltyp = Vcalendar::RELATED => Vcalendar::START / Vcalendar::END
|
|
// default Vcalendar::START
|
|
trigRelparam = Vcalendar::VALUE => Vcalendar::DURATION // default Vcalendar::DURATION
|
|
datetimeparam = Vcalendar::VALUE => Vcalendar::DATE_TIME // <span class="comment">mandatory if DATE-TIME</span>
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
|
|
<br>
|
|
<sup>*</sup> please notice <a href="#date_restraints">date restraints</a>.
|
|
</p>
|
|
|
|
<p class="label">Example 1</p>
|
|
<p>A fix date duration</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger( new DateTime( '2007-06-05 02:02:03 UTC' ));
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 2</p>
|
|
<p>A duration, 1 hour 2 min 3 sec, before start (before default)</p>
|
|
<p class="example">
|
|
try {
|
|
$dateInterval = new DateInterval( "PT1H2M3S" );
|
|
$dateInterval->invert = 1;
|
|
$valarm->setTrigger( $dateInterval );
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 3</p>
|
|
<p>A duration, 1 week after end.</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger(
|
|
"P1W",
|
|
[ Vcalendar::RELATED => Vcalendar::END ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 4</p>
|
|
<p>A duration, 1 hour 2 min 3 sec, before start (before default)</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger( "-PT1H2M3S" );
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 5</p>
|
|
<p>A duration, 1 hour 2 min 3 sec, before start (before default).<br>Subject for removal in future versions.</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger(
|
|
null, null, null, null, 1, 2, 3
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 6</p>
|
|
<p>A duration, 1 hour 2 min 3 sec, before start (before default).<br>Subject for removal in future versions.</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger(
|
|
[ "hour"=> 1, "min"=> 2, "sec"=> 3 ]
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 7</p>
|
|
<p>A duration, 1 week before start (before default).<br>Subject for removal in future versions.</p>
|
|
<p class="example">
|
|
try {
|
|
$valarm->setTrigger(
|
|
null, null, null, 1
|
|
);
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZID"></a><h3>3.2.55 TZID</h3>
|
|
<p class="quotes">
|
|
This property specifies the text value that uniquely identifies the <a href="#VTIMEZONE">VTIMEZONE</a>
|
|
<strong>calendar</strong> component and is REQUIRED, but MUST NOT occur more than once.
|
|
</p>
|
|
<p>The value type for TZID is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZID is available.
|
|
</p>
|
|
<h5>Create TZID</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::createTzid()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTzid();
|
|
|
|
</p>
|
|
<h5>Delete TZID</h5>
|
|
<p>Remove TZID from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::deleteTzid()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtimezone->deleteTzid();
|
|
|
|
</p>
|
|
<h5>Get TZID</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">vtimezone::getTzid()</p>
|
|
<p class="comment">output = tzid<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">vtimezone::getTzid( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => tzid<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$tzid = $vtimezone->getTzid();
|
|
|
|
</p>
|
|
|
|
<h5>is TZID set</h5>
|
|
<p>Return bool true if TZID is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTzidSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vtimezone->isTzidSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TZID</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::setTzid( tzid [, xparams ] )</p>
|
|
<p class="comment">tzid<sup>1</sup> = (string) Value type TEXT
|
|
xparams<sup>2</sup> = (array)( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone()
|
|
->setTzid( "US-Eastern" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZID-ALIAS-OF"></a><h3>3.2.56 TZID-ALIAS-OF</h3>
|
|
<p class="quotes">
|
|
This property specifies a time zone identifier for which the main time zone identifier is an alias.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7808" title="Download rfc7808" target="_blank">rfc7808</a>
|
|
"Time Zone Data Distribution Service"
|
|
</dt>
|
|
<dd>
|
|
TZID-ALIAS-OF may occur zero or more times in <a href="#VTIMEZONE">VTIMEZONE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for TZID-ALIAS-OF is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZID-ALIAS-OF is available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#TZID">TZID</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZNAME"></a><h3>3.2.57 TZNAME</h3>
|
|
<p class="quotes">
|
|
This property specifies the customary designation for a <a href="#VTIMEZONE">STANDARD</a> or <a href="#VTIMEZONE">DAYLIGHT</a> description
|
|
and is OPTIONAL and MAY occur more than once.
|
|
</p>
|
|
<p>The value type for TZNAME is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constants <br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::TZNAME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::LANGUAGE<br>
|
|
are available.
|
|
</p>
|
|
<h5>Create TZNAME</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::createTzname()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTzname();
|
|
|
|
</p>
|
|
|
|
<h5>Delete TZNAME</h5>
|
|
<p>Remove TZNAME from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::deleteTzname()</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete (single/first) TZNAME property.</p>
|
|
<p class="example">
|
|
$vtimezonestd->deleteTzname();
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete TZNAME property no 2.</p>
|
|
<p class="example">
|
|
$vtimezonestd->deleteTzname( 2 );
|
|
|
|
</p>
|
|
<p class="label">Example 3</p>
|
|
<p>Deleting all TZNAME properties.</p>
|
|
<p class="example">
|
|
while( $vtimezonestd->deleteTzname()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
|
|
<h5>Get TZNAME</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">vtimezone::getTzname()</p>
|
|
<p class="comment">output = tzname<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">vtimezone::getTzname( propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
"value" => tzname<sup>1</sup>,
|
|
"params" => params<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">vtimezone::getTzname( propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo TZNAME</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$tzname = $timezonestandard->getTzname();
|
|
|
|
</p>
|
|
|
|
<h5>is TZNAME set</h5>
|
|
<p>Return bool true if TZNAME is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTznameSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $daylight->isTznameSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TZNAME</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
or invalid offset value;.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::setTzname( tzname [, params [, propOrderNo ]] )</p>
|
|
<p class="comment">tzname<sup>1</sup> = (string) Value type TEXT
|
|
params<sup>2</sup> = (array) ( Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>", *xparams )
|
|
xparams = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
propOrderNo = (int) order number // <span class="comment">1=1st, 2=2nd etc</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone()
|
|
->setTzid( "AKST" );
|
|
|
|
$standard = $vtimezone->newStandard()
|
|
->setTzname( "AKST" );
|
|
|
|
$daylight = $vtimezone->newDaylight()
|
|
->setTzname( "AKDT" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZOFFSETFROM"></a><h3>3.2.58 TZOFFSETFROM</h3>
|
|
<p class="quotes">
|
|
This property specifies the offset which is in use prior to this <a href="#VTIMEZONE">TIMEZONE</a> observance.
|
|
The property is REQUIRED, but MUST NOT occur more than once in <a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components.
|
|
</p>
|
|
<p>The value type is UTC-OFFSET, "+" / "-" time-hour (2*DIGIT) time-minute (2*DIGIT) [time-second (2*DIGIT)].</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZOFFSETFROM is available.
|
|
</p>
|
|
<h5>Create TZOFFSETFROM</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::createTzoffsetfrom()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTzoffsetfrom();
|
|
|
|
</p>
|
|
<h5>Delete TZOFFSETFROM</h5>
|
|
<p>Remove TZOFFSETFROM from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::deleteTzoffsetfrom()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtimezonestd->deleteTzoffsetfrom();
|
|
|
|
</p>
|
|
<h5>Get TZOFFSETFROM</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">vtimezone::getTzoffsetfrom()</p>
|
|
<p class="comment">output = tzoffsetfrom<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">vtimezone::getTzoffsetfrom( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => tzoffsetfrom<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$tzoffsetfrom = $tzstandard->getTzoffsetfrom();
|
|
|
|
</p>
|
|
|
|
<h5>is TZOFFSETFROM set</h5>
|
|
<p>Return bool true if TZOFFSETFROM is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTzoffsetfromSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $daylight->isTzoffsetfromSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TZOFFSETFROM</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and on invalid offset value.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::setTzoffsetfrom( tzoffsetfrom [, xparams ] )</p>
|
|
<p class="comment">tzoffsetfrom<sup>1</sup> = (int) (+/-)HHmm[ss] // <span class="comment">UTC offset</span>
|
|
xparams<sup>2</sup> = (array) ( *[ /string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtinezone()
|
|
->setTzid( "US-Eastern" )
|
|
->setLastmodified( "19870101" );
|
|
|
|
$standard = $vtimezone->newStandard()
|
|
->setTzname( "EST" )
|
|
->setTzoffsetfrom( "-0500" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZOFFSETTO"></a><h3>3.2.59 TZOFFSETTO</h3>
|
|
<p class="quotes">
|
|
This property specifies the offset which is in use in this <a href="#VTIMEZONE">TIMEZONE</a> observance.
|
|
The property is REQUIRED, but MUST NOT occur more than once in <a href="#VTIMEZONE">STANDARD</a> and <a href="#VTIMEZONE">DAYLIGHT</a> components.
|
|
</p>
|
|
<p>The value type is UTC-OFFSET, "+" / "-" time-hour (2*DIGIT) time-minute (2*DIGIT) [time-second (2*DIGIT)].</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZOFFSETTO is available.
|
|
</p>
|
|
<h5>Create TZOFFSETTO</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::createTzoffsetto()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTzoffsetto();
|
|
|
|
</p>
|
|
<h5>Delete TZOFFSETTO</h5>
|
|
<p>Remove TZOFFSETTO from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::deleteTzoffsetto()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$daylight->deleteTzoffsetto();
|
|
|
|
</p>
|
|
<h5>Get TZOFFSETTO</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">vtimezone::getTzoffsetto()</p>
|
|
<p class="comment">output = tzoffsetto<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">vtimezone::getTzoffsetto( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => tzoffsetto<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$tzoffsetto = $tztandard->getTzoffsetto();
|
|
|
|
</p>
|
|
|
|
<h5>is TZOFFSETTO set</h5>
|
|
<p>Return bool true if TZOFFSETTO is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTzoffsettoSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $daylight->isTzoffsettoSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TZOFFSETTO</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true)
|
|
and on invalid offset value.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::setTzoffsetto(tzoffsetto [, xparams ] )</p>
|
|
<p class="comment">tzoffsetto<sup>1</sup> = (int) (+/-)HHmm[ss] // <span class="comment">UTC offset</span>
|
|
xparams<sup>2</sup> = array( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone()
|
|
->setTzid( "US-Eastern" )
|
|
->setLastmodified( "19870101" );
|
|
|
|
$standard = $vtimezone->newStandard();
|
|
.. .
|
|
$daylight = $vtimezone->newDaylight()
|
|
->setTzoffsetto( "1345" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZUNTIL"></a><h3>3.2.60 TZUNTIL</h3>
|
|
<p class="quotes">
|
|
This property specifies an upper bound for the validity period of data
|
|
within a <a href="#VTIMEZONE">VTIMEZONE</a> component.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7808" title="Download rfc7808" target="_blank">rfc7808</a>
|
|
"Time Zone Data Distribution Service"
|
|
</dt>
|
|
<dd>
|
|
TZUNTIL may occur once in <a href="#VTIMEZONE">VTIMEZONE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
<p>The value type for TZUNTIL is <a href="#DATE_WITH_UTC_TIME">UTC</a> timezone DATE-TIME.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZUNTIL is available.
|
|
</p>
|
|
|
|
<p>For methods and formatting, explore the <a href="#CREATED">CREATED</a> property.</p>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="TZURL"></a><h3>3.2.61 TZURL</h3>
|
|
<p class="quotes">
|
|
The TZURL provides a means for a <a href="#VTIMEZONE">VTIMEZONE</a> component to point to
|
|
a network location that can be used to retrieve an up-to-date version of itself. The property
|
|
is OPTIONAL and MUST NOT occur more than once.
|
|
</p>
|
|
<p> The value type is URI.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::TZURL is available.
|
|
</p>
|
|
<h5>Create TZURL</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::createTzurl()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createTzurl();
|
|
|
|
</p>
|
|
<h5>Delete TZURL</h5>
|
|
<p>Remove TZURL from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::deleteTzurl()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vtimezone->deleteTzurl();
|
|
|
|
</p>
|
|
<h5>Get TZURL</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>.
|
|
<p class="label">Format 1</p>
|
|
<p class="format">vtimezone::getTzurl()</p>
|
|
<p class="comment">output = tzurl<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">vtimezone::getTzurl( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => tzurl<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$tzurl = $timezonestandard->getTzurl();
|
|
|
|
</p>
|
|
|
|
<h5>is TZURL set</h5>
|
|
<p>Return bool true if TZURL is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isTzurlSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vtimezone->isTzurlSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set TZURL</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on url error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">vtimezone::setTzurl(tzurl [, xparams ] )</p>
|
|
<p class="comment">tzurl<sup>1</sup> = (string) Value type URI
|
|
xparams<sup>2</sup> = array( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
|
|
$vtimezone = $vcalendar->newVtimezone()
|
|
->setTzid( "US-Eastern" );
|
|
try {
|
|
$vtimezone->setTzuntil( "19870101T000000" )
|
|
}
|
|
catch( Exception $e ) {
|
|
die( $e->getMessage();
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="UID"></a><h3>3.2.62 UID</h3>
|
|
<p class="quotes">
|
|
The persistent, globally <b>U</b>nique <b>ID</b>entifier for the <strong>calendar</strong> / component.
|
|
The property (is OPTIONAL and) MUST NOT occur more than once in
|
|
<a href="#VEVENT">VEVENT</a>, <a href="#VTODO">VTODO</a> and
|
|
<a href="#VJOURNAL">VJOURNAL</a>, <a href="#VFREEBUSY">VFREEBUSY</a>
|
|
components.<br>
|
|
However, UID is <u>automatically</u> generated in iCalcreator when creating component.
|
|
</p>
|
|
<p>Note, as described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
UID MUST occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a> and <a href="#AVAILABLE">AVAILABLE</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
UID (may) occur once in <a href="#VCALENDAR">VCALENDAR</a> and may NOT be supported by all calendaring software.
|
|
Calendar UID is <u>automatically</u> generated at instance creation.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
UID may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>,
|
|
<a href="#VLOCATION">VLOCATION</a> and <a href="#VRESOURCE">VRESOURCE</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
|
|
</dl>
|
|
<p>
|
|
UID is (auto set to) a hex-encoded random Universally Unique Identifier (UUID) value
|
|
as defined in Sections 4.4 and 4.5 of
|
|
<a href="https://tools.ietf.org/html/rfc4122" title="Download rfc4122" target="_blank">rfc4122</a>.
|
|
Note, NO deleteUid() method, use setUid() to recreate.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
UID:5FC53010-1267-4F8E-BC28-1D7AE55A7C99</p>
|
|
<p>
|
|
UID may be required when importing iCal formatted information into some <strong>calendar</strong> software (MS etc.),
|
|
as well as (<strong>calendar</strong>) properties <a href="#X-PROPERTY">x-properties</a> "X-WR-CALNAME",
|
|
"X-WR-CALDESC" and "X-WR-TIMEZONE",
|
|
<a href="#METHOD">METHOD</a> (value PUBLISH etc.)
|
|
and the (also automatically created) <a href="#DTSTAMP">DTSTAMP</a> property.
|
|
</p>
|
|
<p>The value type for UID is TEXT.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::UID is available.
|
|
</p>
|
|
<h5>Create UID</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createUid()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createUid();
|
|
|
|
</p>
|
|
|
|
<h5>Delete UID</h5>
|
|
<p>
|
|
Use component::setUid() to recreate.
|
|
</p>
|
|
|
|
<h5>Get UID</h5>
|
|
<p>If set, returns property, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getUid()</p>
|
|
<p class="comment">output = uid<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getUid( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => uid<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$uid = $vevent->getUid();
|
|
|
|
</p>
|
|
|
|
<h5>is UID set</h5>
|
|
<p>Return bool true.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isUidSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isUidSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set UID</h5>
|
|
<p>Insert property value, overrides any previously set or auto-created UID.</p>
|
|
<p>
|
|
Do <b>NOT</b> use an integer UID or only a component name as UID (ex. "vevent"),
|
|
this may cause malfunction in ex. Vcalendar method <a href="#setComponent">setComponent</a> with index or UID argument.
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty (non-zero) value.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setUid( uid [, xparams ] )</p>
|
|
<p class="comment">uid<sup>1</sup> = (string) Value type TEXT
|
|
xparams<sup>2</sup> = array( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setUid( "20070803T194810CEST-0123U3PXiX@kigkonsult.se" );
|
|
|
|
</p>
|
|
<p>
|
|
BUT, due to poorly created iCal formatted information, a numeric UID is accepted in the setUid() and
|
|
<a href="#parse_merge">parse()</a> methods.
|
|
Do check for component digit UIDs and remove it (will force a (auto) UID recreation) or (re-)set it manually.
|
|
</p>
|
|
<p class="example">
|
|
if( ctype_digit( $vevent->getUid())) {
|
|
$vevent->deleteUid();
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="URL"></a><h3>3.2.63 URL</h3>
|
|
<p class="quotes">
|
|
This property defines a Uniform Resource Locator (URL) associated with the <strong>iCalendar</strong> object.
|
|
The property is OPTIONAL and MUST NOT occur more than once in <a href="#VEVENT">VEVENT</a>,
|
|
<a href="#VTODO">VTODO</a>, <a href="#VJOURNAL">VJOURNAL</a> and <a href="#VFREEBUSY">VFREEBUSY</a> components.
|
|
</p>
|
|
<p>As described in</p>
|
|
<dl>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc5870" title="Download rfc5870" target="_blank">rfc5870</a>
|
|
"A Uniform Resource Identifier for Geographic Locations (geo URI)",
|
|
</dt>
|
|
<dd>
|
|
URL now accepts a "geo" URI value (ex. "geo:40.443,-79.945;u=10") but with no validation
|
|
</dd>
|
|
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7953" title="Download rfc7953" target="_blank">rfc7953</a>
|
|
"New Properties for iCalendar"
|
|
</dt>
|
|
<dd>
|
|
URL may occur once in <a href="#VAVAILABILITY">VAVAILABILITY</a>,
|
|
may NOT be supported by all calendaring software.
|
|
</dd>
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc7986" title="Download rfc7986" target="_blank">rfc7986</a>
|
|
"iCalendar Property Extensions"
|
|
</dt>
|
|
<dd>
|
|
URL may occur once in <a href="#VCALENDAR">VCALENDAR</a> and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
|
|
<dt>
|
|
<a href="https://tools.ietf.org/html/rfc9073" title="Download rfc9073" target="_blank">rfc9073</a>
|
|
"Event Publishing Extensions to iCalendar"
|
|
</dt>
|
|
<dd>
|
|
URL may occur once in <a href="#PARTICIPANT">PARTICIPANT</a>
|
|
and may NOT be supported by all calendaring software.
|
|
</dd>
|
|
</dl>
|
|
|
|
<p> The value type is URI.</p>
|
|
<p>You can <a href="#sort2">SORT</a> <strong>calendar</strong> (components) on (asc) URL values.</p>
|
|
<p>
|
|
To ease up usage, constant Kigkonsult\Icalcreator\Vcalendar::URL is available.
|
|
</p>
|
|
<h5>Create URL</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::createUrl()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createUrl();
|
|
|
|
</p>
|
|
<h5>Delete URL</h5>
|
|
<p>Remove URL from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteUrl()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->deleteUrl();
|
|
|
|
</p>
|
|
<h5>Get URL</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getUrl()</p>
|
|
<p class="comment">output = url<sup>1</sup></p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">calendarComponent::getUrl( true )</p>
|
|
<p class="comment">output = [
|
|
"value" => url<sup>1</sup>,
|
|
"params" => xparams<sup>2</sup>
|
|
]
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$url = $vevent->getUrl();
|
|
|
|
</p>
|
|
|
|
<h5>is URL set</h5>
|
|
<p>Return bool true if URL is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isUrlSet()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isUrlSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set URL</h5>
|
|
<p>Set property value.</p>
|
|
<p>
|
|
The non-rfc (opt urlencoded) value prefix/suffix "<>" (and parameter valuetype) is supported.
|
|
</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true),
|
|
InvalidArgumentException on url error.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setUrl( url [, xparams ] )</p>
|
|
<p class="comment">url<sup>1</sup> = (string) Value type URI
|
|
xparams<sup>2</sup> = (array) ( *[ (string) key => (string) value ] ) // <span class="comment">key prefix "X-"</span>
|
|
</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
try {
|
|
$vtodo->setUrl( "https://www.icaldomain.net" );
|
|
}
|
|
catch( InvalidArgumentException $e ) {
|
|
die( $e->getMessage());
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="X-PROPERTY"></a><h3>3.2.64 X-PROPERTY</h3>
|
|
<p class="quotes">
|
|
A <a href="#VCALENDAR">VCALENDAR</a>/component, non-standard property with a TEXT value
|
|
and a name with an "<b>X-</b>" prefix.
|
|
An x-property, with an unique name, can occur only once but the number of x-properties are unlimited.
|
|
</p>
|
|
<p>
|
|
In <a href="#VCALENDAR">VCALENDAR</a>, the X-properties "X-WR-CALNAME", "X-WR-CALDESC" and "X-WR-TIMEZONE"
|
|
may be required when importing iCal formatted information
|
|
into some calendaring software (MS etc.), as well as <a href="#METHOD">METHOD</a> property (value PUBLISH etc.)
|
|
and the (automatically created) <a href="#DTSTAMP">DTSTAMP</a> and <a href="#UID">UID</a> properties.
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_CALNAME<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_CALDESC<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_RELCALID<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_TIMEZONE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_LIC_LOCATION<br>
|
|
are available.
|
|
</p>
|
|
<p>The value type is TEXT.</p>
|
|
<p>Component, below, stands for <a href="#VCALENDAR">VCALENDAR</a> or any calendarComponent.</p>
|
|
<p>
|
|
Note <a href="#propValueParam">Pc</a>::isXprefixed() / setXPrefix() / unsetXPrefix()
|
|
(last) key utility (static) methods.
|
|
</p>
|
|
|
|
|
|
<h5>Create X-PROPERTY</h5>
|
|
<p>If set, returns [RFC5545] formatted string, otherwise empty string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Component::createXprop()</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$str = $component->createxProp();
|
|
|
|
</p>
|
|
<h5>Delete X-PROPERTY</h5>
|
|
<p>Remove X-PROPERTY from component.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Component::deleteXprop( "<X-PROPERTY>" )</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Deleting x-property named "X-PROPERTY".</p>
|
|
<p class="example">
|
|
$vevent->deleteXprop( "X-PROPERTY" );
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Deleting all x-properties.</p>
|
|
<p class="example">
|
|
while( $vevent->deleteXprop()) {
|
|
continue;
|
|
}
|
|
|
|
</p>
|
|
<h5>Get X-property</h5>
|
|
<p>If set, returns property value, otherwise bool false.</p>
|
|
<p class="label">Format 1</p>
|
|
<p>
|
|
Get specific x-propery value.
|
|
</p>
|
|
<p class="format">Component::getXprop( "<X-PROPERTY-NANE>" )</p>
|
|
<p class="comment">output = [
|
|
propertyName<sup>1</sup>,
|
|
value<sup>2</sup> )
|
|
</p>
|
|
<p class="label">Format 2</p>
|
|
<p>
|
|
Get (next) x-property value.
|
|
</p>
|
|
<p class="format">Component::getXprop()</p>
|
|
<p class="comment">output = array( propertyName<sup>1</sup>
|
|
, value<sup>2</sup> )</p>
|
|
<p class="label">Format 3</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">Component::getXprop( null, propOrderNo/null, true )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">output = [
|
|
propertyName<sup>1</sup>,
|
|
[
|
|
"value" => value<sup>2</sup> ),
|
|
"params" => params<sup>3</sup>
|
|
]
|
|
]
|
|
</p>
|
|
<p class="label">Format 4</p>
|
|
<p class="format">Component::getXprop( null, propOrderNo )</p>
|
|
<p class="comment">propOrderNo = (int) specific property value</p>
|
|
<p class="comment">Get propOrderNo X-property</p>
|
|
|
|
<p class="label">Example 1</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
if( $vcalendar->isXpropSet( Vcalendar::X_WR_TIMEZONE )) {
|
|
$d = $vcalendar->getXprop( Vcalendar::X_WR_TIMEZONE );
|
|
echo $d[1];
|
|
<span class="comment">// $d = array( "X-WR-TIMEZONE", value<sup>2</sup> )</span>
|
|
} // end if
|
|
|
|
</p>
|
|
|
|
<p class="label">Example 2</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
while( $xprop = $vcalendar->getXprop )) {
|
|
<span class="comment">// $xprop = [ propertyName<sup>1</sup>, value<sup>2</sup> ]</span>
|
|
.. .
|
|
} // end while
|
|
|
|
</p>
|
|
|
|
|
|
<p class="label">Example 3</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
if( $xprop = $vcalendar->getXprop( "X-ABC-MMSUBJ" )) {
|
|
<span class="comment">// $xprop = [ "X-ABC-MMSUBJ", value<sup>2</sup> ]</span>
|
|
.. .
|
|
} // end if
|
|
</p>
|
|
|
|
<p class="label">Example 4</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
while( $xprop = $vcalendar->getXprop( null, null, true )) {
|
|
/*
|
|
<span class="comment"> $xprop = [
|
|
propertyName<sup>1</sup>,
|
|
[
|
|
"value" => value<sup>2</sup>,
|
|
"params" => params<sup>3</sup>
|
|
]
|
|
]</span>
|
|
*/
|
|
} // end while
|
|
|
|
</p>
|
|
|
|
<h5>Get all X-properties</h5>
|
|
<p>Returns array</p>
|
|
|
|
<p class="label">Format 1</p>
|
|
<p class="format">Component::getAllXprop()</p>
|
|
<p class="comment">output = [
|
|
*[
|
|
propertyName<sup>1</sup>,
|
|
value<sup>2</sup> )
|
|
]
|
|
]
|
|
</p>
|
|
<p class="label">Format 2</p>
|
|
<p>Note details about <a href="#propValueParam">property value/params</a>.</p>
|
|
<p class="format">Component::getAllXprop( true )</p>
|
|
<p class="comment">output = [
|
|
*[
|
|
propertyName<sup>1</sup>,
|
|
[
|
|
"value" => value<sup>2</sup>,
|
|
"params" => params<sup>3</sup>
|
|
]
|
|
]
|
|
]
|
|
</p>
|
|
|
|
<h5>is X-property set</h5>
|
|
<p>Return bool true if X-property (key) is set (i.e. non-empty).</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::isXpropSet( [key] )</p>
|
|
<p class="comment">key = (string) X-property name</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$isPropSet = $vevent->isXpropSet();
|
|
|
|
</p>
|
|
|
|
<h5>Set X-property</h5>
|
|
<p>Insert property name and value. If an x-prop with the same name already exists, it will be replaced.</p>
|
|
<p>
|
|
The method throws InvalidArgumentException on empty value and config ALLOWEMPTY is set to false (default true).
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Component::setXprop( propertyName, propertyData [, params ] )</p>
|
|
<p class="comment">propertyName<sup>1</sup> = (string) Any property name with a "X-" prefix
|
|
value<sup>2</sup> = (string) Value type TEXT
|
|
params<sup>3</sup> = (array) ( [Vcalendar::LANGUAGE => (string) "lang<sup>*</sup>"] *[, xparams] )
|
|
xparam = (string) key => (string) value // <span class="comment">key prefix "X-"</span>
|
|
lang<sup>*</sup> = as defined in [RFC5546]</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$component->setXprop( "X-ABC-MMSUBJ", "https://load.noise.org/mysubj.wav" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Calendar_component_object_property_function_list">[up]</a>
|
|
|
|
|
|
<a id="iCalcreator_component_configuration_methods"></a><h2>3.3 iCalcreator Component configuration methods</h2>
|
|
|
|
<a id="Language_PROP"></a><h3>3.3.1 Language</h3>
|
|
<p class="quotes">Language for specific <strong>calendar</strong> component.</p>
|
|
<p>
|
|
Language set at component level can be overridden by specific component property parameter.<br>
|
|
A successful "setConfig" returns bool true.
|
|
</p>
|
|
<p>
|
|
There is a convenient config key constant available: Vcalendar::LANGUAGE.
|
|
</p>
|
|
<h5>Get language</h5>
|
|
Language for <strong>calendar</strong> (only if language is set at component level).
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::getConfig( "language" )</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
|
|
$lang = $vevent->getConfig( Vcalendar::LANGUAGE );
|
|
|
|
</p>
|
|
<h5>Set LANGUAGE</h5>
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::setConfig( "language", lang )</p>
|
|
<p class="comment">lang = (string) language</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
$vevent->setConfig( Vcalendar::LANGUAGE, "en" );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_component_configuration_methods">[up]</a>
|
|
|
|
|
|
<a id="iCalcreator_misc_methods"></a><h2>3.4 iCalcreator misc. methods</h2>
|
|
<p>Calendar component subcomponent functions.</p>
|
|
|
|
<a id="deleteComponent_PROP"></a><h4>3.4.1 deleteComponent</h4>
|
|
Remove subcomponent from component.
|
|
<p class="label">Format</p>
|
|
<p class="format">calendarComponent::deleteComponent( orderNumber )</p>
|
|
<p class="comment">orderNumber = (int) component order Number</p>
|
|
<p class="comment">Remove component with order number (1st=1, 2nd=2).</p>
|
|
<p class="format">calendarComponent::deleteComponent( componentType [, componentSuborderNumber])</p>
|
|
<p class="comment">componentType = (string) component type
|
|
componentSuborderNumber = (int) component suborder number</p>
|
|
<p class="comment">Remove component with component type (ex. "vevent")
|
|
and order 1 alt. suborder number.</p>
|
|
<p class="format">calendarComponent::deleteComponent( <a href="#UID">UID</a> )</p>
|
|
<p class="comment">Remove component with <a href="#UID">UID</a>.
|
|
N.B <a href="#UID">UID</a> is NOT set for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">timezone</a> components.</p>
|
|
<p class="label">Example 1</p>
|
|
<p>Delete first subcomponent.</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$comp1 = $vcalendar->getComponent();
|
|
$comp1->deleteComponent( 1 );
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
<p>Delete all subcomponents.</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se", ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$comp1 = $vcalendar->getComponent();
|
|
while( $comp1->deleteComponent( Vcalendar::VALARM ) {
|
|
continue;
|
|
}
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
|
|
|
|
<a id="getComponent_PROP"></a><h4>3.4.2 getComponent</h4>
|
|
Get subComponent from component.
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::getComponent()</p>
|
|
<p class="comment">Get next component until end-of-components.</p>
|
|
<p class="label">Format 2</p>
|
|
<p class="format">calendarComponent::getComponent( int orderNumber )</p>
|
|
<p class="comment">orderNumber = (int) component order number</p>
|
|
<p class="comment">Get component with order number (1st=1, 2nd=2).</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::getComponent( string componentType [, int componentSuborderNumber])</p>
|
|
<p class="comment">componentType = (string) component type
|
|
componentSuborderNumber = (int) component suborder number</p>
|
|
<p class="comment">Get (next) component with component type (until end-of-components)
|
|
alt. component with component type and suborder number (1st=1, 2nd=2..).</p>
|
|
<p class="label">Format 4</p>
|
|
<p class="format">calendarComponent::getComponent( <a href="#UID">UID</a> )</p>
|
|
<p class="comment">Get component with <a href="#UID">UID</a>.
|
|
N.B <a href="#UID">UID</a> is NOT set for <a href="#VALARM">ALARM</a> / <a href="#VTIMEZONE">timezone</a> components.</p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
$comp1 = $vcalendar->getComponent());
|
|
while( $subComp = $comp1->getComponent()) {
|
|
.. .
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
|
|
|
|
<a id="getComponents_PROP"></a><h4>3.4.3 getComponents</h4>
|
|
<p>Return (array) subComponents from component.</p>
|
|
<p class="label">format</p>
|
|
<p class="format">calendarComponent::getComponents( [ compType ] )</p>
|
|
<p class="comment">compType : (string) component type
|
|
|
|
<p class="label">Example</p>
|
|
<p>Return all Valarms</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$vcalendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$iCalContent = file_get_contents( "calendar.ics" );
|
|
$vcalendar->parse( $iCalContent );
|
|
foreach( $vcalendar->getComponents( Vcalendar::VEVENT ) as $component ) {
|
|
foreach( $component->getComponents( Vcalendar::VALARM ) as $subComponent ) {
|
|
.. .
|
|
}
|
|
.. .
|
|
}
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
|
|
|
|
<a id="setComponent_PROP"></a><h4>3.4.4 setComponent</h4>
|
|
Add <strong>calendar</strong> component to the Vcalendar instance or replace/update component in the Vcalendar instance.
|
|
<p class="label">Format 1</p>
|
|
<p class="format">calendarComponent::setComponent( component )
|
|
addSubComponent( component ) // <span class="comment">alias</span></p>
|
|
<p class="comment">Insert last in component chain.</p>
|
|
<p class="label">Format 2</p>
|
|
<p class="format">calendarComponent::setComponent( component, int orderNumber )</p>
|
|
<p class="comment">orderNumber = (int) component order number</p>
|
|
<p class="comment">Replace component with order number(1st=1, 2nd=2).
|
|
If orderNumber is not found, component is inserted last in chain.</p>
|
|
<p class="label">Format 3</p>
|
|
<p class="format">calendarComponent::setComponent( component, componentType [,componentSuborderNumber])</p>
|
|
<p class="comment">componentType = (string) component type
|
|
componentSuborderNumber = (int) component suborder number</p>
|
|
<p class="comment">Replace component with component type and component order number.
|
|
if orderNumber is not found, component is inserted last in chain. </p>
|
|
<p class="label">Example</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Vevent;
|
|
use Kigkonsult\Icalcreator\Valarm;
|
|
|
|
$config = [
|
|
Vcalendar::UNIQUE_ID => "kigkonsult.se",
|
|
];
|
|
$vcalendar = new Vcalendar( $config ); // <span class="comment">initiate new CALENDAR</span>
|
|
|
|
$vevent = new Vevent( $config );
|
|
// <span class="comment">add some <a class="ref" href="#VEVENT">EVENT</a> properties</span>
|
|
$vevent->setDtstart( new DateTime( "2006-12-24 19:30:00" );
|
|
$vevent->set...( ...
|
|
...
|
|
$valarm = new Valarm( $config );
|
|
$valarm->setTrigger( ...
|
|
|
|
$vevent->setComponent( $valarm );
|
|
$vcalendar->setComponent( $vevent );
|
|
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
|
|
<a id="vtimezone_populate"></a><h4>3.4.5 Vtimezone populate</h4>
|
|
<p>
|
|
The Util/VtimezonePopulateFactory::process (static) method,
|
|
applied on a Vcalendar instance,
|
|
return the Vcalendar instance with <a href="#VTIMEZONE">Vtimezone(s)</a>,
|
|
<a href="#VTIMEZONE">Standard</a> and <a href="#VTIMEZONE">Daylight</a> components,
|
|
using <em>PHP</em> DateTimeZone class and time zone transition (UTC) timestamps.
|
|
If <a href="#VTIMEZONE">Vtimezone(s)</a> exists in calendar, it is replaced.
|
|
</p>
|
|
<p>
|
|
Recommendation is to call the method <b>after</b> editing components
|
|
using arg timezone(s)
|
|
(and without (period) from/to arguments).
|
|
</p>
|
|
<p>
|
|
To ease up usage, constants<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_WR_TIMEZONE<br>
|
|
- Kigkonsult\Icalcreator\Vcalendar::X_LIC_LOCATION<br>
|
|
are available.
|
|
</p>
|
|
<p>
|
|
Throws Exception on invalid (<em>PHP</em>) timezone.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Util/VtimezonePopulateFactory::process::populate( calendar, [ timezone [, xprops, [, from [, to ]]]] )</p>
|
|
<p class="comment">calendar = (object) Vcalendar instance
|
|
timezone = (string|array) valid timezone(s), acceptable by <em>PHP</em> DateTimeZone<sup>*</sup>
|
|
xprops = (array) ( *[ x-propName => value ] ), timezone non-standard properties
|
|
from = DateTimeInterface | (int) timestamp, period start date<sup>**</sup>
|
|
to = DateTimeInterface | (int) timestamp, period end date<sup>**</sup>
|
|
|
|
<sup>*</sup> If no argument timezone, the argument xProps is searched for "X-WR-TIMEZONE" and "X-LIC-LOCATION" keys.
|
|
If not found then calendar are searched for the X-properties.
|
|
If still none found, "UTC" is used.
|
|
<sup>**</sup> If empty "from" and "to" arguments, the calendar components "<a href="#DTSTART">DTSTART</a>" values
|
|
are used to get the lowest (modified, minus 12 month) and
|
|
highest (modified, plus 18 month) dates.
|
|
</p>
|
|
<p class="label">Example</p>
|
|
Using the Util/VtimezonePopulateFactory::process (static) method.
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
use Kigkonsult\Icalcreator\Util\VtimezonePopulateFactory;
|
|
|
|
$calendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$timezone = 'Europe/Stockholm';
|
|
.. .
|
|
// <span class="comment">insert components or parse an iCal string</span>
|
|
.. .
|
|
|
|
$calendar = VtimezonePopulateFactory::process( $calendar, $timezone );
|
|
|
|
</p>
|
|
<p class="label">Example 2</p>
|
|
Using the shortcut The Vcalendar::<a href="#valendarVtimezonePopulate">vtimezonePopulate</a>() method.
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Vcalendar;
|
|
|
|
$calendar = new Vcalendar( [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ] );
|
|
$timezone = 'Europe/Stockholm';
|
|
.. .
|
|
// <span class="comment">insert components or parse an iCal string</span>
|
|
.. .
|
|
|
|
$calendar->VtimezonePopulate( $timezone );
|
|
|
|
</p>
|
|
<p>
|
|
Output example (when using Vcalendar createCalendar or returnCalendar methods):
|
|
</p>
|
|
<p class="example">
|
|
BEGIN:VTIMEZONE
|
|
TZID:Europe/Stockholm
|
|
X-LIC-LOCATION:Europe/Stockholm
|
|
BEGIN:STANDARD
|
|
DTSTART:20111030T003000
|
|
TZOFFSETFROM:+0200
|
|
TZOFFSETTO:+0100
|
|
TZNAME:CET
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20110327T002000
|
|
TZOFFSETFROM:+0100
|
|
TZOFFSETTO:+0200
|
|
TZNAME:CEST
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
</p>
|
|
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
|
|
|
|
|
|
<a id="msTimezone2PHPtz"></a><h4>3.4.6 Review timezones, opt alter to PHP timezone</h4>
|
|
<p>
|
|
RegulateTimezoneFactory (+RegulateTimezoneFactoryTest) is deprecated due to 2.41.60, GitHub#103 (non-PHP timezones).
|
|
</p>
|
|
<p>
|
|
The Vcalendar::<a href="#parse_merge">parse</a> or component::<a href="#componentParse">parse</a>
|
|
will throw exception when the input data contains PHP unknown timezones,
|
|
ex MS listed at https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones.
|
|
</p>
|
|
<p>
|
|
To support other (MS) timezones mapping to PHP timezones (ie timezones with the same or nearby UTC offset),
|
|
the RegulateTimezoneFactory::process method can be used before parse.
|
|
The factory review the <a href="#VTIMEZONE">Vtimezone</a> property <a href="#TZID">TZID</a>
|
|
and component date properties
|
|
<a href="#DTSTART">DTSTART</a>,
|
|
<a href="#DTEND">DTEND</a>,
|
|
<a href="#DUE">DUE</a>,
|
|
<a href="#RECURRENCE-ID">RECURRENCE-ID</a>,
|
|
<a href="#EXDATE">EXDATE</a> and
|
|
<a href="#RDATE">RDATE</a>
|
|
and parameter <a href="#tzidparam">"TZID"</a>.
|
|
</p>
|
|
<p>
|
|
The method throws Exception when unknown timezone not can be mapped.
|
|
</p>
|
|
<p>Return rfc5545 formatted calendar string.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">RegulateTimezoneFactory::process( iCalData )</p>
|
|
<p class="comment">iCalData = string|array $iCal strict rfc5545 formatted calendar</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory;
|
|
|
|
$iCalStringToParse = RegulateTimezoneFactory::process( $iCalInput );
|
|
|
|
</p>
|
|
<p>
|
|
Any unknown timezone (ex MS "Customized Time Zone"),
|
|
if used in VTIMEZONE, will map to a PHP timezone (using TZOFFZETTO values)
|
|
with nearby offsets.
|
|
</p>
|
|
<p>
|
|
To specify a "direct" map for a PHP unknown timezone, use (in static style format)
|
|
</p>
|
|
<p class="format">RegulateTimezoneFactory::process( icalInput, [ *( <otherTimezone> => <phpTimezone> ) ] )</p>
|
|
<p>
|
|
or (as object oriented style example)
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory;
|
|
|
|
$iCalStringToParse =
|
|
RegulateTimezoneFactory::factory( $iCalInput )
|
|
->addOtherTzPhpRelation( $otherTimezone, $phpTimezone )
|
|
->processCalendar()
|
|
->getOutputiCal();
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#iCalcreator_misc_methods">[up]</a>
|
|
<br>
|
|
<br>
|
|
|
|
|
|
<a id="TimezoneXMLjsonvCard"></a><h1>4 XML, json and vCard support</h1>
|
|
|
|
<a id="XMLhelpers"></a><h3>4.3 iCalcreator and (rfc6321) XML</h3>
|
|
<p>
|
|
Ical XML is defined by <a href="https://tools.ietf.org/html/rfc6321" title="Download rfc6321" target="_blank">rfc6321</a>,
|
|
"xCal: The XML Format for <strong>iCalendar</strong>".
|
|
</p>
|
|
<a id="iCal2XML"></a><h4>4.3.1 iCal2XML</h4>
|
|
<p>The (static) XML\Formatter::iCal2XML method converts an Vcalendar instance to XML.</p>
|
|
<p>
|
|
The iCal2XML method uses the SimpleXML extension (and "libxml" <em>PHP</em> extension).
|
|
</p>
|
|
<p>An rfc6321 XML string is returned.</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">XML\Formatter::iCal2XML( iCalobj )</p>
|
|
<p class="comment">iCalobj = (object) Vcalendar instance</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Xml\Formatter as XmlFormatter;
|
|
|
|
$xmlString = XmlFormatter::iCal2XML( $vcalendar );
|
|
|
|
</p>
|
|
<br>
|
|
|
|
<a id="XML2iCal"></a><h4>4.3.2 XML2iCal</h4>
|
|
<p>
|
|
The (static) Xml\Parser::XML2iCal method accepts a well-formed (rfc6321) XML string as argument.
|
|
</p>
|
|
<p>
|
|
On success, an Vcalendar instance is returned, on error false.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">Xml\Parser::XML2iCal( xmlstr [, config] )</p>
|
|
<p class="comment">xmlstr = (string) rfc6321 XML
|
|
config = (array) iCalcreator config array (opt)
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Xml\Parser as XmlParser;
|
|
|
|
$config = [ Vcalendar::UNIQUE_ID => "kigkonsult.se" ];
|
|
|
|
$vcalendar = XmlParser::XML2iCal( $xlmString, $config );
|
|
|
|
</p>
|
|
<br>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#TimezoneXMLjsonvCard">[up]</a>
|
|
|
|
|
|
|
|
<a id="iCal2jSon"></a><h3>4.4 iCalcreator and json export</h3>
|
|
<p>
|
|
You can export and import
|
|
(<a href="https://tools.ietf.org/html/rfc8984" title="Download rfc8984" target="_blank">rfc8984</a>)
|
|
iCal json using
|
|
<a href="https://github.com/iCalcreator/PhpJsCalendar" title="PhpJsCalendar" target="_blank">PhpJsCalendar</a>.
|
|
</p>
|
|
|
|
<p>
|
|
You can also export iCal (XML) as json using a Vcalendar instance,
|
|
Xml\Formatter::<a href="#iCal2XML">iCal2XML()</a> (above),
|
|
simplexml_load_string and json_encode as follows:
|
|
</p>
|
|
<p class="example">
|
|
use Kigkonsult\Icalcreator\Xml\Formatter as XmlFormatter;
|
|
|
|
$xml = XmlFormatter::iCal2XML( $vcalendar );
|
|
$json = json_encode( simplexml_load_string( $xml ));
|
|
|
|
</p>
|
|
<br>
|
|
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#TimezoneXMLjsonvCard">[up]</a>
|
|
|
|
|
|
<a id="vCardhelpers"></a><h3>4.5 iCalcreator and iCalvCardFactory class</h3>
|
|
<p>
|
|
The Kigkonsult\Icalcreator\Util\IcalvCardFactory class has two methods to produce vCard string output.
|
|
</p>
|
|
<a id="iCal2vCard"></a><h4>4.5.1 iCal2vCard</h4>
|
|
<p>
|
|
The (static) method converts a single email (iCal "cal-address") into (string) vCard.
|
|
</p>
|
|
<p>
|
|
Returns vCard string.
|
|
</p>
|
|
<p class="label">Format</p>
|
|
<p class="format">IcalvCard::iCal2vCard( email [, version ] )</p>
|
|
<p class="comment">
|
|
email = (string) email, ATTENDEE, ORGANIZER and opt CONTACT "cal-address"
|
|
version = (string) vCard version, "2.1" (default), "3.0", "4.0"
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#TimezoneXMLjsonvCard">[up]</a>
|
|
|
|
<a id="iCal2vCards"></a><h4>4.5.2 iCal2vCards</h4>
|
|
<p>
|
|
The (static) method collects and converts all <a href="#ATTENDEE">ATTENDEE</a>s and <a href="#ORGANIZER">ORGANIZER</a>s
|
|
values (iCal "cal-address") and <a href="#CONTACT">CONTACT</a>s
|
|
into simplified vCard (string) output using<br>
|
|
</p>
|
|
<ul>
|
|
<li><a href="#iCal2vCard">iCalvCardFactory::iCal2vCard</a>, above</li>
|
|
<li>Kigkonsult\Icalcreator\Util\CalAddressFactory::getCalAdresses( vcalendar [, properties [, inclParams ]] )<br>
|
|
- vcalendar = (object) Vcalendar instance<br>
|
|
- properties = array, default [<a href="#ATTENDEE">ATTENDEE</a>, <a href="#ORGANIZER">ORGANIZER</a>, <a href="#CONTACT">CONTACT</a>]<br>
|
|
- inclParams = (bool) default true: search property values and parameters, false: values only<br>
|
|
</li>
|
|
</ul>
|
|
|
|
<p class="label">Format</p>
|
|
<p class="format">IcalvCard::iCal2vCards( vcalendar [, version [, inclParams [, count ]]] )</p>
|
|
<p class="comment">
|
|
vcalendar = (object) Vcalendar instance
|
|
version = (string) vCard version, "2.1" (default), "3.0", "4.0"
|
|
inclParams = (bool) default true: search property values and parameters, false: values only
|
|
count = (int) number of vCards in output
|
|
</p>
|
|
<p class="comment">
|
|
Return vCard(s) string.
|
|
</p>
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#TimezoneXMLjsonvCard">[up]</a>
|
|
|
|
|
|
<a id="Copyright_and_Licence"></a><h1>5 COPYRIGHT AND LICENSE</h1>
|
|
<p>
|
|
In this document may exist quotes and/or extracts from
|
|
<a href="https://www.ietf.org/" target="_blank">IETF</a> <a href="#IETF_rfc">rfc</a> documents,
|
|
for copyright and licence, see the "Copyright Notice" content part
|
|
in top of each IETF <a href="#IETF_rfc">rfc</a> document.
|
|
</p>
|
|
|
|
<table>
|
|
<tr><td>Copyright<td>(c) 2007-2022 Kjell-Inge Gustafsson, kigkonsult, All rights reserved
|
|
<tr><td>Link <td>https://kigkonsult.se
|
|
<tr><td>Package <td>iCalcreator
|
|
<tr><td>Version <td>2.41.70
|
|
<tr><td class="top">License
|
|
<td>
|
|
Subject matter of licence is the software iCalcreator.<br>
|
|
The above copyright, link, package and version notices,<br>
|
|
this licence notice and the invariant [rfc5545] PRODID result use<br>
|
|
as implemented and invoked in iCalcreator shall be included in<br>
|
|
all copies or substantial portions of the iCalcreator.<br>
|
|
<br>
|
|
iCalcreator is free software: you can redistribute it and/or modify<br>
|
|
it under the terms of the GNU Lesser General Public License as published<br>
|
|
by the Free Software Foundation, either version 3 of the License,<br>
|
|
or (at your option) any later version.<br>
|
|
<br>
|
|
iCalcreator is distributed in the hope that it will be useful,<br>
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
|
|
GNU Lesser General Public License for more details.<br>
|
|
<br>
|
|
You should have received a copy of the GNU Lesser General Public License<br>
|
|
along with iCalcreator. If not, see <https://www.gnu.org/licenses/>.
|
|
</table>
|
|
|
|
<br>
|
|
<a href="#INDEX">[index]</a> <a href="#top">[top]</a> <a href="#Copyright_and_Licence">[up]</a>
|
|
</body>
|
|
</html>
|