jihoun/calendar

View on GitHub
src/Property/ExceptionDateTimes.php

Summary

Maintainability
A
45 mins
Test Coverage
<?php
namespace Jihoun\Calendar\Property;

/**
 * This property defines the list of DATE-TIME exceptions for recurring events,
 * to-dos, journal entries, or time zone definitions.
 */
class ExceptionDateTimes extends IProperty
{
    const NAME = 'EXDATE';
    
    protected $valueparam = null; //"VALUE" "=" ("DATE-TIME" / "DATE")) /
    protected $tzidparam = null;

    protected $values = array();
    protected $fullDay;

    public function __construct($fullDay = false)
    {
        $this->fullDay = boolval($fullDay);
        if ($this->fullDay) {
            $this->valueparam = \Jihoun\Calendar\Parameter\ValueDataTypes::date();
        } else {
            $this->valueparam = \Jihoun\Calendar\Parameter\ValueDataTypes::dateTime();
        }
    }

    public function getValue()
    {
        if (empty($this->values)) {
            return null;
        } else {
            $res = '';
            foreach ($this->values as $value) {
                if ($this->fullDay) {
                    $res .= $value->format('Ymd,');
                } else {
                    $res .= $value->format('Ymd\THis\Z,');
                }
            }
            // remove last comma
            return substr($res, 0, -1);
        }
    }

    public function addValue(\DateTime $dt)
    {
        $this->values[] = $dt;
    }

    public function getParams()
    {
        return array($this->valueparam, $this->tzidparam);
    }
}