2020-12-26 01:42:23 +08:00
< ? php
2021-01-13 19:32:26 +08:00
require_once ( " ../include/bittorrent.php " );
2020-12-26 01:42:23 +08:00
dbconn ();
require_once ( get_langfile_path ());
2025-04-21 11:57:24 +07:00
//require_once(get_langfile_path("",true));
2021-05-19 13:49:41 +08:00
loggedinorreturn ();
2020-12-26 01:42:23 +08:00
$action = $_GET [ " action " ];
if ( ! $action )
{
$action = ( string ) $_POST [ 'action' ];
if ( ! $action )
$action = 'view' ;
}
if ( $action == 'delete' )
{
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ " id " ] ? ? 0 );
2020-12-26 01:42:23 +08:00
int_check ( $id , true );
$res = sql_query ( " SELECT userid FROM fun WHERE id= $id " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_array ( $res );
if ( ! $arr )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_invalid_id' ]);
2022-08-20 19:11:28 +08:00
user_can ( 'funmanage' , true );
2021-01-06 00:56:13 +08:00
$sure = intval ( $_GET [ " sure " ] ? ? 0 );
2020-12-26 01:42:23 +08:00
$returnto = $_GET [ " returnto " ] ? htmlspecialchars ( $_GET [ " returnto " ]) : htmlspecialchars ( $_SERVER [ " HTTP_REFERER " ]);
if ( ! $sure )
stderr ( $lang_fun [ 'std_delete_fun' ], $lang_fun [ 'text_please_click' ] . " <a class=altlink href=?action=delete&id= $id &returnto= $returnto &sure=1> " . $lang_fun [ 'text_here_if_sure' ], false );
sql_query ( " DELETE FROM fun WHERE id= " . sqlesc ( $id )) or sqlerr ( __FILE__ , __LINE__ );
$Cache -> delete_value ( 'current_fun_content' );
$Cache -> delete_value ( 'current_fun' , true );
$Cache -> delete_value ( 'current_fun_vote_count' );
$Cache -> delete_value ( 'current_fun_vote_funny_count' );
if ( $returnto != " " )
header ( " Location: $returnto " );
}
if ( $action == 'new' )
{
$sql = " SELECT *, IF(ADDTIME(added, '1 0:0:0') < NOW(),true,false) AS neednew FROM fun WHERE status != 'banned' AND status != 'dull' ORDER BY added DESC LIMIT 1 " ;
$result = sql_query ( $sql ) or sqlerr ( __FILE__ , __LINE__ );
$row = mysql_fetch_array ( $result );
if ( $row && ! $row [ 'neednew' ])
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_the_newest_fun_item' ] . htmlspecialchars ( $row [ 'title' ]) . $lang_fun [ 'std_posted_on' ] . $row [ 'added' ] . $lang_fun [ 'std_need_to_wait' ]);
else {
stdhead ( $lang_fun [ 'head_new_fun' ]);
begin_main_frame ();
$title = $lang_fun [ 'text_submit_new_fun' ];
print ( " <form id=compose method=post name= \" compose \" action=?action=add> \n " );
begin_compose ( $title , 'new' );
end_compose ();
end_main_frame ();
}
stdfoot ();
}
if ( $action == 'add' )
{
$sql = " SELECT *, IF(ADDTIME(added, '1 0:0:0') < NOW(),true,false) AS neednew FROM fun WHERE status != 'banned' AND status != 'dull' ORDER BY added DESC LIMIT 1 " ;
$result = sql_query ( $sql ) or sqlerr ( __FILE__ , __LINE__ );
$row = mysql_fetch_array ( $result );
if ( $row && ! $row [ 'neednew' ])
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_the_newest_fun_item' ] . htmlspecialchars ( $row [ 'title' ]) . $lang_fun [ 'std_posted_on' ] . $row [ 'added' ] . $lang_fun [ 'std_need_to_wait' ]);
else {
$body = $_POST [ 'body' ];
if ( ! $body )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_body_is_empty' ]);
$title = htmlspecialchars ( $_POST [ 'subject' ]);
if ( ! $title )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_title_is_empty' ]);
$sql = " INSERT INTO fun (userid, added, body, title, status) VALUES ( " . sqlesc ( $CURUSER [ 'id' ]) . " , " . sqlesc ( date ( " Y-m-d H:i:s " )) . " , " . sqlesc ( $body ) . " , " . sqlesc ( $title ) . " , 'normal') " ;
sql_query ( $sql ) or sqlerr ( __FILE__ , __LINE__ );
$Cache -> delete_value ( 'current_fun_content' );
$Cache -> delete_value ( 'current_fun' , true );
$Cache -> delete_value ( 'current_fun_vote_count' );
$Cache -> delete_value ( 'current_fun_vote_funny_count' );
if ( mysql_affected_rows () == 1 )
$warning = $lang_fun [ 'std_fun_added_successfully' ];
else
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_error_happened' ]);
header ( " Location: " . get_protocol_prefix () . " $BASEURL /index.php " );
}
}
if ( $action == 'view' )
{
?>
< html >< head >
< title >< ? php echo $lang_fun [ 'head_fun' ]; ?> </title>
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " >
< link rel = " stylesheet " href = " <?php echo get_font_css_uri()?> " type = " text/css " >
< link rel = " stylesheet " href = " <?php echo get_css_uri(). " theme . css " ?> " type = " text/css " >
< link rel = " stylesheet " href = " styles/curtain_imageresizer.css " type = " text/css " >
2022-05-07 22:11:24 +08:00
< script src = " js/curtain_imageresizer.js " type = " text/javascript " ></ script >< style type = " text/css " > body { overflow - y : scroll ; overflow - x : hidden } </ style >
2020-12-26 01:42:23 +08:00
</ head >< body class = 'inframe' >
< ? php
print ( get_style_addicode ());
if ( ! $row = $Cache -> get_value ( 'current_fun_content' )){
$result = sql_query ( " SELECT fun.*, IF(ADDTIME(added, '1 0:0:0') < NOW(),true,false) AS neednew FROM fun WHERE status != 'banned' AND status != 'dull' ORDER BY added DESC LIMIT 1 " ) or sqlerr ( __FILE__ , __LINE__ );
$row = mysql_fetch_array ( $result );
$Cache -> cache_value ( 'current_fun_content' , $row , 1043 );
}
if ( $row ){
$title = $row [ 'title' ];
$username = get_username ( $row [ " userid " ], false , true , true , true , false , false , " " , false );
if ( $CURUSER [ 'timetype' ] != 'timealive' )
$time = $lang_fun [ 'text_on' ] . $row [ 'added' ];
else $time = $lang_fun [ 'text_blank' ] . gettime ( $row [ 'added' ], true , false );
$Cache -> new_page ( 'current_fun' , 874 , true );
if ( ! $Cache -> get_page ()){
$Cache -> add_row ();
$Cache -> add_part ();
print ( " <table border=0 cellspacing=0 cellpadding=2 width='100%'><tr><td class=shoutrow align=center><font class=big> " . $title . " </font><font class=small> " . $lang_fun [ 'text_posted_by' ]);
$Cache -> end_part ();
$Cache -> add_part ();
print ( " </font></td></tr><tr><td class=shoutrow> \n " );
print ( format_comment ( $row [ 'body' ], true , true , true ) . " </td></tr></table> " );
$Cache -> end_part ();
$Cache -> end_row ();
$Cache -> cache_page ();
}
while ( $Cache -> next_row ()){
echo $Cache -> next_part ();
print ( $username . $time );
echo $Cache -> next_part ();
}
}
print ( " </body></html> " );
}
if ( $action == 'edit' ){
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ " id " ] ? ? 0 );
2020-12-26 01:42:23 +08:00
int_check ( $id , true );
$res = sql_query ( " SELECT * FROM fun WHERE id= $id " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_array ( $res );
if ( ! $arr )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_invalid_id' ]);
2022-08-20 19:11:28 +08:00
if ( $arr [ " userid " ] != $CURUSER [ " id " ] && ! user_can ( 'funmanage' ))
2020-12-26 01:42:23 +08:00
permissiondenied ();
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' )
{
$body = $_POST [ 'body' ];
if ( $body == " " )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_body_is_empty' ]);
$title = htmlspecialchars ( $_POST [ 'subject' ]);
if ( $title == " " )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_title_is_empty' ]);
$body = sqlesc ( $body );
$title = sqlesc ( $title );
sql_query ( " UPDATE fun SET body= $body , title= $title WHERE id= " . sqlesc ( $id )) or sqlerr ( __FILE__ , __LINE__ );
$Cache -> delete_value ( 'current_fun_content' );
$Cache -> delete_value ( 'current_fun' , true );
header ( " Location: " . get_protocol_prefix () . " $BASEURL /index.php " );
}
else {
stdhead ( $lang_fun [ 'head_edit_fun' ]);
begin_main_frame ();
$title = $lang_fun [ 'text_edit_fun' ];
print ( " <form id=compose method=post name= \" compose \" action=?action=edit&id= " . $id . " > \n " );
begin_compose ( $title , 'edit' , $arr [ 'body' ], true , $arr [ 'title' ]);
end_compose ();
end_main_frame ();
}
stdfoot ();
}
if ( $action == 'ban' )
{
2022-08-20 19:11:28 +08:00
user_can ( 'funmanage' , true );
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ " id " ] ? ? 0 );
2020-12-26 01:42:23 +08:00
int_check ( $id , true );
$res = sql_query ( " SELECT * FROM fun WHERE id= $id " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_array ( $res );
if ( ! $arr )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_invalid_id' ]);
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' )
{
$banreason = htmlspecialchars ( $_POST [ 'banreason' ], ENT_QUOTES );
$title = htmlspecialchars ( $arr [ 'title' ]);
if ( $banreason == " " )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_reason_is_empty' ]);
sql_query ( " UPDATE fun SET status='banned' WHERE id= " . sqlesc ( $id )) or sqlerr ( __FILE__ , __LINE__ );
$Cache -> delete_value ( 'current_fun_content' );
$Cache -> delete_value ( 'current_fun' , true );
$Cache -> delete_value ( 'current_fun_vote_count' );
$Cache -> delete_value ( 'current_fun_vote_funny_count' );
2025-04-21 02:53:56 +07:00
$locale = get_user_lang ( $arr [ 'userid' ]);
$subject = nexus_trans ( " fun.msg_fun_item_banned " , [], $locale );
$msg = nexus_trans ( " fun.msg_your_fun_item " , [], $locale ) . $title . nexus_trans ( " fun.msg_is_ban_by " , [], $locale ) . $CURUSER [ 'username' ] . nexus_trans ( " fun.msg_reason " , [], $locale ) . $banreason ;
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $arr [ 'userid' ],
'subject' => $subject ,
'added' => now (),
'msg' => $msg ,
]);
2021-03-31 03:17:33 +08:00
write_log ( " Fun item $id ( $title ) was banned by { $CURUSER [ 'username' ] } . Reason: $banreason " , 'normal' );
2020-12-26 01:42:23 +08:00
stderr ( $lang_fun [ 'std_success' ], $lang_fun [ 'std_fun_item_banned' ]);
}
else {
stderr ( $lang_fun [ 'std_are_you_sure' ], $lang_fun [ 'std_only_against_rule' ] . " <br /><form name=ban method=post action=fun.php?action=ban&id= " . $id . " ><input type=hidden name=sure value=1> " . $lang_fun [ 'std_reason_required' ] . " <input type=text style= \" width: 200px \" name=banreason><input type=submit value= " . $lang_fun [ 'submit_okay' ] . " ></form> " , false );
}
}
function funreward ( $funvote , $totalvote , $title , $posterid , $bonus )
{
2025-04-21 02:53:56 +07:00
global $lang_fun , $Cache ;
2020-12-26 01:42:23 +08:00
KPS ( " + " , $bonus , $posterid );
2025-04-21 02:53:56 +07:00
$locale = get_user_lang ( $posterid );
$subject = nexus_trans ( " fun.msg_fun_item_reward " , [], $locale );
$msg = $funvote . nexus_trans ( " fun.msg_out_of " , [], $locale ) . $totalvote . nexus_trans ( " fun.msg_people_think " , [], $locale ) . $title . nexus_trans ( " fun.msg_is_fun " , [], $locale ) . $bonus . nexus_trans ( " fun.msg_bonus_as_reward " , [], $locale );
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $posterid ,
'subject' => $subject ,
'added' => now (),
'msg' => $msg ,
]);
2020-12-26 01:42:23 +08:00
sql_query ( $sql ) or sqlerr ( __FILE__ , __LINE__ );
$Cache -> delete_value ( 'user_' . $posterid . '_unread_message_count' );
$Cache -> delete_value ( 'user_' . $posterid . '_inbox_count' );
}
if ( $action == 'vote' )
{
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ " id " ] ? ? 0 );
2020-12-26 01:42:23 +08:00
int_check ( $id , true );
$res = sql_query ( " SELECT * FROM fun WHERE id= $id " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_array ( $res );
if ( ! $arr )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_invalid_id' ]);
else {
2021-03-31 03:17:33 +08:00
$res = sql_query ( " SELECT * FROM funvotes WHERE funid= $id AND userid = { $CURUSER [ 'id' ] } " ) or sqlerr ( __FILE__ , __LINE__ );
2020-12-26 01:42:23 +08:00
$checkvote = mysql_fetch_array ( $res );
if ( $checkvote )
stderr ( $lang_fun [ 'std_error' ], $lang_fun [ 'std_already_vote' ]);
else {
if ( $_GET [ " yourvote " ] == 'dull' )
$vote = 'dull' ;
else $vote = 'fun' ;
$sql = " INSERT INTO funvotes (funid, userid, added, vote) VALUES ( " . sqlesc ( $id ) . " , " . $CURUSER [ 'id' ] . " , " . sqlesc ( date ( " Y-m-d H:i:s " )) . " , " . sqlesc ( $vote ) . " ) " ;
sql_query ( $sql ) or sqlerr ( __FILE__ , __LINE__ );
KPS ( " + " , $funboxvote_bonus , $CURUSER [ 'id' ]); //voter gets 1.0 bonus per vote
$totalvote = $Cache -> get_value ( 'current_fun_vote_count' );
if ( $totalvote == " " ){
$totalvote = get_row_count ( " funvotes " , " WHERE funid = " . sqlesc ( $row [ 'id' ]));
}
else $totalvote ++ ;
$Cache -> cache_value ( 'current_fun_vote_count' , $totalvote , 756 );
$funvote = $Cache -> get_value ( 'current_fun_vote_funny_count' );
if ( $funvote == " " ){
$funvote = get_row_count ( " funvotes " , " WHERE funid = " . sqlesc ( $row [ 'id' ]) . " AND vote='fun' " );
}
elseif ( $vote == 'fun' )
$funvote ++ ;
$Cache -> cache_value ( 'current_fun_vote_funny_count' , $funvote , 756 );
if ( $totalvote ) $ratio = $funvote / $totalvote ; else $ratio = 1 ;
if ( $totalvote >= 20 ){
if ( $ratio > 0.75 ){
sql_query ( " UPDATE fun SET status = 'veryfunny' WHERE id = " . sqlesc ( $id ));
if ( $totalvote == 25 ) //Give fun item poster some bonus and write a message to him
funreward ( $funvote , $totalvote , $arr [ 'title' ], $arr [ 'userid' ], $funboxreward_bonus * 2 );
if ( $totalvote == 50 )
funreward ( $funvote , $totalvote , $arr [ 'title' ], $arr [ 'userid' ], $funboxreward_bonus * 2 );
if ( $totalvote == 100 )
funreward ( $funvote , $totalvote , $arr [ 'title' ], $arr [ 'userid' ], $funboxreward_bonus * 2 );
if ( $totalvote == 200 )
funreward ( $funvote , $totalvote , $arr [ 'title' ], $arr [ 'userid' ], $funboxreward_bonus * 2 );
}
elseif ( $ratio > 0.5 ){
sql_query ( " UPDATE fun SET status = 'funny' WHERE id = " . sqlesc ( $id ));
if ( $totalvote == 25 ) //Give fun item poster some bonus and write a message to him
funreward ( $funvote , $totalvote , $arr [ 'id' ], $arr [ 'userid' ], $funboxreward_bonus );
if ( $totalvote == 50 )
funreward ( $funvote , $totalvote , $arr [ 'id' ], $arr [ 'userid' ], $funboxreward_bonus );
if ( $totalvote == 100 )
funreward ( $funvote , $totalvote , $arr [ 'id' ], $arr [ 'userid' ], $funboxreward_bonus );
if ( $totalvote == 200 )
funreward ( $funvote , $totalvote , $arr [ 'id' ], $arr [ 'userid' ], $funboxreward_bonus );
}
elseif ( $ratio > 0.25 ){
sql_query ( " UPDATE fun SET status = 'notfunny' WHERE id = " . sqlesc ( $id ));
}
else {
sql_query ( " UPDATE fun SET status = 'dull' WHERE id = " . sqlesc ( $id ));
//write a message to fun item poster
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $arr [ 'userid' ]);
$subject = nexus_trans ( " fun.msg_fun_item_dull " , [], $locale );
$msg = ( $totalvote - $funvote ) . nexus_trans ( " fun.msg_out_of " , [], $locale ) . $totalvote . nexus_trans ( " fun.msg_people_think " , [], $locale ) . $arr [ 'title' ] . nexus_trans ( " fun.msg_is_dull " , [], $locale );
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $arr [ 'userid' ],
'subject' => $subject ,
'added' => now (),
'msg' => $msg ,
]);
2020-12-26 01:42:23 +08:00
}
}
}
}
}
?>