Location: PHPKode > scripts > iCalcnv > iCalcnv-3.2/iCalcnv.README.html
<html>
<head>
<title>iCalcnv 3.2</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="author"      content="Kjell-Inge Gustafsson kigkonsult">
<meta name="copyright"   content="2009-2013 Kjell-Inge Gustafsson kigkonsult">
<meta name="keywords"    content="iCalcnv 3.2, php cvs conversion convert class">
<meta name="description" content="using iCalcnv">
<style type="text/css">
body {  font-family     : "Lucida Grande","Lucida Sans Unicode", "Bitstream Vera Sans", Lucida, Arial, Geneva, Helvetica, sans-serif;
        font-size       : 10pt;
        margin-left     : 10px;
        width           : 800px; }
table { border-collapse : collapse;
        width           : 100%; }
td {    border-bottom   : gray dotted thin;
        font-size       : 10pt;
        padding-right   : 10pt;
        vertical-align  : top; }
p.format {
        BORDER          : gray dotted thin;
        FONT-FAMILY     : Helvetica;
        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     : -pre-wrap;     /* Opera 4-6 */
        WHITE-SPACE     : -o-pre-wrap;   /* Opera 7 */
        WORD-WRAP       : break-word;    /* Internet Explorer 5.5+ */ }
pre, th {
        background-color: #E7E7E5;
        text-align      : left;
        font-family     : monospace;
        font-size       : 8pt;
        letter-spacing  : 0.1em;
        white-space     : pre-wrap;      /* css-3 */
        white-space     : -moz-pre-wrap; /* Mozilla, since 1999 */
        white-space     : -pre-wrap;     /* Opera 4-6 */
        white-space     : -o-pre-wrap;   /* Opera 7 */
        word-wrap       : break-word;    /* Internet Explorer 5.5+ */ }
</style>
</head>
<body>
<a name="top"></a>
<h1>iCalcnv</h1>
<p>
iCalcnv 3.2<br>
copyright (c) 2009-2013 Kjell-Inge Gustafsson, kigkonsult<br>
<a href="http://kigkonsult.se/iCalcnv/index.php" title="open in a new window" target="_blank">kigkonsult.se iCalcnv</a><br>
<a href="http://kigkonsult.se/contact/index.php" title="open in a new window" target="_blank">kigkonsult.se contact</a>
</p>
<a name="DESCRIPTION"></a>
<h2>DESCRIPTION</h2>
<p>
iCalcnv is a PHP utility class converting iCal RFC5545(RFC2445) to xls and
csv format and from csv format to iCal.
</p>
<p>
iCalcnv requires iCalcreator class managing iCal package, to be downloaded from
<a href="http://kigkonsult.se/downloads/index.php#iCalcreator" title="open in a new window" target="_blank">kigkonsult iCalcreator download page</a>
</p>
<p>
iCalcnv support local and remote iCal/csv input files as well as an iCalcreator
vcalendar instance object.
</p>
<p>
The iCal2csv method converts from iCal to csv format and output is redirected
to browser (default) or saved to disc.
</p>
<p>
The iCal2xls method converts iCal to spreadsheet xls file format and requires
PHP PEAR Spreadsheet_Excel_Writer and PHP PEAR OLE packages. Output is redirected
to browser (default) or saved to disc.
</p>
<p>
The csv2iCal method converts from csv file format to iCal format and makes it
also possible to create a time schedule or plan in a spreadsheet, "save as" a
csv file, convert file to iCal format and update a calendar application. Output
is an iCal file, redirected to browser (default) or saved to disc, or an
iCalcreator vcalendar instance object.
</p>
<p>
iCalcnv may use PEAR Log (or eClog package, to be downloaded from
<a href="http://kigkonsult.se/downloads/index.php#eClog" title="open in a new window" target="_blank">kigkonsult eClog download page</a>).
</p>
<p>
Definition of csv can be found at
<a href="http://en.wikipedia.org/wiki/Comma-separated_values" title="open in a new window" target="_blank">wikipedia</a>.
</p>
<p>
To get a proper understanding of iCal, explore the RFC5545(RFC2445), download
from <a href="http://kigkonsult.se/downloads#rfc" title="open in a new window" target="_blank">kigkonsult rfc download page</a>
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>

<a name="Index"></a>
<h2>Index</h2>
<dl>
  <dt><a href="#Top">Description</a>
  <dt><a href="#ICAL TO XLS/CSV">ICAL TO XLS/CSV</a>
  <dt><a href="#CSV TO ICAL">CSV TO ICAL</a>
  <dt><a href="#INSTALL">INSTALL</a>
  <dt><a href="#CLASS METHODS">CLASS METHODS</a>
    <dd><a href="#Constructor">Constructor</a>
    <dd><a href="#setConfig">setConfig</a>
    <dd><a href="#getConfig">getConfig</a>
    <dd><a href="#iCal2csv">iCal2csv</a>
    <dd><a href="#csv2iCal">csv2iCal</a>
    <dd><a href="#iCal2xls">iCal2xls</a>
  <dt><a href="#TEST">TEST</a>
  <dt><a href="#FILE LIST">FILE LIST</a>
  <dt><a href="#SUPPORT">SUPPORT</a>
  <dt><a href="#DONATE">DONATE</a>
  <dt><a href="#Boost performance">Boost performance</a>
  <dt><a href="#COPYRIGHT & LICENCE">COPYRIGHT & LICENCE</a>
</dl>
<a href="#top">[top]</a>


<a name="ICAL TO XLS/CSV"></a>
<h2>ICAL TO XLS/CSV</h2>
<p>
Input file format to iCal2xls and iCal2csv methods are an iCal RFC2445/5545
file (*.ics) or an iCalcreator vcalendar instance object. Output file format
are xls/csv formatted and row oriented.
</p>

<dl>Using the &quot;setConfig&quot; method allows setting
  <dt>input directory/filename alt. url or iCalcreator vcalendare instance object
    <dd>(required)
  <dt>check input file extension (or not)
    <dd>(optional)
  <dt>output directory and filename
    <dd>(optional)
  <dt>define of csv field delimiter and separator as well as new line characters
    <dd>(allow redefine of default values)
  <dt>mapping from iCal property names to user friendly (column) names
    <dd>(optional)
  <dt>order output columns
    <dd>(optional)
  <dt>iCal properties to skip from output
    <dd>(optional)
</dl>

<p>
In top of output comes rows with product, date and file information, then opt.
calendar properties like METHOD, CALSCALE and X-PROPerties with name and value.
</p>
<p>
Next comes opt. timezone/standard/daylight components in row order, with a
leading header row, every component in a separate row, every property in a
separate column, starting with columns for component type and order.
</p>
<p>
The calendar components (vevent/vtodo/vfreebusy/vjournal and corresponding
valarms) are also presented in row order, with a leading header row, like the
timezone part above, components in rows and their properties in separate
columns, also starting with columns for component type and order. Alarms, if
any, comes right after corresponding vevent/vtodo component row.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="CSV TO ICAL"></a>
<h2>CSV TO ICAL</h2>
<p>
Input csv file format to method csv2iCal is actually output csv file format
above. Output file format is an iCal RFC2445/5545 file (*.ics) or an
iCalcreator vcalendar instance.
</p>
<p>
When converting from xls format to iCal, use spreadsheet application function
&quot;save as&quot; a CSV file (extension csv) and select, if possible, field separator
comma &quot;,&quot;, field delimiter double quote '&quot;' and, if selectable and also
depending on PHP configuration and platform, &quot;UTF-8&quot; as character set.
</p>

<dl>Using the &quot;setConfig&quot; method allows setting
  <dt>input directory and filename alt. url
    <dd>(required)
  <dt>output directory/filename or iCalcreator vcalendare instance
    <dd>(optional)
  <dt>check input file extension (or not)
    <dd>(optional)
  <dt>define of other field delimiter and separator characters (setConfig below)
    <dd>(allow redefine of default values)
  <dt>mapping to iCal property names from user friendly (column) names
    <dd>(optional)
</dl>

<p>
When parsing the csv file, empty rows or empty property values are skipped.
</p>
<p>
If exist, the product, date and file information are skipped. Any opt. rows
containing calendar properties like METHOD, CALSCALE and X-PROPerties updates
the calendar. (METHOD property as well as x-properties "X-WR-CALNAME",
"X-WR-CALDESC" and "X-WR-TIMEZONE" may be required later when importing iCal
files into some calendaring software (MS etc.).) This part may be missing in
the csv file when converting to iCal format.
</p>
<p>
The timezone part, if exist, MUST start with a leading header row. The header
row MUST have a "TYPE" column header in first column and the "TZID" property
header MUST exist in header row. Any standard/daylight components, if exist,
MUST appear directly after corresponding timezone component. This part may be
missing in the csv file.
</p>
<p>
The calendar components (vevent/vtodo/vfreebusy/vjournal and corresponding
valarms) part MUST start with a leading header row and MUST have a "TYPE"
column in the first column. Any alarms, if exist, MUST appear directly after
corresponding component. The calendar component part MUST exist in the csv
file.
</p>
<p>
The content in the both header row (as well as for calendar properties) columns
are case and, except for "TYPE" (col 1), order independent, but MUST contain
strict RFC2445 property names or, using config setting, user fiendly mapped
names. The values in the "TYPE" column MUST use strict RFC2445 component name:
VTIMEZONE, STANDARD, DAYLIGHT, VEVENT, VTODO, VJOURNAL, VFREEBUSY and VALARM.
</p>
<p>
The "ORDER" column in csv(/xls) input file is ignored when parsed, used only
for information. Opt. X-PROPerties in calendar, timezone, event (etc) or alarm
components are supported.
</p>
<p>
Each property content (within a row-column &quot;cell&quot;) are assumed to be in a
strict RFC2445/5545 format, ex. dates (DTSTART, DTEND, DUE) may be prefixed
by TZID or VALUE DATETIME/DATE parameters, RELATED-TO by RELTYP parameter,
RECURRENCE-ID by RANGE parameter, FREEBUSY by FBTYPE parameter, COMMENT by
LANGUAGE parameter etc.
</p>
<p>
Properties with multiple occurence within a component like ATTENDEE, COMMENT
etc. are assumed to be in one "field" (i.e. a cell, content within (default)
double quote as field delimiters) separated by newline character(-s).
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="INSTALL"></a>
<h2>INSTALL</h2>

<p>
Unpack to any (&lt;includes&gt;) directory within a webserver document root.
</p>
<p>
Download iCalcreator from
<a href="http://kigkonsult.se/downloads#index.php#iCalcreator" title="open in a new window" target="_blank">kigkonsult iCalcreator download page</a>,
unzip and place iCalcreator package file in the <includes> directory.
</p>
<p>
Include where appropriate:
</p>
<pre>
&lt;?php
.. .
"require_once '&lt;includes&gt;/iCalcreator.class.php';"
"require_once '&lt;includes&gt;/iCalcnv.class.php';"
.. .
</pre>
<p>
The iCal2xls method requires install of PHP PEAR packages
Spreadsheet_Excel_Writer and OLE, to be installed as
</p>
<pre>
"pear install channel://pear.php.net/OLE-1.0.0RC1"
"pear install channel://pear.php.net/Spreadsheet_Excel_Writer-0.9.2"
</pre>
<p>
PEAR packages with higher version number may exist and should be used.
Due to Pear Spreadsheet/Excel/Writer PHP Deprecated/Strict standards violation,
&quot;error_reporting&quot; need to be altered.
</p>
<p>
Please examine <a href="http://pear.php.net" title="open in a new window" target="_blank">pear.php.net</a> for install and configuration.
</p>
<p>
If using PHP PEAR LOG package (optional), include where appropriate:
</p>
<pre>
&lt;?php
.. .
"require_once 'Log.php';"
.. .
</pre>
<p>
Please examine <a href="http://pear.php.net" title="open in a new window" target="_blank">pear.php.net</a> for install and configuration.
</p>
<p>
Another (optional) log option is eClog, to be downloaded from
<a href="http://kigkonsult.se/downloads#index.php#eClog" title="open in a new window" target="_blank">kigkonsult eClog download page</a>.
Install and configuration information is found inside the eClog download package.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="CLASS METHODS"></a>
<h2>CLASS METHODS</h2>

<a name="Constructor"></a>
<h3>Constructor</h3>

<p>
Format
</p>
<p class="format">iCalcnv::iCalcnv( [log] )</p>
<p>
Example
</p>
<pre>
$iCalcnv = new iCalcnv();
</pre>
<p>
log: (opt) PHP PEAR log object instance (alt. eClog)
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>

<a name="setConfig"></a>
<h3>setConfig</h3>

<p>
Format
</p>
<p class="format">iCalcnv::setConfig( [ arg1 [, arg2 ]] )</p>
<dl><b>Using no arguments</b>
<dt>resets all config to defaults
</dl>
<dl><b>Single config setting</b>
<dt>setConfig( string/int key, mixed value )
<dd>key list below.
</dl>
<dl><b>Multiple config setting</b>
<dt>setConfig( configs )
<dd>configs: array( *[ string/int key => mixed value ] )
<dd>key list below.
</dl>

<table>
<tr><th>key<th>value type<th>comment<th>default
<tr>
<td>&quot;inputdirectory&quot;
<td>string
<td>directory for input file<br>
readablility is checked when setting<br>
ignored if using an iCalcreator vcalendar instance as input
<td>&quot;.&quot;
<tr>
<td>&quot;inputfilename&quot;
<td>string
<td>filename for input file<br>
for iCal2csv/iCal2xls, file extension &quot;ics&quot; required (note &quot;extension_check&quot; below)<br>
for csv2iCal, file extension &quot;csv&quot; required (note extension_check below)<br>
readablility is checked when setting<br>
MUST be set after &quot;inputdirectory&quot;<br>
ignored if using an iCalcreator vcalendar instance as input
<td>&nbsp;
<tr>
<td>&quot;extension_check&quot;
<td>bool
<td>if to check file extension
<td>TRUE
<tr>
<td>&quot;inputurl&quot;
<td>string
<td>url for input file (or web resource)<br>
ignored if using an iCalcreator vcalendar instance as input
also ignored if &quot;inputfilename&quot; is set
<td>&nbsp;
<tr>
<td>&quot;save&quot;
<td>bool
<td>save output to disc or redirect to browser<br>
MUST be set before &quot;outputdirectory&quot;
<td>FALSE
<tr>
<td>&quot;outputdirectory&quot;
<td>string
<td>directory for output file<br>
required when &quot;save&quot; is set to true<br>
writeablility is checked when setting
<td>&quot;.&quot;
<tr>
<td>&quot;outputfilename&quot;
<td>string
<td>filename for output file<br>
writeablility is checked when setting, if &quot;save&quot; is set to true<br>
MUST be set after &quot;outputdirectory&quot; (or not)
<td>&quot;inputfilename&quot; is used with altered extension
<tr>
<td>&quot;backup&quot;
<td>bool
<td>to backup previous version of output file<br>
if set, it requires &quot;save&quot; set to true and &quot;outputfilename&quot; specified<br>
backup filename suffixed by &quot;.&lt;date&gt;.old&quot; (date:YmdHis from filemtime)<br>
MUST be set after &quot;save&quot; (or not)
<td>FALSE
<tr>
<td>&quot;outputobj&quot;
<td>bool
<td>an iCalcreator vcalendar instance is returned (csv2iCal)<br>
(ignores any &quot;save&quot; setting)
<td>FALSE
<tr>
<td>&quot;unique_id&quot;
<td>string
<td>site unique id, used in iCalcreator creating component UID
<td>PHP $_SERVER[&quot;SERVER_NAME&quot;] or &quot;localhost&quot;
<tr>
<td>&quot;del&quot;
<td>string
<td>field delimiter (iCal2csv/csv2iCal)
<td>'"' (double quote)
<tr>
<td>&quot;sep&quot;
<td>string
<td>field separator (iCal2csv/csv2iCal)
<td>&quot;,&quot; (comma)
<tr>
<td>&quot;nl&quot;
<td>string
<td>iCal2csv new line character(-s)
<td>PHP constant PHP_EOL
<tr>
<td>&quot;skip&quot;
<td>string/array
<td>iCal property (names) to skip in output (iCal2csv/iCal2xls)
<td>&nbsp;
<tr>
<td>a numeric key
<td>string
<td>value an iCal property name<br>
allocate column number for property<br>
(iCal2csv/iCal2xls)
<td>&nbsp;
<tr>
<td>An iCal property name
<td>string
<td>value an property name alias<br><br>
using user friendly (column) names<br>
instead of iCal property names in output<br>
(iCal2csv/iCal2xls)<br><br>
(re-)mapping user friendly (column) names to iCal property names<br>
(csv2iCal)
<td>&nbsp;
</table>
<p>
On single config setting, note configuration key order!
On multiple config setting, order is controlled and reordered.
</p>
<p>
Returns FALSE on error (details in (opt.) log file), otherwise TRUE.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="getConfig"></a>
<h3>getConfig</h3>

<p>
Format
</p>
<p class="format">iCalcnv::getConfig( string/int key [, int subkey] )</p>

<dl>
<dt>key
<dd>any key above
<dt>subkey
<dd>any &quot;skip&quot; subkey, above
</dl>

<p>
Returns key value or FALSE if not found (error details in (opt.) log file).
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="iCal2csv"></a>
<h3>iCal2csv</h3>

<p>
Format
</p>
<p class="format">iCalcnv::iCal2csv( [iCalObj] )</p>
<p>
Example
</p>
<pre>
.. .
$iCalcnv->iCal2csv( $iCalObj );
.. .
</pre>
<dl>
<dt>iCalObj
<dd>Input iCalcreator vcalendar instance (opt)
<dd>&quot;inputfilename&quot; is fetched from iCalcreator vcalendar instance
</dl>
<p>
If not set, &quot;outputfilename&quot; is generated from &quot;inputfilename&quot; with altered
extension.
</p>
<p>
When config &quot;save&quot; is set (TRUE) (saving output file on disc), TRUE is
returned on success, FALSE on error.
</p>
<p>
When &quot;save&quot; is NOT set (FALSE), output file is redirected to browser
and TRUE is returned. If error occurs, FALSE is returned.
</p>
<p>
Execution and error details (if any) in (opt.) log file.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="csv2iCal"></a>
<h3>csv2iCal</h3>

<p>
Format
</p>
<p class="format">iCalcnv::csv2iCal()</p>
<p>
Example
</p>
<pre>
.. .
$iCalcnv->csv2iCal();
.. .
</pre>
<p>
If not set, &quot;outputfilename&quot; is generated from &quot;inputfilename&quot; with altered
extension.
</p>
<p>
When config &quot;outputobj&quot; is set (TRUE), an iCalcreator vcalendar instance is
returned on success. If error occurs, FALSE is returned.
</p>
<p>
Or, when config &quot;save&quot; is set (TRUE) (saving output file on disc), TRUE is
returned on success, FALSE on error.
</p>
<p>
Last option, when config &quot;save&quot; is NOT set (FALSE), output file is redirected
to browser and TRUE is returned. If error occurs, FALSE is returned.
</p>
<p>
Execution and error details (if any) in (opt.) log file.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="iCal2xls"></a>
<h3>iCal2xls</h3>

<p>
Format
</p>
<p class="format">iCalcnv::iCal2xls( [iCalObj] )</p>

<p>
Example
</p>
<pre>
.. .
$iCalcnv->iCal2xls( $iCalObj );
.. .
</pre>
<dl>
<dt>iCalObj
<dd>Input iCalcreator vcalendar instance (opt)
<dd>&quot;inputfilename&quot; is fetched from iCalcreator vcalendar instance
</dl>
<p>
If not set, &quot;outputfilename&quot; is generated from &quot;inputfilename&quot; with altered
extension.
</p>
<p>
When config &quot;save&quot; is set (TRUE) (saving output file on disc), TRUE is
returned on success, FALSE on error.
</p>
<p>
When config &quot;save&quot; is NOT set (FALSE), output is redirected to browser and
TRUE is returned. If error occurs, FALSE is returned.
</p>
<p>
Execution and error details (if any) in (opt.) log file.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="TEST"></a>
<h2>TEST</h2>
<p>
The kigkonsult package &quot;tiCalFile&quot; is creating valid calendar file(-s) (using
current date and time), usable when testing calendar software etc
or in the test script iCalcnvTest.php
</p>
<p>
Download tiCalFile the package
<a href="http://kigkonsult.se/downloads/index.php#tiCalFile" title="open in a new window" target="_blank">here</a>
or download a valid iCal test file, produced with the package
<a href="http://kigkonsult.se/tiCalFile/index.php" title="open in a new window" target="_blank">here</a>
and place (and rename) in the &quot;calendars&quot; directory.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="FILE LIST"></a>
<h2>FILE LIST</h2>

<dl>
  <dt>calendars/
    <dd>directory(*), calendar file storage (r+w access)
  <dt>csvxlsStorage/
    <dd>directory(*), cvs and xls storage (r+w access)
  <dt>encoded/
    <dd>directory(**), iCalcnv and iCalcreator encoded class files
  <dt>images/
    <dd>directory, free iCal/xls/csv images to use
  <dt>iCalcnv.class.php
    <dd>iCalcnv class file
  <dt>iCalcnv.README.html
    <dd>this file
  <dt>iCalcnvTest.php
    <dd>test script and usage example
  <dt>LGPL.txt
    <dd>licence
  <dt>releaseNotes.txt
    <dd>release notes
  <dt>testcases.txt
    <dd>test cases executed in iCalcnvTest.php
</dl>
<p>
(*) proposal and/or for testing<br>
(**) Boost performance, below
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="SUPPORT"></a>
<h2>SUPPORT</h2>
<p>
Use the <a href="http://kigkonsult.se/contact/index.php" title="open in a new window" target="_blank">contact page</a>
for queries, improvement or development issues or professional support and development.
Please note that paid support or consulting service has the highest priority.
</p>
<p>
kigkonsult offer services for software support, design and development of
customizations and adaptations of <em>PHP</em>/<em>MySQL</em> solutions
with a special focus on software long term utility and reliability,
supported through our agile acquire/design/transition process model.
</p>

<a name="DONATE"></a>
<h2>DONATE</h2>
<p>
You can show your appreciation for our free software, and can support future
development by making a donation to the kigkonsult projects.
</p>
<p>
Make a donation of any size by clicking the donate link at the
<a href="http://kigkonsult.se/contact/index.php#Donate" title="open in a new window" target="_blank">contact page</a>.
Thanks in advance!
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="Boost performance"></a>
<h2>Boost performance</h2>
<p>
To really boost performance, kigkonsult can offer PHP packages (iCalcnv,
iCalcreator etc) in byte coded files, using ionCube
(http://www.ioncube.com/?xp=SRLGBR) encoder.
</p>
<p>
Encoded files use a platform independent file format, and can be run on any
platform for which ionCube supply a (free) Loader. Currently supported
platforms are Windows (e.g. NT, XP, W2K), Intel Linux, FreeBSD, NetBSD,
OpenBSD, OS X, and Sparc Solaris.
</p>
<p>
Visit
<a href="http://kigkonsult.se/contact/index.php#Boost" title="open in a new window" target="_blank">kigkonsult Boost contact page</a>
for information and/or purchase.
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>


<a name="COPYRIGHT & LICENCE"></a>
<h2>COPYRIGHT & LICENCE</h2>

<a name="COPYRIGHT"></a>
<h3>COPYRIGHT</h3>

<p>
iCalcnv 3.2<br>
copyright (c) 2009-2013 Kjell-Inge Gustafsson, kigkonsult<br>
<a href="http://kigkonsult.se/iCalcnv/index.php" title="kigkonsult.se/iCalcnv" title="open in a new window" target="_blank">kigkonsult.se iCalcnv</a><br>
<a href="http://kigkonsult.se/contact/index.php" title="kigkonsult.se contact" title="open in a new window" target="_blank">kigkonsult.se contact</a>
</p>
<a name="LICENCE"></a>
<h3>LICENCE</h3>
<p>
This library 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 2.1 of the License, or (at your option)
any later version.
</p>
<p>
This library 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.
</p>
<p>
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
</p>
<a href="#Index">[index]</a> <a href="#top">[top]</a>
Return current item: iCalcnv