/** * Standard modular run function. * * @param array A map of parameters. * @return tempcode The result of execution. */ function run($map) { require_code('downloads'); require_css('downloads'); require_lang('downloads'); $category_id = array_key_exists('param', $map) ? intval($map['param']) : db_get_first_id(); $title = array_key_exists('title', $map) ? $map['title'] : do_lang('SECTION_DOWNLOADS'); $order = array_key_exists('order', $map) ? $map['order'] : NULL; $cat_order = array_key_exists('cat_order', $map) ? $map['cat_order'] : NULL; if (!is_null($order) && strpos($order, ' ') === false) { $order .= ' ASC'; } if (!is_null($cat_order) && strpos($cat_order, ' ') === false) { $cat_order .= ' ASC'; } if (!is_null($order)) { if ($order != 't.text_original ASC' && $order != 't.text_original DESC' && $order != 't.text_original ASC' && $order != 't.text_original DESC' && $order != 'file_size ASC' && $order != 'file_size DESC' && $order != 'num_downloads DESC' && $order != 'add_date ASC' && $order != 'add_date DESC') { $order = NULL; } } if (!is_null($cat_order)) { if ($cat_order != 't.text_original ASC' && $cat_order != 't.text_original DESC' && $cat_order != 'add_date ASC' && $order != 'add_date DESC') { $cat_order = NULL; } } $subcategories = get_download_sub_categories($category_id, NULL, NULL, $cat_order); $downloads = get_category_downloads($category_id, $category_id, $order); if ($subcategories->is_empty() && $downloads->is_empty()) { if (has_actual_page_access(NULL, 'cms_downloads', NULL, NULL) && has_submit_permission('mid', get_member(), get_ip_address(), 'cms_downloads')) { $submit_url = build_url(array('page' => 'cms_downloads', 'type' => 'ad', 'cat' => $category_id, 'redirect' => SELF_REDIRECT), get_module_zone('cms_downloads')); } else { $submit_url = new ocp_tempcode(); } return do_template('BLOCK_NO_ENTRIES', array('_GUID' => '1e7be43cf5074821854d64458202b09d', 'HIGH' => false, 'TITLE' => $title, 'MESSAGE' => do_lang_tempcode('NO_ENTRIES'), 'ADD_NAME' => do_lang_tempcode('ADD_DOWNLOAD'), 'SUBMIT_URL' => $submit_url)); } $submit_url = new ocp_tempcode(); if (has_actual_page_access(NULL, 'cms_downloads', NULL, NULL) && has_submit_permission('high', get_member(), get_ip_address(), 'cms_downloads')) { $submit_url = build_url(array('page' => 'cms_downloads', 'type' => 'ad', 'cat' => $category_id, 'redirect' => SELF_REDIRECT), get_module_zone('cms_downloads')); } return do_template('BLOCK_MAIN_DOWNLOAD_CATEGORY', array('_GUID' => '518c63ef968e3b452d3b5cfa2e9505ec', 'SUBMIT_URL' => $submit_url, 'SUBCATEGORIES' => $subcategories, 'DOWNLOADS' => $downloads, 'TITLE' => $title)); }
/** * The UI to view a download category. * * @return tempcode The UI */ function category_screen() { $id = get_param_integer('id', db_get_first_id()); $GLOBALS['FEED_URL'] = find_script('backend') . '?mode=downloads&filter=' . strval($id); $root = get_param_integer('root', db_get_first_id(), true); $rows = $GLOBALS['SITE_DB']->query_select('download_categories', array('*'), array('id' => $id), '', 1); if (!array_key_exists(0, $rows)) { return warn_screen(get_page_title('DOWNLOAD_CATEGORY'), do_lang_tempcode('MISSING_RESOURCE')); } $category = $rows[0]; $description = get_translated_tempcode($category['description']); if (!has_category_access(get_member(), 'downloads', strval($id))) { access_denied('CATEGORY_ACCESS'); } $cat_order = get_param('cat_order', 't.text_original ASC'); $order = get_param('order', NULL); $subcategories = get_download_sub_categories($id, $root, get_zone_name(), $cat_order); $downloads = get_category_downloads($id, $root, $order); $subdownloads = new ocp_tempcode(); require_code('ocfiltering'); $filter_where = ocfilter_to_sqlfragment(strval($id) . '*', 'id', 'download_categories', 'parent_id', 'category_id', 'id'); $all_rows = $GLOBALS['SITE_DB']->query('SELECT d.*,text_original FROM ' . get_table_prefix() . 'download_downloads d LEFT JOIN ' . get_table_prefix() . 'translate t ON ' . db_string_equal_to('language', user_lang()) . ' AND d.name=t.id WHERE ' . $filter_where, 20); shuffle($all_rows); require_code('images'); foreach ($all_rows as $d_row) { if ($GLOBALS['RECORD_LANG_STRINGS_CONTENT'] || is_null($d_row['text_original'])) { $d_row['text_original'] = get_translated_text($d_row['description']); } $d_url = build_url(array('page' => '_SELF', 'type' => 'entry', 'id' => $d_row['id']), '_SELF'); if (addon_installed('galleries')) { $i_rows = $GLOBALS['SITE_DB']->query_select('images', array('url', 'thumb_url', 'id'), array('cat' => 'download_' . strval($d_row['id'])), '', 1, $d_row['default_pic'] - 1); if (array_key_exists(0, $i_rows)) { $thumb_url = ensure_thumbnail($i_rows[0]['url'], $i_rows[0]['thumb_url'], 'galleries', 'images', $i_rows[0]['id']); $subdownloads->attach(hyperlink($d_url, do_image_thumb($thumb_url, get_download_html($d_row, false)))); } } } $title_to_use = get_translated_text($category['category']); if (addon_installed('awards')) { require_code('awards'); $awards = find_awards_for('download_category', strval($id)); } else { $awards = array(); } $title = get_page_title('_DOWNLOAD_CATEGORY', true, array(escape_html($title_to_use)), NULL, $awards); $tree = download_breadcrumbs($id, $root, true, get_zone_name()); if (!$tree->is_empty()) { $tree->attach(do_template('BREADCRUMB_ESCAPED')); } if (has_specific_permission(get_member(), 'open_virtual_roots')) { $url = get_self_url(false, false, array('root' => $id)); $tree->attach(hyperlink($url, escape_html($title_to_use), false, false, do_lang_tempcode('VIRTUAL_ROOT'))); } else { $tree->attach($title_to_use); } seo_meta_load_for('downloads_category', strval($id), $title_to_use); // Sorting $_selectors = array('t.text_original ASC' => 'ALPHABETICAL_FORWARD', 't.text_original DESC' => 'ALPHABETICAL_BACKWARD', 'file_size ASC' => 'SMALLEST_FIRST', 'file_size DESC' => 'LARGEST_FIRST', 'num_downloads DESC' => 'POPULARITY', 'add_date ASC' => 'OLDEST_FIRST', 'add_date DESC' => 'NEWEST_FIRST'); $selectors = new ocp_tempcode(); foreach ($_selectors as $selector_value => $selector_name) { $selected = $order == $selector_value; $selectors->attach(do_template('RESULTS_BROWSER_SORTER', array('_GUID' => 'af660c0ebf014bb296d576b2854aa911', 'SELECTED' => $selected, 'NAME' => do_lang_tempcode($selector_name), 'VALUE' => $selector_value))); } $sort_url = get_self_url(false, false, array('order' => NULL), false, true); $sorting = do_template('RESULTS_BROWSER_SORT', array('_GUID' => 'f4112dcd72d1dd04afbe7277a3871399', 'SORT' => 'order', 'RAND' => uniqid(''), 'URL' => $sort_url, 'SELECTORS' => $selectors)); if (has_actual_page_access(NULL, 'cms_downloads', NULL, array('downloads', strval($id)), 'submit_midrange_content')) { $submit_url = build_url(array('page' => 'cms_downloads', 'type' => 'ad', 'cat' => $id), get_module_zone('cms_downloads')); } else { $submit_url = new ocp_tempcode(); } if (has_actual_page_access(NULL, 'cms_downloads', NULL, array('downloads', strval($id)), 'submit_cat_midrange_content')) { $add_cat_url = build_url(array('page' => 'cms_downloads', 'type' => 'ac', 'parent_id' => $id), get_module_zone('cms_downloads')); } else { $add_cat_url = new ocp_tempcode(); } if (has_actual_page_access(NULL, 'cms_downloads', NULL, array('downloads', strval($id)), 'edit_cat_midrange_content')) { $edit_cat_url = build_url(array('page' => 'cms_downloads', 'type' => '_ec', 'id' => $id), get_module_zone('cms_downloads')); } else { $edit_cat_url = new ocp_tempcode(); } $GLOBALS['META_DATA'] += array('created' => date('Y-m-d', $category['add_date']), 'creator' => '', 'publisher' => '', 'modified' => '', 'type' => 'Download category', 'title' => $title_to_use, 'identifier' => '_SEARCH:downloads:misc:' . strval($id), 'description' => get_translated_text($category['description'])); $rep_image = $category['rep_image']; if ($rep_image != '') { $GLOBALS['META_DATA'] += array('image' => (url_is_local($rep_image) ? get_custom_base_url() . '/' : '') . $rep_image); } breadcrumb_add_segment($tree); return do_template('DOWNLOAD_CATEGORY_SCREEN', array('_GUID' => 'ebb3c8708695f6a30dbd4a03f8632047', 'ID' => strval($id), 'SUBDOWNLOADS' => $subdownloads, 'TAGS' => get_loaded_tags('download_categories'), 'TITLE' => $title, 'SUBMIT_URL' => $submit_url, 'ADD_CAT_URL' => $add_cat_url, 'EDIT_CAT_URL' => $edit_cat_url, 'DESCRIPTION' => $description, 'SUBCATEGORIES' => $subcategories, 'DOWNLOADS' => $downloads, 'SORTING' => $sorting)); }