Browse Source

added support for advanced author search\nwe can search at the same time "Joe Dupont" an "Dupont, Joe"

hg/35a367e65a464cf6cdf277c73f977a6828b723fe/bookmarks/master
Martin Monperrus 15 years ago
parent
commit
49760096c7
  1. 32
      bibtexbrowser.php

32
bibtexbrowser.php

@ -687,17 +687,30 @@ class BibDBBuilder {
}
function endEntry($entrysource) {
// we can set the fulltext
$this->currentEntry->text = $entrysource;
// we format the author names in a special field
// to enable search
if ($this->currentEntry->hasField('author')) {
$this->currentEntry->setField('_author',$this->currentEntry->getFormattedAuthorsImproved());
}
// ignoring jabref comments
if (($this->currentEntry->getType()=='comment')) {
/* do nothing for jabref comments */
} else if ($this->currentEntry->getType()=='string') {
}
// we add it to the string database
else if ($this->currentEntry->getType()=='string') {
foreach($this->currentEntry->fields as $k => $v) {
//echo $k.' '.$v;
$k!='type' and $this->stringdb[$k]=$v;
}
} else {
}
// we add it to the database
else {
$this->builtdb[$this->currentEntry->getKey()] = $this->currentEntry;
}
}
@ -1593,7 +1606,10 @@ class BibtexBrowserDisplay {
/** transforms an array representing a query into a formatted string */
function query2title(&$query) {
$headers = array();
foreach($query as $k=>$v) $headers[$k] = ucwords($k).': '.ucwords($v);
foreach($query as $k=>$v) {
if($k == '_author') { $k = 'author'; }
$headers[$k] = ucwords($k).': '.ucwords($v);
}
// special cases
if (isset($headers[Q_ALL])) $headers[Q_ALL] = 'Publications in '.$_GET[Q_FILE];
if (isset($headers[Q_AUTHOR])) $headers[Q_AUTHOR] = 'Publications of '.$_GET[Q_AUTHOR];
@ -2058,7 +2074,7 @@ class BibDataBase {
foreach ($this->bibdb as $bib) {
foreach($bib->getRawAuthors() as $a){
//we use an array because several authors can have the same lastname
@$result[getLastName($a)][$a]++;
@$result[getLastName($a)][$bib->formatAuthor($a)]++;
}
}
ksort($result);
@ -2538,7 +2554,11 @@ class Dispatcher {
function keywords() { $this->query[Q_TAG]=$_GET[Q_TAG]; }
function author() {
$this->query[Q_AUTHOR]=$_GET[Q_AUTHOR];
// Friday, October 29 2010
// changed fomr 'author' to '_author'
// because '_author' is already formatted
// doing so we can search at the same time "Joe Dupont" an "Dupont, Joe"
$this->query['_author']=$_GET[Q_AUTHOR];
}
function type() { $this->query[Q_TYPE]=$_GET[Q_TYPE]; }

Loading…
Cancel
Save