[geeklog-cvs] geeklog-1.3/public_html/admin topic.php,1.42,1.43

dhaun at iowaoutdoors.org dhaun at iowaoutdoors.org
Tue Jul 13 16:48:24 EDT 2004


Update of /var/cvs/geeklog-1.3/public_html/admin
In directory www:/tmp/cvs-serv17927/public_html/admin

Modified Files:
	topic.php 
Log Message:
Don't delete topic blocks when deleting a topic (bug #247). Instead, assign them to 'all topics' and disable them. Same thing for feeds.
Also did some source code cleanup and beautifying.


Index: topic.php
===================================================================
RCS file: /var/cvs/geeklog-1.3/public_html/admin/topic.php,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** topic.php	8 Feb 2004 19:00:49 -0000	1.42
--- topic.php	13 Jul 2004 20:48:21 -0000	1.43
***************
*** 58,67 ****
  * Show topic administration form
  *
! * @tid      string      ID of topic to edit
  * 
  */ 
! function edittopic($tid='') 
  {
!     global $_TABLES, $LANG27, $_CONF, $_USER, $LANG_ACCESS;
  
      if (!empty($tid)) {
--- 58,68 ----
  * Show topic administration form
  *
! * @param    string  tid     ID of topic to edit
! * @return   string          HTML for the topic editor
  * 
  */ 
! function edittopic ($tid = '')
  {
!     global $_CONF, $_TABLES, $_USER, $LANG27, $LANG_ACCESS;
  
      if (!empty($tid)) {
***************
*** 100,104 ****
      $topic_templates->set_var('layout_url', $_CONF['layout_url']);
      if (!empty($tid) && SEC_hasRights('topic.edit')) {
!         $topic_templates->set_var('delete_option',"<input type=\"submit\" value=\"$LANG27[21]\" name=\"mode\">");
      }
      $topic_templates->set_var('lang_topicid', $LANG27[2]);
--- 101,106 ----
      $topic_templates->set_var('layout_url', $_CONF['layout_url']);
      if (!empty($tid) && SEC_hasRights('topic.edit')) {
!         $topic_templates->set_var ('delete_option',
!             '<input type="submit" value="' . $LANG27[21] . '" name="mode">');
      }
      $topic_templates->set_var('lang_topicid', $LANG27[2]);
***************
*** 107,111 ****
      $topic_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
      $topic_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
!     $topic_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = {$A['owner_id']}")); 
      $topic_templates->set_var('owner_id', $A['owner_id']);
      $topic_templates->set_var('lang_group', $LANG_ACCESS['group']);
--- 109,114 ----
      $topic_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
      $topic_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
!     $topic_templates->set_var('owner_username', DB_getItem ($_TABLES['users'],
!                               'username', "uid = {$A['owner_id']}")); 
      $topic_templates->set_var('owner_id', $A['owner_id']);
      $topic_templates->set_var('lang_group', $LANG_ACCESS['group']);
***************
*** 128,134 ****
      } else { 
          // they can't set the group then
!         $groupdd = DB_getItem($_TABLES['groups'],'grp_name',"grp_id = {$A['group_id']}");
          $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
! 	}
      $topic_templates->set_var('group_dropdown', $groupdd);
  
--- 131,138 ----
      } else { 
          // they can't set the group then
!         $groupdd = DB_getItem ($_TABLES['groups'], 'grp_name',
!                                "grp_id = {$A['group_id']}");
          $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
!     }
      $topic_templates->set_var('group_dropdown', $groupdd);
  
***************
*** 137,142 ****
      $topic_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
  
! 	// show sort order only if they specified sortnum as the sort method
! 	if ($_CONF["sortmethod"] <> 'alpha') {
          $topic_templates->set_var('lang_sortorder', $LANG27[10]);
          $topic_templates->set_var('sort_order', '<input type="text" size="3" maxlength="3" name="sortnum" value="' . $A['sortnum'] . '">');
--- 141,146 ----
      $topic_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
  
!     // show sort order only if they specified sortnum as the sort method
!     if ($_CONF['sortmethod'] <> 'alpha') {
          $topic_templates->set_var('lang_sortorder', $LANG27[10]);
          $topic_templates->set_var('sort_order', '<input type="text" size="3" maxlength="3" name="sortnum" value="' . $A['sortnum'] . '">');
***************
*** 150,154 ****
      $topic_templates->set_var('lang_topicname', $LANG27[3]);
      $topic_templates->set_var('topic_name', stripslashes ($A['topic']));
! 	if (empty($A['tid'])) { 
          $A['imageurl'] = '/images/icons/'; 
      }
--- 154,158 ----
      $topic_templates->set_var('lang_topicname', $LANG27[3]);
      $topic_templates->set_var('topic_name', stripslashes ($A['topic']));
!     if (empty($A['tid'])) { 
          $A['imageurl'] = '/images/icons/'; 
      }
***************
*** 168,181 ****
      $topic_templates->parse('output', 'editor');
      $retval .= $topic_templates->finish($topic_templates->get_var('output'));
! 	$retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
  
! 	return $retval;
  }
  
! ###############################################################################
! # Saves $tid to the database
  function savetopic($tid,$topic,$imageurl,$sortnum,$limitnews,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_default)
  {
!     global $_TABLES, $_CONF, $LANG27, $MESSAGE;
  
      // Convert array values to numeric permission values
--- 172,202 ----
      $topic_templates->parse('output', 'editor');
      $retval .= $topic_templates->finish($topic_templates->get_var('output'));
!     $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
  
!     return $retval;
  }
  
! /**
! * Save topic to the database
! *
! * @param    string  $tid            Topic ID
! * @param    string  $topic          Name of topic (what the user sees)
! * @param    string  $imageurl       (partial) URL to topic image
! * @param    int     $sortnum        number for sort order in "Topics" block
! * @param    int     $limitnews      number of stories per page for this topic
! * @param    int     $owner_id       ID of owner
! * @param    int     $group_id       ID of group topic belongs to
! * @param    int     $perm_owner     Permissions the owner has
! * @param    int     $perm_group     Permissions the group has
! * @param    int     $perm_member    Permissions members have
! * @param    int     $perm_anon      Permissions anonymous users have
! * @param    string  $is_default     'on' if this is the default topic
! * @return   string                  HTML redirect or error message
! */
  function savetopic($tid,$topic,$imageurl,$sortnum,$limitnews,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_default)
  {
!     global $_CONF, $_TABLES, $LANG27, $MESSAGE;
! 
!     $retval = '';
  
      // Convert array values to numeric permission values
***************
*** 197,213 ****
      }
      if (($access < 3) || !SEC_inGroup ($group_id)) {
!         $display .= COM_siteHeader ('menu');
!         $display .= COM_startBlock ($MESSAGE[30], '',
                              COM_getBlockTemplate ('_msg_block', 'header'));
!         $display .= $MESSAGE[31];
!         $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
!         $display .= COM_siteFooter ();
          COM_accessLog("User {$_USER['username']} tried to illegally create or edit topic $tid.");
-         echo $display;
-         exit;
      } elseif (!empty($tid) && !empty($topic)) {
! 		if ($imageurl == '/images/topics/') { 
! 			$imageurl = ''; 
! 		}	
          $topic = addslashes ($topic);
  
--- 218,232 ----
      }
      if (($access < 3) || !SEC_inGroup ($group_id)) {
!         $retval .= COM_siteHeader ('menu');
!         $retval .= COM_startBlock ($MESSAGE[30], '',
                              COM_getBlockTemplate ('_msg_block', 'header'));
!         $retval .= $MESSAGE[31];
!         $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
!         $retval .= COM_siteFooter ();
          COM_accessLog("User {$_USER['username']} tried to illegally create or edit topic $tid.");
      } elseif (!empty($tid) && !empty($topic)) {
!         if ($imageurl == '/images/topics/') { 
!             $imageurl = ''; 
!         }    
          $topic = addslashes ($topic);
  
***************
*** 219,241 ****
          }
  
! 		DB_save($_TABLES['topics'],'tid, topic, imageurl, sortnum, limitnews, is_default, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon',"'$tid', '$topic', '$imageurl','$sortnum','$limitnews',$is_default,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon",$_CONF['site_admin_url'] . "/topic.php?msg=13");
! 	} else {
! 		$retval .= COM_siteHeader('menu');
! 		$retval .= COM_errorLog($LANG27[7],2);
! 		$retval .= edittopic($tid);
! 		$retval .= COM_siteFooter();
! 		echo $retval;
! 	}
  }
  
! ###############################################################################
! # Displays a list of topics
  function listtopics()
  {
! 	global $_TABLES, $LANG27, $_CONF, $LANG_ACCESS, $_THEME_URL;
  
! 	$retval = '';
  
! 	$retval .= COM_startBlock ($LANG27[8], '',
                                 COM_getBlockTemplate ('_admin_block', 'header'));
  
--- 238,268 ----
          }
  
!         DB_save($_TABLES['topics'],'tid, topic, imageurl, sortnum, limitnews, is_default, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon',"'$tid', '$topic', '$imageurl','$sortnum','$limitnews',$is_default,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon");
!         $retval = COM_refresh ($_CONF['site_admin_url'] . '/topic.php?msg=13');
!     } else {
!         $retval .= COM_siteHeader('menu');
!         $retval .= COM_errorLog($LANG27[7],2);
!         $retval .= edittopic($tid);
!         $retval .= COM_siteFooter();
!     }
! 
!     return $retval;
  }
  
! /**
! * Displays a list of topics
! *
! * Lists all the topics and their icons.
! *
! * @return   string      HTML for the topic list
! *
! */
  function listtopics()
  {
!     global $_CONF, $_TABLES, $LANG27, $LANG_ACCESS, $_THEME_URL;
  
!     $retval = '';
  
!     $retval .= COM_startBlock ($LANG27[8], '',
                                 COM_getBlockTemplate ('_admin_block', 'header'));
  
***************
*** 250,261 ****
      $topic_templates->set_var('begin_row', '<tr align="center" valign="bottom">');
  
! 	$result = DB_query("SELECT * FROM {$_TABLES['topics']}");
! 	$nrows = DB_numRows($result);
! 	$counter = 1;
  
! 	for ($i = 0; $i < $nrows; $i++) {
! 		$A = DB_fetchArray($result);
  
! 		$access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
  
          if ($access > 0) {
--- 277,288 ----
      $topic_templates->set_var('begin_row', '<tr align="center" valign="bottom">');
  
!     $result = DB_query("SELECT * FROM {$_TABLES['topics']}");
!     $nrows = DB_numRows($result);
!     $counter = 1;
  
!     for ($i = 0; $i < $nrows; $i++) {
!         $A = DB_fetchArray($result);
  
!         $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
  
          if ($access > 0) {
***************
*** 274,278 ****
                  $topic_templates->set_var ('default_topic', '');
              }
! 		    if (!empty($A["imageurl"])) {
                  if (isset ($_THEME_URL)) {
                      $imagebase = $_THEME_URL;
--- 301,305 ----
                  $topic_templates->set_var ('default_topic', '');
              }
!             if (!empty($A['imageurl'])) {
                  if (isset ($_THEME_URL)) {
                      $imagebase = $_THEME_URL;
***************
*** 281,306 ****
                  }
                  $topic_templates->set_var('image_tag', '<img src="' . $imagebase . $A['imageurl'] . '" border="0" alt=""><br>');
! 		    } else {
                  $topic_templates->set_var('image_tag', '');
! 		    }
! 		    if ($counter == 5) {
! 			    $counter = 1;
                  $topic_templates->set_var('end_row','</tr>');
                  $topic_templates->parse('list_row','item',true);
                  $topic_templates->set_var('begin_row','<tr align="center" valign="bottom">');
! 		    } else {
                  $topic_templates->set_var('end_row','');
                  $topic_templates->parse('list_row','item',true);
                  $topic_templates->set_var('begin_row','');
! 			    $counter = $counter + 1;
! 		    }
          }
! 	}
      $topic_templates->set_var('end_row','</tr>');
      $topic_templates->parse('output', 'list');
      $retval .= $topic_templates->finish($topic_templates->get_var('output'));
! 	$retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
  
! 	return $retval;
  }
  
--- 308,333 ----
                  }
                  $topic_templates->set_var('image_tag', '<img src="' . $imagebase . $A['imageurl'] . '" border="0" alt=""><br>');
!             } else {
                  $topic_templates->set_var('image_tag', '');
!             }
!             if ($counter == 5) {
!                 $counter = 1;
                  $topic_templates->set_var('end_row','</tr>');
                  $topic_templates->parse('list_row','item',true);
                  $topic_templates->set_var('begin_row','<tr align="center" valign="bottom">');
!             } else {
                  $topic_templates->set_var('end_row','');
                  $topic_templates->parse('list_row','item',true);
                  $topic_templates->set_var('begin_row','');
!                 $counter = $counter + 1;
!             }
          }
!     }
      $topic_templates->set_var('end_row','</tr>');
      $topic_templates->parse('output', 'list');
      $retval .= $topic_templates->finish($topic_templates->get_var('output'));
!     $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
  
!     return $retval;
  }
  
***************
*** 308,311 ****
--- 335,341 ----
  * Delete a topic
  *
+ * @param    string  $tid    Topic ID
+ * @return   string          HTML redirect
+ *
  */
  function deleteTopic ($tid)
***************
*** 322,328 ****
      }
  
      DB_delete ($_TABLES['stories'], 'tid', $tid);
      DB_delete ($_TABLES['storysubmission'], 'tid', $tid);
-     DB_delete ($_TABLES['blocks'], 'tid', $tid);
      DB_delete ($_TABLES['topics'], 'tid', $tid);
  
--- 352,364 ----
      }
  
+     // don't delete topic blocks - assign them to 'all' and disable them
+     DB_query ("UPDATE {$_TABLES['blocks']} SET tid = 'all', is_enabled = 0 WHERE tid = '$tid'");
+ 
+     // same with feeds
+     DB_query ("UPDATE {$_TABLES['syndication']} SET topic = '::all', is_enabled = 0 WHERE topic = '$tid'");
+ 
+     // delete these
      DB_delete ($_TABLES['stories'], 'tid', $tid);
      DB_delete ($_TABLES['storysubmission'], 'tid', $tid);
      DB_delete ($_TABLES['topics'], 'tid', $tid);
  
***************
*** 330,338 ****
  }
  
! ###############################################################################
! # MAIN
  $display = '';
  
  if (($mode == $LANG27[21]) && !empty ($LANG27[21])) { // delete
      if (!isset ($tid) || empty ($tid)) {
          COM_errorLog ('Attempted to delete topic tid=' . $tid);
--- 366,381 ----
  }
  
! 
! // MAIN
  $display = '';
  
+ if (isset ($HTTP_POST_VARS['mode'])) {
+     $mode = $HTTP_POST_VARS['mode'];
+ } else {
+     $mode = $HTTP_GET_VARS['mode'];
+ }
+ 
  if (($mode == $LANG27[21]) && !empty ($LANG27[21])) { // delete
+     $tid = COM_applyFilter ($HTTP_POST_VARS['tid']);
      if (!isset ($tid) || empty ($tid)) {
          COM_errorLog ('Attempted to delete topic tid=' . $tid);
***************
*** 342,354 ****
      }
  } else if (($mode == $LANG27[19]) && !empty ($LANG27[19])) { // save
!     savetopic($tid,$topic,$imageurl,$sortnum,$limitnews,$owner_id,$group_id,
!             $perm_owner,$perm_group,$perm_members,$perm_anon,$is_default);
  } else if ($mode == 'edit') {
      $display .= COM_siteHeader('menu');
!     $display .= edittopic($tid);
      $display .= COM_siteFooter();
  } else { // 'cancel' or no mode at all
      $display .= COM_siteHeader('menu');
!     $display .= COM_showMessage($msg);
      $display .= listtopics();
      $display .= COM_siteFooter();
--- 385,409 ----
      }
  } else if (($mode == $LANG27[19]) && !empty ($LANG27[19])) { // save
!     $display .= savetopic (COM_applyFilter ($HTTP_POST_VARS['tid']),
!                            $HTTP_POST_VARS['topic'],
!                            COM_applyFilter ($HTTP_POST_VARS['imageurl']),
!                            COM_applyFilter ($HTTP_POST_VARS['sortnum']),
!                            COM_applyFilter ($HTTP_POST_VARS['limitnews']),
!                            COM_applyFilter ($HTTP_POST_VARS['owner_id'], true),
!                            COM_applyFilter ($HTTP_POST_VARS['group_id'], true),
!                            $HTTP_POST_VARS['perm_owner'],
!                            $HTTP_POST_VARS['perm_group'],
!                            $HTTP_POST_VARS['perm_members'],
!                            $HTTP_POST_VARS['perm_anon'],
!                            $HTTP_POST_VARS['is_default']);
  } else if ($mode == 'edit') {
      $display .= COM_siteHeader('menu');
!     $display .= edittopic (COM_applyFilter ($HTTP_GET_VARS['tid']));
      $display .= COM_siteFooter();
  } else { // 'cancel' or no mode at all
      $display .= COM_siteHeader('menu');
!     if (isset ($HTTP_GET_VARS['msg'])) {
!         $display .= COM_showMessage (COM_applyFilter ($HTTP_GET_VARS['msg'], true));
!     }
      $display .= listtopics();
      $display .= COM_siteFooter();




More information about the geeklog-cvs mailing list