<?php
/***************************************************************************
* admin_album_cat.php
* -------------------
* Разработка: (C) 2003 Smartor
* Модификация: Гутник Игорь ( чел )
***************************************************************************/
define('IN_PHPBB', true);
if( !empty($setmodules) )
{
$filename = basename(__FILE__);
$module['Photo_Album']['Categories'] = $filename;
return;
}
$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
require($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main_album.' . $phpEx);
require($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin_album.' . $phpEx);
function reorder_cat()
{
global $db;
$sql = "SELECT cat_id, cat_order
FROM ". ALBUM_CAT_TABLE ."
WHERE cat_id <> 0
ORDER BY cat_order ASC";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not get list of Categories', '', __LINE__, __FILE__, $sql);
}
$i = 10;
while( $row = $db->sql_fetchrow($result) )
{
$sql = "UPDATE ". ALBUM_CAT_TABLE ."
SET cat_order = $i
WHERE cat_id = ". $row['cat_id'];
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update order fields', '', __LINE__, __FILE__, $sql);
}
$i += 10;
}
}
if( !isset($HTTP_POST_VARS['mode']) )
{
if( !isset($HTTP_GET_VARS['action']) )
{
$template->set_filenames(array(
'body' => 'admin/album_cat_body.tpl')
);
$template->assign_vars(array(
'L_ALBUM_CAT_TITLE' => $lang['Album_Categories_Title'],
'L_ALBUM_CAT_EXPLAIN' => $lang['Album_Categories_Explain'],
'S_ALBUM_ACTION' => append_sid("admin_album_cat.$phpEx"),
'L_MOVE_UP' => $lang['Move_up'],
'L_MOVE_DOWN' => $lang['Move_down'],
'L_EDIT' => $lang['Edit'],
'L_DELETE' => $lang['Delete'],
'S_MODE' => 'new',
'L_CREATE_CATEGORY' => $lang['Create_category'])
);
$sql = "SELECT *
FROM ". ALBUM_CAT_TABLE ."
ORDER BY cat_order ASC";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query Album Categories information', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$catrow[] = $row;
}
for( $i = 0; $i < count($catrow); $i++ )
{
$template->assign_block_vars('catrow', array(
'COLOR' => ($i % 2) ? 'row_hard' : 'row_easy',
'TITLE' => $catrow[$i]['cat_title'],
'DESC' => $catrow[$i]['cat_desc'],
'S_MOVE_UP' => append_sid("admin_album_cat.$phpEx?action=move&move=-15&cat_id=" . $catrow[$i]['cat_id']),
'S_MOVE_DOWN' => append_sid("admin_album_cat.$phpEx?action=move&move=15&cat_id=" . $catrow[$i]['cat_id']),
'S_EDIT_ACTION' => append_sid("admin_album_cat.$phpEx?action=edit&cat_id=" . $catrow[$i]['cat_id']),
'S_DELETE_ACTION' => append_sid("admin_album_cat.$phpEx?action=delete&cat_id=" . $catrow[$i]['cat_id'])
)
);
}
$template->pparse('body');
include('./page_footer_admin.'.$phpEx);
}
else
{
if( $HTTP_GET_VARS['action'] == 'edit' )
{
$cat_id = intval($HTTP_GET_VARS['cat_id']);
$sql = "SELECT *
FROM ". ALBUM_CAT_TABLE ."
WHERE cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query Album Categories information', '', __LINE__, __FILE__, $sql);
}
if( $db->sql_numrows($result) == 0 )
{
message_die(GENERAL_ERROR, 'The requested category is not existed');
}
$catrow = $db->sql_fetchrow($result);
$template->set_filenames(array(
'body' => 'admin/album_cat_new_body.tpl')
);
$template->assign_vars(array(
'L_ALBUM_CAT_TITLE' => $lang['Album_Categories_Title'],
'L_ALBUM_CAT_EXPLAIN' => $lang['Album_Categories_Explain'],
'S_ALBUM_ACTION' => append_sid("admin_album_cat.$phpEx?cat_id=$cat_id"),
'L_CAT_TITLE' => $lang['Category_Title'],
'L_CAT_DESC' => $lang['Category_Desc'],
'L_CAT_PERMISSIONS' => $lang['Category_Permissions'],
'L_VIEW_LEVEL' => $lang['View_level'],
'L_UPLOAD_LEVEL' => $lang['Upload_level'],
'L_RATE_LEVEL' => $lang['Rate_level'],
'L_COMMENT_LEVEL' => $lang['Comment_level'],
'L_EDIT_LEVEL' => $lang['Edit_level'],
'L_DELETE_LEVEL' => $lang['Delete_level'],
'L_PICS_APPROVAL' => $lang['Pics_Approval'],
'L_GUEST' => $lang['Forum_ALL'],
'L_REG' => $lang['Forum_REG'],
'L_PRIVATE' => $lang['Forum_PRIVATE'],
'L_MOD' => $lang['Forum_MOD'],
'L_ADMIN' => $lang['Forum_ADMIN'],
'L_DISABLED' => $lang['Disabled'],
'S_CAT_TITLE' => $catrow['cat_title'],
'S_CAT_DESC' => $catrow['cat_desc'],
'VIEW_GUEST' => ($catrow['cat_view_level'] == ALBUM_GUEST) ? 'selected="selected"' : '',
'VIEW_REG' => ($catrow['cat_view_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'VIEW_PRIVATE' => ($catrow['cat_view_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'VIEW_MOD' => ($catrow['cat_view_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'VIEW_ADMIN' => ($catrow['cat_view_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'UPLOAD_GUEST' => ($catrow['cat_upload_level'] == ALBUM_GUEST) ? 'selected="selected"' : '',
'UPLOAD_REG' => ($catrow['cat_upload_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'UPLOAD_PRIVATE' => ($catrow['cat_upload_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'UPLOAD_MOD' => ($catrow['cat_upload_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'UPLOAD_ADMIN' => ($catrow['cat_upload_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'RATE_GUEST' => ($catrow['cat_rate_level'] == ALBUM_GUEST) ? 'selected="selected"' : '',
'RATE_REG' => ($catrow['cat_rate_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'RATE_PRIVATE' => ($catrow['cat_rate_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'RATE_MOD' => ($catrow['cat_rate_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'RATE_ADMIN' => ($catrow['cat_rate_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'COMMENT_GUEST' => ($catrow['cat_comment_level'] == ALBUM_GUEST) ? 'selected="selected"' : '',
'COMMENT_REG' => ($catrow['cat_comment_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'COMMENT_PRIVATE' => ($catrow['cat_comment_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'COMMENT_MOD' => ($catrow['cat_comment_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'COMMENT_ADMIN' => ($catrow['cat_comment_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'EDIT_REG' => ($catrow['cat_edit_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'EDIT_PRIVATE' => ($catrow['cat_edit_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'EDIT_MOD' => ($catrow['cat_edit_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'EDIT_ADMIN' => ($catrow['cat_edit_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'DELETE_REG' => ($catrow['cat_delete_level'] == ALBUM_USER) ? 'selected="selected"' : '',
'DELETE_PRIVATE' => ($catrow['cat_delete_level'] == ALBUM_PRIVATE) ? 'selected="selected"' : '',
'DELETE_MOD' => ($catrow['cat_delete_level'] == ALBUM_MOD) ? 'selected="selected"' : '',
'DELETE_ADMIN' => ($catrow['cat_delete_level'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'APPROVAL_DISABLED' => ($catrow['cat_approval'] == ALBUM_USER) ? 'selected="selected"' : '',
'APPROVAL_MOD' => ($catrow['cat_approval'] == ALBUM_MOD) ? 'selected="selected"' : '',
'APPROVAL_ADMIN' => ($catrow['cat_approval'] == ALBUM_ADMIN) ? 'selected="selected"' : '',
'S_MODE' => 'edit',
'S_GUEST' => ALBUM_GUEST,
'S_USER' => ALBUM_USER,
'S_PRIVATE' => ALBUM_PRIVATE,
'S_MOD' => ALBUM_MOD,
'S_ADMIN' => ALBUM_ADMIN,
'L_PANEL_TITLE' => $lang['Edit_Category'])
);
$template->pparse('body');
include('./page_footer_admin.'.$phpEx);
}
else if( $HTTP_GET_VARS['action'] == 'delete' )
{
$cat_id = intval($HTTP_GET_VARS['cat_id']);
$sql = "SELECT cat_id, cat_title, cat_order
FROM ". ALBUM_CAT_TABLE ."
ORDER BY cat_order ASC";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query Album Categories information', '', __LINE__, __FILE__, $sql);
}
$cat_found = FALSE;
while( $row = $db->sql_fetchrow($result) )
{
if( $row['cat_id'] == $cat_id )
{
$thiscat = $row;
$cat_found = TRUE;
}
else
{
$catrow[] = $row;
}
}
if( $cat_found == FALSE )
{
message_die(GENERAL_ERROR, 'The requested category is not existed');
}
$select_to = '<select name="target"><option value="0">'. $lang['Delete_all_pics'] .'</option>';
for ($i = 0; $i < count($catrow); $i++)
{
$select_to .= '<option value="'. $catrow[$i]['cat_id'] .'">'. $catrow[$i]['cat_title'] .'</option>';
}
$select_to .= '</select>';
$template->set_filenames(array(
'body' => 'admin/album_cat_delete_body.tpl')
);
$template->assign_vars(array(
'S_ALBUM_ACTION' => append_sid("admin_album_cat.$phpEx?cat_id=$cat_id"),
'L_CAT_DELETE' => $lang['Delete_Category'],
'L_CAT_DELETE_EXPLAIN' => $lang['Delete_Category_Explain'],
'L_CAT_TITLE' => $lang['Category_Title'],
'S_CAT_TITLE' => $thiscat['cat_title'],
'L_MOVE_CONTENTS' => $lang['Move_contents'],
'L_MOVE_DELETE' => $lang['Move_and_Delete'],
'S_SELECT_TO' => $select_to)
);
$template->pparse('body');
include('./page_footer_admin.'.$phpEx);
}
else if( $HTTP_GET_VARS['action'] == 'move' )
{
$cat_id = intval($HTTP_GET_VARS['cat_id']);
$move = intval($HTTP_GET_VARS['move']);
$sql = "UPDATE ". ALBUM_CAT_TABLE ."
SET cat_order = cat_order + $move
WHERE cat_id = $cat_id";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not change category order', '', __LINE__, __FILE__, $sql);
}
reorder_cat();
$message = $lang['Category_changed_order'] . "<br /><br />" . sprintf($lang['Click_return_album_category'], "<a href=\"" . append_sid("admin_album_cat.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
}
}
else
{
if( $HTTP_POST_VARS['mode'] == 'new' )
{
if( !isset($HTTP_POST_VARS['cat_title']) )
{
$template->set_filenames(array(
'body' => 'admin/album_cat_new_body.tpl')
);
$template->assign_vars(array(
'L_ALBUM_CAT_TITLE' => $lang['Album_Categories_Title'],
'L_ALBUM_CAT_EXPLAIN' => $lang['Album_Categories_Explain'],
'S_ALBUM_ACTION' => append_sid("admin_album_cat.$phpEx"),
'L_CAT_TITLE' => $lang['Category_Title'],
'L_CAT_DESC' => $lang['Category_Desc'],
'L_CAT_PERMISSIONS' => $lang['Category_Permissions'],
'L_VIEW_LEVEL' => $lang['View_level'],
'L_UPLOAD_LEVEL' => $lang['Upload_level'],
'L_RATE_LEVEL' => $lang['Rate_level'],
'L_COMMENT_LEVEL' => $lang['Comment_level'],
'L_EDIT_LEVEL' => $lang['Edit_level'],
'L_DELETE_LEVEL' => $lang['Delete_level'],
'L_PICS_APPROVAL' => $lang['Pics_Approval'],
'L_GUEST' => $lang['Forum_ALL'],
'L_REG' => $lang['Forum_REG'],
'L_PRIVATE' => $lang['Forum_PRIVATE'],
'L_MOD' => $lang['Forum_MOD'],
'L_ADMIN' => $lang['Forum_ADMIN'],
'L_DISABLED' => $lang['Disabled'],
'VIEW_GUEST' => 'selected="selected"',
'UPLOAD_REG' => 'selected="selected"',
'RATE_REG' => 'selected="selected"',
'COMMENT_REG' => 'selected="selected"',
'EDIT_REG' => 'selected="selected"',
'DELETE_MOD' => 'selected="selected"',
'APPROVAL_DISABLED' => 'selected="selected"',
'S_MODE' => 'new',
'S_GUEST' => ALBUM_GUEST,
'S_USER' => ALBUM_USER,
'S_PRIVATE' => ALBUM_PRIVATE,
'S_MOD' => ALBUM_MOD,
'S_ADMIN' => ALBUM_ADMIN,
'L_PANEL_TITLE' => $lang['Create_category'])
);
$template->pparse('body');
include('./page_footer_admin.'.$phpEx);
}
else
{
$cat_title = str_replace("\'", "''", htmlspecialchars(trim($HTTP_POST_VARS['cat_title'])));
$cat_desc = str_replace("\'", "''", trim($HTTP_POST_VARS['cat_desc']));
$view_level = intval($HTTP_POST_VARS['cat_view_level']);
$upload_level = intval($HTTP_POST_VARS['cat_upload_level']);
$rate_level = intval($HTTP_POST_VARS['cat_rate_level']);
$comment_level = intval($HTTP_POST_VARS['cat_comment_level']);
$edit_level = intval($HTTP_POST_VARS['cat_edit_level']);
$delete_level = intval($HTTP_POST_VARS['cat_delete_level']);
$cat_approval = intval($HTTP_POST_VARS['cat_approval']);
$sql = "SELECT cat_order FROM ". ALBUM_CAT_TABLE ."
ORDER BY cat_order DESC
LIMIT 1";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query Album Categories information', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$last_order = $row['cat_order'];
$cat_order = $last_order + 10;
$sql = "INSERT INTO ". ALBUM_CAT_TABLE ." (cat_title, cat_desc, cat_order, cat_view_level, cat_upload_level, cat_rate_level, cat_comment_level, cat_edit_level, cat_delete_level, cat_approval)
VALUES ('$cat_title', '$cat_desc', '$cat_order', '$view_level', '$upload_level', '$rate_level', '$comment_level', '$edit_level', '$delete_level', '$cat_approval')";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not create new Album Category', '', __LINE__, __FILE__, $sql);
}
$message = $lang['New_category_created'] . "<br /><br />" . sprintf($lang['Click_return_album_category'], "<a href=\"" . append_sid("admin_album_cat.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
}
else if( $HTTP_POST_VARS['mode'] == 'edit' )
{
$cat_id = intval($HTTP_GET_VARS['cat_id']);
$cat_title = str_replace("\'", "''", htmlspecialchars(trim($HTTP_POST_VARS['cat_title'])));
$cat_desc = str_replace("\'", "''", trim($HTTP_POST_VARS['cat_desc']));
$view_level = intval($HTTP_POST_VARS['cat_view_level']);
$upload_level = intval($HTTP_POST_VARS['cat_upload_level']);
$rate_level = intval($HTTP_POST_VARS['cat_rate_level']);
$comment_level = intval($HTTP_POST_VARS['cat_comment_level']);
$edit_level = intval($HTTP_POST_VARS['cat_edit_level']);
$delete_level = intval($HTTP_POST_VARS['cat_delete_level']);
$cat_approval = intval($HTTP_POST_VARS['cat_approval']);
$sql = "UPDATE ". ALBUM_CAT_TABLE ."
SET cat_title = '$cat_title', cat_desc = '$cat_desc', cat_view_level = '$view_level', cat_upload_level = '$upload_level', cat_rate_level = '$rate_level', cat_comment_level = '$comment_level', cat_edit_level = '$edit_level', cat_delete_level = '$delete_level', cat_approval = '$cat_approval'
WHERE cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not update this Album Category', '', __LINE__, __FILE__, $sql);
}
$message = $lang['Category_updated'] . "<br /><br />" . sprintf($lang['Click_return_album_category'], "<a href=\"" . append_sid("admin_album_cat.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
else if( $HTTP_POST_VARS['mode'] == 'delete' )
{
$cat_id = intval($HTTP_GET_VARS['cat_id']);
$target = intval($HTTP_POST_VARS['target']);
if( $target == 0 ) // Delete All
{
$sql = "SELECT pic_id, pic_filename, pic_thumbnail, pic_cat_id
FROM ". ALBUM_TABLE ."
WHERE pic_cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query Album information', '', __LINE__, __FILE__, $sql);
}
$picrow = array();
while( $row = $db ->sql_fetchrow($result) )
{
$picrow[] = $row;
$pic_id_row[] = $row['pic_id'];
}
if( count($picrow) != 0 ) // if this category is not empty
{
for ($i = 0; $i < count($picrow); $i++)
{
@unlink('../' . ALBUM_CACHE_PATH . $picrow[$i]['pic_thumbnail']);
@unlink('../' . ALBUM_UPLOAD_PATH . $picrow[$i]['pic_filename']);
}
$pic_id_sql = '(' . implode(',', $pic_id_row) . ')';
$sql = "DELETE FROM ". ALBUM_RATE_TABLE ."
WHERE rate_pic_id IN ". $pic_id_sql;
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete Ratings information', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM ". ALBUM_COMMENT_TABLE ."
WHERE comment_pic_id IN ". $pic_id_sql;
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete Comments information', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM ". ALBUM_TABLE ."
WHERE pic_cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete pic entries in the DB', '', __LINE__, __FILE__, $sql);
}
}
$sql = "DELETE FROM ". ALBUM_CAT_TABLE ."
WHERE cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete this Category', '', __LINE__, __FILE__, $sql);
}
reorder_cat();
$message = $lang['Category_deleted'] . "<br /><br />" . sprintf($lang['Click_return_album_category'], "<a href=\"" . append_sid("admin_album_cat.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
else
{
$sql = "UPDATE ". ALBUM_TABLE ."
SET pic_cat_id = '$target'
WHERE pic_cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not update this Category content', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM ". ALBUM_CAT_TABLE ."
WHERE cat_id = '$cat_id'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete this Category', '', __LINE__, __FILE__, $sql);
}
reorder_cat();
$message = $lang['Category_deleted'] . "<br /><br />" . sprintf($lang['Click_return_album_category'], "<a href=\"" . append_sid("admin_album_cat.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
message_die(GENERAL_MESSAGE, $message);
}
}
}
?>