Esempio n. 1
0
/**
 * 
 *
 * @return array 
 */
function caGetInfoForListingType($ps_listing_type)
{
    $o_listing_config = caGetListingConfig();
    $va_listing_types = $o_listing_config->getAssoc('listingTypes');
    $ps_listing_type = strtolower($ps_listing_type);
    if (isset($va_listing_types[$ps_listing_type])) {
        return $va_listing_types[$ps_listing_type];
    }
    return null;
}
Esempio n. 2
0
 /**
  *
  */
 public function __call($ps_function, $pa_args)
 {
     $o_config = caGetListingConfig();
     $ps_function = strtolower($ps_function);
     $ps_type = $this->request->getActionExtra();
     if (!($va_listing_info = caGetInfoForListingType($ps_function))) {
         // invalid listing type – throw error
         die("Invalid listing type");
     }
     MetaTagManager::setWindowTitle($this->request->config->get("app_display_name") . ": " . $va_listing_info["displayName"]);
     $o_dm = Datamodel::load();
     $ps_function = strtolower($ps_function);
     $vs_table = $va_listing_info['table'];
     $vs_search = caGetOption('search', $va_listing_info, '*');
     $vs_segment_by = caGetOption('segmentBy', $va_listing_info, '');
     $this->opo_result_context = new ResultContext($this->request, $vs_table, $this->ops_find_type);
     $this->opo_result_context->setAsLastFind();
     if (!($t_instance = $o_dm->getInstanceByTableName($vs_table, true))) {
         die("Invalid table");
     }
     if (!($o_browse = caGetBrowseInstance($vs_table))) {
         die("Invalid listing");
     }
     // Set browse facet group
     if ($vs_facet_group = caGetOption('browseFacetGroup', $va_listing_info, null)) {
         $o_browse->setFacetGroup($vs_facet_group);
     }
     $va_types = caGetOption('restrictToTypes', $va_listing_info, array(), array('castTo' => 'array'));
     $va_type_list = $t_instance->getTypeList();
     if (!is_array($va_types) || !sizeof($va_types)) {
         $va_types = array_keys($va_type_list);
     } else {
         $va_types = caMakeTypeIDList($vs_table, $va_types, array('dontIncludeSubtypesInTypeRestriction' => true));
     }
     $o_browse->addCriteria("_search", array($vs_search));
     $o_browse->setTypeRestrictions($va_types, array('dontExpandHierarchically' => true));
     $o_browse->execute(array('checkAccess' => $this->opa_access_values));
     //
     // Facets for search
     //
     $va_facets = $o_browse->getInfoForAvailableFacets();
     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);
     //
     // Add criteria and execute
     //
     if ($vs_facet = $this->request->getParameter('facet', pString)) {
         $o_browse->addCriteria($vs_facet, array($vn_facet_id = $this->request->getParameter('id', pString)));
         $this->view->setVar('facet', $vs_facet);
         $this->view->setVar('facet_id', $vn_facet_id);
     }
     //
     // Sorting
     //
     $vb_sort_changed = false;
     if (!($ps_sort = $this->request->getParameter("sort", pString))) {
         if (!($ps_sort = $this->opo_result_context->getCurrentSort())) {
             if (is_array($va_sorts = caGetOption('sortBy', $va_listing_info, null))) {
                 $ps_sort = array_shift(array_keys($va_sorts));
                 $vb_sort_changed = true;
             }
         }
     } else {
         $vb_sort_changed = true;
     }
     if ($vb_sort_changed) {
         # --- set the default sortDirection if available
         $va_sort_direction = caGetOption('sortDirection', $va_listing_info, null);
         if ($ps_sort_direction = $va_sort_direction[$ps_sort]) {
             $this->opo_result_context->setCurrentSortDirection($ps_sort_direction);
         }
     }
     if (!($ps_sort_direction = $this->request->getParameter("direction", pString))) {
         if (!($ps_sort_direction = $this->opo_result_context->getCurrentSortDirection())) {
             $ps_sort_direction = 'asc';
         }
     }
     $this->opo_result_context->setCurrentSort($ps_sort);
     $this->opo_result_context->setCurrentSortDirection($ps_sort_direction);
     $va_sort_by = caGetOption('sortBy', $va_listing_info, null);
     $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('sortControl', $vs_sort_by_select ? _t('Sort with %1', $vs_sort_by_select) : '');
     $this->view->setVar('sort', $ps_sort);
     $this->view->setVar('sort_direction', $ps_sort_direction);
     $va_lists = array();
     $va_res_list = array();
     $o_browse->execute(array('checkAccess' => $this->opa_access_values));
     $qr_res = $o_browse->getResults(array('sort' => $va_sort_by[$ps_sort], 'sort_direction' => $ps_sort_direction));
     while ($qr_res->nextHit()) {
         $vs_key = $qr_res->getWithTemplate($vs_segment_by);
         $va_lists[$vs_key][] = $va_res_list[] = $qr_res->getPrimaryKey();
     }
     foreach ($va_lists as $vs_key => $va_ids) {
         $va_lists[$vs_key] = caMakeSearchResult($vs_table, $va_ids);
     }
     $this->view->setVar('table', $vs_table);
     $this->view->setVar('lists', $va_lists);
     $this->view->setVar('typeInfo', $va_type_list);
     $this->view->setVar('listingInfo', $va_listing_info);
     //
     // Current criteria
     //
     $va_criteria = $o_browse->getCriteriaWithLabels();
     unset($va_criteria['_search']);
     $va_criteria_for_checking = 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_checking[$vs_facet_name] = $vn_criterion_id;
         }
     }
     $this->view->setVar('hasCriteria', sizeof($va_criteria_for_checking) > 0);
     $this->view->setVar('criteria', $va_criteria_for_checking);
     $this->opo_result_context->setResultList($va_res_list);
     $this->opo_result_context->saveContext();
     $this->render("Listing/listing_html.php");
 }