Exemplo n.º 1
0
 function insertListItem($listName, $itemName)
 {
     $model = new UserList();
     $model->system_list_code = $listName;
     $model->system_list_item_name = $itemName;
     $model->system_list_item_code = $listName . '_' . $itemName;
     $model->system_list_item_active = '1';
     $condition = 'system_list_item_code=:id';
     if (!$model->getItemByCode($listName . '_' . $itemName)) {
         $model->insert();
     }
 }
Exemplo n.º 2
0
 /**
  * Create a User list for the user.
  *
  * 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>title    - The title of the list to create.</li>
  * <li>description - A description for the list (optional).</li>
  * <li>public   - Set to true or 1 if the list should be public.  (optional, defaults to private).</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 list could be created, false if the username or password were incorrect or the list could not be created.</li>
  * <li>listId - te id of the new list that is created.</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 createList()
 {
     $username = $_REQUEST['username'];
     $password = $_REQUEST['password'];
     if (!isset($_REQUEST['title'])) {
         return array('success' => false, 'message' => 'You must provide the title of the list to be created.');
     }
     global $user;
     $user = UserAccount::validateAccount($username, $password);
     if ($user && !PEAR_Singleton::isError($user)) {
         $list = new UserList();
         $list->title = $_REQUEST['title'];
         $list->description = isset($_REQUEST['description']) ? $_REQUEST['description'] : '';
         $list->public = isset($_REQUEST['public']) ? $_REQUEST['public'] == true || $_REQUEST['public'] == 1 ? 1 : 0 : 0;
         $list->user_id = $user->id;
         $list->insert();
         $list->find();
         if (!isset($_REQUEST['recordIds'])) {
             $result = $this->addTitlesToList();
             return $result;
         }
         return array('success' => true, 'listId' => $list->id);
     } else {
         return array('success' => false, 'message' => 'Login unsuccessful');
     }
 }
Exemplo n.º 3
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;
     }
 }
Exemplo n.º 4
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;
 }
 function actionAjaxLoadFormItem()
 {
     $model = new UserList();
     $list_code = $_POST['list'];
     if (isset($_POST['item']) && $_POST['item'] !== "") {
         $item = $_POST['item'];
         $model->system_list_code = $list_code;
         $model->system_list_item_name = $item;
         $model->system_list_item_code = $list_code . '_' . $item;
         $model->system_list_item_active = '1';
         $condition = 'system_list_item_code=:id';
         if (!$model->getItemByCode($list_code . '_' . $item)) {
             $model->insert();
             echo json_encode(array('status' => 'success'));
         } else {
             echo json_encode(array('status' => 'failed'));
         }
     }
 }
Exemplo n.º 6
0
 function saveToList()
 {
     $result = array();
     global $user;
     if ($user === false) {
         $result['result'] = false;
         $result['message'] = 'Please login before adding a title to list.';
     } else {
         require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
         require_once ROOT_DIR . '/sys/LocalEnrichment/UserListEntry.php';
         $result['result'] = true;
         $id = $_REQUEST['id'];
         $listId = $_REQUEST['listId'];
         $notes = $_REQUEST['notes'];
         //Check to see if we need to create a list
         $userList = new UserList();
         $listOk = true;
         if (empty($listId)) {
             $userList->title = "My Favorites";
             $userList->user_id = $user->id;
             $userList->public = 0;
             $userList->description = '';
             $userList->insert();
         } else {
             $userList->id = $listId;
             if (!$userList->find(true)) {
                 $result['result'] = false;
                 $result['message'] = 'Sorry, we could not find that list in the system.';
                 $listOk = false;
             }
         }
         if ($listOk) {
             $userListEntry = new UserListEntry();
             $userListEntry->listId = $userList->id;
             $userListEntry->groupedWorkPermanentId = $id;
             $existingEntry = false;
             if ($userListEntry->find(true)) {
                 $existingEntry = true;
             }
             $userListEntry->notes = $notes;
             $userListEntry->dateAdded = time();
             if ($existingEntry) {
                 $userListEntry->update();
             } else {
                 $userListEntry->insert();
             }
         }
         $result['result'] = true;
         $result['message'] = 'This title was saved to your list successfully.';
     }
     return json_encode($result);
 }
Exemplo n.º 7
0
 function AddList()
 {
     global $user;
     $return = array();
     if ($user) {
         require_once ROOT_DIR . '/sys/LocalEnrichment/UserList.php';
         $title = isset($_REQUEST['title']) ? urldecode($_REQUEST['title']) : '';
         if (strlen(trim($title)) == 0) {
             $return['result'] = "false";
             $return['message'] = "You must provide a title for the list";
         } else {
             $list = new UserList();
             $list->title = $title;
             $list->user_id = $user->id;
             //Check to see if there is already a list with this id
             $existingList = false;
             if ($list->find(true)) {
                 $existingList = true;
             }
             $list->description = urldecode($_REQUEST['desc']);
             $list->public = $_REQUEST['public'];
             if ($existingList) {
                 $list->update();
             } else {
                 $list->insert();
             }
             if (isset($_REQUEST['recordId'])) {
                 $recordToAdd = urldecode($_REQUEST['recordId']);
                 require_once ROOT_DIR . '/sys/LocalEnrichment/UserListEntry.php';
                 //Check to see if the user has already added the title to the list.
                 $userListEntry = new UserListEntry();
                 $userListEntry->listId = $list->id;
                 $userListEntry->groupedWorkPermanentId = $recordToAdd;
                 if (!$userListEntry->find(true)) {
                     $userListEntry->dateAdded = time();
                     $userListEntry->insert();
                 }
             }
             $return['result'] = 'true';
             $return['newId'] = $list->id;
             if ($existingList) {
                 $return['message'] = "Updated list {$title} successfully";
             } else {
                 $return['message'] = "Created list {$title} successfully";
             }
         }
     } else {
         $return['result'] = "false";
         $return['message'] = "You must be logged in to create a list";
     }
     return $return;
 }