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 $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 $HTML->header($params);
50 if ($group_id && ($group_id != $sys_news_group)) {
54 $menu_texts[]=$Language->getText('menu','submit');
55 $menu_links[]='/news/submit.php?group_id='.$group_id;
56 if (session_loggedin()) {
57 $project =& group_get_object($params['group']);
58 if ($project && is_object($project) && !$project->isError()) {
59 $perm =& $project->getPermission(session_get_user());
60 if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) {
61 $menu_texts[]=$Language->getText('menu','admin');
62 $menu_links[]='/news/admin/?group_id='.$group_id;
66 echo $HTML->subMenu($menu_texts,$menu_links);
70 function news_footer($params) {
72 $HTML->footer($params);
75 function news_show_latest($group_id='',$limit=10,$show_summaries=true,$allow_submit=true,$flat=false,$tail_headlines=0,$show_forum=true) {
76 global $sys_datefmt,$sys_news_group,$Language;
78 $group_id=$sys_news_group;
81 Show a simple list of the latest news items with a link to the forum
84 if ($group_id != $sys_news_group) {
85 $wclause="news_bytes.group_id='$group_id' AND news_bytes.is_approved <> '4'";
87 $wclause='news_bytes.is_approved=1';
90 $sql="SELECT groups.group_name,groups.unix_group_name,
91 groups.type_id,users.user_name,users.realname,
92 news_bytes.forum_id,news_bytes.summary,news_bytes.post_date,news_bytes.details
93 FROM users,news_bytes,groups
95 AND users.user_id=news_bytes.submitted_by
96 AND news_bytes.group_id=groups.group_id
98 ORDER BY post_date DESC";
100 $result=db_query($sql,$limit+$tail_headlines);
101 $rows=db_numrows($result);
105 if (!$result || $rows < 1) {
106 $return .= $Language->getText('news_utils', 'nonews');
107 $return .= db_error();
109 if (!$limit) $return .= '<ul>';
110 for ($i=0; $i<$rows; $i++) {
111 if ($show_summaries && $limit) {
112 //get the first paragraph of the story
113 if (strstr(db_result($result,$i,'details'),'<br/>')) {
114 // the news is html, fckeditor made for example
115 $arr=explode("<br/>",db_result($result,$i,'details'));
117 $arr=explode("\n",db_result($result,$i,'details'));
119 //if the first paragraph is short, and so are following paragraphs, add the next paragraph on
120 if ((strlen($arr[0]) < 200) && (strlen($arr[1].$arr[2]) < 300) && (strlen($arr[2]) > 5)) {
121 $summ_txt='<br />'. util_make_links( $arr[0].'<br />'.$arr[1].'<br />'.$arr[2] );
123 $summ_txt='<br />'. util_make_links( $arr[0] );
125 $proj_name=' - <a href="/projects/'. strtolower(db_result($result,$i,'unix_group_name')) .'/">'. db_result($result,$i,'group_name') .'</a>';
133 $return .= '<li><a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>';
135 $return .= '<li><strong>'. db_result($result,$i,'summary') . '</strong>';
137 $return .= ' <em>'. date($sys_datefmt,db_result($result,$i,'post_date')).'</em><br /></li>';
141 <a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>';
144 <strong>'. db_result($result,$i,'summary') . '</strong>';
150 $return .= ' <em>'. db_result($result,$i,'realname') .' - '.
151 date($sys_datefmt,db_result($result,$i,'post_date')). '</em>' .
152 $proj_name . $summ_txt;
154 $sql="SELECT total FROM forum_group_list_vw WHERE group_forum_id='" . db_result($result,$i,'forum_id') . "'";
155 $res2 = db_query($sql);
156 $num_comments = db_result($res2,0,'total');
158 if (!$num_comments) {
162 if ($num_comments <= 1) {
163 $comments_txt = $Language->getText('news_utils', 'comment_1');
165 $comments_txt = $Language->getText('news_utils', 'comment_2');
169 $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" />';
171 $return .= '<hr width="100%" size="1" />';
175 if ($limit==1 && $tail_headlines) {
182 if ($tail_headlines){
183 if (!$limit) $return .= '</ul>';
184 $return .= '<hr width="100%" size="1" />'."\n";
186 if ($group_id != $sys_news_group) {
187 $archive_url='/news/?group_id='.$group_id;
189 $archive_url='/news/';
193 $return .= '<div align="center">'
194 .'<a href="'.$archive_url.'">[' . $Language->getText('news_utils', 'archive') . ']</a></div>';
196 $return .= '<div align="center">...</div>';
200 if ($allow_submit && $group_id != $sys_news_group) {
201 if(!$result || $rows < 1) {
202 $return .= '<hr width="100%" size="1" />';
204 //you can only submit news from a project now
205 //you used to be able to submit general news
206 $return .= '<div align="center"><a href="/news/submit.php?group_id='.$group_id.'">[' . $Language->getText('news_utils', 'submit') . ']</a></div>';
212 function news_foundry_latest($group_id=0,$limit=5,$show_summaries=true) {
213 global $sys_datefmt,$Language;
215 Show a the latest news for a portal
218 $sql="SELECT groups.group_name,groups.unix_group_name,
219 users.user_name,users.realname,news_bytes.forum_id,
220 news_bytes.summary,news_bytes.post_date,news_bytes.details
221 FROM users,news_bytes,groups,foundry_news
222 WHERE foundry_news.foundry_id='$group_id'
223 AND users.user_id=news_bytes.submitted_by
224 AND foundry_news.news_id=news_bytes.id
225 AND news_bytes.group_id=groups.group_id
226 AND foundry_news.is_approved=1
227 ORDER BY news_bytes.post_date DESC";
229 $result=db_query($sql,$limit);
230 $rows=db_numrows($result);
232 if (!$result || $rows < 1) {
233 $return .= '<h3>' . $Language->getText('news_utils', 'nonews') . '</h3>';
234 $return .= db_error();
236 for ($i=0; $i<$rows; $i++) {
237 if ($show_summaries) {
238 //get the first paragraph of the story
239 $arr=explode("\n",db_result($result,$i,'details'));
240 if ((strlen($arr[0]) < 200) && (strlen($arr[1].$arr[2]) < 300) && (strlen($arr[2]) > 5)) {
241 $summ_txt=util_make_links( $arr[0].'<br />'.$arr[1].'<br />'.$arr[2] );
243 $summ_txt=util_make_links( $arr[0] );
246 //show the project name
247 $proj_name=' - <a href="/projects/'. strtolower(db_result($result,$i,'unix_group_name')) .'/">'. db_result($result,$i,'group_name') .'</a>';
253 <a href="/forum/forum.php?forum_id='. db_result($result,$i,'forum_id') .'"><strong>'. db_result($result,$i,'summary') . '</strong></a>
254 <br /><em>'. db_result($result,$i,'realname') .' - '.
255 date($sys_datefmt,db_result($result,$i,'post_date')) . $proj_name . '</em>
256 '. $summ_txt .'<hr width="100%" size="1" />';
262 function get_news_name($id) {
264 Takes an ID and returns the corresponding forum name
266 $sql="SELECT summary FROM news_bytes WHERE id='$id'";
267 $result=db_query($sql);
268 if (!$result || db_numrows($result) < 1) {
271 return db_result($result, 0, 'summary');