function ircReport($stuff) { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock, Settings::pluginGet("host"), Settings::pluginGet("port")); socket_write($sock, $stuff . "\n"); socket_close($sock); }
function ircReport($stuff) { if (Settings::pluginGet("mode") == "http") { file_get_contents(Settings::pluginGet('url') . rawurlencode($stuff)); } else { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($sock, Settings::pluginGet("host"), Settings::pluginGet("port")); socket_write($sock, $stuff . "\n"); socket_close($sock); } }
<?php if (Settings::pluginGet('showlink')) { print actionLinkTagItem(__("Minecraft stats"), "minestats"); }
<?php $mcTitles = Settings::pluginGet("titles"); $mcTitles = explode("\n", $mcTitles); //Remove empty strings $mcTitles = array_map('trim', $mcTitles); $mcTitles = array_filter($mcTitles); //Choose one randomly! if (count($mcTitles)) { $mcTitle = $mcTitles[array_rand($mcTitles)]; } else { $mcTitle = "Add titles in plugin settings!"; } ?> <script type="text/javascript" src="<?php print resourceLink("plugins/mctitles/makeTitle.js"); ?> "></script> <script type="text/javascript"> window.addEventListener("load", function() { makeMcTitle(<?php print json_encode($mcTitle); ?> ); }, false); </script> <link rel="stylesheet" type="text/css" href="<?php print resourceLink("plugins/mctitles/mctitles.css"); ?> " />
<?php echo "\n\t<script>\n\t(function () {\n\t\tvar i = 0;\n\t\tfor (; i < " . (int) Settings::pluginGet('goombas') . "; ++i) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tvar goomba = new Goomba();\n\t\t\t\tgoomba.startWalking();\n\t\t\t}, " . (double) Settings::pluginGet('interval') . " * i);\n\t\t}\n\t})();\n\t</script>\n";
<?php $path->shift(); $path->addStart(new PipeMenuLinkEntry(Settings::pluginGet("crumbsBoardLink"), "board")); $path->addStart(new PipeMenuLinkEntry(Settings::pluginGet("crumbsBlogLink"), "blog"));
$extra = ""; if ($urlRewriting) { $link = getServerURLNoSlash() . actionLink("profile", $user["id"], "", "_"); } else { $link = getServerURL() . "?uid=" . $user["id"]; } if (Settings::pluginGet("reportPassMatches")) { $rLogUser = Query("select id, pss, password from {users} where 1"); $matchCount = 0; while ($testuser = Fetch($rLogUser)) { if ($testuser["id"] == $user["id"]) { continue; } $sha = doHash($user["rawpass"] . $salt . $testuser['pss']); if ($testuser['password'] == $sha) { $matchCount++; } } if ($matchCount) { $extra .= "-- " . Plural($matchCount, "password match") . " "; } } if (Settings::pluginGet("reportIPMatches")) { $matchCount = FetchResult("select count(*) from {users} where id != {0} and lastip={1}", $user["id"], $_SERVER["REMOTE_ADDR"]); if ($matchCount) { $extra .= "-- " . Plural($matchCount, "IP match") . " "; } } if ($forum['minpower'] <= 0) { ircReport("" . $c2 . "New user: {$c1}" . ircUserColor($user["name"], $user['sex'], $user['powerlevel']) . "{$c2} {$extra}-- " . $link); }
$admin = Fetch(Query("select u.(_userfields) from {users} u where id = 1")); $admin = UserLink(getDataPrefix($admin, "u_")); $sexes = array(0 => __("Male"), 1 => __("Female"), 2 => __("N/A")); $powerlevels = array(0 => __("Normal user"), 1 => __("Local moderator"), 2 => __("Full moderator"), 3 => __("Administrator"), 4 => __("Root")); $headers = ""; $colors = ""; foreach ($sexes as $ss) { $headers .= format("\n\t<th>\n\t\t{0}\n\t</th>\n", $ss); } foreach ($powerlevels as $pn => $ps) { $cellClass = ($cellClass + 1) % 2; $items = ""; foreach ($sexes as $sn => $ss) { $items .= format("\n\t<td class=\"center\">\n\t\t<a href=\"javascript:void()\"><span class=\"nc{0}{1}\" style=\"font-weight: bold;\">\n\t\t\t{2}\n\t\t</span></a>\n\t</td>\n", $sn, $pn, $ps); } $colors .= format("\n<tr class=\"cell{0}\">\n\t{1}\n</tr>\n", $cellClass, $items); } $colortable = format("\n<table class=\"width50 outline\" style=\"margin-left: 25%; margin-right: auto\">\n\t<tr class=\"header1\">\n\t\t{0}\n\t</tr>\n\t<tr class=\"cell0\">\n\t\t<td class=\"center\" colspan=\"3\">\n\t\t\t<a href=\"javascript:void()\"><span class=\"nc0x\" style=\"font-weight: bold;\">\n\t\t\t\t" . __("Banned user") . "\n\t\t\t</span></a>\n\t\t</td>\n\t</tr>\n\t{1}\n</table>\n", $headers, $colors); $faq = Settings::pluginGet("faq"); $faq = str_replace("<colortable />", $colortable, $faq); $code1 = '<link rel="stylesheet" type="text/css" href="http://.../MyLayout_$theme.css" />'; $code2 = '<link rel="stylesheet" type="text/css" href="http://.../MyLayout_' . $theme . '.css" />'; $faq = str_replace("<themeexample1 />", DoGeshi($code1), $faq); $faq = str_replace("<themeexample2 />", DoGeshi($code2), $faq); $faq = str_replace("<themelist />", implode(", ", $themefiles), $faq); $faq = str_replace("<admin />", $admin, $faq); write("\n<div class=\"faq outline margin\" style=\"width: 60%; overflow: auto; margin: auto;\">\n{0}\n</div>", $faq); function DoGeshi($code) { return "<code>" . htmlspecialchars($code) . "</code>"; }
<?php if (!function_exists("HandleExtraField")) { function HandleExtraField($field, $item) { global $pluginSettings; $i = $item['fieldnumber']; $t = $item['isCaption'] ? "t" : "v"; $pluginSettings['profileExt' . $i . $t] = urlencode($_POST['extra' . $i . $t]); return true; } } $personal['extrafields'] = array("name" => "Custom profile fields", "items" => array()); for ($i = 0; $i < Settings::pluginGet('numberOfFields'); $i++) { $personal['extrafields']['items']['extra' . $i . 't'] = array("caption" => format(__("Caption for #{0}"), $i + 1), "type" => "text", "value" => getSetting("profileExt" . $i . "t", true), "callback" => "HandleExtraField", "width" => "98%", "fieldnumber" => $i, "isCaption" => true); $personal['extrafields']['items']['extra' . $i . 'v'] = array("caption" => format(__("Value for #{0}"), $i + 1), "type" => "text", "value" => getSetting("profileExt" . $i . "v", true), "callback" => "HandleExtraField", "width" => "98%", "fieldnumber" => $i, "isCaption" => false); }
<?php $navigation->add(new PipeMenuLinkEntry(Settings::pluginGet("pagename"), "blog", "", "", "comments"));
<?php if (str_word_count($_POST["text"]) < Settings::pluginGet("minwords")) { Alert(__("If you have nothing interesting to post, just don't post."), __("Your post is too short.")); $rejected = true; }
<?php // Support Do Not Track header. // http://donottrack.us/ function isDntEnabled() { return isset($_SERVER['HTTP_DNT']) && $_SERVER['HTTP_DNT'] == 1; } if (isDntEnabled() && Settings::pluginGet("dnt")) { echo "<!-- Disabling Google Analytics because you have Do Not Track set! We're awesome like that. -->"; } else { $loginstatus = json_encode($loguserid ? "Yes" : "No"); $tracking_id = json_encode(trim(Settings::pluginGet("trackingid"))); echo <<<EOS \t<script type="text/javascript"> \t var _gaq = _gaq || []; \t _gaq.push(['_setAccount', {$tracking_id}]); \t _gaq.push(['_setCustomVar', 1, 'Logged in', {$loginstatus}, 2]); \t _gaq.push(['_trackPageview']); \t \t (function() { \t\tvar ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; \t\tga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; \t\tvar s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); \t })(); \t</script> EOS; }
<?php // Uploader support hub $uploaddir = DATA_DIR . "uploader"; // uploader settings $goodfiles = explode(' ', Settings::pluginGet('uploaderWhitelist')); $badfiles = array("html", "htm", "php", "php2", "php3", "php4", "php5", "php6", "htaccess", "htpasswd", "mht", "js", "asp", "aspx", "cgi", "py", "exe", "com", "bat", "pif", "cmd", "lnk", "wsh", "vbs", "vbe", "jse", "wsf", "msc", "pl", "rb", "shtm", "shtml", "stm", "htc"); $userquota = Settings::pluginGet('uploaderCap') * 1024 * 1024; $maxSize = Settings::pluginGet('uploaderMaxFileSize') * 1024 * 1024; $uploaddirs = array(0 => $uploaddir, $uploaddir . '/' . $loguserid, $uploaddir . '/attachments', $uploaddir . '/objectdb'); function uploaderCleanup() { global $uploaddir; $timebeforedel = 604800; // one week $todelete = Query("SELECT physicalname, user, private FROM {uploader} WHERE deldate!=0 AND deldate<{0}", time() - $timebeforedel); while ($entry = Fetch($todelete)) { if ($entry['private']) { @unlink($uploaddir . "/" . $entry['user'] . "/" . $entry['physicalname']); } else { @unlink($uploaddir . "/" . $entry['physicalname']); } } Query("DELETE FROM {uploader} WHERE deldate!=0 AND deldate<{0}", time() - $timebeforedel); } // cattype: 0=uploader file, 1=private file, 2=attachment, 3=objectdb // cat: type=0: uploader category, type=1: nothing, type=2: post ID, type=3: object ID (except not-- object IDs aren't numeric) function uploadFile($file, $cattype, $cat) { global $loguserid, $uploaddirs, $goodfiles, $badfiles, $userquota, $maxSize; $targetdir = $uploaddirs[$cattype];
function bb2_email() { return Settings::pluginGet("email"); }
<?php $limit = Settings::pluginGet("limit"); doLastPosts(true, $limit);
<?php $maps = trim(Settings::pluginGet('maps')); if (!preg_match('/^(?:\\w+ )*\\w+$/', $maps)) { Kill('Please configure this plugin.'); } $db = @new mysqli(Settings::pluginGet('dbserv'), Settings::pluginGet('dbuser'), Settings::pluginGet('dbpass'), Settings::pluginGet('dbname')) or Kill('Couldn\'t get information.'); $blocks = (require 'plugins/minestats/mcblocks.php'); $maps = explode(' ', $maps); $properties = array('map' => array(__('Map'), array_combine($maps, $maps)), 'dir' => array(__('Direction'), array('ASC' => __('Ascending'), 'DESC' => __('Descending'))), 'order' => array(__('Order by'), array('created' => __('Created'), 'destroyed' => __('Destroyed'), 'SUM(created) + SUM(destroyed)' => __('Sum of created and destroyed'))), 'player' => array(__('Show'), array('NULL' => __('By player'), 0 => __('By block')))); $map = isset($_GET['map']) && in_array($_GET['map'], $maps) ? $_GET['map'] : $maps[0]; $dir = isset($properties['dir'][1][$_GET['dir']]) ? $_GET['dir'] : 'DESC'; $order = isset($properties['order'][1][$_GET['order']]) ? $_GET['order'] : 'destroyed'; echo '<table class="outline margin width100"><tr class="header0"><th colspan=3>', __('Settings'); $i = 1; foreach ($properties as $name => $property) { $i = ($i + 1) % 2; echo "<tr class=cell{$i}><td style=width:100px>{$property['0']}:<td>"; $properties = array(); foreach ($property[1] as $key => $value) { $gets = $_GET; if ($name === 'block' || $name === 'map') { unset($gets['block']); unset($gets['player']); } if ($key === 'NULL') { unset($gets[$name]); } else { $gets[$name] = $key; } $properties[] = '<a href="?' . htmlspecialchars(http_build_query($gets)) . '">' . $value . '</a>';
<?php //Autolock system $locktime = time() - 2592000 * Settings::pluginGet("months"); Query("UPDATE {threads} SET closed=1 WHERE closed=0 AND lastpostdate < {0}", $locktime);
} if ($loguserid == $entry['user'] || $loguser['powerlevel'] > 2) { $delete = "<sup> " . actionLinkTag("✘", "uploader", "", "action=delete&fid=" . $entry['id']) . "</sup>"; $multidel = "<td><input type=\"checkbox\" name=\"del[" . $entry['id'] . "]\" /></td>"; } $cellClass = ($cellClass + 1) % 2; $public .= format("\n\t\t<tr class=\"cell{0}\">\n\t\t\t{7}\n\t\t\t<td>\n\t\t\t\t<a href=\"{$boardroot}get.php?id={1}\">{2}</a>{3}\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t{4}\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t{5}\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t{6}\n\t\t\t</td>\n\t\t</tr>\n", $cellClass, $entry['id'], $entry['filename'], $delete, $entry['description'], BytesToSize(@filesize($rootdir . "/" . $entry['filename'])), UserLink($entry, "user"), $multidel); } if ($loguserid) { $public .= format("\n\t\t\t<tr class=\"header1\">\n\t\t\t\t<th style=\"text-align: right;\" colspan=\"6\">\n\t\t\t\t\t<input type=\"hidden\" name=\"action\" value=\"multidel\" />\n\t\t\t\t\t<a href=\"javascript:void();\" onclick=\"document.forms[2].submit();\">" . __("delete checked") . "</a>\n\t\t\t\t</th>\n\t\t\t</tr>"); } $public .= "</table>"; } $maxSizeMult = $uploaderMaxFileSize * 1024 * 1024; if ($loguserid && IsAllowed("useUploader")) { $uploadPart = format("\n<script type=\"text/javascript\">\n\twindow.addEventListener(\"load\", function() { hookUploadCheck(\"newfile\", 1, {1}) }, false);\n</script>\n<button style=\"float: right;\" onclick=\"var uploadForm = document.getElementById("uploadForm"); uploadForm.style.display = (uploadForm.style.display == 'none' ? 'block' : 'none');\">Upload new file</button>\n<form action=\"" . actionLink("uploader") . "\" method=\"post\" enctype=\"multipart/form-data\" id=\"uploadForm\" style=\"display: none;\">\n\t<table class=\"outline margin\">\n\t\t<tr class=\"header0\">\n\t\t\t<th colspan=\"4\">" . __("Upload") . "</th>\n\t\t</tr>\n\t\t<tr class=\"cell2\">\n\t\t\t<td>\n\t\t\t\t<input type=\"file\" id=\"newfile\" name=\"newfile\" style=\"width: 80%;\" />\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t<input type=\"text\" name=\"description\" style=\"width: 80%;\" />\n\t\t\t\t<label>\n\t\t\t\t\t<input type=\"checkbox\" name=\"private\" /> " . __("Private") . "\n\t\t\t\t</label>\n\t\t\t</td>\n\t\t\t<td>\n\t\t\t\t<input type=\"submit\" id=\"submit\" name=\"action\" value=\"" . __("Upload") . "\" disabled=\"disabled\" />\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr class=\"cell1 smallFonts\">\n\t\t\t<td colspan=\"3\">\n\t\t\t\t" . __("The maximum upload size is {0} per file. You can upload the following types: {2}.") . "\n\t\t\t\t<div id=\"sizeWarning\" style=\"display: none; font-weight: bold\">" . __("File is too large.") . "</div>\n\t\t\t\t<div id=\"typeWarning\" style=\"display: none; font-weight: bold\">" . __("File is not an allowed type.") . "</div>\n\t\t\t</td>\n\t\t</tr>\n\t</table>\n\t<br />\n</form>\n", BytesToSize($maxSizeMult), $maxSizeMult, Settings::pluginGet('uploaderWhitelist')); } $bar = " 0%"; if ($totalsize > 0) { $width = floor(100 * ($totalsize / $quota)); if ($width > 0) { $color = "green"; if ($width > 75) { $color = "yellow"; } if ($width > 90) { $color = "orange"; } if ($width > 100) { $width = 100; $color = "red;";
if ($thread['replies'] != 0) { $comments .= " Last by " . UserLink($last) . ". {$lastLink}"; } $newreply = actionLinkTag("Post a comment", "newreply", $thread['id'], "", $thread["title"]); if ($thread['sticky']) { $forumList .= "<table class='outline margin width100'>"; $forumList .= "<tr class='cell1'><td style='border: 1px solid #000; padding:16px' colspan='2'>{$posttext}</td></tr>"; $forumList .= "</table>"; } else { $forumList .= "<table class='outline margin width100'>"; $forumList .= "\n\t\t<tr class=\"header1\" >\n\t\t\t<th style='text-align:left;'><span style='font-size:15px'>" . $tags[0] . "</span><span style='font-weight:normal;'>{$subtitle}</span></th>\n\t\t\t<th style='text-align:left; width:150px; font-weight:normal;'>Posted by " . UserLink($starter) . "<br>{$postdate}</th>\n\t\t</tr>"; $forumList .= "<tr class='cell1'><td colspan='2' style='padding:10px'>{$posttext}</td></tr>"; $forumList .= "<tr class='cell0'><td>{$comments}</td><td style=\"border-left: 0px none;\">{$newreply}</td></tr>"; $forumList .= "</table>"; } } Write($forumList); if ($pagelinks) { Write("<div class=\"smallFonts pages\">" . __("Pages:") . " {0}</div>", $pagelinks); } if ($twoColumns) { echo '</td><td style="border: 0px none; vertical-align: top; padding-right: 1em; padding-bottom: 1em;">'; echo '<table class="outline margin width100"> <tr class="header0"><th> </th></tr> <tr class="cell1"><td style="padding:16px" colspan="2">'; echo CleanUpPost(Settings::pluginGet("righttext")); echo '</td></tr></table>'; $bucket = "blogxd_rightcolumn"; include "lib/pluginloader.php"; echo '</td></tr></table>'; }
<?php if ($isHidden) { return; } $c1 = ircColor(Settings::pluginGet("color1")); $c2 = ircColor(Settings::pluginGet("color2")); $thename = $loguser["name"]; if ($loguser["displayname"]) { $thename = $loguser["displayname"]; } $fpage = ircForumPrefix($forum); $link = getServerDomainNoSlash() . actionLink("post", $pid); ircReport("" . $c2 . "New reply by{$c1} " . ircUserColor($thename, $loguser['sex'], 0) . "{$c2}: {$c1}" . $thread["title"] . "{$c2} (" . $fpage . $forum["title"] . ")" . " -- " . $link);
<?php echo Settings::pluginGet("text");
<?php $redirects = Settings::pluginGet("redirects"); $redirects = explode("\n", $redirects); //Remove empty strings $redirects = array_map('trim', $redirects); $redirects = array_filter($redirects); foreach ($redirects as $redirect) { $redirect = explode(" ", $redirect); //Remove empty strings $redirect = array_map('trim', $redirect); $redirect = array_filter($redirect); $tableLists[$redirect[0]] = $redirect[1]; }
<?php $bad = array("~", "&", "@", "?", "!", ".", ",", "=", "+", "%", "*"); $handle = str_replace(" ", "", $loguser['name']); $handle = str_replace($badchars, "_", $handle); $prompt = ""; if (!$handle) { $handle = "ABXDGuest."; $prompt = "&prompt=1"; } $server = Settings::pluginGet("server"); $channels = Settings::pluginGet("channels"); $handle = urlencode($handle); $channels = urlencode($channels); redirect("{$server}/?nick={$handle}&channels={$channels}{$prompt}");
} $totalsize = foldersize($targetdir); mkdir($targetdir); $files = scandir($targetdir); if (in_array($_FILES['newfile']['name'], $files)) { Alert(format(__("The file \"{0}\" already exists. Please delete the old copy before uploading a new one."), $_FILES['newfile']['name'])); } else { if ($_FILES['newfile']['size'] == 0) { if ($_FILES['newfile']['tmp_name'] == "") { Alert(__("No file given.")); } else { Alert(__("File is empty.")); } } else { if ($_FILES['newfile']['size'] > Settings::pluginGet('uploaderMaxFileSize') * 1024 * 1024) { Alert(format(__("File is too large. Maximum size is {0}."), BytesToSize(Settings::pluginGet('uploaderMaxFileSize') * 1024 * 1024))); } else { $fname = $_FILES['newfile']['name']; $temp = $_FILES['newfile']['tmp_name']; $size = $_FILES['size']['size']; $parts = explode(".", $fname); $extension = end($parts); if ($totalsize + $size > $quot) { Alert(format(__("Uploading \"{0}\" would break the quota."), $fname)); } else { if (in_array(strtolower($extension), $badfiles) || is_array($goodfiles) && !in_array(strtolower($extension), $goodfiles)) { Alert(__("Forbidden file type.")); } else { $description = htmlspecialchars($_POST['description']); Query("insert into {uploader} (filename, description, date, user, private, category) values ({0}, {1}, {2}, {3}, {4}, {5})", $fname, $description, time(), $loguserid, $privateFlag, $_POST['cat']); copy($temp, $targetdir . "/" . $fname);
<?php $title = "IRC Chat"; $crumbs = new PipeMenu(); $crumbs->add(new PipeMenuLinkEntry(__("IRC chat"), "irc")); makeBreadcrumbs($crumbs); $bad = array("~", "&", "@", "?", "!", ".", ",", "=", "+", "%", "*"); $handle = str_replace(" ", "", $loguser['name']); $handle = str_replace($badchars, "_", $handle); if (!$handle) { $handle = "ABXDGuest"; $guest = "<p>When you've connected to the IRC network, please use the command <kbd>/nick NICKNAME</kbd>.</p>"; } $server = Settings::pluginGet("server"); $channel = Settings::pluginGet("channel"); $port = Settings::pluginGet("port"); if (isset($_GET['connect'])) { write("\n\t<div class=\"message\" style=\"width: 90%; margin: 2em auto; text-align: center;\">\n\t\t<h3 style=\"text-align: left;\">IRC chat</h3>\n\t\t<applet code=\"IRCApplet.class\" codebase=\"" . resourceLink("plugins/ircpage/pjirc/") . "\"\n\t\tarchive=\"irc.jar,pixx.jar\" width=\"100%\" height=\"500\">\n\t\t<param name=\"CABINETS\" value=\"irc.cab,securedirc.cab,pixx.cab\">\n\n\t\t<param name=\"nick\" value=\"{0}\">\n\t\t<param name=\"alternatenick\" value=\"{0}_??\">\n\t\t<param name=\"fullname\" value=\"ABXD IRC User\">\n\t\t<param name=\"host\" value=\"{1}\">\n\t\t<param name=\"port\" value=\"{3}\">\n\t\t<param name=\"gui\" value=\"pixx\">\n\t\t<param name=\"authorizedcommandlist\" value=\"all-server-s\">\n\n\t\t<param name=\"quitmessage\" value=\"Leaving\">\n\t\t<param name=\"autorejoin\" value=\"true\">\n\n\t\t<param name=\"style:bitmapsmileys\" value=\"false\">\n\t\t<param name=\"style:backgroundimage\" value=\"false\">\n\t\t<param name=\"style:backgroundimage1\" value=\"none+Channel all 2 background.png.gif\">\n\t\t<param name=\"style:sourcecolorrule1\" value=\"all all 0=000000 1=ffffff 2=0000ff 3=00b000 4=ff4040 5=c00000 6=c000a0 7=ff8000 8=ffff00 9=70ff70 10=00a0a0 11=80ffff 12=a0a0ff 13=ff60d0 14=a0a0a0 15=d0d0d0\">\n\n\t\t<param name=\"pixx:timestamp\" value=\"true\">\n\t\t<param name=\"pixx:highlight\" value=\"true\">\n\t\t<param name=\"pixx:highlightnick\" value=\"true\">\n\t\t<param name=\"pixx:nickfield\" value=\"false\">\n\t\t<param name=\"pixx:styleselector\" value=\"true\">\n\t\t<param name=\"pixx:setfontonstyle\" value=\"true\">\n\n\t\t<param name=\"command1\" value=\"/join {2}\">\n\n\t\t</applet><br />\n\t\t<small style=\"float: right; opacity: 0.5;\">We recommend you get a stand-alone client such as <a href=\"http://hexchat.org\">HexChat</a> if you plan on frequently joining IRC</small>\n\t\t<br />\n\t</div>\n", $handle, $server, $channel, $port); } else { write("\n\t<div class=\"message margin\" style=\"width: 75%; margin: 2em auto; text-align: center;\">\n\t<h3 style=\"text-align: left;\">IRC chat</h3><br />\n\t\t<strong>Server:</strong> {1}:{4}<br />\n\t\t<strong>Channel:</strong> {2}<br />\n\t\t<strong>Nickname:</strong> {0}<br />\n\t\t<br />\n\t\t<a href=\"" . actionLink("irc", "", "connect") . "\"><button>" . __("Use the board's IRC applet") . "</button></a><br />\n\t\t<br />\n\t\t<small style=\"opacity: 0.5;\">(We recommend you get a stand-alone client such as <a href=\"http://hexchat.org\">HexChat</a> if you plan on frequently joining IRC)</small>\n\t\t<br /><br />\n\t\t{3}\n\t</div>\n", $handle, $server, $channel, $guest, $port); }