/**
  * 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));
 }
Beispiel #2
0
 /**
  * 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));
 }