summaryrefslogtreecommitdiff
path: root/magpierss/rss_utils.inc
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-07-31 07:33:15 +0100
committerAndrew Dolgov <[email protected]>2006-07-31 07:33:15 +0100
commit19dee1dcc8b75619d09d6752cbb128a9f54fd870 (patch)
tree5a29a435695b9de270798ecb4aa6b8a53eb2bb86 /magpierss/rss_utils.inc
parent90ac84dff8028b5bb499510f8620ebe5ca2a15af (diff)
bundle magpierss (w. fixed for http digest auth Snoopy)
Diffstat (limited to 'magpierss/rss_utils.inc')
-rw-r--r--magpierss/rss_utils.inc67
1 files changed, 67 insertions, 0 deletions
diff --git a/magpierss/rss_utils.inc b/magpierss/rss_utils.inc
new file mode 100644
index 000000000..2a29e72a9
--- /dev/null
+++ b/magpierss/rss_utils.inc
@@ -0,0 +1,67 @@
+<?php
+/*
+ * Project: MagpieRSS: a simple RSS integration tool
+ * File: rss_utils.inc, utility methods for working with RSS
+ * Author: Kellan Elliott-McCrea <[email protected]>
+ * Version: 0.51
+ * License: GPL
+ *
+ * The lastest version of MagpieRSS can be obtained from:
+ * http://magpierss.sourceforge.net
+ *
+ * For questions, help, comments, discussion, etc., please join the
+ * Magpie mailing list:
+ */
+
+
+/*======================================================================*\
+ Function: parse_w3cdtf
+ Purpose: parse a W3CDTF date into unix epoch
+
+ NOTE: http://www.w3.org/TR/NOTE-datetime
+\*======================================================================*/
+
+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]);
+
+ # 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;
+ }
+}
+
+?>