Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Reformat code to PSR-2 standard
  • Loading branch information
Synchro committed Jan 9, 2015
1 parent ecce82a commit 65784d1
Showing 1 changed file with 92 additions and 77 deletions.
169 changes: 92 additions & 77 deletions extras/EasyPeasyICS.php
@@ -1,90 +1,105 @@
<?php
/**
* EasyPeasyICS Simple ICS/vCal data generator.
* @author Marcus Bointon <phpmailer@synchromedia.co.uk>
* @author Manuel Reinhard <manu@sprain.ch>
*
* Built with inspiration from
* http://stackoverflow.com/questions/1463480/how-can-i-use-php-to-dynamically-publish-an-ical-file-to-be-read-by-google-calend/1464355#1464355
* History:
* 2010/12/17 - Manuel Reinhard - when it all started
* 2014 PHPMailer project becomes maintainer
*/

/* ------------------------------------------------------------------------ */
/* EasyPeasyICS
/* ------------------------------------------------------------------------ */
/* Manuel Reinhard, manu@sprain.ch
/* Twitter: @sprain
/* Web: www.sprain.ch
/*
/* Built with inspiration by
/" http://stackoverflow.com/questions/1463480/how-can-i-use-php-to-dynamically-publish-an-ical-file-to-be-read-by-google-calend/1464355#1464355
/* ------------------------------------------------------------------------ */
/* History:
/* 2010/12/17 - Manuel Reinhard - when it all started
/* ------------------------------------------------------------------------ */
/**
* Class EasyPeasyICS.
* Simple ICS data generator
* @package phpmailer
* @subpackage easypeasyics
*/
class EasyPeasyICS
{
/**
* The name of the calendar
* @type string
*/
protected $calendarName;
/**
* The array of events to add to this calendar
* @type array
*/
protected $events = array();

class EasyPeasyICS {
/**
* Constructor
* @param string $calendarName
*/
public function __construct($calendarName = "")
{
$this->calendarName = $calendarName;
}

protected $calendarName;
protected $events = array();

/**
* Add an event to the calendar.
* @param string $start Time string for the start date and time - anything that strtotime() can parse
* @param string $end Time string for the end date and time - anything that strtotime() can parse
* @param string $summary A summary of the event
* @param string $description A description of the event
* @param string $url A URL for the event
*/
public function addEvent($start, $end, $summary = "", $description = "", $url = "")
{
$this->events[] = array(
"start" => $start,
"end" => $end,
"summary" => $summary,
"description" => $description,
"url" => $url
);
}

/**
* Constructor
* @param string $calendarName
*/
public function __construct($calendarName=""){
$this->calendarName = $calendarName;
}//function
/**
* Render a vcal string.
* @param bool $output Whether to output the calendar data directly (the default) or to return it.
* @return string
*/
public function render($output = true)
{
$ics = '';


/**
* Add event to calendar
* @param string $calendarName
*/
public function addEvent($start, $end, $summary="", $description="", $url=""){
$this->events[] = array(
"start" => $start,
"end" => $end,
"summary" => $summary,
"description" => $description,
"url" => $url
);
}//function


public function render($output = true){

//start Variable
$ics = "";

//Add header
$ics .= "BEGIN:VCALENDAR
//Add header
$ics .= "BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
X-WR-CALNAME:".$this->calendarName."
X-WR-CALNAME:" . $this->calendarName . "
PRODID:-//hacksw/handcal//NONSGML v1.0//EN";
//Add events
foreach($this->events as $event){
$ics .= "

//Add events
foreach ($this->events as $event) {
$ics .= "
BEGIN:VEVENT
UID:". md5(uniqid(mt_rand(), true)) ."@EasyPeasyICS.php
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:".gmdate('Ymd', $event["start"])."T".gmdate('His', $event["start"])."Z
DTEND:".gmdate('Ymd', $event["end"])."T".gmdate('His', $event["end"])."Z
SUMMARY:".str_replace("\n", "\\n", $event['summary'])."
DESCRIPTION:".str_replace("\n", "\\n", $event['description'])."
URL;VALUE=URI:".$event['url']."
UID:" . md5(uniqid(mt_rand(), true)) . "@EasyPeasyICS.php
DTSTAMP:" . gmdate('Ymd') . 'T' . gmdate('His') . "Z
DTSTART:" . gmdate('Ymd', $event["start"]) . "T" . gmdate('His', $event["start"]) . "Z
DTEND:" . gmdate('Ymd', $event["end"]) . "T" . gmdate('His', $event["end"]) . "Z
SUMMARY:" . str_replace("\n", "\\n", $event['summary']) . "
DESCRIPTION:" . str_replace("\n", "\\n", $event['description']) . "
URL;VALUE=URI:" . $event['url'] . "
END:VEVENT";
}//foreach


//Footer
$ics .= "
END:VCALENDAR";
}

//Add footer
$ics .= "
END:VCALENDAR";

if ($output) {
//Output
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename='.$this->calendarName.'.ics');
echo $ics;
} else {
return $ics;
}

}//function

}//class
if ($output) {
//Output
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=' . $this->calendarName . '.ics');
echo $ics;
return '';
} else {
return $ics;
}
}
}

0 comments on commit 65784d1

Please sign in to comment.