gforge-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gforge-commits] gforge/www/forum/admin index.php,1.9,1.10


From: tperdue
Subject: [Gforge-commits] gforge/www/forum/admin index.php,1.9,1.10
Date: Wed, 04 Aug 2004 11:18:47 -0500

Update of /cvsroot/gforge/gforge/www/forum/admin
In directory db.perdue.net:/home/tperdue/share/dev.gforge.org/www/forum/admin

Modified Files:
        index.php 
Log Message:
RBAC, DELETION, AND FORUM EMAIL GATEWAY

Index: index.php
===================================================================
RCS file: /cvsroot/gforge/gforge/www/forum/admin/index.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- index.php   6 May 2003 15:41:45 -0000       1.9
+++ index.php   4 Aug 2004 16:18:37 -0000       1.10
@@ -16,6 +16,8 @@
        Massive rewrite by Tim Perdue 7/2000 (nested/views/save)
 
        Complete OO rewrite by Tim Perdue 12/2002
+
+       Heavy RBAC changes 3/17/2004
 */
 
 require_once('pre.php');
@@ -25,11 +27,6 @@
 require_once('common/forum/ForumMessageFactory.class');
 require_once('common/forum/ForumMessage.class');
 
-function showAdminRow() {
-       
$tablearr=array($Language->getText('forum_admin_addforum','existing_forums'));
-       echo $HTML->listTableTop($tablearr);
-}
-
 if ($group_id) {
        //
        //  Set up local objects
@@ -40,7 +37,7 @@
        }
 
        $p =& $g->getPermission( session_get_user() );
-       if (!$p || !is_object($p) || $p->isError() || !$p->isForumAdmin()) {
+       if (!$p || !is_object($p) || $p->isError()) {
                exit_permission_denied();
        }
 
@@ -49,23 +46,40 @@
                        Update the DB to reflect the changes
                */
 
-               if ($delete) {
+               if ($deleteforum) {
                        /*
-                               Deleting messages or threads
+                               Deleting entire forum
                        */
-                       $res=db_query("SELECT group_forum_id
-                               FROM forum
-                               WHERE msg_id='$msg_id'");
-
-                       if (!$res || db_numrows($res) < 1) {
-                               
exit_error($Language->getText('general','error'),$Language->getText('forum_errors','error_determining_forum_id'));
+                       $f=new Forum($g,$group_forum_id);
+                       if (!$f || !is_object($f)) {
+                               
exit_error($Language->getText('general','error'),$Language->getText('forum_errors','error_getting_forum'));
+                       } elseif ($f->isError()) {
+                               
exit_error($Language->getText('general','error'),$f->getErrorMessage());
                        }
-                       $f=new Forum($g,db_result($res,0,'group_forum_id'));
+                       if (!$f->userIsAdmin()) {
+                               exit_permission_denied();
+                       }
+                       if (!$f->delete($sure,$really_sure)) {
+                               
exit_error($Language->getText('general','error'),$f->getErrorMessage());
+                       } else {
+                               $feedback .= 
$Language->getText('forum_admin','deleted');
+                               $group_forum_id=0;
+                               $deleteforum=0;
+                       }
+               } elseif ($delete) {
+                       /*
+                               Deleting messages or threads
+                       */
+                       $f=new Forum($g,$group_forum_id);
                        if (!$f || !is_object($f)) {
                                
exit_error($Language->getText('general','error'),$Language->getText('forum_errors','error_getting_forum'));
                        } elseif ($f->isError()) {
                                
exit_error($Language->getText('general','error'),$f->getErrorMessage());
                        }
+                       if (!$f->userIsAdmin()) {
+                               exit_permission_denied();
+                       }
+
                        $fm=new ForumMessage($f,$msg_id);
                        if (!$fm || !is_object($fm)) {
                                
exit_error($Language->getText('general','error'),$Language->getText('forum_errors','error_getting_forum'));
@@ -83,6 +97,9 @@
                        /*
                                Adding forums to this group
                        */
+                       if (!$p->isForumAdmin()) {
+                               exit_permission_denied();
+                       }
                        $f=new Forum($g);
                        if (!$f || !is_object($f)) {
                                
exit_error($Language->getText('general','error'),$Language->getText('forum_errors','error_getting_forum'));
@@ -97,7 +114,7 @@
 
                } else if ($change_status) {
                        /*
-                               Change a forum to public/private
+                               Change a forum
                        */
                        $f=new Forum($g,$group_forum_id);
                        if (!$f || !is_object($f)) {
@@ -105,7 +122,10 @@
                        } elseif ($f->isError()) {
                                
exit_error($Language->getText('general','error'),$f->getErrorMessage());
                        }
-                       if 
(!$f->update($forum_name,$description,$is_public,$send_all_posts_to,$allow_anonymous))
 {
+                       if (!$f->userIsAdmin()) {
+                               exit_permission_denied();
+                       }
+                       if 
(!$f->update($forum_name,$description,$send_all_posts_to)) {
                                
exit_error($Language->getText('general','error'),$f->getErrorMessage());
                        } else {
                                $feedback .= 
$Language->getText('forum_admin_changestatus','update_successful');
@@ -114,70 +134,12 @@
 
        }
 
-       if ($delete) {
-               /*
-                       Show page for deleting messages
-               */
-               
forum_header(array('title'=>$Language->getText('forum_admin_delete_message','title'),'pagename'=>'forum_admin_delete','sectionvals'=>group_getname($group_id)));
-
-               echo '
-                       <span 
style="color:red">'.$Language->getText('forum_admin_delete_message','warning').'
-                       </span>
-                       <form method="post" action="'.$PHP_SELF.'">
-                       <input type="hidden" name="post_changes" value="y" />
-                       <input type="hidden" name="delete" value="y" />
-                       <input type="hidden" name="group_id" 
value="'.$group_id.'" />
-                       
<strong>'.$Language->getText('forum_admin_delete_message','enter_message_id').'</strong><br
 />
-                       <input type="text" name="msg_id" value="" />
-                       <input type="submit" name="submit" 
value="'.$Language->getText('general','submit').'" />
-                       </form>';
-
-               forum_footer(array());
-
-       } else if ($add_forum) {
+       if ($add_forum) {
                /*
                        Show the form for adding forums
                */
                
forum_header(array('title'=>$Language->getText('forum_admin_addforum','title'),'pagename'=>'forum_admin_addforum','sectionvals'=>group_getname($group_id)));
 
-//             $sql="SELECT forum_name FROM forum_group_list WHERE 
group_id='$group_id'";
-//             $result=db_query($sql);
-//             
ShowResultSet($result,$Language->getText('forum_admin_addforum','existing_forums'));
-               $ff=new ForumFactory($g);
-               if (!$ff || !is_object($ff) || $ff->isError()) {
-                       
exit_error($Language->getText('general','error'),$ff->getErrorMessage());
-               }
-               
-               $farr =& $ff->getForums();
-
-               if ($ff->isError()) {
-                       
$tablearr=array($Language->getText('forum_admin_addforum','existing_forums'));
-                       echo $HTML->listTableTop($tablearr);
-                       echo 
'<h1>'.$Language->getText('forum','error_no_forums_found', 
array($g->getPublicName())) .'</h1>';
-                       echo $ff->getErrorMessage();
-                       forum_footer(array());
-                       exit;
-               }
-
-               
$tablearr=array($Language->getText('forum_admin_addforum','existing_forums'));
-               echo $HTML->listTableTop($tablearr);
-
-               /*
-                       Put the result set (list of forums for this group) into 
a column with folders
-               */
-
-               for ($j = 0; $j < count($farr); $j++) {
-                       if ($farr[$j]->isError()) {
-                               echo $farr->getErrorMessage();
-                       } else {
-                               echo '<tr '. $HTML->boxGetAltRowStyle($j) . 
'><td><a href="/forum/forum.php?forum_id='. $farr[$j]->getID() .'">'.
-                                       
html_image("ic/forum20w.png","20","20",array("border"=>"0")) .
-                                       '&nbsp;' .
-                                       $farr[$j]->getName() .'</a><br 
/>'.$farr[$j]->getDescription().'</td></tr>';
-                       }
-               }
-               echo $HTML->listTableBottom();
-
                echo '
                        <br>
                        <form method="post" action="'.$PHP_SELF.'">
@@ -207,96 +169,147 @@
 
        } else if ($change_status) {
                /*
-                       Change a forum to public/private
+                       Change a forum
                */
 
-               $ff = new ForumFactory($g);
-               if (!$ff || !is_object($ff) || $ff->isError()) {
-                       
exit_error($Language->getText('general','error'),$ff->getErrorMessage());
+               $f = new Forum ($g,$group_forum_id);
+               if (!$f || !is_object($f)) {
+                       exit_error('Error','Could Not Get Forum Object');
+               } elseif ($f->isError()) {
+                       exit_error('Error',$f->getErrorMessage());
+               } elseif (!$f->userIsAdmin()) {
+                       exit_permission_denied();
                }
-               $farr =& $ff->getForums();
 
-               $rows=count($farr);
-               if ($ff->isError()) {
-                       
exit_error($Language->getText('general','error'),$Language->getText('forum_admin_changestatus','no_forums_found').$ff->getErrorMessage());
-               } else {
-               
-                       if ($rows > 0) {
-                               $title_arr=array();
-                               
forum_header(array('title'=>$Language->getText('forum_admin_changestatus','change_status'),'pagename'=>'forum_admin_changestatus','sectionvals'=>group_getname($group_id)));
-                               echo 
'<p>'.$Language->getText('forum_admin_changestatus','intro').'.</p>';
-                               
$title_arr[]=$Language->getText('forum_admin_changestatus','forum');
-                               
$title_arr[]=$Language->getText('forum_admin_changestatus','status');
-                               
$title_arr[]=$Language->getText('forum_admin_changestatus','update');
-                               echo $GLOBALS['HTML']->listTableTop 
($title_arr);
-                       } else {
-                       global 
$DOCUMENT_ROOT,$HTML,$group_id,$forum_name,$forum_id,$sys_datefmt,$sys_news_group,$Language,$f;
-                               $params['group']=$group_id;
-                       $params['toptab']='forums';
-                               site_project_header($params);
-                               echo '<strong><a 
href="/forum/admin/?group_id='.$group_id.'">'.$Language->getText('forum_utils','admin').'</a></strong>';
-                       }
+               
forum_header(array('title'=>$Language->getText('forum_admin_changestatus','change_status')));
+               echo 
'<p>'.$Language->getText('forum_admin_changestatus','intro').'</p>';
 
-                       for ($i=0; $i<$rows; $i++) {
-                               echo '
-                                       <tr '. 
$GLOBALS['HTML']->boxGetAltRowStyle($i) .'><td colspan="3"><strong>'. 
$farr[$i]->getName() .'</strong></td></tr>';
-                               echo '
-                                       <tr '. 
$GLOBALS['HTML']->boxGetAltRowStyle($i) .'>
-                                       <td colspan="3">
-                                               <form action="'.$PHP_SELF.'" 
method="post">
-                                               <input type="hidden" 
name="post_changes" value="y" />
-                                               <input type="hidden" 
name="change_status" value="y" />
-                                               <input type="hidden" 
name="group_forum_id" value="'. $farr[$i]->getID() .'" />
-                                               <input type="hidden" 
name="group_id" value="'.$group_id.'" />
-                                               <table width="100%"><tr><td 
valign="top">
-                                               <span style="font-size:-1">
-                                               
<strong>'.$Language->getText('forum_admin_addforum','allow_anonymous').'</strong><br
 />
-                                               <input type="radio" 
name="allow_anonymous" value="1"'.(($farr[$i]->AllowAnonymous() == 1)?' 
checked="checked"':'').' /> '.$Language->getText('general','yes').'<br />
-                                               <input type="radio" 
name="allow_anonymous" value="0"'.(($farr[$i]->AllowAnonymous() == 0)?' 
checked="checked"':'').'/> '.$Language->getText('general','no').'<br />
-                                               </span>
-                                               </td>
-                                               <td valign="top">
-                                               <span style="font-size:-1">
-                                               
<strong>'.$Language->getText('forum_admin_addforum','is_public').'</strong><br 
/>
-                                               <input type="radio" 
name="is_public" value="1"'.(($farr[$i]->isPublic() == 1)?' 
checked="checked"':'').' /> '.$Language->getText('general','yes').'<br />
-                                               <input type="radio" 
name="is_public" value="0"'.(($farr[$i]->isPublic() == 0)?' 
checked="checked"':'').' /> '.$Language->getText('general','no').'<br />
-                                               <input type="radio" 
name="is_public" value="9"'.(($farr[$i]->isPublic() == 9)?' 
checked="checked"':'').' />'.$Language->getText('general','deleted').'<br />
-                                       </span></td><td>
-                                               <span style="font-size:-1">
-                                               <input type="submit" 
name="submit" value="'.$Language->getText('general','update').'" /></span>
-                                       </td></tr>
-                                       <tr '. 
$GLOBALS['HTML']->boxGetAltRowStyle($i) .'><td>
-                                               
<strong>'.$Language->getText('forum_admin_addforum','forum_name').':</strong><br
 />
-                                               <input type="text" 
name="forum_name" value="'. $farr[$i]->getName() .'" size="20" maxlength="30" />
-                                       </td><td colspan="2">
-                                               
<strong>'.$Language->getText('forum_admin_addforum','email_posts').'</strong><br
 />
-                                               <input type="text" 
name="send_all_posts_to" value="'. $farr[$i]->getSendAllPostsTo() .'" size="30" 
maxlength="50" />
-                                       </td></tr>
-                                       <tr '. 
$GLOBALS['HTML']->boxGetAltRowStyle($i) .'><td colspan="3">
-                                               
<strong>'.$Language->getText('forum_admin_addforum','forum_description').':</strong><br
 />
-                                               <input type="text" 
name="description" value="'. $farr[$i]->getDescription() .'" size="40" 
maxlength="80" /><br />
-                                       </td></tr></table></form>
-                               </td></tr>';
-                       }
+               echo '
+                       <form action="'.$PHP_SELF.'" method="post">
+                               <input type="hidden" name="post_changes" 
value="y" />
+                               <input type="hidden" name="change_status" 
value="y" />
+                               <input type="hidden" name="group_forum_id" 
value="'. $f->getID() .'" />
+                               <input type="hidden" name="group_id" 
value="'.$group_id.'" />
+<!--                           <span style="font-size:-1">
+                               
<strong>'.$Language->getText('forum_admin_addforum','allow_anonymous').'</strong><br
 />
+                               <input type="radio" name="allow_anonymous" 
value="1"'.(($f->AllowAnonymous() == 1)?' checked="checked"':'').' /> 
'.$Language->getText('general','yes').'<br />
+                               <input type="radio" name="allow_anonymous" 
value="0"'.(($f->AllowAnonymous() == 0)?' checked="checked"':'').'/> 
'.$Language->getText('general','no').'<br />
+                               </span>
+                               <span style="font-size:-1">
+                               
<strong>'.$Language->getText('forum_admin_addforum','is_public').'</strong><br 
/>
+                               <input type="radio" name="is_public" 
value="1"'.(($f->isPublic() == 1)?' checked="checked"':'').' /> 
'.$Language->getText('general','yes').'<br />
+                               <input type="radio" name="is_public" 
value="0"'.(($f->isPublic() == 0)?' checked="checked"':'').' /> 
'.$Language->getText('general','no').'<br />
+                               <input type="radio" name="is_public" 
value="9"'.(($f->isPublic() == 9)?' checked="checked"':'').' 
/>'.$Language->getText('general','deleted').'<br />
+                               </span></td><td>
+                               <span style="font-size:-1">
+-->
+                               
<strong>'.$Language->getText('forum_admin_addforum','forum_name').':</strong><br
 />
+                               <input type="text" name="forum_name" value="'. 
$f->getName() .'" size="20" maxlength="30" />
+                               <p>
+                               
<strong>'.$Language->getText('forum_admin_addforum','email_posts').'</strong><br
 />
+                               <input type="text" name="send_all_posts_to" 
value="'. $f->getSendAllPostsTo() .'" size="30" maxlength="50" />
+                               <p>
+                               
<strong>'.$Language->getText('forum_admin_addforum','forum_description').':</strong><br
 />
+                               <input type="text" name="description" value="'. 
$f->getDescription() .'" size="40" maxlength="80" /><br />
+                               <p>
+                               <input type="submit" name="submit" 
value="'.$Language->getText('general','update').'" /></span>
+                       </form><p>';
+                       echo '<a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;group_forum_id='.$group_forum_id.'&amp;delete=1">'.$Language->getText('forum_admin','delete_message').'</a><br
 />';
+                       echo '<a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;group_forum_id='.$group_forum_id.'&amp;deleteforum=1">'.$Language->getText('forum_admin','delete_forum').'</a><br
 />';
+               forum_footer(array());
 
-                       echo $GLOBALS['HTML']->listTableBottom();
+       } elseif ($deleteforum && $group_forum_id) {
 
+               $f = new Forum ($g,$group_forum_id);
+               if (!$f || !is_object($f)) {
+                       exit_error('Error','Could Not Get Forum Object');
+               } elseif ($f->isError()) {
+                       exit_error('Error',$f->getErrorMessage());
+               } elseif (!$f->userIsAdmin()) {
+                       exit_permission_denied();
                }
+               
forum_header(array('title'=>$Language->getText('forum_admin','delete')));
+               echo '<p>
+                       
<strong>'.$Language->getText('forum_admin','delete_warning').'</strong><br />
+                       <form method="post" action="'.$PHP_SELF.'">
+                       <input type="hidden" name="post_changes" value="y" />
+                       <input type="hidden" name="deleteforum" value="y" />
+                       <input type="hidden" name="group_id" 
value="'.$group_id.'" />
+                       <input type="hidden" name="group_forum_id" 
value="'.$group_forum_id.'" />
+                       <input type="checkbox" name="sure" value="1" 
/>'.$Language->getText('forum_admin','sure').'<br />
+                       <input type="checkbox" name="really_sure" value="1" 
/>'.$Language->getText('forum_admin','really_sure').'<br />
+                       <input type="submit" name="submit" 
value="'.$Language->getText('forum_admin','delete').'" />
+                       </form>';
+               forum_footer(array());
+
+       } elseif ($delete && $group_forum_id) {
 
+               $f = new Forum ($g,$group_forum_id);
+               if (!$f || !is_object($f)) {
+                       exit_error('Error','Could Not Get Forum Object');
+               } elseif ($f->isError()) {
+                       exit_error('Error',$f->getErrorMessage());
+               } elseif (!$f->userIsAdmin()) {
+                       exit_permission_denied();
+               }
+               
forum_header(array('title'=>$Language->getText('forum_admin_changestatus','change_status')));
+               echo '<p>
+                       
<strong>'.$Language->getText('general','delete').'</strong><br />
+                       <form method="post" action="'.$PHP_SELF.'">
+                       <input type="hidden" name="post_changes" value="y" />
+                       <input type="hidden" name="delete" value="y" />
+                       <input type="hidden" name="group_id" 
value="'.$group_id.'" />
+                       <input type="hidden" name="group_forum_id" 
value="'.$group_forum_id.'" />
+                       
<strong>'.$Language->getText('forum_admin_delete_message','enter_message_id').'</strong><br
 />
+                       <input type="text" name="msg_id" value="" />
+                       <input type="submit" name="submit" 
value="'.$Language->getText('general','delete').'" />
+                       </form>';
                forum_footer(array());
 
        } else {
                /*
                        Show main page for choosing
-                       either moderotor or delete
+                       either moderator or delete
                */
                
forum_header(array('title'=>$Language->getText('forum_admin','title'),'pagename'=>'forum_admin','sectionvals'=>group_getname($group_id)));
 
-               echo '
+               //
+               //      Add new forum
+               //
+               if ($p->isForumAdmin()) {
+                       echo '
                        <p>
-                       <a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;add_forum=1">'.$Language->getText('forum_admin','add_forum').'</a><br
 />
-                       <a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;delete=1">'.$Language->getText('forum_admin','delete_message').'</a><br
 />
-                       <a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;change_status=1">'.$Language->getText('forum_admin','update_forum').'</a></p>';
+                       <a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;add_forum=1">'.$Language->getText('forum_admin','add_forum').'</a><br
 /></p>';
+               }
+               //
+               //      Get existing forums
+               //
+               $ff=new ForumFactory($g);
+               if (!$ff || !is_object($ff) || $ff->isError()) {
+                       
exit_error($Language->getText('general','error'),$ff->getErrorMessage());
+               }
+
+               $farr =& $ff->getForums();
+
+               if ($ff->isError()) {
+                       echo 
'<h1>'.$Language->getText('forum','error_no_forums_found', 
array($g->getPublicName())) .'</h1>';
+                       echo $ff->getErrorMessage();
+                       forum_footer(array());
+                       exit;
+               }
+
+               /*
+                       List the existing forums so they can be edited.
+               */
+
+               for ($j = 0; $j < count($farr); $j++) {
+                       if ($farr[$j]->isError()) {
+                               echo $farr->getErrorMessage();
+                       } else {
+                               echo '<a 
href="'.$PHP_SELF.'?group_id='.$group_id.'&amp;change_status=1&amp;group_forum_id='.
 $farr[$j]->getID() .'">'.
+                                       $farr[$j]->getName() .'</a><br 
/>'.$farr[$j]->getDescription().'<p>';
+                       }
+               }
 
                forum_footer(array());
        }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]