4chan/views/upboard.php
2025-04-17 14:46:47 -05:00

993 lines
30 KiB
PHP

<?
function upboard_tags()
{
// if you add tags to this, make sure to keep the numbers the same
// (they can be out of order)
static $tags = array(
0 => array("long" => "Hentai", "short" => "[H]"),
6 => array("long" => "Porn", "short" => '[P]'),
1 => array("long" => "Japanese", "short" => "[J]"),
2 => array("long" => "Anime", "short" => "[A]"),
3 => array("long" => "Game", "short" => "[G]"),
5 => array("long" => "Loop", "short" => "[L]"),
4 => array("long" => "Other", "short" => "[?]")
);
return $tags;
}
function updatelog( $resno = 0, $rebuild = 0 )
{
$tags = upboard_tags();
$imgdir = IMG_DIR2;
$thumbdir = THUMB_DIR2;
$imgurl = STATIC_IMG_DIR2;
$sqlog = SQLLOG; // to make this a shite load easier
$find = false;
$resno = (int)$resno;
log_cache();
if( $resno ) {
$result = mysql_board_call( "SELECT `no` FROM `$sqlog` WHERE `root` > 0 AND `no` = '$resno'" );
if( $result ) {
$find = mysql_fetch_row( $result );
mysql_free_result( $result );
}
if( !$find ) {
$result2 = mysql_board_call( "SELECT `no`, `resto` FROM `$sqlog` WHERE `no` = '$resno'" );
list( $chkno, $resto ) = mysql_fetch_row( $result2 );
if( !$resto ) {
error( S_REPORTERR );
}
mysql_free_result( $result2 );
$result3 = mysql_board_call( "SELECT `no` FROM `$sqlog` WHERE `no` = '$resto'" );
if( $result3 ) {
$chkfind = mysql_fetch_row( $result3 );
mysql_free_result( $result3 );
}
if( !$chkfind ) {
error( S_REPORTERR );
}
}
}
if( $resno ) {
if( !$treeline = mysql_board_call( "SELECT * FROM `$sqlog` WHERE `root` > 0 AND `no` = '$resno' ORDER BY `root` DESC" ) ) {
echo S_SQLFAIL;
}
} else {
if( !$treeline = mysql_board_call( "SELECT * FROM `$sqlog` WHERE `root` > 0 ORDER BY `root` DESC" ) ) {
echo S_SQLFAIL;
}
}
if( $resno ) {
//logtime("Generating thread JSON");
if( ENABLE_JSON ) generate_thread_json( $resno );
//$treeline = array( $resno );
//logtime("Formatting thread page");
} else {
//logtime("Generating index JSON");
if( ENABLE_JSON_INDEXES ) generate_index_json();
if( ENABLE_JSON_CATALOG ) generate_board_catalogue();
if( ENABLE_JSON_THREADS ) generate_board_threads_json();
//$treeline = $log['THREADS'];
//logtime("Formatting index page");
}
if( !$result = mysql_board_call( "SELECT MAX(`no`) FROM `$sqlog`" ) ) {
echo S_SQLFAIL;
}
$row = mysql_fetch_array( $result );
$lastno = (int)$row[0];
mysql_free_result( $result );
$counttree = mysql_num_rows( $treeline );
if( !$counttree ) {
$logfilename = SELF_PATH2_FILE;
$dat = '';
head( $dat, $resno );
form( $dat, $resno );
print_page( $logfilename, $dat );
}
$page = 0;
$dat = '';
head( $dat, $resno );
form( $dat, $resno );
if( !$resno ) {
$st = $page;
}
$dat .= '<hr style="clear:both"><form name="delform" action="' . SELF_PATH_ABS . '" method="post" id="delform"><div class="board">';
// here we go
if( !$resno ) {
$dat .= <<<HTML
<table class="flashListing">
<tr>
<td class="postblock">No.</td>
<td class="postblock">Name</td>
<td class="postblock">File</td>
<td class="postblock">Tag</td>
<td class="postblock">Subject</td>
<td class="postblock">Size</td>
<td class="postblock">Date</td>
<td class="postblock">Replies</td>
<td class="postblock"></td>
</tr>
HTML;
}
$delarr = array();
$limit = (int)round( DEF_PAGES * 0.83 );
$lim = DEF_PAGES - $limit;
if( !$result = mysql_board_call( "SELECT COUNT(*) FROM `$sqlog` WHERE `resto` = '0'" ) ) {
echo S_SQLFAIL;
}
$row = mysql_fetch_array( $result );
$countth = (int)$row[0];
if( $limit < $countth ) {
if( !$result = mysql_board_call( "SELECT `no` FROM `$sqlog` WHERE `resto` = '0' ORDER BY `no` ASC LIMIT $lim" ) ) {
echo S_SQLFAIL;
}
while( $row = mysql_fetch_array( $result ) ) {
$delarr[] = (int)$row[0];
}
}
mysql_free_result( $result );
for( $i = $st; $i < $st + DEF_PAGES; $i++ ) { // NO PAGES FOR /f/ (apparently!)
//if( !mysql_fetch_assoc($treeline) ) continue;
$thistree = mysql_fetch_assoc( $treeline );
if( !$thistree ) break;
extract( $thistree );
//list($no,$sticky,$permasage,$closed,$now,$name,$email,$sub,$com,$host,$pwd,$filename,$ext,$w,$h,$tn_w,$tn_h,$tim,$time,$md5,$fsize,$root,$resto,$filedeleted,$tmd5,$id,$capcode)=mysql_fetch_row($treeline);
$tag_matches = array();
$tag = 4;
if( preg_match( '/^(\d+)\|/', $sub, $tag_matches ) ) {
$tag = (int)( $tag_matches[1] );
$sub = preg_replace( '/^(\d+)\|/', '', $sub );
}
if( $resno ) {
if( !$no ) {
break;
}
$sub = str_replace( '&#44;', ',', $sub );
$emailstart = $emailend = '';
//if( $email != '' ) {
// $email = emailencode($email);
// $emailstart = '<a href="mailto:' . $email . '" class="useremail">';
// $emailend = '</a>';
//}
// NEW CAPCODE STUFF
switch( $capcode ) {
case 'admin':
$capcodeStart = ' <strong class="capcode">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = '';
break;
case 'admin_highlight':
$capcodeStart = ' <strong class="capcode">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = ' highlightPost';
break;
case 'mod':
$capcodeStart = ' <strong class="capcode">## Mod</strong>';
$capcode_class = ' capcodeMod';
$capcode = ' <img src="' . $imgurl . 'modicon.gif" alt="This user is a 4chan Moderator." title="This user is a 4chan Moderator." class="identityIcon">';
$highlight = '';
break;
case 'developer':
$capcodeStart = ' <strong class="capcode">## Developer</strong>';
$capcode_class = ' capcodeDeveloper';
$capcode = ' <img src="' . $imgurl . 'developericon.gif" alt="This user is a 4chan Developer." title="This user is a 4chan Developer." class="identityIcon">';
$highlight = '';
break;
case 'manager':
$capcodeStart = ' <strong class="capcode hand id_manager" title="Highlight posts by Managers">## Manager</strong>';
$capcode_class = ' capcodeManager';
$capcode = ' <img src="' . $imgurl . 'managericon.gif" alt="Manager Icon" title="This user is a 4chan Manager." class="identityIcon retina">';
$highlight = '';
break;
case 'verified':
$capcodeStart = ' <strong class="capcode hand id_verified" title="Highlight posts by Verified Users">## Verified</strong>';
$capcode_class = ' capcodeVerified';
$capcode = '';
$highlight = '';
break;
default:
$capcode = $capcodeStart = $highlight = $capcode_class = '';
break;
}
$com = auto_link( $com, $resno );
$subshort = $sub;
if( mb_strlen( $sub ) > 28 ) {
$subshort = '<span title="' . $sub . '">' . mb_substr( $sub, 0, 25, 'UTF-8' ) . '(...)</span>';
}
$file = '';
if( $ext ) {
$img = IMG_DIR . $tim . $ext;
$displaysrc = $imgdir . rawurlencode( $filename ) . $ext;
$src = IMG_DIR . $filename . $ext;
$longname = $filename . $ext;
if( $fsize >= 1048576 ) {
$size = round( $fsize / 1048576, 2 ) . ' M';
} elseif( $fsize >= 1024 ) {
$size = round( $fsize / 1048 ) . ' K';
} else {
$size = $fsize . ' ';
}
if( $filedeleted ) {
$imgsrc = '[<b>File Deleted</b>]';
$class = '';
} else {
$imgsrc = '<span class="fileText" id="fT' . $no . '">' . S_PICNAME . ': <a data-width="' . $w . '" data-height="' . $h . '" href="' . $displaysrc . '" target="_blank">' . $longname . '</a>-(' . $size . 'B, ' . $w . 'x' . $h . ', ' . $tags[$tag]['long'] . ')';
$class = ' class="fileInfo"';
}
$imgClassStart = ( $imgsrc == '' ) ? '' : '<div class="fileInfo">';
$imgClassEnd = ( $imgsrc == '' ) ? '' : '</div>';
$file = <<<HTML
<div class="file" id="f$no">
$imgClassStart
$imgsrc
$imgClassEnd
</div>
HTML;
}
// Main creatio
if( $sticky == 1 ) {
$threadmodes .= ' <img src="' . $imgurl . 'sticky.gif" alt="Sticky" title="Sticky" style="height: 18px; width: 18px;"/>';
}
if( $closed == 1 ) {
$threadmodes .= ' <img src="' . $imgurl . 'closed.gif" alt="Closed" title="Closed" style="height: 18px; width: 18px;"/>';
}
$href = ( $resno ) ? $no . PHP_EXT2 : RES_DIR2 . $no . PHP_EXT2;
$quote = ( $resno ) ? 'javascript:quote(\'' . $no . '\');' : $href . '#q' . $no;
$extra = '';
$stickies = array();
if( !$result = mysql_board_call( "SELECT `no` FROM `$sqlog` WHERE `sticky` = '1'" ) ) {
echo S_SQLFAIL;
}
while( $stickrow = mysql_fetch_row( $result ) ) {
list( $stickno ) = $stickrow;
$stickies[] = $stickno;
}
if( in_array( $no, $delarr ) ) {
if( in_array( $no, $stickies ) ) {
$stuck = 1;
}
if( $stuck != 1 ) {
$extra = '<span class="oldpost">' . S_OLD . '</span>';
}
}
$dat .= <<<HTML
<div class="thread" id="t$no">
<div class="postContainer opContainer" id="pc$no">
<div id="p$no" class="post op$highlight">
<div class="postInfoM mobile" id="pim$no">
<span class="nameBlock$capcode_class">
$emailstart<span class="name">$name</span>$capcodeStart$emailend$dispuid$countryFlag$threadmodes<br>
<span class="subject">$subshort</span>
</span>
<span class="dateTime postNum" data-utc="$time">$now<br><em><a href="$href#p$no">No.</a><a href="$quote">$no</a></em></span>
</div>
$file
<div class="postInfo desktop" id="pi$no">
<input type="checkbox" name="$no" value="delete">
<span class="subject">$sub</span>
<span class="nameBlock$capcode_class">
$emailstart<span class="name">$name</span>$capcodeStart$emailend$dispuid$countryFlag
</span>
<span class="dateTime" data-utc="$time">$now</span>
<span class="postNum">
<a href="$href#p$no" title="Link to this post">No.</a><a href="$quote" title="Reply to this post">$no</a>$threadmodes$postinfo_extra
</span>
</div>
<blockquote class="postMessage" id="m$no">$com</blockquote>
</div>
$postInfo
</div>
$extra
HTML;
if( !$resline = mysql_board_call( "SELECT * FROM `$sqlog` WHERE `resto` = '$no' ORDER BY `no`" ) ) {
echo S_SQLFAIL;
}
$countres = mysql_num_rows( $resline );
$s = 0;
while( $resrow = mysql_fetch_assoc( $resline ) ) {
extract( $resrow );
//list($no,$sticky,$permasage,$closed,$now,$name,$email,$sub,$com,$host,$pwd,$filename,$ext,$w,$h,$tn_w,$tn_h,$tim,$time,$md5,$fsize,$root,$resto)=$resrow;
if( !$no ) {
break;
}
$emailstart = $emailend = '';
//if( $email != '' ) {
// $email = emailencode($email);
// $emailstart = '<a href="mailto:' . $email . '" class="useremail">';
// $emailend = '</a>';
//}
// NEW CAPCODE STUFF
switch( $capcode ) {
case 'admin':
$capcodeStart = ' <strong class="capcode">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = '';
break;
case 'admin_highlight':
$capcodeStart = ' <strong class="capcode">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = ' highlightPost';
break;
case 'mod':
$capcodeStart = ' <strong class="capcode">## Mod</strong>';
$capcode_class = ' capcodeMod';
$capcode = ' <img src="' . $imgurl . 'modicon.gif" alt="This user is a 4chan Moderator." title="This user is a 4chan Moderator." class="identityIcon">';
$highlight = '';
break;
case 'developer':
$capcodeStart = ' <strong class="capcode">## Developer</strong>';
$capcode_class = ' capcodeDeveloper';
$capcode = ' <img src="' . $imgurl . 'developericon.gif" alt="This user is a 4chan Developer." title="This user is a 4chan Developer." class="identityIcon">';
$highlight = '';
break;
case 'manager':
$capcodeStart = ' <strong class="capcode hand id_manager" title="Highlight posts by Managers">## Manager</strong>';
$capcode_class = ' capcodeManager';
$capcode = ' <img src="' . $imgurl . 'managericon.gif" alt="Manager Icon" title="This user is a 4chan Manager." class="identityIcon retina">';
$highlight = '';
break;
default:
$capcode = $capcodeStart = $highlight = $capcode_class = '';
break;
}
$com = auto_link( $com, $no );
$subshort = $sub;
if( mb_strlen( $sub ) > 28 ) {
$subshort = '<span title="' . $sub . '">' . mb_substr( $sub, 0, 25, 'UTF-8' ) . '(...)</span>';
}
$href = ( $resno ) ? $resto . PHP_EXT2 : RES_DIR2 . $resto . PHP_EXT2;
$quote = ( $resno ) ? 'javascript:quote(\'' . $no . '\');' : $href . '#q' . $no;
$dat .= <<<HTML
<div class="postContainer replyContainer" id="pc$no">
<div class="sideArrows" id="sa$no">&gt;&gt;</div>
<div id="p$no" class="post reply$highlight">
<div class="postInfoM mobile" id="pim$no">
<span class="nameBlock$capcode_class">
$emailstart<span class="name">$name</span>$capcodeStart$emailend$dispuid$countryFlag$threadmodes<br>
<span class="subject">$subshort</span>
</span>
<span class="dateTime postNum" data-utc="$time">$now<br><em><a href="$href#p$no" title="Link to this post">No.</a><a href="$quote" title="Reply to this post">$no</a></em></span>
</div>
<div class="postInfo desktop" id="pi$no">
<input type="checkbox" name="$no" value="delete">
<span class="subject">$sub</span>
<span class="nameBlock$capcode_class">
$emailstart<span class="name">$name</span>$capcodeStart$emailend $dispuid$countryFlag
</span>
<span class="dateTime" data-utc="$time">$now</span>
<span class="postNum desktop">
<a href="$href#p$no" title="Link to this post">No.</a><a href="$quote" title="Reply to this post">$no</a>
</span>
</div>
<blockquote class="postMessage" id="m$no">$com</blockquote>
</div>
</div>
HTML;
}
// end thread
$dat .= '</div><hr>';
//clearstatcache();
mysql_free_result( $resline );
$p++;
break;
} else {
/** BUILD /f/ INDEX **/
if( !$resline = mysql_board_call( "SELECT * FROM `$sqlog` WHERE `resto` = '$no' ORDER BY `no`" ) ) {
echo S_SQLFAIL;
}
$countres = mysql_num_rows( $resline );
if( $fsize >= 1048576 ) {
$kbsize = round( ( $fsize / 1048576 ), 2 ) . ' M';
} elseif( $fsize >= 1024 ) {
$kbsize = round( $fsize / 1024 ) . ' K';
} else {
$kbsize = $fsize . ' ';
}
$kbsize .= 'B';
$emailstart = $emailend = '';
//if( $email != '' ) {
// $email = emailencode($email);
// $emailstart = '<a href="mailto:' . $email . '" class="useremail">';
// $emailend = '</a>';
//}
if( mb_strlen( $filename ) > 25 ) {
$shortname = mb_substr( $filename, 0, 25, 'UTF-8' ) . "(...)";
} else {
$shortname = $filename;
}
if( $kbsize != '0 B' ) {
$class = '';
if( in_array( $no, $delarr ) ) {
$class = 'class="oldpost"';
}
$texttag = $tags[$tag]['short'];
if ($sub != '') {
$sub = str_replace('&#44;', ',', $sub);
if (mb_strlen($sub) > 30) {
$shortsub = mb_substr($sub, 0, 30, 'UTF-8') . '(...)';
}
else {
$shortsub = $sub;
}
}
else {
$com = str_replace('&#44;', ',', $com);
$com = explode('<', $com)[0];
if (mb_strlen($com) > 30) {
$shortsub = mb_substr($com, 0, 30, 'UTF-8') . '(...)';
}
else {
$shortsub = $com;
}
}
$replink = RES_DIR2 . $no . PHP_EXT2;
$semantic_url = generate_href_context($sub, $com);
if ($semantic_url != '') {
$semantic_url = "/$semantic_url";
}
$filelink = IMG_DIR2 . rawurlencode( $filename ) . '.swf';
// NEW CAPCODE STUFF
if( $capcode === 'admin' ) {
$capcodeStart = ' <strong class="capcode capcodeAdmin">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = '';
} elseif( $capcode === 'mod' ) {
$capcodeStart = ' <strong class="capcode capcodeAdmin">## Mod</strong>';
$capcode_class = ' capcodeMod';
$capcode = ' <img src="' . $imgurl . 'modicon.gif" alt="This user is a 4chan Moderator." title="This user is a 4chan Moderator." class="identityIcon">';
$highlight = '';
} elseif( $capcode === 'admin_highlight' ) {
$capcodeStart = ' <strong class="capcode capcodeAdmin">## Admin</strong>';
$capcode_class = ' capcodeAdmin';
$capcode = ' <img src="' . $imgurl . 'adminicon.gif" alt="This user is the 4chan Administrator." title="This user is the 4chan Administrator." class="identityIcon">';
$highlight = ' highlightPost';
} else {
$capcode = $capcodeStart = $highlight = $capcode_class = '';
}
$oldclass = in_array( $no, $delarr ) ? ' class="highlightPost"' : '';
$dat .= <<<HTML
<tr$oldclass>
<td>$no</td>
<td class="name-col$capcode_class">$emailStart<span class="name">$name</span>$emailEnd$capcodeStart$capcode</td>
<td class="file-col">[<a href="$filelink" title="$filename" data-width="$w" data-height="$h" target="_blank">$shortname</a>]</td>
<td>$texttag</td>
<td class="subject"><span title="$sub">$shortsub</span></td>
<td>$kbsize</td>
<td>$now</td>
<td>$countres</td>
<td>[<a href="$replink$semantic_url">Reply</a>]</td>
</tr>
HTML;
}
//clearstatcache();
mysql_free_result( $resline );
} // end /f/
} // no pages for /f/
$lang = $resno ? S_FORM_REPLY : S_FORM_THREAD;
if( !$resno ) {
$dat .= '</table><hr></div>';
} else {
$dat .= '<div class="navLinks navLinksBot desktop">[<a href="/' . BOARD_DIR . '/" accesskey="a">' . S_RETURN . '</a>] [<a href="#top">' . S_TOP . '</a>] </div><hr class="desktop">';
$dat .= '
<div class="mobile center"><a class="mobilePostFormToggle button" href="#">' . $lang . '</a></div>
</div>';
}
if (!$resno) {
$dat .= '<div class="navLinks navLinksBot mobile"><span class="mobileib button"><a href="#top">' . S_TOP . '</a></span> <span class="mobileib button"><a href="#bottom_r" id="refresh_bottom">' . S_REFRESH . '</a></span></div><hr class="mobile">';
}
else {
$dat .= '<div class="navLinks mobile"><span class="mobileib button"><a href="/' . BOARD_DIR . '/" accesskey="a">' . S_RETURN . '</a></span> <span class="mobileib button"><a href="#top">' . S_TOP . '</a></span> <span class="mobileib button"><a href="#bottom_r" id="refresh_bottom">' . S_REFRESH . '</a></span></div><hr class="mobile">';
}
/*
if( AD_BOTTOM_ENABLE == 1 ) {
$bottomad = "";
if( defined( "AD_BOTTOM_TEXT" ) && AD_BOTTOM_TEXT ) {
$bottomad .= '<div class="bottomad center ad-cnt">' . ad_text_for( AD_BOTTOM_TEXT ) . '</div>' . (defined('AD_BOTTOM_PLEA') ? AD_BOTTOM_PLEA : '');
} else if( defined( "AD_BOTTOM_TABLE" ) && AD_BOTTOM_TABLE ) {
list( $bottomimg, $bottomlink ) = rid( AD_BOTTOM_TABLE, 1 );
$bottomad .= "<div class=\"center\"><a href=\"$bottomlink\" target=\"_blank\"><img class=\"bottomad\" src=\"$bottomimg\" alt=\"\"></a></div>";
}
if( $bottomad ) {
$dat .= "$bottomad<hr>";
}
}
*/
/**
* ADS
*/
if (defined('AD_ADGLARE_BOTTOM') && AD_ADGLARE_BOTTOM) {
$dat .= '<div class="adg-rects desktop"><div class="adg adp-90" id=zone' . AD_ADGLARE_BOTTOM . '></div><hr></div>';
}
if (defined('AD_ADGLARE_BOTTOM_MOBILE') && AD_ADGLARE_BOTTOM_MOBILE) {
$dat .= '<div class="adg-rects mobile"><div class="adg-m adp-250" id=zone' . AD_ADGLARE_BOTTOM_MOBILE . '></div><hr></div>';
}
if (defined('AD_RC_BOTTOM') && AD_RC_BOTTOM) {
$dat .= '<div class="adg-rects desktop"><div class="adg adp-228" data-rc="' . AD_RC_BOTTOM . '" id="rcjsload_bottom"></div><hr></div>';
}
if (defined('AD_RC_BOTTOM_MOBILE') && AD_RC_BOTTOM_MOBILE) {
$dat .= '<div class="adg-rects mobile"><div class="adg-m adp-50" data-rc="' . AD_RC_BOTTOM_MOBILE . '" id="rcjsload_bottom_m"></div><hr></div>';
}
if (defined('AD_ADNIUM_BOTTOM_MOBILE') && AD_ADNIUM_BOTTOM_MOBILE) {
$dat .= '<div class="adg-rects mobile"><div class="adg-m adp-250" id="adn-' . AD_ADNIUM_BOTTOM_MOBILE . '" data-adn></div><hr></div>';
}
$dat .= '<div class="bottomCtrl desktop"><span class="deleteform"><input type="hidden" name="mode" value="usrdel">' . S_REPDEL . $resredir . ' [<input type="checkbox" name="onlyimgdel" value="on">' . S_DELPICONLY . ']<input type="hidden" id="delPassword" name="pwd"> <input type="submit" value="' . S_DELETE . '"><input id="bottomReportBtn" type="button" value="Report"></span>';
if( !defined( 'CSS_FORCE' ) ) {
$dat .= '<span class="stylechanger">Style:
<select id="styleSelector">
<option value="Yotsuba New">Yotsuba</option>
<option value="Yotsuba B New">Yotsuba B</option>
<option value="Futaba New">Futaba</option>
<option value="Burichan New">Burichan</option>
<option value="Tomorrow">Tomorrow</option>
<option value="Photon">Photon</option>
</select>
</span>';
}
$dat .= '</div></form>';
foot( $dat );
if( $page == 0 ) {
$logfilename = SELF_PATH2_FILE;
}
if( $resno ) {
$logfilename = RES_DIR . $resno . PHP_EXT;
print_page( $logfilename, $dat );
if( !$rebuild ) {
updatelog();
}
} else {
print_page( $logfilename, $dat );
}
mysql_free_result( $treeline );
}
function form( &$dat, $resno, $admin = '' )
{
global $thread_unique_ips;
$maxbyte = MAX_KB * 1024;
$no = $resno;
$closed = 0;
$msg = $hidden = '';
$tags = upboard_tags();
if( $resno ) {
if( !$cchk = mysql_board_call( "select closed from `" . SQLLOG . "` where no=" . $resno ) ) {
echo S_SQLFAIL;
}
list( $closed ) = mysql_fetch_row( $cchk );
$msg .= '<div class="navLinks mobile">
<span class="mobileib button"><a href="/' . BOARD_DIR . '/" accesskey="a">' . S_RETURN . '</a></span> <span class="mobileib button"><a href="#bottom">' . S_BOTTOM . '</a></span> <span class="mobileib button"><a href="#top_r" id="refresh_top">' . S_REFRESH . '</a></span>
</div>
<div id="mpostform"><a href="#" class="mobilePostFormToggle mobile hidden button">' . S_FORM_REPLY . '</a></div>';
}
else {
$msg .= '
<div class="navLinks mobile">
<span class="mobileib button"><a href="#bottom">' . S_BOTTOM . '</a></span> <span class="mobileib button"><a href="#top_r" id="refresh_top">' . S_REFRESH . '</a></span>
</div>
<div id="mpostform"><a href="#" class="mobilePostFormToggle mobile hidden button">' . S_FORM_THREAD . '</a></div>';
}
if( $admin ) {
$hidden = '<input type="hidden" name="admin" value="' . ADMIN_PASS . '"/>';
$msg = '<h4>' . S_NOTAGS . '</h4>';
}
if( $closed != 1 ) {
$dat .= $msg;
form_ads( $dat );
$dat .= '
<form name="post" action="' . SELF_PATH_POST . '" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="' . $maxbyte . '">
<input type="hidden" name="mode" value="regist">
<input id="postPassword" name="pwd" type="hidden">';
if( $no ) {
$dat .= '
<input type="hidden" name="resto" value="' . $no . '"/>
';
}
$dat .= '<div id="togglePostFormLink" class="desktop">[<a href="#">'
. ($resno ? S_FORM_REPLY : S_FORM_THREAD)
. '</a>]</div><noscript><style type="text/css">#postForm { display: table !important; }</style></noscript><table class="postForm hideMobile" id="postForm">
<tbody>
';
// TODO: ADS
$spoilers = '';
if( SPOILERS == 1 ) {
$spoilers = '<span class="desktop">[<label><input type="checkbox" name="spoiler" value="on" tabindex="8">' . S_SPOILERS . '</label>]</span>';
}
if( FORCED_ANON == 1 ) {
$dat .= '
<tr data-type="Options">
<td>' . S_EMAIL . '</td>
<td><input type="hidden" name="name"><input type="hidden" name="sub"><input name="email" type="text" tabindex="2"><input type="submit" value="' . S_SUBMIT . '" tabindex="6"></td>
</tr>
';
if( $spoilers ) {
if( !$stripm ) $dat .= '
<tr class="mobile" data-type="Spoilers">
<td>Spoilers</td>
<td class="mobileSpoiler">[<label><input type="checkbox" name="spoiler" value="on">' . S_SPOILERS . '</label>]</td>
</tr>
';
}
}
else {
$dat .= '
<tr data-type="Name">
<td>' . S_NAME . '</td>
<td><input name="name" type="text" tabindex="1"></td>
</tr>';
if ($resno) {
$dat .= '
<tr data-type="Options">
<td>' . S_EMAIL . '</td>
<td><input name="email" type="text" tabindex="2"><input type="submit" value="' . S_SUBMIT . '" tabindex="6"></td>
</tr>';
}
else {
$dat .= '
<tr data-type="Options">
<td>' . S_EMAIL . '</td>
<td><input name="email" type="text" tabindex="2"></td>
</tr>
<tr data-type="Subject">
<td>' . S_SUBJECT . '</td>
<td><input name="sub" type="text" tabindex="3"><input type="submit" value="' . S_SUBMIT . '" tabindex="6"></td>
</tr>';
}
if( $spoilers ) {
if( !$stripm ) $dat .= '
<tr class="mobile" data-type="Spoilers">
<td>' . S_SPOILERS . '</td>
<td class="mobileSpoiler">[<label><input type="checkbox" name="spoiler" value="on">' . S_SPOILERS . '</label>]</td>
</tr>
';
}
}
if( $admin ) {
$dat .= '
<tr>
<td>Reply ID</td>
<td><input name="resto" type="text"/> [<label><input type="checkbox" name="age" value="1"/>Age</label></td>
</tr>
';
}
//if( EXPANDING_POST_ )
$dat .= '
<tr data-type="Comment">
<td>' . S_COMMENT . '</td>
<td><textarea name="com" cols="48" rows="4" wrap="soft"></textarea></td>
</tr>
';
if( CAPTCHA ) {
$dat .= '
<tr id="captchaFormPart">
<td class="desktop">' . S_CAPTCHA . '</td>
<td colspan="2">' . captcha_form() . '<div class="passNotice">' . S_PASS_NOTICE . '</div></td>
</tr>
';
}
if( !$resno ) {
$dat .= '
<tr>
<td>' . S_UPLOADFILE . '</td>
<td><input id="postFile" name="upfile" type="file"/><div id="fileError"></div></td>
</tr>
<tr>
<td>Tag</td>
<td><select name="filetag">
<option value="9999" selected="selected">Choose one:</option>';
foreach( upboard_tags() as $tagval => $tagnames ) {
$dat .= '<option value="' . $tagval . '">' . $tagnames['long'] . '</option>';
}
$dat .= '</select></td></tr>';
}
if ($resno && SHOW_THREAD_UNIQUES) {
$unique = $thread_unique_ips;
if ($unique) {
$unique_plural = $unique > 1 ? 'are' : 'is';
$unique = sprintf("<li> There $unique_plural " . S_UNIQUE_POSTS_TH . '</li>', $unique, $unique > 1 ? 's' : '');
}
else {
$unique = '';
}
}
elseif (SHOW_UNIQUES) {
$unique = sprintf('<li>' . S_UNIQUE_POSTS . '</li>', $GLOBALS['ipcount']);
}
else {
$unique = '';
}
// XXX: mode=regist moved to the top
$dat .= '
<tr class="rules">
<td colspan="2">
<ul class="rules">
' . S_RULES . '
' . $unique . '
</ul>
</td>
</tr>
';
$blotter = $resno ? '' : get_blotter();
$dat .= '
</tbody>
</table>' . $blotter . '
</form>
' . DONATE . '
<script>with(document.post) {name.value=get_cookie("4chan_name"); email.value=get_cookie("4chan_email"); pwd.value=get_pass("4chan_pass"); }</script>
';
} else { // Closed thread
form_ads( $dat );
$dat .= '<div class="navLinks">
[<a href="../' . SELF_PATH2 . '" accesskey="a">' . S_RETURN . '</a>] [<a href="#bottom">Bottom</a>]
</div>
<div class="closed">Thread closed.<br>You may not reply at this time.</div>';
}
if( AD_MIDDLE_ENABLE == 1 ) {
$middlead = "";
if( defined( "AD_MIDDLE_TEXT" ) && AD_MIDDLE_TEXT ) {
$middlead .= '<hr class="aboveMidAd"><div class="middlead center ad-cnt">' . ad_text_for( AD_MIDDLE_TEXT ) . '</div>' . (defined('AD_MIDDLE_PLEA') ? AD_MIDDLE_PLEA : '');
} else if( defined( "AD_MIDDLE_TABLE" ) && AD_MIDDLE_TABLE ) {
list( $middleimg, $middlelink ) = rid( AD_MIDDLE_TABLE, 1 );
$middlead .= "<hr><div class=\"center\"><a href=\"$middlelink\" target=\"_blank\"><img class=\"middlead\" src=\"$middleimg\" alt=\"\"></a></div>";
}
if( $middlead ) {
$dat .= "$middlead";
}
}
list($globalmsgtxt,$globalmsgdate) = global_msg_txt();
if( $globalmsgtxt ) {
$dat .= "\n<hr><a href=\"#\" class=\"button redButton mobile hidden\" id=\"globalToggle\">View Important Announcement</a><div class=\"globalMessage hideMobile\" id=\"globalMessage\" data-utc=\"$globalmsgdate\">" . $globalmsgtxt . "</div>\n";
}
if (defined('AD_ADGLARE_TOP') && AD_ADGLARE_TOP) {
$dat .= '<div class="adg-rects desktop"><hr><div class="adg adp-90" id=zone' . AD_ADGLARE_TOP . '></div></div>';
}
else if (defined('AD_RC_TOP') && AD_RC_TOP) {
$dat .= '<div class="adg-rects desktop"><hr><div class="adg adp-228" data-rc="' . AD_RC_TOP . '" id="rcjsload_top"></div></div>';
}
else if (defined('AD_ABC_TOP_DESKTOP') && AD_ABC_TOP_DESKTOP) {
list($_abc_left, $_abc_right) = explode(',', AD_ABC_TOP_DESKTOP);
$dat .= '<div class="adg-rects desktop"><hr><div class="adg adp-250 adp-row" data-abc="' . $_abc_left . '"></div><div class="adg adp-250 adp-row" data-abc="' . $_abc_right . '"></div></div>';
}
if ($resno) {
$dat .= '<hr class="desktop" id="op">
<div class="navLinks desktop">
[<a href="/' . BOARD_DIR . '/" accesskey="a">' . S_RETURN . '</a>] [<a href="#bottom">' . S_BOTTOM . '</a>]
</div>
';
}
}
?>