fangel / sg-icalendar Goto Github PK
View Code? Open in Web Editor NEWA PHP5 OOP iCalendar parser
Home Page: http://sevengoslings.net/icalendar
A PHP5 OOP iCalendar parser
Home Page: http://sevengoslings.net/icalendar
Hi - it looks like the code to process SUMMARY lines in .ics calendar files that extend beyond one line has a bug. The bug manifests when the last character on the line is a space.So, the following SUMMARY from an ics file which has a last character as a space:
SUMMARY:England Football Internationals: World Cup 2010 Qualifier: England
v Ukraine
will produce ...Englandv Ukraine
When there isn't a space, it works fine, so:
SUMMARY:England Football Internationals: World Cup 2010 Qualifier: Kazakhst
an v England
will produce ...Kazakhstan v England correctly.
I don't know if other fields, such as DESCRIPTION has the same problem, but I guess if it calls the same function SG_iCal_Line __construct, then it will.
Calendar names are properly displayed in the legend but they are not properly displayed in the pick multiple area (they are displayed via their filename).
On line 182 of calendar_functions.php external calendars are simply named by their file name. When the calendar is parsed this should be corrected in the 'X-WR-CALNAME' case on line 414 of ical_parser.php. In this case $actual_calname is properly saved and used for the legend, however the $cal_displaynames is not being saved properly as according to what I have seen $cal_displaynames does not refer to anything.
Hi, I found bug in helpers/SG_iCal_Freq.php in function findNext on line 264.
if( $imm > $offset && $imm < $eop && ($_t == null || $imm < $_t) ) {
I think, second condition must be $imm <= $eop
so as it is wrong recurrence in some cases. For example there is RRULE:
"FREQ=WEEKLY;COUNT=5;INTERVAL=1;BYDAY=SU,MO"
and start date for occurence is
"2014-04-06 00:00:00" and end date
"2014-04-06 01:00:00".
So for this RRULE and this start date function getAllOccurrences() gives us results:
string(19) "2014-04-06 00:00:00"
string(19) "2014-04-13 00:00:00"
string(19) "2014-04-20 00:00:00"
string(19) "2014-04-27 00:00:00"
string(19) "2014-05-04 00:00:00"
So you can see, that all Mondays is fully ignored! (For BYDAY=SU,TU or SU,WE or any other day of week all works fine.) It is so, because condition
"$imm < $eop" is strict.
When I set "$imm <= $eop" all works fine for ;BYDAY=SU,MO also and Mondays walk into result array of occurrences.
If the event is repetative but contains no until rule, SG_iCal_Freq::getNext runs endlessly. I suggest putting a limit in place to counter such events causing out of memory errors
Greetings. I'm trying to use this parser with Yii framework but a strange problem is happening. When i load the ics file, outside the framework project directory, i get the entire calendar displayed in the demo. But, when i try to load it within the framework, i get this error:
"date_default_timezone_set(): Timezone ID '/mozilla.org/20071231_1/Europe/London' is invalid"
the ics file is this one:
http://www.gulbenkian.pt/calendar/eventos.ics
I'm currently testing the library against a number of caldav servers. The OSAF server, Cosmo, creates durations as
DURATION:P17D
which creates PHP error messages "PHP Notice: Undefined offset: {n} in SG_iCal_Duration.php on line {m}
where n is usually 7,9,11 dependent upon the passed duration, whilst m is line 27.28.29 for the same reason.
FIX The fix is simple. Use isset() function around the array allocation. Fixed code below.
public function __construct( $duration ) {
if( $duration{0} == 'P' || (($duration{0} == '+' || $duration{0} == '-') && $duration{1} == 'P') ) {
preg_match('/P((\d+)W)?((\d+)D)?(T)?((\d+)H)?((\d+)M)?((\d+)S)?/', $duration, $matches);
$results = array('weeks'=>isset($matches[2]) ? (int)$matches[2] : 0,
'days'=>isset($matches[4]) ? (int)$matches[4] : 0,
'hours'=>isset($matches[7]) ? (int)$matches[7] : 0,
'minutes'=>isset($matches[9]) ? (int)$matches[9] : 0,
'seconds'=>isset($matches[11]) ? (int)$matches[11] : 0);
hello i've got 2 PHP Warning:
in_array() expects parameter 2 to be array, null given in SG_iCal_Freq.php on line 487
in_array() expects parameter 2 to be array, null given in SG_iCal_Freq.php on line 291
solution
if (is_array($this->excluded)) {
.....
}
best regards
Hi,
our plugin was delisted from wordpress.org as we use your library and your library licence is not gpl compatible.
We were wondering why you choose a CC licence and if we could do something to make your code gpl. Thanks in advance.
There is a problem in the SG_iCal_VTimeZone::getActive() function...
removing the previousOccurrence() calls take the script duration to 11ms :)
For some reason all of the unit tests are failing. Looking into the cause...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.