source: trunk/library/iCalcreator/summary.html @ 5146

Revision 5146, 16.0 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus. Library: adicionando arquivos.

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
2   "http://www.w3.org/TR/html4/frameset.dtd">
3<html>
4<head>
5<title>iCalcreator 2.8 summary</title>
6<meta name="author"      content="Kjell-Inge Gustafsson - kigkonsult" />
7<meta name="copyright"   content="2007-2011 Kjell-Inge Gustafsson - kigkonsult" />
8<meta name="keywords"    content="ical, calendar, calender, xcal, xml, icalender, rfc2445, vcalender, php, create" />
9<meta name="description" content="iCalcreator" />
10<style type="text/css">
11body {
12  FONT-FAMILY     : "Lucida Grande","Lucida Sans Unicode", "Bitstream Vera Sans", Lucida, Arial, Geneva, Helvetica, sans-serif;
13  FONT-SIZE       : small;
14  MARGIN          : 10px;
15  WIDTH           : 800px;
16}
17h1 {
18  FONT-FAMILY     : "Lucida Grande","Lucida Sans Unicode", "Bitstream Vera Sans", Lucida, Arial, Geneva, Helvetica, sans-serif;
19  FONT-SIZE       : large;
20}
21h2 {
22  FONT-FAMILY     : "Lucida Grande","Lucida Sans Unicode", "Bitstream Vera Sans", Lucida, Arial, Geneva, Helvetica, sans-serif;
23  FONT-SIZE       : large;
24}
25h4 {
26  FONT-FAMILY     : "Lucida Grande","Lucida Sans Unicode", "Bitstream Vera Sans", Lucida, Arial, Geneva, Helvetica, sans-serif;
27  FONT-SIZE       : small;
28  FONT-WEIGHT     : bold;
29}
30.code {
31  FONT-FAMILY     : monospace;
32  FONT-SIZE       : medium;
33  WHITE-SPACE     : pre;
34}
35.comment {
36  FONT-FAMILY     : arial;
37  FONT-SIZE       : small;
38  FONT-STYLE      : italic;
39}
40</style>
41</head>
42<body>
43<h1>iCalcreator 2.8</h1>
44iCalcreator class v2.8<br />
45copyright (c) 2007-2011 Kjell-Inge Gustafsson, kigkonsult<br />
46<a href="http://www.kigkonsult.se/iCalcreator/index.php" title="www.kigkonsult.se/iCalcreator" target="_blank">www.kigkonsult.se/iCalcreator</a><br />
47ical@kigkonsult.se<br />
48<br />
49iCalcreator is a PHP class managing iCal formatted files for non-calendar
50systems like CMS, project management systems and other applications able
51to process calendar information like agendas, tasks, reports, totos,
52journaling data and for communication with calendar systems and applications.
53<br /><br />
54This is a <b>short summary</b> how to use iCalcreator; create, parse, edit, select and output functionality.
55<br /><br />
56iCalcreator is built of a class file with support of a function class file and are calendar component property oriented.
57Development environment is PHP version 5.x but coding is done to meet 4.x backward compatibility and may work.
58<h4>iCal</h4>
59A short iCal description is found at <a href="http://en.wikipedia.org/wiki/ICalendar#Core_object" title="iCalendar From Wikipedia, the free encyclopedia" target="_blank">Wikipedia</a>. If You are not familiar with iCal, read this first!<br />
60Knowledge of calendar protocol rfc2445/rfc2446  is to recommend;<br />
61<a href="http://www.kigkonsult.se/downloads/dl.php?f=rfc2445" title="RFC2445" target="_blank">rfc2445</a>
62 - Internet Calendaring and Scheduling Core Object Specification (iCalendar)<br />
63<a href="http://www.kigkonsult.se/downloads/dl.php?f=rfc2446" title="RFC2446" target="_blank">rfc2446</a>
64 - iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries <br />
65All functions calls are made as simple as possible BUT (, !!!,) read these rfc's properly!<br />
66<h4>Downloads</h4>
67Download
68<a href="http://www.kigkonsult.se/downloads/index.php#iCalcreator" title="iCalcreator complete manual" target="_blank"><b>complete manual</b></a>
69and
70<a href="http://www.kigkonsult.se/downloads/index.php#iCalcreator" title="iCalcreator coding samples" target="_blank"><b>coding samples</b></a>.
71from <a href="http://www.kigkonsult.se/iCalcreator/index.php" title="iCalcreator" target="_blank">www.kigkonsult.se/iCalcreator</a>.
72<h4>INSTALL</h4>
73Unpack to any folder<br />
74- add this folder to your include-path<br />
75- or unpack to your application-(include)-folder<br />
76Add &quot;require_once [folder/]iCalcreator.class.php;&quot; to your php-script.
77<br />
78<br />
79If using php version 5.1 or higher, the default timezone need to be set/altered, now "Europe/Stockholm",
80line 50 in the iCalcreator.class.php file.
81<br />
82When creating a new calendar/component instance, review config settings.
83
84<h2>CREATE</h2>
85
86<p class="code">require_once( 'iCalcreator.class.php' );
87$config = array( 'unique_id' => 'icaldomain.com' );        // <span class="comment">set Your unique id</span>
88$v = new vcalendar( $config );                             // <span class="comment">create a new calendar instance</span>
89
90$v->setProperty( 'method', 'PUBLISH' );                    // <span class="comment">required of some calendar software</span>
91$v->setProperty( "x-wr-calname", "Calendar Sample" );      // <span class="comment">required of some calendar software</span>
92$v->setProperty( "X-WR-CALDESC", "Calendar Description" ); // <span class="comment">required of some calendar software</span>
93$v->setProperty( "X-WR-TIMEZONE", "Europe/Stockholm" );    // <span class="comment">required of some calendar software</span>
94.. .
95$vevent = & $v->newComponent( 'vevent' );                  // <span class="comment">create an event calendar component</span>
96$vevent->setProperty( 'dtstart', array( 'year'=>2007, 'month'=>4, 'day'=>1, 'hour'=>19, 'min'=>0,  'sec'=>0 ));
97$vevent->setProperty( 'dtend',   array( 'year'=>2007, 'month'=>4, 'day'=>1, 'hour'=>22, 'min'=>30, 'sec'=>0 ));
98$vevent->setProperty( 'LOCATION', 'Central Placa' );       // <span class="comment">property name - case independent</span>
99$vevent->setProperty( 'summary', 'PHP summit' );
100$vevent->setProperty( 'description', 'This is a description' );
101$vevent->setProperty( 'comment', 'This is a comment' );
102$vevent->setProperty( 'attendee', 'attendee1@icaldomain.net' );
103.. .
104$vevent = & $v->newComponent( 'vevent' );                  // <span class="comment">create next event calendar component</span>
105$vevent->setProperty( 'dtstart', '20070401', array('VALUE' => 'DATE'));// <span class="comment">alt. date format, now for an all-day event</span>
106$vevent->setProperty( "organizer" , 'boss@icaldomain.com' );
107$vevent->setProperty( 'summary', 'ALL-DAY event' );
108$vevent->setProperty( 'description', 'This is a description for an all-day event' );
109$vevent->setProperty( 'resources', 'COMPUTER PROJECTOR' );
110$vevent->setProperty( 'rrule', array( 'FREQ' => 'WEEKLY', 'count' => 4));// <span class="comment">weekly, four occasions</span>
111$vevent->parse( 'LOCATION:1CP Conference Room 4350' );     // <span class="comment">supporting parse of strict rfc2445 formatted text</span>
112.. .
113.. .// <span class="comment">all calendar components are described in <a href="http://www.kigkonsult.se/downloads/dl.php?f=rfc2445" title="RFC2445" target="_blank">rfc2445</a></span>
114.. .// <span class="comment">a complete iCalcreator function list (ex. setProperty) in <a href="http://www.kigkonsult.se/downloads/index.php#iCalcreator" title="iCalcreator complete manual" target="_blank">iCalcreator manual</a></span>
115.. .
116$v->returnCalendar();                                      // <span class="comment">redirect calendar file to browser</span>
117</p>
118<h2>PARSE</h2>
119<p class="code">require_once( 'iCalcreator.class.php' );
120$config = array( 'unique_id', 'icaldomain.com' );          // <span class="comment">set Your unique id, required if any component UID is missing</span>
121$v = new vcalendar( $config );                             // <span class="comment">create a new calendar instance</span>
122
123 /* start parse of local file */
124$config = array( 'directory' => 'calendar', 'filename' => 'file.ics' );
125$v->setConfig( $config );                                  // <span class="comment">set directory and file name</span>
126$v->parse();
127
128 /* start parse of remote file */
129$v->setConfig( 'url', 'http://www.aDomain.net/file.ics' ); // <span class="comment">iCalcreator also support parse from or write to remote files</span>
130$v->parse();
131
132$v->setProperty( 'method', 'PUBLISH' );                    // <span class="comment">required of some calendar software</span>
133$v->setProperty( "x-wr-calname", "Calendar Sample" );      // <span class="comment">required of some calendar software</span>
134$v->setProperty( "X-WR-CALDESC", "Calendar Description" ); // <span class="comment">required of some calendar software</span>
135$v->setProperty( "X-WR-TIMEZONE", "Europe/Stockholm" );    // <span class="comment">required of some calendar software</span>
136
137.. .
138$v->sort();                                                // <span class="comment">ensure start date order</span>
139.. .
140</p>
141<h2>EDIT</h2>
142<p class="code">require_once( 'iCalcreator.class.php' );
143$config = array( 'unique_id' => 'icaldomain.com', 'directory' => 'calendar', 'filename' => 'file.ics' );
144                                                           // <span class="comment">set Your unique id, import directory and file name</span>
145$v = new vcalendar( $config );                             // <span class="comment">create a new calendar instance</span>
146
147$v->parse();
148
149$v->setProperty( 'method', 'PUBLISH' );                    // <span class="comment">required of some calendar software</span>
150$v->setProperty( "x-wr-calname", "Calendar Sample" );      // <span class="comment">required of some calendar software</span>
151$v->setProperty( "X-WR-CALDESC", "Calendar Description" ); // <span class="comment">required of some calendar software</span>
152$v->setProperty( "X-WR-TIMEZONE", "Europe/Stockholm" );    // <span class="comment">required of some calendar software</span>
153
154while( $vevent = $v->getComponent( 'vevent' )) {           // <span class="comment">read events, one by one</span>
155  $uid = $vevent->getProperty( 'uid' );                    // <span class="comment">uid required, one occurence (unique id/key for component)</span>
156  .. .
157  $dtstart = $vevent->getProperty( 'dtstart' );            // <span class="comment">dtstart required, one occurence</span>
158  .. .
159  if( $description = $vevent->getProperty( 'description', 1 )) { // <span class="comment">description optional, first occurence</span>
160    .. .                                                   // <span class="comment">edit the description</span>
161    $vevent->setProperty( 'description', $description, FALSE, 1 ); // <span class="comment">update/replace the description</span>
162  }
163  while( $comment = $vevent->getProperty( 'comment' )) {   // <span class="comment">comment optional, may occur more than once </span>
164    .. .                                                   // <span class="comment">manage comments</span>
165  }
166  .. .
167  while( $vevent->deleteProperty( 'attendee' ))
168    continue;                                              // <span class="comment">remove all ATTENDEE properties .. .</span>
169  .. .
170  $v->setComponent ( $vevent, $uid );                      // <span class="comment">update/replace event in calendar with <b>uid</b> as key </span>
171}
172.. .
173.. .// <span class="comment">a complete iCalcreator function list (ex. getProperty, deleteProperty) in <a href="http://www.kigkonsult.se/downloads/index.php" title="iCalcreator complete manual" target="_blank">iCalcreator manual</a></span>
174.. .
175</p>
176<h2>SELECT</h2>
177<p class="code">require_once( 'iCalcreator.class.php' );
178$config = array( 'unique_id' => 'icaldomain.com' );        // <span class="comment">set Your unique id</span>
179$v = new vcalendar( $config );                             // <span class="comment">create a new calendar instance</span>
180
181$v->setConfig( 'url', 'http://www.aDomain.net/file.ics' ); // <span class="comment">iCalcreator also support remote files</span>
182$v->parse();
183$v->sort();                                                // <span class="comment">ensure start date order</span>
184
185$v->setProperty( 'method', 'PUBLISH' );                    // <span class="comment">required of some calendar software</span>
186$v->setProperty( "x-wr-calname", "Calendar Sample" );      // <span class="comment">required of some calendar software</span>
187$v->setProperty( "X-WR-CALDESC", "Calendar Description" ); // <span class="comment">required of some calendar software</span>
188$v->setProperty( "X-WR-TIMEZONE", "Europe/Stockholm" );    // <span class="comment">required of some calendar software</span>
189
190$eventArray = $v->selectComponents();                      // <span class="comment">select components occuring <b>today</b></span>
191                                                           // <span class="comment">(including components with recurrence pattern)</span>
192foreach( $eventArray as $year => $yearArray) {
193 foreach( $yearArray as $month => $monthArray ) {
194  foreach( $monthArray as $day => $dailyEventsArray ) {
195   foreach( $dailyEventsArray as $vevent ) {
196    $currddate = $event->getProperty( 'x-current-dtstart' );
197                                                           // <span class="comment">if member of a recurrence set (2nd occurence etc)</span>
198                                                           // <span class="comment">returns array( 'x-current-dtstart'</span>
199                                                           // <span class="comment">                  , &lt;(string) date(&quot;Y-m-d [H:i:s][timezone/UTC offset]&quot;)&gt;)</span>
200    $dtstart = $vevent->getProperty( 'dtstart' );          // <span class="comment">dtstart required, one occurence, (orig. start date)</span>
201    $summary = $vevent->getProperty( 'summary' );
202    $description = $vevent->getProperty( 'description' );
203    .. .
204    .. .
205</p>
206<h2>OUTPUT</h2>
207<p class="code">require_once( 'iCalcreator.class.php' );
208$config = array( 'unique_id' => 'icaldomain.com' );        // <span class="comment">set Your unique id</span>
209$v = new vcalendar( $config );                             // <span class="comment">create a new calendar instance</span>
210
211$v->setProperty( 'method', 'PUBLISH' );                    // <span class="comment">required of some calendar software</span>
212$v->setProperty( "x-wr-calname", "Calendar Sample" );      // <span class="comment">required of some calendar software</span>
213$v->setProperty( "X-WR-CALDESC", "Calendar Description" ); // <span class="comment">required of some calendar software</span>
214$v->setProperty( "X-WR-TIMEZONE", "Europe/Stockholm" );    // <span class="comment">required of some calendar software</span>
215.. .
216.. .// <span class="comment">parse calendar file(s) and/or edit/create calendar components.. .</span>
217.. .
218</p>
219<h4> // opt 1</h4>
220<p class="code">.. .
221$v->returnCalendar();                                      // <span class="comment">redirect calendar file to browser</span>
222</p>
223<h4> // opt 2</h4>
224<p class="code">.. .
225$config = array( 'directory' => 'depot', 'filename' => 'calendar.ics' );
226$v->setConfig( $config );                                  // <span class="comment">set output directory and file name</span>
227$v->saveCalendar();                                        // <span class="comment">save calendar to (local) file</span>
228</p>
229<h4> // opt 3</h4>
230<p class="code">.. .
231$config = array( 'url' => 'http://www.aDomain.net/file.ics' );
232$v->setConfig( $config );                                  // <span class="comment">set output url</span>
233$v->saveCalendar();                                        // <span class="comment">save calendar to remote url</span>
234</p>
235
236<h2>COPYRIGHT AND LICENSE</h2>
237
238<h4>Copyright</h4>
239iCalcreator class<br />
240copyright (c) 2007-2011 Kjell-Inge Gustafsson, kigkonsult<br />
241<a href="http://www.kigkonsult.se/iCalcreator/index.php" title="www.kigkonsult.se/iCalcreator" target="_blank">www.kigkonsult.se/iCalcreator</a><br />
242ical@kigkonsult.se<br />
243
244<h4>License</h4>
245
246This library is free software; you can redistribute it and/or
247modify it under the terms of the GNU Lesser General Public
248License as published by the Free Software Foundation; either
249version 2.1 of the License, or (at your option) any later version.
250<br /><br />
251This library is distributed in the hope that it will be useful,
252but WITHOUT ANY WARRANTY; without even the implied warranty of
253MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
254Lesser General Public License for more details.
255<br /><br />
256You should have received a copy of the GNU Lesser General Public
257License along with this library; if not, write to the Free Software
258Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
259or download it <a href="http://www.kigkonsult.se/downloads/dl.php?f=LGPL" target="_blank">here</a>.
260<br />
261<br />
262</body>
263</html>
Note: See TracBrowser for help on using the repository browser.