'0', 'format' => '0', 'autop' => false ), $atts)); $output = ''; $cached_code = wp_cache_get('download_'.$id.'_'.$format); if($cached_code == false) { global $wpdb,$wp_dlm_root,$wp_dlm_db,$wp_dlm_db_taxonomies, $def_format, $dlm_url, $downloadurl, $downloadtype, $wp_dlm_db_meta, $download_data, $download_data_array; if ($id>0) { // Handle Formats global $download_formats_names_array; $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); } } if (empty($format) || $format=='0') { $format = '{title} ({hits})'; } $format = str_replace('\\"',"'",$format); // Get download info if (isset($download_data_array[$id])) $d = $download_data_array[$id]; else $d = ''; if ($d) { $this_download = new downloadable_file($d, $format); $fpatts = $this_download->patts; $fsubs = $this_download->subs; $output = str_replace( $fpatts , $fsubs , $format ); } else $output = '[Download not found]'; } else $output = '[Download id not defined]'; wp_cache_set('download_'.$id.'_'.$format, $output); } else { $output = $cached_code; } if ($autop && $autop != "false") return wpautop(do_shortcode($output)); return do_shortcode($output); } add_shortcode('download', 'wp_dlm_shortcode_download'); ################################################################################ // SHORTCODE FOR MULTIPLE DOWNLOADS ################################################################################ function wp_dlm_shortcode_downloads( $atts ) { extract(shortcode_atts(array( 'query' => 'limit=5&orderby=rand', 'format' => '0', 'autop' => false, 'wrap' => 'ul', 'before' => '
  • ', 'after' => '
  • ' ), $atts)); $query = str_replace('&','&', $query); global $wpdb,$wp_dlm_root,$wp_dlm_db,$wp_dlm_db_taxonomies, $def_format, $wp_dlm_db_meta; $dl = get_downloads($query); $output = ''; if (!empty($dl)) { // Handle Formats global $download_formats_names_array; $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); } } if (empty($format) || $format=='0') { $format = '{title} ({hits})'; } $format = str_replace('\\"',"'",$format); foreach ($dl as $d) { $this_download = new downloadable_file($d, $format); $fpatts = $this_download->patts; $fsubs = $this_download->subs; $output .= html_entity_decode($before).str_replace( $fpatts , $fsubs , $format ).html_entity_decode($after); } } else $output = '['.__("No Downloads found","wp-download_monitor").']'; if ($wrap=='ul') { $output = ''; } if ($autop) return wpautop($output); return $output; } add_shortcode('downloads', 'wp_dlm_shortcode_downloads'); ################################################################################ // Main template tag to get multiple downloads ################################################################################ function get_downloads($args = null) { $defaults = array( 'limit' => '', 'offset' => '0', 'orderby' => 'id', 'meta_name' => '', 'vip' => '0', 'category' => '', 'tags' => '', 'order' => 'asc', 'digforcats' => 'true', 'exclude' => '' ); $args = str_replace('&','&',$args); $r = wp_parse_args( $args, $defaults ); global $wpdb,$wp_dlm_root, $wp_dlm_db, $wp_dlm_db_taxonomies, $wp_dlm_db_relationships, $wp_dlm_db_meta, $dlm_url, $downloadurl, $downloadtype, $download_taxonomies; $where = array(); $join = ''; $select = ''; $limitandoffset = ''; // Handle $exclude $exclude_array = array(); if ( $r['exclude'] ) { $exclude_unclean = explode(',',$r['exclude']); foreach ($exclude_unclean as $e) { $e = trim($e); if (is_numeric($e)) $exclude_array[] = $e; } } if (sizeof($exclude_array) > 0) { $where[] = ' '.$wp_dlm_db.'.id NOT IN ('.implode(',',$exclude_array).') '; } if ( empty( $r['limit'] ) || !is_numeric($r['limit']) ) $r['limit'] = ''; if ( !empty( $r['limit'] ) && (empty($r['offset']) || !is_numeric($r['offset'])) ) $r['offset'] = 0; elseif ( empty( $r['limit'] )) $r['offset'] = ''; if ( !empty( $r['limit'] ) ) $limitandoffset = ' LIMIT '.$r['offset'].', '.$r['limit'].' '; if ( ! empty($r['category']) && $r['category']!='none' ) { $categories = explode(',',$r['category']); $the_cats = array(); // Traverse through categories to get sub-cats foreach ($categories as $cat) { if ($r['digforcats']) $the_cats = array_merge($the_cats, $download_taxonomies->categories[$cat]->get_decendents()); $the_cats[] = $cat; } $categories = implode(',',$the_cats); $where[] = ' '.$wp_dlm_db.'.id IN ( SELECT download_id FROM '.$wp_dlm_db_relationships.' WHERE taxonomy_id IN ('.$categories.') ) '; } elseif ($r['category']=='none') { $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" ) '; } else $category = ''; if ( ! empty($r['tags']) ) { $tags = explode(',', $r['tags']); $tags = array_map('wrap_tags', $tags); $where[] = ' '.$wp_dlm_db.'.id 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.'.name IN ('.implode(',',$tags).') ) '; } else $tags = ''; if ( isset($vip) && $vip==1 ) { global $user_ID; // If not logged in dont show member only files if (!isset($user_ID)) { $where[] = ' members = 0 '; } } if ( ! empty($r['orderby']) ) { // Can order by date/postDate, filename, title, id, hits, random $r['orderby'] = strtolower($r['orderby']); switch ($r['orderby']) { case 'postdate' : case 'date' : $orderby = 'postDate'; break; case 'filename' : $orderby = 'filename'; break; case 'title' : $orderby = 'title'; break; case 'hits' : $orderby = 'hits'; break; case 'meta' : $orderby = 'meta'; $join = " LEFT JOIN $wp_dlm_db_meta ON $wp_dlm_db.id = $wp_dlm_db_meta.download_id "; $select = ", $wp_dlm_db_meta.meta_value as meta"; $where[] = ' meta_name = "'.$r['meta_name'].'"'; break; case 'rand' : case 'random' : $orderby = 'RAND()'; break; case 'id' : default : $orderby = $wp_dlm_db.'.id'; break; } } if (strtolower($r['order'])!='desc' && strtolower($r['order'])!='asc') $r['order']='desc'; // Process where clause if (sizeof($where)>0) $where = ' WHERE '.implode(' AND ', $where); else $where = ''; $downloads = $wpdb->get_results( "SELECT $wp_dlm_db.* ".$select." FROM $wp_dlm_db ".$join." ".$where." ORDER BY $orderby ".$r['order']." ".$limitandoffset.";" ); $return_downloads = array(); // Process download variables foreach ($downloads as $dl) { $d = new downloadable_file($dl); $return_downloads[] = $d; } return $return_downloads; } ?>