'; ?> " . $content->getTitle() . ""; } ?> display(); echo "

back to publication list

"; echo poweredby(); if (BIBTEXBROWSER_USE_PROGRESSIVE_ENHANCEMENT) { javascript(); } if (BIBTEXBROWSER_RENDER_MATH) { javascript_math(); } ?> $db = zetDB('bibacid-utf8.bib'); $dis = new SimpleDisplay($db); NoWrapper($dis); */ function NoWrapper($content) { echo $content->display(); } /** is used to create an subset of a bibtex file. usage:
  $db = zetDB('bibacid-utf8.bib');
  $query = array('year'=>2005);
  $dis = new BibtexDisplay();
  $dis->setEntries($db->multisearch($query));
  $dis->display();
*/ class BibtexDisplay { function __construct() {} function setTitle($title) { $this->title = $title; return $this; } /** sets the entries to be shown */ function setEntries($entries) { $this->entries = $entries; } function setWrapper($x) { $x->wrapper = 'NoWrapper'; } function display() { header('Content-type: text/plain; charset='.OUTPUT_ENCODING); echo '% generated by bibtexbrowser '."\n"; echo '% '.@$this->title."\n"; echo '% Encoding: '.OUTPUT_ENCODING."\n"; foreach($this->entries as $bibentry) { echo $bibentry->getText()."\n"; } } } /** creates paged output, e.g: [[http://localhost/bibtexbrowser/testPagedDisplay.php?page=1]] usage:
  $_GET['library']=1;
  include( 'bibtexbrowser.php' );
  $db = zetDB('bibacid-utf8.bib');
  $pd = new PagedDisplay();
  $pd->setEntries($db->bibdb);
  $pd->display();
*/ class PagedDisplay { var $query = array(); function __construct() { $this->setPage(); } /** sets the entries to be shown */ function setEntries($entries) { uasort($entries, 'compare_bib_entries'); $this->entries = array_values($entries); } /** sets $this->page from $_GET, defaults to 1 */ function setPage() { $this->page = 1; if (isset($_GET['page'])) { $this->page = $_GET['page']; } } function setQuery($query) { $this->query = $query; } function getTitle() { return query2title($this->query). ' - page '.$this->page; } function display() { $less = false; if ($this->page>1) {$less = true;} $more = true; // computing $more $index = ($this->page)*bibtexbrowser_configuration('PAGE_SIZE'); if (!isset($this->entries[$index])) { $more = false; } $this->menu($less, $more); print_header_layout(); for ($i = 0; $i < bibtexbrowser_configuration('PAGE_SIZE'); $i++) { $index = ($this->page-1)*bibtexbrowser_configuration('PAGE_SIZE') + $i; if (isset($this->entries[$index])) { $bib = $this->entries[$index]; echo $bib->toHTML(true); } else { //break; } } // end foreach print_footer_layout(); $this->menu($less, $more); } function menu($less, $more) { echo ''; $prev = $this->query; $prev['page'] = $this->page-1; if ($less == true) { echo 'Prev Page'; } if ($less && $more) { echo ' | '; } $next = $this->query; $next['page'] = $this->page+1; if ($more == true) { echo 'Next Page'; } echo ''; } } /** is used to create an RSS feed. usage:
  $db = zetDB('bibacid-utf8.bib');
  $query = array('year'=>2005);
  $rss = new RSSDisplay();
  $entries = $db->getLatestEntries(10);
  $rss->setEntries($entries);
  $rss->display();
*/ class RSSDisplay { var $title = 'RSS produced by bibtexbrowser'; function __construct() { // nothing by default } function setTitle($title) { $this->title = $title; return $this; } /** tries to always output a valid XML/RSS string * based on OUTPUT_ENCODING, HTML tags, and the transformations * that happened in latex2html */ function text2rss($desc) { // first strip HTML tags $desc = strip_tags($desc); // some entities may still be here, we remove them // we replace html entities e.g. é by nothing // however XML entities are kept (e.g. 5) $desc = preg_replace('/&\w+;/','',$desc); // bullet proofing ampersand $desc = preg_replace('/&([^#])/','&$1',$desc); // be careful of < $desc = str_replace('<','<',$desc); // final test with encoding: if (function_exists('mb_check_encoding')) { // (PHP 4 >= 4.4.3, PHP 5 >= 5.1.3) if (!mb_check_encoding($desc,OUTPUT_ENCODING)) { return 'encoding error: please check the content of OUTPUT_ENCODING'; } } return $desc; } /** sets the entries to be shown */ function setEntries($entries) { $this->entries = $entries; } function setWrapper($x) { $x->wrapper = 'NoWrapper'; } function display() { header('Content-type: application/rss+xml'); echo ''; // ?> <?php echo $this->title;?> http:// bibtexbrowser v5e1ec86e21e72094a034cedf5dd013f9b01ad0cc entries as $bibentry) { ?> <?php echo $this->text2rss($bibentry->getTitle());?> getURL();?> text2rss(bib2html($bibentry)."\n".$bibentry->getAbstract()); ?> getKey());?> $_GET['library']=1; @require('bibtexbrowser.php'); $_GET['bib']='bibacid-utf8.bib'; $_GET['year']='2006'; $x = new Dispatcher(); $x->main(); */ class Dispatcher { /** this is the query */ var $query = array(); /** the displayer of selected entries. The default is set in BIBTEXBROWSER_DEFAULT_DISPLAY. * It could also be an RSSDisplay if the rss keyword is present */ var $displayer = ''; /** the wrapper of selected entries. The default is an HTML wrapper * It could also be a NoWrapper when you include your pub list in your home page */ var $wrapper = BIBTEXBROWSER_DEFAULT_TEMPLATE; /** The BibDataBase object */ var $db = null; function __construct() {} /** returns the underlying BibDataBase object */ function getDB() { // by default set it from $_GET[Q_FILE] // first we set the database (load from disk or parse the bibtex file) if ($this->db == null) { list($db, $parsed, $updated, $saved) = _zetDB($_GET[Q_FILE]); $this->db = $db; } return $this->db; } function main() { // are we in test mode, or libray mode // then this file is just a library if (isset($_GET['test']) || isset($_GET['library'])) { // we unset in order to use the dispatcher afterwards unset($_GET['test']); unset($_GET['library']); return; } if (!isset($_GET[Q_FILE])) { die('$_GET[\''.Q_FILE.'\'] is not set!'); } // is the publication list included in another page? // strtr is used for Windows where __FILE__ contains C:\toto and SCRIPT_FILENAME contains C:/toto (bug reported by Marco) // realpath is required if the path contains sym-linked directories (bug found by Mark Hereld) if (strtr(realpath(__FILE__),"\\","/")!=strtr(realpath($_SERVER['SCRIPT_FILENAME']),"\\","/")) $this->wrapper=BIBTEXBROWSER_EMBEDDED_WRAPPER; // first pass, we will exit if we encounter key or menu or academic // other wise we just create the $this->query foreach($_GET as $keyword=>$value) { if (method_exists($this,$keyword)) { // if the return value is END_DISPATCH, we finish bibtexbrowser (but not the whole PHP process in case we are embedded) if ($this->$keyword()=='END_DISPATCH') return; } } // at this point, we may have a query if (count($this->query)>0) { // first test for inconsistent queries if (isset($this->query[Q_ALL]) && count($this->query)>1) { // we discard the Q_ALL, it helps in embedded mode unset($this->query[Q_ALL]); } $selectedEntries = $this->getDB()->multisearch($this->query); if (count($selectedEntries)==0) { $this->displayer = 'NotFoundDisplay'; } // default order uasort($selectedEntries, 'compare_bib_entries'); $selectedEntries = array_values($selectedEntries); //echo '
';print_r($selectedEntries);echo '
'; if ($this->displayer=='') { $this->displayer = bibtexbrowser_configuration('BIBTEXBROWSER_DEFAULT_DISPLAY'); } } // otherwise the query is left empty // do we have a displayer? if ($this->displayer!='') { $options = array(); if (isset($_GET['dopt'])) { $options = json_decode($_GET['dopt'],true); } // required for PHP4 to have this intermediate variable $x = new $this->displayer(); if (method_exists($x,'setEntries')) { $x->setEntries($selectedEntries); } if (method_exists($x,'setTitle')) { $x->setTitle(query2title($this->query)); } if (method_exists($x,'setQuery')) { $x->setQuery($this->query); } // should call method display() on $x $fun = $this->wrapper; $fun($x); $this->clearQuery(); } else { // we send a redirection for having the frameset // if some contents have already been sent, for instance if we are included // this means doing nothing if ( headers_sent() == false ) { /* to avoid sending an unnecessary frameset */ header("Location: ".$_SERVER['SCRIPT_NAME']."?frameset&bib=".$_GET[Q_FILE]); } } } /** clears the query string in $_GET so that bibtexbrowser can be called multiple times */ function clearQuery() { $params= array(Q_ALL,'rss', 'astext', Q_SEARCH, Q_EXCLUDE, Q_YEAR, EDITOR, Q_TAG, Q_AUTHOR, Q_TYPE, Q_ACADEMIC, Q_KEY); foreach($params as $p) { unset($_GET[$p]); } } function all() { $this->query[Q_ALL]=1; } function display() { $this->displayer=$_GET['display']; } function rss() { $this->displayer='RSSDisplay'; $this->wrapper='NoWrapper'; } function astext() { $this->displayer='BibtexDisplay'; $this->wrapper='NoWrapper'; } function search() { if (preg_match('/utf-?8/i',OUTPUT_ENCODING)) { $_GET[Q_SEARCH] = urldecode($_GET[Q_SEARCH]); } $this->query[Q_SEARCH]=$_GET[Q_SEARCH]; } function exclude() { $this->query[Q_EXCLUDE]=$_GET[Q_EXCLUDE]; } function year() { // we may want the latest if ($_GET[Q_YEAR]=='latest') { $years = $this->getDB()->yearIndex(); $_GET[Q_YEAR]=array_shift($years); } $this->query[Q_YEAR]=$_GET[Q_YEAR]; } function editor() { $this->query[EDITOR]=$_GET[EDITOR]; } function keywords() { $this->query[Q_TAG]=$_GET[Q_TAG]; } function author() { // Friday, October 29 2010 // changed from 'author' to '_author' // in order to search at the same time "Joe Dupont" an "Dupont, Joe" $this->query[Q_INNER_AUTHOR]=$_GET[Q_AUTHOR]; } function type() { $this->query[Q_TYPE]= $_GET[Q_TYPE]; } /** * Allow the user to search for a range of dates * * The query string can comprise several elements separated by commas and * optionally white-space. * Each element can either be one number (a year) or two numbers * (a range of years) separated by anything non-numerical. * */ function range() { $ranges = explode(',', $_GET[Q_RANGE]); $result = array(); $nextYear = 1 + (int) date('Y'); $nextYear2D = $nextYear % 100; $thisCentury = $nextYear - $nextYear2D; foreach ($ranges as $range) { $range = trim($range); preg_match('/([0-9]*)([^0-9]*)([0-9]*)/', $range, $matches); array_shift($matches); // If the number is empty, leave it empty - dont put it to 0 // If the number is two-digit, assume it to be within the last century or next year if ($matches[0] === "") { $lower = ""; } else if ($matches[0] < 100) { if ($matches[0] > $nextYear2D) { $lower = $thisCentury + $matches[0] - 100; } else { $lower = $thisCentury + $matches[0]; } } else { $lower = $matches[0]; } // If no separator to indicate a range of years was supplied, // the upper and lower boundaries are the same. // // Otherwise, again: // If the number is empty, leave it empty - dont put it to 0 // If the number is two-digit, assume it to be within the last century or next year if ($matches[1] === "") $upper = $lower; else { if ($matches[2] === "") { $upper = ""; } else if ($matches[2] < 100) { if ($matches[2] > $nextYear2D) { $upper = $thisCentury + $matches[2] - 100; } else { $upper = $thisCentury + $matches[2]; } } else { $upper = $matches[2]; } } $result[] = array($lower, $upper); } $this->query[Q_RANGE] = $result; } function menu() { $menu = createMenuManager(); $menu->setDB($this->getDB()); $fun = $this->wrapper; $fun($menu); return 'END_DISPATCH'; } /** the academic keyword in URLs switch from a year based viey to a publication type based view */ function academic() { $this->displayer='AcademicDisplay'; // backward compatibility with old GET API // this is deprecated // instead of academic=Martin+Monperrus // you should use author=Martin+Monperrus&academic // be careful of the semantics of === and !== // 'foo bar' == true is true // 123 == true is true (and whatever number different from 0 // 0 == true is true // '1'!=1 is **false** if(!isset($_GET[Q_AUTHOR]) && $_GET[Q_ACADEMIC]!==true && $_GET[Q_ACADEMIC]!=='true' && $_GET[Q_ACADEMIC]!=1 && $_GET[Q_ACADEMIC]!='') { $_GET[Q_AUTHOR]=$_GET[Q_ACADEMIC]; $this->query[Q_AUTHOR]=$_GET[Q_ACADEMIC]; } } function key() { $entries = array(); // case 1: this is a single key if ($this->getDB()->contains($_GET[Q_KEY])) { $entries[] = $this->getDB()->getEntryByKey($_GET[Q_KEY]); if (isset($_GET['astext'])) { $bibdisplay = new BibtexDisplay(); $bibdisplay->setEntries($entries); $bibdisplay->display(); } else { $bibdisplay = createBibEntryDisplay(); $bibdisplay->setEntries($entries); $fun = $this->wrapper; $fun($bibdisplay); } return 'END_DISPATCH'; } // case two: multiple keys if (preg_match('/[|,]/',$_GET[Q_KEY])) { $this->query[Q_SEARCH]=str_replace(',','|',$_GET[Q_KEY]); } else { nonExistentBibEntryError(); } } function keys() { // Create array from list of bibtex entries if (get_magic_quotes_gpc()) { $_GET[Q_KEYS] = stripslashes($_GET[Q_KEYS]); } $_GET[Q_KEYS] = (array) json_decode(urldecode($_GET[Q_KEYS])); // decode and cast the object into an (associative) array // Make the array 1-based (keeps the string keys unchanged) array_unshift($_GET[Q_KEYS],"__DUMMY__"); unset($_GET[Q_KEYS][0]); // Keep a flipped version for efficient search in getRawAbbrv() $_GET[Q_INNER_KEYS_INDEX] = array_flip($_GET[Q_KEYS]); $this->query[Q_KEYS]=$_GET[Q_KEYS]; } /** is used to remotely analyzed a situation */ function diagnosis() { header('Content-type: text/plain'); echo "php version: ".phpversion()."\n"; echo "bibtexbrowser version: 5e1ec86e21e72094a034cedf5dd013f9b01ad0cc\n"; echo "dir: ".decoct(fileperms(dirname(__FILE__)))."\n"; echo "bibtex file: ".decoct(fileperms($_GET[Q_FILE]))."\n"; exit; } function frameset() { ?> You are browsing <?php echo htmlentities($_GET[Q_FILE], ENT_QUOTES); ?> with bibtexbrowser load($arguments[1]); $current_entry=NULL; $current_field=NULL; for ($i=2;$igetEntryByKey($arguments[$i+1]); $i=$i+1; } if (preg_match('/^--set-(.*)/',$arg,$matches)) { $current_entry->setField($matches[1],$arguments[$i+1]); $i=$i+1; } } file_put_contents($arguments[1],$db->toBibtex()); } } // end if (!defined('BIBTEXBROWSER')) @include(preg_replace('/\.php$/','.after.php',__FILE__)); $class = BIBTEXBROWSER_MAIN;// extension point $main = new $class(); $main->main(); ?> data0000777121240400251540000000000013654765100014510 2../../data-rw/ddiustar grillenbmi_agddinew.php0000770121240400251540000002137413670163227012520 0ustar grillenbmi_agddi DDI-Publikationen: NEU
Format bitte unbedingt einhalten: Nachname 1, Vorname 1; Nachname 2, Vorname 2; ... (Journal- bzw. Proceedingstitel, falls zutreffend) (Herausgeber von Proceedings, falls zutreffend, Namensformat siehe oben)
$_POST["type"], "year" => $_POST["year"], "url" => $_POST["url"], "publisher" => $_POST["publisher"], "title" => $_POST["title"], "in" => $_POST["in"], "issue" => $_POST["issue"], "vol" => $_POST["vol"], "author" => str_replace(";", " and", $_POST["author"]), "editors" => str_replace(";", " and", $_POST["editors"]), "key" => hash("crc32", $_POST["title"]), ); $res = ""; if($data["type"] == "inproceedings") { $res = " @inproceedings{".$data["key"].", ".insertBib("Author", $data["author"])." ".insertBib("Booktitle", $data["in"])." ".insertBib("Editor", $data["editors"])." ".insertBib("Publisher", $data["publisher"])." ".insertBib("Title", $data["title"])." ".insertBib("Url", $data["url"])." ".insertBib("Year", $data["year"], false)." } "; } if($data["type"] == "article") { $res = " @article{".$data["key"].", ".insertBib("Author", $data["author"])." ".insertBib("Journal", $data["in"])." ".insertBib("Number", $data["issue"])." ".insertBib("Title", $data["title"])." ".insertBib("Volume", $data["volume"])." ".insertBib("Year", $data["year"], false)." } "; } if($data["type"] == "misc") { $res = " @misc{".$data["key"].", ".insertBib("Author", $data["author"])." ".insertBib("Booktitle", $data["in"])." ".insertBib("Editor", $data["editors"])." ".insertBib("Publisher", $data["publisher"])." ".insertBib("Title", $data["title"])." ".insertBib("Url", $data["url"])." ".insertBib("Year", $data["year"])." ".insertBib("Number", $data["issue"])." ".insertBib("Volume", $data["volume"], false)." } "; } if($data["type"] == "book") { $res = " @book{".$data["key"].", ".insertBib("Author", $data["author"])." ".insertBib("Editor", $data["editors"])." ".insertBib("Publisher", $data["publisher"])." ".insertBib("Title", $data["title"])." ".insertBib("Url", $data["url"])." ".insertBib("Year", $data["year"], false)." } "; } error_reporting(E_ALL); ini_set("display_errors", 1); file_put_contents("data/biblio.bib", $res, FILE_APPEND); echo "Fertig."; endif; function insertBib($key, $val, $comma = true) { if($val != "") return $key . " = {" . $val . "}" . ($comma ? "," : "") . "\r\n"; return ""; } ?> publications.php0000770121240400251540000001167214165631737014431 0ustar grillenbmi_agddi "Andreas Grillenberger", "Michaeli, Tilman" => "Tilman Michaeli", "Riel, Manuel" => "Manuel Riel", "Romeike, Ralf" => "Ralf Romeike", "Seegerer, Stefan" => "Stefan Seegerer", ); $authorsExt = array( "Jatzlau, Sven" => "Sven Jatzlau", "Kastl, Petra" => "Petra Kastl", "Przybylla, Mareen" => "Mareen Przybylla", ); $firstYear = 2006; $bibFile = "data/biblio.bib"; ///web/page.mi.fu-berlin.de/data-rw/grillenb/biblio.bib"; // End of configuration $_GET['bib'] = $bibFile; $_GET['all'] = 1; function printYearLinks($firstYear) { $lastYear = date("Y"); $y = $lastYear; while($y >= $firstYear) { if(isset($_GET["year"]) && $_GET["year"]==$y) print($y); else print("".$y.""); if($y < $lastYear) print(" | "); $y--; } } function printYearOptions($firstYear) { $lastYear = date("Y"); $y = $lastYear; print(""); while($y >= $firstYear) { print(""); $y--; } } function printAuthorLinks($authors) { $ct = count($authors); foreach($authors as $k=>$v) { if(isset($_GET["author"]) && $_GET["author"] == $k) print($v); else print("".$v.""); if($ct-- > 1) { print(" | "); } } } function printAuthorOptions($authorsFU, $authorsExt = "") { $ct = count($authorsFU) + count($authorsExt); print(""); print(""); print(""); foreach($authorsFU as $k=>$v) { print(""); } print(""); print(""); foreach($authorsExt as $k=>$v) { print(""); } } function printFilters() { $filters = ""; if(isset($_GET["year"]) && $_GET["year"] != "") { $filters .= "
- Jahr: ".htmlspecialchars($_GET["year"]); } if(isset($_GET["author"]) && $_GET["author"] != "") { $filters .= "
- Autor: ".htmlspecialchars($_GET["author"]); } if(strlen($filters) > 1) $filters .= "
zurücksetzen"; else $filters = "keine Filter angewendet"; print($filters); } ?> DDI-Publikationen

Publikationen

Publications

Filter:


" />
-->
Big-Data-Analyse im Informatikunterricht mit Datenstromsystemen: Ein Unterrichtsbeispiel
by Grillenberger, Andreas and Romeike, Ralf
Reference:
Grillenberger, Andreas and Romeike, Ralf: Big-Data-Analyse im Informatikunterricht mit Datenstromsystemen: Ein Unterrichtsbeispiel, In: Gallenbacher, Jens (ed.): INFOS 2015: Informatik allgemeinbildend begreifen, 2015.
Bibtex Code:
@inproceedings{grillenberger2015c,
	Address = {Bonn},
	Author = {Grillenberger, Andreas and Romeike, Ralf},
	Bibsource = {UnivIS, http://univis.uni-erlangen.de/prg?search=publications&id=91585131&show=elong},
	Booktitle = {{INFOS 2015: Informatik allgemeinbildend begreifen}},
	Date-Added = {2018-10-09 08:34:40 +0200},
	Date-Modified = {2018-10-09 08:42:37 +0200},
	Editor = {Gallenbacher, Jens},
	Location = {Darmstadt},
	Pages = {135--144},
	Series = {{Lecture Notes in Informatics (LNI)}},
	Title = {{Big-Data-Analyse im Informatikunterricht mit Datenstromsystemen: Ein Unterrichtsbeispiel}},
	Url = {http://computingeducation.de/pub/2015_Grillenberger-Romeike_INFOS2015_PB.pdf},
	Year = {2015},
	Bdsk-Url-1 = {http://computingeducation.de/pub/2015_Grillenberger-Romeike_INFOS2015_PB.pdf}}

back to publication list

Powered by bibtexbrowser