Inhaltsverzeichnis
1. Server 1
1.1. backend.php 1
1.2. backend_soap.php 2
1.3. backend_base.php 2
1.4. include/config.inc 5
1.5. include/sql_magazin_stars.php 5
1.6. include/sql_magazin_soundcheck.php 5
2. PHP-Client 5
2.1. client.php 5
2.2. include/inc_client_http.php 6
2.3. include/inc_client_soap.php 7
3. Perl-Client 9
3.1. nightloop.pm 9
3.2. client.pl 11
4. Web-Interface 12
4.1. syndic8.php 12
4.2. syndic8.css 15
4.3. template.php 16
4.4. vorlage.perl.txt 17
4.5. vorlage.php.txt 18
1. Server
1.1. backend.php
0)
if (is_numeric($items))
$sql .= ” limit $items”;
else
createErrorDocument(“Item ist kein numerischer Wert!”);
#—
# Wenn als Parameter “RDF” uebergeben wurde, dann RDF zurueckgeben,
# ansonsten XML.
#—
$format = strtoupper($_GET[“format”]);
if ($format != “RDF” )
print createXML($sql, $db);
else
print createRDF($sql, $db);
?>
1.2. backend_soap.php
register(“backend”);
function backend($cat, $items=0, $protocol=”xml”)
{
global $base_url;
$sql_file = “include/sql_$cat.php”;
if (! file_exists($sql_file) )
return “Error!”;
include ($sql_file);
if (is_numeric($items))
$sql .= ” limit $items”;
return createXML($sql, $db);
}
$s->service($HTTP_RAW_POST_DATA);
?>
1.3. backend_base.php
read($sql);
#– Daten in einem assosiativen Feld speichern
while ($row = $db->get())
$feld[] = array(“title” => $row[“title”],
“description” => $row[“description”],
“link” => $row[“href”]);
$db->close(); #— Datenbank schliessen
return $feld; #– das assosiative Feld zurueckgeben
} //teleschau()
#———————————————————————————–
function createErrorDocument($reason)
{
print $reason;
die(); #— Programm beenden
}
#———————————————————————————–
# Hier werden die Fehler abgefangen, wenn kein Parameter “cat” angegeben oder
# eine Kategorie angegeben wurde, zu der keine entsprechende “include/sql_*”-
# Datei vorhanden ist.
#
# IN: $errno: Fehlernummer
# $errstr: Fehlerbeschreibung
# $errfile: Datei, in der der Fehler auftrat
# $errline: Zeile, in der der Fehler auftrat
# OUT: N/A
#—–
function catNotFoundError($errno, $errstr, $errfile, $errline)
{
switch ($errno)
{
case 2:
{
createErrorDocument(“Kategorie konnte nicht gefunden werden.”);
break;
} //case
case 8:
{
createErrorDoument(“Es wurde keine Kategorie angegeben.”);
break;
} //case
default:
print “
Fehler: [$errno] $errstr.
“;
} //switch
die(); #— Programmausfuehrung abbrechen
} //function()
#———————————————————————————–
# Diese Funktion erstellt einen String, der die aus der Datenbank erhaltenen
# Daten als XML-Baum darstellt.
#
# IN: $sql: SQL-String
# $db: Datenbank, aus der gelesen werden soll
# OUT: $xml: String mit der XML-Datenstruktur
#—–
function createXML($sql, $db)
{
#—
# Erzeugen eines neuen Text-Kind-Elements
#—
function new_child($doc, $parent, $name, $value)
{
$child = $parent->append_child($doc->create_element($name));
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()
#—
# Das Root-ELement erzeugen, der Name ist immer “channel”.
#—
$doc = domxml_new_doc(“1.0”);
$root = $doc->create_element(“channel”);
$root = $doc->append_child($root);
#—
# neues Titel-Element erzeugen
# “Wie heisst unser Channel?”
#—
new_child($doc, $root, “title”, “nightloop.de”);
new_child($doc, $root, “link”, “http://www.nightloop.de/”);
new_child($doc, $root, “description”, “die party community des nordwest-net”);
new_child($doc, $root, “language”, “de-DE”);
new_child($doc, $root, “creator”, “Lutz Schroeer (Lutz.Schroeer@team.nwn.de)”);
new_child($doc, $root, “rights”, “Copyright ” . date(“Y”) . ” nordwest.net”);
new_child($doc, $root, “image”, “http://www.nightloop.de/pics/logo.gif”);
#—
# Die noetigen Daten aus der Datenbank holen und die Felder
# in den XML-Baum einfuegen.
#—
foreach (retrieve_db($sql, $db) as $item)
{
$new_item = $root->append_child($doc->create_element(“item”));
new_child($doc, $new_item, “title”, ($item[“title”]));
new_child($doc, $new_item, “link”, ($item[“link”]));
new_child($doc, $new_item, “description”, ($item[“description”]));
} //foreach
#—
# Eine mit UTF-8 kodierten XML-String an den Aufrufer zurueckgeben.
#—
# return utf8_encode($doc->dump_mem(1, “utf-8”));
$doc = utf8_encode($doc->dump_mem(1, “utf-8”));
return $doc;
} //create_XML()
#———————————————————————————————
function createRDF($sql, $db)
{
global $title, $description, $link, $language, $creator, $rights, $image, $publisher;
#—
# Erzeugen eines neuen Text-Kind-Elements
#—
function new_child($doc, $parent, $name, $value)
{
$child = $parent->append_child($doc->create_element($name));
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()
#—
# Erzeugen eines neuen Text-Kind-Elements mit Attributen
#—
function new_attribute_child($doc, $parent, $name, $value, $key, $key_value)
{
$child = $parent->append_child($doc->create_element($name));
$child = $child->set_attribute($key, $key_value);
return $child = $child->append_child($doc->create_text_node($value));
} //new_child()
#—
# Das Root-ELement erzeugen, der Name ist immer “channel”.
#—
$doc = domxml_new_doc(“1.0”);
$root = $doc->create_element(“rdf:RDF”);
$root = $doc->append_child($root);
$root->set_attribute(“xmlns:rdf”, “http://www.w3.org/1999/02/22-rdf-syntax-ns#”);
$root->set_attribute(“xmlns:dc”, “http://purl.org/dc/elements/1.1/”);
$channel = $root->append_child($doc->create_element(“channel”));
$channel->set_attribute(“rdf:about”, “http://www.nightloop.de”);
new_child($doc, $channel, “dc:title”, $title);
new_child($doc, $channel, “dc:link”, $link);
new_child($doc, $channel, “dc:description”, $description);
new_child($doc, $channel, “dc:language”, $language);
new_child($doc, $channel, “dc:date”, date(“Y-m-d\TH:i:s+01:00”) );
new_child($doc, $channel, “dc:creator”, $creator);
new_child($doc, $channel, “dc:publisher”, $publisher);
new_child($doc, $channel, “dc:type”, “World Wide Web Home Page”);
# Nun die Resourcen-Liste
$items = $channel->append_child($doc->create_element(“items”));
$rdfseq = $items->append_child($doc->create_element(“rdf:Seq”));
$schlagzeilen = retrieve_db($sql, $db);
foreach($schlagzeilen as $schlagzeile)
new_attribute_child($doc, $rdfseq, “rdf:li”, “”, “rdf:resource”,
substr($schlagzeile[“link”], strpos(“http://”, $schlagzeile[“link”])));
$string = substr($string, 0, strpos($string,$sep2));
# foreach (retrieve_db($sql, $db) as $item)
foreach ($schlagzeilen as $item)
{
$new_item = $items->append_child($doc->create_element(“item”));
new_child($doc, $new_item, “title”, ($item[“title”]));
new_child($doc, $new_item, “link”, ($item[“link”]));
new_child($doc, $new_item, “description”, ($item[“description”]));
} //foreach
return utf8_encode($doc->dump_mem(1, “utf-8”));
}
?>
1.4. include/config.inc
/* * Konfiguratuion fuer die TerminDB * * Server-Definitionen aus dem htdocs_includes/TerminDB Verzeichniss includen * */ // Die Datenbank Klasse include ("include/NWN_DB.class.php"); // Farben //$BG_COLOR_HELL = "#EEEEFF"; $BG_COLOR_HELL = "#D6EBF9"; //$BG_COLOR_DUNKEL = "#CCCCFF"; $BG_COLOR_DUNKEL = "#7CC6FF"; // Datenbankdefinition für die Datenbank //Master $DB_M_server = "develop.nwn.int"; $DB_M_user = "root"; $DB_M_pass = ""; ; //Writer $DB_S_server = "develop.nwn.int"; $DB_S_user = "root"; $DB_S_pass = ""; ?>
1.5. include/sql_magazin_stars.php
1.6. include/sql_magazin_soundcheck.php
2. PHP-Client
2.1. client.php
,
# Durch das Einbinden unterschiedlicher Module kann man sich hier entscheiden,
# ob die Uebrtragung der Daten wie eine uebliche Web-Seite stattfindet oder
# per SOAP.
# Fuer die Uebertragung per WWW:
#include “include/inc_client_http.php”;
#Fuer die Uebertragung per SOAP:
include “include/inc_client_soap.php”;
#——————————————————————————
# Erstellt ein Inline-Stylesheet um die Tabelle und die Datenfelder formatiert
# darstellen zu koennen.
#—–
function getInlineStyleSheet()
{
?>
} //getInlineStyleSheet() #------------------------------------------------------------------------------ # Erzeugen der Ausgabe-Tabelle #----- function showPanel($channel_data, $schlagzeilen) { getInlineStyleSheet(); #-- Stylesheet zur Formatierung erzeugen print "
“; print ““; print “ | ||
---|---|---|
<" . $schlagzeile["link"] . ">” . $schlagzeile[“title”].”” . “ ” . $schlagzeile[“description”] . “ |
$schlagzeile->{“description”} |
---|
“;
print CGI::end_html();
} #– showPanel()
#—————————————————————————–
($channeldata, $items) = nightloop::getNightloop( channel => “magazin_stars”,
protocol => “HTTP”,
items => 2
);
showPanel($channeldata, $items);
4. Web-Interface
4.1. syndic8.php
nightloop.de — Content Syndication
| ||
content syndication |
read($sql);
#-- Daten in einem assosiativen Feld speichern
while ($row = $db->get())
$feld[] = array("title" => $row["title"],
"description" => $row["description"],
"link" => $row["href"]);
$db->close(); #--- Datenbank schliessen
?>
nightloop.de die nwn party community | " " . $schlagzeile["description"] . " |
Hinweise:
© 2003 nordwest.net
4.2. syndic8.css
body {
margin: 0px;
background-color: aabbcc;
color: black;
}
#header {
border: 0px;
background-color: #001743;
border-collapse: collapse;
padding: 0px;
}
#heading { /* Ueberschrift */
font-weight: bolder;
font-family: sans-serif;
}
#leftcontent { /* Linker Block */
float: left;
width: 50%;
background-color:#fff;
border: 2px solid #000;
margin-right: 15px;
margin-left: 10px;
}
#rightcontent {
padding-left: 10px;
margin-top: 10px;
margin-right: 10px;
}
#whiteline {
border-top: 2px solid #fff;
border-bottom: 2px solid #fff;
}
#innertable {
border: 1px solid #000;
border-collapse: collapse;
margin-left: auto;
margin-right: auto;
margin-top: 5px;
}
#unten {
border-top: 1px solid #fff;
position: absolute;
bottom: 0px;
background-color: #001743;
width: 100%;
color: white;
text-align: right;
}
#eingabefeld {
border: 1px solid #000;
}
#hinweise
{
margin-left: 10px;
margin-top: 10px;
}
#nltitel {
color: #ffffff;
background-color: #000000;
}
.nl {
border-color: #000;
border-style: solid;
border-width: 1px;
border-collapse: collapse;
background-color: #fff;
}
4.3. colorchooser.php
";
$size = 14;
for ($i=0;$i<8;$i++) { print "
$farbe = $farben[$i];
for ($j=0;$j<17;$j++) { print "
"" .
"".
"
";
}
print "
";
}
print "
";
?>
4.4. template.php
0) # Variable in Zeile gefunden
foreach (explode($trenner, $zeile) as $part) # Zeile aufteilen
if ($part{0} == "$") # $ bezeichnet Variable
eval ("print $part;"); # Åusgabe der Variablen
else
print $part; # simpler Text
else
print $zeile; # simple Zeile
} # Ausgabe
?>
nightloop.de --- content syndication
content syndication |
|
4.5. vorlage.perl.txt
sub getInlineStyleSheet()
{
print qq{
};
} #getInlineStyleSheet()
sub showPanel($channel_data, $schlagzeilen) { getInlineStyleSheet(); #-- Stylesheet zur Formatierung erzeugen
print "
"; print ""; print " |
---|
<" . $schlagzeile["link"] . ">" . $schlagzeile["title"]."" . " " . $schlagzeile["description"] . " |
"; print ""; print " |
---|
<" . $schlagzeile["link"] . ">" . $schlagzeile["title"]."" . " " . $schlagzeile["description"] . " |