function launch() { global $interface; // Depending on context, we may get the record ID that initiated the "add // list" action in a couple of different places -- make sure we check all // necessary options before giving up! if (!isset($_GET['id']) && isset($_REQUEST['recordId'])) { $_GET['id'] = $_REQUEST['recordId']; } $interface->assign('recordId', isset($_GET['id']) ? $_GET['id'] : false); $interface->assign('source', isset($_GET['source']) ? $_GET['source'] : false); // Check if user is logged in if (!$this->user) { if (isset($_GET['lightbox'])) { $interface->assign('title', $_GET['message']); $interface->assign('message', 'You must be logged in first'); return $interface->fetch('AJAX/login.tpl'); } else { require_once ROOT_DIR . '/services/MyAccount/Login.php'; $loginAction = new MyAccount_Login(); $loginAction->launch(); } exit; } // Display Page if (isset($_GET['lightbox'])) { $interface->assign('title', translate('Create new list')); echo $interface->fetch('MyResearch/list-form.tpl'); } else { if (isset($_REQUEST['submit'])) { $result = $this->addList(); if (PEAR_Singleton::isError($result)) { $interface->assign('listError', $result->getMessage()); } else { if (!empty($_REQUEST['recordId'])) { $url = '../Record/' . urlencode($_REQUEST['recordId']) . '/Save'; } else { $url = 'Home'; } header('Location: ' . $url); die; } } $interface->setPageTitle('Create a List'); $interface->assign('subTemplate', 'list-form.tpl'); $interface->setTemplate('view-alt.tpl'); $interface->display('layout.tpl'); } }
function launch($msg = null) { global $interface; global $configArray; if (!($user = UserAccount::isLoggedIn())) { require_once ROOT_DIR . '/services/MyAccount/Login.php'; MyAccount_Login::launch(); exit; } // Save Data if (isset($_POST['submit'])) { $this->saveChanges($user); // After changes are saved, send the user back to an appropriate page; // either the list they were viewing when they started editing, or the // overall favorites list. if (isset($_REQUEST['list_id'])) { $nextAction = 'MyList/' . $_REQUEST['list_id']; } else { $nextAction = 'Home'; } header('Location: ' . $configArray['Site']['path'] . '/MyAccount/' . $nextAction); exit; } require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php'; $userList = new UserList(); $userList->id = $_REQUEST['list_id']; $userList->find(true); $interface->assign('list', $userList); require_once ROOT_DIR . '/RecordDrivers/GroupedWorkDriver.php'; $id = $_GET['id']; $groupedWorkDriver = new GroupedWorkDriver($id); if ($groupedWorkDriver->isValid) { $interface->assign('recordDriver', $groupedWorkDriver); } // Record ID $interface->assign('recordId', $id); // Retrieve saved information about record require_once ROOT_DIR . '/sys/LocalEnrichment/UserListEntry.php'; $userListEntry = new UserListEntry(); $userListEntry->groupedWorkPermanentId = $id; $userListEntry->listId = $_REQUEST['list_id']; $userListEntry->find(true); $interface->assign('listEntry', $userListEntry); $interface->assign('listFilter', $_GET['list_id']); $interface->setTemplate('editListTitle.tpl'); $interface->display('layout.tpl'); }
/** * Process parameters and display the page. * * @return void * @access public */ public function launch() { global $interface; global $configArray; if (!($user = UserAccount::isLoggedIn())) { include_once 'Login.php'; MyAccount_Login::launch(); exit; } // Fetch List object $list = UserList::staticGet($_GET['id']); // Ensure user have privs to view the list if ($list->user_id != $user->id) { PEAR_Singleton::raiseError(new PEAR_Error(translate('list_access_denied'))); } // Save Data if (isset($_POST['submit'])) { if (empty($_POST['title'])) { $interface->assign('errorMsg', 'list_edit_name_required'); } else { if ($this->_saveChanges($user, $list)) { // After changes are saved, send the user back to an appropriate page $nextAction = 'MyList/' . $list->id; header('Location: ' . $configArray['Site']['path'] . '/MyResearch/' . $nextAction); exit; } else { // List was not edited $interface->assign('errorMsg', 'edit_list_fail'); } } } // Send list to template so title/description can be displayed: $interface->assign('list', $list); $interface->setTemplate('editList.tpl'); $interface->display('layout.tpl'); }
} } // Process Authentication, must be done here so we can redirect based on user information // immediately after logging in. $interface->assign('loggedIn', $user == false ? 'false' : 'true'); if ($user) { $interface->assign('user', $user); //Create a cookie for the user's home branch so we can sort holdings even if they logout. //Cookie expires in 1 week. setcookie('home_location', $user->homeLocationId, time() + 60 * 60 * 24 * 7, '/'); } else { if (isset($_POST['username']) && isset($_POST['password']) && ($action != 'Account' && $module != 'AJAX')) { $user = UserAccount::login(); if (PEAR_Singleton::isError($user)) { require_once ROOT_DIR . '/services/MyAccount/Login.php'; $launchAction = new MyAccount_Login(); $launchAction->launch($user->getMessage()); exit; } $interface->assign('user', $user); $interface->assign('loggedIn', $user == false ? 'false' : 'true'); //Check to see if there is a followup module and if so, use that module and action for the next page load if (isset($_REQUEST['returnUrl'])) { $followupUrl = $_REQUEST['returnUrl']; header("Location: " . $followupUrl); exit; } if ($user) { if (isset($_REQUEST['followupModule']) && isset($_REQUEST['followupAction'])) { echo "Redirecting to followup location"; $followupUrl = $configArray['Site']['path'] . "/" . strip_tags($_REQUEST['followupModule']);
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'); }
function __construct() { global $interface; global $configArray; global $user; $interface->assign('page_body_style', 'sidebar_left'); if ($this->requireLogin && !UserAccount::isLoggedIn()) { require_once ROOT_DIR . '/services/MyAccount/Login.php'; $myAccountAction = new MyAccount_Login(); $myAccountAction->launch(); exit; } // Setup Search Engine Connection $class = $configArray['Index']['engine']; $this->db = new $class($configArray['Index']['url']); // Connect to Database $this->catalog = CatalogFactory::getCatalogConnectionInstance(); // Register Library Catalog Account if (isset($_POST['submit']) && !empty($_POST['submit'])) { if ($this->catalog && isset($_POST['cat_username']) && isset($_POST['cat_password'])) { $result = $this->catalog->patronLogin($_POST['cat_username'], $_POST['cat_password']); if ($result && !PEAR_Singleton::isError($result)) { $user->cat_username = $_POST['cat_username']; $user->cat_password = $_POST['cat_password']; $user->update(); UserAccount::updateSession($user); $interface->assign('user', $user); } else { $interface->assign('loginError', 'Invalid Patron Login'); } } } //Check to see if we have any acs or single use eContent in the catalog //to enable the holds and wishlist appropriately if (isset($configArray['EContent']['hasProtectedEContent'])) { $interface->assign('hasProtectedEContent', $configArray['EContent']['hasProtectedEContent']); } else { $interface->assign('hasProtectedEContent', false); } //This code is also in Search/History since that page displays in the My Account menu as well. //It is also in MyList.php and Admin.php if ($user !== false) { $interface->assign('user', $user); // Profile is already loaded by index.php. plb 4-17-2015 // (keeping in case there is a exception ) // 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); // } // // $profile = $this->catalog->getMyProfile($patron); // //global $logger; // //$logger->log("Patron profile phone number in MyResearch = " . $profile['phone'], PEAR_LOG_INFO); // if (!PEAR_Singleton::isError($profile)) { // $interface->assign('profile', $profile); // } // } // } //Figure out if we should show a link to classic opac to pay holds. $ecommerceLink = $configArray['Site']['ecommerceLink']; $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') { $interface->assign('ecommerceLink', $ecommerceLink); } else { $interface->assign('ecommerceLink', $homeLibrary->payFinesLink); } $interface->assign('payFinesLinkText', $homeLibrary->payFinesLinkText); } else { $interface->assign('showEcommerceLink', false); $interface->assign('minimumFineAmount', 0); } } }
function launch() { global $interface; global $user; // In some contexts, we want to require a login before showing search // history: if (isset($_REQUEST['require_login']) && !UserAccount::isLoggedIn()) { require_once ROOT_DIR . '/services/MyAccount/Login.php'; MyAccount_Login::launch(); exit; } $interface->setPageTitle('Search History'); // Retrieve search history $s = new SearchEntry(); $searchHistory = $s->getSearches(session_id(), is_object($user) ? $user->id : null); if (count($searchHistory) > 0) { // Build an array of history entries $links = array(); $saved = array(); // Loop through the history foreach ($searchHistory as $search) { $size = strlen($search->search_object); $minSO = unserialize($search->search_object); $searchObject = SearchObjectFactory::deminify($minSO); // Make sure all facets are active so we get appropriate // descriptions in the filter box. $searchObject->activateAllFacets(); $newItem = array('id' => $search->id, 'time' => date("g:ia, jS M y", $searchObject->getStartTime()), 'url' => $searchObject->renderSearchUrl(), 'searchId' => $searchObject->getSearchId(), 'description' => $searchObject->displayQuery(), 'filters' => $searchObject->getFilterList(), 'hits' => number_format($searchObject->getResultTotal()), 'speed' => round($searchObject->getQuerySpeed(), 2) . "s", 'size' => round($size / 1024, 3) . "kb"); // Saved searches if ($search->saved == 1) { $saved[] = $newItem; // All the others } else { // If this was a purge request we don't need this if (isset($_REQUEST['purge']) && $_REQUEST['purge'] == 'true') { $search->delete(); // We don't want to remember the last search after a purge: unset($_SESSION['lastSearchURL']); // Otherwise add to the list } else { $links[] = $newItem; } } } // One final check, after a purge make sure we still have a history if (count($links) > 0 || count($saved) > 0) { $interface->assign('links', array_reverse($links)); $interface->assign('saved', array_reverse($saved)); $interface->assign('noHistory', false); // Nothing left in history } else { $interface->assign('noHistory', true); } // No history } else { $interface->assign('noHistory', true); } //Load profile information for display in My Account menu //This code is also in MyResearch.php if ($user !== false) { global $configArray; $this->catalog = CatalogFactory::getCatalogConnectionInstance(); // 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. global $library; $homeLibrary = $library->getLibraryForLocation($user->homeLocationId); if ($homeLibrary->showEcommerceLink == 1) { $interface->assign('showEcommerceLink', true); $interface->assign('minimumFineAmount', $homeLibrary->minimumFineAmount); } else { $interface->assign('showEcommerceLink', false); $interface->assign('minimumFineAmount', 0); } } $interface->assign('sidebar', 'MyAccount/account-sidebar.tpl'); $interface->setTemplate('history.tpl'); $interface->display('layout.tpl'); }