by zinelibraryzac ()

The ability to manage the loaning of materials is very important to this project. After considering different methods to accomplish such tasks as check-out, check-in, and review of item status, we have decided to proceed by writing a custom Drupal module. This module will be released to anyone with interest when it becomes at least partly functional.
The Circulation module will define some new permissions in Drupal, indicating what level of circulation information users will be able to see based on their assigned roles. The module will also have its own settings, and will manage its own table in Drupal’s database containing circulation information. In the module’s settings, the system administrator will indicate which content type[s] correspond to bibliographic records and which content type corresponds to individual items.
The circulation table in the database will correspond to the table proposed in our original data model. It will have five fields:

  1. User ID
  2. Node (item) ID
  3. Check-out Date
  4. Due Date
  5. Check-in Date

When an item is checked out, the first four fields will be filled in
immediately. When an item is marked as returned, the check-in date will
be filled-in. If an item has no check-in date, then it will be
considered to be checked-out. The record of circulation will not be deleted when an item is returned. This will allow us to generate circulation reports by user and by item.


The module will make use of hooks
in Drupal to tap into the display of user records, bibliographic
records and item records. Put simply, when a website asks to view a
Zine record, an Item record, or a user profile, part of the Circulation
module will be called, and it will add some information to the page
being viewed. The module will also have its own page in the Drupal
system, at a URL like, which will only be available to librarians and system administrators.

1. Item Record

When an item record is viewed, the module will will search the
circulation table in the database for that item’s id. If there are
multiple instances of that item in the table, it will only look at the
most recent one.

What the Circulation module adds to the item record will depend on
the permissions of the user who is looking at the item record. If the
user has sufficient privileges (let’s call privileged users
‘librarians’), then they will see whether the item is in or out, as
well as who has borrowed the item (if it’s out).

Librarians will also be presented with either a “Check Out” button
or a “Check In” button, depending on whether the item is in or out.

If the user is a borrower (not a librarian) they will only see
whether the item is in the collection or checked-out. They will not see
which user has checked an item out.

2. Zine Record

When a zine record is viewed, a more complex task must be performed.
The module will look in the item table for all items which are copies
of this zine. Then, with the list of all copies, it will
check the status of each one in the circulation table. Finally, the
module will output a table showing all of the copies of the zine and
whether each one is checked in or out. If the user is a librarian, they
will also see which user has borrowed each checked-out item.

If a librarian wishes to check-in an item, they will be able to do so from the page for the item record as stated above.

3. User Profile

When a user’s profile is viewed, the module will perform a lookup on
the circulation table to see what items (if any) that user has out.
(The language gets a bit tricky here as we’re dealing with both the
user making the request — let’s call them the requester — and the user
whose profile is being viewed — the subject).

If the requester and the subject are one and the same, then the
module will present a list of items which they currently have checked
out. If the requester is a librarian, then the module will likewise
present a list of items which the subject has checked out. If the
requester is anyone else, they have no rights to the borrowing records
of the subject and they will not be presented with any circulation

4. /circulation Page.

This last page will be for librarians and administrators only. At
this address, the module will output a table list of all items
currently checked-out, including which user has those items, with links
to the item and the user. In addition to this circulation ’snapshot’,
there will be functions to display basic circulation statistics, such
as items issued per month and most popular items, and provide a form
for newly issuing items.