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 (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 = '';
// 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($_GET['dlsearch'])) $dlsearch = $_GET['dlsearch'];
$page .= '
';
if (isset($dlsearch) && !empty($dlsearch)) {
##########################################################################################################################################################################################
## Search View
##########################################################################################################################################################################################
$page .= '
'.$search_results_text.'"'.$_GET['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 .= '
';
foreach($downloads as $d) {
$page .= ''.do_shortcode('[download id="'.$d->id.'" format="'.htmlspecialchars(str_replace('{url}',wp_dlmp_append_url('did=').'{id}',$format)).'"]').' ';
}
$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.' ';
$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 = do_shortcode(wptexturize(wpautop($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 .= '
'.$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 .= '
';
}
// 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 .= '
'.$popular_text.' ';
// Get top downloads
$downloads = get_downloads('limit='.$pop_count.'&orderby=hits&order=desc&exclude='.implode(',',$exclude_array).'');
if (!empty($downloads)) {
$alt = -1;
foreach($downloads as $d) {
if ($alt==1) $alttext = 'alternate'; else $alttext = '';
$date = date("jS M Y", strtotime($d->date));
if ($d->version) $version = __('Version',"wp-download_monitor").' '.$d->version; else $version = '';
if ($d->desc) $desc = do_shortcode(wptexturize(wpautop(current(explode('', $d->desc))))); else $desc = "";
$thumbnail_url = $d->thumbnail;
if (!$thumbnail_url) $thumbnail_url = $wp_dlmp_root.'thumbnail.gif';
$page .= 'hits.' '.__('times',"wp-download_monitor").'" > '.$d->title.' ';
$alt = $alt*-1;
}
}
$page .= ' ';
// End top
}
// Tags View
if ($show_tags>0) {
$page .= '
'.$tags_widget_text.' ';
// Get tags
$tags = $download_taxonomies->used_tags;
if (!empty($tags)) {
$sized_tags = array();
foreach ($tags as $tag) {
$sized_tags[$tag->name] = $tag->size;
}
$max = max($sized_tags);
$min = min($sized_tags);
$div = $max-$min;
if (!$div) $div = 1;
$multiplier = (200-80)/($div);
asort($sized_tags);
$sized_tags = array_reverse($sized_tags);
$sized_tags = array_slice($sized_tags, 0, $show_tags);
ksort($sized_tags);
foreach ($sized_tags as $tag=>$count) {
$size = 80 + (($max-($max-($count-$min)))*$multiplier);
$page .= ''.$tag.' ';
}
}
$page .= ' ';
}
// 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=hits&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=hits&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'
), $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);
return $output;
}
add_shortcode('download_page', 'wp_dlmp_shortcode_download_page');
?>