function __construct($args = '') { global $bp; $defaults = bp_album_default_query_args(); $r = apply_filters('bp_album_template_args', wp_parse_args($args, $defaults)); extract($r, EXTR_SKIP); $this->pag_page = $page; $this->pag_per_page = $per_page; $this->owner_id = $owner_id; $this->privacy = $privacy; $total = bp_album_get_picture_count($r); $this->pictures = bp_album_get_pictures($r); if (!$max || $max >= $total) { $this->total_picture_count = $total; } else { $this->total_picture_count = $max; } if (!$max || $max >= count($this->pictures)) { $this->picture_count = count($this->pictures); } else { $this->picture_count = $max; } $this->pag_links_global = paginate_links(array('base' => get_permalink() . '%#%', 'format' => '?page=%#%', 'total' => ceil((int) $this->total_picture_count / (int) $this->pag_per_page), 'current' => (int) $this->pag_page, 'prev_text' => '←', 'next_text' => '→', 'mid_size' => 1)); //$this->pag_links = paginate_links( array( //'base' => $bp->displayed_user->domain . $bp->album->slug .'/'. $bp->album->pictures_slug .'/%_%', //'format' => '%#%', //'total' => ceil( (int) $this->total_picture_count / (int) $this->pag_per_page ), //'current' => (int) $this->pag_page, //'prev_text' => '←', //'next_text' => '→', //'mid_size' => 1 //)); if ($this->picture_count) { $this->picture = $this->pictures[0]; } }
/** * query_pictures() * * @version 0.1.8.12 * @since 0.1.8.0 */ public static function query_pictures($args = '', $count = false, $adjacent = false) { global $bp, $wpdb; $defaults = bp_album_default_query_args(); $r = apply_filters('bp_album_query_args', wp_parse_args($args, $defaults)); extract($r, EXTR_SKIP); $where = "1 = 1"; if ($owner_id) { $where .= $wpdb->prepare(' AND owner_id = %d', $owner_id); } if ($id && $adjacent != 'next' && $adjacent != 'prev' && !$count) { $where .= $wpdb->prepare(' AND id = %d', $id); } switch ($privacy) { case 'public': case 0 === $privacy: case '0': $where .= " AND privacy = 0"; break; case 'members': case 2: if (bp_album_privacy_level_permitted() >= 2 || $priv_override) { $where .= " AND privacy = 2"; } else { return $count ? 0 : array(); } break; case 'friends': case 4: if (bp_album_privacy_level_permitted() >= 4 || $priv_override) { $where .= " AND privacy = 4"; } else { return $count ? 0 : array(); } break; case 'private': case 6: if (bp_album_privacy_level_permitted() >= 6 || $priv_override) { $where .= " AND privacy = 6"; } else { return $count ? 0 : array(); } break; case 'admin': case 10: if (bp_album_privacy_level_permitted() >= 10 || $priv_override) { $where .= " AND privacy = 10"; } else { return $count ? 0 : array(); } break; case 'all': if ($priv_override) { break; } case 'permitted': default: $where .= " AND privacy <= " . bp_album_privacy_level_permitted(); break; } if (!$count) { $order = ""; $limits = ""; if ($adjacent == 'next') { $where .= $wpdb->prepare(' AND id > %d', $id); $order = "ORDER BY id ASC"; $limits = "LIMIT 0, 1"; } elseif ($adjacent == 'prev') { $where .= $wpdb->prepare(' AND id < %d', $id); $order = "ORDER BY id DESC"; $limits = "LIMIT 0, 1"; } elseif (!$id) { if ($orderkey != 'id' && $orderkey != 'user_id' && $orderkey != 'status' && $orderkey != 'random') { $orderkey = 'id'; } if ($ordersort != 'ASC' && $ordersort != 'DESC') { $ordersort = 'DESC'; } if ($orderkey == 'random') { $order = "ORDER BY RAND() {$ordersort}"; } else { $order = "ORDER BY {$orderkey} {$ordersort}"; } if ($per_page) { if (empty($offset)) { $limits = $wpdb->prepare('LIMIT %d, %d', ($page - 1) * $per_page, $per_page); } else { // We're ignoring $page and using 'offset' $limits = $wpdb->prepare('LIMIT %d, %d', $offset, $per_page); } } } $sql = $wpdb->prepare("SELECT * FROM {$bp->album->table_name} WHERE {$where} {$order} {$limits}", null); $result = $wpdb->get_results($sql); } else { $select = ''; $group = ''; if ($groupby == 'privacy') { $select = 'privacy,'; $group = 'GROUP BY privacy'; } $sql = $wpdb->prepare("SELECT DISTINCT {$select} COUNT(id) AS count FROM {$bp->album->table_name} WHERE {$where} {$group}", null); if ($group) { $result = $wpdb->get_results($sql); } else { $result = $wpdb->get_var($sql); } } return $result; }