Improve iCalendar feed to include tasks with start/end date and due date with a time
This commit is contained in:
@@ -8,6 +8,7 @@ use Eluceo\iCal\Component\Event;
|
||||
use Eluceo\iCal\Property\Event\Attendees;
|
||||
use Eluceo\iCal\Property\Event\Organizer;
|
||||
use Kanboard\Core\Filter\FormatterInterface;
|
||||
use PicoDb\Table;
|
||||
|
||||
/**
|
||||
* iCal event formatter for tasks
|
||||
@@ -15,15 +16,15 @@ use Kanboard\Core\Filter\FormatterInterface;
|
||||
* @package formatter
|
||||
* @author Frederic Guillot
|
||||
*/
|
||||
class TaskICalFormatter extends BaseTaskCalendarFormatter implements FormatterInterface
|
||||
class TaskICalFormatter extends BaseFormatter implements FormatterInterface
|
||||
{
|
||||
/**
|
||||
* Calendar object
|
||||
*
|
||||
* @access private
|
||||
* @access protected
|
||||
* @var \Eluceo\iCal\Component\Calendar
|
||||
*/
|
||||
private $vCalendar;
|
||||
protected $vCalendar;
|
||||
|
||||
/**
|
||||
* Get Ical events
|
||||
@@ -41,7 +42,7 @@ class TaskICalFormatter extends BaseTaskCalendarFormatter implements FormatterIn
|
||||
*
|
||||
* @access public
|
||||
* @param \Eluceo\iCal\Component\Calendar $vCalendar
|
||||
* @return FormatterInterface
|
||||
* @return $this
|
||||
*/
|
||||
public function setCalendar(Calendar $vCalendar)
|
||||
{
|
||||
@@ -53,18 +54,21 @@ class TaskICalFormatter extends BaseTaskCalendarFormatter implements FormatterIn
|
||||
* Transform results to iCal events
|
||||
*
|
||||
* @access public
|
||||
* @return FormatterInterface
|
||||
* @param Table $query
|
||||
* @param string $startColumn
|
||||
* @param string $endColumn
|
||||
* @return $this
|
||||
*/
|
||||
public function addDateTimeEvents()
|
||||
public function addTasksWithStartAndDueDate(Table $query, $startColumn, $endColumn)
|
||||
{
|
||||
foreach ($this->query->findAll() as $task) {
|
||||
foreach ($query->findAll() as $task) {
|
||||
$start = new DateTime;
|
||||
$start->setTimestamp($task[$this->startColumn]);
|
||||
$start->setTimestamp($task[$startColumn]);
|
||||
|
||||
$end = new DateTime;
|
||||
$end->setTimestamp($task[$this->endColumn] ?: time());
|
||||
$end->setTimestamp($task[$endColumn] ?: time());
|
||||
|
||||
$vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-'.$this->startColumn.'-'.$this->endColumn);
|
||||
$vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-'.$startColumn.'-'.$endColumn);
|
||||
$vEvent->setDtStart($start);
|
||||
$vEvent->setDtEnd($end);
|
||||
|
||||
@@ -78,18 +82,22 @@ class TaskICalFormatter extends BaseTaskCalendarFormatter implements FormatterIn
|
||||
* Transform results to all day iCal events
|
||||
*
|
||||
* @access public
|
||||
* @return FormatterInterface
|
||||
* @param Table $query
|
||||
* @return $this
|
||||
*/
|
||||
public function addFullDayEvents()
|
||||
public function addTasksWithDueDateOnly(Table $query)
|
||||
{
|
||||
foreach ($this->query->findAll() as $task) {
|
||||
foreach ($query->findAll() as $task) {
|
||||
$date = new DateTime;
|
||||
$date->setTimestamp($task[$this->startColumn]);
|
||||
$date->setTimestamp($task['date_due']);
|
||||
|
||||
$vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-'.$this->startColumn);
|
||||
$vEvent = $this->getTaskIcalEvent($task, 'task-#'.$task['id'].'-date_due');
|
||||
$vEvent->setDtStart($date);
|
||||
$vEvent->setDtEnd($date);
|
||||
$vEvent->setNoTime(true);
|
||||
|
||||
if ($date->format('Hi') === '0000') {
|
||||
$vEvent->setNoTime(true);
|
||||
}
|
||||
|
||||
$this->vCalendar->addComponent($vEvent);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user