Alle Dateien, die hier eingesehen werden können, sind unter der GNU GPL lizenziert. Wenn du etwas darin findest, das du gerne hättest, so schreibe mir doch bitte eine Anfrage damit ich, wenn ich es rausgeben will, alle Änderungen raussuchen könnte. Denn ich übernehme keine Verantwortung, solltest du was rausnehmen und es geht nicht. Und Support deswegen geb ich schon gar nicht.
Solltest du eine Schwachstelle im Code finden, sei es eine kritische Lücke oder eine Möglichkeit zu cheaten, dann bitte ich dich, mir das mitzuteilen. Solltest du beim cheaten erwischt werden, werde ich deinen Account eigenhändig löschen & bannen; Solltest du meinen Server angreifen, so werde ich meine Rechtsschutzversicherung kontaktieren.
Verzeichnisse:
<?php
/*
* author: bibir (logd_bibir@email.de)
* and Chaosmaker (webmaster@chaosonline.de)
* for http://logd.chaosonline.de
*
* version: 1.2
*
* a library with text from users to help other
* a bit like faq
*
* details:
* (15.11.04) start of idea
* (15.01.05) project finished
* (16.01.05) version 1.2: several minor bugfixes
*/
require_once "common.php";
checkday();
addcommentary();
if(!isset($_GET['op'])) $_GET['op']="";
addnav('Dorfplatz','village.php');
addnav('Bibliothek');
$sql = "SELECT count(bookid) AS anz FROM lib_books WHERE activated='1'";
$result = db_query($sql) or die(db_error(LINK));
$books = db_fetch_assoc($result);
page_header("Städtische Bibliothek");
switch($_GET['op']){
case "browse":
addnav("H?Zurück in die Halle","library.php");
addnav("Buch einreichen","library.php?op=offer");
output("`tDu gehst durch die Regalreihen und siehst, dass alle Bücher ordentlich nach Themen einsortiert sind.`n
Folgende Themen stehen derzeit zur Auswahl:`n`n");
$sql = "SELECT t.*, COUNT(b.bookid) as anz FROM lib_themes t
LEFT JOIN lib_books b ON b.themeid=t.themeid AND b.activated='1'
GROUP BY themeid
ORDER BY listorder ASC";
$result = db_query($sql) or die(db_error(LINK));
output("<table cellpadding=2 cellspacing=1 bgcolor='#999999'><tr class='trhead'><td>Thema</td><td>Bücher</td></tr>",true);
$bgclass = '';
addnav("Themen");
while ($row = db_fetch_assoc($result)) {
$bgclass = ($bgclass=='trdark'?'trlight':'trdark');
if ($row['anz']>0) {
output("<tr class='$bgclass'><td><a href=\"library.php?op=theme&id=".$row['themeid']."\">",true);
output($row['theme']);
output("`0</a></td><td align='right'>".$row['anz']."</td></tr>",true);
}
else {
output("<tr class='$bgclass'><td>",true);
output($row['theme']);
output("`0</td><td>kein Buch</td></tr>",true);
}
addnav("","library.php?op=theme&id=".$row['themeid']);
addnav($row['theme'],"library.php?op=theme&id=".$row['themeid']);
}
output("</table>",true);
break;
case "theme":
addnav("H?Zurück in die Halle","library.php");
//addnav("Andere Regale","library.php?op=browse");
addnav("Buch einreichen","library.php?op=offer");
addnav("Themen");
$sql = "SELECT themeid, theme FROM lib_themes ORDER BY listorder ASC";
$result = db_query($sql) or die(db_error(LINK));
while ($row = db_fetch_assoc($result)) {
if ($row['themeid']!=$_GET['id']) {
addnav($row['theme'],"library.php?op=theme&id=".$row['themeid']);
}
else {
addnav($row['theme'],'');
$thistheme = $row['theme'];
}
}
output("`c`b".$thistheme."`0`b`c");
output("`n`6Zu diesem Thema stehen dir folgende Bücher zur Verfügung:`n`n");
$sql = "SELECT title, bookid, author FROM lib_books
WHERE themeid=".$_GET['id']." AND activated='1' ORDER BY listorder ASC";
$result = db_query($sql) or die(db_error(LINK));
output("<table cellpadding=2 cellspacing=1 bgcolor='#999999'><tr class='trhead'><td>Titel</td><td>Autor</td></tr>",true);
if (db_num_rows($result)==0) {
output("<tr class='trdark'><td colspan='2'>Es gibt leider bisher noch keine Bücher zu diesem Thema.</td></tr>",true);
}
else {
addnav('Bücher');
$bgclass = '';
while ($row = db_fetch_assoc($result)) {
$bgclass = ($bgclass=='trdark'?'trlight':'trdark');
output("<tr class='$bgclass'><td><a href=\"library.php?op=book&bookid=".$row['bookid']."\">",true);
output($row['title'],true);
output("`0</a></td><td>",true);
output($row['author']);
output("`0</td></tr>",true);
addnav("","library.php?op=book&bookid=".$row['bookid']);
addnav($row['title'],'library.php?op=book&bookid='.$row['bookid'],true);
}
}
output("</table>",true);
break;
case "book":
addnav("H?Zurück in die Halle","library.php");
//addnav("Ein anderes Thema","library.php?op=browse");
$sql = "SELECT t.theme, b.themeid, b.title, b.book, b.author FROM lib_books b
LEFT JOIN lib_themes t USING(themeid)
WHERE bookid=".$_GET['bookid'];
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
//addnav("R?Zurück ans Regal","library.php?op=theme&id=".$row['themeid']);
addnav("Buch einreichen","library.php?op=offer");
addnav("Themen");
$sql = "SELECT themeid, theme FROM lib_themes ORDER BY listorder ASC";
$result = db_query($sql) or die(db_error(LINK));
while ($row2 = db_fetch_assoc($result)) {
addnav($row2['theme'],"library.php?op=theme&id=".$row2['themeid']);
}
addnav('Bücher');
$sql = 'SELECT title, bookid FROM lib_books WHERE themeid='.$row['themeid'].' AND activated="1" ORDER BY listorder ASC';
$result = db_query($sql) or die(db_error(LINK));
while ($row2 = db_fetch_assoc($result)) {
if ($row2['bookid']!=$_GET['bookid']) addnav($row2['title'],'library.php?op=book&bookid='.$row2['bookid'],true);
else addnav($row2['title'],'',true);
}
//nichts editierbar
output("<table cellpadding=2 cellspacing=1 bgcolor='#999999'><tr class='trdark'><td>Thema:</td><td>",true);
output($row['theme']);
output("`0</td></tr><tr class='trlight'><td>Titel:</td><td>",true);
output($row['title'],true);
output("`0</td></tr><tr class='trdark'><td>Autor:</td><td>",true);
output($row['author']);
output("`0</td></tr><tr class='trlight'><td colspan='2'>",true);
output(str_replace("\n",'`n',$row['book']),true);
output('</td></tr></table>',true);
break;
case "offer":
addnav("H?Zurück in die Halle","library.php");
if ($_GET['subop']=="save" && !empty($_POST['title']) && !empty($_POST['book'])) {
addnav("Weiteres Buch schreiben","library.php?op=offer");
output("`tDein Buch wurde zum Druck eingereicht.`0");
// maximale sortiernummer holen
$sql = 'SELECT MAX(listorder) AS maxorder FROM lib_books';
$result = db_query($sql);
$row = db_fetch_assoc($result);
$sql = "INSERT INTO lib_books (themeid, acctid, author, title, book, listorder)
VALUES ('{$_POST['themeid']}', '{$session['user']['acctid']}', '{$session['user']['name']}', '{$_POST['title']}', '{$_POST['book']}', '{$row['maxorder']}')";
db_query($sql);
}
else {
if ($_GET['subop']=='save') {
output('`c`$Wie soll ein Buch gedruckt werden, wenn nicht Titel und Inhalt existieren?`0`c`n`n');
$_POST['title'] = str_replace('`','``',$_POST['title']);
$_POST['book'] = str_replace('`','``',$_POST['book']);
}
else $_POST['title'] = $_POST['book'] = $_POST['themeid'] = '';
output("`tHier hast du die Möglichkeit, eigenes Wissen niederzuschreiben und anderen damit zur Verfügung zu stellen.`n`n
Nun liegt es an dir, die Zeilen auf das Pergament zu bringen, die du dein Wissen nennst.`0");
output("<form action=\"library.php?op=offer&subop=save\" method='POST'>",true);
output("<table cellpadding=2 cellspacing=1 bgcolor='#999999'><tr class='trdark'><td>Thema:</td><td><select name='themeid'>",true);
$sql2 = "SELECT * FROM lib_themes ORDER BY listorder ASC";
$result2 = db_query($sql2) or die(db_error(LINK));
while ($row2 = db_fetch_assoc($result2)) {
output("<option value='".$row2['themeid']."' ".($row2['themeid']==$_POST['themeid']?" selected='selected'":"").">".preg_replace('/`./','',$row2['theme'])."</option>",true);
}
output("</select></td></tr>",true);
output("<tr class='trlight'><td>Titel:</td><td><input class='input' type='text' name='title' value='{$_POST['title']}' maxlength='50' size='50'></td></tr>",true);
output("<tr class='trdark'><td colspan='2'>Mein Wissen über dieses Thema:</td></tr>",true);
output("<tr class='trdark'><td colspan='2'><textarea name='book' class='input' cols='60' rows='10'>{$_POST['book']}</textarea></td></tr>",true);
output("<tr class='trlight'><td colspan='2'><input type='submit' class='button' value='Einreichen'></td></tr></table></form>",true);
addnav("","library.php?op=offer&subop=save");
}
break;
default:
rawoutput("<center><img src='images/stadt/bibliothek.jpg'></center>");
output('`c`%Am Eingang zur Bibliothek hängt ein Plakat, auf dem einige Informationen stehen.`c`n');
output("`c`i`RDie städtische Bibliothek führt derzeit ".($books['anz']==1?'ein einziges Buch, das lesenswert ist':$books['anz'].' Bücher, die lesenswert sind.')."`0.
`n`RBürger sind dazu angehalten, eigene Werke zu veröffentlichen, die bei Veröffentlichung prämiert werden.
`n`RUnvermerkte Kopien und Plagiate werden nicht veröffentlicht!`i`c`n");
/*output('`qDie Bibliothek ist ein Ort des Wissens.`n
Dieses Wissen kann aber nur gehalten werden, wenn jemand es niedergeschrieben hat.`n
Dazu steht in dieser Bibliothek die Möglichkeit bereit, Texte zu verfassen und diese einzureichen.`n
Nach Genehmigung durch Regenten oder Bevollmächtigte wird das Buch gedruckt und in die Regale der Bücherei gestellt.`n
Von nun an hat jeder die Möglichkeit, einen Blick in dieses Buch zu werfen und sowohl interessante als auch nützliche Informationen zu bekommen.`n
Sollte das geschriebene Buch gedruckt werden, erhält der Autor ein Dankeschön in Form von '.getsetting("libdp","25").' Punkten in J.C. Petersens Jägerhütte.`n`n');*/
output("`c`b`RDie städtische Bibliothek`b`c`n
<table width='50%' align='center'><tr><td align='justify'>`%Wie in einer Bibliothek zu erwarten ist
es hier recht ruhig, nur gelegentlich hört kann man leises Gemurmel oder Schritte vernehmen. Die
dicken Steinwände dämpfen die Geräusche der Außenwelt recht gut und so hört man lediglich wenn die
Tür geöffnet wird den Lärm der Straße und der Stadt. Wirklich riesig ist die städtische Bibliothek
nicht, hinter einem kleinen Schalter sitzt nahezu immer ein Angestellter, bei größerem Andrang sind
es sogar hin und wieder zwei. Die Regale sind voller Bücher, von denen einige bereits recht alt und
mitgenommen aussehen, andere wiederum nagelneu wirken. Die Luft riecht ein wenig nach Papier und an
einer Seite stehen einige Tische und Stühle, die den Besuchern eine Möglichkeit bieten, die Bücher
an Ort und Stelle zu lesen. Seit einiger Zeit gibt es auch einen öffentlichen PC mit Internet-Zugang
für Recherchen und der Abrufung von alten Zeitungen und Stadtchroniken - für diejenigen, die ihre
Nase nicht so gern in staubige, alte Bücher stecken.</td></tr></table>",true);
output("`n`nEin paar Leute unterhalten sich leise:`n`0");
viewcommentary("library","Leise flüstern:",15);
addnav("Stöbern","library.php?op=browse");
addnav("Buch einreichen","library.php?op=offer");
}
page_footer();
?>