PhpBibliography - web based bibliography system - OLD VERSION
by Lorenzo Bettini
PhpBibliography allows you to publish your bibliography online (and to
edit it
via web).
A brand new version of PhpBibliography is available at the home page. This page is here only as a reference for old installations.
It is implemented in Php
5 and uses MySql 5
(however, it might work also with Php 4, and also with MySql 4, but I'm not testing this).
Since version 0.5, it also uses some AJAX techniques to perform some
checks while editing/inserting data.
Errors
will be reported in this color (and they prevent from
inserting data),
while warnings in this color,
and they do not prevent frominserting data. It can also generate RSS
feeds and import papers from DBLP, thanks
to Ezio Bartocci.
This is free software, open source, released under GPL.
Download and Install
You can download PhpBibliography from here:
http://sourceforge.net/projects/phpbibliography
You need a web server with php support and a MySql server.
In
particular, phpbibliography was developed under Linux, using Apache 2
web server
(I guess it should work also on other systems).
These are the main additions in the new
releases.
You can also find details about new features on my blog, in this area: http://tronprog.blogspot.com/search/label/phpbibliography.
Upgrade from version <n> to <n+1>
When you upgrade to a new version, you should first check whether in the distribution file you find a file named update-<n>-<n+1>.sql
(e.g., update-0.6-0.7.sql); if there's such a file, it means that the
database structure needs an update, and thus you should such file,
e.g., run the command:
mysql -u <your user> -p <bibliography database> < update-<n>-<n+1>.sql
Of course, you need to use the same database name you had used when you
performed the original installation.
Note that the updates sql file are always thought for upgrading
from a version n to a version n+1; if you're upgrading from an older
version n to a newer version n+m, you should apply all the update
files, starting from update-<n>-<n+1>.sql up to
update-<n+m-1>-<n+m>.sql.
Then, copy all the files (you can skip the subdirectories) of
the html
directory to the desired directory in your web server (replacing all
the previous files), but please, DO NOT
REPLACE the existing config.php,
otherwise you will lose your previous configurations. Since version 0.3
the config.php is not distributed: the file config_example.php
is
distributed and it must be copied into config.php during a brand new
installation. This way, you can safely copy all the files in the html
directory into your server directory without risking to override your
previous config.php.
Brand new install
These instructions assume you already have a working web
server/php/MySql system:
- Create a database called bibliography (this
is the default but you can choose the name you want, provided you
update config.php accordingly, see below; for instance some providers
already set up some databases for you, with specific names: you should
choose one of these and then update config.php accordingly, see below)
- (Optional) assign user and password to the created database
- upload the file bibliography.sql
you find in the zip file (this will create the table structures); in
order to do this you can either use the following mysql command, where
<your user> should be replaced with the user you assigned
to the database (default: root) and <bibliography
database> is the name of the database you created (default:
bibliography):
mysql -u <your user> -p <bibliography database> < bibliography.sql
Alternatively you can
use
your favorite mysql management system, e.g., phpMyAdmin.
Note: phpbibliography relies on InnoDB tables for the database, but it
should
work even with standard MySql table types (I haven't tested this) but
you lose referential integrity.
- Copy (or even better, move) the file config_example.php
into config.php and
edit the config.php
file in the html directory according to your configuration:
- $dbhost
= "localhost";
This is the address of the MySql server (by default it is the same of
your web server - thus, localhost - but it might not always be the case)
- $dbuname
= "root";
The user owner of the database you created (default: root)
- $dbpass
= "pippo";
The password of the owner of the database you created
- $dbname
= "bibliography";
The name of the database you created (see above)
- $mysite
= "http://yoursite/yourphpbibliographypath";
This is the public URL of your phpbibliography site; it depends on
where you
upload the phpbibliography files (see below)
- $filedir
= "files";
This directory will store the papers you upload via phpbibliography.
You can
keep the default value (see below for setting up this directory)
- $maintitle
= "Bibliography Site";
This will be the title of the html pages generated by phpbibliography;
- $cssurl
= "default.css";
The CSS used by all the html pages generated by phpbibliography. For
the moment,
the other alternative CSS file is boxed.css (a boxed-based CSS file).
copy all the contents (including the subdirectories) of
the html
directory to the desired directory in your web server
(make sure that the subdirectory files
is writable from the web server user - you can make it writable and
accessible from anyone. This directory will store the papers you upload
via phpbibliography)
If everything was setup correctly you should be able to access to your
bibliography site with a browser.
Customizing
the format of a paper (also on the fly)
Since version 0.4, you can pass, in the URL, some variables that allows
you to customize the way a paper is shown on the screen. These
parameters can also be specified as global variables in the config
file. Of course, the value passed in the URL has the precedence over
the one specified in the config file. Here we list these parameters (in
the URL they must be passed without the $, using the GET passing method
syntax) and their default values:
- $printfilenames
= "1"
This tells the paper formatter whether to name the link to the paper
source using the complete name of the file (e.g., my_paper.ps.gz). If
set to "0", then only the extension of the file will be shown (e.g.,
ps.gz).
- $linktodetails
= "1"
The title of the paper will link to a separate page with complete
details about that paper. If set to "0", no link will be generated.
- $noheader
= "0"
If set to "1" the generated page will contain no header information
(i.e., it will not even contain the css definitions). This is useful
when you want to include the output of phpbibliography into another web
page and you want customize it with your own css definitions.
- $paperorder
Specify the sorting criteria of the shown papers. For the moment the
only possible value for this parameter is title (meaning that
papers will be ordered according to their title).
- $linktorss
= "1" (since version 0.5)
By default the list of papers generated by the main page, if no
grouping is specified, generate a link to an RSS feed; by unsetting
this variable or setting it to a value different from "1" you can
disable this feature.
Adding and modifying users and papers
(Since version 0.3 an online help is available when editing/adding
papers; please refer to that help for further details).
The first time you access your online bibliography it will, of course,
contain no entries.
You can access the administration page of phpbibliography by accessing
the file admin.php
(i.e., if your phpib site is http://mysite/phpbibliography/
you should access the administration page as http://mysite/phpbibliography/admin.php).
You'll be asked a username and a password. Phpbibliography comes with a
predefined admin
user, password admin.
Use it to login the first time and then go in the users section and
change the password.
IMPORTANT: the authentication relies on sessions, and typically
sessions are implemented through cookies (although php can handle them
even without them, if configured accordingly). So, you might need to
enable cookies in your browser; however the system will perform a check
about cookies.
You can create further users if you want; if you set the "admin" check
box when creating/editing a user, that user will have administration
privileges (e.g., he'll be able to change other users besides himself).
Next you can start adding your authors, categories
of the papers, and
then the papers themselves. This can be done by accessing the main menu
of admin.php.
Since version 0.3, you can also add new authors and new categories on
the fly when editing/adding a paper.
When inserting a paper you can also upload two files for your paper
(they will be uploaded in the files subdirectory, see above);
alternatively, instead of uploading a file you can insert a direct link
(URL) to the paper if the paper is already available on-line somewhere
else.
BibTex Management
Since version 0.2, when displaying a paper information, the system will
generate a link to a bibtex page, where the bibtex of that paper will
be shown. Such page can either be generated automatically by the
system, or can simply show the bibtex field of the paper, if this is
set. When inserting a paper you can specifiy the type of the
paper
(according to the bibtex syntax, i.e., INPROCEEDINGS, ARTICLE, etc.),
and you can manually insert the bibtex. If you
leave the bibtex field empty, then, when displaying the list of papers,
the system will automatically generate the corresponding bibtex.
Since version 0.2, you can add a new paper also by using a bibtex entry
(see the menu in the admin page). This will interpret the bibtex entry
and create a paper entry; once the paper is created, you'll have the
chance to modify it (and add missing parts, such as the abstract and
upload files for the paper). When inserting a paper through a bibtex,
the system will use the authors specified in the bibtex entry; in
particular, it will search for the authors in the already existing
author table (it will also infer the name of the author if this is not
fully specified in the bibtex entry, e.g., if the author in the bibtex
is L. Bettini, and the author table contains the author Lorenzo
Bettini, then it will use this author); if it does not find a matching
author, it will automatically add it to the table of authors. When
inserting a paper this way, you can also decide whether to set the
paper
bibtex field to the bibtex that was used to insert the paper.
Since version 0.4, papers can also be modified through a bibtex; this
relies on the new paper field, introduced in version 0.4, bibtex key.
Thus,
the system will modify the paper that has the same bibtex key of the
bibtex that is used for modification. If you update from a previous
version, or simply don't feel like manually set the bibtex key for each
entry, you can use the functionality "Generate Missing BibTex Keys"
from the administration menu; this will generate and assign unique
bibtex keys to papers who have not set it. Papers where bibtex key is
already set will not be touched.
Importing from DBLP
Since version 0.5, thanks to Ezio Bartocci,
it is possible to import papers from
DBLP
Computer Science Bibliography
(note that this feature is still experimental).
After you inserted the author's name and surname, the DBLP site will be
queried and all the
author's found papers will be presented to the user; the system will
already check which papers are similar
to those already present in the database; if a similar
paper is found in the database that entry will not be automatically
selected for
the import (and will be highlighted in red); the other
papers will be automatically selected for import. The user will then be
able to further select
all the papers to import, and
press the import button (it is also possible to select all the
papers or all the papers of a specific year). Note that the procedure
might require some time.
Classification
of papers
You can classify a paper according several criteria, and since version
0.4 these criteria can be dynamic. Each criterion is called classification.
By
default the system already contains the classification called
Categories (also for backward compatibility). Since version 0.4 you can
add further classifications (e.g., keywords). Moreover, bibtex fields
can be associated to specific classifications. (Please refer to the
online help).
A classification can be specified as "multiple" if more than one
category belonging to such classification can be assigned to a paper
(the classification "categories" has this attribute, since it is
compatible with existing categories). Otherwise, only one category
belonging to such classification can be assigned to a paper.
For each classification, the system will generate a selection field in
the paper editing form. (Please refer to the online help).
Viewing and showing papers
The initial default page of the bibliography site will list all the
papers in the database, but it also provides a menu to view the papers,
in order to show them in a specific order, or in order to filter them.
By
default, papers will be shown by descending year (so that the most
recent papers are shown first); moreover, since version 0.6, a
modification stamp is added to each paper; this timestamp will be used
when ordering papers (i.e., papers of the same year and a more recent
timestamp will be shown first).
Since version 0.3, the main page provides also means to search papers
according to specific values for each fields of papers.
Since version 0.5, the main page also shows a link to an automatically
generated RSS feed (thanks to Ezio
Bartocci). This link is generated provided the variable $linktorss is set to "1" in the
config file.
Since version 0.6, a paper can be made private; If a paper is marked as private, then it will be visible only for logged users.
Tips:
If you want to include your own papers (i.e., only those where you're
one of the author) in your own web site (even different from that where
you installed the bibliography system) you can filter the papers by
showing only those that belong to you. Then you can
copy
the URL of your browser, that will something of the shape http://<yourbibliographysite>/index.php?groupby=0&author=21,
and use it as a link in your web site. Furthermore, if you
use
php in your web site as well, you can simply embed it in a page of your
web site, for instance with a line similar to <?php
include("http://<yourbibliographysite>/index.php?groupby=0&author=21");?>
(of course the most important part is the identifier of the author
whose papers your want to show); this works if your php system is
configured so to permit inclusion from sites different from the current
one.
Similarly, you can show papers that are obtained as the result of a
paper search (using the button in the main page, since version 0.3) by
copying the URL that appears when you performed the search (it is quite
a long url since it contains the search criteria).
Since version 0.4, you can pass
some parameters on the url, in order to customize the
formatting of the paper on the fly.
For instance, reusing the above example, if you use this url:
http://<yourbibliographysite>/index.php?groupby=0&author=21&printfilenames=0&linktodetails=0
You
also specify that only
the extensions of the files of the papers will be shown, and no link to
details of the papers will be generated.
If you use this url:
http://<yourbibliographysite>/index.php?groupby=0&author=21&paperorder=title
You
also specify that the papers will be sorted according to their title.
You can use these links in other web pages to link to a list of
pubblicactions. This is how I do to show the links to my
papers
(taken from another bibiliography web site) into my webpage: http://www.lorenzobettini.it/papers;
the research papers are taken from a phpbibliography site, the
technical papers are taken from another phpbibliography site.
You
can do the same with RSS links that are shown in the main page, e.g.,
for inserting RSS links to your papers in your home page.
Troubleshooting
Please feel free to email me for any problem and comments/suggestions.
(Find my email address at my home page http://www.lorenzobettini.it).
You can also use the sourceforge mechanisms to communicate bugs,
feature requests, patches.