Revert "Revert "Move incomplete H4 Icalendar library to H4-refactoring branch.""
authorMichael Rubinsky <mrubinsk@simon.horde.org>
Mon, 28 Dec 2009 19:08:19 +0000 (19:08 +0000)
committerMichael Rubinsky <mrubinsk@simon.horde.org>
Mon, 28 Dec 2009 19:08:19 +0000 (19:08 +0000)
This reverts commit 3f3858f63d293d587be48d3bcccaf6f13a7cf4a4.

14 files changed:
framework/Icalendar/lib/Horde/Icalendar/Base.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Exception.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Valarm.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vcalendar.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vevent.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vfreebusy.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vjournal.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vtimezone.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Vtodo.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Writer.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Writer/Base.php [deleted file]
framework/Icalendar/lib/Horde/Icalendar/Writer/Vcalendar/20.php [deleted file]
framework/Icalendar/test/Horde/Icalendar/AllTests.php [deleted file]
framework/Icalendar/test/Horde/Icalendar/WriterTest.php [deleted file]

diff --git a/framework/Icalendar/lib/Horde/Icalendar/Base.php b/framework/Icalendar/lib/Horde/Icalendar/Base.php
deleted file mode 100644 (file)
index 1b9e4d8..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-
-abstract class Horde_Icalendar_Base implements Iterator
-{
-    /**
-     * @var array
-     */
-    public $components = array();
-
-    /**
-     * @var array
-     */
-    protected $_properties = array();
-
-    public function __construct($properties = array())
-    {
-        foreach ($properties as $property => $value) {
-            $this->addProperty($property, $value);
-        }
-    }
-
-    /**
-     * Validates a property-value-pair.
-     *
-     * @throws InvalidArgumentException
-     */
-    protected function _validate($property, &$value, &$params = array())
-    {
-        if (!isset($this->_properties[$property])) {
-            throw new InvalidArgumentException($property . ' is not a valid property');
-        }
-        $myProperty = &$this->_properties[$property];
-        if (isset($myProperty['type'])) {
-            $func = 'is_' . $myProperty['type'];
-            if (!$func) {
-                throw new InvalidArgumentException($value . ' is not a ' . $myProperty['type']);
-            }
-        } elseif (isset($myProperty['class'])) {
-            if (!($value instanceof $myProperty['class'])) {
-                throw new InvalidArgumentException($value . ' is not of class ' . $myProperty['class']);
-            }
-        }
-        if ($property == 'stamp') {
-            $value->setTimezone('UTC');
-        }
-    }
-
-    /**
-     * Setter.
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __set($property, $value)
-    {
-        $this->_validate($property, $value);
-        $this->_setProperty($property, $value);
-    }
-
-    /**
-     * Sets the value of a property.
-     *
-     * @param string $property  The name of the property.
-     * @param string $value     The value of the property.
-     * @param array $params     Array containing any addition parameters for
-     *                          this property.
-     *
-     * @throws InvalidArgumentException
-     */
-    public function setProperty($property, $value, $params = array())
-    {
-        $this->_validate($property, $value);
-        $this->_setProperty($property, $value, $params);
-    }
-
-    /**
-     * Adds the value of a property.
-     *
-     * @param string $property  The name of the property.
-     * @param string $value     The value of the property.
-     * @param array $params     Array containing any addition parameters for
-     *                          this property.
-     *
-     * @throws InvalidArgumentException
-     * @throws Horde_Icalendar_Exception
-     */
-    public function addProperty($property, $value, $params = array())
-    {
-        $this->_validate($property, $value);
-        if (!$this->_properties[$property]['multiple'] &&
-            !empty($this->_properties[$property]['values'])) {
-            throw new Horde_Icalendar_Exception($property . ' properties must not occur more than once.');
-        }
-        $this->_setProperty($property, $value, $params, true);
-    }
-
-    /**
-     * Sets the value of a property.
-     *
-     * @param string $property  The name of the property.
-     * @param string $value     The value of the property.
-     * @param array $params     Array containing any addition parameters for
-     *                          this property.
-     * @param boolean $add      Whether to add (instead of replace) the value.
-     *
-     * @throws InvalidArgumentException
-     */
-    protected function _setProperty($property, $value, $params = array(), $add = false)
-    {
-        if ($add) {
-            if (!isset($this->_properties[$property]['values'])) {
-                $this->_properties[$property]['values'] = array();
-                $this->_properties[$property]['params'] = array();
-            }
-            $this->_properties[$property]['values'][] = $value;
-            $this->_properties[$property]['params'][] = $params;
-        } else {
-            $this->_properties[$property]['values'] = array($value);
-            $this->_properties[$property]['params'] = $params;
-        }
-    }
-
-    /**
-     * Getter.
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __get($property)
-    {
-        if (!isset($this->_properties[$property])) {
-            throw new InvalidArgumentException($property . ' is not a valid property');
-        }
-        return isset($this->_properties[$property]['values'])
-            ? ($this->_properties[$property]['multiple']
-               ? $this->_properties[$property]['values']
-               : $this->_properties[$property]['values'][0])
-            : null;
-    }
-
-    /**
-     * Returns the value of an property.
-     *
-     * @param string $name     The name of the property.
-     * @param boolean $params  Return the parameters for this property instead
-     *                         of its value.
-     *
-     * @return mixed (object)  PEAR_Error if the property does not exist.
-     *               (string)  The value of the property.
-     *               (array)   The parameters for the property or
-     *                         multiple values for an property.
-     */
-    function getProperty($name, $params = false)
-    {
-        $result = array();
-        foreach ($this->_properties as $property) {
-            if ($property['name'] == $name) {
-                if ($params) {
-                    $result[] = $property['params'];
-                } else {
-                    $result[] = $property['value'];
-                }
-            }
-        }
-        if (!count($result)) {
-            require_once 'PEAR.php';
-            return PEAR::raiseError('Property "' . $name . '" Not Found');
-        } if (count($result) == 1 && !$params) {
-            return $result[0];
-        } else {
-            return $result;
-        }
-    }
-
-    public function getProperties()
-    {
-        return $this->_properties;
-    }
-
-    /**
-     * Validates the complete component for missing properties or invalid
-     * property combinations.
-     *
-     * @throws Horde_Icalendar_Exception
-     */
-    public function validate()
-    {
-        foreach ($this->_properties as $name => $property) {
-            if (!empty($property['required']) && !isset($property['values'])) {
-                switch ($name) {
-                case 'uid':
-                    $this->uid = (string)new Horde_Support_Guid;
-                    break;
-                case 'stamp':
-                    $this->stamp = new Horde_Date(time());
-                    break;
-                default:
-                    // @todo Use LSB (static::__CLASS__) once we require PHP 5.3
-                    $component = Horde_String::upper(str_replace('Horde_Icalendar_', '', get_class($this)));
-                    throw new Horde_Icalendar_Exception('This ' . $component . ' component must have a ' . $name . ' property set');
-                }
-            }
-        }
-    }
-
-    public function current()
-    {
-        return current($this->_properties);
-    }
-
-    public function key()
-    {
-        return key($this->_properties);
-    }
-
-    public function next()
-    {
-        next($this->_properties);
-    }
-
-    public function rewind()
-    {
-        reset($this->_properties);
-    }
-
-    public function valid()
-    {
-        return current($this->_properties) !== false;
-    }
-
-    /**
-     * @todo Use LSB (static::__CLASS__) once we require PHP 5.3
-     */
-    public function export()
-    {
-        $this->validate();
-        $writer = Horde_Icalendar_Writer::factory(
-            str_replace('Horde_Icalendar_', '', get_class($this)),
-            str_replace('.', '', $this->version));
-        return $writer->export($this);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Exception.php b/framework/Icalendar/lib/Horde/Icalendar/Exception.php
deleted file mode 100644 (file)
index 9c7fc1c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class Horde_Icalendar_Exception extends Horde_Exception
-{
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Valarm.php b/framework/Icalendar/lib/Horde/Icalendar/Valarm.php
deleted file mode 100644 (file)
index 5f095b9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-class Horde_Icalendar_Valarm extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            'summary' => array('required' => false,
-                               'multiple' => false,
-                               'type' => 'string'),
-            'description' => array('required' => false,
-                                   'multiple' => false,
-                                   'type' => 'string'));
-        parent::__construct($properties);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vcalendar.php b/framework/Icalendar/lib/Horde/Icalendar/Vcalendar.php
deleted file mode 100644 (file)
index 5092a9b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vcalendar extends Horde_Icalendar_Base
-{
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            // RFC 2445 Section 4.7.1
-            'scale' => array('required' => false,
-                             'multiple' => false,
-                             'type' => 'string'),
-            // RFC 2445 Section 4.7.2
-            'method' => array('required' => false,
-                              'multiple' => false,
-                              'type' => 'string'),
-            // RFC 2445 Section 4.7.3
-            'product' => array('required' => true,
-                               'multiple' => false,
-                               'type' => 'string'),
-            // RFC 2445 Section 4.7.4
-            'version' => array('required' => true,
-                               'multiple' => false,
-                               'type' => 'string'),
-        );
-
-        $properties = array_merge(array('version' => '2.0',
-                                        'product' => '-//The Horde Project//Horde_Icalendar Library//EN'),
-                                  $properties);
-        parent::__construct($properties);
-    }
-
-    /**
-     * Getter.
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __get($property)
-    {
-        $value = parent::__get($property);
-        if ($property == 'scale' && is_null($value)) {
-            $value = 'GREGORIAN';
-        }
-        return $value;
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vevent.php b/framework/Icalendar/lib/Horde/Icalendar/Vevent.php
deleted file mode 100644 (file)
index f3a5417..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vevent extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            'uid' => array('required' => true,
-                           'multiple' => false,
-                           'type' => 'string'),
-            'start' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'startDate' => array('required' => false,
-                                 'multiple' => false,
-                                 'class' => 'Horde_Date'),
-            'stamp' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'summary' => array('required' => false,
-                               'multiple' => false,
-                               'type' => 'string'),
-            'description' => array('required' => false,
-                                   'multiple' => false,
-                                   'type' => 'string'));
-        parent::__construct($properties);
-    }
-
-    /**
-     * Sets the value of a property.
-     *
-     * @param string $property  The name of the property.
-     * @param string $value     The value of the property.
-     * @param array $params     Array containing any addition parameters for
-     *                          this property.
-     * @param boolean $add      Whether to add (instead of replace) the value.
-     *
-     * @throws InvalidArgumentException
-     */
-    protected function _setProperty($property, $value, $params = array(), $add = false)
-    {
-        if ($property == 'startDate') {
-            $this->_validate('start', $value);
-            $property = 'start';
-            $params['value'] = 'date';
-        }
-        parent::_setProperty($property, $value, $params, $add);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vfreebusy.php b/framework/Icalendar/lib/Horde/Icalendar/Vfreebusy.php
deleted file mode 100644 (file)
index d7040d1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vfreebusy extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            'uid' => array('required' => true,
-                           'multiple' => false,
-                           'type' => 'string'),
-            'start' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'stamp' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-        );
-        parent::__construct($properties);
-    }
-
-    /**
-     * Validates a property-value-pair.
-     *
-     * @throws InvalidArgumentException
-     */
-    protected function _validate($property, &$value)
-    {
-        parent::_validate($property, $value);
-        if ($property == 'start') {
-            $value->setTimezone('UTC');
-        }
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vjournal.php b/framework/Icalendar/lib/Horde/Icalendar/Vjournal.php
deleted file mode 100644 (file)
index 094d91f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vjournal extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            'uid' => array('required' => true,
-                           'multiple' => false,
-                           'type' => 'string'),
-            'stamp' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'summary' => array('required' => false,
-                               'multiple' => false,
-                               'type' => 'string'),
-            'description' => array('required' => false,
-                                   'multiple' => false,
-                                   'type' => 'string'));
-        parent::__construct($properties);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vtimezone.php b/framework/Icalendar/lib/Horde/Icalendar/Vtimezone.php
deleted file mode 100644 (file)
index 86f06c1..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vtimezone extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            /*
-   Within the "VTIMEZONE" calendar component, this property defines the
-   effective start date and time for a time zone specification. This
-   property is REQUIRED within each STANDARD and DAYLIGHT part included
-   in "VTIMEZONE" calendar components and MUST be specified as a local
-   DATE-TIME without the "TZID" property parameter.
-            */
-            'start' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-        );
-        parent::__construct($properties);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Vtodo.php b/framework/Icalendar/lib/Horde/Icalendar/Vtodo.php
deleted file mode 100644 (file)
index ee4e74b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-class Horde_Icalendar_Vtodo extends Horde_Icalendar_Base
-{
-    /**
-     * Constructor.
-     */
-    public function __construct($properties = array())
-    {
-        $this->_properties += array(
-            'uid' => array('required' => true,
-                           'multiple' => false,
-                           'type' => 'string'),
-            'start' => array('required' => false,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'startDate' => array('required' => false,
-                                 'multiple' => false,
-                                 'class' => 'Horde_Date'),
-            'stamp' => array('required' => true,
-                             'multiple' => false,
-                             'class' => 'Horde_Date'),
-            'summary' => array('required' => false,
-                               'multiple' => false,
-                               'type' => 'string'),
-            'description' => array('required' => false,
-                                   'multiple' => false,
-                                   'type' => 'string'));
-        parent::__construct($properties);
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Writer.php b/framework/Icalendar/lib/Horde/Icalendar/Writer.php
deleted file mode 100644 (file)
index d59d3ed..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-class Horde_Icalendar_Writer
-{
-
-    /**
-     * Attempts to return a concrete Horde_Icalendar_Writer instance based on
-     * $format and $version.
-     *
-     * @param mixed $format   The format that the writer should output.
-     * @param array $version  The format version.
-     *
-     * @return Horde_Icalendar_Writer  The newly created concrete instance.
-     *
-     * @throws Horde_Icalendar_Exception
-     */
-    static public function factory($format, $version)
-    {
-        $class = 'Horde_Icalendar_Writer_' . $format . '_' . $version;
-        if (class_exists($class)) {
-            return new $class($params);
-        }
-
-        throw new Horde_Icalendar_Exception($class . ' not found.');
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Writer/Base.php b/framework/Icalendar/lib/Horde/Icalendar/Writer/Base.php
deleted file mode 100644 (file)
index bf5a9bd..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-abstract class Horde_Icalendar_Writer_Base
-{
-    protected $_propertyMap = array();
-
-    protected $_output = '';
-
-    public function export($object)
-    {
-        $this->_output = '';
-        $this->_exportComponent($object);
-        return $this->_output;
-    }
-
-    protected function _exportComponent($object)
-    {
-        $basename = Horde_String::upper(str_replace('Horde_Icalendar_', '', get_class($object)));
-        $this->_output .= 'BEGIN:' . $basename . "\n";
-        foreach ($object as $name => $property) {
-            $this->_exportProperty($name, $property);
-        }
-        foreach ($object->components as $component) {
-            $this->_exportComponent($component);
-        }
-        $this->_output .= 'END:' . $basename . "\n";
-        return $this->_output;
-    }
-
-    protected function _exportProperty($name, $property)
-    {
-        if (isset($property['values'])) {
-            if (isset($this->_propertyMap[$name])) {
-                $name = $this->_propertyMap[$name];
-            }
-            foreach ($property['values'] as $value) {
-                $this->_output .= Horde_String::upper($name) . ':' . $value . "\n";
-            }
-        }
-    }
-
-}
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Writer/Vcalendar/20.php b/framework/Icalendar/lib/Horde/Icalendar/Writer/Vcalendar/20.php
deleted file mode 100644 (file)
index 645929f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-class Horde_Icalendar_Writer_Vcalendar_20 extends Horde_Icalendar_Writer_Base
-{
-    protected $_propertyMap = array('product' => 'PRODID',
-                                    'start' => 'DTSTART',
-                                    'stamp' => 'DTSTAMP');
-
-    protected function _exportProperty($name, $property)
-    {
-        if (!isset($property['values'])) {
-            return;
-        }
-        if (isset($property['class']) && $property['class'] == 'Horde_Date') {
-            if (isset($this->_propertyMap[$name])) {
-                $name = $this->_propertyMap[$name];
-            }
-            foreach ($property['values'] as $value) {
-                $this->_output .= Horde_String::upper($name) . ':' . $value->format('Ymd\THms\Z') . "\n";
-            }
-        } else {
-            parent::_exportProperty($name, $property);
-        }
-    }
-
-}
diff --git a/framework/Icalendar/test/Horde/Icalendar/AllTests.php b/framework/Icalendar/test/Horde/Icalendar/AllTests.php
deleted file mode 100644 (file)
index 335c391..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * @category   Horde
- * @package    Horde_Icalendar
- * @subpackage UnitTests
- * @copyright  2009 The Horde Project (http://www.horde.org/)
- * @license    http://www.fsf.org/copyleft/lgpl.html
- */
-
-/**
- * Define the main method
- */
-if (!defined('PHPUnit_MAIN_METHOD')) {
-    define('PHPUnit_MAIN_METHOD', 'Horde_Icalendar_AllTests::main');
-}
-
-/**
- * Prepare the test setup.
- */
-require_once 'Horde/Test/AllTests.php';
-
-/**
- * @package    Horde_Icalendar
- * @subpackage UnitTests
- */
-class Horde_Icalendar_AllTests extends Horde_Test_AllTests
-{
-}
-
-if (PHPUnit_MAIN_METHOD == 'Horde_Icalendar_AllTests::main') {
-    Horde_Icalendar_AllTests::main('Horde_Icalendar', __FILE__);
-}
diff --git a/framework/Icalendar/test/Horde/Icalendar/WriterTest.php b/framework/Icalendar/test/Horde/Icalendar/WriterTest.php
deleted file mode 100644 (file)
index 3d30fde..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/**
- * @category   Horde
- * @package    Horde_Icalendar
- * @subpackage UnitTests
- * @copyright  2009 The Horde Project (http://www.horde.org/)
- * @license    http://www.fsf.org/copyleft/lgpl.html
- */
-
-/**
- * @category   Horde
- * @package    Horde_Icalendar
- * @subpackage UnitTests
- */
-class Horde_Icalendar_WriterTest extends Horde_Test_Case
-{
-    public function setUp()
-    {
-    }
-
-    public function testEscapes()
-    {
-        $ical = new Horde_Icalendar_Vcalendar(array('version' => '2.0'));
-        $event1 = new Horde_Icalendar_Vevent();
-        $event2 = new Horde_Icalendar_Vevent();
-
-        $event1->uid = '20041120-8550-innerjoin-org';
-        $event1->startDate = new Horde_Date(array('year' => 2005, 'month' => 5, 'mday' => 3));
-        $event1->stamp = new Horde_Date(array('year' => 2004, 'month' => 11, 'mday' => 20));
-        $event1->summary = 'Escaped Comma in Description Field';
-        $event1->description = 'There is a comma (escaped with a baskslash) in this sentence and some important words after it, see anything here?';
-
-        $event2->uid = '20041120-8549-innerjoin-org';
-        $event2->startDate = new Horde_Date(array('year' => 2005, 'month' => 5, 'mday' => 4));
-        $event2->stamp = new Horde_Date(array('year' => 2004, 'month' => 11, 'mday' => 20));
-        $event2->summary = 'Dash (rather than Comma) in the Description Field';
-        $event2->description = 'There are important words after this dash - see anything here or have the words gone?';
-
-        $ical->components[] = $event1;
-        $ical->components[] = $event2;
-
-        $this->assertEquals('BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//The Horde Project//Horde_iCalendar Library//EN
-METHOD:PUBLISH
-BEGIN:VEVENT
-UID:20041120-8550-innerjoin-org
-DTSTART;VALUE=DATE:20050503
-DTSTAMP:20041120T000000Z
-SUMMARY:Escaped Comma in Description Field
-DESCRIPTION:There is a comma (escaped with a baskslash) in this sentence
-  and some important words after it\, see anything here?
-END:VEVENT
-BEGIN:VEVENT
-UID:20041120-8549-innerjoin-org
-DTSTART;VALUE=DATE:20050504
-DTSTAMP:20041120T000000Z
-SUMMARY:Dash (rather than Comma) in the Description Field
-DESCRIPTION:There are important words after this dash - see anything here
-  or have the words gone?
-END:VEVENT
-END:VCALENDAR',
-                            $ical->export());
-    }
-
-}
\ No newline at end of file