0) $exclude_query = ' AND '.$wp_dlm_db.'.id NOT IN ('.implode(',',$exclude_array).')'; else { $exclude_query=""; $exclude_array[] = 0; } // Handle $exclude_cat $exclude_cat_array = array(); if ($exclude_cat) { $exclude_cat_unclean = explode(',',$exclude_cat); foreach ($exclude_cat_unclean as $e) { $e = trim($e); if (is_numeric($e)) $exclude_cat_array[] = $e; } } $category_array = array(); if (is_object($download_taxonomies) && sizeof($download_taxonomies->categories)>0) { foreach ($download_taxonomies->categories as $category) { if (!in_array($category->id, $exclude_cat_array)) { $category_array[$category->id] = $category; } } } // Find more IDS to exlude if (sizeof($exclude_cat_array) > 0) { $results = $wpdb->get_results(" SELECT $wp_dlm_db.id FROM $wp_dlm_db LEFT JOIN $wp_dlm_db_relationships ON( $wp_dlm_db.id = $wp_dlm_db_relationships.download_id ) LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE $wp_dlm_db_taxonomies.id IN (".implode(',',$exclude_cat_array).") AND $wp_dlm_db_taxonomies.taxonomy = 'category';"); $new_exclude_array = array(); foreach ($results as $r) { $new_exclude_array[] = $r->id; } $exclude_array = array_merge($exclude_array,$new_exclude_array); } if (sizeof($exclude_array) > 0) $exclude_query = ' AND '.$wp_dlm_db.'.id NOT IN ('.implode(',',$exclude_array).')'; else $exclude_query=""; // Handle Formats global $download_formats_names_array, $def_format; $format = trim($format); if (!$format && $def_format>0) { $format = wp_dlm_get_custom_format($def_format); } elseif ($format>0 && is_numeric($format) ) { $format = wp_dlm_get_custom_format($format); } else { if (isset($download_formats_names_array) && is_array($download_formats_names_array) && in_array($format,$download_formats_names_array)) { $format = wp_dlm_get_custom_format_by_name($format); } else { $format = html_entity_decode($format); } } // Default is none set/no defaults if (empty($format) || $format=='0') { $format = '{title} ({hits})'; } wp_dlm_magic(); // DOWNLOAD PAGE DATA FUNCTIONS if (!function_exists('wp_dlmp_append_url')) { function wp_dlmp_append_url( $append ) { global $post; $querystring = explode('?', get_permalink( $post->ID )); $add = '?'; if (isset($querystring[1])) { $add .= $querystring[1].'&'; } $add .= $append; return $querystring[0].$add; } } if (!function_exists('get_chain')) { function get_chain($cat, $chain = array()) { global $download_taxonomies; $chain[] = '« '.$cat->name.''; if ($cat->parent>0) $chain = get_chain($download_taxonomies->categories[$cat->parent], $chain); return $chain; } function no_chain($chain = array()) { return $chain; } } // START PAGE OUTPUT $page = ''; $fields = ''; // Ensure it works with default permalinks global $post; if ($post && is_page()) $fields = ''; if ($post && is_single()) $fields = ''; if (isset($_GET['lang'])) $fields .= ''; $dlsearch = ''; if (isset($_REQUEST['dlsearch'])) $dlsearch = $_REQUEST['dlsearch']; $page .= '
'; if (isset($dlsearch) && !empty($dlsearch)) { ########################################################################################################################################################################################## ## Search View ########################################################################################################################################################################################## $page .= ''.$search_results_text.'"'.$dlsearch.'" « '.$main_page_back_text.''; $orderby = ''; if (!isset($_GET['sortby'])) $_GET['sortby'] = $default_order; // Sorting Options switch (trim(strtolower($_GET['sortby']))) { case 'hits' : $sort_hits = 'class="active"'; $sort_date = ''; $sort_title = ''; $orderby = 'ORDER BY '.$wp_dlm_db.'.hits DESC'; break; case 'date' : $sort_date = 'class="active"'; $sort_hits = ''; $sort_title = ''; $orderby = 'ORDER BY '.$wp_dlm_db.'.postDate DESC'; break; default : $sort_title = 'class="active"'; $sort_date = ''; $sort_hits = ''; $orderby = 'ORDER BY '.$wp_dlm_db.'.title ASC'; break; } $sort_options = array(''.__('Title','wp-download_monitor').'', ''.__('Hits','wp-download_monitor').'', ''.__('Date','wp-download_monitor').''); $page .= '

'.$sort_text.' '; $page .= implode(' | ', $sort_options).'

'; // End Sorting Options // Pagination Calc $paged_query = ""; if(!isset($_GET['dlpage'])) $dlpage = 1; else $dlpage = $_GET['dlpage']; $from = (($dlpage * $per_page) - $per_page); $paged_query = 'LIMIT '.$from.','.$per_page.''; $total = $wpdb->get_var("SELECT COUNT(DISTINCT $wp_dlm_db.id) FROM $wp_dlm_db LEFT JOIN $wp_dlm_db_relationships ON( $wp_dlm_db.id = $wp_dlm_db_relationships.download_id ) LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE ( title LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR filename LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR $wp_dlm_db_taxonomies.name LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR file_description LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' ) AND $wp_dlm_db.id NOT IN (".implode(',',$exclude_array).") ;"); $total_pages = ceil($total / $per_page); // End Pagination Calc $downloads = $wpdb->get_results( "SELECT DISTINCT $wp_dlm_db.* FROM $wp_dlm_db LEFT JOIN $wp_dlm_db_relationships ON( $wp_dlm_db.id = $wp_dlm_db_relationships.download_id ) LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE ( title LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR filename LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR $wp_dlm_db_taxonomies.name LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' OR file_description LIKE '%".$wpdb->escape($_REQUEST['dlsearch'])."%' ) AND $wp_dlm_db.id NOT IN (".implode(',',$exclude_array).") $orderby $paged_query;" ); if (!empty($downloads)) { $page .= ''; // Show Pagination if ($total_pages>1) { $page .= ''; } // End show pagination } else $page .= '

'.$nonefound.'

'; } elseif (isset($_GET['category'])) { ########################################################################################################################################################################################## ## Single Category view ########################################################################################################################################################################################## $category = $wpdb->escape(trim(urldecode(strtolower($_GET['category'])))); $downloads = ""; $total_pages = ""; $dlpage = ""; if (($category==strtolower($uncategorized) || $category==0) && $show_uncategorized) { $count = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db.id) FROM $wp_dlm_db WHERE $wp_dlm_db.id NOT IN ( SELECT download_id FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON $wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id WHERE $wp_dlm_db_taxonomies.taxonomy = 'category' ) $exclude_query; "); $page .= ''.ucwords($uncategorized).' ('.$count.') « '.$main_page_back_text.''; $orderby = ''; if (!isset($_GET['sortby'])) $_GET['sortby'] = $default_order; // Sorting Options switch (trim(strtolower($_GET['sortby']))) { case 'hits' : $sort_hits = 'class="active"'; $orderby = 'hits'; $order = 'desc'; break; case 'date' : $sort_date = 'class="active"'; $orderby = 'postdate'; $order = 'desc'; break; default : $sort_title = 'class="active"'; $orderby = 'title'; $order = 'asc'; break; } $sort_options = array(''.__('Title','wp-download_monitor').'', ''.__('Hits','wp-download_monitor').'', ''.__('Date','wp-download_monitor').''); $page .= '

'.$sort_text.' '; $page .= implode(' | ', $sort_options).'

'; // End Sorting Options // Pagination Calc if(!isset($_GET['dlpage'])) $dlpage = 1; else $dlpage = $_GET['dlpage']; $from = (($dlpage * $per_page) - $per_page); $total_pages = ceil($count / $per_page); // End Pagination Calc $page .= do_shortcode('[downloads query="exclude='.implode(',',$exclude_array).'&limit='.$per_page.'&orderby='.$orderby.'&order='.$order.'&offset='.$from.'&category=none" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}',$format)).'"]'); } else { if ($category_array[$category]) $cat = $category_array[$category]; if ($cat->id >0) { $chain = $download_taxonomies->do_something_to_cat_parents($cat->id, 'get_chain', 'no_chain'); if (is_array($chain) && sizeof($chain)>0) $cat_breadcrumb = implode(' ', $chain); // Count = children too $in_cats = $cat->decendents; $in_cats[] = $cat->id; $count = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db_relationships.download_id) FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE $wp_dlm_db_taxonomies.id IN (".implode(',',$in_cats).") AND $wp_dlm_db_relationships.download_id NOT IN (".implode(',',$exclude_array).") AND $wp_dlm_db_taxonomies.taxonomy = 'category'; "); if (!isset($cat_breadcrumb)) $cat_breadcrumb = ''; $page .= ''.wptexturize($cat->name).' ('.$count.') '.$cat_breadcrumb.' « '.$main_page_back_text.''; if (sizeof($cat->decendents) > 0) { $subcats = array(); foreach ($cat->direct_decendents as $child_cat) { if ($category_array[$child_cat]->name) { $sub_in_cats = $category_array[$child_cat]->decendents; $sub_in_cats[] = $category_array[$child_cat]->id; $scount = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db_relationships.download_id) FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE $wp_dlm_db_taxonomies.id IN (".implode(',',$sub_in_cats).") AND $wp_dlm_db_relationships.download_id NOT IN (".implode(',',$exclude_array).") AND $wp_dlm_db_taxonomies.taxonomy = 'category'; "); if ($scount>0) $subcats[] = wptexturize($category_array[$child_cat]->name).' '.'('.$scount.')'; } } if (sizeof($subcats)>0) : $page .= '

'.$subcat_text.' '; sort($subcats); $page .= implode(' | ', $subcats).'

'; endif; } $orderby = ''; if (!isset($_GET['sortby'])) $_GET['sortby'] = $default_order; // Sorting Options switch (trim(strtolower($_GET['sortby']))) { case 'hits' : $sort_hits = 'class="active"'; $sort_date = ''; $sort_title = ''; $orderby = 'hits'; $order = 'desc'; break; case 'date' : $sort_date = 'class="active"'; $sort_hits = ''; $sort_title = ''; $orderby = 'postdate'; $order = 'desc'; break; default : $sort_title = 'class="active"'; $sort_hits = ''; $sort_date = ''; $orderby = 'title'; $order = 'asc'; break; } $sort_options = array(''.__('Title','wp-download_monitor').'', ''.__('Hits','wp-download_monitor').'', ''.__('Date','wp-download_monitor').''); $page .= '

'.$sort_text.' '; $page .= implode(' | ', $sort_options).'

'; // End Sorting Options // Pagination Calc if(!isset($_GET['dlpage'])) $dlpage = 1; else $dlpage = $_GET['dlpage']; $from = (($dlpage * $per_page) - $per_page); $paged_query = 'LIMIT '.$from.','.$per_page.''; $total_pages = ceil($count / $per_page); // End Pagination Calc $page .= do_shortcode('[downloads query="exclude='.implode(',',$exclude_array).'&limit='.$per_page.'&orderby='.$orderby.'&order='.$order.'&offset='.$from.'&category='.$cat->id.'" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}',$format)).'"]'); } } // Show Pagination if ($total_pages>1) { $page .= ''; } // End show pagination } elseif (isset($_GET['dltag'])) { ########################################################################################################################################################################################## ## Tag View ########################################################################################################################################################################################## $tag = urldecode(strtolower(trim($_GET['dltag']))); if ($tag) { $page .= ''.$tags_text.' '.$tag.' « '.$main_page_back_text.''; $orderby = ''; if (!isset($_GET['sortby'])) $_GET['sortby'] = $default_order; // Sorting Options switch (trim(strtolower($_GET['sortby']))) { case 'hits' : $sort_hits = 'class="active"'; $sort_date = ''; $sort_title = ''; $orderby = 'hits'; $order = 'desc'; break; case 'date' : $sort_date = 'class="active"'; $sort_hits = ''; $sort_title = ''; $orderby = 'postdate'; $order = 'desc'; break; default : $sort_title = 'class="active"'; $sort_date = ''; $sort_hits = ''; $orderby = 'title'; $order = 'asc'; break; } $sort_options = array(''.__('Title','wp-download_monitor').'', ''.__('Hits','wp-download_monitor').'', ''.__('Date','wp-download_monitor').''); $page .= '

'.$sort_text.' '; $page .= implode(' | ', $sort_options).'

'; // End Sorting Options // Pagination Calc if(!isset($_GET['dlpage'])) $dlpage = 1; else $dlpage = $_GET['dlpage']; $from = (($dlpage * $per_page) - $per_page); $count = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db_relationships.download_id) FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE $wp_dlm_db_taxonomies.name = '$tag' AND $wp_dlm_db_relationships.download_id NOT IN (".implode(',',$exclude_array).") AND $wp_dlm_db_taxonomies.taxonomy = 'tag'; "); $total_pages = ceil($count / $per_page); // End Pagination Calc $page .= do_shortcode('[downloads query="exclude='.implode(',',$exclude_array).'&limit='.$per_page.'&orderby='.$orderby.'&order='.$order.'&offset='.$from.'&tags='.$tag.'" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}',$format)).'"]'); // Show Pagination if ($total_pages>1) { $page .= ''; } // End show pagination } } elseif (isset($_GET['did']) && is_numeric($_GET['did']) && $_GET['did']>0) { ########################################################################################################################################################################################## ## Single Download View ########################################################################################################################################################################################## $d = $wpdb->get_row( "SELECT * FROM $wp_dlm_db WHERE $wp_dlm_db.id = ".$wpdb->escape($_GET['did'])." $exclude_query LIMIT 1;" ); if (!empty($d)) { $download = new downloadable_file($d); if ($download->category) $catname = trim($download->category); else $catname = ucwords($uncategorized); $date = date("jS M Y", strtotime($download->date)); if ($download->dlversion) $version = __('Version',"wp-download_monitor").' '.$download->dlversion; else $version = ''; if ($download->file_description) $desc = apply_filters('download_description', $download->file_description); else $desc = ""; $thumbnail_url = $download->thumbnail; // Gen category breadcrumb if ($download->category_id) { $chain[] = '« '.$download_taxonomies->categories[$download->category_id]->name.''; $chain = $download_taxonomies->do_something_to_cat_parents($download->category_id, 'get_chain', 'no_chain', $chain); $cat_breadcrumb = implode(' ', $chain); } else $cat_breadcrumb = '« '.ucwords($uncategorized).''; $page .= '

'.strip_tags($download->title).'

'; if (!isset($download->meta['hide_download_button'])) $page .= '

id.'" format="{url}"]').'" class="download-button">'.$dbutton_text.'

'; // Handle post_id field if (isset($download->meta['post_id']) && is_numeric($download->meta['post_id'])) { $page .= '

'.$readmore_text.'

'; } else { $page .= ' '."\n"; } // Special additional content meta field if (isset($download->meta['side_content'])) { $extra = $download->meta['side_content']; if ($extra) $page .= '
'.$extra.'
'; } $page .= '
'.$download->title.' '.$cat_breadcrumb.' « '.$main_page_back_text.' '; // Show Meta Fields + download data $custom_field_data = array(); if ($download->dlversion) { $custom_field_data[] = array($version_text, $download->dlversion); } $custom_field_data[] = array($posted_text, date($posted_text2, strtotime($download->postDate))); if (!isset($download->meta['hide_hits'])) { if ($download->hits==1) $custom_field_data[] = array($hits_text, $download->hits.$hits_text2); else $custom_field_data[] = array($hits_text, $download->hits.$hits_text2_p); } if ($download->categories) { $names = array(); foreach ($download->categories as $cat) { $names[] = ''.$cat['name'].''; } $custom_field_data[] = array($category_text, implode(', ', $names)); } if ($download->tags) { $names = array(); foreach ($download->tags as $tag) { $names[] = ''.$tag['name'].''; } $custom_field_data[] = array($single_tags_text, implode(', ', $names)); } if (isset($download->meta['include_fields'])) { $show_custom_fields = $download->meta['include_fields']; if ($show_custom_fields) $show_custom_fields = explode(',',$show_custom_fields); if (sizeof($show_custom_fields)>0) { // Get each custom field's value ready to output foreach ($show_custom_fields as $field) { $value = $download->meta[$field]; if (!empty($value)) { $custom_field_data[] = array(ucfirst(str_replace('-',' ',$field)), $value); } } } } if (sizeof($custom_field_data)>0) { // Output $page .= ''; foreach($custom_field_data as $field) { $page .= ''; } $page .= '
AttributeValue
'.$field[0].''.do_shortcode($field[1]).'
'; } // Show Description if ($desc) { $page .= '
'.$desc_heading.' '.$desc.'
'; } $page .= '
'; /* Close main-section */ $page .= '
'; /* Close download-info */ } else $page .= '

'.$notfound.'

'; } else { ########################################################################################################################################################################################## ## Front View ########################################################################################################################################################################################## if ($pop_count>0) { // Front view $page .= ''; // End top } // Tags View if ($show_tags>0) { $page .= '
'.$tags_widget_text.'
'; } // End Tags // Begin cats $page .= '
'; // Show categories if (sizeof($category_array)>0) { $alt = -1; foreach ($category_array as $cat) { if ($cat->parent>0) continue; // Count = children too $in_cats = $cat->decendents; $in_cats[] = $cat->id; $count = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db_relationships.download_id) FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON($wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id) WHERE $wp_dlm_db_taxonomies.id IN (".implode(',',$in_cats).") AND $wp_dlm_db_relationships.download_id NOT IN (".implode(',',$exclude_array).") AND $wp_dlm_db_taxonomies.taxonomy = 'category'; "); if ($count==0) continue; if ($alt==1) $alttext = 'alternate'; else $alttext = ''; $page .= '
'; $page .= ''.wptexturize($cat->name).' ('.$count.') »'; if ($pop_cat_count>0) { $page .= '
    '; $page .= do_shortcode('[downloads query="exclude='.implode(',',$exclude_array).'&limit='.$pop_cat_count.'&orderby='.$front_order.'&order=desc&category='.$cat->id.'" wrap="" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}',$format)).'"]'); $page .= '
'; } $page .= '
'; $alt = $alt*-1; } // $show_uncategorized if ($show_uncategorized) { if ($alt==1) $alttext = 'alternate'; else $alttext = ''; $count = $wpdb->get_var(" SELECT COUNT(DISTINCT $wp_dlm_db.id) FROM $wp_dlm_db WHERE $wp_dlm_db.id NOT IN ( SELECT download_id FROM $wp_dlm_db_relationships LEFT JOIN $wp_dlm_db_taxonomies ON $wp_dlm_db_relationships.taxonomy_id = $wp_dlm_db_taxonomies.id WHERE $wp_dlm_db_taxonomies.taxonomy = 'category' ) $exclude_query; "); if ($count>0) { $page .= '
'; $page .= ''.ucwords($uncategorized).' ('.$count.') »'; if ($pop_cat_count>0) { $page .= '
    '; $page .= do_shortcode('[downloads query="exclude='.implode(',',$exclude_array).'&limit='.$pop_cat_count.'&orderby='.$front_order.'&order=desc&category=none" wrap="" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}', $format)).'"]'); $page .= '
'; } $page .= '
'; $alt = $alt*-1; } } } $page .= '
'; // End cats } $page .= '
'; $page .= "\n"; return $page; } } ################################################################################ // SHORTCODE ################################################################################ function wp_dlmp_shortcode_download_page( $atts ) { extract(shortcode_atts(array( 'base_heading_level' => '3', 'pop_count' => '4', 'pop_cat_count' => '4', 'show_uncategorized' => '1', 'per_page' => '20', 'format' => '', 'exclude' => '', 'exclude_cat' => '', 'show_tags' => '0', 'default_order' => 'title', 'front_order' => 'hits' ), $atts)); $output = wp_dlmp_output($base_heading_level, $pop_count, $pop_cat_count, $show_uncategorized, $per_page, $format, $exclude, $exclude_cat, $show_tags, $default_order, $front_order); return $output; } add_shortcode('download_page', 'wp_dlmp_shortcode_download_page'); ?>