/** * 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'); }
/** * Perform a bulk operation. * * @param array $ids IDs to process * @param int $listID Target list * limit). * * @return void */ protected function processRecords($ids, $listID) { global $user; // First copy the records if (!parent::processRecords($ids, $listID)) { return false; } // Copy successful, now delete $list = User_list::staticGet($_REQUEST['listID']); if ($user->id != $list->user_id) { $this->errorMsg = 'list_access_denied'; return false; } $list->removeResourcesById($ids); $this->infoMsg = 'records_moved'; return true; }
/** * 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'; Login::launch(); exit; } // Fetch List object $list = User_list::staticGet($_GET['id']); // Ensure user have privs to view the list if ($list->user_id != $user->id) { PEAR::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']['url'] . '/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'); }
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'); }
/** * 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'); }
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'); }
/** * Perform a bulk delete operation. * * @param array $ids IDs to delete * @param int $listID List to limit the delete operation to (false for no * limit). * * @return array Status details. * @access public */ public function deleteFavorites($ids, $listID = false) { global $configArray; global $interface; global $user; if ($listID && $listID != "") { $list = User_list::staticGet($listID); if ($user->id == $list->user_id) { $result = $list->removeResourcesById($ids); } } else { $result = $user->removeResourcesById($ids); } if ($result) { $this->infoMsg = 'fav_delete_success'; } $results = array('deleteDetails' => $this->infoMsg); return $results; }
/** * Get data and output in JSON * * @return void * @access public */ public function saveListData() { global $user; if (!($user = UserAccount::isLoggedIn())) { $this->output("", JSON::STATUS_NEED_AUTH); return; } // Fetch List object $list = User_list::staticGet($_REQUEST['listId']); // Ensure user has permissions to edit the list if ($list->user_id != $user->id) { $this->output("", JSON::STATUS_NEED_AUTH); return; } // Save data and return status to AJAX script // Title if (isset($_REQUEST['title_change'])) { if (!$list->updateListTitle($_REQUEST['title_change'])) { $error = true; } // List Description } else { if (isset($_REQUEST['description_change'])) { if (!$list->updateListDescription($_REQUEST['description_change'])) { $error = true; } // Visibility } else { if (isset($_REQUEST['publicity_change'])) { if (!$list->updateListPublicity($_REQUEST['publicity_change'])) { $error = true; } // Add list } else { if (isset($_REQUEST['list_add'])) { $value = $_REQUEST['list_add']; $list = new User_list(); $list->title = $value; $list->user_id = $user->id; if ($list->insert() && $list->find()) { $this->output("{$list->id}", JSON::STATUS_OK); return; } else { $error = true; } // Entry description } else { if (isset($_REQUEST['entry_description_change'])) { $resource = new Resource(); unset($resource->source); $resource->record_id = $_REQUEST['recordId']; $resource->find(true); // Save resource if (!$user->addResource($resource, $list, '', $_REQUEST['entry_description_change'])) { $error = true; } } } } } } if ($error) { $this->output("An error has occurred", JSON::STATUS_ERROR); } else { $this->output("", JSON::STATUS_OK); } }
/** * Perform a bulk operation. * * @param array $ids IDs to process * @param int $listID Target list * limit). * * @return boolean Success */ protected function processRecords($ids, $listID) { global $user; if (empty($ids)) { $this->errorMsg = 'bulk_noitems_advice'; return false; } if (!$user) { $this->errorMsg = 'You must be logged in first'; return false; } $list = User_list::staticGet($listID); if ($user->id != $list->user_id) { $this->errorMsg = 'list_access_denied'; return false; } $resources = $user->getResources(); foreach ($resources as $resource) { if (in_array($resource->record_id, $ids)) { $notes = ''; $userResource = new User_resource(); $userResource->user_id = $user->id; $userResource->list_id = $_REQUEST['listID']; $userResource->resource_id = $resource->id; if ($userResource->find(true)) { $notes = $userResource->notes; } $tags = array(); foreach ($user->getTags($resource->record_id) as $tag) { $tags[] = $tag->tag; } $user->addResource($resource, $list, $tags, $notes); } } $this->infoMsg = 'records_copied'; return true; }