5 * Copyright 1999-2001 (c) VA Linux Systems
6 * The rest Copyright 2002-2004 (c) GForge Team
11 * This file is part of GForge.
13 * GForge is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
18 * GForge is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with GForge; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30 By Tim Perdue, Sourceforge, 12/99
33 function news_header($params) {
34 global $DOCUMENT_ROOT,$HTML,$group_id,$news_name,$news_id,$sys_news_group,$Language,$sys_use_news;
40 $params['toptab']='news';
41 $params['group']=$group_id;
45 if ($group_id && ($group_id != $sys_news_group)) {
46 site_project_header($params);
48 $params['pagename']='news_main';
49 $HTML->header($params);
51 if ($group_id && ($group_id != $sys_news_group)) {
55 $menu_texts[]=$Language->getText('menu','submit');
56 $menu_links[]='/news/submit.php?group_id='.$group_id;
57 if (session_loggedin()) {
58 $project =& group_get_object($params['group']);
59 if ($project && is_object($project) && !$project->isError()) {
60 $perm =& $project->getPermission(session_get_user());
61 if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) {
62 $menu_texts[]=$Language->getText('menu','admin');
63 $menu_links[]='/news/admin/?group_id='.$group_id;
67 echo $HTML->subMenu($menu_texts,$menu_links);
71 function news_footer($params) {
73 $HTML->footer($params);
76 function news_show_latest($group_id='',$limit=10,$show_summaries=true,$allow_submit=true,$flat=false,$tail_headlines=0,$show_forum=true) {
77 global $sys_datefmt,$sys_news_group,$Language;
79 $group_id=$sys_news_group;
82 Show a simple list of the latest news items with a link to the forum
85 if ($group_id != $sys_news_group) {
86 $wclause="news_bytes.group_id='$group_id' AND news_bytes.is_approved <> '4'";
88 $wclause='news_bytes.is_approved=1';
91 $sql="SELECT groups.group_name,groups.unix_group_name,
92 groups.type_id,users.user_name,users.realname,
93 news_bytes.forum_id,news_bytes.summary,news_bytes.post_date,news_bytes.details
94 FROM users,news_bytes,groups
96 AND users.user_id=news_bytes.submitted_by
97 AND news_bytes.group_id=groups.group_id
99 ORDER BY post_date DESC";
101 $result=db_query($sql,$limit+$tail_headlines);
102 $rows=db_numrows($result);
106 if (!$result || $rows < 1) {
107 $return .= $Language->getText('news_utils', 'nonews');
108 $return .= db_error();
110 if (!$limit) $return .= '<ul>';
111 for ($i=0; $i<$rows; $i++) {
112 if ($show_summaries && $limit) {
113 //get the first paragraph of the story
114 $arr=explode("\n",db_result($result,$i,'details'));
115 //if the first paragraph is short, and so are following paragraphs, add the next paragraph on
116 if ((strlen($arr[0]) < 200) && (strlen($arr[1].$arr[2]) < 300) && (strlen($arr[2]) > 5)) {
117 $summ_txt='<br />'. util_make_links( $arr[0].'<br />'.$arr[1].'<br />'.$arr[2] );
119 $summ_txt='<br />'. util_make_links( $arr[0] );
121 $proj_name=' - <a href="/projects/'. strtolower(db_result($result,$i,'unix_group_name')) .'/">'. db_result($result,$i,'group_name') .'</a>';
129 $return .= '<li><a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>';
131 $return .= '<li><strong>'. db_result($result,$i,'summary') . '</strong>';
133 $return .= ' <em>'. date($sys_datefmt,db_result($result,$i,'post_date')).'</em><br /></li>';
137 <a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>';
140 <strong>'. db_result($result,$i,'summary') . '</strong>';
146 $return .= ' <em>'. db_result($result,$i,'realname') .' - '.
147 date($sys_datefmt,db_result($result,$i,'post_date')). '</em>' .
148 $proj_name . $summ_txt;
150 $sql="SELECT total FROM forum_group_list_vw WHERE group_forum_id='" . db_result($result,$i,'forum_id') . "'";
151 $res2 = db_query($sql);
152 $num_comments = db_result($res2,0,'total');
154 if (!$num_comments) {
158 if ($num_comments <= 1) {
159 $comments_txt = $Language->getText('news_utils', 'comment_1');
161 $comments_txt = $Language->getText('news_utils', 'comment_2');
165 $return .= '<div align="center">(' . $num_comments .' '. $comments_txt . ') <a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'">[' . $Language->getText('news_utils', 'readmore') . ']</a></div><hr width="100%" size="1" />';
167 $return .= '<hr width="100%" size="1" />';
171 if ($limit==1 && $tail_headlines) {
177 if (!$limit && $i==$rows-1) {
178 $return .= '</ul><hr width="100%" size="1" />'."\n";
181 if (!$limit) $return .= '</ul>';
182 if ($group_id != $sys_news_group) {
183 $archive_url='/news/?group_id='.$group_id;
185 $archive_url='/news/';
189 $return .= '<div align="center">'
190 .'<a href="'.$archive_url.'">[' . $Language->getText('news_utils', 'archive') . ']</a></div>';
192 $return .= '<div align="center">...</div>';
196 if ($allow_submit && $group_id != $sys_news_group) {
197 if(!$result || $rows < 1) {
198 $return .= '<hr width="100%" size="1" />';
200 //you can only submit news from a project now
201 //you used to be able to submit general news
202 $return .= '<div align="center"><a href="/news/submit.php?group_id='.$group_id.'"><span style="font-size:smaller">[' . $Language->getText('news_utils', 'submit') . ']</span></a></div>';
208 function news_foundry_latest($group_id=0,$limit=5,$show_summaries=true) {
209 global $sys_datefmt,$Language;
211 Show a the latest news for a portal
214 $sql="SELECT groups.group_name,groups.unix_group_name,
215 users.user_name,users.realname,news_bytes.forum_id,
216 news_bytes.summary,news_bytes.post_date,news_bytes.details
217 FROM users,news_bytes,groups,foundry_news
218 WHERE foundry_news.foundry_id='$group_id'
219 AND users.user_id=news_bytes.submitted_by
220 AND foundry_news.news_id=news_bytes.id
221 AND news_bytes.group_id=groups.group_id
222 AND foundry_news.is_approved=1
223 ORDER BY news_bytes.post_date DESC";
225 $result=db_query($sql,$limit);
226 $rows=db_numrows($result);
228 if (!$result || $rows < 1) {
229 $return .= '<h3>' . $Language->getText('news_utils', 'nonews') . '</h3>';
230 $return .= db_error();
232 for ($i=0; $i<$rows; $i++) {
233 if ($show_summaries) {
234 //get the first paragraph of the story
235 $arr=explode("\n",db_result($result,$i,'details'));
236 if ((strlen($arr[0]) < 200) && (strlen($arr[1].$arr[2]) < 300) && (strlen($arr[2]) > 5)) {
237 $summ_txt=util_make_links( $arr[0].'<br />'.$arr[1].'<br />'.$arr[2] );
239 $summ_txt=util_make_links( $arr[0] );
242 //show the project name
243 $proj_name=' - <a href="/projects/'. strtolower(db_result($result,$i,'unix_group_name')) .'/">'. db_result($result,$i,'group_name') .'</a>';
249 <a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>
250 <br /><em>'. db_result($result,$i,'realname') .' - '.
251 date($sys_datefmt,db_result($result,$i,'post_date')) . $proj_name . '</em>
252 '. $summ_txt .'<hr width="100%" size="1" />';
258 function get_news_name($id) {
260 Takes an ID and returns the corresponding forum name
262 $sql="SELECT summary FROM news_bytes WHERE id='$id'";
263 $result=db_query($sql);
264 if (!$result || db_numrows($result) < 1) {
267 return db_result($result, 0, 'summary');