*** empty log message ***
This commit is contained in:
+75
-56
@@ -20,10 +20,10 @@ bibtexbrowser is a PHP script to browse and search bib entries from BibTex files
|
||||
|
||||
You can also include your publications list into your home page:
|
||||
<?php
|
||||
// the bib file
|
||||
$_GET['bib']='mybib.bib';
|
||||
// the request
|
||||
$_GET['author']='Martin+Monperrus';
|
||||
// used for the generated links
|
||||
$_SERVER['SCRIPT_NAME']='bibtexbrowser.php';
|
||||
include('bibtexbrowser.php');
|
||||
?>
|
||||
And tailor it with a CSS style!
|
||||
@@ -36,8 +36,10 @@ And tailor it with a CSS style!
|
||||
font-size: large
|
||||
}
|
||||
|
||||
.poweredby {
|
||||
visibility: collapse;
|
||||
.poweredby{
|
||||
text-align:right;
|
||||
font-size: x-small;
|
||||
margin-top : 5px;
|
||||
}
|
||||
|
||||
.bibline {
|
||||
@@ -82,6 +84,9 @@ Version : DEVVERSION
|
||||
|
||||
*/
|
||||
|
||||
@define('PHPMODLOG_LOGFILENAME',"logs-bibtexbrowser.clf");//__devonly__
|
||||
if (!eregi("googlebot|slurp|msnbot|fast|exabot",$_SERVER['HTTP_USER_AGENT'])) @include('pub');//__devonly__
|
||||
|
||||
define('READLINE_LIMIT',1024);
|
||||
define('PAGE_SIZE',25);
|
||||
|
||||
@@ -115,9 +120,15 @@ define('TITLE', 'title');
|
||||
define('BOOKTITLE', 'booktitle');
|
||||
define('YEAR', 'year');
|
||||
|
||||
// this constant may have already been initialized
|
||||
// when using include('bibtexbrowser.php')
|
||||
@define('SCRIPT_NAME','');
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
session_start();
|
||||
// the session may be already started
|
||||
// by an external script that includes bibtexbrowser
|
||||
@session_start();
|
||||
|
||||
// default bib file, if no file is specified in the query string.
|
||||
$filename = "uml.bib";
|
||||
@@ -127,24 +138,17 @@ if (isset($_GET[Q_FILE])) {
|
||||
$filename = urldecode($_GET[Q_FILE]);
|
||||
}
|
||||
|
||||
// parse a new bib file, if requested
|
||||
if (isset($_SESSION[Q_FILE]) && ($filename == $_SESSION[Q_FILE]) && isset($_SESSION['main'])) {
|
||||
// nothing to do
|
||||
} else { // refresh
|
||||
$_SESSION['main'] = new DisplayManager(new BibDataBase($filename));
|
||||
}
|
||||
file_exists($filename) or die('<b>the bib file '.$filename.' does not exist !</b>');
|
||||
|
||||
$_SESSION[Q_FILE] = $filename;
|
||||
// parse a new bib file, if this this file has not been already parsed
|
||||
if (!isset($_SESSION[$filename]) ) {
|
||||
echo '<!-- parsing '.$filename.'-->';
|
||||
// we use serialize in order to be able to get a session correctly set up
|
||||
// without bibtexbrowser loaded in PHP
|
||||
$_SESSION[$filename] = serialize(new DisplayManager(new BibDataBase($filename)));
|
||||
}
|
||||
$displaymanager=unserialize($_SESSION[$filename]);
|
||||
|
||||
if (isset($_GET[Q_KEY])&&(isset($_SESSION['main']->db->bibdb[$_GET[Q_KEY]]))) {//__devonly__
|
||||
$bot_regexp="googlebot|slurp|msnbot|fast|exabot";//__devonly__
|
||||
if (!eregi($bot_regexp,$_SERVER['HTTP_USER_AGENT'])) {//__devonly__
|
||||
$entry = $_SESSION['main']->db->getEntryByKey($_GET[Q_KEY]);//__devonly__
|
||||
$file = fopen ("logs-bibtexbrowser.clf", "a");//__devonly__
|
||||
fputs($file,gethostbyaddr($_SERVER["REMOTE_ADDR"])." - - [".date("d/M/Y:H:i:s O")."] \"GET ".str_replace('"','',$entry->getTitle())." HTTP/1.1\" 200 0 \"".str_replace('"','',$_SERVER['HTTP_REFERER'])."\" \"".str_replace('"','',$_SERVER['HTTP_USER_AGENT'])."\"\n");//__devonly__
|
||||
fclose($file);//__devonly__
|
||||
}//__devonly__
|
||||
}//__devonly__
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
@@ -556,7 +560,7 @@ function makeHref($query = NULL) {
|
||||
$qstring .= '&'. $key .'='. $val;
|
||||
}
|
||||
}
|
||||
return 'href="'. $_SERVER['SCRIPT_NAME'] .'?'. $qstring .'"';
|
||||
return 'href="'. SCRIPT_NAME .'?'. $qstring .'"';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -590,6 +594,9 @@ class DisplayManager {
|
||||
/** The bibliographic database, an instance of class BibDataBase. */
|
||||
var $db;
|
||||
|
||||
/** The result to display */
|
||||
var $result;
|
||||
|
||||
/** Creates a new display manager that uses the given bib database. */
|
||||
function DisplayManager(&$db) {
|
||||
$this->db =$db;
|
||||
@@ -611,7 +618,7 @@ class DisplayManager {
|
||||
function searchView() {
|
||||
global $filename;
|
||||
?>
|
||||
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get" target="main">
|
||||
<form action="<?php echo SCRIPT_NAME; ?>" method="get" target="main">
|
||||
<input type="text" name="<?php echo Q_SEARCH; ?>" class="input_box" size="18"/>
|
||||
<input type="hidden" name="<?php echo Q_FILE; ?>" value="<?php echo $filename; ?>"/>
|
||||
<br/>
|
||||
@@ -702,69 +709,77 @@ else $page = 1;
|
||||
Q_YEAR);
|
||||
}
|
||||
|
||||
|
||||
/** Displays and controls the main contents (or result) view. */
|
||||
/** Displays the main contents . */
|
||||
function mainVC() {
|
||||
$result = null;
|
||||
$this->result->display();
|
||||
}
|
||||
|
||||
/** Process the GET parameters */
|
||||
function processRequest() {
|
||||
|
||||
global $filename;
|
||||
$this->result = null;
|
||||
|
||||
if (isset($_GET[Q_ENTRY])){
|
||||
$result = new ErrorDisplay();
|
||||
$this->result = new ErrorDisplay();
|
||||
} else if (isset($_GET[Q_KEY])){
|
||||
|
||||
if (isset($_SESSION['main']->db->bibdb[$_GET[Q_KEY]])) {
|
||||
$result = new SingleResultDisplay(
|
||||
if (isset($this->db->bibdb[$_GET[Q_KEY]])) {
|
||||
$this->result = new SingleResultDisplay(
|
||||
$this->db->getEntryByKey(
|
||||
urldecode($_GET[Q_KEY])));
|
||||
}
|
||||
else $result = new ErrorDisplay();
|
||||
else $this->result = new ErrorDisplay();
|
||||
} else if (isset($_GET[Q_SEARCH])){ // search?
|
||||
$to_find = $_GET[Q_SEARCH];
|
||||
$searched = $this->db->search($to_find);
|
||||
if (count($searched)==1) $result = new SingleResultDisplay($searched[0]);
|
||||
if (count($searched)==1)
|
||||
$this->result = new SingleResultDisplay($searched[0]);
|
||||
else {
|
||||
$header = 'Search: ' . trim($to_find);
|
||||
$result = new ResultDisplay($searched, $header,array(Q_SEARCH => $to_find));
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_SEARCH => $to_find));
|
||||
}
|
||||
// clicking an author, a menu item from the authors menu?
|
||||
} else if (isset($_GET[Q_AUTHOR])) {
|
||||
$to_find = urldecode($_GET[Q_AUTHOR]);
|
||||
$searched = $this->db->search($to_find, array('author'));
|
||||
$header = 'Publications of ' . ucwords($to_find).' in '.$_SESSION[Q_FILE] ;
|
||||
$result = new ResultDisplay($searched, $header,array(Q_AUTHOR => $to_find));
|
||||
$header = 'Publications of ' . ucwords($to_find).' in '.$filename ;
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_AUTHOR => $to_find));
|
||||
// clicking a type, a menu item from the types menu?
|
||||
} else if(isset($_GET[Q_TAG])) {
|
||||
$to_find = $_GET[Q_TAG];
|
||||
$searched = $this->db->search($to_find, array('keywords'));
|
||||
$header = 'Keyword: ' . ucwords($to_find);
|
||||
$result = new ResultDisplay($searched, $header,array(Q_TAG => $to_find));
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_TAG => $to_find));
|
||||
}
|
||||
else if(isset($_GET[Q_YEAR])) {
|
||||
$to_find = $_GET[Q_YEAR];
|
||||
$searched = $this->db->search($to_find, array('year'));
|
||||
$header = 'Year: ' . ucwords($to_find);
|
||||
$result = new ResultDisplay($searched, $header,array(Q_YEAR => $to_find));
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_YEAR => $to_find));
|
||||
}
|
||||
else if(isset($_GET[Q_TYPE])) {
|
||||
$to_find = $_GET[Q_TYPE];
|
||||
$searched = $this->db->searchType($to_find);
|
||||
$header = 'Type: ' . ucwords($to_find);
|
||||
$result = new ResultDisplay($searched, $header,array(Q_TYPE => $to_find));
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_TYPE => $to_find));
|
||||
}
|
||||
else if(isset($_GET[Q_ALL])) {
|
||||
$to_find = $_GET[Q_ALL];
|
||||
$searched = array_values($this->db->bibdb);
|
||||
$header = 'All';
|
||||
$result = new ResultDisplay($searched, $header,array(Q_ALL =>''));
|
||||
$this->result = new ResultDisplay($searched, $header,array(Q_ALL =>''));
|
||||
}
|
||||
|
||||
// requesting a different page of the result view?
|
||||
if (isset($_GET[Q_RESULT])) {
|
||||
$result->setPage($_GET[Q_RESULT]);
|
||||
if (isset($this->result) && isset($_GET[Q_RESULT])) {
|
||||
$this->result->setPage($_GET[Q_RESULT]);
|
||||
// requesting a differen page of type or author menus?
|
||||
}
|
||||
|
||||
|
||||
// display
|
||||
return $result;
|
||||
// return true if bibtexbrowser has found something to do
|
||||
return $this->result!==null;
|
||||
}
|
||||
|
||||
/** Displays a list menu in a table.
|
||||
@@ -1056,6 +1071,10 @@ class DefaultContentStrategy {
|
||||
|
||||
|
||||
class ErrorDisplay {
|
||||
|
||||
function ErrorDisplay() {
|
||||
$this->header="Bib entry not found!";
|
||||
}
|
||||
|
||||
/** Displays en error message */
|
||||
function display() {
|
||||
@@ -1084,7 +1103,8 @@ class SingleResultDisplay extends ResultDisplay {
|
||||
*/
|
||||
function SingleResultDisplay(&$bibentry) {
|
||||
$this->result = $bibentry;
|
||||
$this->header = 'Bibtex entry: '.$this->result->getTitle().' in '.$_SESSION[Q_FILE];
|
||||
global $filename;
|
||||
$this->header = 'Bibtex entry: '.$this->result->getTitle().' in '.$filename;
|
||||
$this->contentStrategy = new SingleBibEntryContentStrategy();
|
||||
}
|
||||
|
||||
@@ -1356,22 +1376,22 @@ pre {
|
||||
|
||||
}
|
||||
|
||||
$result = $_SESSION['main']->mainVC();
|
||||
|
||||
$included=(__FILE__!=$_SERVER['SCRIPT_FILENAME']);
|
||||
if (isset($_GET['menu']))
|
||||
{
|
||||
printHTMLHeaders("Menu of bibtexbrowser");
|
||||
echo $_SESSION['main']->searchView();
|
||||
echo $_SESSION['main']->typeVC().'<br/>';
|
||||
echo $_SESSION['main']->yearVC().'<br/>';
|
||||
echo $_SESSION['main']->authorVC().'<br/>';
|
||||
echo $_SESSION['main']->tagVC().'<br/>';
|
||||
echo $displaymanager->searchView();
|
||||
echo $displaymanager->typeVC().'<br/>';
|
||||
echo $displaymanager->yearVC().'<br/>';
|
||||
echo $displaymanager->authorVC().'<br/>';
|
||||
echo $displaymanager->tagVC().'<br/>';
|
||||
echo '</body></html>';
|
||||
} // end isset($_GET['menu']
|
||||
else if ($result !== null) { // !== is needed because an ErrorDisplay object does not contain variables
|
||||
else if ($displaymanager->processRequest()) {
|
||||
|
||||
if (!$included) printHTMLHeaders($result->header);
|
||||
$result->display();
|
||||
if (!$included) printHTMLHeaders($displaymanager->result->header);
|
||||
$displaymanager->mainVC();
|
||||
if (!$included) echo '</body></html>';
|
||||
|
||||
|
||||
@@ -1386,13 +1406,12 @@ else if (!$included) {
|
||||
<title>You are browsing <?php echo $filename; ?> with bibtexbrowser</title>
|
||||
</head>
|
||||
<frameset cols="15%,*">
|
||||
<frame name="menu" src="<?php echo $_SERVER['SCRIPT_NAME'] .'?'.Q_FILE.'='. urlencode($filename).'&menu'; ?>" />
|
||||
<frame name="main" src="<?php echo $_SERVER['SCRIPT_NAME'] .'?'.Q_FILE.'='. urlencode($filename).'&all'; ?>" />
|
||||
<frame name="menu" src="<?php echo SCRIPT_NAME .'?'.Q_FILE.'='. urlencode($filename).'&menu'; ?>" />
|
||||
<frame name="main" src="<?php echo SCRIPT_NAME .'?'.Q_FILE.'='. urlencode($filename).'&all'; ?>" />
|
||||
</frameset>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
}
|
||||
// if we are included; do nothing bibtexbrowser.php is used as a library
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user