Error(); if (!$Group || !is_object($Group)) { $this->setError(_('Forum:: No Valid Group Object')); return false; } if ($Group->isError()) { $this->setError(_('Forum').':: '.$Group->getErrorMessage()); return false; } $this->Group =& $Group; return true; } /** * getGroup - get the Group object this ForumFactory is associated with. * * @return object The Group object. */ function &getGroup() { return $this->Group; } /** * getForums - get an array of Forum objects for this Group. * * @return array The array of Forum objects. */ function &getForums() { global $Language, $sys_database_type; if ($this->forums) { return $this->forums; } if (session_loggedin()) { $perm =& $this->Group->getPermission( session_get_user() ); if (!$perm || !is_object($perm) || !$perm->isMember()) { $public_flag='=1'; } else { $public_flag='<3'; if ($perm->isForumAdmin()) { $exists=''; } else { $exists=" AND group_forum_id IN (SELECT group_forum_ID FROM forum_perm WHERE perm_level >= 0 AND group_forum_id=forum_group_list_vw.group_forum_id AND user_id='".user_getid()."') "; } } } else { $public_flag='=1'; } if ($sys_database_type == "mysql") { $sql="SELECT fgl.*, (SELECT count(*) AS `count` FROM ( SELECT DISTINCT group_forum_id, thread_id FROM forum ) AS tmp WHERE tmp.group_forum_id = fgl.group_forum_id ) AS threads FROM forum_group_list_vw AS fgl"; } else { $sql="SELECT * FROM forum_group_list_vw"; } $sql .= " WHERE group_id='". $this->Group->getID() ."' AND is_public $public_flag $exists ORDER BY group_forum_id;"; $result = db_query ($sql); $rows = db_numrows($result); if (!$result) { $this->setError(_('Forum not found').db_error()); return false; } else { while ($arr = db_fetch_array($result)) { $this->forums[] = new Forum($this->Group, $arr['group_forum_id'], $arr); } } return $this->forums; } } ?>