function friendlist_unignore() { global $session; $ac = httpget('ac'); $ignored = rexplode(get_module_pref('ignored', 'friendlist', $ac)); $iveignored = rexplode(get_module_pref('iveignored')); if (in_array($ac, $iveignored)) { $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (db_num_rows($result) > 0) { $row = db_fetch_assoc($result); $info = sprintf_translate("%s`Q has been removed from your list.", $row['name']); require_once "lib/systemmail.php"; $t = array("`\$Ignore List Removal"); $mailmessage = array("%s`0`@ has removed you from %s ignore list.", $session['user']['name'], $session['user']['sex'] ? translate_inline("her") : translate_inline("his")); systemmail($ac, $t, $mailmessage); } else { $info = translate_inline("That user no longer exists..."); } } $ignored = array_diff($ignored, array($session['user']['acctid'])); $ignored = rimplode($ignored); set_module_pref('ignored', $ignored, 'friendlist', $ac); if (in_array($ac, $iveignored)) { $iveignored = array_diff($iveignored, array($ac)); $iveignored = rimplode($iveignored); set_module_pref('iveignored', $iveignored); } output_notl($info); }
function friendlist_search() { global $session; $n = httppost("n"); rawoutput("<form action='runmodule.php?module=friendlist&op=search' method='POST'>"); addnav("", "runmodule.php?module=friendlist&op=search"); if ($n != "") { $string = "%"; for ($x = 0; $x < strlen($n); $x++) { $string .= substr($n, $x, 1) . "%"; } $sql = "SELECT name,dragonkills,acctid FROM " . db_prefix("accounts") . " WHERE name LIKE '%{$string}%' AND acctid<>" . $session['user']['acctid'] . " AND locked=0 ORDER BY level,dragonkills"; $result = db_query($sql); if (db_num_rows($result) > 0) { $ignored = rexplode(get_module_pref('ignored')); $friends = rexplode(get_module_pref('friends')); $request = rexplode(get_module_pref('request')); $iveignored = rexplode(get_module_pref('iveignored')); output("`@These users were found:`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); for ($i = 0; $i < db_num_rows($result); $i++) { $row = db_fetch_assoc($result); rawoutput("<tr class='" . ($i % 2 ? "trlight" : "trdark") . "'><td>"); output_notl($row['name']); rawoutput("</td><td>"); if (in_array($row['acctid'], $ignored)) { $info = translate_inline("This user has ignored you."); $info .= " [<a href='runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid']); } elseif (in_array($row['acctid'], $friends)) { $info = translate_inline("This user is already in your list."); } elseif (in_array($row['acctid'], $request)) { $info = translate_inline("This user has already requested to you."); } else { if (in_array($row['acctid'], $iveignored)) { $info = "[<a href='runmodule.php?module=friendlist&op=unignore&ac=" . $row['acctid'] . "' class='colLtRed'>" . translate_inline("Unignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=unignore&ac=" . $row['acctid']); } else { $info = "[<a href='runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid']); $info .= " - [<a href='runmodule.php?module=friendlist&op=request&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Request") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=request&ac=" . $row['acctid']); } } rawoutput("{$info}</td></tr>"); } rawoutput("</table>"); } else { output("`c`@`bA user was not found with that name.`b`c"); } output_notl("`n"); } output("`^`b`cFriend Search...`c`b"); output("`n`nWho do you want to search for?"); output("`n`nName of user: "******"<input name='n' maxlength='50' value=\"" . htmlentities(stripslashes(httppost('n'))) . "\">"); $apply = translate_inline("Search"); rawoutput("<input type='submit' class='button' value='{$apply}'></form>"); }
function friendlist_ignore() { global $session; $iveignored = rexplode(get_module_pref('iveignored')); $friends = rexplode(get_module_pref('friends')); $request = rexplode(get_module_pref('request')); $ac = httpget('ac'); $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (db_num_rows($result) > 0 && in_array($ac, $friends)) { $row = db_fetch_assoc($result); require_once "lib/systemmail.php"; $t = "`\$Friend List Ignore"; $mailmessage = array("%s`0`@ has added you to %s ignore list.", $session['user']['name'], $session['user']['sex'] ? translate_inline("her") : translate_inline("his")); systemmail($ac, $t, $mailmessage); $friends = array_diff($friends, array($ac)); invalidatedatacache("friendliststat-" . $session['user']['acctid']); invalidatedatacache("friendliststat-" . $ac); } $friends = rimplode($friends); set_module_pref('friends', $friends); $ignored = rexplode(get_module_pref('ignored', 'friendlist', $ac)); $ignored[] = $session['user']['acctid']; $ignored = rimplode($ignored); set_module_pref('ignored', $ignored, 'friendlist', $ac); $act = $session['user']['acctid']; $friends = rexplode(get_module_pref('friends', 'friendlist', $ac)); $friends = array_diff($friends, array($act)); $friends = rimplode($friends); set_module_pref('friends', $friends, 'friendlist', $ac); if (in_array($ac, $request)) { $request = array_diff($request, array($ac)); $request = rimplode($request); set_module_pref('request', $request); } $iveignored[] = $ac; $iveignored = rimplode($iveignored); set_module_pref('iveignored', $iveignored); output("You have ignored that user, they can no longer YoM you"); }
function friendlist_deny() { global $session; $ignored = rexplode(get_module_pref('ignored')); $friends = rexplode(get_module_pref('friends')); $request = rexplode(get_module_pref('request')); $ac = httpget('ac'); $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (in_array($ac, $friends)) { $info = translate_inline("That user has been removed."); require_once "lib/systemmail.php"; $t = "`\$Friend List Removal"; $mailmessage = array("%s`0`@ has deleted you from %s Friend List.", $session['user']['name'], $session['user']['sex'] ? translate_inline("her") : translate_inline("his")); $friends = array_diff($friends, array($ac)); $friends = rimplode($friends); set_module_pref('friends', $friends); $act = $session['user']['acctid']; $friends = rexplode(get_module_pref('friends', 'friendlist', $ac)); $friends = array_diff($friends, array($act)); $friends = rimplode($friends); set_module_pref('friends', $friends, 'friendlist', $ac); invalidatedatacache("friendliststat-" . $session['user']['acctid']); invalidatedatacache("friendliststat-" . $ac); } else { $info = translate_inline("That user has been denied."); require_once "lib/systemmail.php"; $t = "`\$Friend Request Denied"; $mailmessage = array("%s`0`@ has denied you your Friend Request.", $session['user']['name']); $request = array_diff($request, array($ac)); $request = rimplode($request); set_module_pref('request', $request); } if (db_num_rows($result) > 0) { systemmail($ac, $t, $mailmessage); $row = db_fetch_assoc($result); $info = sprintf_translate("%s has been removed", $row['name']); } output_notl($info); }
function friendlist_accept() { global $session; $ignored = rexplode(get_module_pref('ignored')); $request = rexplode(get_module_pref('request')); $friends = rexplode(get_module_pref('friends')); $ac = httpget('ac'); if (in_array($ac, $ignored)) { $info = translate_inline("This user has ignored you."); } elseif (in_array($ac, $friends)) { $info = translate_inline("This user is already in your list."); } elseif (in_array($ac, $request)) { $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (db_num_rows($result) > 0) { $row = db_fetch_assoc($result); invalidatedatacache("friendliststat-" . $session['user']['acctid']); invalidatedatacache("friendliststat-" . $ac); $friends[] = $ac; $info = sprintf_translate("%s`Q has been added to your list.", $row['name']); require_once "lib/systemmail.php"; $t = "`\$Friend Request Accepted"; $mailmessage = array("%s`0`@ has accepted your Friend Request.", $session['user']['name']); systemmail($ac, $t, $mailmessage); $friends = rimplode($friends); set_module_pref('friends', $friends); $friends = rexplode(get_module_pref('friends', 'friendlist', $ac)); $friends[] = $session['user']['acctid']; $friends = rimplode($friends); set_module_pref('friends', $friends, 'friendlist', $ac); $request = array_diff($request, array($ac)); $request = rimplode($request); set_module_pref('request', $request); } else { $info = translate_inline("That user no longer exists..."); } } output_notl($info); }
function friendlist_request() { global $session; $ac = httpget('ac'); $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (db_num_rows($result) > 0) { $row = db_fetch_assoc($result); $info = translate_inline("You have successfully sent your request to %s`Q."); $info = str_replace('%s', $row['name'], $info); require_once "lib/systemmail.php"; $t = array("`\$Friend Request Sent"); $mailmessage = array("%s`0`@ has sent you a Friend Request.`nIf this user has been spamming you with this, ignore them from your search function.", $session['user']['name']); systemmail($ac, $t, $mailmessage); } else { $info = translate_inline("That user no longer exists..."); } $request = get_module_pref('request', 'friendlist', $ac); $request = rexplode($request); $request[] = $session['user']['acctid']; $request = rimplode($request); set_module_pref('request', $request, 'friendlist', $ac); output_notl($info); }
function friendlist_list() { global $session; $friends = rexplode(get_module_pref('friends')); $request = rexplode(get_module_pref('request')); $ignored = rexplode(get_module_pref('ignored')); $iveignored = rexplode(get_module_pref('iveignored')); output("`b`@Friends:`b`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Logged In") . "</td><td>" . translate_inline("Location") . "</td><td>" . translate_inline("Alive") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); $last = date("Y-m-d H:i:s", strtotime("-" . getsetting("LOGINTIMEOUT", 900) . " sec")); $x = 0; if (implode(",", $friends) != '') { $sql = "SELECT name,acctid,login,laston,alive,loggedin,location FROM " . db_prefix("accounts") . " WHERE acctid IN (" . implode(',', $friends) . ") AND locked=0 ORDER BY login"; $result = db_query($sql); while ($row = db_fetch_assoc($result)) { $ac = $row['acctid']; $x++; rawoutput("<tr class='" . ($x % 2 ? "trlight" : "trdark") . "'>"); rawoutput("<td><a href='mail.php?op=write&to=" . rawurlencode($row['login']) . "'>" . appoencode("`&" . $row['name'], false) . "</a></td>"); addnav("", "mail.php?op=write&to=" . rawurlencode($row['login'])); $loggedin = $row['loggedin']; if ($row['laston'] < $last) { $loggedin = false; } $loggedin = translate_inline($loggedin ? "`^Yes`0" : "`%No`0"); rawoutput("<td>" . appoencode($loggedin, false) . "</td>"); rawoutput("<td><span class='colLtYellow'>" . htmlentities($row['location']) . "</span></td>"); $alive = translate_inline($row['alive'] ? "`@Yes`0" : "`\$No`0"); rawoutput("<td>" . appoencode($alive, false) . "</td>"); $ops = "[<a href='runmodule.php?module=friendlist&op=deny&ac={$ac}' class='colDkGreen'>" . translate_inline("Remove") . "</a>] - [<a href='runmodule.php?module=friendlist&op=ignore&ac={$ac}' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=deny&ac={$ac}"); addnav("", "runmodule.php?module=friendlist&op=ignore&ac={$ac}"); rawoutput("<td>{$ops}</td></tr>"); } } if ($x == 0) { rawoutput("<tr class='trlight'><td colspan='5'>"); output("`^You have no friends"); rawoutput("</td></tr>"); } rawoutput("</table>"); $friends = rimplode($friends); set_module_pref('friends', $friends); output("`n`b`@Friend Requests:`b`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); $x = 0; $request = array_unique($request); if (implode(",", $request) != '') { $sql = "SELECT name,acctid,login,laston,alive,loggedin,location FROM " . db_prefix("accounts") . " WHERE acctid IN (" . implode(',', $request) . ") AND locked=0 ORDER BY login"; $result = db_query($sql); while ($row = db_fetch_assoc($result)) { $ac = $row['acctid']; $x++; rawoutput("<tr class='" . ($x % 2 ? "trlight" : "trdark") . "'>"); rawoutput("<td>" . appoencode($row['name'], false) . "</td>"); $ops = "[<a href='runmodule.php?module=friendlist&op=accept&ac={$ac}' class='colDkGreen'>" . translate_inline("Accept") . "</a>] - [<a href='runmodule.php?module=friendlist&op=deny&ac={$ac}' class='colDkGreen'>" . translate_inline("Deny") . "</a>] - [<a href='runmodule.php?module=friendlist&op=ignore&ac={$ac}' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=accept&ac={$ac}"); addnav("", "runmodule.php?module=friendlist&op=deny&ac={$ac}"); addnav("", "runmodule.php?module=friendlist&op=ignore&ac={$ac}"); rawoutput("<td>{$ops}</td></tr>"); } } if ($x == 0) { rawoutput("<tr class='trlight'><td colspan='2'>"); output("`^You have no requests"); rawoutput("</td></tr>"); } rawoutput("</table>"); $request = rimplode($request); set_module_pref('request', $request); output("`n`b`@Ignored You:`b`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); $x = 0; $ignored = array_unique($ignored); if (implode(",", $ignored) != '') { $sql = "SELECT name,acctid,login,laston,alive,loggedin,location FROM " . db_prefix("accounts") . " WHERE acctid IN (" . implode(',', $ignored) . ") AND locked=0 ORDER BY login"; $result = db_query($sql); while ($row = db_fetch_assoc($result)) { $x++; $ac = $row['acctid']; rawoutput("<tr class='" . ($x % 2 ? "trlight" : "trdark") . "'>"); rawoutput("<td>" . appoencode($row['name'], false) . "</td>"); if (!in_array($ac, $iveignored)) { $ops = "[<a href='runmodule.php?module=friendlist&op=ignore&ac={$ac}' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=ignore&ac={$ac}"); } else { $ops = appoencode("`i[" . translate_inline("Nothing") . "]`i", false); } rawoutput("<td>{$ops}</td></tr>"); } } if ($x == 0) { rawoutput("<tr class='trlight'><td colspan='2'>"); output("`^No one has ignored you"); rawoutput("</td></tr>"); } rawoutput("</table>"); $ignored = rimplode($ignored); set_module_pref('ignored', $ignored); output("`n`b`@You've Ignored:`b`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); $x = 0; $iveignored = array_unique($iveignored); if (implode(",", $iveignored) != '') { $sql = "SELECT name,acctid,login,laston,alive,loggedin,location FROM " . db_prefix("accounts") . " WHERE acctid IN (" . implode(',', $iveignored) . ") AND locked=0 ORDER BY login"; $result = db_query($sql); while ($row = db_fetch_assoc($result)) { $x++; $ac = $row['acctid']; rawoutput("<tr class='" . ($x % 2 ? "trlight" : "trdark") . "'>"); rawoutput("<td>" . appoencode($row['name'], false) . "</td>"); $ops = "[<a href='runmodule.php?module=friendlist&op=unignore&ac={$ac}' class='colLtRed'>" . translate_inline("Unignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=unignore&ac={$ac}"); rawoutput("<td>{$ops}</td></tr>"); } } if ($x == 0) { rawoutput("<tr class='trlight'><td colspan='2'>"); output("`^You've haven't ignored anyone"); rawoutput("</td></tr>"); } rawoutput("</table>"); $iveignored = rimplode($iveignored); set_module_pref('iveignored', $iveignored); }
function friendlist_dohook($hookname, $args) { global $session, $SCRIPT_NAME, $battle; switch ($hookname) { case "checkuserpref": $args['allow'] = false; if (get_module_setting('allowStat') && $args['name'] == "check_show") { $args['allow'] = true; } elseif (get_module_Setting('showType') && get_module_pref('check_show')) { if ($args['name'] == "check_login" && get_module_setting('allowType') == 0 || $args['name'] == "check_names" && get_module_setting('allowType') == 1 || $args['name'] == "check_head") { $args['allow'] = true; } } break; case "faq-toc": $t = translate_inline("`@Frequently Asked Questions on Friend Lists`0"); output_notl("•<a href='runmodule.php?module=friendlist&op=faq'>{$t}</a><br/>", true); addnav("", "runmodule.php?module=friendlist&op=faq"); break; case "mailfunctions": output_notl("`c`^[`@"); $t = translate_inline("Friend List"); rawoutput("<a href='runmodule.php?module=friendlist&op=list'>{$t}</a>"); addnav('', 'runmodule.php?module=friendlist&op=list'); output_notl("`^]`c`n"); if (httpget('op') == 'send' && !($session['user']['superuser'] & SU_GIVES_YOM_WARNING)) { $sql = "SELECT acctid,name FROM " . db_prefix("accounts") . " WHERE login='******'to') . "'"; $result = db_query($sql); if (db_num_rows($result) > 0) { $row = db_fetch_assoc($result); if (in_array($row['acctid'], explode('|', get_module_pref('ignored')))) { popup_header("Ye Olde Poste Office"); output_notl("`c`^[`%"); $t = translate_inline("Back to your Mail"); rawoutput("<a href='mail.php'>{$t}</a>"); output_notl("`^]`c`Q`n"); $info = translate_inline("%s`Q has ignored you, so you cannot send %s`Q Ye Olde Mail."); $info = str_replace('%s', $row['name'], $info); output_notl($info); popup_footer(); die; } } } break; case "charstats": if (get_module_setting('allowStat') && get_module_pref('check_show')) { // I could so other 'if' checks here, but if admin have it turned off, it'd increase load, when it isn't needed anyway $friends = rexplode(get_module_pref('friends')); $x = 0; $last = date("Y-m-d H:i:s", strtotime("-" . getsetting("LOGINTIMEOUT", 900) . " sec")); $addon = ""; if (get_module_setting("allowType") == 0 && get_module_pref("check_login") == 1 || get_module_setting("allowType") == 1 && get_module_pref("check_names") == 1) { $addon = ",login"; } elseif (get_module_setting("allowType") == 1 && get_module_pref("check_names") == 2) { $addon = ",name"; } $onlinelist = ""; $bl = false; if ($battle === false || !isset($battle) || empty($battle)) { if (httpget('module') == '' && $session['user']['specialinc'] == '' && $session['user']['specialmisc'] == '') { $bl = true; } } if (implode(",", $friends) != '') { $sql = "SELECT loggedin,laston{$addon} FROM " . db_prefix("accounts") . " WHERE acctid IN (" . implode(",", $friends) . ") AND locked=0"; $result = db_query_cached($sql, "friendliststat-" . $session['user']['acctid'], 60); while ($row = db_fetch_assoc($result)) { $loggedin = $row['loggedin']; if ($row['laston'] < $last) { $loggedin = false; } if ($loggedin) { $x++; if ($addon != "") { if ($onlinelist != "") { $onlinelist .= ", "; } if (get_module_setting('linkType') == 1) { $onlinelist .= "<a href='mail.php?op=write&to={$row['login']}' class='colLtGreen' target='_blank' onClick=\"" . popup("mail.php?op=write&to={$row['login']}") . ";return false;\">"; } elseif (get_module_setting('linkType') == 2 && $bl) { $link = "bio.php?char=" . rawurlencode($row['login']) . "&ret=" . URLEncode($_SERVER['REQUEST_URI']); $onlinelist .= "<a href='{$link}' class='colLtGreen'>"; addnav($link, ""); } if ($addon == ",login") { $onlinelist .= sanitize($row['login']); } else { $onlinelist .= sanitize($row['name']); } if (get_module_setting('linkType') == 1 || get_module_setting('linkType') == 2 && $bl) { $onlinelist .= "</a>"; } } } } } $onlinelist .= "."; if ($x > 0) { $words = sprintf_translate("`^You have `%%s`^ logged-in friends.", $x); } else { $words = translate_inline("`@None of your friends are logged-in."); } setcharstat(translate_inline(get_module_pref('check_head')), translate_inline("Friend Count"), $words); if ($onlinelist != ".") { setcharstat(translate_inline(get_module_pref('check_head')), translate_inline("Friend List"), $onlinelist); } } break; } return $args; }