/** * Standard modular run function. * * @param array A map of parameters. * @return tempcode The result of execution. */ function run($map) { require_code('catalogues'); require_lang('catalogues'); require_css('catalogues'); $number = array_key_exists('param', $map) ? intval($map['param']) : 10; $catalogue = array_key_exists('catalogue', $map) ? $map['catalogue'] : 'faqs'; $zone = array_key_exists('zone', $map) ? $map['zone'] : get_module_zone('catalogues'); $root = array_key_exists('root', $map) && $map['root'] != '' ? intval($map['root']) : NULL; $catalogues = $GLOBALS['SITE_DB']->query_select('catalogues', array('*'), array('c_name' => $catalogue), '', 1); if (!array_key_exists(0, $catalogues)) { return do_lang_tempcode('MISSING_RESOURCE', escape_html($catalogue)); } $catalogue_row = $catalogues[0]; $entries = $GLOBALS['SITE_DB']->query_select('catalogue_entries', array('*'), array('c_name' => $catalogue, 'ce_validated' => 1), 'ORDER BY ce_add_date DESC', $number); $tpl_set = $catalogue; $display_type = array_key_exists('display_type', $map) ? intval($map['display_type']) : NULL; list($content, , ) = get_catalogue_category_entry_buildup(db_get_first_id(), $catalogue, $catalogue_row, 'SEARCH', $tpl_set, $number, 0, NULL, $root, $display_type, false, $entries); $catalogue_title = get_translated_text($catalogue_row['c_title']); if ($content->is_empty()) { if (has_actual_page_access(NULL, 'cms_catalogues', NULL, NULL) && has_submit_permission('mid', get_member(), get_ip_address(), 'cms_catalogues')) { $submit_url = build_url(array('page' => 'cms_catalogues', 'type' => 'add_entry', 'catalogue_name' => $catalogue, 'redirect' => SELF_REDIRECT), get_module_zone('cms_catalogues')); } else { $submit_url = new ocp_tempcode(); } return do_template('BLOCK_NO_ENTRIES', array('HIGH' => false, 'TITLE' => do_lang_tempcode('RECENT', escape_html(integer_format($number)), escape_html($catalogue_title)), 'MESSAGE' => do_lang_tempcode('NO_ENTRIES'), 'ADD_NAME' => do_lang_tempcode('CATALOGUE_GENERIC_ADD', escape_html($catalogue_title)), 'SUBMIT_URL' => $submit_url)); } return do_template('BLOCK_MAIN_RECENT_CC_ENTRIES', array('_GUID' => 'a57fa1b83d1b6fe3acbceb2b618e6d7f', 'CATALOGUE_TITLE' => $catalogue_title, 'CATALOGUE' => $catalogue, 'CONTENT' => $content, 'NUMBER' => integer_format($number))); }
/** * Standard modular run function. * * @param array A map of parameters. * @return tempcode The result of execution. */ function run($map) { global $NON_CANONICAL_PARAMS; $NON_CANONICAL_PARAMS[] = 'max'; $category_id = array_key_exists('param', $map) ? intval($map['param']) : db_get_first_id(); $max = get_param_integer('max', array_key_exists('max', $map) ? intval($map['max']) : 30); $start = get_param_integer('start', 0); $root = array_key_exists('root', $map) && $map['root'] != '' ? intval($map['root']) : get_param_integer('root', NULL); $sort = array_key_exists('sort', $map) ? $map['sort'] : ''; $search = array_key_exists('search', $map) ? $map['search'] : ''; require_lang('catalogues'); require_code('catalogues'); require_code('feedback'); require_css('catalogues'); $select = NULL; if (!is_null($map) && array_key_exists('select', $map)) { require_code('ocfiltering'); $select = ocfilter_to_sqlfragment($map['select'], 'e.id', 'catalogue_categories', 'cc_parent_id', 'cc_id', 'id'); } $categories = $GLOBALS['SITE_DB']->query_select('catalogue_categories', array('*'), array('id' => $category_id), '', 1); if (!array_key_exists(0, $categories)) { return do_lang_tempcode('MISSING_RESOURCE'); } $category = $categories[0]; $catalogue_name = $category['c_name']; $catalogues = $GLOBALS['SITE_DB']->query_select('catalogues', array('*'), array('c_name' => $catalogue_name), '', 1); $catalogue = $catalogues[0]; $tpl_set = array_key_exists('template_set', $map) ? $map['template_set'] : $catalogue_name; $display_type = array_key_exists('display_type', $map) ? intval($map['display_type']) : NULL; list($entry_buildup, , , ) = get_catalogue_category_entry_buildup(is_null($select) ? $category_id : NULL, $catalogue_name, $catalogue, 'CATEGORY', $tpl_set, $max, $start, $select, $root, $display_type, true, NULL, $search, $sort); return do_template('CATALOGUE_' . $tpl_set . '_CATEGORY_EMBED', array('ROOT' => strval($root), 'CATALOGUE' => $catalogue_name, 'ENTRIES' => $entry_buildup), NULL, false, 'CATALOGUE_DEFAULT_CATEGORY_EMBED'); }
/** * The UI to show a catalogue A-Z screen. * * @return tempcode The UI */ function view_catalogue_category_entries() { $id = get_param_integer('id', -1); if ($id == -1) { $id = $GLOBALS['SITE_DB']->query_value('catalogue_categories', 'MIN(id)', array('c_name' => get_param('catalogue_name'), 'cc_parent_id' => NULL)); } $GLOBALS['FEED_URL'] = find_script('backend') . '?mode=catalogues&filter=' . strval($id); $categories = $GLOBALS['SITE_DB']->query_select('catalogue_categories', array('*'), array('id' => $id), '', 1); if (!array_key_exists(0, $categories)) { return warn_screen(get_page_title('CATALOGUES'), do_lang_tempcode('MISSING_RESOURCE')); } $category = $categories[0]; // Permission for here? if (!has_category_access(get_member(), 'catalogues_catalogue', $category['c_name'])) { access_denied('CATALOGUE_ACCESS'); } $catalogue_name = $category['c_name']; $root = get_param_integer('root', NULL); $category = $GLOBALS['SITE_DB']->query_value('catalogue_categories', 'cc_title', array('id' => $id)); $category_name = get_translated_text($category); $catalogues = $GLOBALS['SITE_DB']->query_select('catalogues', array('*'), array('c_name' => $catalogue_name), '', 1); if (!array_key_exists(0, $catalogues)) { warn_exit(do_lang_tempcode('MISSING_RESOURCE')); } $catalogue = $catalogues[0]; $tpl_set = $catalogue_name; $category_buildup = new ocp_tempcode(); $max = NULL; $start = NULL; require_code('ocfiltering'); $sql_filter = ocfilter_to_sqlfragment(strval($id) . '*', 'cc_id', 'catalogue_categories', 'cc_parent_id', 'cc_id', 'id'); // Note that the parameters are fiddled here so that category-set and record-set are the same, yet SQL is returned to deal in an entirely different record-set (entries' record-set) if ($GLOBALS['SITE_DB']->query_value_null_ok_full('SELECT COUNT(*) FROM ' . get_table_prefix() . 'catalogue_entries p WHERE ce_validated=1 AND (' . $sql_filter . ')') > 1000) { warn_exit(do_lang_tempcode('TOO_MANY_TO_CHOOSE_FROM')); } $cats = array(); $rows = $GLOBALS['SITE_DB']->query('SELECT * FROM ' . get_table_prefix() . 'catalogue_entries p WHERE ce_validated=1 AND (' . $sql_filter . ')'); foreach ($rows as $row) { $entry_map = get_catalogue_entry_map($row, $catalogue, 'CATEGORY', 'DEFAULT', $root, NULL, array(0), false, false); $letter = strtoupper(substr(is_object($entry_map['FIELD_0_PLAIN']) ? $entry_map['FIELD_0_PLAIN']->evaluate() : $entry_map['FIELD_0_PLAIN'], 0, 1)); if (get_value('disable_cat_cat_perms') !== '1' && !has_category_access(get_member(), 'catalogues_category', strval($row['id']))) { continue; } if (!array_key_exists($letter, $cats)) { $cats[$letter] = array(); } $cats[$letter][] = $row; } unset($rows); ksort($cats); foreach ($cats as $letter => $entries) { list($entry_buildup) = get_catalogue_category_entry_buildup(NULL, $catalogue_name, $catalogue, 'CATEGORY', $tpl_set, $max, $start, NULL, $root, NULL, true, $entries); $category_buildup->attach(do_template('CATALOGUE_CATEGORY_HEADING', array('LETTER' => is_integer($letter) ? strval($letter) : $letter, 'ENTRIES' => escape_html($entry_buildup)), NULL, false, 'CATALOGUE_CATEGORY_HEADING')); } $_title = get_translated_text($category); $title_to_use = do_lang_tempcode('DEFAULT__CATALOGUE_CATEGORY_ATOZ', escape_html($_title)); $title = get_page_title($title_to_use, false); //Link to add to catalogue category if (has_actual_page_access(NULL, 'cms_catalogues', NULL, get_value('disable_cat_cat_perms') === '1' ? array('catalogues_catalogue', $catalogue_name) : array('catalogues_catalogue', $catalogue_name, 'catalogues_category', strval($id)), 'submit_midrange_content')) { $add_link = build_url(array('page' => 'cms_catalogues', 'type' => 'add_entry', 'catalogue_name' => $catalogue_name, 'category_id' => $id), get_module_zone('cms_catalogues')); } else { $add_link = new ocp_tempcode(); } if (has_actual_page_access(NULL, 'cms_catalogues', NULL, get_value('disable_cat_cat_perms') === '1' ? array('catalogues_catalogue', $catalogue_name) : array('catalogues_catalogue', $catalogue_name, 'catalogues_category', strval($id)), 'submit_cat_midrange_content')) { $add_cat_url = build_url(array('page' => 'cms_catalogues', 'type' => 'add_category', 'catalogue_name' => $catalogue_name, 'parent_id' => $id), get_module_zone('cms_catalogues')); } else { $add_cat_url = new ocp_tempcode(); } if (has_actual_page_access(NULL, 'cms_catalogues', NULL, get_value('disable_cat_cat_perms') === '1' ? array('catalogues_catalogue', $catalogue_name) : array('catalogues_catalogue', $catalogue_name, 'catalogues_category', strval($id)), 'edit_cat_midrange_content')) { $edit_cat_url = build_url(array('page' => 'cms_catalogues', 'type' => '_edit_category', 'catalogue_name' => $catalogue_name, 'id' => $id), get_module_zone('cms_catalogues')); } else { $edit_cat_url = new ocp_tempcode(); } if (has_actual_page_access(NULL, 'cms_catalogues', NULL, get_value('disable_cat_cat_perms') === '1' ? array('catalogues_catalogue', $catalogue_name) : array('catalogues_catalogue', $catalogue_name), 'edit_cat_highrange_content')) { $edit_catalogue_url = build_url(array('page' => 'cms_catalogues', 'type' => '_edit_catalogue', 'id' => $catalogue_name), get_module_zone('cms_catalogues')); } else { $edit_catalogue_url = new ocp_tempcode(); } breadcrumb_set_parents(array(array('_SELF:_SELF:misc' . ($catalogue['c_ecommerce'] == 1 ? ':ecommerce=1' : ''), do_lang_tempcode('CATALOGUES')))); return do_template('CATALOGUE_' . $tpl_set . '_CATEGORY_SCREEN', array('TITLE' => $title, 'CART_LINK' => '', '_TITLE' => $_title, 'TAGS' => get_loaded_tags('catalogue_categories'), 'CATALOGUE' => $catalogue_name, 'BROWSER' => '', 'SORTING' => '', 'ADD_LINK' => $add_link, 'ADD_CAT_URL' => $add_cat_url, 'EDIT_CAT_URL' => $edit_cat_url, 'EDIT_CATALOGUE_URL' => $edit_catalogue_url, 'ENTRIES' => $category_buildup, 'SUBCATEGORIES' => '', 'DESCRIPTION' => ''), NULL, false, 'CATALOGUE_DEFAULT_CATEGORY_SCREEN'); }
/** * Build a templated list of the given search results, for viewing. * * @param array Search results * @param integer Start index * @param integer Maximum index * @param string Sort direction * @set ASC DESC * @param boolean Whether this is a general search, rather than a search for a specific result-type (such as all members) * @return tempcode Interface */ function build_search_results_interface($results, $start, $max, $direction, $general_search = false) { $out = new ocp_tempcode(); $i = 0; global $CATALOGUE_ENTRIES_BUILDUP; $CATALOGUE_ENTRIES_BUILDUP = array(); $tabular_results = array(); foreach ($results as $result) { if (array_key_exists('restricted', $result)) { continue; } // This has been blanked out due to insufficient access permissions or some other reason if ($i >= $start + $max) { break; } if ($i >= $start) { if (array_key_exists('template', $result)) { $rendered_result = $result['template']; } else { if (!$general_search && get_param_integer('force_non_tabular', 0) == 0 && method_exists($result['object'], 'render_tabular')) { $rendered_result = $result['object']->render_tabular($result['data']); } else { $rendered_result = $result['object']->render($result['data']); } } if (!is_null($rendered_result)) { if (is_array($rendered_result)) { $class = get_class($result['object']); if (!array_key_exists($class, $tabular_results)) { $tabular_results[$class] = array(); } $tabular_results[$class][] = $rendered_result; } else { $out->attach(do_template('SEARCH_RESULT', array('_GUID' => '47da093f9ace87819e246f0cec1402a9', 'CONTENT' => $rendered_result))); } } } $i++; } foreach ($tabular_results as $tabular_type => $types_results) { // Normalisation process $ultimate_field_map = array(); foreach ($types_results as $r) { $ultimate_field_map += $r; } //ksort($ultimate_field_map); $ultimate_field_map = array_keys($ultimate_field_map); foreach ($types_results as $i => $r) { $r2d2 = array(); foreach ($ultimate_field_map as $key) { if (!array_key_exists($key, $r)) { $r[$key] = ''; } $r2d2[$key] = $r[$key]; } //ksort($r); $r = $r2d2; $types_results[$i] = array('R' => $r); } // Output $out->attach(do_template('SEARCH_RESULT_TABLE', array('HEADERS' => $ultimate_field_map, 'ROWS' => $types_results))); } if (count($CATALOGUE_ENTRIES_BUILDUP) != 0) { global $SEARCH_CATALOGUE_ENTRIES_CATALOGUES; foreach ($CATALOGUE_ENTRIES_BUILDUP as $catalogue_name => $catalogue_entries) { $tpl_set = $catalogue_name; $buildup = get_catalogue_category_entry_buildup(NULL, $catalogue_name, $SEARCH_CATALOGUE_ENTRIES_CATALOGUES[$catalogue_name], 'SEARCH', $tpl_set, NULL, NULL, NULL, NULL, NULL, false, $catalogue_entries); $out->attach(do_template('SEARCH_RESULT_CATALOGUE_ENTRIES', array('_GUID' => 'dd0045ac291275b2d822d40b28182a28', 'BUILDUP' => $buildup[0], 'NAME' => $catalogue_name, 'TITLE' => get_translated_text($SEARCH_CATALOGUE_ENTRIES_CATALOGUES[$catalogue_name]['c_title'])))); } } $GLOBALS['META_DATA'] += array('opensearch_totalresults' => strval($i), 'opensearch_startindex' => strval($start), 'opensearch_itemsperpage' => strval($max)); $SEARCH__CONTENT_BITS = NULL; return $out; }