' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } $sql = "SELECT * FROM " . BB_RANKS . " WHERE rank_id = $rank_id"; if (!$result = DB()->sql_query($sql)) { bb_die('Could not obtain ranks data #1'); } $rank_info = DB()->sql_fetchrow($result); $s_hidden_fields .= ''; } else { $rank_info['rank_special'] = 0; } $s_hidden_fields .= ''; $rank_is_special = !empty($rank_info['rank_special']) ? HTML_CHECKED : ''; $rank_is_not_special = empty($rank_info['rank_special']) ? HTML_CHECKED : ''; // поддержка изображений в ссылках $is_rank_image_link = false; if (!empty($rank_info['rank_image']) && preg_match('#(https?:)?//[^\s\?&;=\#\"<>]+?\.(jpg|jpeg|gif|png|webp|bmp|avif)([a-z0-9/?&%;][^\[\]]*)?#', $rank_info['rank_image'])) { $is_rank_image_link = true; } $template->assign_vars(array( 'TPL_RANKS_EDIT' => true, 'RANK' => !empty($rank_info['rank_title']) ? $rank_info['rank_title'] : '', 'SPECIAL_RANK' => $rank_is_special, 'NOT_SPECIAL_RANK' => $rank_is_not_special, 'MINIMUM' => ($rank_is_special) ? '' : @$rank_info['rank_min'], 'IMAGE' => !empty($rank_info['rank_image']) ? $rank_info['rank_image'] : EXAMPLE_IMAGE, 'STYLE' => !empty($rank_info['rank_style']) ? $rank_info['rank_style'] : '', 'IMAGE_DISPLAY' => (!empty($rank_info['rank_image']) && ($rank_info['rank_image'] != EXAMPLE_IMAGE)) ? '' : '', 'S_RANK_ACTION' => "admin_ranks.php", 'S_HIDDEN_FIELDS' => $s_hidden_fields, )); unset($is_rank_image_link); } elseif ($mode == 'save') { // // Ok, they sent us our info, let's update it. // $rank_id = (isset($_POST['id'])) ? intval($_POST['id']) : 0; $rank_title = (isset($_POST['title'])) ? trim($_POST['title']) : ''; $rank_style = (isset($_POST['style'])) ? trim($_POST['style']) : ''; $special_rank = ($_POST['special_rank'] == 1) ? TRUE : 0; $min_posts = (isset($_POST['min_posts'])) ? intval($_POST['min_posts']) : -1; $rank_image = ((isset($_POST['rank_image']))) ? trim($_POST['rank_image']) : ''; if ($rank_title == '') { bb_die($lang['MUST_SELECT_RANK'] . '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } if ($special_rank == 1) { $max_posts = -1; $min_posts = -1; } // // The rank image has to be a jpg, gif or png // if ($rank_image != '') { if (!preg_match('/(\.gif|\.png|\.jpg|\.jpeg|\.bmp|\.webp|\.avif|\.ico)$/is', $rank_image)) { $rank_image = ''; } } if ($rank_id) { if (!$special_rank) { $sql = "UPDATE " . BB_USERS . " SET user_rank = 0 WHERE user_rank = $rank_id"; if (!$result = DB()->sql_query($sql)) { bb_die($lang['NO_UPDATE_RANKS'] . '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } } $sql = "UPDATE " . BB_RANKS . " SET rank_title = '". DB()->escape($rank_title) ."', rank_special = $special_rank, rank_min = $min_posts, rank_image = '". DB()->escape($rank_image) . "', rank_style = '". DB()->escape($rank_style) ."' WHERE rank_id = $rank_id"; $message = $lang['RANK_UPDATED']; } else { $sql = "INSERT INTO " . BB_RANKS . " (rank_title, rank_special, rank_min, rank_image, rank_style) VALUES ('". DB()->escape($rank_title) ."', $special_rank, $min_posts, '". DB()->escape($rank_image) ."', '". DB()->escape($rank_style) ."')"; $message = $lang['RANK_ADDED']; } if (!$result = DB()->sql_query($sql)) { bb_die('Could not update / insert into ranks table'); } $message .= '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', ''); $datastore->update('ranks'); bb_die($message); } elseif ($mode == 'delete') { // // Ok, they want to delete their rank // if (isset($_POST['id']) || isset($_GET['id'])) { $rank_id = (isset($_POST['id'])) ? intval($_POST['id']) : intval($_GET['id']); } else { $rank_id = 0; } if ($rank_id) { $sql = "DELETE FROM " . BB_RANKS . " WHERE rank_id = $rank_id"; if (!$result = DB()->sql_query($sql)) { bb_die('Could not delete rank data'); } $sql = "UPDATE " . BB_USERS . " SET user_rank = 0 WHERE user_rank = $rank_id"; if (!$result = DB()->sql_query($sql)) { bb_die($lang['NO_UPDATE_RANKS'] . '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } $datastore->update('ranks'); bb_die($lang['RANK_REMOVED'] . '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } else { bb_die($lang['MUST_SELECT_RANK'] . '

' . sprintf($lang['CLICK_RETURN_RANKADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', '')); } } else { bb_die('Invalid mode'); } } else { // // Show the default page // $sql = "SELECT * FROM " . BB_RANKS . " ORDER BY rank_min, rank_title"; if (!$result = DB()->sql_query($sql)) { bb_die('Could not obtain ranks data #2'); } $rank_count = DB()->num_rows($result); $rank_rows = DB()->sql_fetchrowset($result); $template->assign_vars(array( 'TPL_RANKS_LIST' => true, 'S_RANKS_ACTION' => "admin_ranks.php", )); for ($i = 0; $i < $rank_count; $i++) { $rank = $rank_rows[$i]['rank_title']; $special_rank = $rank_rows[$i]['rank_special']; $rank_id = $rank_rows[$i]['rank_id']; $rank_min = $rank_rows[$i]['rank_min']; // поддержка изображений в ссылках $is_rank_image_link = false; if ($rank_rows[$i]['rank_image'] && preg_match('#(https?:)?//[^\s\?&;=\#\"<>]+?\.(jpg|jpeg|gif|png|webp|bmp|avif)([a-z0-9/?&%;][^\[\]]*)?#', $rank_rows[$i]['rank_image'])) { $is_rank_image_link = true; } if ($special_rank == 1) { $rank_min = $rank_max = '-'; } $row_class = !($i % 2) ? 'row1' : 'row2'; $rank_is_special = ($special_rank) ? $lang['YES'] : $lang['NO']; $template->assign_block_vars('ranks', array( 'ROW_CLASS' => $row_class, 'RANK' => $rank, 'STYLE' => $rank_rows[$i]['rank_style'], 'IMAGE_DISPLAY' => ($rank_rows[$i]['rank_image'] && ($rank_rows[$i]['rank_image'] != EXAMPLE_IMAGE)) ? '' : '', 'SPECIAL_RANK' => $rank_is_special, 'RANK_MIN' => $rank_min, 'U_RANK_EDIT' => "admin_ranks.php?mode=edit&id=$rank_id", 'U_RANK_DELETE' => "admin_ranks.php?mode=delete&id=$rank_id", )); unset($is_rank_image_link); } } print_page('admin_ranks.tpl', 'admin');