Пример #1
0
 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');
     }
 }
Пример #2
0
 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');
 }
Пример #3
0
 /**
  * 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');
 }
Пример #4
0
    }
}
// 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']);
Пример #5
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');
 }
Пример #6
0
 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);
         }
     }
 }
Пример #7
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');
 }