public function getMyHolds($user)
 {
     $holds = array();
     $holds['holds'] = array();
     $holds['holds']['available'] = array();
     $holds['holds']['unavailable'] = array();
     $availableHolds = new EContentHold();
     $availableHolds->userId = $user->id;
     $availableHolds->status = 'available';
     $availableHolds->find();
     while ($availableHolds->fetch()) {
         require_once ROOT_DIR . '/RecordDrivers/RestrictedEContentDriver.php';
         $recordDriver = new RestrictedEContentDriver($availableHolds->recordId);
         if ($recordDriver->isValid()) {
             $expirationDate = $availableHolds->dateUpdated + 5 * 24 * 60 * 60;
             $holds['holds']['available'][] = array('id' => $availableHolds->recordId, 'recordId' => $recordDriver->getUniqueID(), 'source' => $recordDriver->getSources(), 'title' => $recordDriver->getTitle(), 'author' => $recordDriver->getPrimaryAuthor(), 'available' => true, 'create' => $availableHolds->datePlaced, 'expire' => $expirationDate, 'status' => $availableHolds->status, 'links' => $this->getOnHoldEContentLinks($availableHolds), 'recordUrl' => $recordDriver->getLinkUrl(), 'bookcoverUrl' => $recordDriver->getBookcoverUrl('medium'), 'holdSource' => 'eContent');
         }
     }
     $unavailableHolds = new EContentHold();
     $unavailableHolds->userId = $user->id;
     $unavailableHolds->whereAdd("(status = 'active' or status = 'suspended')");
     $unavailableHolds->find();
     while ($unavailableHolds->fetch()) {
         require_once ROOT_DIR . '/RecordDrivers/RestrictedEContentDriver.php';
         $recordDriver = new RestrictedEContentDriver($unavailableHolds->recordId);
         if ($recordDriver->isValid()) {
             $holds['holds']['unavailable'][] = array('id' => $unavailableHolds->recordId, 'recordId' => $recordDriver->getUniqueID(), 'source' => $recordDriver->getSources(), 'title' => $recordDriver->getTitle(), 'author' => $recordDriver->getPrimaryAuthor(), 'available' => true, 'createTime' => $unavailableHolds->datePlaced, 'status' => $unavailableHolds->status, 'position' => $this->_getHoldPosition($unavailableHolds), 'links' => $this->getOnHoldEContentLinks($unavailableHolds), 'frozen' => $unavailableHolds->status == 'suspended', 'reactivateDate' => $unavailableHolds->reactivateDate, 'recordUrl' => $recordDriver->getLinkUrl(), 'bookcoverUrl' => $recordDriver->getBookcoverUrl('medium'), 'holdSource' => 'eContent', 'format' => $recordDriver->getFormats());
         }
     }
     return $holds;
 }
 /**
  * @param ReadingHistoryEntry $readingHistoryDB
  * @return mixed
  */
 public function getHistoryEntryForDatabaseEntry($readingHistoryDB)
 {
     $historyEntry = array();
     $historyEntry['itemindex'] = $readingHistoryDB->id;
     $historyEntry['deletable'] = true;
     $historyEntry['source'] = $readingHistoryDB->source;
     $historyEntry['id'] = $readingHistoryDB->sourceId;
     $historyEntry['recordId'] = $readingHistoryDB->sourceId;
     $historyEntry['shortId'] = $readingHistoryDB->sourceId;
     $historyEntry['title'] = $readingHistoryDB->title;
     $historyEntry['author'] = $readingHistoryDB->author;
     $historyEntry['format'] = array($readingHistoryDB->format);
     $historyEntry['checkout'] = $readingHistoryDB->checkOutDate;
     $historyEntry['checkin'] = $readingHistoryDB->checkInDate;
     $historyEntry['ratingData'] = null;
     $historyEntry['permanentId'] = null;
     $historyEntry['linkUrl'] = null;
     $historyEntry['coverUrl'] = null;
     $recordDriver = null;
     if ($readingHistoryDB->source == 'ILS') {
         require_once ROOT_DIR . '/RecordDrivers/MarcRecord.php';
         $recordDriver = new MarcRecord($historyEntry['id']);
     } elseif ($readingHistoryDB->source == 'OverDrive') {
         require_once ROOT_DIR . '/RecordDrivers/OverDriveRecordDriver.php';
         $recordDriver = new OverDriveRecordDriver($historyEntry['id']);
     } elseif ($readingHistoryDB->source == 'PublicEContent') {
         require_once ROOT_DIR . '/RecordDrivers/PublicEContentDriver.php';
         $recordDriver = new PublicEContentDriver($historyEntry['id']);
     } elseif ($readingHistoryDB->source == 'RestrictedEContent') {
         require_once ROOT_DIR . '/RecordDrivers/RestrictedEContentDriver.php';
         $recordDriver = new RestrictedEContentDriver($historyEntry['id']);
     }
     if ($recordDriver != null && $recordDriver->isValid()) {
         $historyEntry['ratingData'] = $recordDriver->getRatingData();
         $historyEntry['permanentId'] = $recordDriver->getPermanentId();
         $historyEntry['linkUrl'] = $recordDriver->getLinkUrl();
         $historyEntry['coverUrl'] = $recordDriver->getBookcoverUrl('medium');
         $historyEntry['format'] = $recordDriver->getFormats();
     }
     $recordDriver = null;
     return $historyEntry;
 }