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));
2020-12-26 01:42:23 +08:00
loggedinorreturn ();
parked ();
if ( $enableoffer == 'no' )
permissiondenied ();
function bark ( $msg ) {
global $lang_offers ;
stdhead ( $lang_offers [ 'head_offer_error' ]);
stdmsg ( $lang_offers [ 'std_error' ], $msg );
stdfoot ();
exit ;
}
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ 'category' ]) && $_GET [ "category" ]){
2020-12-26 01:42:23 +08:00
$categ = isset ( $_GET [ 'category' ]) ? ( int ) $_GET [ 'category' ] : 0 ;
if ( ! is_valid_id ( $categ ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ 'id' ]) && $_GET [ "id" ]){
2021-01-06 00:56:13 +08:00
$id = htmlspecialchars ( intval ( $_GET [ "id" ] ?? 0 ));
2020-12-26 01:42:23 +08:00
if ( preg_match ( '/^[0-9]+$/' , ! $id ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
//==== add offer
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ 'add_offer' ]) && $_GET [ "add_offer" ]){
2022-08-20 19:11:28 +08:00
user_can ( 'addoffer' , true );
2021-01-06 00:56:13 +08:00
$add_offer = intval ( $_GET [ "add_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $add_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
stdhead ( $lang_offers [ 'head_offer' ]);
print ( "<p>" . $lang_offers [ 'text_red_star_required' ] . "</p>" );
print ( "<div align= \" center \" ><form id= \" compose \" action= \" ?new_offer=1 \" name= \" compose \" method= \" post \" >" .
2022-04-11 19:34:49 +08:00
"<table width=100% border=0 cellspacing=0 cellpadding=5><tr><td class=colhead align=center colspan=2>" . $lang_offers [ 'text_offers_open_to_all' ] . "</td></tr> \n " );
2020-12-26 01:42:23 +08:00
$s = "<select name=type> \n <option value=0>" . $lang_offers [ 'select_type_select' ] . "</option> \n " ;
$cats = genrelist ( $browsecatmode );
foreach ( $cats as $row )
$s .= "<option value=" . $row [ "id" ] . ">" . htmlspecialchars ( $row [ "name" ]) . "</option> \n " ;
$s .= "</select> \n " ;
print ( "<tr><td class=rowhead align=right><b>" . $lang_offers [ 'row_type' ] . "<font color=red>*</font></b></td><td class=rowfollow align=left> $s </td></tr>" .
2022-04-11 19:34:49 +08:00
"<tr><td class=rowhead align=right><b>" . $lang_offers [ 'row_title' ] . "<font color=red>*</font></b></td><td class=rowfollow align=left><input type=text name=name style= \" width: 99%; \" />" .
2020-12-26 01:42:23 +08:00
"</td></tr><tr><td class=rowhead align=right><b>" . $lang_offers [ 'row_post_or_photo' ] . "</b></td><td class=rowfollow align=left>" .
2022-04-11 19:34:49 +08:00
"<input type=text name=picture style= \" width: 99%; \" ><br />" . $lang_offers [ 'text_link_to_picture' ] . "</td></tr>" .
2020-12-26 01:42:23 +08:00
"<tr><td class=rowhead align=right valign=top><b>" . $lang_offers [ 'row_description' ] . "<b><font color=red>*</font></td><td class=rowfollow align=left> \n " );
2022-04-11 19:34:49 +08:00
textbbcode ( "compose" , "body" , $body , false , 130 , true );
2020-12-26 01:42:23 +08:00
print ( "</td></tr><tr><td class=toolbox align=center colspan=2><input id=qr type=submit class=btn value=" . $lang_offers [ 'submit_add_offer' ] . " ></td></tr></table></form><br /> \n " );
stdfoot ();
die ;
}
//=== end add offer
//=== take new offer
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ 'new_offer' ]) && $_GET [ "new_offer" ]){
2022-08-20 19:11:28 +08:00
user_can ( 'addoffer' , true );
2021-01-06 00:56:13 +08:00
$new_offer = intval ( $_GET [ "new_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $new_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$userid = intval ( $CURUSER [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( preg_match ( "/^[0-9]+$/" , ! $userid ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
$name = $_POST [ "name" ];
if ( $name == "" )
bark ( $lang_offers [ 'std_must_enter_name' ]);
2021-01-06 00:56:13 +08:00
$cat = intval ( $_POST [ "type" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $cat ))
bark ( $lang_offers [ 'std_must_select_category' ]);
$descrmain = unesc ( $_POST [ "body" ]);
if ( ! $descrmain )
bark ( $lang_offers [ 'std_must_enter_description' ]);
if ( ! empty ( $_POST [ 'picture' ])){
$picture = unesc ( $_POST [ "picture" ]);
2022-04-11 19:34:49 +08:00
if ( ! preg_match ( "/^https?:\/\/[^\s' \" <>]+\.(jpg|gif|png)$/i" , $picture ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_wrong_image_format' ]);
$pic = "[img]" . $picture . "[/img] \n " ;
}
$descr = $pic ;
$descr .= $descrmain ;
2021-06-04 10:26:34 +08:00
$res = sql_query ( "SELECT name FROM offers WHERE name =" . sqlesc ( $_POST [ 'name' ])) or sqlerr ( __FILE__ , __LINE__ );
2020-12-26 01:42:23 +08:00
$arr = mysql_fetch_assoc ( $res );
if ( ! $arr [ 'name' ]){
//===add karma //=== uncomment if you use the mod
2021-06-04 10:26:34 +08:00
//sql_query("UPDATE users SET seedbonus = seedbonus+10.0 WHERE id = $CURUSER['id']") or sqlerr(__FILE__, __LINE__);
2020-12-26 01:42:23 +08:00
//===end
$ret = sql_query ( "INSERT INTO offers (userid, name, descr, category, added) VALUES (" .
2021-01-06 00:56:13 +08:00
implode ( "," , array_map ( "sqlesc" , array ( $CURUSER [ "id" ], $name , $descr , intval ( $_POST [ "type" ] ?? 0 )))) .
2020-12-26 01:42:23 +08:00
", '" . date ( "Y-m-d H:i:s" ) . "')" );
if ( ! $ret ) {
if ( mysql_errno () == 1062 )
bark ( "!!!" );
bark ( "mysql puked: " . mysql_error ());
}
$id = mysql_insert_id ();
2025-09-16 20:14:51 +08:00
// add new offer message to staffmessage
\App\Models\StaffMessage :: query () -> insert ([
'sender' => $CURUSER [ 'id' ],
'subject' => nexus_trans ( 'offer.msg_new_offer_subject' ),
'msg' => nexus_trans ( 'offer.msg_new_offer_msg' , [
'username' => "[url=userdetails.php?id= { $CURUSER [ 'id' ] } ] { $CURUSER [ 'username' ] } [/url]" ,
'offername' => "[url=offers.php?id= { $id } &off_details=1] { $name } [/url]" ]),
'added' => now (),
]);
clear_staff_message_cache ();
2021-06-04 10:26:34 +08:00
write_log ( "offer $name was added by " . $CURUSER [ 'username' ], 'normal' );
2020-12-26 01:42:23 +08:00
2025-02-19 19:46:51 +08:00
header ( "Location: offers.php?id= $id &off_details=1" );
2020-12-26 01:42:23 +08:00
stdhead ( $lang_offers [ 'head_success' ]);
}
else {
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_offer_exists' ] . "<a class=altlink href=offers.php>" . $lang_offers [ 'text_view_all_offers' ] . "</a>" , false );
}
stdfoot ();
die ;
}
//==end take new offer
//=== offer details
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ 'off_details' ]) && $_GET [ "off_details" ]){
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$off_details = intval ( $_GET [ "off_details" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $off_details != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! $id )
die ();
//stderr("Error", "I smell a rat!");
2021-05-26 21:38:39 +08:00
2020-12-26 01:42:23 +08:00
$res = sql_query ( "SELECT * FROM offers WHERE id = $id " ) or sqlerr ( __FILE__ , __LINE__ );
$num = mysql_fetch_array ( $res );
$s = $num [ "name" ];
stdhead ( $lang_offers [ 'head_offer_detail_for' ] . " \" " . $s . " \" " );
print ( "<h1 align= \" center \" id= \" top \" >" . htmlspecialchars ( $s ) . "</h1>" );
2021-05-26 21:38:39 +08:00
print ( "<table width= \" 97% \" cellspacing= \" 0 \" cellpadding= \" 5 \" >" );
2020-12-26 01:42:23 +08:00
$offertime = gettime ( $num [ 'added' ], true , false );
if ( $CURUSER [ 'timetype' ] != 'timealive' )
$offertime = $lang_offers [ 'text_at' ] . $offertime ;
else $offertime = $lang_offers [ 'text_blank' ] . $offertime ;
tr ( $lang_offers [ 'row_info' ], $lang_offers [ 'text_offered_by' ] . get_username ( $num [ 'userid' ]) . $offertime , 1 );
if ( $num [ "allowed" ] == "pending" )
$status = "<font color= \" red \" >" . $lang_offers [ 'text_pending' ] . "</font>" ;
elseif ( $num [ "allowed" ] == "allowed" )
$status = "<font color= \" green \" >" . $lang_offers [ 'text_allowed' ] . "</font>" ;
else
$status = "<font color= \" red \" >" . $lang_offers [ 'text_denied' ] . "</font>" ;
tr ( $lang_offers [ 'row_status' ], $status , 1 );
//=== if you want to have a pending thing for uploaders use this next bit
2022-08-20 19:11:28 +08:00
if ( user_can ( 'offermanage' ) && $num [ "allowed" ] == "pending" )
2020-12-26 01:42:23 +08:00
tr ( $lang_offers [ 'row_allow' ], "<table><tr><td class= \" embedded \" ><form method= \" post \" action= \" ?allow_offer=1 \" ><input type= \" hidden \" value= \" " . $id . " \" name= \" offerid \" />" .
"<input class= \" btn \" type= \" submit \" value= \" " . $lang_offers [ 'submit_allow' ] . " \" /> </form></td><td class= \" embedded \" ><form method= \" post \" action= \" ?id=" . $id . "&finish_offer=1 \" >" .
"<input type= \" hidden \" value= \" " . $id . " \" name= \" finish \" /><input class= \" btn \" type= \" submit \" value= \" " . $lang_offers [ 'submit_let_votes_decide' ] . " \" /></form></td></tr></table>" , 1 );
$zres = sql_query ( "SELECT COUNT(*) from offervotes where vote='yeah' and offerid= $id " );
$arr = mysql_fetch_row ( $zres );
$za = $arr [ 0 ];
$pres = sql_query ( "SELECT COUNT(*) from offervotes where vote='against' and offerid= $id " );
$arr2 = mysql_fetch_row ( $pres );
$protiv = $arr2 [ 0 ];
//=== in the following section, there is a line to report comment... either remove the link or change it to work with your report script :)
//if pending
if ( $num [ "allowed" ] == "pending" ){
tr ( $lang_offers [ 'row_vote' ], "<b>" .
2022-08-20 19:11:28 +08:00
"<a href= \" ?id=" . $id . "&vote=yeah \" ><font color= \" green \" >" . $lang_offers [ 'text_for' ] . "</font></a></b>" . ( user_can ( 'againstoffer' ) ? " - <b><a href= \" ?id=" . $id . "&vote=against \" >" .
2020-12-26 01:42:23 +08:00
"<font color= \" red \" >" . $lang_offers [ 'text_against' ] . "</font></a></b>" : "" ), 1 );
2021-05-26 21:38:39 +08:00
tr ( $lang_offers [ 'row_vote_results' ],
2020-12-26 01:42:23 +08:00
"<b>" . $lang_offers [ 'text_for' ] . ":</b> $za <b>" . $lang_offers [ 'text_against' ] . "</b> $protiv <a href= \" ?id=" . $id . "&offer_vote=1 \" ><i>" . $lang_offers [ 'text_see_vote_detail' ] . "</i></a>" , 1 );
}
//===upload torrent message
if ( $num [ "allowed" ] == "allowed" && $CURUSER [ "id" ] != $num [ "userid" ])
tr ( $lang_offers [ 'row_offer_allowed' ], $lang_offers [ 'text_voter_receives_pm_note' ], 1 );
if ( $num [ "allowed" ] == "allowed" && $CURUSER [ "id" ] == $num [ "userid" ]){
tr ( $lang_offers [ 'row_offer_allowed' ],
$lang_offers [ 'text_urge_upload_offer_note' ], 1 );
}
2022-08-20 19:11:28 +08:00
if ( $CURUSER [ 'id' ] == $num [ 'userid' ] || user_can ( 'offermanage' )){
2020-12-26 01:42:23 +08:00
$edit = "<a href= \" ?id=" . $id . "&edit_offer=1 \" ><img class= \" dt_edit \" src= \" pic/trans.gif \" alt= \" edit \" /> <b><font class= \" small \" >" . $lang_offers [ 'text_edit_offer' ] . "</font></b></a> | " ;
$delete = "<a href= \" ?id=" . $id . "&del_offer=1&sure=0 \" ><img class= \" dt_delete \" src= \" pic/trans.gif \" alt= \" delete \" /> <b><font class= \" small \" >" . $lang_offers [ 'text_delete_offer' ] . "</font></b></a> | " ;
}
$report = "<a href= \" report.php?reportofferid=" . $id . " \" ><img class= \" dt_report \" src= \" pic/trans.gif \" alt= \" report \" /> <b><font class= \" small \" >" . $lang_offers [ 'report_offer' ] . "</font></b></a>" ;
tr ( $lang_offers [ 'row_action' ], $edit . $delete . $report , 1 );
if ( $num [ "descr" ]){
$off_bb = format_comment ( $num [ "descr" ]);
tr ( $lang_offers [ 'row_description' ], $off_bb , 1 );
}
print ( "</table>" );
// -----------------COMMENT SECTION ---------------------//
$commentbar = "<p align= \" center \" ><a class= \" index \" href= \" comment.php?action=add&pid=" . $id . "&type=offer \" >" . $lang_offers [ 'text_add_comment' ] . "</a></p> \n " ;
$subres = sql_query ( "SELECT COUNT(*) FROM comments WHERE offer = $id " );
$subrow = mysql_fetch_array ( $subres );
$count = $subrow [ 0 ];
if ( ! $count ) {
print ( "<h1 id= \" startcomments \" align= \" center \" >" . $lang_offers [ 'text_no_comments' ] . "</h1> \n " );
}
else {
2022-02-14 01:42:24 +08:00
list ( $pagertop , $pagerbottom , $limit ) = pager ( 10 , $count , "offers.php?id= $id &off_details=1&" , array ( 'lastpagedefault' => 1 ));
2020-12-26 01:42:23 +08:00
$subres = sql_query ( "SELECT id, text, user, added, editedby, editdate FROM comments WHERE offer = " . sqlesc ( $id ) . " ORDER BY id $limit " ) or sqlerr ( __FILE__ , __LINE__ );
$allrows = array ();
while ( $subrow = mysql_fetch_array ( $subres ))
$allrows [] = $subrow ;
//end_frame();
//print($commentbar);
print ( $pagertop );
2021-05-26 21:38:39 +08:00
commenttable ( $allrows , "offer" , $id );
2020-12-26 01:42:23 +08:00
print ( $pagerbottom );
}
print ( "<table style='border:1px solid #000000;'><tr>" .
"<td class= \" text \" align= \" center \" ><b>" . $lang_offers [ 'text_quick_comment' ] . "</b><br /><br />" .
"<form id= \" compose \" name= \" comment \" method= \" post \" action= \" comment.php?action=add&type=offer \" onsubmit= \" return postvalid(this); \" >" .
"<input type= \" hidden \" name= \" pid \" value= \" " . $id . " \" /><br />" );
quickreply ( 'comment' , 'body' , $lang_offers [ 'submit_add_comment' ]);
print ( "</form></td></tr></table>" );
print ( $commentbar );
stdfoot ();
die ;
}
//=== end offer details
//=== allow offer by staff
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "allow_offer" ]) && $_GET [ "allow_offer" ]) {
2020-12-26 01:42:23 +08:00
2022-08-20 19:11:28 +08:00
if ( ! user_can ( 'offermanage' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_access_denied' ], $lang_offers [ 'std_mans_job' ]);
2021-01-06 00:56:13 +08:00
$allow_offer = intval ( $_GET [ "allow_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $allow_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
//=== to allow the offer credit to S4NE for this next bit :)
//if ($_POST["offerid"]){
2021-01-06 00:56:13 +08:00
$offid = intval ( $_POST [ "offerid" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $offid ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
$res = sql_query ( "SELECT users.username, offers.userid, offers.name FROM offers inner join users on offers.userid = users.id where offers.id = $offid " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_assoc ( $res );
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $arr [ "userid" ]);
2020-12-26 01:42:23 +08:00
if ( $offeruptimeout_main ){
$timeouthour = floor ( $offeruptimeout_main / 3600 );
2025-04-21 02:53:56 +07:00
$timeoutnote = nexus_trans ( "offer.msg_you_must_upload_in" , [], $locale ) . $timeouthour . nexus_trans ( "offer.msg_hours_otherwise" , [], $locale );
2020-12-26 01:42:23 +08:00
}
else $timeoutnote = "" ;
2025-04-21 02:53:56 +07:00
$msg = $CURUSER [ 'username' ] . nexus_trans ( "offer.msg_has_allowed" , [], $locale ) . "[b][url=" . get_protocol_prefix () . $BASEURL . "/offers.php?id= $offid &off_details=1]" . $arr [ 'name' ] . "[/url][/b]. " . nexus_trans ( "offer.msg_find_offer_option" , [], $locale ) . $timeoutnote ;
2020-12-26 01:42:23 +08:00
2025-04-21 02:53:56 +07:00
$subject = nexus_trans ( "offer.msg_your_offer_allowed" , [], $locale );
2020-12-26 01:42:23 +08:00
$allowedtime = date ( "Y-m-d H:i:s" );
2025-09-16 20:14:51 +08:00
//sql_query("INSERT INTO messages (sender, receiver, added, msg, subject) VALUES(0, {$arr['userid']}, '" . $allowedtime . "', " . sqlesc($msg) . ", ".sqlesc($subject).")") or sqlerr(__FILE__, __LINE__);
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $arr [ 'userid' ],
'msg' => $msg ,
'subject' => $subject ,
'added' => $allowedtime ,
]);
2020-12-26 01:42:23 +08:00
sql_query ( "UPDATE offers SET allowed = 'allowed', allowedtime = '" . $allowedtime . "' WHERE id = $offid " ) or sqlerr ( __FILE__ , __LINE__ );
2021-06-04 10:26:34 +08:00
write_log ( " { $CURUSER [ 'username' ] } allowed offer { $arr [ 'name' ] } " , 'normal' );
2025-02-19 19:46:51 +08:00
header ( "Location: " . get_protocol_prefix () . " $BASEURL /offers.php?id= $offid &off_details=1" );
2020-12-26 01:42:23 +08:00
}
//=== end allow the offer
//=== allow offer by vote
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "finish_offer" ]) && $_GET [ "finish_offer" ]) {
2020-12-26 01:42:23 +08:00
2022-08-20 19:11:28 +08:00
if ( ! user_can ( 'offermanage' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_access_denied' ], $lang_offers [ 'std_have_no_permission' ]);
2021-01-06 00:56:13 +08:00
$finish_offer = intval ( $_GET [ "finish_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $finish_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$offid = intval ( $_POST [ "finish" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $offid ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
$res = sql_query ( "SELECT users.username, offers.userid, offers.name FROM offers inner join users on offers.userid = users.id where offers.id = $offid " ) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_assoc ( $res );
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $arr [ "userid" ]);
2020-12-26 01:42:23 +08:00
$voteresyes = sql_query ( "SELECT COUNT(*) from offervotes where vote='yeah' and offerid= $offid " );
$arryes = mysql_fetch_row ( $voteresyes );
$yes = $arryes [ 0 ];
$voteresno = sql_query ( "SELECT COUNT(*) from offervotes where vote='against' and offerid= $offid " );
$arrno = mysql_fetch_row ( $voteresno );
$no = $arrno [ 0 ];
if ( $yes == '0' && $no == '0' )
stderr ( $lang_offers [ 'std_sorry' ], $lang_offers [ 'std_no_votes_yet' ] . "<a href=offers.php?id= $offid &off_details=1>" . $lang_offers [ 'std_back_to_offer_detail' ] . "</a>" , false );
$finishvotetime = date ( "Y-m-d H:i:s" );
if (( $yes - $no ) >= $minoffervotes ){
if ( $offeruptimeout_main ){
$timeouthour = floor ( $offeruptimeout_main / 3600 );
2025-04-21 02:53:56 +07:00
$timeoutnote = nexus_trans ( "offer.msg_you_must_upload_in" , [], $locale ) . $timeouthour . nexus_trans ( "offer.msg_hours_otherwise" , [], $locale );
2020-12-26 01:42:23 +08:00
}
else $timeoutnote = "" ;
2025-04-21 02:53:56 +07:00
$msg = nexus_trans ( "offer.msg_offer_voted_on" , [], $locale ) . "[b][url=" . get_protocol_prefix () . $BASEURL . "/offers.php?id= $offid &off_details=1]" . $arr [ 'name' ] . "[/url][/b]." . nexus_trans ( "offer.msg_find_offer_option" , [], $locale ) . $timeoutnote ;
2020-12-26 01:42:23 +08:00
sql_query ( "UPDATE offers SET allowed = 'allowed',allowedtime ='" . $finishvotetime . "' WHERE id = $offid " ) or sqlerr ( __FILE__ , __LINE__ );
}
else if (( $no - $yes ) >= $minoffervotes ){
2025-04-21 02:53:56 +07:00
$msg = nexus_trans ( "offer.msg_offer_voted_off" , [], $locale ) . "[b][url=" . get_protocol_prefix () . $BASEURL . "/offers.php?id= $offid &off_details=1]" . $arr [ 'name' ] . "[/url][/b]." . nexus_trans ( "offer.msg_offer_deleted" , [], $locale ) ;
2020-12-26 01:42:23 +08:00
sql_query ( "UPDATE offers SET allowed = 'denied' WHERE id = $offid " ) or sqlerr ( __FILE__ , __LINE__ );
}
//===use this line if you DO HAVE subject in your PM system
2025-04-21 02:53:56 +07:00
$subject = nexus_trans ( "offer.msg_your_offer" , [], $locale ) . $arr [ 'name' ] . nexus_trans ( "offer.msg_voted_on" , [], $locale );
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'subject' => $subject ,
'receiver' => $arr [ 'userid' ],
'added' => $finishvotetime ,
'msg' => $msg ,
]);
2020-12-26 01:42:23 +08:00
//===use this line if you DO NOT subject in your PM system
2021-06-04 10:26:34 +08:00
//sql_query("INSERT INTO messages (sender, receiver, added, msg) VALUES(0, $arr['userid'], '" . date("Y-m-d H:i:s") . "', " . sqlesc($msg) . ")") or sqlerr(__FILE__, __LINE__);
write_log ( " { $CURUSER [ 'username' ] } closed poll { $arr [ 'name' ] } " , 'normal' );
2020-12-26 01:42:23 +08:00
2025-02-19 19:46:51 +08:00
header ( "Location: " . get_protocol_prefix () . " $BASEURL /offers.php?id= $offid &off_details=1" );
2020-12-26 01:42:23 +08:00
die ;
}
//===end allow offer by vote
//=== edit offer
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "edit_offer" ]) && $_GET [ "edit_offer" ]) {
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$edit_offer = intval ( $_GET [ "edit_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $edit_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
$res = sql_query ( "SELECT * FROM offers WHERE id = $id " ) or sqlerr ( __FILE__ , __LINE__ );
$num = mysql_fetch_array ( $res );
$timezone = $num [ "added" ];
$s = $num [ "name" ];
$id2 = $num [ "category" ];
2022-08-20 19:11:28 +08:00
if ( $CURUSER [ "id" ] != $num [ "userid" ] && ! user_can ( 'offermanage' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_cannot_edit_others_offer' ]);
$body = htmlspecialchars ( unesc ( $num [ "descr" ]));
$s2 = "<select name= \" category \" > \n " ;
$cats = genrelist ( $browsecatmode );
foreach ( $cats as $row )
$s2 .= "<option value= \" " . $row [ "id" ] . " \" " . ( $row [ 'id' ] == $id2 ? " selected= \" selected \" " : "" ) . ">" . htmlspecialchars ( $row [ "name" ]) . "</option> \n " ;
$s2 .= "</select> \n " ;
stdhead ( $lang_offers [ 'head_edit_offer' ] . ": $s " );
$title = htmlspecialchars ( trim ( $s ));
2021-05-26 21:38:39 +08:00
2020-12-26 01:42:23 +08:00
print ( "<form id= \" compose \" method= \" post \" name= \" compose \" action= \" ?id=" . $id . "&take_off_edit=1 \" >" .
2021-05-26 21:38:39 +08:00
"<table width= \" 97% \" cellspacing= \" 0 \" cellpadding= \" 3 \" ><tr><td class= \" colhead \" align= \" center \" colspan= \" 2 \" >" . $lang_offers [ 'text_edit_offer' ] . "</td></tr>" );
2020-12-26 01:42:23 +08:00
tr ( $lang_offers [ 'row_type' ] . "<font color= \" red \" >*</font>" , $s2 , 1 );
2022-04-11 19:34:49 +08:00
tr ( $lang_offers [ 'row_title' ] . "<font color= \" red \" >*</font>" , "<input type= \" text \" style= \" width: 99% \" name= \" name \" value= \" " . $title . " \" />" , 1 );
tr ( $lang_offers [ 'row_post_or_photo' ], "<input type= \" text \" name= \" picture \" style= \" width: 99% \" value='' /><br />" . $lang_offers [ 'text_link_to_picture' ], 1 );
2020-12-26 01:42:23 +08:00
print ( "<tr><td class= \" rowhead \" align= \" right \" valign= \" top \" ><b>" . $lang_offers [ 'row_description' ] . "<font color= \" red \" >*</font></b></td><td class= \" rowfollow \" align= \" left \" >" );
2022-04-11 19:34:49 +08:00
textbbcode ( "compose" , "body" , $body , false , 130 , true );
2020-12-26 01:42:23 +08:00
print ( "</td></tr>" );
print ( "<tr><td class= \" toolbox \" style= \" vertical-align: middle; padding-top: 10px; padding-bottom: 10px; \" align= \" center \" colspan= \" 2 \" ><input id= \" qr \" type= \" submit \" value= \" " . $lang_offers [ 'submit_edit_offer' ] . " \" class= \" btn \" /></td></tr></table></form><br /> \n " );
stdfoot ();
die ;
}
//=== end edit offer
//==== take offer edit
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "take_off_edit" ]) && $_GET [ "take_off_edit" ]){
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$take_off_edit = intval ( $_GET [ "take_off_edit" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $take_off_edit != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$id = intval ( $_GET [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
$res = sql_query ( "SELECT userid FROM offers WHERE id = $id " ) or sqlerr ( __FILE__ , __LINE__ );
$num = mysql_fetch_array ( $res );
2022-08-20 19:11:28 +08:00
if ( $CURUSER [ 'id' ] != $num [ 'userid' ] && ! user_can ( 'offermanage' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_access_denied' ]);
$name = $_POST [ "name" ];
if ( ! empty ( $_POST [ 'picture' ])){
$picture = unesc ( $_POST [ "picture" ]);
2022-04-11 19:34:49 +08:00
if ( ! preg_match ( "/^https?:\/\/[^\s' \" <>]+\.(jpg|gif|png)$/i" , $picture ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_wrong_image_format' ]);
$pic = "[img]" . $picture . "[/img] \n " ;
}
$descr = " $pic " ;
$descr .= unesc ( $_POST [ "body" ]);
if ( ! $name )
bark ( $lang_offers [ 'std_must_enter_name' ]);
if ( ! $descr )
bark ( $lang_offers [ 'std_must_enter_description' ]);
2021-01-06 00:56:13 +08:00
$cat = intval ( $_POST [ "category" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $cat ))
bark ( $lang_offers [ 'std_must_select_category' ]);
$name = sqlesc ( $name );
$descr = sqlesc ( $descr );
$cat = sqlesc ( $cat );
sql_query ( "UPDATE offers SET category= $cat , name= $name , descr= $descr where id=" . sqlesc ( $id ));
2025-02-19 19:46:51 +08:00
//header("Location: offers.php?id=$id&off_details=1");
2020-12-26 01:42:23 +08:00
}
//======end take offer edit
//=== offer votes list
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "offer_vote" ]) && $_GET [ "offer_vote" ]){
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$offer_vote = intval ( $_GET [ "offer_vote" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $offer_vote != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$offerid = htmlspecialchars ( intval ( $_GET [ 'id' ] ?? 0 ));
2020-12-26 01:42:23 +08:00
$res2 = sql_query ( "SELECT COUNT(*) FROM offervotes WHERE offerid = " . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
$row = mysql_fetch_array ( $res2 );
$count = $row [ 0 ];
$offername = get_single_value ( "offers" , "name" , "WHERE id=" . sqlesc ( $offerid ));
stdhead ( $lang_offers [ 'head_offer_voters' ] . " - \" " . $offername . " \" " );
print ( "<h1 align=center>" . $lang_offers [ 'text_vote_results_for' ] . " <a href=offers.php?id= $offerid &off_details=1><b>" . htmlspecialchars ( $offername ) . "</b></a></h1>" );
$perpage = 25 ;
list ( $pagertop , $pagerbottom , $limit ) = pager ( $perpage , $count , $_SERVER [ "PHP_SELF" ] . "?id=" . $offerid . "&offer_vote=1&" );
$res = sql_query ( "SELECT * FROM offervotes WHERE offerid=" . sqlesc ( $offerid ) . " " . $limit ) or sqlerr ( __FILE__ , __LINE__ );
if ( mysql_num_rows ( $res ) == 0 )
print ( "<p align=center><b>" . $lang_offers [ 'std_no_votes_yet' ] . "</b></p> \n " );
else
{
echo $pagertop ;
print ( "<table border=1 cellspacing=0 cellpadding=5><tr><td class=colhead>" . $lang_offers [ 'col_user' ] . "</td><td class=colhead align=left>" . $lang_offers [ 'col_vote' ] . "</td> \n " );
while ( $arr = mysql_fetch_assoc ( $res ))
{
2021-06-04 10:26:34 +08:00
if ( $arr [ 'vote' ] == 'yeah' )
2020-12-26 01:42:23 +08:00
$vote = "<b><font color=green>" . $lang_offers [ 'text_for' ] . "</font></b>" ;
2021-06-04 10:26:34 +08:00
elseif ( $arr [ 'vote' ] == 'against' )
2020-12-26 01:42:23 +08:00
$vote = "<b><font color=red>" . $lang_offers [ 'text_against' ] . "</font></b>" ;
else $vote = "unknown" ;
print ( "<tr><td class=rowfollow>" . get_username ( $arr [ 'userid' ]) . "</td><td class=rowfollow align=left >" . $vote . "</td></tr> \n " );
}
print ( "</table> \n " );
echo $pagerbottom ;
}
stdfoot ();
die ;
}
//=== end offer votes list
//=== offer votes
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "vote" ]) && $_GET [ "vote" ]){
2021-01-06 00:56:13 +08:00
$offerid = htmlspecialchars ( intval ( $_GET [ "id" ] ?? 0 ));
2020-12-26 01:42:23 +08:00
$vote = htmlspecialchars ( $_GET [ "vote" ]);
2022-08-20 19:11:28 +08:00
if ( $vote == 'against' && ! user_can ( 'againstoffer' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
if ( $vote == 'yeah' || $vote == 'against' )
{
2021-01-06 00:56:13 +08:00
$userid = intval ( $CURUSER [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
$res = sql_query ( "SELECT * FROM offervotes WHERE offerid=" . sqlesc ( $offerid ) . " AND userid=" . sqlesc ( $userid )) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_assoc ( $res );
$voted = $arr ;
$offer_userid = get_single_value ( "offers" , "userid" , "WHERE id=" . sqlesc ( $offerid ));
if ( $offer_userid == $CURUSER [ 'id' ])
{
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_cannot_vote_youself' ]);
}
elseif ( $voted )
{
stderr ( $lang_offers [ 'std_already_voted' ], $lang_offers [ 'std_already_voted_note' ] . "<a href=offers.php?id= $offerid &off_details=1>" . $lang_offers [ 'std_back_to_offer_detail' ] , false );
}
else
{
sql_query ( "UPDATE offers SET $vote = $vote + 1 WHERE id=" . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
$res = sql_query ( "SELECT users.username, offers.userid, offers.name FROM offers LEFT JOIN users ON offers.userid = users.id WHERE offers.id = " . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
$arr = mysql_fetch_assoc ( $res );
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $arr [ 'userid' ]);
2020-12-26 01:42:23 +08:00
$rs = sql_query ( "SELECT yeah, against, allowed FROM offers WHERE id=" . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
$ya_arr = mysql_fetch_assoc ( $rs );
$yeah = $ya_arr [ "yeah" ];
$against = $ya_arr [ "against" ];
$finishtime = date ( "Y-m-d H:i:s" );
//allowed and send offer voted on message
if (( $yeah - $against ) >= $minoffervotes && $ya_arr [ 'allowed' ] != "allowed" )
{
if ( $offeruptimeout_main ){
$timeouthour = floor ( $offeruptimeout_main / 3600 );
2025-04-21 02:53:56 +07:00
$timeoutnote = nexus_trans ( "offer.msg_you_must_upload_in" , [], $locale ) . $timeouthour . nexus_trans ( "offer.msg_hours_otherwise" , [], $locale );
2020-12-26 01:42:23 +08:00
}
else $timeoutnote = "" ;
sql_query ( "UPDATE offers SET allowed='allowed', allowedtime=" . sqlesc ( $finishtime ) . " WHERE id=" . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
2025-04-21 02:53:56 +07:00
$msg = nexus_trans ( "offer.msg_offer_voted_on" , [], $locale ) . "[b][url=" . get_protocol_prefix () . $BASEURL . "/offers.php?id= $offerid &off_details=1]" . $arr [ 'name' ] . "[/url][/b]." . nexus_trans ( "offer.msg_find_offer_option" , [], $locale ) . $timeoutnote ;
$subject = nexus_trans ( "offer.msg_your_offer_allowed" , [], $locale );
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $arr [ 'userid' ],
'msg' => $msg ,
'subject' => $subject ,
'added' => now (),
]);
2021-06-04 10:26:34 +08:00
write_log ( "System allowed offer { $arr [ 'name' ] } " , 'normal' );
2020-12-26 01:42:23 +08:00
}
//denied and send offer voted off message
if (( $against - $yeah ) >= $minoffervotes && $ya_arr [ 'allowed' ] != "denied" )
{
sql_query ( "UPDATE offers SET allowed='denied' WHERE id=" . sqlesc ( $offerid )) or sqlerr ( __FILE__ , __LINE__ );
2025-04-21 02:53:56 +07:00
$msg = nexus_trans ( "offer.msg_offer_voted_off" , [], $locale ) . "[b][url=" . get_protocol_prefix () . $BASEURL . "/offers.php?id= $offid &off_details=1]" . $arr [ 'name' ] . "[/url][/b]." . nexus_trans ( "offer.msg_offer_deleted" , [], $locale ) ;
$subject = nexus_trans ( "offer.msg_offer_deleted" , [], $locale );
2025-09-16 20:14:51 +08:00
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $arr [ 'userid' ],
'msg' => $msg ,
'subject' => $subject ,
'added' => now (),
]);
2021-06-04 10:26:34 +08:00
write_log ( "System denied offer { $arr [ 'name' ] } " , 'normal' );
2020-12-26 01:42:23 +08:00
}
sql_query ( "INSERT INTO offervotes (offerid, userid, vote) VALUES( $offerid , $userid , " . sqlesc ( $vote ) . ")" ) or sqlerr ( __FILE__ , __LINE__ );
KPS ( "+" , $offervote_bonus , $CURUSER [ "id" ]);
stdhead ( $lang_offers [ 'head_vote_for_offer' ]);
print ( "<h1 align=center>" . $lang_offers [ 'std_vote_accepted' ] . "</h1>" );
print ( $lang_offers [ 'std_vote_accepted_note' ] . "<a href=offers.php?id= $offerid &off_details=1>" . $lang_offers [ 'std_back_to_offer_detail' ]);
stdfoot ();
die ;
}
}
else
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
//=== end offer votes
//=== delete offer
2020-12-28 20:52:54 +08:00
if ( isset ( $_GET [ "del_offer" ]) && $_GET [ "del_offer" ]){
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$del_offer = intval ( $_GET [ "del_offer" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( $del_offer != '1' )
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
2021-01-06 00:56:13 +08:00
$offer = intval ( $_GET [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
2021-01-06 00:56:13 +08:00
$userid = intval ( $CURUSER [ "id" ] ?? 0 );
2020-12-26 01:42:23 +08:00
if ( ! is_valid_id ( $userid ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
$res = sql_query ( "SELECT * FROM offers WHERE id = $offer " ) or sqlerr ( __FILE__ , __LINE__ );
$num = mysql_fetch_array ( $res );
$name = $num [ "name" ];
2022-08-20 19:11:28 +08:00
if ( $userid != $num [ "userid" ] && ! user_can ( 'offermanage' ))
2020-12-26 01:42:23 +08:00
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_cannot_delete_others_offer' ]);
if ( $_GET [ "sure" ])
{
$sure = $_GET [ "sure" ];
if ( $sure == '0' || $sure == '1' )
2021-01-06 00:56:13 +08:00
$sure = intval ( $_GET [ "sure" ] ?? 0 );
2020-12-26 01:42:23 +08:00
else
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
if ( $sure == 0 )
stderr ( $lang_offers [ 'std_delete_offer' ], $lang_offers [ 'std_delete_offer_note' ] . "<br /><form method=post action=offers.php?id= $offer &del_offer=1&sure=1>" . $lang_offers [ 'text_reason_is' ] . "<input type=text style= \" width: 200px \" name=reason><input type=submit value= \" " . $lang_offers [ 'submit_confirm' ] . " \" ></form>" , false );
elseif ( $sure == 1 )
{
$reason = $_POST [ "reason" ];
sql_query ( "DELETE FROM offers WHERE id= $offer " );
sql_query ( "DELETE FROM offervotes WHERE offerid= $offer " );
sql_query ( "DELETE FROM comments WHERE offer= $offer " );
//===add karma //=== use this if you use the karma mod
2021-06-04 10:26:34 +08:00
//sql_query("UPDATE users SET seedbonus = seedbonus-10.0 WHERE id = $num['userid']") or sqlerr(__FILE__, __LINE__);
2020-12-26 01:42:23 +08:00
//===end
if ( $CURUSER [ "id" ] != $num [ "userid" ])
{
2025-09-16 20:14:51 +08:00
$added = date ( "Y-m-d H:i:s" );
2025-04-21 02:53:56 +07:00
$locale = get_user_locale ( $num [ "userid" ]);
2025-09-16 20:14:51 +08:00
$subject = nexus_trans ( "offer.msg_offer_deleted" , [], $locale );
$msg = nexus_trans ( "offer.msg_your_offer" , [], $locale ) . $num [ 'name' ] . nexus_trans ( "offer.msg_was_deleted_by" , [], $locale ) . "[url=userdetails.php?id=" . $CURUSER [ 'id' ] . "]" . $CURUSER [ 'username' ] . "[/url]" . nexus_trans ( "offer.msg_blank" , [], $locale ) . ( $reason != "" ? nexus_trans ( "offer.msg_reason_is" , [], $locale ) . $reason : "" );
\App\Models\Message :: add ([
'sender' => 0 ,
'receiver' => $num [ 'userid' ],
'msg' => $msg ,
'subject' => $subject ,
'added' => now (),
]);
2020-12-26 01:42:23 +08:00
}
2021-06-04 10:26:34 +08:00
write_log ( "Offer: $offer ( { $num [ 'name' ] } ) was deleted by { $CURUSER [ 'username' ] } " . ( $reason != "" ? " (" . $reason . ")" : "" ), 'normal' );
2025-02-19 19:46:51 +08:00
header ( "Location: offers.php" );
2020-12-26 01:42:23 +08:00
die ;
}
else
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
//== end delete offer
//=== prolly not needed, but what the hell... basically stopping the page getting screwed up
2020-12-28 20:52:54 +08:00
$sort = '' ;
if ( isset ( $_GET [ "sort" ]) && $_GET [ "sort" ])
2020-12-26 01:42:23 +08:00
{
$sort = $_GET [ "sort" ];
if ( $sort == 'cat' || $sort == 'name' || $sort == 'added' || $sort == 'comments' || $sort == 'yeah' || $sort == 'against' || $sort == 'v_res' )
$sort = $_GET [ "sort" ];
else
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
//=== end of prolly not needed, but what the hell :P
2021-01-06 00:56:13 +08:00
$categ = intval ( $_GET [ "category" ] ?? 0 );
2020-12-28 20:52:54 +08:00
$offerorid = 0 ;
if ( isset ( $_GET [ "offerorid" ]) && $_GET [ "offerorid" ]){
2021-01-06 00:56:13 +08:00
$offerorid = htmlspecialchars ( intval ( $_GET [ "offerorid" ] ?? 0 ));
2020-12-26 01:42:23 +08:00
if ( preg_match ( "/^[0-9]+$/" , ! $offerorid ))
stderr ( $lang_offers [ 'std_error' ], $lang_offers [ 'std_smell_rat' ]);
}
2020-12-28 20:52:54 +08:00
$search = ( $_GET [ "search" ] ?? '' );
2020-12-26 01:42:23 +08:00
if ( $search ) {
$search = " AND offers.name like " . sqlesc ( "% $search %" );
} else {
$search = "" ;
}
$cat_order_type = "desc" ;
$name_order_type = "desc" ;
$added_order_type = "desc" ;
$comments_order_type = "desc" ;
$v_res_order_type = "desc" ;
/*
if ($cat_order_type == "") { $sort = " ORDER BY added " . $added_order_type; $cat_order_type = "asc"; } // for torrent name
if ($name_order_type == "") { $sort = " ORDER BY added " . $added_order_type; $name_order_type = "desc"; }
if ($added_order_type == "") { $sort = " ORDER BY added " . $added_order_type; $added_order_type = "desc"; }
if ($comments_order_type == "") { $sort = " ORDER BY added " . $added_order_type; $comments_order_type = "desc"; }
if ($v_res_order_type == "") { $sort = " ORDER BY added " . $added_order_type; $v_res_order_type = "desc"; }
*/
if ( $sort == "cat" )
{
if ( $_GET [ 'type' ] == "desc" )
$cat_order_type = "asc" ;
$sort = " ORDER BY category " . $cat_order_type ;
}
else if ( $sort == "name" )
{
if ( $_GET [ 'type' ] == "desc" )
$name_order_type = "asc" ;
$sort = " ORDER BY name " . $name_order_type ;
}
else if ( $sort == "added" )
{
if ( $_GET [ 'type' ] == "desc" )
$added_order_type = "asc" ;
$sort = " ORDER BY added " . $added_order_type ;
}
else if ( $sort == "comments" )
{
if ( $_GET [ 'type' ] == "desc" )
$comments_order_type = "asc" ;
$sort = " ORDER BY comments " . $comments_order_type ;
}
else if ( $sort == "v_res" )
{
if ( $_GET [ 'type' ] == "desc" )
$v_res_order_type = "asc" ;
$sort = " ORDER BY (yeah - against) " . $v_res_order_type ;
}
if ( $offerorid <> NULL )
{
if (( $categ <> NULL ) && ( $categ <> 0 ))
$categ = "WHERE offers.category = " . $categ . " AND offers.userid = " . $offerorid ;
else
$categ = "WHERE offers.userid = " . $offerorid ;
}
else if ( $categ == 0 )
$categ = '' ;
else
$categ = "WHERE offers.category = " . $categ ;
$res = sql_query ( "SELECT count(offers.id) FROM offers inner join categories on offers.category = categories.id inner join users on offers.userid = users.id $categ $search " ) or sqlerr ( __FILE__ , __LINE__ );
$row = mysql_fetch_array ( $res );
$count = $row [ 0 ];
$perpage = 25 ;
2020-12-28 20:52:54 +08:00
list ( $pagertop , $pagerbottom , $limit ) = pager ( $perpage , $count , $_SERVER [ "PHP_SELF" ] . "?" . "category=" . ( $_GET [ "category" ] ?? '' ) . "&sort=" . ( $_GET [ "sort" ] ?? '' ) . "&" );
2020-12-26 01:42:23 +08:00
//stderr("", $sort);
if ( $sort == "" )
$sort = "ORDER BY added desc " ;
$res = sql_query ( "SELECT offers.id, offers.userid, offers.name, offers.added, offers.allowedtime, offers.comments, offers.yeah, offers.against, offers.category as cat_id, offers.allowed, categories.image, categories.name as cat FROM offers inner join categories on offers.category = categories.id $categ $search $sort $limit " ) or sqlerr ( __FILE__ , __LINE__ );
$num = mysql_num_rows ( $res );
stdhead ( $lang_offers [ 'head_offers' ]);
begin_main_frame ();
begin_frame ( $lang_offers [ 'text_offers_section' ], true , 10 , "100%" , "center" );
print ( "<p align= \" left \" ><b><font size= \" 5 \" >" . $lang_offers [ 'text_rules' ] . "</font></b></p> \n " );
print ( "<div align= \" left \" ><ul>" );
print ( "<li>" . $lang_offers [ 'text_rule_one_one' ] . get_user_class_name ( $upload_class , false , true , true ) . $lang_offers [ 'text_rule_one_two' ] . get_user_class_name ( $addoffer_class , false , true , true ) . $lang_offers [ 'text_rule_one_three' ] . "</li> \n " );
2022-09-04 15:56:19 +08:00
$offerSkipApprovedCount = get_setting ( 'main.offer_skip_approved_count' );
if ( is_numeric ( $offerSkipApprovedCount ) && $offerSkipApprovedCount > 0 ) {
print ( "<li>" . sprintf ( $lang_offers [ 'text_rule_skip_offer' ], $offerSkipApprovedCount ) . "</li> \n " );
}
2020-12-26 01:42:23 +08:00
print ( "<li>" . $lang_offers [ 'text_rule_two_one' ] . "<b>" . $minoffervotes . "</b>" . $lang_offers [ 'text_rule_two_two' ] . "</li> \n " );
if ( $offervotetimeout_main )
print ( "<li>" . $lang_offers [ 'text_rule_three_one' ] . "<b>" . ( $offervotetimeout_main / 3600 ) . "</b>" . $lang_offers [ 'text_rule_three_two' ] . "</li> \n " );
if ( $offeruptimeout_main )
print ( "<li>" . $lang_offers [ 'text_rule_four_one' ] . "<b>" . ( $offeruptimeout_main / 3600 ) . "</b>" . $lang_offers [ 'text_rule_four_two' ] . "</li> \n " );
print ( "</ul></div>" );
2022-08-20 19:11:28 +08:00
if ( user_can ( 'addoffer' ))
2025-09-16 20:14:51 +08:00
print ( "<div align= \" center \" style= \" margin-bottom: 8px; \" ><a href= \" ?add_offer=1 \" >" .
2020-12-26 01:42:23 +08:00
"<b>" . $lang_offers [ 'text_add_offer' ] . "</b></a></div>" );
print ( "<div align= \" center \" ><form method= \" get \" action= \" ? \" >" . $lang_offers [ 'text_search_offers' ] . " <input type= \" text \" id= \" specialboxg \" name= \" search \" /> " );
$cats = genrelist ( $browsecatmode );
$catdropdown = "" ;
foreach ( $cats as $cat ) {
$catdropdown .= "<option value= \" " . $cat [ "id" ] . " \" " ;
$catdropdown .= ">" . htmlspecialchars ( $cat [ "name" ]) . "</option> \n " ;
}
print ( "<select name= \" category \" ><option value= \" 0 \" >" . $lang_offers [ 'select_show_all' ] . "</option>" . $catdropdown . "</select> <input type= \" submit \" class= \" btn \" value= \" " . $lang_offers [ 'submit_search' ] . " \" /></form></div>" );
end_frame ();
print ( "<br /><br />" );
$last_offer = strtotime ( $CURUSER [ 'last_offer' ]);
if ( ! $num )
stdmsg ( $lang_offers [ 'text_nothing_found' ], $lang_offers [ 'text_nothing_found' ]);
else
{
2021-06-04 10:26:34 +08:00
$catid = $_GET [ 'category' ];
2020-12-26 01:42:23 +08:00
print ( "<table class= \" torrents \" cellspacing= \" 0 \" cellpadding= \" 5 \" width= \" 100% \" >" );
print ( "<tr><td class= \" colhead \" style= \" padding: 0px \" ><a href= \" ?category=" . $catid . "&sort=cat&type=" . $cat_order_type . " \" >" . $lang_offers [ 'col_type' ] . "</a></td>" .
"<td class= \" colhead \" width= \" 100% \" ><a href= \" ?category=" . $catid . "&sort=name&type=" . $name_order_type . " \" >" . $lang_offers [ 'col_title' ] . "</a></td>" .
"<td colspan= \" 3 \" class= \" colhead \" ><a href= \" ?category=" . $catid . "&sort=v_res&type=" . $v_res_order_type . " \" >" . $lang_offers [ 'col_vote_results' ] . "</a></td>" .
"<td class= \" colhead \" ><a href= \" ?category=" . $catid . "&sort=comments&type=" . $comments_order_type . " \" ><img class= \" comments \" src= \" pic/trans.gif \" alt= \" comments \" title= \" " . $lang_offers [ 'title_comment' ] . " \" />" . $lang_offers [ 'col_comment' ] . "</a></td>" .
"<td class= \" colhead \" ><a href= \" ?category=" . $catid . "&sort=added&type=" . $added_order_type . " \" ><img class= \" time \" src= \" pic/trans.gif \" alt= \" time \" title= \" " . $lang_offers [ 'title_time_added' ] . " \" /></a></td>" );
if ( $offervotetimeout_main > 0 && $offeruptimeout_main > 0 )
print ( "<td class= \" colhead \" >" . $lang_offers [ 'col_timeout' ] . "</td>" );
print ( "<td class= \" colhead \" >" . $lang_offers [ 'col_offered_by' ] . "</td>" .
2022-08-20 19:11:28 +08:00
( user_can ( 'offermanage' ) ? "<td class= \" colhead \" >" . $lang_offers [ 'col_act' ] . "</td>" : "" ) . "</tr> \n " );
2020-12-26 01:42:23 +08:00
for ( $i = 0 ; $i < $num ; ++ $i )
{
$arr = mysql_fetch_assoc ( $res );
$addedby = get_username ( $arr [ 'userid' ]);
$comms = $arr [ 'comments' ];
if ( $comms == 0 )
2021-06-04 10:26:34 +08:00
$comment = "<a href= \" comment.php?action=add&pid=" . $arr [ 'id' ] . "&type=offer \" title= \" " . $lang_offers [ 'title_add_comments' ] . " \" >0</a>" ;
2020-12-26 01:42:23 +08:00
else
{
2021-06-04 10:26:34 +08:00
if ( ! $lastcom = $Cache -> get_value ( 'offer_' . $arr [ 'id' ] . '_last_comment_content' )){
$res2 = sql_query ( "SELECT user, added, text FROM comments WHERE offer = { $arr [ 'id' ] } ORDER BY added DESC LIMIT 1" );
2020-12-26 01:42:23 +08:00
$lastcom = mysql_fetch_array ( $res2 );
2021-06-04 10:26:34 +08:00
$Cache -> cache_value ( 'offer_' . $arr [ 'id' ] . '_last_comment_content' , $lastcom , 1855 );
2020-12-26 01:42:23 +08:00
}
$timestamp = strtotime ( $lastcom [ "added" ]);
$hasnewcom = ( $lastcom [ 'user' ] != $CURUSER [ 'id' ] && $timestamp >= $last_offer );
if ( $CURUSER [ 'showlastcom' ] != 'no' )
{
if ( $lastcom )
{
$title = "" ;
if ( $CURUSER [ 'timetype' ] != 'timealive' )
$lastcomtime = $lang_offers [ 'text_at_time' ] . $lastcom [ 'added' ];
else
$lastcomtime = $lang_offers [ 'text_blank' ] . gettime ( $lastcom [ "added" ], true , false , true );
$counter = $i ;
$lastcom_tooltip [ $counter ][ 'id' ] = "lastcom_" . $counter ;
$lastcom_tooltip [ $counter ][ 'content' ] = ( $hasnewcom ? "<b>(<font class='new'>" . $lang_offers [ 'text_new' ] . "</font>)</b> " : "" ) . $lang_offers [ 'text_last_commented_by' ] . get_username ( $lastcom [ 'user' ]) . $lastcomtime . "<br />" . format_comment ( mb_substr ( $lastcom [ 'text' ], 0 , 100 , "UTF-8" ) . ( mb_strlen ( $lastcom [ 'text' ], "UTF-8" ) > 100 ? " ......" : "" ), true , false , false , true , 600 , false , false );
$onmouseover = "onmouseover= \" domTT_activate(this, event, 'content', document.getElementById('" . $lastcom_tooltip [ $counter ][ 'id' ] . "'), 'trail', false, 'delay', 500,'lifetime',3000,'fade','both','styleClass','niceTitle','fadeMax', 87,'maxWidth', 400); \" " ;
}
}
else
{
$title = " title= \" " . ( $hasnewcom ? $lang_offers [ 'title_has_new_comment' ] : $lang_offers [ 'title_no_new_comment' ]) . " \" " ;
$onmouseover = "" ;
}
2021-06-04 10:26:34 +08:00
$comment = "<b><a" . $title . " href= \" ?id=" . $arr [ 'id' ] . "&off_details=1#startcomments \" " . $onmouseover . ">" . ( $hasnewcom ? "<font class='new'>" : "" ) . $comms . ( $hasnewcom ? "</font>" : "" ) . "</a></b>" ;
2020-12-26 01:42:23 +08:00
}
//==== if you want allow deny for offers use this next bit
if ( $arr [ "allowed" ] == 'allowed' )
$allowed = " <b>[<font color= \" green \" >" . $lang_offers [ 'text_allowed' ] . "</font>]</b>" ;
elseif ( $arr [ "allowed" ] == 'denied' )
$allowed = " <b>[<font color= \" red \" >" . $lang_offers [ 'text_denied' ] . "</font>]</b>" ;
else
$allowed = " <b>[<font color= \" orange \" >" . $lang_offers [ 'text_pending' ] . "</font>]</b>" ;
//===end
if ( $arr [ "yeah" ] == 0 )
2021-06-04 10:26:34 +08:00
$zvote = $arr [ 'yeah' ];
2020-12-26 01:42:23 +08:00
else
2021-06-04 10:26:34 +08:00
$zvote = "<b><a href= \" ?id=" . $arr [ 'id' ] . "&offer_vote=1 \" >" . $arr [ 'yeah' ] . "</a></b>" ;
2020-12-26 01:42:23 +08:00
if ( $arr [ "against" ] == 0 )
2021-06-04 10:26:34 +08:00
$pvote = $arr [ 'against' ];
2020-12-26 01:42:23 +08:00
else
2021-06-04 10:26:34 +08:00
$pvote = "<b><a href= \" ?id=" . $arr [ 'id' ] . "&offer_vote=1 \" >" . $arr [ 'against' ] . "</a></b>" ;
2020-12-26 01:42:23 +08:00
if ( $arr [ "yeah" ] == 0 && $arr [ "against" ] == 0 )
{
$v_res = "0" ;
}
else
{
2021-06-04 10:26:34 +08:00
$v_res = "<b><a href= \" ?id=" . $arr [ 'id' ] . "&offer_vote=1 \" title= \" " . $lang_offers [ 'title_show_vote_details' ] . " \" ><font color= \" green \" >" . $arr [ 'yeah' ] . "</font> - <font color= \" red \" >" . $arr [ 'against' ] . "</font> = " . ( $arr [ 'yeah' ] - $arr [ 'against' ]) . "</a></b>" ;
2020-12-26 01:42:23 +08:00
}
$addtime = gettime ( $arr [ 'added' ], false , true );
2021-06-04 10:26:34 +08:00
$dispname = $arr [ 'name' ];
$count_dispname = mb_strlen ( $arr [ 'name' ], "UTF-8" );
2020-12-26 01:42:23 +08:00
$max_length_of_offer_name = 70 ;
if ( $count_dispname > $max_length_of_offer_name )
$dispname = mb_substr ( $dispname , 0 , $max_length_of_offer_name - 2 , "UTF-8" ) . ".." ;
2022-08-20 19:11:28 +08:00
print ( "<tr><td class= \" rowfollow \" style= \" padding: 0px \" ><a href= \" ?category=" . $arr [ 'cat_id' ] . " \" >" . return_category_image ( $arr [ 'cat_id' ], "" ) . "</a></td><td style='text-align: left'><a href= \" ?id=" . $arr [ 'id' ] . "&off_details=1 \" title= \" " . htmlspecialchars ( $arr [ 'name' ]) . " \" ><b>" . htmlspecialchars ( $dispname ) . "</b></a>" . ( $CURUSER [ 'appendnew' ] != 'no' && strtotime ( $arr [ "added" ]) >= $last_offer ? "<b> (<font class='new'>" . $lang_offers [ 'text_new' ] . "</font>)</b>" : "" ) . $allowed . "</td><td class= \" rowfollow nowrap \" style='padding: 5px' align= \" center \" >" . $v_res . "</td><td class= \" rowfollow nowrap \" " . ( ! user_can ( 'againstoffer' ) ? " colspan= \" 2 \" " : "" ) . " style='padding: 5px'><a href= \" ?id=" . $arr [ 'id' ] . "&vote=yeah \" title= \" " . $lang_offers [ 'title_i_want_this' ] . " \" ><font color= \" green \" ><b>" . $lang_offers [ 'text_yep' ] . "</b></font></a></td>" . ( get_user_class () >= $againstoffer_class ? "<td class= \" rowfollow nowrap \" align= \" center \" ><a href= \" ?id=" . $arr [ 'id' ] . "&vote=against \" title= \" " . $lang_offers [ 'title_do_not_want_it' ] . " \" ><font color= \" red \" ><b>" . $lang_offers [ 'text_nah' ] . "</b></font></a></td>" : "" ));
2020-12-26 01:42:23 +08:00
print ( "<td class= \" rowfollow \" >" . $comment . "</td><td class= \" rowfollow nowrap \" >" . $addtime . "</td>" );
if ( $offervotetimeout_main > 0 && $offeruptimeout_main > 0 ){
if ( $arr [ "allowed" ] == 'allowed' ){
$futuretime = strtotime ( $arr [ 'allowedtime' ]) + $offeruptimeout_main ;
$timeout = gettime ( date ( "Y-m-d H:i:s" , $futuretime ), false , true , true , false , true );
}
elseif ( $arr [ "allowed" ] == 'pending' )
{
$futuretime = strtotime ( $arr [ 'added' ]) + $offervotetimeout_main ;
$timeout = gettime ( date ( "Y-m-d H:i:s" , $futuretime ), false , true , true , false , true );
}
if ( ! $timeout )
$timeout = "N/A" ;
print ( "<td class= \" rowfollow nowrap \" >" . $timeout . "</td>" );
}
2022-08-20 19:11:28 +08:00
print ( "<td class= \" rowfollow \" >" . $addedby . "</td>" . ( user_can ( 'offermanage' ) ? "<td class= \" rowfollow \" ><a href= \" ?id=" . $arr [ 'id' ] . "&del_offer=1 \" ><img class= \" staff_delete \" src= \" pic/trans.gif \" alt= \" D \" title= \" " . $lang_offers [ 'title_delete' ] . " \" /></a><br /><a href= \" ?id=" . $arr [ 'id' ] . "&edit_offer=1 \" ><img class= \" staff_edit \" src= \" pic/trans.gif \" alt= \" E \" title= \" " . $lang_offers [ 'title_edit' ] . " \" /></a></td>" : "" ) . "</tr>" );
2020-12-26 01:42:23 +08:00
}
print ( "</table> \n " );
echo $pagerbottom ;
if ( ! isset ( $CURUSER ) || $CURUSER [ 'showlastcom' ] == 'yes' )
create_tooltip_container ( $lastcom_tooltip , 400 );
}
end_main_frame ();
$USERUPDATESET [] = "last_offer = " . sqlesc ( date ( "Y-m-d H:i:s" ));
stdfoot ();
?>