Source for file rss_utils.inc

Documentation is available at rss_utils.inc

  1. <?php
  2. /*
  3.  * Project:     MagpieRSS: a simple RSS integration tool
  4.  * File:        rss_utils.inc, utility methods for working with RSS
  5.  * Author:      Kellan Elliott-McCrea <kellan@protest.net>
  6.  * Version:     0.51
  7.  * License:     GPL
  8.  *
  9.  * The lastest version of MagpieRSS can be obtained from:
  10.  * http://magpierss.sourceforge.net
  11.  *
  12.  * For questions, help, comments, discussion, etc., please join the
  13.  * Magpie mailing list:
  14.  * magpierss-general@lists.sourceforge.net
  15.  */
  16.  
  17.  
  18. /*======================================================================*\
  19.     Function: parse_w3cdtf
  20.     Purpose:  parse a W3CDTF date into unix epoch
  21.  
  22.     NOTE: http://www.w3.org/TR/NOTE-datetime
  23. \*======================================================================*/
  24.  
  25. function parse_w3cdtf ( $date_str ) {
  26.     
  27.     # regex to match wc3dtf
  28.     $pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
  29.     
  30.     if ( preg_match( $pat, $date_str, $match ) ) {
  31.         list( $year, $month, $day, $hours, $minutes, $seconds) = 
  32.             array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[6]);
  33.         
  34.         # calc epoch for current date assuming GMT
  35.         $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
  36.         
  37.         $offset = 0;
  38.         if ( $match[10] == 'Z' ) {
  39.             # zulu time, aka GMT
  40.         }
  41.         else {
  42.             list( $tz_mod, $tz_hour, $tz_min ) =
  43.                 array( $match[8], $match[9], $match[10]);
  44.             
  45.             # zero out the variables
  46.             if ( ! $tz_hour ) { $tz_hour = 0; }
  47.             if ( ! $tz_min ) { $tz_min = 0; }
  48.         
  49.             $offset_secs = (($tz_hour*60)+$tz_min)*60;
  50.             
  51.             # is timezone ahead of GMT?  then subtract offset
  52.             #
  53.             if ( $tz_mod == '+' ) {
  54.                 $offset_secs = $offset_secs * -1;
  55.             }
  56.             
  57.             $offset = $offset_secs; 
  58.         }
  59.         $epoch = $epoch + $offset;
  60.         return $epoch;
  61.     }
  62.     else {
  63.         return -1;
  64.     }
  65. }
  66.  
  67. ?>

Documentation generated on Tue, 01 May 2007 16:47:13 +0200 by phpDocumentor 1.3.2