/** * Get Holding * * This is responsible for retrieving the holding information of a certain * record. * * @param OverDriveRecordDriver $overDriveRecordDriver The record id to retrieve the holdings for * @return mixed An associative array with the following keys: * availability (boolean), status, location, * reserve, callnumber, duedate, number, * holding summary, holding notes * If an error occurs, return a PEAR_Error * @access public */ public function getHoldings($overDriveRecordDriver) { global $user; global $configArray; /** @var OverDriveAPIProductFormats[] $items */ $items = $overDriveRecordDriver->getItems(); //Add links as needed $availability = $overDriveRecordDriver->getAvailability(); $addCheckoutLink = false; $addPlaceHoldLink = false; foreach ($availability as $availableFrom) { if ($availableFrom->copiesAvailable > 0) { $addCheckoutLink = true; } else { $addPlaceHoldLink = true; } } foreach ($items as $key => $item) { $item->links = array(); if ($addCheckoutLink) { if ($configArray['OverDrive']['interfaceVersion'] == 1) { $checkoutLink = "return VuFind.OverDrive.checkoutOverDriveItem('{$overDriveRecordDriver->getUniqueID()}', '{$item->numericId}');"; } else { $checkoutLink = "return VuFind.OverDrive.checkoutOverDriveItemOneClick('{$overDriveRecordDriver->getUniqueID()}', '{$item->numericId}');"; } $item->links[] = array('onclick' => $checkoutLink, 'text' => 'Check Out', 'overDriveId' => $overDriveRecordDriver->getUniqueID(), 'formatId' => $item->numericId, 'action' => 'CheckOut'); } else { if ($addPlaceHoldLink) { $item->links[] = array('onclick' => "return VuFind.OverDrive.placeOverDriveHold('{$overDriveRecordDriver->getUniqueID()}', '{$item->numericId}');", 'text' => 'Place Hold', 'overDriveId' => $overDriveRecordDriver->getUniqueID(), 'formatId' => $item->numericId, 'action' => 'Hold'); } } $items[$key] = $item; } return $items; }