Initial commit
This commit is contained in:
commit
3a59408fc5
6 changed files with 2988 additions and 0 deletions
218
ICal/Event.php
Normal file
218
ICal/Event.php
Normal file
|
@ -0,0 +1,218 @@
|
|||
<?php
|
||||
|
||||
namespace ICal;
|
||||
|
||||
class Event
|
||||
{
|
||||
// phpcs:disable Generic.Arrays.DisallowLongArraySyntax
|
||||
|
||||
const HTML_TEMPLATE = '<p>%s: %s</p>';
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/summary.html
|
||||
*
|
||||
* @var $summary
|
||||
*/
|
||||
public $summary;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/dtstart.html
|
||||
*
|
||||
* @var $dtstart
|
||||
*/
|
||||
public $dtstart;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/dtend.html
|
||||
*
|
||||
* @var $dtend
|
||||
*/
|
||||
public $dtend;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/duration.html
|
||||
*
|
||||
* @var $duration
|
||||
*/
|
||||
public $duration;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/dtstamp.html
|
||||
*
|
||||
* @var $dtstamp
|
||||
*/
|
||||
public $dtstamp;
|
||||
|
||||
/**
|
||||
* When the event starts, represented as a timezone-adjusted string
|
||||
*
|
||||
* @var $dtstart_tz
|
||||
*/
|
||||
public $dtstart_tz;
|
||||
|
||||
/**
|
||||
* When the event ends, represented as a timezone-adjusted string
|
||||
*
|
||||
* @var $dtend_tz
|
||||
*/
|
||||
public $dtend_tz;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/uid.html
|
||||
*
|
||||
* @var $uid
|
||||
*/
|
||||
public $uid;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/created.html
|
||||
*
|
||||
* @var $created
|
||||
*/
|
||||
public $created;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/lastModified.html
|
||||
*
|
||||
* @var $lastmodified
|
||||
*/
|
||||
public $lastmodified;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/description.html
|
||||
*
|
||||
* @var $description
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/location.html
|
||||
*
|
||||
* @var $location
|
||||
*/
|
||||
public $location;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/sequence.html
|
||||
*
|
||||
* @var $sequence
|
||||
*/
|
||||
public $sequence;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/status.html
|
||||
*
|
||||
* @var $status
|
||||
*/
|
||||
public $status;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/transp.html
|
||||
*
|
||||
* @var $transp
|
||||
*/
|
||||
public $transp;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/organizer.html
|
||||
*
|
||||
* @var $organizer
|
||||
*/
|
||||
public $organizer;
|
||||
|
||||
/**
|
||||
* https://www.kanzaki.com/docs/ical/attendee.html
|
||||
*
|
||||
* @var $attendee
|
||||
*/
|
||||
public $attendee;
|
||||
|
||||
/**
|
||||
* Creates the Event object
|
||||
*
|
||||
* @param array $data
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $data = array())
|
||||
{
|
||||
foreach ($data as $key => $value) {
|
||||
$variable = self::snakeCase($key);
|
||||
$this->{$variable} = self::prepareData($value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the data for output
|
||||
*
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function prepareData($value)
|
||||
{
|
||||
if (is_string($value)) {
|
||||
return stripslashes(trim(str_replace('\n', "\n", $value)));
|
||||
} elseif (is_array($value)) {
|
||||
return array_map('self::prepareData', $value);
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Event data excluding anything blank
|
||||
* within an HTML template
|
||||
*
|
||||
* @param string $html HTML template to use
|
||||
* @return string
|
||||
*/
|
||||
public function printData($html = self::HTML_TEMPLATE)
|
||||
{
|
||||
$data = array(
|
||||
'SUMMARY' => $this->summary,
|
||||
'DTSTART' => $this->dtstart,
|
||||
'DTEND' => $this->dtend,
|
||||
'DTSTART_TZ' => $this->dtstart_tz,
|
||||
'DTEND_TZ' => $this->dtend_tz,
|
||||
'DURATION' => $this->duration,
|
||||
'DTSTAMP' => $this->dtstamp,
|
||||
'UID' => $this->uid,
|
||||
'CREATED' => $this->created,
|
||||
'LAST-MODIFIED' => $this->lastmodified,
|
||||
'DESCRIPTION' => $this->description,
|
||||
'LOCATION' => $this->location,
|
||||
'SEQUENCE' => $this->sequence,
|
||||
'STATUS' => $this->status,
|
||||
'TRANSP' => $this->transp,
|
||||
'ORGANISER' => $this->organizer,
|
||||
'ATTENDEE(S)' => $this->attendee,
|
||||
);
|
||||
|
||||
// Remove any blank values
|
||||
$data = array_filter($data);
|
||||
|
||||
$output = '';
|
||||
|
||||
foreach ($data as $key => $value) {
|
||||
$output .= sprintf($html, $key, $value);
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the given input to snake_case
|
||||
*
|
||||
* @param string $input
|
||||
* @param string $glue
|
||||
* @param string $separator
|
||||
* @return string
|
||||
*/
|
||||
protected static function snakeCase($input, $glue = '_', $separator = '-')
|
||||
{
|
||||
$input = preg_split('/(?<=[a-z])(?=[A-Z])/x', $input);
|
||||
$input = implode($glue, $input);
|
||||
$input = str_replace($separator, $glue, $input);
|
||||
|
||||
return strtolower($input);
|
||||
}
|
||||
}
|
2637
ICal/ICal.php
Normal file
2637
ICal/ICal.php
Normal file
File diff suppressed because it is too large
Load diff
15
ICal/LICENSE
Normal file
15
ICal/LICENSE
Normal file
|
@ -0,0 +1,15 @@
|
|||
The MIT License (MIT)
|
||||
Copyright (c) 2018
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
Loading…
Add table
Add a link
Reference in a new issue