mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-24 03:54:10 +01:00
Fixed deleting/creating with no forums/cats left, bug #459962
git-svn-id: file:///svn/phpbb/trunk@1015 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
19ca822630
commit
34c4e7c820
@ -52,6 +52,15 @@ function get_info($mode, $id)
|
||||
message_die(GENERAL_ERROR, "Wrong mode for generating select list", "", __LINE__, __FILE__);
|
||||
break;
|
||||
}
|
||||
$sql = "SELECT count(*) as total
|
||||
FROM $table";
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't get Forum/Category information", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
$count = $db->sql_fetchrow($result);
|
||||
$count = $count['total'];
|
||||
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM $table
|
||||
@ -66,7 +75,9 @@ function get_info($mode, $id)
|
||||
message_die(GENERAL_ERROR, "Forum/Category doesn't exist or multiple forums/categories with ID $id", "", __LINE__, __FILE__);
|
||||
}
|
||||
|
||||
return $db->sql_fetchrow($result);
|
||||
$return = $db->sql_fetchrow($result);
|
||||
$return['number'] = $count;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function get_list($mode, $id, $select)
|
||||
@ -432,8 +443,10 @@ if(isset($mode)) // Are we supposed to do something?
|
||||
case 'deleteforum':
|
||||
// Show form to delete a forum
|
||||
$forum_id = $HTTP_GET_VARS['forum_id'];
|
||||
$to_ids = "<option value=\"-1\"$s>Delete all posts</option>\n";
|
||||
$to_ids .= get_list('forum', $forum_id, 0);
|
||||
$select_to = '<select name="to_id">';
|
||||
$select_to .= "<option value=\"-1\"$s>Delete all posts</option>\n";
|
||||
$select_to .= get_list('forum', $forum_id, 0);
|
||||
$select_to .= '</select>';
|
||||
$buttonvalue = "Move&Delete";
|
||||
$newmode = 'movedelforum';
|
||||
$foruminfo = get_info('forum', $forum_id);
|
||||
@ -446,7 +459,7 @@ if(isset($mode)) // Are we supposed to do something?
|
||||
'NAME' => $name,
|
||||
'S_FORUM_ACTION' => $PHP_SELF,
|
||||
'S_FROM_ID' => $forum_id,
|
||||
'S_TO_IDS' => $to_ids,
|
||||
'S_SELECT_TO' => $select_to,
|
||||
'S_NEWMODE' => $newmode,
|
||||
'BUTTONVALUE' => $buttonvalue)
|
||||
);
|
||||
@ -509,12 +522,38 @@ if(isset($mode)) // Are we supposed to do something?
|
||||
case 'deletecat':
|
||||
// Show form to delete a category
|
||||
$cat_id = $HTTP_GET_VARS['cat_id'];
|
||||
$to_ids = get_list('category', $cat_id, 0);
|
||||
$buttonvalue = "Move&Delete";
|
||||
$newmode = 'movedelcat';
|
||||
$catinfo = get_info('category', $cat_id);
|
||||
$name = $catinfo['cat_title'];
|
||||
|
||||
if ($catinfo['number'] == 1)
|
||||
{
|
||||
$sql = "SELECT count(*) as total
|
||||
FROM ". FORUMS_TABLE;
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't get Forum count", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
$count = $db->sql_fetchrow($result);
|
||||
$count = $count['total'];
|
||||
print "count = $count";
|
||||
if ($count > 0)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "You need to delete all forums before you can delete this category");
|
||||
}
|
||||
else
|
||||
{
|
||||
$select_to = 'Nowhere to move';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$select_to = '<select name="to_id">';
|
||||
$select_to .= get_list('category', $cat_id, 0);
|
||||
$select_to .= '</select>';
|
||||
}
|
||||
|
||||
$template->set_filenames(array(
|
||||
"body" => "admin/forum_delete_body.tpl")
|
||||
);
|
||||
@ -522,7 +561,7 @@ if(isset($mode)) // Are we supposed to do something?
|
||||
'NAME' => $name,
|
||||
'S_FORUM_ACTION' => $PHP_SELF,
|
||||
'S_FROM_ID' => $cat_id,
|
||||
'S_TO_IDS' => $to_ids,
|
||||
'S_SELECT_TO' => $select_to,
|
||||
'S_NEWMODE' => $newmode,
|
||||
'BUTTONVALUE' => $buttonvalue)
|
||||
);
|
||||
@ -534,24 +573,27 @@ if(isset($mode)) // Are we supposed to do something?
|
||||
$from_id = $HTTP_POST_VARS['from_id'];
|
||||
$to_id = $HTTP_POST_VARS['to_id'];
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . CATEGORIES_TABLE . "
|
||||
WHERE cat_id IN ($from_id, $to_id)";
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
if (isset($to_id))
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't verify existence of categories", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
if($db->sql_numrows($result) != 2)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Ambiguous category ID's", "", __LINE__, __FILE__);
|
||||
}
|
||||
$sql = "SELECT *
|
||||
FROM " . CATEGORIES_TABLE . "
|
||||
WHERE cat_id IN ($from_id, $to_id)";
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't verify existence of categories", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
if($db->sql_numrows($result) != 2)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Ambiguous category ID's", "", __LINE__, __FILE__);
|
||||
}
|
||||
|
||||
$sql = "UPDATE " . FORUMS_TABLE . "
|
||||
SET cat_id = $to_id
|
||||
WHERE cat_id = $from_id";
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't move forums to other category", "", __LINE__, __FILE__, $sql);
|
||||
$sql = "UPDATE " . FORUMS_TABLE . "
|
||||
SET cat_id = $to_id
|
||||
WHERE cat_id = $from_id";
|
||||
if( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't move forums to other category", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM " . CATEGORIES_TABLE ."
|
||||
@ -643,7 +685,8 @@ if($total_categories = $db->sql_numrows($q_categories))
|
||||
|
||||
if( !$total_forums = $db->sql_numrows($q_forums) )
|
||||
{
|
||||
message_die(GENERAL_MESSAGE, $lang['No_forums']);
|
||||
// We don't have any forums
|
||||
|
||||
}
|
||||
$forum_rows = $db->sql_fetchrowset($q_forums);
|
||||
|
||||
@ -656,13 +699,6 @@ if($total_categories = $db->sql_numrows($q_categories))
|
||||
for($i = 0; $i < $total_categories; $i++)
|
||||
{
|
||||
$cat_id = $category_rows[$i]['cat_id'];
|
||||
|
||||
for($j = 0; $j < $total_forums; $j++)
|
||||
{
|
||||
$forum_id = $forum_rows[$j]['forum_id'];
|
||||
|
||||
if(!$gen_cat[$cat_id])
|
||||
{
|
||||
$template->assign_block_vars("catrow", array(
|
||||
"CAT_ID" => $cat_id,
|
||||
"CAT_DESC" => stripslashes($category_rows[$i]['cat_title']),
|
||||
@ -674,13 +710,11 @@ if($total_categories = $db->sql_numrows($q_categories))
|
||||
"U_ADDFORUM" => append_sid("$PHP_SELF?mode=addforum&cat_id=$cat_id"),
|
||||
"ADDFORUM" => "Add Forum")
|
||||
);
|
||||
$gen_cat[$cat_id] = 1;
|
||||
}
|
||||
if( $forum_rows[$j]['cat_id'] != $cat_id)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for($j = 0; $j < $total_forums; $j++)
|
||||
{
|
||||
$forum_id = $forum_rows[$j]['forum_id'];
|
||||
|
||||
//
|
||||
// This should end up in the template using IF...ELSE...ENDIF
|
||||
//
|
||||
@ -709,20 +743,15 @@ if($total_categories = $db->sql_numrows($q_categories))
|
||||
"S_ADDFORUM_ENDFORM" => "</FORM>")
|
||||
);
|
||||
} // for ... categories
|
||||
// Extra 'category' to create new categories at the end of the list.
|
||||
$template->assign_block_vars("catrow", array(
|
||||
"S_ADDCAT" => '<FORM METHOD="POST" ACTION="'.append_sid($PHP_SELF).'">
|
||||
<INPUT TYPE="text" NAME="catname">
|
||||
<INPUT TYPE="hidden" NAME="mode" VALUE="addcat">
|
||||
<INPUT TYPE="submit" NAME="submit" VALUE="Create new category">',
|
||||
"S_ADDCAT_ENDFORM" => "</FORM>")
|
||||
);
|
||||
|
||||
}// if ... total_categories
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_MESSAGE, "There are no Categories or Forums on this board", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
$template->assign_block_vars("catrow", array(
|
||||
"S_ADDCAT" => '<FORM METHOD="POST" ACTION="'.append_sid($PHP_SELF).'">
|
||||
<INPUT TYPE="text" NAME="catname">
|
||||
<INPUT TYPE="hidden" NAME="mode" VALUE="addcat">
|
||||
<INPUT TYPE="submit" NAME="submit" VALUE="Create new category">',
|
||||
"S_ADDCAT_ENDFORM" => "</FORM>")
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Generate the page
|
||||
@ -733,4 +762,4 @@ $template->pparse("body");
|
||||
// Page Footer
|
||||
//
|
||||
include('page_footer_admin.'.$phpEx);
|
||||
?>
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user