friendmodel($base); } function friendmodel(&$base) { $this->base = $base; $this->db = $base->db; } function add($uid, $friendid, $comment = '') { $direction = $this->db->result_first("SELECT direction FROM " . UC_DBTABLEPRE . "friends WHERE uid='$friendid' AND friendid='$uid' LIMIT 1"); if ($direction == 1) { $this->db->query("INSERT INTO " . UC_DBTABLEPRE . "friends SET uid='$uid', friendid='$friendid', comment='$comment', direction='3'", 'SILENT'); $this->db->query("UPDATE " . UC_DBTABLEPRE . "friends SET direction='3' WHERE uid='$friendid' AND friendid='$uid'"); return 1; } elseif ($direction == 2) { return 1; } elseif ($direction == 3) { return -1; } else { $this->db->query("INSERT INTO " . UC_DBTABLEPRE . "friends SET uid='$uid', friendid='$friendid', comment='$comment', direction='1'", 'SILENT'); return $this->db->insert_id(); } } function delete($uid, $friendids) { $friendids = $this->base->implode($friendids); $this->db->query("DELETE FROM " . UC_DBTABLEPRE . "friends WHERE uid='$uid' AND friendid IN ($friendids)"); $affectedrows = $this->db->affected_rows(); if ($affectedrows > 0) { $this->db->query("UPDATE " . UC_DBTABLEPRE . "friends SET direction=1 WHERE uid IN ($friendids) AND friendid='$uid' AND direction='3'"); } return $affectedrows; } function get_totalnum_by_uid($uid, $direction = 0) { $sqladd = ''; if ($direction == 0) { $sqladd = "uid='$uid'"; } elseif ($direction == 1) { $sqladd = "uid='$uid' AND direction='1'"; } elseif ($direction == 2) { $sqladd = "friendid='$uid' AND direction='1'"; } elseif ($direction == 3) { $sqladd = "uid='$uid' AND direction='3'"; } $totalnum = $this->db->result_first("SELECT COUNT(*) FROM " . UC_DBTABLEPRE . "friends WHERE $sqladd"); return $totalnum; } function get_list($uid, $page, $pagesize, $totalnum, $direction = 0) { $start = $this->base->page_get_start($page, $pagesize, $totalnum); $sqladd = ''; if ($direction == 0) { $sqladd = "f.uid='$uid'"; } elseif ($direction == 1) { $sqladd = "f.uid='$uid' AND f.direction='1'"; } elseif ($direction == 2) { $sqladd = "f.friendid='$uid' AND f.direction='1'"; } elseif ($direction == 3) { $sqladd = "f.uid='$uid' AND f.direction='3'"; } if ($sqladd) { $data = $this->db->fetch_all("SELECT f.*, m.username FROM " . UC_DBTABLEPRE . "friends f LEFT JOIN " . UC_DBTABLEPRE . "members m ON f.friendid=m.uid WHERE $sqladd LIMIT $start, $pagesize"); return $data; } else { return array(); } } function is_friend($uid, $friendids, $direction = 0) { $friendid_str = implode("', '", $friendids); $sqladd = ''; if ($direction == 0) { $sqladd = "uid='$uid'"; } elseif ($direction == 1) { $sqladd = "uid='$uid' AND friendid IN ('$friendid_str') AND direction='1'"; } elseif ($direction == 2) { $sqladd = "friendid='$uid' AND uid IN ('$friendid_str') AND direction='1'"; } elseif ($direction == 3) { $sqladd = "uid='$uid' AND friendid IN ('$friendid_str') AND direction='3'"; } if ($this->db->result_first("SELECT COUNT(*) FROM " . UC_DBTABLEPRE . "friends WHERE $sqladd") == count($friendids)) { return true; } else { return false; } } }