示例#1
0
 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;
 }