示例#1
0
 function InsertBibTeX($bibtex)
 {
     $allowed_entries = array('book', 'article', 'booklet', 'conference', 'inbook', 'incollection', 'inproceedings', 'manual', 'mastersthesis', 'misc', 'phdthesis', 'proceedings', 'techreport', 'unpublished');
     // Finde alle BibTeX-Einträge
     // Funktioniert nicht bei Argumenten über mehrere Zeilen
     if (preg_match_all('/@([\\w]+[\\s]*)\\{[\\s]*([-\\d\\w]+)(([\\s]*,[\\s]*[\\w]*[\\s]*=[\\s]*([\\w]+|\\{.*\\}|".*")[\\s]*)+)\\}/', $bibtex, $regexp_entries) !== false) {
         $num_entries = sizeof($regexp_entries[0]);
     } else {
         $num_entries = 0;
     }
     $entries = false;
     // Extrahiere alle Einträge
     for ($i = 0; $i < $num_entries; $i++) {
         $cur = new stdClass();
         $cur->autoren = "";
         $cur->art = new LiteraturArt("book");
         $cur->titel = "";
         $cur->jahr = date("Y");
         $cur->verlag = "";
         $cur->isbn = "";
         $cur->beschreibung = "";
         $cur->ort = "";
         // Lese Typ vom Eintrag
         $type = trim($regexp_entries[1][$i]);
         // Haben wir überhaupt den Anfang eines Eintrags gefunden?
         if (in_array($type, $allowed_entries) === false) {
             continue;
         } else {
             $cur->art = new LiteraturArt($type);
         }
         // Lese Kürzel
         $cur->id = trim($regexp_entries[2][$i]);
         // Extrahiere "Optionen"
         if (preg_match_all('/(([\\w]*)[\\s]*=[\\s]*([\\w]+|\\{.*\\}|".*")[\\s]*(,|))+/', $regexp_entries[3][$i], $regexp_options) !== false) {
             // Lese die Optionen des aktuellen BibTeX-Eintrags einzeln
             $num_options = sizeof($regexp_options[0]);
             for ($j = 0; $j < $num_options; $j++) {
                 // Name des Arguments der "Option" auslesen und bereinigen
                 $argument = trim($regexp_options[3][$j]);
                 if ($argument[0] == "{" && $argument[strlen($argument) - 1] == "}") {
                     $argument = substr($argument, 1, strlen($argument) - 2);
                 }
                 if ($argument[0] == "\"" && $argument[strlen($argument) - 1] == "\"") {
                     $argument = substr($argument, 1, strlen($argument) - 2);
                 }
                 // Weiße Daten der aktuellen Option zu
                 switch (strtolower(trim($regexp_options[2][$j]))) {
                     case "title":
                         $cur->titel = $argument;
                         break;
                     case "author":
                         $cur->autoren = preg_replace("/ AND /i", ", ", $argument);
                         break;
                     case "year":
                         $cur->jahr = $argument;
                         break;
                     case "publisher":
                         $cur->verlag = $argument;
                         break;
                     case "isbn":
                         $cur->isbn = $argument;
                         break;
                     case "address":
                         $cur->ort = $argument;
                         break;
                     case "note":
                     case "annote":
                         $cur->beschreibung = $argument;
                         break;
                 }
             }
         } else {
             continue;
         }
         // Erzeuge array, wenn noch nicht geschehen
         if ($entries === false) {
             $entries = array();
         }
         $entries[] = $cur;
     }
     $imported = 0;
     if ($entries !== false && empty($entries) === false) {
         // Importiere die einzelnen Einträge in Bibliothek
         // wenn Titel und Autor vorhanden sind
         foreach ($entries as $entry) {
             if (empty($entry->titel) === false && empty($entry->autoren) === false) {
                 $imported++;
                 Literatur::Insert($entry->autoren, $entry->art->GetDisplayText(), $entry->titel, $entry->jahr, $entry->verlag, $entry->isbn, $entry->beschreibung, $entry->ort, "");
             }
         }
     }
     return $imported;
 }
示例#2
0
                echo "</form></div>";
            }
        }
        // Anlegen, wenn keine ähnlichen Bücher gefunden wurden oder wenn akzeptiert wurde
        if (isset($_POST["accept"]) === true || empty($search->Treffer) === true) {
            // Fehlerhafte Daten zum Anlegen übertragen?
            if (isset($_POST["art"]) === false || isset($_POST["verlag"]) === false || isset($_POST["isbn"]) === false || isset($_POST["beschreibung"]) === false || isset($_POST["ort"]) === false || isset($_POST["stichworte"]) === false) {
                // Wenn ja, gebe Fehler aus
                echo "<p id=\"error\">Literatur konnte nicht angelegt werden, da es ein Fehler bei der Übertragung der Informationen der Literatur gab</p>";
            } else {
                // Wenn nicht, lege Literatur an und gebe Erfolgsmeldung aus
                Literatur::Insert($_POST["autor"], $_POST["art"], $_POST["titel"], $_POST["jahr"], $_POST["verlag"], $_POST["isbn"], $_POST["beschreibung"], $_POST["ort"], $_POST["stichworte"]);
                echo "<p style=\"text-align: center\">Literatur wurde hinzugefügt</p>";
            }
        }
    } elseif (isset($_GET["update"]) === true) {
        // Fehlerhafte Daten zum Ändern übertragen?
        if (empty($_POST["id"]) === true || is_numeric($_POST["id"]) === false || isset($_POST["art"]) === false || isset($_POST["verlag"]) === false || isset($_POST["isbn"]) === false || isset($_POST["beschreibung"]) === false || isset($_POST["ort"]) === false || isset($_POST["stichworte"]) === false) {
            // Wenn ja, gebe Fehler aus
            echo "<p id=\"error\">Literatur konnte nicht geändert werden, da es ein Fehler bei der Übertragung der Informationen der Literatur gab</p>";
        } else {
            // Wenn nicht, ändere Literatur und gebe Erfolgsmeldung aus
            Literatur::Update($_POST["id"], $_POST["autor"], $_POST["art"], $_POST["titel"], $_POST["jahr"], $_POST["verlag"], $_POST["isbn"], $_POST["beschreibung"], $_POST["ort"], $_POST["stichworte"]);
            echo "<p style=\"text-align: center\">Literatur wurde geändert</p>";
        }
    }
}
?>
</div>
<?php 
require_once "include/footer.php";
示例#3
0
<?php

$title = "Literaturdetails";
require_once "include/header.php";
require_once "include/literatur.php";
// Lese Literatur aus, wenn id übergeben wurde
if (isset($_GET["id"])) {
    $literatur = new Literatur($_GET["id"]);
} else {
    $literatur = new Literatur(0);
}
// gebe Literatur aus
?>
<div id="cfront" class="content">
	
	<table id="litdetails">
		<tbody>
			<tr>
				<th scope="row">Titel:</th>	
				<td><?php 
echo htmlspecialchars($literatur->Titel);
?>
</td>
			</tr>
			<tr>
				<th scope="row">Autor:</th>	
				<td><?php 
$autorlist = "";
if (count($literatur->Autoren) > 0) {
    $autornamen = array();
    foreach ($literatur->Autoren as $autor) {
示例#4
0
    $bibtex = "";
    if (empty($_FILES["bibtexfile"]) === false) {
        // Wenn Datei hochgeladen wurde, lese Inhalt der Datei
        $bibtex = file_get_contents($_FILES["bibtexfile"]["tmp_name"]);
    } elseif (empty($_POST["bibtextext"]) === false) {
        // Wenn Textdaten hochgeladen wurden, entferne automatisch
        // hinzugefügte Backslashes vor Zeichen mit besonderer Bedeutung
        $bibtex = stripslashes($_POST["bibtextext"]);
    }
    // Fehler, wenn "nichts" hochgeladen/übergeben wurde
    if ($bibtex === false || empty($bibtex) === true) {
        echo "<div id=\"error\">Konnte nichts zum importieren lesen</div>";
    } else {
        // Importiere BibTeX in Datenbank
        require_once "include/literatur.php";
        $imported = Literatur::InsertBibTeX($bibtex);
        // Gebe je nach Anzahl importierter Literatureinträge Text aus
        switch ($imported) {
            case 0:
                echo "<p style=\"text-align: center\">Keine Literatur wurde importiert</p>";
                break;
            case 1:
                echo "<p style=\"text-align: center\">Ein Literatureintrag wurde importiert</p>";
                break;
            default:
                echo "<p style=\"text-align: center\">{$imported} Literatureinträge wurden importiert</p>";
        }
    }
}
?>
</div>