Giter Site home page Giter Site logo

ics-parser's Introduction

PHP ICS Parser

Latest Stable Release Total Downloads Reference Status Dependency Status


Installation

Requirements

  • PHP 5 (≥ 5.3.0)
  • Valid ICS (.ics, .ical, .ifb) file

Setup

  • Install Composer
    • Add the following dependency to composer.json

      • ⚠️ Note with Composer the owner is johngrogg and not u01jmg3
    • To access new features require dev-master

      {
          "require": {
              "johngrogg/ics-parser": "^2"
          }
      }

How to use

How to instantiate the Parser

What will the parser return?

  • Each key/value pair from the iCal file will be parsed creating an associative array for both the calendar and every event it contains.

  • Also injected will be content under dtstart_tz and dtend_tz for accessing start and end dates with time zone data applied.

  • Where possible DateTime objects are used and returned.

    // Dump the whole calendar
    var_dump($ical->cal);
    
    // Dump every event
    var_dump($ical->events());
  • Also included are special {property}_array arrays which further resolve the contents of a key/value pair.

    // Dump a parsed event's start date
    var_dump($event->dtstart_array);
    
    // array (size=4)
    //   0 =>
    //     array (size=1)
    //       'TZID' => string 'America/Detroit' (length=15)
    //   1 => string '20160409T090000' (length=15)
    //   2 => int 1460192400
    //   3 => string 'TZID=America/Detroit:20160409T090000' (length=36)

API

ICal API

Variables

Name Description Configurable Default Value
$defaultSpan The value in years to use for indefinite, recurring events 2
$defaultTimeZone Enables customisation of the default time zone System default
$defaultWeekStart The two letter representation of the first day of the week MO
$disableCharacterReplacement Toggles whether to disable all character replacement false
$skipRecurrence Toggles whether to skip the parsing of recurrence rules false
$useTimeZoneWithRRules Toggles whether to use time zone info when parsing recurrence rules false
$alarmCount Tracks the number of alarms in the current iCal feed N/A
$cal The parsed calendar N/A
$eventCount Tracks the number of events in the current iCal feed N/A
$freeBusyCount Tracks the free/busy count in the current iCal feed N/A
$todoCount Tracks the number of todos in the current iCal feed N/A

Methods

Method Parameter(s) Visibility Description
__construct $files = false, $options = array() public Creates the ICal object
initFile $file protected Initialises lines from a file
initLines $lines protected Initialises the parser using an array containing each line of iCal content
initString $string protected Initialises lines from a string
initUrl $url protected Initialises lines from a URL
addCalendarComponentWithKeyAndValue $component, $keyword, $value protected Add one key and value pair to the $this->cal array
calendarDescription - public Returns the calendar description
calendarName - public Returns the calendar name
calendarTimeZone $ignoreUtc public Returns the calendar time zone
cleanData $data protected Replaces curly quotes and other special characters with their standard equivalents
convertDayOrdinalToPositive $dayNumber, $weekday, $timestamp protected Converts a negative day ordinal to its equivalent positive form
eventsFromInterval $interval public Returns a sorted array of events following a given string, or false if no events exist in the range
eventsFromRange $rangeStart = false, $rangeEnd = false public Returns a sorted array of events in a given range, or an empty array if no events exist in the range
events - public Returns an array of Events
fileOrUrl $filename protected Reads an entire file or URL into an array
freeBusyEvents - public Returns an array of arrays with all free/busy events
hasEvents - public Returns a boolean value whether the current calendar has events or not
iCalDateToDateTime $icalDate, $forceTimeZone = false, $forceUtc = false public Returns a DateTime object from an iCal date time format
iCalDateToUnixTimestamp $icalDate, $forceTimeZone = false, $forceUtc = false public Returns a Unix timestamp from an iCal date time format
iCalDateWithTimeZone $event, $key, $format = DATE_TIME_FORMAT public Returns a date adapted to the calendar time zone depending on the event TZID
isExdateMatch $exdate, $anEvent, $recurringOffset protected Checks if an excluded date matches a given date by reconciling time zones
isFileOrUrl $filename protected Checks if a filename exists as a file or URL
isValidDate $value public Checks if a date string is a valid date
isValidTimeZoneId $timeZone protected Checks if a time zone is valid
keyValueFromString $text protected Gets the key value pair from an iCal string
mb_chr $code protected Provides a polyfill for PHP 7.2's mb_chr(), which is a multibyte safe version of chr()
mb_str_replace $search, $replace, $subject, $count = 0 protected Replaces all occurrences of a search string with a given replacement string
numberOfDays $days, $start, $end protected Gets the number of days between a start and end date
parseDuration $date, $duration, $format = 'U' protected Parses a duration and applies it to a date
parseExdates $event public Parses a list of excluded dates to be applied to an Event
processDateConversions - protected Processes date conversions using the time zone
processEventIcalDateTime $event, $index = 3 protected Extends the {DTSTART|DTEND|RECURRENCE-ID}_array array to include an iCal date time for each event
processEvents - protected Performs admin tasks on all events as read from the iCal file
processRecurrences - protected Processes recurrence rules
removeUnprintableChars $data protected Removes unprintable ASCII and UTF-8 characters
sortEventsWithOrder $events, $sortOrder = SORT_ASC public Sorts events based on a given sort order
trimToRecurrenceCount $rrules, $recurrenceEvents protected Ensures the recurrence count is enforced against generated recurrence events
unfold $lines protected Unfolds an iCal file in preparation for parsing

Constants

Name Description
DATE_TIME_FORMAT_PRETTY Default pretty date time format to use
DATE_TIME_FORMAT Default date time format to use
ICAL_DATE_TIME_TEMPLATE String template to generate an iCal date time
RECURRENCE_EVENT Used to isolate generated recurrence events
SECONDS_IN_A_WEEK The number of seconds in a week
TIME_FORMAT Default time format to use
TIME_ZONE_UTC UTC time zone string
UNIX_FORMAT Unix timestamp date format
UNIX_MIN_YEAR The year Unix time began

Event API (extends ICal API)

Methods

Method Parameter(s) Visibility Description
__construct $data = array() public Creates the Event object
prepareData $value protected Prepares the data for output
printData $html = HTML_TEMPLATE public Returns Event data excluding anything blank within an HTML template
snakeCase $input, $glue = '_', $separator = '-' protected Converts the given input to snake_case

Constants

Name Description
HTML_TEMPLATE String template to use when pretty printing content

Credits

  • Jonathan Goode (programming, bug fixing, enhancement, coding standard)
  • John Grogg (programming, addition of event recurrence handling)
  • Frank Gregor (programming, feedback, testing)
  • Martin Thoma (programming, bug fixing, project management, initial concept)

Tools for Testing

ics-parser's People

Contributors

u01jmg3 avatar johngrogg avatar grimmlink avatar s0600204 avatar bairdj avatar jandor64 avatar jeromecombes avatar tkoop avatar antoniocoratelli avatar scrivna avatar dxdc avatar anmolagar avatar pocketarc avatar daniruizcamacho avatar big-shark avatar punkstar avatar nmxcgeo avatar philip avatar phalkunz avatar tiefpunkt avatar torstehu avatar lucafilosofi avatar asakapab0i avatar easy-es avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.