Exemple #1
0
 function launch()
 {
     global $interface;
     //Get all lists for the user
     // Fetch List object
     if (isset($_REQUEST['id'])) {
         /** @var UserList $list */
         $list = UserList::staticGet($_GET['listId']);
     }
     $interface->assign('favList', $list);
     // Get all titles on the list
     //		$favorites = $list->getListEntries();
     //		$favList = new FavoriteHandler($favorites, null, $list->id, false);
     //TODO: test this
     $favList = new FavoriteHandler($list, null, false);
     $citationFormat = $_REQUEST['citationFormat'];
     $citationFormats = CitationBuilder::getCitationFormats();
     $interface->assign('citationFormat', $citationFormats[$citationFormat]);
     $citations = $favList->getCitations($citationFormat);
     $interface->assign('citations', $citations);
     // Display Page
     $interface->assign('listId', strip_tags($_REQUEST['id']));
     $interface->setTemplate('listCitations.tpl');
     $interface->display('layout.tpl');
 }
Exemple #2
0
 function sendEmail($to, $from, $message)
 {
     global $interface;
     global $user;
     //Load the list
     $list = new User_list();
     $list->id = $_REQUEST['listId'];
     if ($list->find(true)) {
         // Build Favorites List
         $titles = $list->getResources(null);
         // Load the User object for the owner of the list (if necessary):
         if ($user && $user->id == $list->user_id || $list->public == 1) {
             //The user can access the list
             $favoriteHandler = new FavoriteHandler($titles, $user);
             $titleDetails = $favoriteHandler->getTitles();
             $interface->assign('titles', $titleDetails);
             $interface->assign('list', $list);
         } else {
             $interface->assign('error', 'You do not have access to this list.');
         }
     } else {
         $interface->assign('error', 'Unable to read list');
     }
     $interface->assign('from', $from);
     $interface->assign('message', $message);
     $body = $interface->fetch('Emails/my-list.tpl');
     $mail = new VuFindMailer();
     $subject = $list->title;
     return $mail->send($to, $from, $subject, $body);
 }
Exemple #3
0
 function launch()
 {
     global $interface;
     global $configArray;
     global $user;
     //Get all lists for the user
     // Fetch List object
     if (isset($_REQUEST['id'])) {
         $list = User_list::staticGet($_GET['listId']);
     }
     $interface->assign('favList', $list);
     // Get all titles on the list
     $favorites = $list->getResources(null);
     $favList = new FavoriteHandler($favorites, null, $list->id, false);
     $citationFormat = $_REQUEST['citationFormat'];
     $citationFormats = CitationBuilder::getCitationFormats();
     $interface->assign('citationFormat', $citationFormats[$citationFormat]);
     $citations = $favList->getCitations($citationFormat);
     $interface->assign('citations', $citations);
     // Display Page
     $interface->assign('listId', strip_tags($_REQUEST['id']));
     $interface->setTemplate('listCitations.tpl');
     $interface->display('layout.tpl');
 }
Exemple #4
0
 /**
  * Process parameters and display the page.
  *
  * @return void
  * @access public
  */
 public function launch()
 {
     global $configArray;
     global $interface;
     global $user;
     // Delete List and All Resources (but only if list owner is logged in!)
     if (isset($_POST['deleteList'])) {
         $listID = $_POST['listID'];
         $list = User_list::staticGet($listID);
         if ($user->id == $list->user_id) {
             // Remove the List
             $result = $list->emptyList();
             if ($result) {
                 $followupUrl = $configArray['Site']['url'] . "/MyResearch/Favorites";
                 header("Location: " . $followupUrl . "?infoMsg=fav_list_delete");
                 exit;
             }
         }
         // If we get this far, there's an error
         $this->errorMsg = "fav_list_delete_fail";
     }
     // Fetch List object
     $list = User_list::staticGet($_GET['id']);
     // Ensure user have privs to view the list
     if (!$list->public && !UserAccount::isLoggedIn()) {
         include_once 'Login.php';
         Login::launch();
         exit;
     }
     if (!$list->public && $list->user_id != $user->id) {
         PEAR::raiseError(new PEAR_Error(translate('list_access_denied')));
     }
     // Redirect anonymous users to public list URL
     if ($list->public && (!UserAccount::isLoggedIn() || $list->user_id != $user->id)) {
         header("Location: " . $configArray['Site']['url'] . "/List/" . $list->id);
     }
     $this->infoMsg = isset($_GET['infoMsg']) ? $_GET['infoMsg'] : false;
     $this->errorMsg = isset($_GET['errorMsg']) ? $_GET['errorMsg'] : false;
     $this->showExport = isset($_GET['showExport']) ? $_GET['showExport'] : false;
     // Delete Resource (but only if list owner is logged in!)
     if (isset($_GET['delete']) && $user->id == $list->user_id) {
         $resource = new Resource();
         $resource->record_id = $_GET['delete'];
         unset($resource->source);
         if ($resource->find(true)) {
             $list->removeResource($resource);
         }
     }
     // Send list to template so title/description can be displayed:
     $interface->assign('list', $list);
     // Build Favorites List
     $favorites = $list->getResources(isset($_GET['tag']) ? $_GET['tag'] : null);
     // Load the User object for the owner of the list (if necessary):
     if ($user && $user->id == $list->user_id) {
         $listUser = $user;
     } else {
         $listUser = User::staticGet($list->user_id);
     }
     // Create a handler for displaying favorites and use it to assign
     // appropriate template variables:
     $allowEdit = $user && $user->id == $list->user_id;
     $favList = new FavoriteHandler($favorites, $listUser, $list->id, $allowEdit);
     $favList->assign();
     if (!$this->infoMsg) {
         $this->infoMsg = $favList->getInfoMsg();
     }
     // Narrow by Tag
     if (isset($_GET['tag'])) {
         $interface->assign('tags', $_GET['tag']);
     }
     // Get My Lists
     $listList = $user ? $user->getLists() : array();
     $interface->assign('listList', $listList);
     // Get My Tags
     $tagList = $list->getTags();
     $interface->assign('tagList', $tagList);
     // Assign Error & Info Messages
     $interface->assign('infoMsg', $this->infoMsg);
     $interface->assign('errorMsg', $this->errorMsg);
     $interface->assign('showExport', $this->showExport);
     // Assign Exporter Options
     $exportOptions = array();
     if ($configArray['BulkExport']['enabled']) {
         $options = explode(':', $configArray['BulkExport']['options']);
         foreach ($options as $option) {
             if ($configArray['Export'][$option] == true) {
                 $exportOptions[] = $option;
             }
         }
         $interface->assign('exportOptions', $exportOptions);
     }
     $interface->setTemplate('list.tpl');
     $interface->setPageTitle($list->title);
     $interface->display('layout.tpl');
 }
Exemple #5
0
 function launch()
 {
     global $configArray;
     global $interface;
     global $user;
     //Get all lists for the user
     if ($user) {
         $tmpList = new User_list();
         $tmpList->user_id = $user->id;
         $tmpList->orderBy("title ASC");
         $tmpList->find();
         $allLists = array();
         if ($tmpList->N > 0) {
             while ($tmpList->fetch()) {
                 $allLists[$tmpList->id] = $tmpList->title;
             }
         } else {
             $allList["-1"] = "My Favorites";
         }
         $interface->assign('allLists', $allLists);
     }
     //Figure out if we should show a link to classic opac to pay holds.
     $ecommerceLink = $configArray['Site']['ecommerceLink'];
     if ($user) {
         $homeLibrary = Library::getLibraryForLocation($user->homeLocationId);
     }
     if (strlen($ecommerceLink) > 0 && isset($homeLibrary) && $homeLibrary->showEcommerceLink == 1) {
         $interface->assign('showEcommerceLink', true);
         $interface->assign('minimumFineAmount', $homeLibrary->minimumFineAmount);
         if ($homeLibrary->payFinesLink == 'default' || strlen($homeLibrary->payFinesLink) == 0) {
             $interface->assign('ecommerceLink', $ecommerceLink);
         } else {
             $interface->assign('ecommerceLink', $homeLibrary->payFinesLink);
         }
         $interface->assign('payFinesLinkText', $homeLibrary->payFinesLinkText);
     } else {
         $interface->assign('showEcommerceLink', false);
         $interface->assign('minimumFineAmount', 0);
     }
     // Fetch List object
     if (isset($_GET['id'])) {
         $list = User_list::staticGet($_GET['id']);
     } else {
         //Use the first list.
         if (isset($allLists)) {
             $firstListId = reset(array_keys($allLists));
             if ($firstListId == false || $firstListId == -1) {
                 $list = new User_list();
                 $list->user_id = $user->id;
                 $list->public = false;
                 $list->title = "My Favorites";
             } else {
                 $list = User_list::staticGet($firstListId);
             }
         }
     }
     // Ensure user have privs to view the list
     if (!isset($list) || !$list->public && !UserAccount::isLoggedIn()) {
         require_once 'Login.php';
         Login::launch();
         exit;
     }
     if (!$list->public && $list->user_id != $user->id) {
         PEAR_Singleton::raiseError(new PEAR_Error(translate('list_access_denied')));
     }
     //Reindex can happen by anyone since it needs to be called by cron
     if (isset($_REQUEST['myListActionHead']) && strlen($_REQUEST['myListActionHead']) > 0) {
         $actionToPerform = $_REQUEST['myListActionHead'];
         if ($actionToPerform == 'reindex') {
             $list->updateDetailed(true);
         }
     }
     if (isset($_SESSION['listNotes'])) {
         $interface->assign('notes', $_SESSION['listNotes']);
         unset($_SESSION['listNotes']);
     }
     //Perform an action on the list, but verify that the user has permission to do so.
     $userCanEdit = false;
     if ($user != false) {
         if ($user->id == $list->user_id) {
             $userCanEdit = true;
         } elseif ($user->hasRole('opacAdmin')) {
             $userCanEdit = true;
         } elseif ($user->hasRole('libraryAdmin') || $user->hasRole('contentEditor')) {
             $listUser = new User();
             $listUser->id = $list->user_id;
             $listUser->find(true);
             $listLibrary = Library::getLibraryForLocation($listUser->homeLocationId);
             $userLibrary = Library::getLibraryForLocation($user->homeLocationId);
             if ($userLibrary->libraryId == $listLibrary->libraryId) {
                 $userCanEdit = true;
             }
         }
     }
     if ($userCanEdit && (isset($_REQUEST['myListActionHead']) || isset($_REQUEST['myListActionItem']) || isset($_GET['delete']))) {
         if (isset($_REQUEST['myListActionHead']) && strlen($_REQUEST['myListActionHead']) > 0) {
             $actionToPerform = $_REQUEST['myListActionHead'];
             if ($actionToPerform == 'makePublic') {
                 $list->public = 1;
                 $list->update();
             } elseif ($actionToPerform == 'makePrivate') {
                 $list->public = 0;
                 $list->updateDetailed(false);
                 $list->removeFromSolr();
             } elseif ($actionToPerform == 'saveList') {
                 $list->title = $_REQUEST['newTitle'];
                 $list->description = $_REQUEST['newDescription'];
                 $list->update();
             } elseif ($actionToPerform == 'deleteList') {
                 $list->delete();
                 header("Location: {$configArray['Site']['path']}/MyResearch/Home");
                 die;
             } elseif ($actionToPerform == 'bulkAddTitles') {
                 $notes = $this->bulkAddTitles($list);
                 $_SESSION['listNotes'] = $notes;
             }
         } elseif (isset($_REQUEST['myListActionItem']) && strlen($_REQUEST['myListActionItem']) > 0) {
             $actionToPerform = $_REQUEST['myListActionItem'];
             if ($actionToPerform == 'deleteMarked') {
                 //get a list of all titles that were selected
                 $itemsToRemove = $_REQUEST['selected'];
                 foreach ($itemsToRemove as $id => $selected) {
                     //add back the leading . to get the full bib record
                     $resource = Resource::staticGet('record_id', "{$id}");
                     $list->removeResource($resource);
                 }
             } elseif ($actionToPerform == 'deleteAll') {
                 $list->removeAllResources(isset($_GET['tag']) ? $_GET['tag'] : null);
             }
             $list->update();
         } elseif (isset($_GET['delete'])) {
             $resource = Resource::staticGet('record_id', $_GET['delete']);
             $list->removeResource($resource);
             $list->update();
         }
         //Redirect back to avoid having the parameters stay in the URL.
         header("Location: {$configArray['Site']['path']}/MyResearch/MyList/{$list->id}");
         die;
     }
     // Send list to template so title/description can be displayed:
     $interface->assign('favList', $list);
     $interface->assign('listSelected', $list->id);
     // Build Favorites List
     $favorites = $list->getResources(isset($_GET['tag']) ? $_GET['tag'] : null);
     // Load the User object for the owner of the list (if necessary):
     if ($user && $user->id == $list->user_id) {
         $listUser = $user;
     } else {
         if ($list->user_id != 0) {
             $listUser = new User();
             $listUser->id = $list->user_id;
             if (!$listUser->fetch(true)) {
                 $listUser = false;
             }
         } else {
             $listUser = false;
         }
     }
     // Create a handler for displaying favorites and use it to assign
     // appropriate template variables:
     $interface->assign('allowEdit', $userCanEdit);
     $favList = new FavoriteHandler($favorites, $listUser, $list->id, $userCanEdit);
     $favList->assign();
     //Need to add profile information from MyResearch to show profile data.
     if ($user !== false) {
         global $configArray;
         $this->catalog = new CatalogConnection($configArray['Catalog']['driver']);
         // Get My Profile
         if ($this->catalog->status) {
             if ($user->cat_username) {
                 $patron = $this->catalog->patronLogin($user->cat_username, $user->cat_password);
                 if (PEAR_Singleton::isError($patron)) {
                     PEAR_Singleton::raiseError($patron);
                 }
                 $result = $this->catalog->getMyProfile($patron);
                 if (!PEAR_Singleton::isError($result)) {
                     $interface->assign('profile', $result);
                 }
             }
         }
         //Figure out if we should show a link to classic opac to pay holds.
         $homeLibrary = Library::getLibraryForLocation($user->homeLocationId);
         if (isset($homeLibrary) && $homeLibrary->showEcommerceLink == 1) {
             $interface->assign('showEcommerceLink', true);
             $interface->assign('minimumFineAmount', $homeLibrary->minimumFineAmount);
         } else {
             $interface->assign('showEcommerceLink', false);
             $interface->assign('minimumFineAmount', 0);
         }
     }
     $interface->setTemplate('list.tpl');
     $interface->display('layout.tpl');
 }
Exemple #6
0
 function launch()
 {
     global $configArray;
     global $interface;
     global $user;
     // Fetch List object
     $listId = $_REQUEST['id'];
     require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
     $list = new UserList();
     $list->id = $listId;
     if (!$list->find(true)) {
         //TODO: Use the first list?
         $list = new UserList();
         $list->user_id = $user->id;
         $list->public = false;
         $list->title = "My Favorites";
     }
     // Ensure user has privileges to view the list
     if (!isset($list) || !$list->public && !UserAccount::isLoggedIn()) {
         require_once ROOT_DIR . '/services/MyAccount/Login.php';
         MyAccount_Login::launch();
         exit;
     }
     if (!$list->public && $list->user_id != $user->id) {
         //Allow the user to view if they are admin
         if ($user && $user->hasRole('opacAdmin')) {
             //Allow the user to view
         } else {
             $interface->assign('sidebar', 'MyAccount/account-sidebar.tpl');
             $interface->setTemplate('invalidList.tpl');
             $interface->display('layout.tpl');
             return;
         }
     }
     if (isset($_SESSION['listNotes'])) {
         $interface->assign('notes', $_SESSION['listNotes']);
         unset($_SESSION['listNotes']);
     }
     //Perform an action on the list, but verify that the user has permission to do so.
     $userCanEdit = false;
     if ($user != false) {
         $userCanEdit = $user->canEditList($list);
         //			if ($user->id == $list->user_id){
         //				$userCanEdit = true;
         //			}elseif ($user->hasRole('opacAdmin')){
         //				$userCanEdit = true;
         //			}elseif ($user->hasRole('libraryAdmin') || $user->hasRole('contentEditor')){
         //				$listUser = new User();
         //				$listUser->id = $list->user_id;
         //				$listUser->find(true);
         //				$listLibrary = Library::getLibraryForLocation($listUser->homeLocationId);
         //				$userLibrary = Library::getLibraryForLocation($user->homeLocationId);
         //				if ($userLibrary->libraryId == $listLibrary->libraryId){
         //					$userCanEdit = true;
         //				}
         //			}
     }
     if ($userCanEdit && (isset($_REQUEST['myListActionHead']) || isset($_REQUEST['myListActionItem']) || isset($_GET['delete']))) {
         if (isset($_REQUEST['myListActionHead']) && strlen($_REQUEST['myListActionHead']) > 0) {
             $actionToPerform = $_REQUEST['myListActionHead'];
             if ($actionToPerform == 'makePublic') {
                 $list->public = 1;
                 $list->update();
             } elseif ($actionToPerform == 'makePrivate') {
                 $list->public = 0;
                 $list->update();
             } elseif ($actionToPerform == 'saveList') {
                 $list->title = $_REQUEST['newTitle'];
                 $list->description = $_REQUEST['newDescription'];
                 $list->defaultSort = $_REQUEST['defaultSort'];
                 $list->update();
             } elseif ($actionToPerform == 'deleteList') {
                 $list->delete();
                 header("Location: {$configArray['Site']['path']}/MyAccount/Home");
                 die;
             } elseif ($actionToPerform == 'bulkAddTitles') {
                 $notes = $this->bulkAddTitles($list);
                 $_SESSION['listNotes'] = $notes;
             }
         } elseif (isset($_REQUEST['myListActionItem']) && strlen($_REQUEST['myListActionItem']) > 0) {
             $actionToPerform = $_REQUEST['myListActionItem'];
             if ($actionToPerform == 'deleteMarked') {
                 //get a list of all titles that were selected
                 $itemsToRemove = $_REQUEST['selected'];
                 foreach ($itemsToRemove as $id => $selected) {
                     //add back the leading . to get the full bib record
                     $list->removeListEntry($id);
                 }
             } elseif ($actionToPerform == 'deleteAll') {
                 $list->removeAllListEntries(isset($_GET['tag']) ? $_GET['tag'] : null);
             }
             $list->update();
         } elseif (isset($_REQUEST['delete'])) {
             $recordToDelete = $_REQUEST['delete'];
             $list->removeListEntry($recordToDelete);
             $list->update();
         }
         //Redirect back to avoid having the parameters stay in the URL.
         header("Location: {$configArray['Site']['path']}/MyAccount/MyList/{$list->id}");
         die;
     }
     // Send list to template so title/description can be displayed:
     $interface->assign('favList', $list);
     $interface->assign('listSelected', $list->id);
     // Load the User object for the owner of the list (if necessary):
     if ($user && $user->id == $list->user_id) {
         $listUser = $user;
     } elseif ($list->user_id != 0) {
         $listUser = new User();
         $listUser->id = $list->user_id;
         if (!$listUser->fetch(true)) {
             $listUser = false;
         }
     } else {
         $listUser = false;
     }
     // Create a handler for displaying favorites and use it to assign
     // appropriate template variables:
     $interface->assign('allowEdit', $userCanEdit);
     //		$favList = new FavoriteHandler($list->getListEntries($sort), $listUser, $list->id, $userCanEdit, $list->defaultSort);
     // signature change to below
     $favList = new FavoriteHandler($list, $listUser, $userCanEdit);
     $favList->assign();
     $interface->assign('sidebar', 'MyAccount/account-sidebar.tpl');
     $interface->setTemplate('list.tpl');
     $interface->display('layout.tpl');
 }
Exemple #7
0
 /**
  * Process incoming parameters and display the page.
  *
  * @return void
  * @access public
  */
 public function launch()
 {
     global $configArray;
     global $interface;
     global $user;
     // Fetch List object
     $list = User_list::staticGet($_GET['id']);
     if (!$list->public && $list->user_id != $user->id) {
         PEAR::raiseError(new PEAR_Error(translate('list_access_denied')));
     }
     $interface->assign('list', $list);
     $interface->assign('publicList', true);
     $interface->assign('ownList', $list->user_id == $user->id);
     $date = new VuFindDate();
     if (strtotime($list->modified) !== false && strtotime($list->modified) > 0) {
         $interface->assign('listModified', $date->convertToDisplayDate('Y-m-d H:i:s', $list->modified));
     }
     // Load the User object for the owner of the list (if necessary):
     if ($user && $user->id == $list->user_id) {
         $listUser = $user;
     } else {
         $listUser = User::staticGet($list->user_id);
     }
     $listOwner = null;
     if ($listUser->email && ($pos = strpos($listUser->email, '@')) !== false) {
         $listOwner = substr($listUser->email, 0, $pos);
     } else {
         if ($listUser->firstname && $listUser->lastname) {
             $listOwner = "{$listUser->firstname} {$listUser->lastname}";
         }
     }
     if ($listOwner) {
         $interface->assign('listUsername', $listOwner);
     }
     $searchObject = SearchObjectFactory::initSearchObject();
     $searchObject->init();
     $interface->assign('viewList', $searchObject->getViewList());
     // Build Favorites List
     $favorites = $list->getResources(isset($_GET['tag']) ? $_GET['tag'] : null);
     // Create a handler for displaying favorites and use it to assign
     // appropriate template variables:
     $favList = new FavoriteHandler($favorites, $listUser, $list->id, false);
     $favList->initPublicListView($searchObject->getView(), $listOwner);
     $favList->assign();
     $interface->assign('recordSet', $interface->get_template_vars('resourceList'));
     $interface->assign('openUrlAutoCheck', true);
     $currentView = $searchObject->getView();
     $interface->assign('subpage', 'Search/list-' . $currentView . '.tpl');
     $interface->setTemplate('home.tpl');
     $interface->setPageTitle($list->title);
     $interface->display('layout.tpl');
 }
Exemple #8
0
 function sendMyListEmail()
 {
     // TODO: Implements sending emails of list
     global $interface, $user;
     // Get data from AJAX request
     if (isset($_REQUEST['listId']) && ctype_digit($_REQUEST['listId'])) {
         $listId = $_REQUEST['listId'];
     } else {
         // Invalid listId
         // TODO
     }
     $to = $_REQUEST['to'];
     $from = $_REQUEST['from'];
     $message = $_REQUEST['message'];
     //Load the list
     require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
     $list = new UserList();
     $list->id = $listId;
     if ($list->find(true)) {
         // Build Favorites List
         $titles = $list->getListTitles();
         $interface->assign('listEntries', $titles);
         // TODO: if not used, i would like to remove
         // Load the User object for the owner of the list (if necessary):
         if ($list->public == true || $user && $user->id == $list->user_id) {
             //The user can access the list
             require_once ROOT_DIR . '/services/MyResearch/lib/FavoriteHandler.php';
             //				$favoriteHandler = new FavoriteHandler($titles, $user, $list->id, false);
             $favoriteHandler = new FavoriteHandler($list, $user, false);
             $titleDetails = $favoriteHandler->getTitles(count($titles));
             // get all titles for email list, not just a page's worth
             $interface->assign('titles', $titleDetails);
             $interface->assign('list', $list);
             if (strpos($message, 'http') === false && strpos($message, 'mailto') === false && $message == strip_tags($message)) {
                 $interface->assign('message', $message);
                 $body = $interface->fetch('Emails/my-list.tpl');
                 require_once ROOT_DIR . '/sys/Mailer.php';
                 $mail = new VuFindMailer();
                 $subject = $list->title;
                 $emailResult = $mail->send($to, $from, $subject, $body);
                 if ($emailResult === true) {
                     $result = array('result' => true, 'message' => 'Your e-mail was sent successfully.');
                 } elseif (PEAR_Singleton::isError($emailResult)) {
                     $result = array('result' => false, 'message' => "Your e-mail message could not be sent: {$emailResult->message}.");
                 } else {
                     $result = array('result' => false, 'message' => 'Your e-mail message could not be sent due to an unknown error.');
                 }
             } else {
                 $result = array('result' => false, 'message' => 'Sorry, we can't send e-mails with html or other data in it.');
             }
         } else {
             $result = array('result' => false, 'message' => 'You do not have access to this list.');
         }
     } else {
         $result = array('result' => false, 'message' => 'Unable to read list.');
     }
     return $result;
 }
Exemple #9
0
 function launch()
 {
     global $configArray;
     global $interface;
     global $user;
     if (isset($_REQUEST['returnUrl'])) {
         $followupUrl = $_REQUEST['returnUrl'];
         header("Location: " . $followupUrl);
         exit;
     }
     // Delete Resource
     if (isset($_GET['delete'])) {
         $resource = Resource::staticGet('record_id', strip_tags($_GET['delete']));
         $user->removeResource($resource);
     }
     // Narrow by Tag
     if (isset($_GET['tag'])) {
         $interface->assign('tags', strip_tags($_GET['tag']));
     }
     //We are going to the "main page of My Research"
     //Be smart about this depending on the user's information.
     $hasHomeTemplate = $interface->template_exists('MyResearch/home.tpl');
     if (!$user) {
         $action = 'Home';
     } elseif ($hasHomeTemplate) {
         //Var for the IDCLREADER TEMPLATE
         $interface->assign('ButtonBack', false);
         $interface->assign('ButtonHome', true);
         $interface->assign('MobileTitle', ' ');
         $interface->setTemplate('home.tpl');
     } else {
         if ($user && !$interface->isMobile()) {
             // Connect to Database
             $catalog = new CatalogConnection($configArray['Catalog']['driver']);
             $patron = $catalog->patronLogin($user->cat_username, $user->cat_password);
             $profile = $catalog->getMyProfile($patron);
             if ($profile['numCheckedOut'] > 0) {
                 $action = 'CheckedOut';
             } elseif ($profile['numHolds'] > 0) {
                 $action = 'Holds';
             } else {
                 $action = 'Favorites';
             }
             header("Location: /MyResearch/{$action}");
         } else {
             //Go to the login page which is the home page
             $action = 'Home';
         }
         // Build Favorites List
         $favorites = $user->getResources(isset($_GET['tag']) ? strip_tags($_GET['tag']) : null);
         $favList = new FavoriteHandler($favorites, $user);
         $favList->assign();
         // Get My Lists
         $listList = $user->getLists();
         $interface->assign('listList', $listList);
         // Get My Tags
         $tagList = $user->getTags();
         $interface->assign('tagList', $tagList);
         $interface->setPageTitle('Favorites');
         $interface->setTemplate('favorites.tpl');
     }
     $interface->display('layout.tpl');
 }