]> git.wh0rd.org - tt-rss.git/blob - lib/magpierss/rss_utils.inc
update translations
[tt-rss.git] / lib / magpierss / 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[7]);
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[11] == '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 ?>