[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