summaryrefslogtreecommitdiff
path: root/includes/news.php
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>';
}

?>