/**
  * Get Holding
  *
  * This is responsible for retrieving the holding information of a certain
  * record.
  *
  * @param string $recordId The record id to retrieve the holdings for
  * @param array  $patron   Optional Patron details to determine if a user can
  * place a hold or recall on an item
  *
  * @return mixed     On success, an associative array with the following keys:
  * id, availability (boolean), status, location, reserve, callnumber, duedate,
  * number, barcode; on failure, a PEAR_Error.
  * @access public
  */
 public function getHolding($recordId, $patron = false)
 {
     $holding = $this->driver->getHolding($recordId, $patron);
     // Validate return from driver's getHolding method -- should be an array or
     // an error.  Anything else is unexpected and should become an error.
     if (!is_array($holding) && !PEAR_Singleton::isError($holding)) {
         return new PEAR_Error('Unexpected return from getHolding: ' . $holding);
     }
     return $holding;
 }