diff --git a/common.php b/common.php index 8055041b..83497cbe 100644 --- a/common.php +++ b/common.php @@ -28,7 +28,7 @@ session_start(); define('MYAAC', true); define('MYAAC_VERSION', '0.3.0'); -define('DATABASE_VERSION', 7); +define('DATABASE_VERSION', 8); define('TABLE_PREFIX', 'myaac_'); define('START_TIME', microtime(true)); define('MYAAC_OS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? 'WINDOWS' : (strtoupper(PHP_OS) == 'DARWIN' ? 'MAC' : 'LINUX')); diff --git a/install/includes/schema.sql b/install/includes/schema.sql index acb08f6d..25a22cec 100644 --- a/install/includes/schema.sql +++ b/install/includes/schema.sql @@ -67,7 +67,7 @@ CREATE TABLE `myaac_faq` PRIMARY KEY (`id`) ) ENGINE = MyISAM; -CREATE TABLE `myaac_forum_sections` +CREATE TABLE `myaac_forum_boards` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NULL, @@ -77,11 +77,11 @@ CREATE TABLE `myaac_forum_sections` `hidden` TINYINT(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE = MyISAM; -INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`, `closed`) VALUES (NULL, 'News', 'News commenting', 1); -INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Trade', 'Trade offers.'); -INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Quests', 'Quest making.'); -INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Pictures', 'Your pictures.'); -INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Bug Report', 'Report bugs there.'); +INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`, `closed`) VALUES (NULL, 'News', 'News commenting', 0, 1); +INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Trade', 'Trade offers.', 1); +INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Quests', 'Quest making.', 2); +INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Pictures', 'Your pictures.', 3); +INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Bug Report', 'Report bugs there.', 4); CREATE TABLE `myaac_forum` ( diff --git a/system/functions.php b/system/functions.php index de2bcf56..8f84b863 100644 --- a/system/functions.php +++ b/system/functions.php @@ -9,13 +9,22 @@ * @link http://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); -function success($message) { +function success($message, $return = false) { + if($return) + return '<p class="success">' . $message . '</p>'; + echo '<p class="success">' . $message . '</p>'; } -function warning($message) { +function warning($message, $return = false) { + if($return) + return '<p class="warning">' . $message . '</p>'; + echo '<p class="warning">' . $message . '</p>'; } -function error($message) { +function error($message, $return = false) { + if($return) + return '<p class="error">' . $message . '</p>'; + echo '<p class="error">' . $message . '</p>'; } @@ -218,10 +227,11 @@ function generateRandomString($length, $lowCase = true, $upCase = false, $numeri * * @return array Forum sections. */ -function getForumSections() +function getForumBoards() { - global $db; - $sections = $db->query('SELECT `id`, `name`, `description`, `closed` FROM ' . TABLE_PREFIX . 'forum_sections WHERE hidden != 1 ORDER BY `ordering`;'); + global $db, $canEdit; + $sections = $db->query('SELECT `id`, `name`, `description`, `closed`' . ($canEdit ? ', `hidden`, `ordering`' : '') . ' FROM `' . TABLE_PREFIX . 'forum_boards` ' . (!$canEdit ? ' WHERE `hidden` != 1' : '') . + ' ORDER BY `ordering`;'); if($sections) return $sections->fetchAll(); diff --git a/system/login.php b/system/login.php index 0b5d0f4b..2c916791 100644 --- a/system/login.php +++ b/system/login.php @@ -74,8 +74,6 @@ else $_SESSION['remember_me'] = true; $logged = true; - - $logged_flags = $account_logged->getWebFlags(); if(isset($_POST['admin']) && !admin()) { $errors[] = 'This account has no admin privileges.'; unset($_SESSION['account']); @@ -114,7 +112,7 @@ else } } } - + // stay-logged with sessions if(isset($_SESSION['account'])) { @@ -122,15 +120,17 @@ else $account_logged->load($_SESSION['account']); if($account_logged->isLoaded() && $account_logged->getPassword() == $_SESSION['password'] //&& (!isset($_SESSION['admin']) || admin()) - && (isset($_SESSION['remember_me']) || $_SESSION['last_visit'] > time() - 15 * 60)) // login for 15 minutes if "remember me" is not used + && (isset($_SESSION['remember_me']) || $_SESSION['last_visit'] > time() - 15 * 60)) { // login for 15 minutes if "remember me" is not used $logged = true; + } else { + $logged = false; unset($_SESSION['account']); unset($account_logged); } } - + if($logged) { $logged_flags = $account_logged->getWebFlags(); $twig->addGlobal('account_logged', $account_logged); diff --git a/system/migrations/8.php b/system/migrations/8.php new file mode 100644 index 00000000..0bf1bb7c --- /dev/null +++ b/system/migrations/8.php @@ -0,0 +1,18 @@ +<?php + if(tableExist(TABLE_PREFIX . 'forum_sections')) + $db->query('RENAME TABLE `' . TABLE_PREFIX . 'forum_sections` TO `' . TABLE_PREFIX . 'forum_boards`;'); + + $query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'forum_boards` WHERE `ordering` > 0;'); + if($query->rowCount() == 0) { + $boards = array( + 'News', + 'Trade', + 'Quests', + 'Pictures', + 'Bug Report' + ); + + foreach($boards as $id => $board) + $db->query('UPDATE `' . TABLE_PREFIX . 'forum_boards` SET `ordering` = ' . $id . ' WHERE `name` = ' . $db->quote($board)); + } +?> \ No newline at end of file diff --git a/system/pages/accountmanagement.php b/system/pages/accountmanagement.php index a1d16c20..50ed2d0f 100644 --- a/system/pages/accountmanagement.php +++ b/system/pages/accountmanagement.php @@ -17,7 +17,8 @@ if($config['account_country']) $groups = new OTS_Groups_List(); -$dontshowtableagain = false; +$errors = array(); +$show_form = true; $config_salt_enabled = fieldExist('salt', 'accounts'); if(!$logged) { @@ -213,55 +214,65 @@ if(!$logged) } //############# CHANGE E-MAIL ################### - if($action == "changeemail") { - $email_new_time = $account_logged->getCustomField("email_new_time"); - if($email_new_time > 10) {$email_new = $account_logged->getCustomField("email_new"); } - if($email_new_time < 10){ - if(isset($_POST['changeemailsave']) && $_POST['changeemailsave'] == 1) { - $email_new = $_POST['new_email']; - $post_password = $_POST['password']; - if(empty($email_new)) { - $errors[] = "Please enter your new email address."; - } - else - { - if(!check_mail($email_new)) { - $errors[] = "E-mail address is not correct."; - } - } - if(empty($post_password)) { - $errors[] = "Please enter password to your account."; - } - else - { - $post_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $post_password); - if($post_password != $account_logged->getPassword()) { - $errors[] = "Wrong password to account."; - } - } - if(empty($errors)) { - $email_new_time = time() + $config['account_mail_change'] * 24 * 3600; - $account_logged->setCustomField("email_new", $email_new); - $account_logged->setCustomField("email_new_time", $email_new_time); - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >New Email Address Requested</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have requested to change your email address to <b>'.$email_new.'</b>. The actual change will take place after <b>'.date("j F Y, G:i:s", $email_new_time).'</b>, during which you can cancel the request at any time.</td></tr> </table> </div> </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; - } - else - { - //show errors - echo $twig->render('error_box.html.twig', array('errors' => $errors)); +if($action == "changeemail") { + $email_new_time = $account_logged->getCustomField("email_new_time"); + + if($email_new_time > 10) { + $email_new = $account_logged->getCustomField("email_new"); + } + + if($email_new_time < 10) { + if(isset($_POST['changeemailsave']) && $_POST['changeemailsave'] == 1) { + $email_new = $_POST['new_email']; + $post_password = $_POST['password']; - //show form + if(empty($email_new)) { + $errors[] = 'Please enter your new email address.'; + } + else + { + if(!check_mail($email_new)) { + $errors[] = 'Email address is not correct.'; + } + } + + if(empty($post_password)) { + $errors[] = 'Please enter password to your account.'; + } + else { + $post_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $post_password); + if($post_password != $account_logged->getPassword()) { + $errors[] = 'Wrong password to account.'; + } + } + + if(empty($errors)) { + $email_new_time = time() + $config['account_mail_change'] * 24 * 3600; + $account_logged->setCustomField("email_new", $email_new); + $account_logged->setCustomField("email_new_time", $email_new_time); + echo $twig->render('success.html.twig', array( + 'title' => 'New Email Address Requested', + 'description' => 'You have requested to change your email address to <b>' . $email_new . '</b>. The actual change will take place after <b>' . date("j F Y, G:i:s", $email_new_time) . '</b>, during which you can cancel the request at any time.' + )); + } + else + { + //show errors + echo $twig->render('error_box.html.twig', array('errors' => $errors)); + + //show form + echo $twig->render('account.change_mail.html.twig', array( + 'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null + )); + } + } + else + { echo $twig->render('account.change_mail.html.twig', array( 'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null )); } - } - else - { - echo $twig->render('account.change_mail.html.twig', array( - 'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null - )); - } + } else { @@ -280,20 +291,89 @@ if(!$logged) } else { - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Email Address Change Accepted</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>Do you accept <b>'.$email_new.'</b> as your new email adress?</td></tr> </table> </div> </table></div></td></tr><br /><table width="100%"><tr><td width="30"> </td><td align=left><form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="changeemailsave" value=1 ><INPUT TYPE=image NAME="I Agree" SRC="'.$template_path.'/images/buttons/sbutton_iagree.gif" BORDER=0 WIDTH=120 HEIGHT=17></FORM></td><td align=left><form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="emailchangecancel" value=1 ><input type=image name="Cancel" src="'.$template_path.'/images/buttons/sbutton_cancel.gif" BORDER=0 WIDTH=120 HEIGHT=17></form></td><td align=right><form action="?subtopic=accountmanagement" method="post" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></form></td><td width="30"> </td></tr></table>'; + $custom_buttons = ' +<table width="100%"> + <tr> + <td width="30"> </td> + <td align=left> + <form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="changeemailsave" value=1 > + <INPUT TYPE=image NAME="I Agree" SRC="' . $template_path . '/images/buttons/sbutton_iagree.gif" BORDER=0 WIDTH=120 HEIGHT=17> + </form> + </td> + <td align=left> + <form action="?subtopic=accountmanagement&action=changeemail" method="post"> + <input type="hidden" name="emailchangecancel" value=1 > + <input type=image name="Cancel" src="' . $template_path . '/images/buttons/sbutton_cancel.gif" BORDER=0 WIDTH=120 HEIGHT=17> + </form> + </td> + <td align=right> + <form action="?subtopic=accountmanagement" method="post" > + <div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="' . $template_path . '/images/buttons/_sbutton_back.gif" ></div> + </div> + </form> + </td> + <td width="30"> </td> + </tr> +</table>'; + echo $twig->render('success.html.twig', array( + 'title' => 'Email Address Change Accepted', + 'description' => 'Do you accept <b>'.$email_new.'</b> as your new email adress?', + 'custom_buttons' => $custom_buttons + )); } } else { - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Change of Email Address</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>A request has been submitted to change the email address of this account to <b>'.$email_new.'</b>.<br/>The actual change will take place on <b>'.date("j F Y, G:i:s", $email_new_time).'</b>.<br>If you do not want to change your email address, please click on "Cancel".</td></tr> </table> </div> </table></div></td></tr><br/><table style="width:100%;" ><tr align="center"><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement&action=changeemail" method="post" ><tr><td style="border:0px;" ><input type="hidden" name="emailchangecancel" value=1 ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Cancel" alt="Cancel" src="'.$template_path.'/images/buttons/_sbutton_cancel.gif" ></div></div></td></tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>'; + $custom_buttons = ' +<table style="width:100%;" > + <tr align="center"> + <td> + <table border="0" cellspacing="0" cellpadding="0" > + <form action="?subtopic=accountmanagement&action=changeemail" method="post" > + <tr> + <td style="border:0px;" > + <input type="hidden" name="emailchangecancel" value="1" > + <div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Cancel" alt="Cancel" src="'.$template_path.'/images/buttons/_sbutton_cancel.gif" ></div> + </div> + </td> + </tr> + </form> + </table> + </td> + <td> + <table border="0" cellspacing="0" cellpadding="0" > + <form action="?subtopic=accountmanagement" method="post" > + <tr> + <td style="border:0px;" > + <div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="' . $template_path . '/images/buttons/_sbutton_back.gif" ></div> + </div> + </td> + </tr> + </form> + </table> + </td> + </tr> +</table>'; + echo $twig->render('success.html.twig', array( + 'title' => 'Change of Email Address', + 'description' => 'A request has been submitted to change the email address of this account to <b>'.$email_new.'</b>.<br/>The actual change will take place on <b>'.date("j F Y, G:i:s", $email_new_time).'</b>.<br>If you do not want to change your email address, please click on "Cancel".', + 'custom_buttons' => $custom_buttons + )); } } if(isset($_POST['emailchangecancel']) && $_POST['emailchangecancel'] == 1) { $account_logged->setCustomField("email_new", ""); $account_logged->setCustomField("email_new_time", 0); - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Email Address Change Cancelled</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>Your request to change the email address of your account has been cancelled. The email address will not be changed.</td></tr> </table> </div> </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; - } + + $custom_buttons = '<center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; + + echo $twig->render('success.html.twig', array( + 'title' => 'Email Address Change Cancelled', + 'description' => 'Your request to change the email address of your account has been cancelled. The email address will not be changed.', + 'custom_buttons' => $custom_buttons + )); } +} //########### CHANGE PUBLIC INFORMATION (about account owner) ###################### if($action == "changeinfo") { @@ -302,8 +382,6 @@ if(!$logged) $new_location = isset($_POST['info_location']) ? htmlspecialchars(stripslashes($_POST['info_location'])) : NULL; $new_country = isset($_POST['info_country']) ? htmlspecialchars(stripslashes($_POST['info_country'])) : NULL; if(isset($_POST['changeinfosave']) && $_POST['changeinfosave'] == 1) { - $errors = array(); - if(!isset($config['countries'][$new_country])) $errors[] = 'Country is not correct.'; @@ -355,44 +433,46 @@ if(!$logged) $_POST['reg_password'] = isset($_POST['reg_password']) ? $_POST['reg_password'] : ''; $reg_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $_POST['reg_password']); $old_key = $account_logged->getCustomField("key"); + if(isset($_POST['registeraccountsave']) && $_POST['registeraccountsave'] == "1") { if($reg_password == $account_logged->getPassword()) { if(empty($old_key)) { - $dontshowtableagain = true; + $show_form = false; $new_rec_key = generateRandomString(10, false, true, true); $account_logged->setCustomField("key", $new_rec_key); $account_logged->logAction('Generated recovery key.'); - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Registered</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" >Thank you for registering your account! You can now recover your account if you have lost access to the assigned email address by using the following<br/><br/><font size="5"> <b>Recovery Key: '.$new_rec_key.'</b></font><br/><br/><br/><b>Important:</b><ul><li>Write down this recovery key carefully.</li><li>Store it at a safe place!</li>'; + if($config['mail_enabled'] && $config['send_mail_when_generate_reckey']) { - $mailBody = ' - <h3>New recovery key!</h3> - <p>You or someone else generated recovery key to your account on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a>.</p> - <p>Recovery key: <b>'.$new_rec_key.'</b></p>'; - if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - recovery key", $mailBody)) - echo '<br /><small>Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b>.</small>'; + $mailBody = $twig->render('mail.account.register.html.twig', array( + 'recovery_key' => $new_rec_key + )); + if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - Recovery Key", $mailBody)) + $message = '<br /><small>Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b>.</small>'; else - echo '<br /><p class="error">An error occorred while sending email with recovery key! You will not receive e-mail with this key. Error:<br/>' . $mailer->ErrorInfo . '</p>'; + $message = '<br /><p class="error">An error occorred while sending email with recovery key! You will not receive e-mail with this key. Error:<br/>' . $mailer->ErrorInfo . '</p>'; } - echo '</ul> </table> </div> </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; + echo $twig->render('success.html.twig', array( + 'title' => 'Account Registered', + 'description' => 'Thank you for registering your account! You can now recover your account if you have lost access to the assigned email address by using the following<br/><br/><font size="5"> <b>Recovery Key: '.$new_rec_key.'</b></font><br/><br/><br/><b>Important:</b><ul><li>Write down this recovery key carefully.</li><li>Store it at a safe place!</li>' . $message . '</ul>' + )); } else - $reg_errors[] = 'Your account is already registered.'; + $errors[] = 'Your account is already registered.'; } else - $reg_errors[] = 'Wrong password to account.'; + $errors[] = 'Wrong password to account.'; } - if(!$dontshowtableagain) - { - if(!empty($reg_errors)) - { + + if($show_form) { + if(!empty($errors)) { //show errors - echo $twig->render('error_box.html.twig', array('errors' => $reg_errors)); + echo $twig->render('error_box.html.twig', array('errors' => $errors)); } //show form - echo $twig->render('account.register.html.twig'); + echo $twig->render('account.generate_recovery_key.html.twig'); } } @@ -414,40 +494,46 @@ if(!$logged) { if($points >= $config['generate_new_reckey_price']) { - $dontshowtableagain = true; - $new_rec_key = generateRandomString(10, false, true, true); - - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Registered</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><ul>'; - - $mailBody = ' - <h3>New recovery key!</h3> - <p>You or someone else generated recovery key to your account on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a>.</p> - <p>Recovery key: <b>'.$new_rec_key.'</b></p>'; - if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - new recovery key", $mailBody)) - { - $account_logged->setCustomField("key", $new_rec_key); - $account_logged->setCustomField("premium_points", $account_logged->getCustomField("premium_points") - $config['generate_new_reckey_price']); - $account_logged->logAction('Generated new recovery key for ' . $config['generate_new_reckey_price'] . ' premium points.'); - echo '<br />Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b> for '.$config['generate_new_reckey_price'].' premium points.'; - } - else - echo '<br /><p class="error">An error occorred while sending email ( <b>'.$account_logged->getEMail().'</b> ) with recovery key! Recovery key not changed. Try again. Error:<br/>' . $mailer->ErrorInfo . '</p>'; - echo '</ul> </table> </div> </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; + $show_form = false; + $new_rec_key = generateRandomString(10, false, true, true); + + $mailBody = $twig->render('mail.account.register.html.twig', array( + 'recovery_key' => $new_rec_key + )); + + if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - new recovery key", $mailBody)) + { + $account_logged->setCustomField("key", $new_rec_key); + $account_logged->setCustomField("premium_points", $account_logged->getCustomField("premium_points") - $config['generate_new_reckey_price']); + $account_logged->logAction('Generated new recovery key for ' . $config['generate_new_reckey_price'] . ' premium points.'); + $message = '<br />Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b> for '.$config['generate_new_reckey_price'].' premium points.'; + } + else + $message = '<br /><p class="error">An error occorred while sending email ( <b>'.$account_logged->getEMail().'</b> ) with recovery key! Recovery key not changed. Try again. Error:<br/>' . $mailer->ErrorInfo . '</p>'; + + echo $twig->render('success.html.twig', array( + 'title' => 'Account Registered', + 'description' => '<ul>' . $message . '</ul>' + )); } else - $reg_errors[] = 'You need '.$config['generate_new_reckey_price'].' premium points to generate new recovery key. You have <b>'.$points.'<b> premium points.'; + $errors[] = 'You need '.$config['generate_new_reckey_price'].' premium points to generate new recovery key. You have <b>'.$points.'<b> premium points.'; } else - $reg_errors[] = 'Wrong password to account.'; + $errors[] = 'Wrong password to account.'; } - if(!$dontshowtableagain) + + //show errors if not empty + if(!empty($errors)) { + echo $twig->render('error_box.html.twig', array('errors' => $errors)); + } + + if($show_form) { - //show errors if not empty - if(!empty($reg_errors)) { - echo $twig->render('error_box.html.twig', array('errors' => $reg_errors)); - } //show form - echo 'To generate NEW recovery key for your account please enter your password.<br/><font color="red"><b>New recovery key cost '.$config['generate_new_reckey_price'].' Premium Points.</font> You have '.$points.' premium points. You will receive e-mail with this recovery key.</b><br/><form action="?subtopic=accountmanagement&action=newreckey" method="post" ><input type="hidden" name="registeraccountsave" value="1"><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Generate recovery key</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Password:</td><td><input type="password" name="reg_password" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>'; + echo $twig->render('account.generate_new_recovery_key.html.twig', array( + 'points' => $points + )); } } } @@ -469,19 +555,17 @@ if(!$logged) $player->setCustomField("hidden", $new_hideacc); $player->setCustomField("comment", $new_comment); $account_logged->logAction('Changed comment for character <b>' . $player->getName() . '</b>.'); - echo '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Character Information Changed</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>The character information has been changed.</td></tr> </table> </div> </table></div></td></tr><br><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>'; + echo $twig->render('success.html.twig', array( + 'title' => 'Character Information Changed', + 'description' => 'The character information has been changed.' + )); } else { - echo 'Here you can see and edit the information about your character.<br/>If you do not want to specify a certain field, just leave it blank.<br/><br/><form action="?subtopic=accountmanagement&action=changecomment" method="post" ><div class="TableContainer" > <table class="Table5" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Edit Character Information</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td><div class="TableShadowContainerRightTop" > <div class="TableShadowRightTop" style="background-image:url('.$template_path.'/images/content/table-shadow-rt.gif);" ></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-rm.gif);" > <div class="TableContentContainer" > <table class="TableContent" width="100%" ><tr><td class="LabelV" >Name:</td><td style="width:80%;" >'.$player_name.'</td></tr><tr><td class="LabelV" >Hide Account:</td><td> - <input type="hidden" value="0" name="accountvisible"> - - <input type="checkbox" name="accountvisible" id="accountvisible" value="1" ' . ($player->getCustomField("hidden") == 1 ? ' checked="checked"' : '') . '> - <label for="accountvisible"> check to hide your account information</label>'; - if((int)$player->getCustomField('group_id') > 1) - echo ' (you will be also hidden on the Team page!)'; - - echo '</td></tr> </table> </div></div><div class="TableShadowContainer" > <div class="TableBottomShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bm.gif);" > <div class="TableBottomLeftShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bl.gif);" ></div> <div class="TableBottomRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-br.gif);" ></div> </div></div></td></tr><tr><td><div class="TableShadowContainerRightTop" > <div class="TableShadowRightTop" style="background-image:url('.$template_path.'/images/content/table-shadow-rt.gif);" ></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-rm.gif);" > <div class="TableContentContainer" > <table class="TableContent" width="100%" ><tr><td class="LabelV" ><span >Comment:</span></td><td style="width:80%;" ><textarea name="comment" rows="10" cols="50" wrap="virtual" >'.$player->getCustomField("comment").'</textarea><br>[max. length: 2000 chars, 50 lines (ENTERs)]</td></tr> </table> </div></div><div class="TableShadowContainer" > <div class="TableBottomShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bm.gif);" ><div class="TableBottomLeftShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bl.gif);" ></div><div class="TableBottomRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-br.gif);" ></div></div></div></td></tr></td></tr> </table> </div> </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><input type="hidden" name="name" value="'.$player->getName().'"><input type="hidden" name="changecommentsave" value="1"><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>'; + echo $twig->render('account.change_comment.html.twig', array( + 'player' => $player, + 'player_name' => $player_name + )); } } else @@ -503,11 +587,10 @@ if(!$logged) if($action == "changename") { echo '<script type="text/javascript" src="tools/check_name.js"></script>'; - $name_changed = false; $player_id = isset($_POST['player_id']) ? (int)$_POST['player_id'] : NULL; $name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : NULL; if((!$config['account_change_character_name'])) - echo 'You cant change your character name'; + echo 'Changing character name for premium points is disabled on this server.'; else { $points = $account_logged->getCustomField('premium_points'); @@ -516,12 +599,18 @@ if(!$logged) $errors[] = 'You need ' . $config['account_change_character_name_points'] . ' premium points to change name. You have <b>'.$points.'<b> premium points.'; if(empty($errors) && empty($name)) - $errors[] = 'Please enter a name for your character!'; - - if(empty($errors) && strlen($name) > 25) + $errors[] = 'Please enter a new name for your character!'; + else if(strlen($name) > 25) $errors[] = 'Name is too long. Max. lenght <b>25</b> letters.'; - else if(empty($errors) && strlen($name) < 3) - $errors[] = 'Name is too short. Min. lenght <b>25</b> letters.'; + else if(strlen($name) < 3) + $errors[] = 'Name is too short. Min. lenght <b>3</b> letters.'; + else { + $exist = new OTS_Player(); + $exist->find($name); + if($exist->isLoaded()) { + $errors[] = 'Character with this name already exist.'; + } + } if(empty($errors)) { @@ -531,7 +620,7 @@ if(!$logged) } if(empty($errors)) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($player_id); if($player->isLoaded()) { $player_account = $player->getAccount(); @@ -541,7 +630,7 @@ if(!$logged) } if(empty($errors)) { - $name_changed = true; + $show_form = false; $old_name = $player->getName(); $player->setName($name); $player->save(); @@ -563,34 +652,15 @@ if(!$logged) } } - if(!$name_changed) { + if($show_form) { if(!empty($errors)) { echo $twig->render('error_box.html.twig', array('errors' => $errors)); } - echo 'To change a name of character select player and choose a new name.<br/> - <font color="red">Change name cost ' . $config['account_change_character_name_points'] . ' premium points. You have ' . $points . ' premium points.</font><br/><br/><form action="?subtopic=accountmanagement&action=changename" method="post" ><input type="hidden" name="changenamesave" value="1"><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Change Name</div> <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > - <table style="width:100%;" > - <tr> - <td class="LabelV" ><span >Character:</td> - <td style="width:90%;" > - <select name="player_id">'; - $players = $account_logged->getPlayersList(); - foreach($players as $player) - echo '<option value="' . $player->getId() . '">' . $player->getName() . '</option>'; - echo ' - </select> - </td> - </tr> - <tr> - <td class="LabelV" ><span >New Name:</td> - <td> - <input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" > - <font size="1" face="verdana,arial,helvetica"> - <div id="name_check">Please enter your character name.</div> - </font> - </td> - </tr> - </table> </div> </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>'; + + echo $twig->render('account.change_name.html.twig', array( + 'points' => $points, + //'account_players' => $account_logged->getPlayersList() + )); } } } @@ -688,7 +758,7 @@ if(!$logged) if(!$player->isOnline()) { //dont show table "delete character" again - $dontshowtableagain = true; + $show_form = false; //delete player if(fieldExist('deletion', 'players')) $player->setCustomField('deletion', 1); @@ -723,7 +793,7 @@ if(!$logged) $errors[] = 'Character name or/and password is empty. Please fill in form.'; } } - if(!$dontshowtableagain) { + if($show_form) { if(!empty($errors)) { echo $twig->render('error_box.html.twig', array('errors' => $errors)); } @@ -738,8 +808,7 @@ if(!$logged) $newchar_sex = isset($_POST['sex']) ? $_POST['sex'] : NULL; $newchar_vocation = isset($_POST['vocation']) ? $_POST['vocation'] : NULL; $newchar_town = isset($_POST['town']) ? $_POST['town'] : NULL; - $errors = array(); - + $newchar_created = false; if(isset($_POST['savecharacter']) && $_POST['savecharacter'] == 1) { if(empty($newchar_name)) @@ -880,16 +949,15 @@ if(!$logged) $newchar_created = true; $account_logged->logAction('Created character <b>' . $player->getName() . '</b>.'); unset($player); + $player = new OTS_Player(); $player->find($newchar_name); - if($player->isLoaded()) - { + + if($player->isLoaded()) { if(tableExist('player_skills')) { - for($i=0;$i<7;$i++) - { + for($i=0; $i<7; $i++) { $skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i); - if($skillExists->rowCount() <= 0) - { + if($skillExists->rowCount() <= 0) { $db->query('INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES ('.$player->getId().', '.$i.', 10, 0)'); } } @@ -908,8 +976,8 @@ if(!$logged) } else { - echo "Error. Can\'t create character. Probably problem with database. Try again or contact with admin."; - exit; + error("Error. Can't create character. Probably problem with database. Please try again later or contact with admin."); + return; } } } diff --git a/system/pages/commands.php b/system/pages/commands.php index 3dacf611..80027688 100644 --- a/system/pages/commands.php +++ b/system/pages/commands.php @@ -76,8 +76,6 @@ if($canEdit) 'link' => getPageLink('commands', ($action == 'edit' ? 'edit' : 'add')), 'action' => $action, 'id' => isset($id) ? $id : null, - 'vdarkborder' => $config['vdarkborder'], - 'darkborder' => $config['darkborder'], 'words' => isset($words) ? $words : null, 'description' => isset($description) ? $description : null )); diff --git a/system/pages/forum.php b/system/pages/forum.php index 1d35e82c..f2b7783b 100644 --- a/system/pages/forum.php +++ b/system/pages/forum.php @@ -24,17 +24,6 @@ if(strtolower($config['forum']) != 'site') return; } -$sections = array(); -foreach(getForumSections() as $section) -{ - $sections[$section['id']] = array( - 'id' => $section['id'], - 'name' => $section['name'], - 'description' => $section['description'], - 'closed' => $section['closed'] == '1' - ); -} - function parseSmiles($text) { $smileys = array( @@ -128,6 +117,93 @@ function showPost($topic, $text, $smiles) if(!$logged) echo 'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />'; +$canEdit = hasFlag(FLAG_CONTENT_FORUM) || superAdmin(); +if($canEdit) +{ + if(!empty($action)) + { + if($action == 'delete_board' || $action == 'edit_board' || $action == 'hide_board' || $action == 'moveup_board' || $action == 'movedown_board') + $id = $_REQUEST['id']; + + if(isset($_REQUEST['name'])) + $name = $_REQUEST['name']; + + if(isset($_REQUEST['description'])) + $description = stripslashes($_REQUEST['description']); + + $errors = array(); + + if($action == 'add_board') { + if(Forum::add_board($name, $description, $errors)) + $action = $name = $description = ''; + } + else if($action == 'delete_board') { + Forum::delete_board($id, $errors); + $action = ''; + } + else if($action == 'edit_board') + { + if(isset($id) && !isset($name)) { + $board = Forum::get_board($id); + $name = $board['name']; + $description = $board['description']; + } + else { + Forum::update_board($id, $name, $description); + $action = $name = $description = ''; + } + } + else if($action == 'hide_board') { + Forum::toggleHidden_board($id, $errors); + $action = ''; + } + else if($action == 'moveup_board') { + Forum::move_board($id, -1, $errors); + $action = ''; + } + else if($action == 'movedown_board') { + Forum::move_board($id, 1, $errors); + $action = ''; + } + + if(!empty($errors)) { + echo $twig->render('error_box.html.twig', array('errors' => $errors)); + $action = ''; + } + } + + if(empty($action) || $action == 'edit_board') { + echo $twig->render('forum.add_board.html.twig', array( + 'link' => getPageLink('forum', ($action == 'edit_board' ? 'edit_board' : 'add_board')), + 'action' => $action, + 'id' => isset($id) ? $id : null, + 'name' => isset($name) ? $name : null, + 'description' => isset($description) ? $description : null + )); + + if($action == 'edit_board') + $action = ''; + } +} + +$sections = array(); +foreach(getForumBoards() as $section) +{ + $sections[$section['id']] = array( + 'id' => $section['id'], + 'name' => $section['name'], + 'description' => $section['description'], + 'closed' => $section['closed'] == '1' + ); + + if($canEdit) { + $sections[$section['id']]['hidden'] = $section['hidden']; + } + else { + $sections[$section['id']]['hidden'] = 0; + } +} + $number_of_rows = 0; if(empty($action)) { @@ -140,9 +216,11 @@ if(empty($action)) { $last_post = $db->query("SELECT `players`.`name`, `" . TABLE_PREFIX . "forum`.`post_date` FROM `players`, `" . TABLE_PREFIX . "forum` WHERE `" . TABLE_PREFIX . "forum`.`section` = ".(int) $id." AND `players`.`id` = `" . TABLE_PREFIX . "forum`.`author_guid` ORDER BY `post_date` DESC LIMIT 1")->fetch(); $boards[] = array( + 'id' => $id, 'link' => getForumBoardLink($id), 'name' => $section['name'], 'description' => $section['description'], + 'hidden' => $section['hidden'], 'posts' => isset($counters[$id]['posts']) ? $counters[$id]['posts'] : 0, 'threads' => isset($counters[$id]['threads']) ? $counters[$id]['threads'] : 0, 'last_post' => array( @@ -155,7 +233,8 @@ if(empty($action)) echo $twig->render('forum.boards.html.twig', array( 'boards' => $boards, - 'config' => $config + 'canEdit' => $canEdit, + 'last' => count($sections) )); return; @@ -446,7 +525,7 @@ if($action == 'new_post') echo 'Thread with ID '.$thread_id.' doesn\'t exist.'; } else - echo 'Your account is banned, deleted or you don\'t have any player with level '.$config['forum_level_required'].' on your account. You can\'t post.'; + echo "Your account is banned, deleted or you don't have any player with level " . $config['forum_level_required'] . " on your account. You can't post."; } if($action == 'edit_post') @@ -660,24 +739,6 @@ if($action == 'move_thread') 'section_link' => getForumBoardLink($post['section']), 'config' => $config )); - - /* - echo '<br/><table bgcolor='.$config['vdarkborder'].' border=0 cellpadding=2 cellspacing=0 width=100%> - <tr bgcolor='.$config['vdarkborder'].'><td class=white colspan=5><B>Move thread to another board</B></td></tr> - <tr><td><table border=0 cellpadding=3 cellspacing=1 width=100%> - <tr bgcolor='.$config['lightborder'].'><td> - <FORM ACTION="" METHOD="GET"> - <input type="hidden" name="subtopic" value="forum" /> - <input type="hidden" name="action" value="moved_thread" /> - <input type="hidden" name="id" value="'.$post['id'].'" /> - <strong>THREAD:</strong> '.$post['post_topic'].' - <br/><strong>AUTHOR:</strong> '.$name[0].' - <br/><strong>BOARD:</strong> '.$sections[$post['section']]['name'].'<br/> - <br/><strong>Select the new board: </strong><SELECT NAME=section>'; - foreach($sections as $id => $section) { echo '<OPTION value="'.$id.'">'.$section['name'].'</OPTION>'; } echo '</SELECT> - <INPUT TYPE="submit" VALUE="Move Thread"></FORM> - <form action="' . getForumBoardLink($post['section']) . '" method="POST"> - <input type="submit" value="Cancel"></form></td></tr></table></td></tr></table>';*/ } } else @@ -732,4 +793,98 @@ class Forum static public function isModerator() { return hasFlag(FLAG_CONTENT_FORUM) || admin(); } + + static public function add_board($name, $description, &$errors) + { + global $db; + if(isset($name[0]) && isset($description[0])) + { + $query = $db->select(TABLE_PREFIX . 'forum_boards', array('name' => $name)); + + if($query === false) + { + $query = + $db->query( + 'SELECT ' . $db->fieldName('ordering') . + ' FROM ' . $db->tableName(TABLE_PREFIX . 'forum_boards') . + ' ORDER BY ' . $db->fieldName('ordering') . ' DESC LIMIT 1' + ); + + $ordering = 0; + if($query->rowCount() > 0) { + $query = $query->fetch(); + $ordering = $query['ordering'] + 1; + } + $db->insert(TABLE_PREFIX . 'forum_boards', array('name' => $name, 'description' => $description, 'ordering' => $ordering)); + } + else + $errors[] = 'Forum board with this name already exists.'; + } + else + $errors[] = 'Please fill all inputs.'; + + return !count($errors); + } + + static public function get_board($id) { + global $db; + return $db->select(TABLE_PREFIX . 'forum_boards', array('id' => $id)); + } + + static public function update_board($id, $name, $description) { + global $db; + $db->update(TABLE_PREFIX . 'forum_boards', array('name' => $name, 'description' => $description), array('id' => $id)); + } + + static public function delete_board($id, &$errors) + { + global $db; + if(isset($id)) + { + if(self::get_board($id) !== false) + $db->delete(TABLE_PREFIX . 'forum_boards', array('id' => $id)); + else + $errors[] = 'Forum board with id ' . $id . ' does not exists.'; + } + else + $errors[] = 'id not set'; + + return !count($errors); + } + + static public function toggleHidden_board($id, &$errors) + { + global $db; + if(isset($id)) + { + $query = self::get_board($id); + if($query !== false) + $db->update(TABLE_PREFIX . 'forum_boards', array('hidden' => ($query['hidden'] == 1 ? 0 : 1)), array('id' => $id)); + else + $errors[] = 'Forum board with id ' . $id . ' does not exists.'; + } + else + $errors[] = 'id not set'; + + return !count($errors); + } + + static public function move_board($id, $i, &$errors) + { + global $db; + $query = self::get_board($id); + if($query !== false) + { + $ordering = $query['ordering'] + $i; + $old_record = $db->select(TABLE_PREFIX . 'forum_boards', array('ordering' => $ordering)); + if($old_record !== false) + $db->update(TABLE_PREFIX . 'forum_boards', array('ordering' => $query['ordering']), array('ordering' => $ordering)); + + $db->update(TABLE_PREFIX . 'forum_boards', array('ordering' => $ordering), array('id' => $id)); + } + else + $errors[] = 'Forum board with id ' . $id . ' does not exists.'; + + return !count($errors); + } } diff --git a/system/pages/news.php b/system/pages/news.php index d37c2fe6..0bb32135 100644 --- a/system/pages/news.php +++ b/system/pages/news.php @@ -292,7 +292,7 @@ if(!$news_cached) 'account_players' => $account_players, 'category' => isset($category) ? $category : 0, 'categories' => $categories, - 'forum_sections' => getForumSections(), + 'forum_boards' => getForumBoards(), 'forum_section' => isset($forum_section) ? $forum_section : null )); } diff --git a/system/templates/account.change_comment.html.twig b/system/templates/account.change_comment.html.twig new file mode 100644 index 00000000..dde79b80 --- /dev/null +++ b/system/templates/account.change_comment.html.twig @@ -0,0 +1,113 @@ +Here you can see and edit the information about your character.<br/> +If you do not want to specify a certain field, just leave it blank.<br/><br/> +<form action="?subtopic=accountmanagement&action=changecomment" method="post"> + <div class="TableContainer" > + <table class="Table5" cellpadding="0" cellspacing="0"> + <div class="CaptionContainer"> + <div class="CaptionInnerContainer" > + <span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <div class="Text" >Edit Character Information</div> + <span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + </div> + </div> + <tr> + <td> + <div class="InnerTableContainer"> + <table style="width:100%;"> + <tr> + <td> + <div class="TableShadowContainerRightTop"> + <div class="TableShadowRightTop" style="background-image:url({{ template_path }}/images/content/table-shadow-rt.gif);" ></div> + </div> + <div class="TableContentAndRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-rm.gif);"> + <div class="TableContentContainer"> + <table class="TableContent" width="100%"> + <tr> + <td class="LabelV">Name:</td> + <td style="width:80%;" >{{ player_name }}</td> + </tr> + <tr> + <td class="LabelV" >Hide Account:</td> + <td> + <input type="hidden" value="0" name="accountvisible"> + <input type="checkbox" name="accountvisible" id="accountvisible" value="1" {% if player.getCustomField('hidden') == 1 %}checked="checked"{% endif %}> + <label for="accountvisible"> check to hide your account information</label> + {% if player.getCustomField('group_id') > 1 %} (you will be also hidden on the Team page!){% endif %} + </td> + </tr> + </table> + </div> + </div> + <div class="TableShadowContainer"> + <div class="TableBottomShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bm.gif);"> + <div class="TableBottomLeftShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bl.gif);"></div> + <div class="TableBottomRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-br.gif);"></div> + </div> + </div> + </td> + </tr> + <tr> + <td> + <div class="TableShadowContainerRightTop"> + <div class="TableShadowRightTop" style="background-image:url({{ template_path }}/images/content/table-shadow-rt.gif);"></div> + </div> + <div class="TableContentAndRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-rm.gif);"> + <div class="TableContentContainer"> + <table class="TableContent" width="100%"> + <tr> + <td class="LabelV" ><span>Comment:</span></td> + <td style="width:80%;"><textarea name="comment" rows="10" cols="50" wrap="virtual">{{ player.getCustomField('comment')|raw }}</textarea><br>[max. length: 2000 chars, 50 lines (ENTERs)]</td> + </tr> + </table> + </div> + </div> + <div class="TableShadowContainer"> + <div class="TableBottomShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bm.gif);"> + <div class="TableBottomLeftShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bl.gif);"></div> + <div class="TableBottomRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-br.gif);" ></div> + </div> + </div> + </td> + </tr> + </table> + </div> + </td> + </tr> + </table> + </div> + <br/> + <table style="width:100%"> + <tr align="center"> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td style="border:0px;"> + <input type="hidden" name="name" value="{{ player.getName() }}"> + <input type="hidden" name="changecommentsave" value="1"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div> + </div> + </td> + </tr> +</form> + </table> + </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <form action="?subtopic=accountmanagement" method="post"> + <tr> + <td style="border:0px;"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div> + </div> + </td> + </tr> + </form> + </table> + </td> + </tr> + </table> \ No newline at end of file diff --git a/system/templates/account.change_name.html.twig b/system/templates/account.change_name.html.twig new file mode 100644 index 00000000..f0affbce --- /dev/null +++ b/system/templates/account.change_name.html.twig @@ -0,0 +1,76 @@ +To change a name of character select player and choose a new name.<br/> +<font color="red">Change name cost {{ config.account_change_character_name_points }} premium points. You have {{ points }} premium points.</font><br/><br/> +<form action="?subtopic=accountmanagement&action=changename" method="post"> + <input type="hidden" name="changenamesave" value="1"> + <div class="TableContainer"> + <table class="Table1" cellpadding="0" cellspacing="0"> + <div class="CaptionContainer"> + <div class="CaptionInnerContainer" > + <span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <div class="Text" >Change Name</div> + <span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + </div> + </div> + <tr> + <td> + <div class="InnerTableContainer" > + <table style="width:100%;" > + <tr> + <td class="LabelV" ><span>Character:</span></td> + <td style="width:90%;" > + <select name="player_id"> + {% for player in account_logged.getPlayersList() %} + <option value="{{ player.getId() }}">{{ player.getName() }}</option> + {% endfor %} + </select> + </td> + </tr> + <tr> + <td class="LabelV" ><span>New Name:</span></td> + <td> + <input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" > + <font size="1" face="verdana,arial,helvetica"> + <div id="name_check">Please enter your character name.</div> + </font> + </td> + </tr> + </table> + </div> + </td> + </tr> + </table> + </div> + <br/> + <table style="width:100%" > + <tr align="center"> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td style="border:0px;"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div> + </div> + </td> + </tr> +</form> + </table> + </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <form action="?subtopic=accountmanagement" method="post"> + <tr> + <td style="border:0px;"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div> + </div> + </td> + </tr> + </form> + </table> + </td> + </tr> + </table> \ No newline at end of file diff --git a/system/templates/account.generate_new_recovery_key.html.twig b/system/templates/account.generate_new_recovery_key.html.twig new file mode 100644 index 00000000..b65f0eb3 --- /dev/null +++ b/system/templates/account.generate_new_recovery_key.html.twig @@ -0,0 +1,61 @@ +To generate new recovery key for your account please enter your password.<br/> +<font color="red"><b>New recovery key cost {{ config.generate_new_reckey_price }} Premium Points.</font> You have {{ points }} premium points. You will receive e-mail with this recovery key.</b><br/> +<form action="?subtopic=accountmanagement&action=newreckey" method="post"> + <input type="hidden" name="registeraccountsave" value="1"> + <div class="TableContainer" > + <table class="Table1" cellpadding="0" cellspacing="0"> + <div class="CaptionContainer"> + <div class="CaptionInnerContainer"> + <span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <div class="Text" >Generate recovery key</div> + <span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span> + <span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span> + <span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + <span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span> + </div> + </div> + <tr> + <td> + <div class="InnerTableContainer"> + <table style="width:100%;"> + <tr> + <td class="LabelV" ><span>Password:</span></td> + <td><input type="password" name="reg_password" size="30" maxlength="29" ></td> + </tr> + </table> + </div> + </td> + </tr> + </table> + </div> + <br/> + <table style="width:100%"> + <tr align="center"> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td style="border:0px;"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div> + </div> + </td> + </tr> +</form> + </table> + </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <form action="?subtopic=accountmanagement" method="post"> + <tr> + <td style="border:0px;"> + <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div> + </div> + </td> + </tr> + </form> + </table> + </td> + </tr> + </table> \ No newline at end of file diff --git a/system/templates/account.register.html.twig b/system/templates/account.generate_recovery_key.html.twig similarity index 100% rename from system/templates/account.register.html.twig rename to system/templates/account.generate_recovery_key.html.twig diff --git a/system/templates/commands.form.html.twig b/system/templates/commands.form.html.twig index f6ba72be..6a7ded15 100644 --- a/system/templates/commands.form.html.twig +++ b/system/templates/commands.form.html.twig @@ -4,10 +4,10 @@ {% endif %} <table width="100%" border="0" cellspacing="1" cellpadding="4"> <tr> - <td bgcolor="{{ vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} command</b></td> + <td bgcolor="{{ config.vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} command</b></td> </tr> <tr> - <td bgcolor="{{ darkborder }}"> + <td bgcolor="{{ config.darkborder }}"> <table border="0" cellpadding="1"> <tr> <td>Words:</td> diff --git a/system/templates/commands.html.twig b/system/templates/commands.html.twig index 7922e891..381e0020 100644 --- a/system/templates/commands.html.twig +++ b/system/templates/commands.html.twig @@ -1,9 +1,9 @@ <table width="100%" border="0" cellspacing="1" cellpadding="4"> <tr> - <td bgcolor="{{ vdarkborder }}" class="white" width="150"><b>Words</b></td> - <td bgcolor="{{ vdarkborder }}" class="white"><b>Description</b></td> + <td bgcolor="{{ config.vdarkborder }}" class="white" width="150"><b>Words</b></td> + <td bgcolor="{{ config.vdarkborder }}" class="white"><b>Description</b></td> {% if canEdit %} - <td bgcolor="{{ vdarkborder }}" class="white"><b>Options</b></td> + <td bgcolor="{{ config.vdarkborder }}" class="white"><b>Options</b></td> {% endif %} </tr> {% set i = 0 %} diff --git a/system/templates/forum.add_board.html.twig b/system/templates/forum.add_board.html.twig new file mode 100644 index 00000000..5aeb2490 --- /dev/null +++ b/system/templates/forum.add_board.html.twig @@ -0,0 +1,26 @@ +<form method="post" action="{{ link }}"> + {% if action == 'edit_board' %} + <input type="hidden" name="id" value="{{ id }}" /> + {% endif %} + <table width="100%" border="0" cellspacing="1" cellpadding="4"> + <tr> + <td bgcolor="{{ config.vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} board</b></td> + </tr> + <tr> + <td bgcolor="{{ config.darkborder }}"> + <table border="0" cellpadding="1"> + <tr> + <td>Name:</td> + <td><input name="name" value="{% if name is not null %}{{ name }}{% endif %}" size="29" maxlength="29"/></td> + <tr> + <td>Description:</td> + <td><textarea name="description" maxlength="300" cols="50" rows="5">{% if description is not null %}{{ description }}{% endif %}</textarea></td> + <tr/> + <tr> + <td colspan="2" align="center"><input type="submit" value="Submit"/> + </tr> + </table> + </td> + </tr> + </table> +</form> \ No newline at end of file diff --git a/system/templates/forum.boards.html.twig b/system/templates/forum.boards.html.twig index 5685493a..532918b0 100644 --- a/system/templates/forum.boards.html.twig +++ b/system/templates/forum.boards.html.twig @@ -13,6 +13,11 @@ <td align="center"> <font color="white" size="1"><b>Last Post</b></font> </td> + {% if canEdit %} + <td> + <font color="white" size="1"><b>Options</b></font> + </td> + {% endif %} </tr> {% set i = 0 %} {% for board in boards %} @@ -30,6 +35,29 @@ No posts {% endif %} </td> + {% if canEdit %} + <td> + <a href="?subtopic=forum&action=edit_board&id={{ board.id }}" title="Edit"> + <img src="images/edit.png"/>Edit + </a> + <a id="delete" href="?subtopic=forum&action=delete_board&id={{ board.id }}" onclick="return confirm('Are you sure?');" title="Delete"> + <img src="images/del.png"/>Delete + </a> + <a href="?subtopic=forum&action=hide_board&id={{ board.id }}" title="{% if board.hidden != 1 %}Hide{% else %}Show{% endif %}"> + <img src="images/{% if board.hidden != 1 %}success{% else %}error{% endif %}.png"/>{% if board.hidden != 1 %}Hide{% else %}Show{% endif %} + </a> + {% if i != 1 %} + <a href="?subtopic=forum&action=moveup_board&id={{ board.id }}" title="Move up"> + <img src="images/icons/arrow_up.gif"/>Move up + </a> + {% endif %} + {% if i != last %} + <a href="?subtopic=forum&action=movedown_board&id={{ board.id }}" title="Move down"> + <img src="images/icons/arrow_down.gif"/>Move down + </a> + {% endif %} + </td> + {% endif %} </tr> {% endfor %} </table> \ No newline at end of file diff --git a/system/templates/mail.account.register.html.twig b/system/templates/mail.account.register.html.twig new file mode 100644 index 00000000..0b684b54 --- /dev/null +++ b/system/templates/mail.account.register.html.twig @@ -0,0 +1,3 @@ +<h3>New recovery key!</h3> +<p>You or someone else generated recovery key to your account on server <a href="{{ constant('BASE_URL') }}"><b>{{ config.lua.serverName }}</b></a>.</p> +<p>Recovery key: <b>{{ recovery_key }}</b></p> \ No newline at end of file diff --git a/system/templates/news.add.html.twig b/system/templates/news.add.html.twig index 54a48138..ac6f532d 100644 --- a/system/templates/news.add.html.twig +++ b/system/templates/news.add.html.twig @@ -96,7 +96,7 @@ <td> <select name="forum_section"> <option value="-1">None</option> - {% for section in forum_sections %} + {% for section in forum_boards %} <option value="{{ section.id }}" {% if forum_section is defined and forum_section == section.id %}checked="yes"{% endif %}/>{{ section.name }}</option> {% endfor %} </select> diff --git a/system/templates/success.html.twig b/system/templates/success.html.twig index c5b94bb0..7dcfca7f 100644 --- a/system/templates/success.html.twig +++ b/system/templates/success.html.twig @@ -27,6 +27,9 @@ </table> </div> <br/> +{% if custom_buttons is defined %} +{{ custom_buttons|raw }} +{% else %} <center> <table border="0" cellspacing="0" cellpadding="0"> <form action="?subtopic=accountmanagement" method="post"> @@ -39,3 +42,4 @@ </form> </table> </center> +{% endif %} diff --git a/templates/kathrine/account.change_name.html.twig b/templates/kathrine/account.change_name.html.twig new file mode 100644 index 00000000..704a0f0e --- /dev/null +++ b/templates/kathrine/account.change_name.html.twig @@ -0,0 +1,44 @@ +To change a name of character select player and choose a new name.<br/> +<font color="red">Change name cost {{ config.account_change_character_name_points }} premium points. You have {{ points }} premium points.</font><br/><br/> +<form action="?subtopic=accountmanagement&action=changename" method="post"> + <input type="hidden" name="changenamesave" value="1"> + <h3>Change Name</h3> + <table style="width:100%;"> + <tr> + <td><span >Character:</td> + <td style="width:90%;" > + <select name="player_id"> + {% for player in account_logged.getPlayersList() %} + <option value="{{ player.getId() }}">{{ player.getName() }}</option> + {% endfor %} + </select> + </td> + </tr> + <tr> + <td ><span>New Name:</td> + <td> + <input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" > + <font size="1" face="verdana,arial,helvetica"> + <div id="name_check">Please enter your character name.</div> + </font> + </td> + </tr> + <tr> + <td colspan="2"> + <input type="submit" name="Submit" value="Submit"/> + </td> + </tr> + </table> +</form> +<br/> +<div style="text-align: center; margin: 0 auto;"> + <table border="0" cellspacing="0" cellpadding="0"> + <form action="?subtopic=accountmanagement" method="post"> + <tr> + <td style="border:0px; text-align: center;"> + <input type="submit" name="Back" value="Back"/> + </td> + </tr> + </form> + </table> +</div> \ No newline at end of file