admin_charts.php
代碼: 選擇全部
<?php
/***************************************************************************
* admin_charts.php
* ------------------
*
* copyright : (C) 2003 dzidzius
* email : dzidzius@forumbest.now.pl <http://www.forumbest.now.pl>
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
define('IN_PHPBB', 1);
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['General']['Charts mod'] = $file;
return;
}
//
// Load default header
//
$phpbb_root_path = "./../";
require($phpbb_root_path . 'extension.inc');
//require($phpbb_root_path . 'common.'.$phpEx);
require('./pagestart.' . $phpEx);
include($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_charts.'.$phpEx);
if( isset($HTTP_GET_VARS['action']) || isset($HTTP_POST_VARS['action']) )
{
$mode = ($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : $HTTP_POST_VARS['action'];
}
else
{
if( isset($HTTP_POST_VARS['end_week']) )
{
$mode = "end_week";
}
else if( isset($HTTP_POST_VARS['save']) )
{
$mode = "save";
}
else if( isset($HTTP_POST_VARS['reset']) )
{
$mode = "reset";
}
else
{
$mode = "";
}
}
if( $mode != "" )
{
if( $mode == "edit" )
{
$chart_id = ( isset($HTTP_GET_VARS['id']) ) ? $HTTP_GET_VARS['id'] : 0;
$template->set_filenames(array(
"body" => "admin/charts_aedit_body.tpl")
);
$s_hidden_fields = '';
if( $mode == "edit" )
{
if( $chart_id )
{
$sql = "SELECT *
FROM ".CHARTS_TABLE."
WHERE chart_id = $chart_id";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$chart_info = $db->sql_fetchrow($result);
$s_hidden_fields .= '<input type="hidden" name="id" value="' . $chart_id . '" />';
}
else
{
message_die(GENERAL_MESSAGE, $lang['Chart_Choose_Err']);
}
}
$template->assign_vars(array(
"L_PAGE_DESC" => $lang['Chart_Page_Desc'],
"L_PAGE_TITLE" => $lang['Chart_Page_Title'],
"L_ADDING_TITLE" => $lang['Chart_Edit'],
"L_ARTIST" => $lang['Chart_Artist_Name'],
"L_SONG_NAME" => $lang['Chart_Song_Name'],
"L_ALBUM" => $lang['Chart_Album_Name'],
"SONG_NAME" => $chart_info['chart_song_name'],
"ALBUM_NAME" => $chart_info['chart_album'],
"ARTIST_NAME" => $chart_info['chart_artist'],
"L_SAVE" => "Save",
"S_CHARTS_ACTION" => append_sid("admin_charts.$phpEx"),
"S_HIDDEN_FIELDS" => $s_hidden_fields)
);
$template->pparse("body");
include('./page_footer_admin.'.$phpEx);
}
else if( $mode == "save" )
{
$chart_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : 0;
$song_name = ( isset($HTTP_POST_VARS['song_name']) ) ? trim($HTTP_POST_VARS['song_name']) : "";
$artist_name = ( isset($HTTP_POST_VARS['artist_name']) ) ? trim($HTTP_POST_VARS['artist_name']) : "";
$album_name = ( isset($HTTP_POST_VARS['album_name']) ) ? trim($HTTP_POST_VARS['album_name']) : "";
if($song_name == "" || $artist_name == "" )
{
message_die(GENERAL_MESSAGE, $lang['Chart_Fields_Err']);
}
if( $chart_id )
{
$sql = "UPDATE ".CHARTS_TABLE."
SET chart_song_name = '" . str_replace("\'", "''", $song_name) . "', chart_artist = '" . str_replace("\'", "''", $artist_name) . "', chart_album = '" . str_replace("\'", "''", $album_name) . "'
WHERE chart_id = $chart_id";
$message = $lang['Chart_DBase_Ok'];
}
else
{
message_die(GENERAL_MESSAGE, $lang['Chart_Choose_Err']);
}
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$message .= "<br /><br />" . sprintf($lang['Chart_Click_Return'], "<a href=\"" . append_sid("admin_charts.$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( $mode == "delete" )
{
if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
{
$chart_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
}
else
{
$chart_id = 0;
}
if( $chart_id )
{
$sql = "DELETE FROM ".CHARTS_VOTERS_TABLE."
WHERE vote_chart_id = $chart_id";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_SQL_Del'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM ".CHARTS_TABLE."
WHERE chart_id = $chart_id";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_SQL_Del'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$message = "Chart deleted" . "<br /><br />" . sprintf($lang['Chart_Click_Return'], "<a href=\"" . append_sid("admin_charts.$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
{
message_die(GENERAL_MESSAGE, $lang['Chart_Choose_Err']);
}
}
else if( $mode == "end_week" )
{
message_die(GENERAL_MESSAGE, "<form method=\"post\" action=\"admin_charts.$phpEx\">".$lang['Chart_Ask_Week']."<br><br><input type=\"submit\" name=\"reset\" value=\"".$lang['Yes']."\" class=\"mainoption\" /> <input type=\"submit\" name=\"\" value=\"".$lang['No']."\" class=\"mainoption\" /></form>");
}
else if( $mode == "reset" )
{
$sql = 'SELECT * FROM '.CHARTS_TABLE.' ORDER BY (chart_hot-chart_not) DESC, chart_artist';
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$rowset = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
$chart_count = count($rowset);
for($i = 0; $i<$chart_count; $i++)
{
if($i+1 < $rowset[$i]['chart_best_pos'] || $rowset[$i]['chart_best_pos']==0)
$add = ', chart_best_pos = ' . ($i+1);
else
$add = '';
$sql = 'UPDATE '.CHARTS_TABLE.'
SET chart_last_pos = '. ($i+1) . $add . '
WHERE chart_id = ' . $rowset[$i]['chart_id'];
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
}
$sql = 'UPDATE '.CONFIG_TABLE.'
SET config_value = config_value+1
WHERE config_name = "charts_week_num"';
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR,$lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$sql = 'DELETE FROM '.CHARTS_VOTERS_TABLE;
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$redirect_page = append_sid("admin_charts.$phpEx");
$message .= $lang['Chart_DBase_Ok']."<br><br>";
$message .= sprintf($lang['Chart_Click_Return'], '<a href="' . $redirect_page . '">', '</a>');
message_die(GENERAL_MESSAGE,$message);
}
}
else
{
$template->set_filenames(array(
"body" => "admin/charts_alist_body.tpl")
);
$sql = 'SELECT chart_id, chart_song_name, chart_artist, chart_album
FROM '.CHARTS_TABLE;
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$template->assign_vars(array(
"L_PAGE_DESC" => $lang['Chart_Page_Desc'],
"L_PAGE_TITLE" => $lang['Chart_Page_Title'],
"L_ARTIST" => $lang['Chart_Artist_Name'],
"L_TITLE" => $lang['Chart_Song_Name'],
"L_ALBUM" => $lang['Chart_Album_Name'],
"L_EDIT" => $lang['Edit'],
"L_DELETE" => $lang['Delete'],
"L_ACTION" => $lang['Action'],
"S_CHARTS_ACTION" => append_sid("admin_charts.$phpEx"),
"L_END_WEEK" => $lang['Chart_End_Week'],
"S_HIDDEN_FIELDS" => '')
);
while($row = $db->sql_fetchrow($result))
{
$i++;
$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
$template->assign_block_vars('charts', array(
"ROW_COLOR" => "#" . $row_color,
"ROW_CLASS" => $row_class,
"V_ARTIST" => $row['chart_artist'],
"V_TITLE" => $row['chart_song_name'],
"V_ALBUM" => $row['chart_album'],
"U_CHART_EDIT" => append_sid("admin_charts.$phpEx?action=edit&id=".$row['chart_id']),
"U_CHART_DELETE" => append_sid("admin_charts.$phpEx?action=delete&id=".$row['chart_id']))
);
}
}
$template->pparse("body");
include('./page_footer_admin.'.$phpEx);
?>
charts.php
代碼: 選擇全部
<?php
/***************************************************************************
* charts.php
* -------------------
*
* copyright : (C) 2003 dzidzius
* email : dzidzius@forumbest.now.pl <http://www.forumbest.now.pl>
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_PROFILE);
init_userprefs($userdata);
//
// End session management
//
include($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_charts.'.$phpEx);
if( isset($HTTP_GET_VARS['action']) || isset($HTTP_POST_VARS['action']) )
{
$mode = ($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : $HTTP_POST_VARS['action'];
}
else
{
//
// These could be entered via a form button
//
if( isset($HTTP_POST_VARS['save']) )
{
$mode = "save";
}
else
{
$mode = "";
}
}
if( $mode != "" )
{
if( $mode == "list" || $mode == "all_list" )
{
$page_title = $lang['Title'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$list_type = ($mode=="list")?"all_list":"list";
$template->set_filenames(array(
"body" => "charts_list_body.tpl")
);
$v_num = ($mode == "list")?10:30;
\r
$template->assign_vars(array(
"V_WEEK_NUM" => $board_config['charts_week_num'],
"U_SHOW_LIST" => append_sid("charts.$phpEx?action=".$list_type),
"L_SHOW_LIST" => ($mode == "list")?$lang['All_Charts']:$lang['Top_Ten'],
"U_ADD_CHART" => append_sid("charts.$phpEx?action=new"),
"L_WEEK" => $lang['Chart_Week'],
"L_CHART_NAME" => $lang['Chart_Name'],
"L_POSITION" => $lang['Chart_Curr_Pos'],
"L_LAST_WEEK" => $lang['Chart_Last_Pos'],
"L_SONG_ARTIST" => $lang['Chart_Song_Artist'],
"L_ALBUM" => $lang['Chart_Album_Name'],
"L_ADDED" => $lang['Chart_Added_By'],
"L_INFO" => $lang['Chart_Info'],
"L_RATE" => $lang['Chart_Rate'],
"L_ADD_CHART" => $lang['New_Song']
)
);
$db->sql_freeresult($result);
$sql = 'SELECT chart_id, chart_hot, chart_not, chart_song_name, chart_artist, chart_album, chart_last_pos, chart_best_pos, username FROM '.CHARTS_TABLE.', '.USERS_TABLE.' WHERE chart_poster_id=user_id ORDER BY (chart_hot-chart_not) DESC, chart_artist LIMIT 0,'.$v_num;
if( !$result = $db->sql_query($sql) )
message_die(GENERAL_ERROR, $lang['Chart_Sql_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
while($row = $db->sql_fetchrow($result))
{
$chart_counter++;
$template->assign_block_vars('chart_block', array(
"CHART_SONG" => $row['chart_song_name'],
"CHART_ARTIST" => $row['chart_artist'],\r
"CHART_ALBUM" => ($row['chart_album']=="NULL")?"":$row['chart_album'],
"CHART_POSTER" => $row['username'],
"CHART_LAST" => ($row['chart_last_pos']==0)?($lang['Chart_New_Song']):"#".$row['chart_last_pos']."<br>(".$lang['Chart_Best_Pos'].": #".$row['chart_best_pos'].")",
"CHART_HOT_NOT" => "(".$lang['Chart_Hot'].": ".$row['chart_hot']." - ".$lang['Chart_Not'].": ".$row['chart_not'].")",
"L_CHART_HOT" => $lang['Chart_Hot'],
"L_CHART_NOT" => $lang['Chart_Not'],
"U_CHART_HOT" => append_sid("charts.$phpEx?action=vote&rate=1&id=".$row['chart_id']),
"U_CHART_NOT" => append_sid("charts.$phpEx?action=vote&rate=2&id=".$row['chart_id']),
"CHART_POS" => $chart_counter
)
);
}
$db->sql_freeresult($result);
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else if( $mode == "vote" )
{
$page_title = $lang['Title'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
{
$chart_id = ( isset($HTTP_POST_VARS['id']) ) ? $HTTP_POST_VARS['id'] : $HTTP_GET_VARS['id'];
}
else
{
$chart_id = 0;
}
if($chart_id)
{
if( isset($HTTP_POST_VARS['rate']) || isset($HTTP_GET_VARS['rate']) )
{
$rate = ( isset($HTTP_POST_VARS['rate']) ) ? $HTTP_POST_VARS['rate'] : $HTTP_GET_VARS['rate'];
\n }
else
{
$rate = 0;
}
if($rate==1||$rate==2)
{
if($userdata['session_logged_in'])
{
$sql = 'SELECT count(*) as counter FROM '.CHARTS_VOTERS_TABLE.' WHERE vote_chart_id = '.$chart_id.' AND vote_user_id = '.$userdata['user_id'];
if( !$result = $db->sql_query($sql) )
message_die(GENERAL_ERROR, $lang['Chart_Sql_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if(!$row['counter'])
{
$sql = 'INSERT INTO '.CHARTS_VOTERS_TABLE.'(vote_user_id, vote_chart_id, vote_rate)
VALUES('.$userdata['user_id'].','.$chart_id.','.$rate.')';
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Base_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
if($rate==1)
$sql = 'UPDATE '.CHARTS_TABLE.'
SET chart_hot=chart_hot+1
WHERE chart_id = '.$chart_id;
else
$sql = 'UPDATE '.CHARTS_TABLE.'
SET chart_not=chart_not+1
WHERE chart_id = '.$chart_id;
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Chart_Sql_Error'], $lang['Error'], __LINE__, __FILE__, $sql);
}
$message = $lang['Chart_vote_add'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=all_list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
else
{
$message = $lang['Chart_Rate_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=all_list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
}
else
{
$message = $lang['Chart_Login_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=all_list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);\r
}
}
else
{
$message = $lang['Chart_Vote_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=all_list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
}
else
{
$message = $lang['Chart_Choose_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=all_list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
}
else if( $mode == "new" )
{
if($userdata['session_logged_in'])
{
$page_title = $lang['Title']." :: ". $lang['New_Song'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$s_hidden_fields = '';
$template->set_filenames(array(
"body" => "charts_new_body.tpl")
);
$template->assign_vars(array(
"L_ADDING_TITLE" => $lang['New_Song'],
"L_SONG_NAME" => $lang['Chart_Song_Name'],
"L_ARTIST" => $lang['Chart_Artist_Name'],
"L_ALBUM" => $lang['Chart_Album_Name'],
"L_ADD_SONG" => $lang['New_Song'],
"S_HIDDEN_FIELDS" => $s_hidden_fields,
"S_CHART_ACTION" => append_sid("charts.$phpEx"),
"L_SHOW_LIST" => $lang['Title'],
"U_SHOW_LIST" => append_sid("charts.$phpEx?action=list")
)
);
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else
{
$message = $lang['Chart_VLogin_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
}
else if( $mode == "save" )
{
if($userdata['session_logged_in'])
{
$song_name = ( isset($HTTP_POST_VARS['song_name']) ) ? trim($HTTP_POST_VARS['song_name']) : "";
$artist_name = ( isset($HTTP_POST_VARS['artist_name']) ) ? trim($HTTP_POST_VARS['artist_name']) : "";
$album_name = ( isset($HTTP_POST_VARS['album_name']) ) ? trim($HTTP_POST_VARS['album_name']) : "";
if( $artist_name == "" || $song_name == "")
{
$message = $lang['Chart_Fields_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
$sql = "INSERT INTO ".CHARTS_TABLE."(chart_song_name, chart_artist, chart_album, chart_poster_id)
VALUES('".$song_name."','".$artist_name."','".$album_name."',".$userdata['user_id'].")";
if(!$result = $db->sql_query($sql))
{
$message = $lang['Chart_Song_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_ERROR, $message);
}
$message = $lang['Chart_Song_Add'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
else
{
$message = $lang['Chart_SLog_Err'];
$message .= "<br /><br />" . sprintf($lang['Chart_click_link'], "<a href=\"" . append_sid("charts.$phpEx?action=list") . "\">", "</a>") . "<br /><br />";
message_die(GENERAL_MESSAGE, $message);
}
}
}
else
{
$page_title = $lang['Title'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
message_die(GENERAL_MESSAGE, $lang['Chart_No_Arguments']);
}
?>