function setDetail() { if (!$this->request->isLoggedIn()) { $this->response->setRedirect(caNavUrl($this->request, '', 'LoginReg', 'loginForm')); return; } AssetLoadManager::register("mediaViewer"); $o_context = new ResultContext($this->request, 'ca_objects', 'sets', 'lightbox'); $o_context->setAsLastFind(); $this->view->setVar('browse', $o_browse = caGetBrowseInstance("ca_objects")); $this->view->setVar("browse_type", "caLightbox"); # --- this is only used when loading hierarchy facets and is a way to get around needing a browse type to pull the table in FindController $ps_view = $this->request->getParameter('view', pString); if (!in_array($ps_view, array('thumbnail', 'timeline', 'timelineData', 'pdf', 'list'))) { $ps_view = 'thumbnail'; } $this->view->setVar('view', $ps_view); $this->view->setVar('views', $this->opo_config->getAssoc("views")); if (!($t_set = $this->_getSet(__CA_SET_READ_ACCESS__))) { $this->Index(); } $vn_set_id = $t_set->get("set_id"); $this->view->setVar("set", $t_set); $va_comments = $t_set->getComments(); $this->view->setVar("comments", $va_comments); // // Load existing browse if key is specified // if ($ps_cache_key = $this->request->getParameter('key', pString)) { $o_browse->reload($ps_cache_key); } // // Clear criteria if required // if ($vs_remove_criterion = $this->request->getParameter('removeCriterion', pString)) { $o_browse->removeCriteria($vs_remove_criterion, array($this->request->getParameter('removeID', pString))); } if ((bool) $this->request->getParameter('clear', pInteger)) { // Clear all refine critera but *not* underlying _search criterion $va_criteria = $o_browse->getCriteria(); foreach ($va_criteria as $vs_criterion => $va_criterion_info) { if ($vs_criterion == '_search') { continue; } $o_browse->removeCriteria($vs_criterion, array_keys($va_criterion_info)); } } if ($this->request->getParameter('getFacet', pInteger)) { $vs_facet = $this->request->getParameter('facet', pString); $this->view->setVar('facet_name', $vs_facet); $this->view->setVar('key', $o_browse->getBrowseID()); $va_facet_info = $o_browse->getInfoForFacet($vs_facet); $this->view->setVar('facet_info', $va_facet_info); # --- pull in different views based on format for facet - alphabetical, list, hierarchy switch ($va_facet_info["group_mode"]) { case "alphabetical": case "list": default: $this->view->setVar('facet_content', $o_browse->getFacetContent($vs_facet, array("checkAccess" => $this->opa_access_values))); $this->render("Browse/list_facet_html.php"); break; case "hierarchical": $this->render("Browse/hierarchy_facet_html.php"); break; } return; } // // Add criteria and execute // $vs_search_expression = "ca_sets.set_id:{$vn_set_id}"; if ($o_browse->numCriteria() == 0 && $vs_search_expression) { $o_browse->addCriteria("_search", array($vs_search_expression)); } if ($vs_facet = $this->request->getParameter('facet', pString)) { $o_browse->addCriteria($vs_facet, array($this->request->getParameter('id', pString))); } // // Sorting // $vb_sort_changed = false; if (!($ps_secondary_sort = $this->request->getParameter("secondary_sort", pString))) { $ps_secondary_sort = $o_context->getCurrentSecondarySort(); } $va_config_sort = $this->opo_config->getAssoc("sortBy"); if (!is_array($va_config_sort)) { $va_config_sort = array(); } $va_sort_by = array_merge(array(_t('Set order') => "ca_set_items.rank/{$vn_set_id}"), $va_config_sort); if (!($ps_sort = urldecode($this->request->getParameter("sort", pString)))) { if (!$ps_sort && !($ps_sort = $o_context->getCurrentSort())) { if (is_array($va_sort_by)) { $ps_sort = array_shift(array_keys($va_sort_by)); $vb_sort_changed = true; } } } else { $vb_sort_changed = true; } if ($vb_sort_changed) { # --- set the default sortDirection if available $va_sort_direction = $this->opo_config->getAssoc("sortDirection"); if ($ps_sort_direction = $va_sort_direction[$ps_sort]) { $o_context->setCurrentSortDirection($ps_sort_direction); } $ps_secondary_sort = ""; } if (!($ps_sort_direction = $this->request->getParameter("direction", pString))) { if (!($ps_sort_direction = $o_context->getCurrentSortDirection())) { $ps_sort_direction = 'asc'; } } $o_context->setCurrentSort($ps_sort); $o_context->setCurrentSecondarySort($ps_secondary_sort); $o_context->setCurrentSortDirection($ps_sort_direction); $this->view->setVar('sortBy', is_array($va_sort_by) ? $va_sort_by : null); $this->view->setVar('sortBySelect', $vs_sort_by_select = is_array($va_sort_by) ? caHTMLSelect("sort", $va_sort_by, array('id' => "sort"), array("value" => $ps_sort)) : ''); $this->view->setVar('sort', $ps_sort); $va_secondary_sort_by = $this->opo_config->getAssoc("secondarySortBy"); $this->view->setVar('secondarySortBy', is_array($va_secondary_sort_by) ? $va_secondary_sort_by : null); $this->view->setVar('secondarySortBySelect', $vs_secondary_sort_by_select = is_array($va_secondary_sort_by) ? caHTMLSelect("secondary_sort", $va_secondary_sort_by, array('id' => "secondary_sort"), array("value" => $ps_secondary_sort)) : ''); $this->view->setVar('secondarySort', $ps_secondary_sort); $this->view->setVar('sortDirection', $ps_sort_direction); $va_options = array('checkAccess' => $this->opa_access_values, 'no_cache' => true); $o_browse->execute(array_merge($va_options, array('strictPhraseSearching' => true))); // // Facets // if ($vs_facet_group = $this->opo_config->get("set_facet_group")) { $o_browse->setFacetGroup($vs_facet_group); } $va_available_facet_list = $this->opo_config->get("availableFacets"); $va_facets = $o_browse->getInfoForAvailableFacets(); if (is_array($va_available_facet_list) && sizeof($va_available_facet_list)) { foreach ($va_facets as $vs_facet_name => $va_facet_info) { if (!in_array($vs_facet_name, $va_available_facet_list)) { unset($va_facets[$vs_facet_name]); } } } foreach ($va_facets as $vs_facet_name => $va_facet_info) { $va_facets[$vs_facet_name]['content'] = $o_browse->getFacetContent($vs_facet_name, array("checkAccess" => $this->opa_access_values)); } $this->view->setVar('facets', $va_facets); $this->view->setVar('key', $vs_key = $o_browse->getBrowseID()); $this->request->session->setVar('lightbox_last_browse_id', $vs_key); // // Current criteria // $va_criteria = $o_browse->getCriteriaWithLabels(); if (isset($va_criteria['_search']) && isset($va_criteria['_search']['*'])) { unset($va_criteria['_search']); } $va_criteria_for_display = array(); foreach ($va_criteria as $vs_facet_name => $va_criterion) { $va_facet_info = $o_browse->getInfoForFacet($vs_facet_name); foreach ($va_criterion as $vn_criterion_id => $vs_criterion) { $va_criteria_for_display[] = array('facet' => $va_facet_info['label_singular'], 'facet_name' => $vs_facet_name, 'value' => $vs_criterion, 'id' => $vn_criterion_id); } } $this->view->setVar('criteria', $va_criteria_for_display); // // Results // $vs_combined_sort = $va_sort_by[$ps_sort]; if ($ps_secondary_sort) { $vs_combined_sort .= ";" . $va_secondary_sort_by[$ps_secondary_sort]; } $qr_res = $o_browse->getResults(array('sort' => $vs_combined_sort, 'sort_direction' => $ps_sort_direction)); $this->view->setVar('result', $qr_res); if (!($pn_hits_per_block = $this->request->getParameter("n", pString))) { if (!($pn_hits_per_block = $o_context->getItemsPerPage())) { $pn_hits_per_block = $this->opo_config->get("defaultHitsPerBlock") ? $this->opo_config->get("defaultHitsPerBlock") : 36; } } $o_context->getItemsPerPage($pn_hits_per_block); $this->view->setVar('hits_per_block', $pn_hits_per_block); $this->view->setVar('start', $vn_start = $this->request->getParameter('s', pInteger)); $o_context->setParameter('key', $vs_key); if (($vn_key_start = $vn_start - 500) < 0) { $vn_key_start = 0; } $qr_res->seek($vn_key_start); $o_context->setResultList($qr_res->getPrimaryKeyValues(1000)); if ($o_block_result_context) { $o_block_result_context->setResultList($qr_res->getPrimaryKeyValues(1000)); $o_block_result_context->saveContext(); } $qr_res->seek($vn_start); $o_context->saveContext(); MetaTagManager::setWindowTitle($this->request->config->get("app_display_name") . ": " . ucfirst($this->ops_lightbox_display_name) . ": " . $t_set->getLabelForDisplay()); switch ($ps_view) { case 'pdf': $this->_genExport($qr_res, $this->request->getParameter("export_format", pString), $vs_label = $t_set->get('ca_sets.preferred_labels'), $vs_label); case 'timelineData': $this->view->setVar('view', 'timeline'); $this->render("Sets/set_detail_timelineData_json.php"); break; default: $this->render("Sets/set_detail_html.php"); break; } }