private function doLoadMemberships($privacy = false, $count = false, $start = 0, $which = 0, $orderbymostrecent = false) { $limitclause = $privacyclause = ""; if (!$start) { $start = 0; } if ($count) { $limitclause = " LIMIT {$start}, {$count}"; } if ($privacy !== false && $privacy !== null) { $privacyclause = " b.brd_privacy={$privacy} "; } if ($this->userid && $which) { if ($which > 0) { if ($orderbymostrecent) { //$sql = "SELECT q1.*, q2.max_date FROM (SELECT * FROM boards b, memberships m WHERE b.brd_id = m.mem_board_id AND m.mem_user_id=".$this->userid . ($privacyclause ? "AND $privacyclause" : "") . ") as q1 LEFT OUTER JOIN (SELECT MAX(msg_date) as max_date, mem_board_id FROM messages msg, memberships mem WHERE msg.msg_board_id=mem.mem_board_id GROUP BY mem_board_id) as q2 ON q1.brd_id=q2.mem_board_id ORDER BY max_date DESC $limitclause"; $sql = "SELECT q1.*, q2.lastpost FROM (SELECT * FROM boards b, memberships m, users u WHERE b.brd_creator=u.user_id AND b.brd_id = m.mem_board_id AND m.mem_user_id=" . $this->userid . ($privacyclause ? "AND {$privacyclause}" : "") . ") as q1 LEFT OUTER JOIN (SELECT MAX(msg_date) as lastpost, mem_board_id FROM messages msg, memberships mem WHERE msg.msg_board_id=mem.mem_board_id GROUP BY mem_board_id) as q2 ON q1.brd_id=q2.mem_board_id ORDER BY lastpost DESC {$limitclause}"; } else { //$sql = "SELECT * FROM boards b, memberships m WHERE b.brd_id = m.mem_board_id AND m.mem_user_id=".$this->userid . ($privacyclause ? "AND $privacyclause" : "") . " ORDER BY b.brd_id DESC ".$limitclause; $sql = "SELECT * FROM boards b, memberships m, users u WHERE b.brd_creator=u.user_id AND b.brd_id = m.mem_board_id AND m.mem_user_id=" . $this->userid . ($privacyclause ? "AND {$privacyclause}" : "") . " ORDER BY b.brd_id DESC " . $limitclause; } } /* elseif($which<0) { //$sql = "SELECT * FROM boards b WHERE b.brd_id NOT IN (SELECT mem_board_id FROM memberships m WHERE m.mem_user_id=".$this->userid.") ". ($privacyclause ? "AND $privacyclause" : "") . " ORDER BY b.brd_id DESC $limitclause"; $sql = "SELECT * FROM boards b, users u WHERE b.brd_creator=u.user_id AND b.brd_id NOT IN (SELECT mem_board_id FROM memberships m WHERE m.mem_user_id=".$this->userid.") ". ($privacyclause ? "AND $privacyclause" : "") . " ORDER BY b.brd_id DESC $limitclause"; } */ } /* else { $sql = "SELECT * FROM boards b, users u WHERE b.brd_creator=u.user_id " . ($privacyclause ? " AND $privacyclause" : "") . $limitclause; } */ //echo $sql; $db = new SCDB(); $memberships = $db->queryArray($sql); foreach ($memberships as $id => $membership) { $new_membership = new SCMembership($membership); $new_membership->hideUser(); $this->memberships[] = $new_membership; /* $this->boards[] = array( "id"=>$board["brd_id"], "name"=>$board["brd_name"], "creator"=>$board["brd_creator"], "creatorname"=>$board["user_name"], "createdate"=>$board["brd_createdate"], "privacy"=>$board["brd_privacy"], "description"=>$board["brd_description"], "max_date"=>(isset($board["max_date"]) ? $board["max_date"] : null), "messages"=>array() ); */ } $this->hasmemberships = sizeof($memberships); return $this; }