public function getList($id)
 {
     if (is_numeric($id)) {
         $list = UserList::find($id);
         if (!empty($list)) {
             return View::make('user_lists.list', array('list' => $list));
         }
     }
     return App::abort(404);
 }
Example #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');
 }
Example #3
0
 /**
  * Add titles to a user list.
  *
  * Parameters:
  * <ul>
  * <li>username - The barcode of the user.  Can be truncated to the last 7 or 9 digits.</li>
  * <li>password - The pin number for the user. </li>
  * <li>listId   - The id of the list to add items to.</li>
  * <li>recordIds - The id of the record(s) to add to the list.</li>
  * <li>tags   - A comma separated string of tags to apply to the titles within the list. (optional)</li>
  * <li>notes  - descriptive text to apply to the titles.  Can be viewed while on the list.  (optional)</li>
  * </ul>
  *
  * Note: You may also provide the parameters to addTitlesToList and titles will be added to the list
  * after the list is created.
  *
  * Returns:
  * <ul>
  * <li>success - true if the account is valid and the titles could be added to the list, false if the username or password were incorrect or the list could not be created.</li>
  * <li>listId - the id of the list that titles were added to.</li>
  * <li>numAdded - the number of titles that were added to the list.</li>
  * </ul>
  *
  * Sample Call:
  * <code>
  * http://catalog.douglascountylibraries.org/API/ListAPI?method=createList&username=23025003575917&password=1234&title=Test+List&description=Test&public=0
  * </code>
  *
  * Sample Response:
  * <code>
  * {"result":{"success":true,"listId":"1688"}}
  * </code>
  */
 function addTitlesToList()
 {
     $username = $_REQUEST['username'];
     $password = $_REQUEST['password'];
     if (!isset($_REQUEST['listId'])) {
         return array('success' => false, 'message' => 'You must provide the listId to add titles to.');
     }
     $recordIds = array();
     if (!isset($_REQUEST['recordIds'])) {
         return array('success' => false, 'message' => 'You must provide one or more records to add tot he list.');
     } else {
         if (!is_array($_REQUEST['recordIds'])) {
             $recordIds[] = $_REQUEST['recordIds'];
         } else {
             $recordIds = $_REQUEST['recordIds'];
         }
     }
     global $user;
     $user = UserAccount::validateAccount($username, $password);
     if ($user && !PEAR_Singleton::isError($user)) {
         $list = new UserList();
         $list->id = $_REQUEST['listId'];
         $list->user_id = $user->id;
         if (!$list->find(true)) {
             return array('success' => false, 'message' => 'Unable to find the list to add titles to.');
         } else {
             $numAdded = 0;
             foreach ($recordIds as $id) {
                 $userListEntry = new UserListEntry();
                 $userListEntry->listId = $list->id;
                 $userListEntry->groupedWorkPermanentId = $id;
                 $existingEntry = false;
                 if ($userListEntry->find(true)) {
                     $existingEntry = true;
                 }
                 if (isset($_REQUEST['notes'])) {
                     $notes = $_REQUEST['notes'];
                 } else {
                     $notes = '';
                 }
                 $userListEntry->notes = $notes;
                 $userListEntry->dateAdded = time();
                 if ($existingEntry) {
                     $userListEntry->update();
                 } else {
                     $userListEntry->insert();
                 }
                 $numAdded++;
             }
             return array('success' => true, 'listId' => $list->id, 'numAdded' => $numAdded);
         }
     } else {
         return array('success' => false, 'message' => 'Login unsuccessful');
     }
 }
Example #4
0
    public function __construct($names) {
        if ($names != null) {
            foreach ($names as $name) {
                $this->_list [] = $name;
            }
        }
    }

    public function add($name) {
        $this->_list [] = $name;
    }

    public function find($filter) {
        $recs = array();
        foreach ($this->_list as $user) {
            if ($filter->filter($user))
                $recs [] = $user;
        }
        return $recs;
    }

}

$ul = new UserList(array("Andy", "Jack", "Lori", "Megan"));
$f1 = $ul->find(new FindAfterStrategy("J"));
print_r($f1);

$f2 = $ul->find(new RandomStrategy());
print_r($f2);
?>
Example #5
0
 function addList()
 {
     if ($this->user) {
         if (strlen(trim($_REQUEST['title'])) == 0) {
             return new PEAR_Error('list_edit_name_required');
         }
         $list = new UserList();
         $list->title = $_REQUEST['title'];
         $list->description = $_REQUEST['desc'];
         $list->public = $_REQUEST['public'];
         $list->user_id = $this->user->id;
         $list->insert();
         $list->find();
         return $list->id;
     } else {
         return false;
     }
 }
Example #6
0
function loadUserData()
{
    global $user;
    global $interface;
    //Load profile information
    $catalog = CatalogFactory::getCatalogConnectionInstance();
    $profile = $catalog->getMyProfile($user);
    if (!PEAR_Singleton::isError($profile)) {
        $interface->assign('profile', $profile);
    }
    //Load a list of lists
    $lists = array();
    require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
    $tmpList = new UserList();
    $tmpList->user_id = $user->id;
    $tmpList->deleted = 0;
    $tmpList->orderBy("title ASC");
    $tmpList->find();
    if ($tmpList->N > 0) {
        while ($tmpList->fetch()) {
            $lists[$tmpList->id] = array('name' => $tmpList->title, 'url' => '/MyAccount/MyList/' . $tmpList->id, 'id' => $tmpList->id, 'numTitles' => $tmpList->num_titles());
        }
    }
    $interface->assign('lists', $lists);
    // Get My Tags
    $tagList = $user->getTags();
    $interface->assign('tagList', $tagList);
    if ($user->hasRole('opacAdmin') || $user->hasRole('libraryAdmin') || $user->hasRole('cataloging')) {
        $variable = new Variable();
        $variable->name = 'lastFullReindexFinish';
        if ($variable->find(true)) {
            $interface->assign('lastFullReindexFinish', date('m-d-Y H:i:s', $variable->value));
        } else {
            $interface->assign('lastFullReindexFinish', 'Unknown');
        }
        $variable = new Variable();
        $variable->name = 'lastPartialReindexFinish';
        if ($variable->find(true)) {
            $interface->assign('lastPartialReindexFinish', date('m-d-Y H:i:s', $variable->value));
        } else {
            $interface->assign('lastPartialReindexFinish', 'Unknown');
        }
    }
}
Example #7
0
 static function getObjectStructure()
 {
     global $user;
     // Get All User Lists
     require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
     $userLists = new UserList();
     $userLists->public = 1;
     $userLists->orderBy('title asc');
     $userLists->find();
     $sourceLists = array();
     $sourceLists[-1] = 'Generate from search term and filters';
     while ($userLists->fetch()) {
         if ($userLists->num_titles() > 0) {
             $sourceLists[$userLists->id] = "({$userLists->id}) {$userLists->title} - {$userLists->num_titles()} titles";
         }
     }
     // Get Structure for Sub-categories
     $browseSubCategoryStructure = SubBrowseCategories::getObjectStructure();
     unset($browseSubCategoryStructure['weight']);
     unset($browseSubCategoryStructure['browseCategoryId']);
     $structure = array('id' => array('property' => 'id', 'type' => 'label', 'label' => 'Id', 'description' => 'The unique id of this association'), 'label' => array('property' => 'label', 'type' => 'text', 'label' => 'Label', 'description' => 'The label to show to the user', 'maxLength' => 50, 'required' => true), 'textId' => array('property' => 'textId', 'type' => 'text', 'label' => 'textId', 'description' => 'A textual id to identify the category', 'serverValidation' => 'validateTextId', 'maxLength' => 50), 'userId' => array('property' => 'userId', 'type' => 'label', 'label' => 'userId', 'description' => 'The User Id who created this category', 'default' => $user->id), 'sharing' => array('property' => 'sharing', 'type' => 'enum', 'values' => array('private' => 'Just Me', 'location' => 'My Home Branch', 'library' => 'My Home Library', 'everyone' => 'Everyone'), 'label' => 'Share With', 'description' => 'Who the category should be shared with', 'default' => 'everyone'), 'description' => array('property' => 'description', 'type' => 'html', 'label' => 'Description', 'description' => 'A description of the category.', 'hideInLists' => true), 'subBrowseCategories' => array('property' => 'subBrowseCategories', 'type' => 'oneToMany', 'label' => 'Browse Sub-Categories', 'description' => 'Browse Categories that will be displayed as sub-categories of this Browse Category', 'keyThis' => 'id', 'keyOther' => 'browseCategoryId', 'subObjectType' => 'SubBrowseCategories', 'structure' => $browseSubCategoryStructure, 'sortable' => true, 'storeDb' => true, 'allowEdit' => false, 'canEdit' => false), 'catalogScoping' => array('property' => 'catalogScoping', 'type' => 'enum', 'label' => 'Catalog Scoping', 'values' => array('unscoped' => 'Unscoped', 'library' => 'Current Library', 'location' => 'Current Location'), 'description' => 'What scoping should be used for this search scope?.', 'default' => 'unscoped'), 'searchTerm' => array('property' => 'searchTerm', 'type' => 'text', 'label' => 'Search Term', 'description' => 'A default search term to apply to the category', 'default' => '', 'hideInLists' => true), 'defaultFilter' => array('property' => 'defaultFilter', 'type' => 'textarea', 'label' => 'Default Filter(s)', 'description' => 'Filters to apply to the search by default.', 'hideInLists' => true, 'rows' => 3, 'cols' => 80), 'sourceListId' => array('property' => 'sourceListId', 'type' => 'enum', 'values' => $sourceLists, 'label' => 'Source List', 'description' => 'A public list to display titles from'), 'defaultSort' => array('property' => 'defaultSort', 'type' => 'enum', 'label' => 'Default Sort', 'values' => array('relevance' => 'Best Match', 'popularity' => 'Popularity', 'newest_to_oldest' => 'Newest First', 'oldest_to_newest' => 'Oldest First', 'author' => 'Author', 'title' => 'Title', 'user_rating' => 'Rating'), 'description' => 'The default sort for the search if none is specified', 'default' => 'relevance', 'hideInLists' => true), 'numTimesShown' => array('property' => 'numTimesShown', 'type' => 'label', 'label' => 'Times Shown', 'description' => 'The number of times this category has been shown to users'), 'numTitlesClickedOn' => array('property' => 'numTitlesClickedOn', 'type' => 'label', 'label' => 'Titles Clicked', 'description' => 'The number of times users have clicked on titles within this category'));
     // used by Object Editor to make a list of Browse Categories for Admin interface
     foreach ($structure as $fieldName => $field) {
         if (isset($field['property'])) {
             $field['propertyOld'] = $field['property'] . 'Old';
             $structure[$fieldName] = $field;
         }
     }
     return $structure;
 }
Example #8
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');
 }
Example #9
0
 /**
  * Import Lists from the ILS
  *
  * @return array - an array of results including the names of the lists that were imported as well as number of titles.
  */
 function importListsFromIls()
 {
     require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
     global $user;
     $results = array('totalTitles' => 0, 'totalLists' => 0);
     $patronDump = $this->_getPatronDump($this->_getBarcode());
     //Get the page which contains a table with all lists in them.
     $listsPage = $this->_fetchPatronInfoPage($patronDump, 'mylists');
     //Get the actual table
     if (preg_match('/<table[^>]*?class="patFunc"[^>]*?>(.*?)<\\/table>/si', $listsPage, $listsPageMatches)) {
         $allListTable = $listsPageMatches[1];
         //Now that we have the table, get the actual list names and ids
         preg_match_all('/<tr[^>]*?class="patFuncEntry"[^>]*?>.*?<input type="checkbox" id ="(\\d+)".*?<a.*?>(.*?)<\\/a>.*?<td[^>]*class="patFuncDetails">(.*?)<\\/td>.*?<\\/tr>/si', $allListTable, $listDetails, PREG_SET_ORDER);
         for ($listIndex = 0; $listIndex < count($listDetails); $listIndex++) {
             $listId = $listDetails[$listIndex][1];
             $title = $listDetails[$listIndex][2];
             $description = str_replace('&nbsp;', '', $listDetails[$listIndex][3]);
             //Create the list (or find one that already exists)
             $newList = new UserList();
             $newList->user_id = $user->id;
             $newList->title = $title;
             if (!$newList->find(true)) {
                 $newList->description = $description;
                 $newList->insert();
             }
             $currentListTitles = $newList->getListTitles();
             //Get a list of all titles within the list to be imported
             $listDetailsPage = $this->_fetchPatronInfoPage($patronDump, 'mylists?listNum=' . $listId);
             //Get the table for the details
             if (preg_match('/<table[^>]*?class="patFunc"[^>]*?>(.*?)<\\/table>/si', $listDetailsPage, $listsDetailsMatches)) {
                 $listTitlesTable = $listsDetailsMatches[1];
                 //Get the bib numbers for the title
                 preg_match_all('/<input type="checkbox" name="(b\\d{1,7})".*?<span[^>]*class="patFuncTitle(?:Main)?">(.*?)<\\/span>/si', $listTitlesTable, $bibNumberMatches, PREG_SET_ORDER);
                 for ($bibCtr = 0; $bibCtr < count($bibNumberMatches); $bibCtr++) {
                     $bibNumber = $bibNumberMatches[$bibCtr][1];
                     $bibTitle = strip_tags($bibNumberMatches[$bibCtr][2]);
                     //Get the grouped work for the resource
                     require_once ROOT_DIR . '/sys/Grouping/GroupedWorkPrimaryIdentifier.php';
                     require_once ROOT_DIR . '/sys/Grouping/GroupedWork.php';
                     $primaryIdentifier = new GroupedWorkPrimaryIdentifier();
                     $groupedWork = new GroupedWork();
                     $primaryIdentifier->identifier = '.' . $bibNumber . $this->getCheckDigit($bibNumber);
                     $primaryIdentifier->type = 'ils';
                     $primaryIdentifier->joinAdd($groupedWork);
                     if ($primaryIdentifier->find(true)) {
                         //Check to see if this title is already on the list.
                         $resourceOnList = false;
                         foreach ($currentListTitles as $currentTitle) {
                             if ($currentTitle->groupedWorkPermanentId == $primaryIdentifier->permanent_id) {
                                 $resourceOnList = true;
                                 break;
                             }
                         }
                         if (!$resourceOnList) {
                             $listEntry = new UserListEntry();
                             $listEntry->groupedWorkPermanentId = $primaryIdentifier->permanent_id;
                             $listEntry->listId = $newList->id;
                             $listEntry->notes = '';
                             $listEntry->dateAdded = time();
                             $listEntry->insert();
                         }
                     } else {
                         //The title is not in the resources, add an error to the results
                         if (!isset($results['errors'])) {
                             $results['errors'] = array();
                         }
                         $results['errors'][] = "\"{$bibTitle}\" on list {$title} could not be found in the catalog and was not imported.";
                     }
                     $results['totalTitles']++;
                 }
             }
             $results['totalLists'] += 1;
         }
     }
     return $results;
 }
Example #10
0
 function getSaveToListForm()
 {
     global $interface;
     global $user;
     $id = $_REQUEST['id'];
     $interface->assign('id', $id);
     require_once ROOT_DIR . '/sys/LocalEnrichment/UserListEntry.php';
     //Get a list of all lists for the user
     $containingLists = array();
     $nonContainingLists = array();
     $userLists = new UserList();
     $userLists->user_id = $user->id;
     $userLists->deleted = 0;
     $userLists->find();
     while ($userLists->fetch()) {
         //Check to see if the user has already added the title to the list.
         $userListEntry = new UserListEntry();
         $userListEntry->listId = $userLists->id;
         $userListEntry->groupedWorkPermanentId = $id;
         if ($userListEntry->find(true)) {
             $containingLists[] = array('id' => $userLists->id, 'title' => $userLists->title);
         } else {
             $nonContainingLists[] = array('id' => $userLists->id, 'title' => $userLists->title);
         }
     }
     $interface->assign('containingLists', $containingLists);
     $interface->assign('nonContainingLists', $nonContainingLists);
     $results = array('title' => 'Add To List', 'modalBody' => $interface->fetch("GroupedWork/save.tpl"), 'modalButtons' => "<span class='tool btn btn-primary' onclick='VuFind.GroupedWork.saveToList(\"{$id}\"); return false;'>Save To List</span>");
     return json_encode($results);
 }
Example #11
0
 private function getBrowseCategoryResults($pageToLoad = 1)
 {
     $browseMode = $this->setBrowseMode();
     if ($pageToLoad == 1 && !isset($_REQUEST['reload'])) {
         // only first page is cached
         global $memCache, $solrScope;
         $key = 'browse_category_' . $this->textId . '_' . $solrScope . '_' . $browseMode;
         $browseCategoryInfo = $memCache->get($key);
         if ($browseCategoryInfo != false) {
             return $browseCategoryInfo;
         }
     }
     $result = array('result' => false);
     $browseCategory = $this->getBrowseCategory();
     if ($browseCategory) {
         global $interface;
         $interface->assign('browseCategoryId', $this->textId);
         $result['result'] = true;
         $result['textId'] = $browseCategory->textId;
         $result['label'] = $browseCategory->label;
         //$result['description'] = $browseCategory->description; // the description is not used anywhere on front end. plb 1-2-2015
         // User List Browse Category //
         if ($browseCategory->sourceListId != null && $browseCategory->sourceListId > 0) {
             require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
             $sourceList = new UserList();
             $sourceList->id = $browseCategory->sourceListId;
             if ($sourceList->find(true)) {
                 $records = $sourceList->getBrowseRecords(($pageToLoad - 1) * self::ITEMS_PER_PAGE, self::ITEMS_PER_PAGE);
             } else {
                 $records = array();
             }
             $result['searchUrl'] = '/MyAccount/MyList/' . $browseCategory->sourceListId;
             // Search Browse Category //
         } else {
             $this->searchObject = SearchObjectFactory::initSearchObject();
             $defaultFilterInfo = $browseCategory->defaultFilter;
             $defaultFilters = preg_split('/[\\r\\n,;]+/', $defaultFilterInfo);
             foreach ($defaultFilters as $filter) {
                 $this->searchObject->addFilter(trim($filter));
             }
             //Set Sorting, this is actually slightly mangled from the category to Solr
             $this->searchObject->setSort($browseCategory->getSolrSort());
             if ($browseCategory->searchTerm != '') {
                 $this->searchObject->setSearchTerm($browseCategory->searchTerm);
             }
             //Get titles for the list
             $this->searchObject->clearFacets();
             $this->searchObject->disableSpelling();
             $this->searchObject->disableLogging();
             $this->searchObject->setLimit(self::ITEMS_PER_PAGE);
             $this->searchObject->setPage($pageToLoad);
             $this->searchObject->processSearch();
             $records = $this->searchObject->getBrowseRecordHTML();
             $result['searchUrl'] = $this->searchObject->renderSearchUrl();
             //TODO: Check if last page
             // Shutdown the search object
             $this->searchObject->close();
         }
         if (count($records) == 0) {
             $records[] = $interface->fetch('Browse/noResults.tpl');
         }
         $result['records'] = implode('', $records);
         $result['numRecords'] = count($records);
     }
     // Store first page of browse category in the MemCache
     if ($pageToLoad == 1) {
         global $memCache, $configArray, $solrScope;
         $key = 'browse_category_' . $this->textId . '_' . $solrScope . '_' . $browseMode;
         $memCache->add($key, $result, 0, $configArray['Caching']['browse_category_info']);
     }
     return $result;
 }
Example #12
0
 function setListEntryPositions()
 {
     $success = false;
     // assume failure
     $listId = $_REQUEST['listID'];
     $updates = $_REQUEST['updates'];
     if (ctype_digit($listId) && !empty($updates)) {
         global $user;
         require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
         $list = new UserList();
         $list->id = $listId;
         if ($list->find(true) && $user->canEditList($list)) {
             // list exists & user can edit
             require_once ROOT_DIR . '/sys/LocalEnrichment/UserListEntry.php';
             $success = true;
             // assume success now
             foreach ($updates as $update) {
                 $userListEntry = new UserListEntry();
                 $userListEntry->listId = $listId;
                 $userListEntry->groupedWorkPermanentId = $update['id'];
                 if ($userListEntry->find(true) && ctype_digit($update['newOrder'])) {
                     // check entry exists already and the new weight is a number
                     $userListEntry->weight = $update['newOrder'];
                     if (!$userListEntry->update()) {
                         $success = false;
                     }
                 } else {
                     $success = false;
                 }
             }
         }
     }
     return array('success' => $success);
 }