/[svn]/web/trunk/www.linuxsampler.org/news_internal.php
ViewVC logotype

Annotation of /web/trunk/www.linuxsampler.org/news_internal.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2158 - (hide annotations) (download)
Sun Jan 16 20:12:05 2011 UTC (13 years, 2 months ago) by schoenebeck
File size: 2923 byte(s)
- bugfix regarding latest news_internal.php changes

1 schoenebeck 1268 <?php
2    
3     // XML file with news data
4     $file = "news.xml";
5     // show all news entries by default
6     $max_items = -1;
7    
8 schoenebeck 1409 $current_tag = array();
9     $current_tag_body_is_empty = true;
10     $current_link_ref = "";
11    
12 schoenebeck 1268 function startElement($parser, $name, $attribs) {
13     global $max_items;
14 schoenebeck 1409 global $current_tag;
15     global $current_tag_body_is_empty;
16     global $current_link_ref;
17    
18 schoenebeck 1268 if ($max_items == 0) return;
19    
20 schoenebeck 1409 array_push($current_tag, $name);
21    
22     $current_tag_body_is_empty = true;
23    
24 schoenebeck 1268 if ($name == "entry") {
25     if (count($attribs) && isset($attribs["date"])) {
26     $d = $attribs["date"];
27 schoenebeck 2157 // pack into a (single cell) table so (flaoting) images wont vertically overlap out of the news block border
28     echo "<div class=\"news\"><table><tr><td>";
29 schoenebeck 1268 echo "<span class=\"news_date\">$d</span> ";
30     } else echo "<b>???</b> ";
31     } else if ($name == "link") {
32 schoenebeck 1409 $current_link_ref = (isset($attribs["ref"])) ? $attribs["ref"] : "";
33     echo "<a href=\"$current_link_ref\">";
34 schoenebeck 2157 if (count($attribs) && isset($attribs["img"])) {
35 schoenebeck 2158 $pic = $attribs["img"];
36 schoenebeck 2157 echo "<img src=\"$pic\" style=\"float: left; margin: 4px;\">";
37     $current_tag_body_is_empty = false;
38     }
39 schoenebeck 1268 } else if ($name == "list") {
40     echo "<ul class=\"news\">";
41     } else if ($name == "li") {
42     echo "<li class=\"news\">";
43     }
44     }
45    
46     function endElement($parser, $name) {
47     global $max_items;
48 schoenebeck 1409 global $current_tag;
49     global $current_tag_body_is_empty;
50     global $current_link_ref;
51    
52 schoenebeck 1268 if ($max_items == 0) return;
53    
54 schoenebeck 1409 array_pop($current_tag);
55    
56 schoenebeck 2157 if ($name == "entry") {
57     echo "</td></tr></table></div>\n";
58 schoenebeck 1268 if ($max_items > 0) $max_items--;
59     }
60 schoenebeck 1409 else if ($name == "link") {
61     if ($current_tag_body_is_empty) echo $current_link_ref;
62     echo "</a>";
63     $current_link_ref = ""; // reset
64     }
65 schoenebeck 1268 else if ($name == "list") echo "</ul>";
66     else if ($name == "li") echo "</li>";
67     }
68    
69     function characterData($parser, $data) {
70     global $max_items;
71 schoenebeck 1409 global $current_tag;
72     global $current_tag_body_is_empty;
73    
74     $current_tag_body_is_empty = false;
75    
76 schoenebeck 1268 if ($max_items == 0) return;
77    
78     echo $data;
79     }
80    
81     if (isset($HTTP_GET_VARS['max_items'])) {
82     $max_items = $HTTP_GET_VARS['max_items'];
83     }
84    
85     $xml_parser = xml_parser_create();
86     xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
87     xml_set_element_handler($xml_parser, "startElement", "endElement");
88     xml_set_character_data_handler($xml_parser, "characterData");
89     if (!($fp = fopen($file, "r"))) {
90     die("Could not open news XML file!");
91     }
92     while ($data = fread($fp, 4096)) {
93     if (!xml_parse($xml_parser, $data, feof($fp))) {
94     die(sprintf("XML error: %s at line %d",
95     xml_error_string(xml_get_error_code($xml_parser)),
96     xml_get_current_line_number($xml_parser)));
97     }
98     }
99     xml_parser_free($xml_parser);
100    
101     ?>

  ViewVC Help
Powered by ViewVC