630 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			630 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
// translator ready
 | 
						|
// addnews ready
 | 
						|
// mail ready
 | 
						|
require_once("lib/datetime.php");
 | 
						|
require_once("lib/sanitize.php");
 | 
						|
require_once("lib/http.php");
 | 
						|
 | 
						|
$comsecs = array();
 | 
						|
function commentarylocs() {
 | 
						|
	global $comsecs, $session;
 | 
						|
	if (is_array($comsecs) && count($comsecs)) return $comsecs;
 | 
						|
 | 
						|
	$vname = getsetting("villagename", LOCATION_FIELDS);
 | 
						|
	$iname = getsetting("innname", LOCATION_INN);
 | 
						|
	tlschema("commentary");
 | 
						|
	$comsecs['village'] = sprintf_translate("%s Square", $vname);
 | 
						|
	if ($session['user']['superuser'] & ~SU_DOESNT_GIVE_GROTTO) {
 | 
						|
		$comsecs['superuser']=translate_inline("Grotto");
 | 
						|
	}
 | 
						|
	$comsecs['shade']=translate_inline("Land of the Shades");
 | 
						|
	$comsecs['grassyfield']=translate_inline("Grassy Field");
 | 
						|
	$comsecs['inn']="$iname";
 | 
						|
	$comsecs['motd']=translate_inline("MotD");
 | 
						|
	$comsecs['veterans']=translate_inline("Veterans Club");
 | 
						|
	$comsecs['hunterlodge']=translate_inline("Hunter's Lodge");
 | 
						|
	$comsecs['gardens']=translate_inline("Gardens");
 | 
						|
	$comsecs['waiting']=translate_inline("Clan Hall Waiting Area");
 | 
						|
	if (getsetting("betaperplayer", 1) == 1 && @file_exists("pavilion.php")) {
 | 
						|
		$comsecs['beta']=translate_inline("Pavilion");
 | 
						|
	}
 | 
						|
	tlschema();
 | 
						|
	// All of the ones after this will be translated in the modules.
 | 
						|
	$comsecs = modulehook("moderate", $comsecs);
 | 
						|
	rawoutput(tlbutton_clear());
 | 
						|
	return $comsecs;
 | 
						|
}
 | 
						|
 | 
						|
function addcommentary() {
 | 
						|
	global $session, $emptypost;
 | 
						|
	$section = httppost('section');
 | 
						|
	$talkline = httppost('talkline');
 | 
						|
	$schema = httppost('schema');
 | 
						|
	$comment = trim(httppost('insertcommentary'));
 | 
						|
	$counter = httppost('counter');
 | 
						|
	$remove = URLDecode(httpget('removecomment'));
 | 
						|
	if ($remove>0) {
 | 
						|
		$return = '/' . httpget('returnpath');
 | 
						|
		$section = httpget('section');
 | 
						|
        $sql = "SELECT " .
 | 
						|
                db_prefix("commentary").".*,".db_prefix("accounts").".name,".
 | 
						|
                db_prefix("accounts").".acctid, ".db_prefix("accounts").".clanrank,".
 | 
						|
                db_prefix("clans").".clanshort FROM ".db_prefix("commentary").
 | 
						|
                " INNER JOIN ".db_prefix("accounts")." ON ".
 | 
						|
                db_prefix("accounts").".acctid = " . db_prefix("commentary").
 | 
						|
                ".author LEFT JOIN ".db_prefix("clans")." ON ".
 | 
						|
                db_prefix("clans").".clanid=".db_prefix("accounts").
 | 
						|
                ".clanid WHERE commentid=$remove";
 | 
						|
		$row = db_fetch_assoc(db_query($sql));
 | 
						|
		$sql = "INSERT LOW_PRIORITY INTO ".db_prefix("moderatedcomments").
 | 
						|
			" (moderator,moddate,comment) VALUES ('{$session['user']['acctid']}','".date("Y-m-d H:i:s")."','".addslashes(serialize($row))."')";
 | 
						|
		db_query($sql);
 | 
						|
		$sql = "DELETE FROM ".db_prefix("commentary")." WHERE commentid='$remove';";
 | 
						|
		db_query($sql);
 | 
						|
		invalidatedatacache("comments-$section");
 | 
						|
		invalidatedatacache("comments-or11");
 | 
						|
		$session['user']['specialinc']==''; //just to make sure he was not in a special
 | 
						|
		$return = cmd_sanitize($return);
 | 
						|
		$return = substr($return,strrpos($return,"/")+1);
 | 
						|
		if (strpos($return,"?")===false && strpos($return,"&")!==false){
 | 
						|
			$x = strpos($return,"&");
 | 
						|
			$return = substr($return,0,$x-1)."?".substr($return,$x+1);
 | 
						|
		}
 | 
						|
		debug($return);
 | 
						|
		redirect($return);
 | 
						|
	}
 | 
						|
	if (array_key_exists('commentcounter',$session) &&
 | 
						|
			$session['commentcounter']==$counter) {
 | 
						|
		if ($section || $talkline || $comment) {
 | 
						|
			$tcom = color_sanitize($comment);
 | 
						|
			if ($tcom == "" || $tcom == ":" || $tcom == "::" || $tcom == "/me")
 | 
						|
				$emptypost = 1;
 | 
						|
			else injectcommentary($section, $talkline, $comment, $schema);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function injectsystemcomment($section,$comment) {
 | 
						|
	//function lets gamemasters put in comments without a user association...be careful, it is not trackable who posted it
 | 
						|
	if (strncmp($comment, "/game", 5) !== 0) {
 | 
						|
		$comment = "/game" . $comment;
 | 
						|
	}
 | 
						|
	injectrawcomment($section,0,$comment);
 | 
						|
}
 | 
						|
 | 
						|
function injectrawcomment($section, $author, $comment)
 | 
						|
{
 | 
						|
	$sql = "INSERT INTO " . db_prefix("commentary") . " (postdate,section,author,comment) VALUES ('".date("Y-m-d H:i:s")."','$section',$author,\"$comment\")";
 | 
						|
	db_query($sql);
 | 
						|
	invalidatedatacache("comments-{$section}");
 | 
						|
	// invalidate moderation screen also.
 | 
						|
	invalidatedatacache("comments-or11");
 | 
						|
}
 | 
						|
 | 
						|
function injectcommentary($section, $talkline, $comment, $schema=false) {
 | 
						|
	global $session,$doublepost, $translation_namespace;
 | 
						|
	if ($schema===false) $schema=$translation_namespace;
 | 
						|
	// Make the comment pristine so that we match on it correctly.
 | 
						|
	$comment = stripslashes($comment);
 | 
						|
	tlschema("commentary");
 | 
						|
	$doublepost=0;
 | 
						|
	$emptypost = 0;
 | 
						|
	$colorcount = 0;
 | 
						|
	if ($comment !="") {
 | 
						|
		$commentary = str_replace("`n","",soap($comment));
 | 
						|
		$y = strlen($commentary);
 | 
						|
		for ($x=0;$x<$y;$x++){
 | 
						|
			if (substr($commentary,$x,1)=="`"){
 | 
						|
				$colorcount++;
 | 
						|
				if ($colorcount>=getsetting("maxcolors",10)){
 | 
						|
					$commentary = substr($commentary,0,$x).color_sanitize(substr($commentary,$x));
 | 
						|
					$x=$y;
 | 
						|
				}
 | 
						|
				$x++;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		$args = array('commentline'=>$commentary, 'commenttalk'=>$talkline);
 | 
						|
		$args = modulehook("commentary", $args);
 | 
						|
		$commentary = $args['commentline'];
 | 
						|
		$talkline = $args['commenttalk'];
 | 
						|
		tlschema($schema);
 | 
						|
		$talkline = translate_inline($talkline);
 | 
						|
		tlschema();
 | 
						|
 | 
						|
		$commentary = preg_replace("'([^[:space:]]{45,45})([^[:space:]])'","\\1 \\2",$commentary);
 | 
						|
		$commentary = addslashes($commentary);
 | 
						|
		// do an emote if the area has a custom talkline and the user
 | 
						|
		// isn't trying to emote already.
 | 
						|
		if ($talkline!="says" && substr($commentary,0,1)!=":" &&
 | 
						|
				substr($commentary,0,2)!="::" &&
 | 
						|
				substr($commentary,0,3)!="/me" &&
 | 
						|
				substr($commentary,0,5) != "/game") {
 | 
						|
			$commentary = ":`3$talkline, \\\"`#$commentary`3\\\"";
 | 
						|
		}
 | 
						|
		if (substr($commentary,0,5)=="/game" && ($session['user']['superuser']&SU_IS_GAMEMASTER)==SU_IS_GAMEMASTER) {
 | 
						|
			//handle game master inserts now, allow double posts
 | 
						|
			injectsystemcomment($section,$commentary);
 | 
						|
		} else {
 | 
						|
			$sql = "SELECT comment,author FROM " . db_prefix("commentary") . " WHERE section='$section' ORDER BY commentid DESC LIMIT 1";
 | 
						|
			$result = db_query($sql);
 | 
						|
			$row = db_fetch_assoc($result);
 | 
						|
			db_free_result($result);
 | 
						|
			if ($row['comment']!=stripslashes($commentary) ||
 | 
						|
					$row['author']!=$session['user']['acctid']){
 | 
						|
				injectrawcomment($section, $session['user']['acctid'],
 | 
						|
						$commentary);
 | 
						|
				$session['user']['laston']=date("Y-m-d H:i:s");
 | 
						|
			} else {
 | 
						|
				$doublepost = 1;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		tlschema();
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function commentdisplay($intro, $section, $message="Interject your own commentary?",$limit=10,$talkline="says",$schema=false) {
 | 
						|
	// Let's add a hook for modules to block commentary sections
 | 
						|
	$args = modulehook("blockcommentarea", array("section"=>$section));
 | 
						|
	if (isset($args['block']) && ($args['block'] == "yes"))
 | 
						|
		return;
 | 
						|
 | 
						|
	if ($intro) output($intro);
 | 
						|
	viewcommentary($section, $message, $limit, $talkline, $schema);
 | 
						|
}
 | 
						|
 | 
						|
function viewcommentary($section,$message="Interject your own commentary?",$limit=10,$talkline="says",$schema=false) {
 | 
						|
 	global $session,$REQUEST_URI,$doublepost, $translation_namespace;
 | 
						|
	global $emptypost;
 | 
						|
 | 
						|
	rawoutput("<a name='$section'></a>");
 | 
						|
	// Let's add a hook for modules to block commentary sections
 | 
						|
	$args = modulehook("blockcommentarea", array("section"=>$section));
 | 
						|
	if (isset($args['block']) && ($args['block'] == "yes"))
 | 
						|
		return;
 | 
						|
 | 
						|
	if ($schema === false)
 | 
						|
		$schema=$translation_namespace;
 | 
						|
	tlschema("commentary");
 | 
						|
 | 
						|
	$nobios = array("motd.php"=>true);
 | 
						|
	if (!array_key_exists(basename($_SERVER['SCRIPT_NAME']),$nobios)) $nobios[basename($_SERVER['SCRIPT_NAME'])] = false;
 | 
						|
	if ($nobios[basename($_SERVER['SCRIPT_NAME'])])
 | 
						|
		$linkbios=false;
 | 
						|
	else
 | 
						|
		$linkbios=true;
 | 
						|
 | 
						|
	if ($message=="X") $linkbios=true;
 | 
						|
 | 
						|
	if ($doublepost) output("`\$`bDouble post?`b`0`n");
 | 
						|
	if ($emptypost) output("`\$`bWell, they say silence is a virtue.`b`0`n");
 | 
						|
 | 
						|
	$clanrankcolors=array("`!","`#","`^","`&","`\$");
 | 
						|
 | 
						|
	// Needs to be here because scrolling through the commentary pages, entering a bio, then scrolling again forward
 | 
						|
	// then re-entering another bio will lead to $com being smaller than 0 and this will lead to an SQL error later on.
 | 
						|
	$com=(int)httpget("comscroll");
 | 
						|
	if ($com < 0) $com = 0;
 | 
						|
	$cc = false;
 | 
						|
	if (httpget("comscroll") !==false && (int)$session['lastcom']==$com+1)
 | 
						|
		$cid = (int)$session['lastcommentid'];
 | 
						|
	else
 | 
						|
		$cid = 0;
 | 
						|
 | 
						|
	$session['lastcom'] = $com;
 | 
						|
 | 
						|
	if ($com > 0 || $cid > 0) {
 | 
						|
		// Find newly added comments.
 | 
						|
		$sql = "SELECT COUNT(commentid) AS newadded FROM " .
 | 
						|
			db_prefix("commentary") . " LEFT JOIN " .
 | 
						|
			db_prefix("accounts") . " ON " .
 | 
						|
			db_prefix("accounts") . ".acctid = " .
 | 
						|
			db_prefix("commentary"). ".author WHERE section='$section' AND " .
 | 
						|
			"(".db_prefix("accounts").".locked=0 or ".db_prefix('accounts').".locked is null) AND commentid > '$cid'";
 | 
						|
		$result = db_query($sql);
 | 
						|
		$row = db_fetch_assoc($result);
 | 
						|
		$newadded = $row['newadded'];
 | 
						|
	} else {
 | 
						|
		$newadded = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	$commentbuffer = array();
 | 
						|
	if ($cid == 0) {
 | 
						|
		$sql = "SELECT ". db_prefix("commentary") . ".*, " .
 | 
						|
			db_prefix("accounts").".name, " .
 | 
						|
			db_prefix("accounts").".acctid, " .
 | 
						|
			db_prefix("accounts").".clanrank, " .
 | 
						|
			db_prefix("clans") .  ".clanshort FROM " .
 | 
						|
			db_prefix("commentary") . " LEFT JOIN " .
 | 
						|
			db_prefix("accounts") . " ON " .
 | 
						|
			db_prefix("accounts") .  ".acctid = " .
 | 
						|
			db_prefix("commentary"). ".author LEFT JOIN " .
 | 
						|
			db_prefix("clans") . " ON " .
 | 
						|
			db_prefix("clans") . ".clanid=" .
 | 
						|
			db_prefix("accounts") .
 | 
						|
			".clanid WHERE section = '$section' AND " .
 | 
						|
			"( ".db_prefix("accounts") . ".locked=0 OR ".db_prefix("accounts") .".locked is null ) ".
 | 
						|
			"ORDER BY commentid DESC LIMIT " .
 | 
						|
			($com*$limit).",$limit";
 | 
						|
		if ($com==0 && strstr( $_SERVER['REQUEST_URI'], "/moderate.php" ) !== $_SERVER['REQUEST_URI'] )
 | 
						|
			$result = db_query_cached($sql,"comments-{$section}");
 | 
						|
		else
 | 
						|
			$result = db_query($sql);
 | 
						|
		while($row = db_fetch_assoc($result)) $commentbuffer[] = $row;
 | 
						|
	} else {
 | 
						|
		$sql = "SELECT " . db_prefix("commentary") . ".*, " .
 | 
						|
			db_prefix("accounts").".name, " .
 | 
						|
			db_prefix("accounts").".acctid, " .
 | 
						|
			db_prefix("accounts").".clanrank, " .
 | 
						|
			db_prefix("clans").".clanshort FROM " .
 | 
						|
			db_prefix("commentary") . " LEFT JOIN " .
 | 
						|
			db_prefix("accounts") . " ON " .
 | 
						|
			db_prefix("accounts") . ".acctid = " .
 | 
						|
			db_prefix("commentary"). ".author LEFT JOIN " .
 | 
						|
			db_prefix("clans") . " ON " . db_prefix("clans") . ".clanid=" .
 | 
						|
			db_prefix("accounts") .
 | 
						|
			".clanid WHERE section = '$section' AND " .
 | 
						|
			"( ".db_prefix("accounts") . ".locked=0 OR ".db_prefix("accounts") .".locked is null ) ".
 | 
						|
			"AND commentid > '$cid' " .
 | 
						|
			"ORDER BY commentid ASC LIMIT $limit";
 | 
						|
		$result = db_query($sql);
 | 
						|
		while ($row = db_fetch_assoc($result)) $commentbuffer[] = $row;
 | 
						|
		$commentbuffer = array_reverse($commentbuffer);
 | 
						|
	}
 | 
						|
 | 
						|
	$rowcount = count($commentbuffer);
 | 
						|
	if ($rowcount > 0)
 | 
						|
		$session['lastcommentid'] = $commentbuffer[0]['commentid'];
 | 
						|
 | 
						|
	$counttoday=0;
 | 
						|
	for ($i=0; $i < $rowcount; $i++){
 | 
						|
		$row = $commentbuffer[$i];
 | 
						|
		$row['comment'] = comment_sanitize($row['comment']);
 | 
						|
		$commentids[$i] = $row['commentid'];
 | 
						|
		if (date("Y-m-d",strtotime($row['postdate']))==date("Y-m-d")){
 | 
						|
			if ($row['name']==$session['user']['name']) $counttoday++;
 | 
						|
		}
 | 
						|
		$x=0;
 | 
						|
		$ft="";
 | 
						|
		for ($x=0;strlen($ft)<5 && $x<strlen($row['comment']);$x++){
 | 
						|
			if (substr($row['comment'],$x,1)=="`" && strlen($ft)==0) {
 | 
						|
				$x++;
 | 
						|
			}else{
 | 
						|
				$ft.=substr($row['comment'],$x,1);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		$link = "bio.php?char=" . $row['acctid'] .
 | 
						|
			"&ret=".URLEncode($_SERVER['REQUEST_URI']);
 | 
						|
 | 
						|
		if (substr($ft,0,2)=="::")
 | 
						|
			$ft = substr($ft,0,2);
 | 
						|
		elseif (substr($ft,0,1)==":")
 | 
						|
			$ft = substr($ft,0,1);
 | 
						|
		elseif (substr($ft,0,3)=="/me")
 | 
						|
			$ft = substr($ft,0,3);
 | 
						|
 | 
						|
		$row['comment'] = holidayize($row['comment'],'comment');
 | 
						|
		$row['name'] = holidayize($row['name'],'comment');
 | 
						|
		if ($row['clanrank']) {
 | 
						|
			$row['name'] = ($row['clanshort']>""?"{$clanrankcolors[ceil($row['clanrank']/10)]}<`2{$row['clanshort']}{$clanrankcolors[ceil($row['clanrank']/10)]}> `&":"").$row['name'];
 | 
						|
		}
 | 
						|
		if ($ft=="::" || $ft=="/me" || $ft==":"){
 | 
						|
			$x = strpos($row['comment'],$ft);
 | 
						|
			if ($x!==false){
 | 
						|
				if ($linkbios)
 | 
						|
					$op[$i] = str_replace("&","&",HTMLEntities(substr($row['comment'],0,$x), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0<a href='$link' style='text-decoration: none'>\n`&{$row['name']}`0</a>\n`& ".str_replace("&","&",HTMLEntities(substr($row['comment'],$x+strlen($ft)), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`n";
 | 
						|
				else
 | 
						|
					$op[$i] = str_replace("&","&",HTMLEntities(substr($row['comment'],0,$x), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`&{$row['name']}`0`& ".str_replace("&","&",HTMLEntities(substr($row['comment'],$x+strlen($ft)), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`n";
 | 
						|
				$rawc[$i] = str_replace("&","&",HTMLEntities(substr($row['comment'],0,$x), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`&{$row['name']}`0`& ".str_replace("&","&",HTMLEntities(substr($row['comment'],$x+strlen($ft)), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`n";
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if ($ft=="/game" && !$row['name']) {
 | 
						|
			$x = strpos($row['comment'],$ft);
 | 
						|
			if ($x!==false){
 | 
						|
			 $op[$i] = str_replace("&","&",HTMLEntities(substr($row['comment'],0,$x), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`&".str_replace("&","&",HTMLEntities(substr($row['comment'],$x+strlen($ft)), ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`0`n";
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if (!isset($op) || !is_array($op)) $op = array();
 | 
						|
		if (!array_key_exists($i,$op) || $op[$i] == "")  {
 | 
						|
			if ($linkbios)
 | 
						|
				$op[$i] = "`0<a href='$link' style='text-decoration: none'>`&{$row['name']}`0</a>`3 says, \"`#".str_replace("&","&",HTMLEntities($row['comment'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`3\"`0`n";
 | 
						|
			elseif (substr($ft,0,5)=='/game' && !$row['name'])
 | 
						|
				$op[$i] = str_replace("&","&",HTMLEntities($row['comment'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")));
 | 
						|
			else
 | 
						|
				$op[$i] = "`&{$row['name']}`3 says, \"`#".str_replace("&","&",HTMLEntities($row['comment'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`3\"`0`n";
 | 
						|
			$rawc[$i] = "`&{$row['name']}`3 says, \"`#".str_replace("&","&",HTMLEntities($row['comment'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`3\"`0`n";
 | 
						|
		}
 | 
						|
		
 | 
						|
		if (!array_key_exists('timestamp', $session['user']['prefs']))
 | 
						|
			$session['user']['prefs']['timestamp'] = 0;
 | 
						|
		
 | 
						|
		$session['user']['prefs']['timeoffset'] = round($session['user']['prefs']['timeoffset'],1);
 | 
						|
 | 
						|
		if ($session['user']['prefs']['timestamp']==1) {
 | 
						|
			if (!isset($session['user']['prefs']['timeformat'])) $session['user']['prefs']['timeformat'] = "[m/d h:ia]";
 | 
						|
			$time = strtotime($row['postdate']) + ($session['user']['prefs']['timeoffset'] * 60 * 60);
 | 
						|
			$s=date("`7" . $session['user']['prefs']['timeformat'] . "`0 ",$time);
 | 
						|
			$op[$i] = $s.$op[$i];
 | 
						|
		}elseif ($session['user']['prefs']['timestamp']==2) {
 | 
						|
			$s=reltime(strtotime($row['postdate']));
 | 
						|
			$op[$i] = "`7($s)`0 ".$op[$i];
 | 
						|
		}
 | 
						|
		if ($message=="X")
 | 
						|
			$op[$i]="`0({$row['section']}) ".$op[$i];
 | 
						|
		if ($row['postdate']>=$session['user']['recentcomments'])
 | 
						|
			$op[$i]="<img src='images/new.gif' alt='>' width='3' height='5' align='absmiddle'> ".$op[$i];
 | 
						|
		addnav("",$link);
 | 
						|
		$auth[$i] = $row['author'];
 | 
						|
		if (isset($rawc[$i])) {
 | 
						|
			$rawc[$i] = full_sanitize($rawc[$i]);
 | 
						|
			$rawc[$i] = htmlentities($rawc[$i], ENT_QUOTES, getsetting("charset", "ISO-8859-1"));
 | 
						|
		}
 | 
						|
	}
 | 
						|
	$i--;
 | 
						|
	$outputcomments=array();
 | 
						|
	$sect="x";
 | 
						|
 | 
						|
	$moderating=false;
 | 
						|
	if (($session['user']['superuser'] & SU_EDIT_COMMENTS) && $message=="X")
 | 
						|
		$moderating=true;
 | 
						|
 | 
						|
	$del=translate_inline("Del");
 | 
						|
	$scriptname=substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['SCRIPT_NAME'],"/")+1);
 | 
						|
	$pos=strpos($_SERVER['REQUEST_URI'],"?");
 | 
						|
	$return=$scriptname.($pos==false?"":substr($_SERVER['REQUEST_URI'],$pos));
 | 
						|
	$one=(strstr($return,"?")==false?"?":"&");
 | 
						|
 | 
						|
	for (;$i>=0;$i--){
 | 
						|
		$out="";
 | 
						|
		if ($moderating){
 | 
						|
			if ($session['user']['superuser'] & SU_EDIT_USERS){
 | 
						|
				$out.="`0[ <input type='checkbox' name='comment[{$commentids[$i]}]'> | <a href='user.php?op=setupban&userid=".$auth[$i]."&reason=".rawurlencode($rawc[$i])."'>Ban</a> ] ";
 | 
						|
				addnav("","user.php?op=setupban&userid=$auth[$i]&reason=".rawurlencode($rawc[$i]));
 | 
						|
			}else{
 | 
						|
				$out.="`0[ <input type='checkbox' name='comment[{$commentids[$i]}]'> ] ";
 | 
						|
			}
 | 
						|
			$matches=array();
 | 
						|
			preg_match("/[(]([^)]*)[)]/",$op[$i],$matches);
 | 
						|
			$sect=trim($matches[1]);
 | 
						|
			if (substr($sect,0,5)!="clan-" || $sect==$section){
 | 
						|
				if (substr($sect,0,4)!="pet-"){
 | 
						|
					$out.=$op[$i];
 | 
						|
					if (!isset($outputcomments[$sect]) ||
 | 
						|
							!is_array($outputcomments[$sect]))
 | 
						|
						$outputcomments[$sect]=array();
 | 
						|
					array_push($outputcomments[$sect],$out);
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}else{
 | 
						|
			if ($session['user']['superuser'] & SU_EDIT_COMMENTS) {
 | 
						|
				$out.="`2[<a href='".$return.$one."removecomment={$commentids[$i]}§ion=$section&returnpath=".URLEncode($return)."'>$del</a>`2]`0 ";
 | 
						|
				addnav("",$return.$one."removecomment={$commentids[$i]}§ion=$section&returnpath=".URLEncode($return)."");
 | 
						|
			}
 | 
						|
			$out.=$op[$i];
 | 
						|
			if (!array_key_exists($sect,$outputcomments) || !is_array($outputcomments[$sect]))
 | 
						|
				$outputcomments[$sect]=array();
 | 
						|
			array_push($outputcomments[$sect],$out);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ($moderating){
 | 
						|
		$scriptname=substr($_SERVER['SCRIPT_NAME'],strrpos($_SERVER['SCRIPT_NAME'],"/")+1);
 | 
						|
		addnav("","$scriptname?op=commentdelete&return=".URLEncode($_SERVER['REQUEST_URI']));
 | 
						|
		$mod_Del1 = htmlentities(translate_inline("Delete Checked Comments"), ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
 | 
						|
		$mod_Del2 = htmlentities(translate_inline("Delete Checked & Ban (3 days)"), ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
 | 
						|
		$mod_Del_confirm = addslashes(htmlentities(translate_inline("Are you sure you wish to ban this user and have you specified the exact reason for the ban, i.e. cut/pasted their offensive comments?"), ENT_COMPAT, getsetting("charset", "ISO-8859-1")));
 | 
						|
		$mod_reason = translate_inline("Reason:");
 | 
						|
		$mod_reason_desc = htmlentities(translate_inline("Banned for comments you posted."), ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
 | 
						|
 | 
						|
		output_notl("<form action='$scriptname?op=commentdelete&return=".URLEncode($_SERVER['REQUEST_URI'])."' method='POST'>",true);
 | 
						|
		output_notl("<input type='submit' class='button' value=\"$mod_Del1\">",true);
 | 
						|
		output_notl("<input type='submit' class='button' name='delnban' value=\"$mod_Del2\" onClick=\"return confirm('$mod_Del_confirm');\">",true);
 | 
						|
		output_notl("`n$mod_reason <input name='reason0' size='40' value=\"$mod_reason_desc\" onChange=\"document.getElementById('reason').value=this.value;\">",true);
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	//output the comments
 | 
						|
	ksort($outputcomments);
 | 
						|
	reset($outputcomments);
 | 
						|
	$sections = commentarylocs();
 | 
						|
	$needclose = 0;
 | 
						|
 | 
						|
	while (list($sec,$v)=each($outputcomments)){
 | 
						|
		if ($sec!="x") {
 | 
						|
			if($needclose) modulehook("}collapse");
 | 
						|
			output_notl("`n<hr><a href='moderate.php?area=%s'>`b`^%s`0`b</a>`n",
 | 
						|
				$sec, isset($sections[$sec]) ? $sections[$sec] : "($sec)", true);
 | 
						|
			addnav("", "moderate.php?area=$sec");
 | 
						|
			modulehook("collapse{",array("name"=>"com-".$sec));
 | 
						|
			$needclose = 1;
 | 
						|
		} else {
 | 
						|
			modulehook("collapse{",array("name"=>"com-".$section));
 | 
						|
			$needclose = 1;
 | 
						|
		}
 | 
						|
		reset($v);
 | 
						|
		while (list($key,$val)=each($v)){
 | 
						|
			$args = array('commentline'=>$val);
 | 
						|
			$args = modulehook("viewcommentary", $args);
 | 
						|
			$val = $args['commentline'];
 | 
						|
			output_notl($val, true);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if ($moderating && $needclose) {
 | 
						|
		modulehook("}collapse");
 | 
						|
		$needclose = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	if ($moderating){
 | 
						|
		output_notl("`n");
 | 
						|
		rawoutput("<input type='submit' class='button' value=\"$mod_Del1\">");
 | 
						|
		rawoutput("<input type='submit' class='button' name='delnban' value=\"$mod_Del2\" onClick=\"return confirm('$mod_Del_confirm');\">");
 | 
						|
		output_notl("`n%s ", $mod_reason);
 | 
						|
		rawoutput("<input name='reason' size='40' id='reason' value=\"$mod_reason_desc\">");
 | 
						|
		rawoutput("</form>");
 | 
						|
		output_notl("`n");
 | 
						|
	}
 | 
						|
 | 
						|
	if ($session['user']['loggedin']) {
 | 
						|
		$args = modulehook("insertcomment", array("section"=>$section));
 | 
						|
		if (array_key_exists("mute",$args) && $args['mute'] &&
 | 
						|
				!($session['user']['superuser'] & SU_EDIT_COMMENTS)) {
 | 
						|
			output_notl("%s", $args['mutemsg']);
 | 
						|
		} elseif ($counttoday<($limit/2) ||
 | 
						|
				($session['user']['superuser']&~SU_DOESNT_GIVE_GROTTO)
 | 
						|
				|| !getsetting('postinglimit',1)){
 | 
						|
			if ($message!="X"){
 | 
						|
				$message="`n`@$message`n";
 | 
						|
				output($message);
 | 
						|
				talkform($section,$talkline,$limit,$schema);
 | 
						|
			}
 | 
						|
		}else{
 | 
						|
			$message="`n`@$message`n";
 | 
						|
			output($message);
 | 
						|
			output("Sorry, you've exhausted your posts in this section for now.`0`n");
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	$jump = false;
 | 
						|
	if (!isset($session['user']['prefs']['nojump']) || $session['user']['prefs']['nojump'] == false) {
 | 
						|
		$jump = true;
 | 
						|
	}
 | 
						|
 | 
						|
	$firstu = translate_inline("<< First Unseen");
 | 
						|
	$prev = translate_inline("< Previous");
 | 
						|
	$ref = translate_inline("Refresh");
 | 
						|
	$next = translate_inline("Next >");
 | 
						|
	$lastu = translate_inline("Last Page >>");
 | 
						|
	if ($rowcount>=$limit || $cid>0){
 | 
						|
		$sql = "SELECT count(commentid) AS c FROM " . db_prefix("commentary") . " WHERE section='$section' AND postdate > '{$session['user']['recentcomments']}'";
 | 
						|
		$r = db_query($sql);
 | 
						|
		$val = db_fetch_assoc($r);
 | 
						|
		$val = round($val['c'] / $limit + 0.5,0) - 1;
 | 
						|
		if ($val>0){
 | 
						|
			$first = comscroll_sanitize($REQUEST_URI)."&comscroll=".($val);
 | 
						|
			$first = str_replace("?&","?",$first);
 | 
						|
			if (!strpos($first,"?")) $first = str_replace("&","?",$first);
 | 
						|
			$first .= "&refresh=1";
 | 
						|
			if ($jump) {
 | 
						|
				$first .= "#$section";
 | 
						|
			}
 | 
						|
			output_notl("<a href=\"$first\">$firstu</a>",true);
 | 
						|
			addnav("",$first);
 | 
						|
		}else{
 | 
						|
			output_notl($firstu,true);
 | 
						|
		}
 | 
						|
		$req = comscroll_sanitize($REQUEST_URI)."&comscroll=".($com+1);
 | 
						|
		$req = str_replace("?&","?",$req);
 | 
						|
		if (!strpos($req,"?")) $req = str_replace("&","?",$req);
 | 
						|
		$req .= "&refresh=1";
 | 
						|
		if ($jump) {
 | 
						|
			$req .= "#$section";
 | 
						|
		}
 | 
						|
		output_notl("<a href=\"$req\">$prev</a>",true);
 | 
						|
		addnav("",$req);
 | 
						|
	}else{
 | 
						|
		output_notl("$firstu $prev",true);
 | 
						|
	}
 | 
						|
	$last = appendlink(comscroll_sanitize($REQUEST_URI),"refresh=1");
 | 
						|
 | 
						|
	// Okay.. we have some smart-ass (or stupidass, you guess) players
 | 
						|
	// who think that the auto-reload firefox plugin is a good way to
 | 
						|
	// avoid our timeouts.  Won't they be surprised when I take that little
 | 
						|
	// hack away.
 | 
						|
	$last = appendcount($last);
 | 
						|
 | 
						|
	$last = str_replace("?&","?",$last);
 | 
						|
	if ($jump) {
 | 
						|
		$last .= "#$section";
 | 
						|
	}
 | 
						|
	//if (!strpos($last,"?")) $last = str_replace("&","?",$last);
 | 
						|
	//debug($last);
 | 
						|
	output_notl(" <a href=\"$last\">$ref</a> ",true);
 | 
						|
	addnav("",$last);
 | 
						|
	if ($com>0 || ($cid > 0 && $newadded > $limit)){
 | 
						|
		$req = comscroll_sanitize($REQUEST_URI)."&comscroll=".($com-1);
 | 
						|
		$req = str_replace("?&","?",$req);
 | 
						|
		if (!strpos($req,"?")) $req = str_replace("&","?",$req);
 | 
						|
		$req .= "&refresh=1";
 | 
						|
		if ($jump) {
 | 
						|
			$req .= "#$section";
 | 
						|
		}
 | 
						|
		output_notl(" <a href=\"$req\">$next</a>",true);
 | 
						|
		addnav("",$req);
 | 
						|
		output_notl(" <a href=\"$last\">$lastu</a>",true);
 | 
						|
	}else{
 | 
						|
		output_notl("$next $lastu",true);
 | 
						|
	}
 | 
						|
	if (!$cc) db_free_result($result);
 | 
						|
	tlschema();
 | 
						|
	if ($needclose) modulehook("}collapse");
 | 
						|
}
 | 
						|
 | 
						|
function talkform($section,$talkline,$limit=10,$schema=false){
 | 
						|
	require_once("lib/forms.php");
 | 
						|
	global $REQUEST_URI,$session,$translation_namespace;
 | 
						|
	if ($schema===false) $schema=$translation_namespace;
 | 
						|
	tlschema("commentary");
 | 
						|
 | 
						|
	$jump = false;
 | 
						|
	if (isset($session['user']['prefs']['nojump']) && $session['user']['prefs']['nojump'] == true) {
 | 
						|
		$jump = true;
 | 
						|
	}
 | 
						|
 | 
						|
	$counttoday=0;
 | 
						|
	if (substr($section,0,5)!="clan-"){
 | 
						|
		$sql = "SELECT author FROM " . db_prefix("commentary") . " WHERE section='$section' AND postdate>'".date("Y-m-d 00:00:00")."' ORDER BY commentid DESC LIMIT $limit";
 | 
						|
		$result = db_query($sql);
 | 
						|
		while ($row=db_fetch_assoc($result)){
 | 
						|
			if ($row['author']==$session['user']['acctid']) $counttoday++;
 | 
						|
		}
 | 
						|
		if (round($limit/2,0)-$counttoday <= 0 && getsetting('postinglimit',1)){
 | 
						|
			if ($session['user']['superuser']&~SU_DOESNT_GIVE_GROTTO){
 | 
						|
				output("`n`)(You'd be out of posts if you weren't a superuser or moderator.)`n");
 | 
						|
			}else{
 | 
						|
				output("`n`)(You are out of posts for the time being.  Once some of your existing posts have moved out of the comment area, you'll be allowed to post again.)`n");
 | 
						|
				return false;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	if (translate_inline($talkline,$schema)!="says")
 | 
						|
		$tll = strlen(translate_inline($talkline,$schema))+11;
 | 
						|
		else $tll=0;
 | 
						|
	$req = comscroll_sanitize($REQUEST_URI)."&comment=1";
 | 
						|
	$req = str_replace("?&","?",$req);
 | 
						|
	if (!strpos($req,"?")) $req = str_replace("&","?",$req);
 | 
						|
	if ($jump) {
 | 
						|
		$req .= "#$section";
 | 
						|
	}
 | 
						|
	addnav("",$req);
 | 
						|
	output_notl("<form action=\"$req\" method='POST' autocomplete='false'>",true);
 | 
						|
	previewfield("insertcommentary", $session['user']['name'], $talkline, true, array("size"=>"40", "maxlength"=>200-$tll));
 | 
						|
	rawoutput("<input type='hidden' name='talkline' value='$talkline'>");
 | 
						|
	rawoutput("<input type='hidden' name='schema' value='$schema'>");
 | 
						|
	rawoutput("<input type='hidden' name='counter' value='{$session['counter']}'>");
 | 
						|
	$session['commentcounter'] = $session['counter'];
 | 
						|
	if ($section=="X"){
 | 
						|
		$vname = getsetting("villagename", LOCATION_FIELDS);
 | 
						|
		$iname = getsetting("innname", LOCATION_INN);
 | 
						|
		$sections = commentarylocs();
 | 
						|
		reset ($sections);
 | 
						|
		output_notl("<select name='section'>",true);
 | 
						|
		while (list($key,$val)=each($sections)){
 | 
						|
			output_notl("<option value='$key'>$val</option>",true);
 | 
						|
		}
 | 
						|
		output_notl("</select>",true);
 | 
						|
	}else{
 | 
						|
		output_notl("<input type='hidden' name='section' value='$section'>",true);
 | 
						|
	}
 | 
						|
	$add = htmlentities(translate_inline("Add"), ENT_QUOTES, getsetting("charset", "ISO-8859-1"));
 | 
						|
	output_notl("<input type='submit' class='button' value='$add'>`n",true);
 | 
						|
	if (round($limit/2,0)-$counttoday < 3 && getsetting('postinglimit',1)){
 | 
						|
		output("`)(You have %s posts left today)`n`0",(round($limit/2,0)-$counttoday));
 | 
						|
	}
 | 
						|
	rawoutput("<div id='previewtext'></div></form>");
 | 
						|
	tlschema();
 | 
						|
}
 | 
						|
?>
 |