Ejemplo n.º 1
0
 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;
 }