コード例 #1
0
 /**
  * Retrieve a set of blog-user associations.
  *
  * @param string      $type              The order in which results should be returned.
  *                                       'active', 'alphabetical', 'newest', or 'random'.
  * @param int|bool    $limit             Optional. The maximum records to return.
  *                                       Default: false.
  * @param int|bool    $page              Optional. The page of records to return.
  *                                       Default: false (unlimited results).
  * @param int         $user_id           Optional. ID of the user whose blogs are being
  *                                       retrieved. Default: 0.
  * @param string|bool $search_terms      Optional. Search by text stored in
  *                                       blogmeta (such as the blog name). Default: false.
  * @param bool        $update_meta_cache Whether to pre-fetch metadata for
  *                                       blogs. Default: true.
  * @param array|bool  $include_blog_ids  Array of blog IDs to include.
  * @return array Multidimensional results array, structured as follows:
  *               'blogs' - Array of located blog objects
  *               'total' - A count of the total blogs matching the filter params
  */
 public static function get($type, $limit = false, $page = false, $user_id = 0, $search_terms = false, $update_meta_cache = true, $include_blog_ids = false)
 {
     global $wpdb;
     $bp = buddypress();
     if (!is_user_logged_in() || !bp_current_user_can('bp_moderate') && $user_id != bp_loggedin_user_id()) {
         $hidden_sql = "AND wb.public = 1";
     } else {
         $hidden_sql = '';
     }
     $pag_sql = $limit && $page ? $wpdb->prepare(" LIMIT %d, %d", intval(($page - 1) * $limit), intval($limit)) : '';
     $user_sql = !empty($user_id) ? $wpdb->prepare(" AND b.user_id = %d", $user_id) : '';
     switch ($type) {
         case 'active':
         default:
             $order_sql = "ORDER BY bm.meta_value DESC";
             break;
         case 'alphabetical':
             $order_sql = "ORDER BY bm_name.meta_value ASC";
             break;
         case 'newest':
             $order_sql = "ORDER BY wb.registered DESC";
             break;
         case 'random':
             $order_sql = "ORDER BY RAND()";
             break;
     }
     $include_sql = '';
     $include_blog_ids = array_filter(wp_parse_id_list($include_blog_ids));
     if (!empty($include_blog_ids)) {
         $blog_ids_sql = implode(',', $include_blog_ids);
         $include_sql = " AND b.blog_id IN ({$blog_ids_sql})";
     }
     if (!empty($search_terms)) {
         $search_terms_like = '%' . bp_esc_like($search_terms) . '%';
         $search_terms_sql = $wpdb->prepare('AND (bm_name.meta_value LIKE %s OR bm_description.meta_value LIKE %s)', $search_terms_like, $search_terms_like);
     } else {
         $search_terms_sql = '';
     }
     $paged_blogs = $wpdb->get_results("\n\t\t\tSELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm_name.meta_value as name\n\t\t\tFROM\n\t\t\t  {$bp->blogs->table_name} b\n\t\t\t  LEFT JOIN {$bp->blogs->table_name_blogmeta} bm ON (b.blog_id = bm.blog_id)\n\t\t\t  LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_name ON (b.blog_id = bm_name.blog_id)\n\t\t\t  LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_description ON (b.blog_id = bm_description.blog_id)\n\t\t\t  LEFT JOIN {$wpdb->base_prefix}blogs wb ON (b.blog_id = wb.blog_id)\n\t\t\t  LEFT JOIN {$wpdb->users} u ON (b.user_id = u.ID)\n\t\t\tWHERE\n\t\t\t  wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql}\n\t\t\t  AND bm.meta_key = 'last_activity' AND bm_name.meta_key = 'name' AND bm_description.meta_key = 'description'\n\t\t\t  {$search_terms_sql} {$user_sql} {$include_sql}\n\t\t\tGROUP BY b.blog_id {$order_sql} {$pag_sql}\n\t\t");
     $total_blogs = $wpdb->get_var("\n\t\t\tSELECT COUNT(DISTINCT b.blog_id)\n\t\t\tFROM\n\t\t\t  {$bp->blogs->table_name} b\n\t\t\t  LEFT JOIN {$wpdb->base_prefix}blogs wb ON (b.blog_id = wb.blog_id)\n\t\t\t  LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_name ON (b.blog_id = bm_name.blog_id)\n\t\t\t  LEFT JOIN {$bp->blogs->table_name_blogmeta} bm_description ON (b.blog_id = bm_description.blog_id)\n\t\t\tWHERE\n\t\t\t  wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql}\n\t\t\t  AND\n\t\t\t  bm_name.meta_key = 'name' AND bm_description.meta_key = 'description'\n\t\t\t  {$search_terms_sql} {$user_sql} {$include_sql}\n\t\t");
     $blog_ids = array();
     foreach ((array) $paged_blogs as $blog) {
         $blog_ids[] = (int) $blog->blog_id;
     }
     $paged_blogs = BP_Blogs_Blog::get_blog_extras($paged_blogs, $blog_ids, $type);
     if ($update_meta_cache) {
         bp_blogs_update_meta_cache($blog_ids);
     }
     return array('blogs' => $paged_blogs, 'total' => $total_blogs);
 }
コード例 #2
0
ファイル: bp-blogs-classes.php プロジェクト: n-sane/zaroka
	function get( $type, $limit = false, $page = false, $user_id = false, $search_terms = false ) {
		global $bp, $wpdb;

		if ( !$bp->blogs )
			bp_blogs_setup_globals();

		if ( !is_user_logged_in() || ( !is_super_admin() && ( $user_id != $bp->loggedin_user->id ) ) )
			$hidden_sql = "AND wb.public = 1";

		if ( $limit && $page )
			$pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );

		if ( $user_id )
			$user_sql = $wpdb->prepare( " AND b.user_id = %d", $user_id );

		switch ( $type ) {
			case 'active': default:
				$order_sql = "ORDER BY bm.meta_value DESC";
				break;
			case 'alphabetical':
				$order_sql = "ORDER BY bm2.meta_value ASC";
				break;
			case 'newest':
				$order_sql = "ORDER BY wb.registered DESC";
				break;
			case 'random':
				$order_sql = "ORDER BY RAND()";
				break;
		}

		if ( !empty( $search_terms ) ) {
			$filter = like_escape( $wpdb->escape( $search_terms ) );
			$paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' AND bm2.meta_value LIKE '%%$filter%%' {$user_sql} GROUP BY b.blog_id {$order_sql} {$pag_sql}" );
			$total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2 WHERE b.blog_id = wb.blog_id AND bm.blog_id = b.blog_id AND bm2.blog_id = b.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'name' AND bm2.meta_key = 'description' AND ( bm.meta_value LIKE '%%$filter%%' || bm2.meta_value LIKE '%%$filter%%' ) {$user_sql}" );
		} else {
			$paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' GROUP BY b.blog_id {$order_sql} {$pag_sql}" ) );
			$total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb WHERE b.blog_id = wb.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql}" ) );
		}

		foreach ( (array)$paged_blogs as $blog ) $blog_ids[] = $blog->blog_id;
		$blog_ids = $wpdb->escape( join( ',', (array)$blog_ids ) );
		$paged_blogs = BP_Blogs_Blog::get_blog_extras( &$paged_blogs, $blog_ids, $type );

		return array( 'blogs' => $paged_blogs, 'total' => $total_blogs );
	}