blob: e1c531114b917f16884a47fc1fdb043a2ebad5e6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
<?php
// WARNING:
// This code uses the "DOM XML" extension, which is only available with PHP 4.
// Be sure to update it to use the "XML", "DOM" or "XMLReader" extensions when
// SF upgrades to PHP 5.
//
// The news is cached locally using a cronjob which runs in the 9th minute of
// every hour:
//
// 9 * * * * /home/groups/t/th/themanaworld/htdocs/includes/fetch-news.sh
//
//$feedurl = "http://sourceforge.net/export/rss2_projnews.php?group_id=106790&rss_fulltext=1";
$feedurl = "includes/rss2_projnews.cache";
$xml = new XMLReader();
if (!$xml) {
echo "Error, no XMLReader.\n";
exit;
}
$xml->open($feedurl);
xml_read_rss($xml);
$xml->close();
function xml_read_rss($xml)
{
if ($xml->next("rss")) {
xml_read_channels($xml);
} else {
echo "Error, not an rss feed.";
}
}
function xml_read_channels($xml)
{
while ($xml->read()) {
switch ($xml->nodeType) {
case XMLReader::ELEMENT:
if ($xml->name == "channel") {
xml_read_channel($xml);
} else {
xml_read_unknown_element($xml);
}
break;
case XMLReader::END_ELEMENT:
return;
}
}
}
function xml_read_channel($xml)
{
while ($xml->read()) {
switch ($xml->nodeType) {
case XMLReader::ELEMENT:
if ($xml->name == "item") {
xml_read_item($xml);
} else {
xml_read_unknown_element($xml);
}
break;
case XMLReader::END_ELEMENT:
return;
}
}
}
function xml_read_item($xml)
{
$newsdata = array();
while ($xml->read()) {
switch ($xml->nodeType) {
case XMLReader::ELEMENT:
$newsdata[$xml->name] = $xml->readString();
xml_read_unknown_element($xml);
break;
case XMLReader::END_ELEMENT:
print_news_item($newsdata);
return;
}
}
}
function xml_read_unknown_element($xml)
{
while ($xml->read()) {
switch ($xml->nodeType) {
case XMLReader::ELEMENT:
xml_read_unknown_element($xml);
break;
case XMLReader::END_ELEMENT:
return;
}
}
}
function print_news_item($newsdata)
{
echo '<div class="news">';
echo '<div class="news_date">' . $newsdata['pubDate'] . '</div>';
echo '<h3>' . $newsdata['title'] . '</h3>';
echo '<div class="news_body"><p>' . $newsdata['description'] . '</p></div>';
echo '</div>';
}
?>
|