Print

Print


There's some complaints about this on the mailing list but it is not clear if it was solved.  I would try checking to see if you have the latest version.  The home page for this project seems to have a few dead links so I don't know how active it is.

Like Alex said, cast the $seconds or do something like adding by zero or multiplying by 1 to force the conversion into a numeric type.

Hopefully though the latest version addresses this.  (It would be interesting to try to figure out why PHP5 is casting just that part as a string, but sadly I don't have time for that.)


Jon Gorman

---- Original message ----
>Date: Tue, 1 Jul 2008 07:42:31 -0400
>From: Nicole Engard <[log in to unmask]>  
>Subject: [CODE4LIB] PHP5 Help  
>To: [log in to unmask]
>
>I am missing something right in front of my eyes.  I'm rusty on my
>PHP, I'm wondering if someone can help me with this error:
>
>Warning: gmmktime() expects parameter 3 to be long, string given in
>/public_html/magpierss-0.72/rss_utils.inc on line 35
>
>I went through the manual and didn't see anything wrong with the code below.
>
>###FROM MY PHP:
>
>$del_user = 'nengard';						# del.icio.us username
>
># Use magpie to get del.icio.us links via RSS
>$feed = fetch_rss('http://del.icio.us/rss/' . $del_user);
>
># Only make a post if there are any links today
>if (count($feed->items) > 0) {
>
>    $content = "<ul>\n";
>
>    foreach ($feed->items as $link) {
>
>        $publishdate = parse_w3cdtf($link['dc']['date']);
>
>###########CODE CUT HERE##############
>
>##FROM magpierss-0.72/rss_utils.inc
>
>function parse_w3cdtf ( $date_str ) {
>
>    # regex to match wc3dtf
>    $pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
>
>    if ( preg_match( $pat, $date_str, $match ) ) {
>        list( $year, $month, $day, $hours, $minutes, $seconds) =
>            array( $match[1], $match[2], $match[3], $match[4],
>$match[5], $match[6]);
>
>        # LINE 35 BELOW HERE - calc epoch for current date assuming GMT
>        $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
>
>        $offset = 0;
>        if ( $match[10] == 'Z' ) {
>            # zulu time, aka GMT
>        }
>        else {
>            list( $tz_mod, $tz_hour, $tz_min ) =
>                array( $match[8], $match[9], $match[10]);
>
>            # zero out the variables
>            if ( ! $tz_hour ) { $tz_hour = 0; }
>            if ( ! $tz_min ) { $tz_min = 0; }
>
>            $offset_secs = (($tz_hour*60)+$tz_min)*60;
>
>            # is timezone ahead of GMT?  then subtract offset
>            #
>            if ( $tz_mod == '+' ) {
>                $offset_secs = $offset_secs * -1;
>            }
>
>            $offset = $offset_secs;
>        }
>        $epoch = $epoch + $offset;
>        return $epoch;
>    }
>    else {
>        return -1;
>    }
>}
>
>Nicole C. Engard
>Open Source Evangelist, LibLime
>(888) Koha ILS (564-2457) ext. 714
>[log in to unmask]
>AIM/Y!/Skype: nengard
>
>http://liblime.com
>http://blogs.liblime.com/open-sesame/