/**
  * Do an update or edit of reading history information.  Current actions are:
  * deleteMarked
  * deleteAll
  * exportList
  * optOut
  *
  * @param   string  $action         The action to perform
  * @param   array   $selectedTitles The titles to do the action on if applicable
  */
 function doReadingHistoryAction($action, $selectedTitles)
 {
     global $user;
     if ($user->trackReadingHistory && $user->initialReadingHistoryLoaded || !$this->driver->hasNativeReadingHistory()) {
         if ($action == 'deleteMarked') {
             //Remove titles from database (do not remove from ILS)
             foreach ($selectedTitles as $titleId) {
                 list($source, $sourceId) = explode('_', $titleId);
                 $readingHistoryDB = new ReadingHistoryEntry();
                 $readingHistoryDB->userId = $user->id;
                 $readingHistoryDB->id = str_replace('rsh', '', $titleId);
                 if ($readingHistoryDB->find(true)) {
                     $readingHistoryDB->deleted = 1;
                     $readingHistoryDB->update();
                 }
             }
         } elseif ($action == 'deleteAll') {
             //Remove all titles from database (do not remove from ILS)
             $readingHistoryDB = new ReadingHistoryEntry();
             $readingHistoryDB->userId = $user->id;
             $readingHistoryDB->find();
             while ($readingHistoryDB->fetch()) {
                 $readingHistoryDB->deleted = 1;
                 $readingHistoryDB->update();
             }
         } elseif ($action == 'exportList') {
             //Leave this unimplemented for now.
         } elseif ($action == 'optOut') {
             $driverHasReadingHistory = $this->driver->hasNativeReadingHistory();
             //Opt out within the ILS if possible
             if ($driverHasReadingHistory) {
                 //First run delete all
                 $result = $this->driver->doReadingHistoryAction('deleteAll', $selectedTitles);
                 $result = $this->driver->doReadingHistoryAction($action, $selectedTitles);
             }
             //Delete the reading history (permanently this time sine we are opting out)
             $readingHistoryDB = new ReadingHistoryEntry();
             $readingHistoryDB->userId = $user->id;
             $readingHistoryDB->delete();
             //Opt out within Pika since the ILS does not seem to implement this functionality
             $user->trackReadingHistory = false;
             $user->update();
             $_SESSION['userinfo'] = serialize($user);
         } elseif ($action == 'optIn') {
             $driverHasReadingHistory = $this->driver->hasNativeReadingHistory();
             //Opt in within the ILS if possible
             if ($driverHasReadingHistory) {
                 $result = $this->driver->doReadingHistoryAction($action, $selectedTitles);
             }
             //Opt in within Pika since the ILS does not seem to implement this functionality
             $user->trackReadingHistory = true;
             $user->update();
             $_SESSION['userinfo'] = serialize($user);
         }
     } else {
         return $this->driver->doReadingHistoryAction($action, $selectedTitles);
     }
 }