/** * Write Process * * @return void */ private function loadWriteProcess() { $GLOBALS['link_id'] = $_GET['id'] ? $_GET['id'] : $this->URLData[2]; if (!empty($GLOBALS['link_id'])) { $_link_id = TRUE; $this->DB->Arguments($GLOBALS['link_id']); $this->DB->Query("SELECT Account,Expiration FROM dbo.CTM_RecoverData WHERE Id = %d", $findDataQuery); if ($this->DB->CountRows($findDataQuery) < 1) { $GLOBALS['link_error'] = $this->lang->words['Recovery']['Process']['Messages']['Link']['Invalid']; } else { $rows = $this->DB->FetchObject($findDataQuery); $_account = $rows->Account; if ($rows->Expiration <= time()) { $GLOBALS['link_error'] = $this->lang->words['Recovery']['Process']['Messages']['Link']['Expirated']; } } } if ($_GET['write'] == true) { if (!empty($GLOBALS['link_error'])) { return setResult(showMessage($GLOBALS['link_error'], 2)); } if (empty($_POST['NewPassword']) || empty($_POST['CNewPassword']) || empty($_POST['RedefineCode']) && $_link_id == false) { return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Write']['Void'], 1)); } if ($_link_id == false) { $put = "((0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F)(0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F))"; if (!preg_match("/{$put}\\:{$put}\\:{$put}\\:{$put}\\:{$put}\\:{$put}\\:{$put}\\:{$put}/i", $_POST['RedefineCode'])) { return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Code']['Format'], 2)); } $this->DB->Arguments($_POST['RedefineCode']); $findRedefineQuery = $this->DB->Select("Account,Expiration", "CTM_RecoverData", "RedefineCode = '%s'"); if ($this->DB->CountRows($findRedefineQuery) < 1) { return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Code']['Invalid'], 2)); } $findRedefine = $this->DB->FetchArray($findRedefineQuery); if ($findRedefine['Expiration'] <= time()) { return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Code']['Expired'], 2)); } $_account = $findRedefine['Account']; } if (strcmp($_POST['NewPassword'], $_POST['CNewPassword']) != 0) { return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Write']['PassError'], 2)); } /* Success */ if ($_link_id == true) { $where = "Id = %d"; $argument = $GLOBALS['link_id']; } else { $where = "RedefineCode = '%s'"; $argument = $_POST['RedefineCode']; } $this->DB->Arguments($argument); $this->DB->Delete("CTM_RecoverData", $where); $this->MuLib('Member')->ChangePassword($_account, $_POST['NewPassword']); return setResult(showMessage($this->lang->words['Recovery']['Process']['Messages']['Write']['Success'], 3)); } }
/** * Recover Member Data * Recover member and send e-mail * * @return void */ private function loadRecoverMember() { if ($_GET['write'] == true) { if (empty($_POST['Login']) && empty($_POST['Mail'])) { return setResult(showMessage($this->lang->words['Recovery']['Recover']['Messages']['Void'], 1)); } if (!empty($_POST['Login'])) { $source = "login"; } else { $source = "mail"; } $member = $this->MuLib('Member')->Load($source == "login" ? $_POST['Login'] : $_POST['Mail'], array("info" => "memb_name,fpas_ques,fpas_answ")); if (!$member) { return setResult(showMessage($this->lang->words['Recovery']['Recover']['Messages']['Invalid'], 2)); } $currentId = $this->DB->GetCurrentId("CTM_RecoverData") + 1; $dechex = create_function("\$integer", "return str_pad(dechex(\$integer >= 255 ? 255 : \$integer), 2, 0, STR_PAD_LEFT);"); $confirmCode = $dechex($currentId); $confirmCode .= ":" . $dechex(0xaa - strlen($member['memb___id']) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(strlen($member['mail_addr']) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(mt_rand(0, 70)); $confirmCode .= ":" . $dechex(mt_rand(71, 170)); $confirmCode .= ":" . $dechex(0xaa / intval(date("d")) + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(0xaa / intval(date("m")) + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(intval(date("Y")) / 0xaa + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode = strtoupper($confirmCode); $link = gerateFullLink("?/recovery/process"); $this->DB->Insert("CTM_RecoverData", array("Account" => $member['info']['memb___id'], "RedefineCode" => $confirmCode, "Expiration" => strtotime("+ 24 hours"))); $this->email->arguments = array("NAME" => htmlEncode($member['info']['memb_name']), "LOGIN" => $member['info']['memb___id'], "EMAIL" => $member['info']['mail_addr'], "SECURE_QUESTION" => htmlEncode($member['info']['fpas_ques']), "SECURE_ANSWER" => htmlEncode($member['info']['fpas_answ']), "VALIDATION_LINK" => $currentId, "VALIDATION_CODE" => $confirmCode, "SYSTEM_LINK" => $link); $this->email->LoadTemplate("RecoverMemberData"); $this->email->GetMailContent($mail); $this->mailer->AddAddress($member['info']['mail_addr'], $member['info']['memb_name']); $this->mailer->SetSubject($mail['subject']); $this->mailer->SetBody($mail['content']); if ($this->mailer->SendMail() == true) { return setResult(showMessage($this->lang->words['Recovery']['Recover']['Messages']['Success'], 3)); } else { $this->lang->setArguments("Recovery,Recover,Messages,Error_SendMail", CoreVariables::ErrorsCode()->SendMailError); return setResult(showMessage($this->lang->words['Recovery']['Recover']['Messages']['Error_SendMail'], 2)); } } }
/** * Login Module * * @param boolean Process * @return void */ public static function LoginModule($proccess = FALSE) { self::instance()->lang->loadLanguageFile("auth"); if ($proccess == TRUE) { $_username = str_replace("'", NULL, $_REQUEST['username']); $_password = str_replace("'", NULL, $_REQUEST['password']); $_referer = $_REQUEST['referer']; $warning = $_GET['min_login'] == true ? -1 : 1; $error = $_GET['min_login'] == true ? -2 : 2; if (empty($_username) || empty($_password)) { return setResult(showMessage(self::instance()->lang->words['Auth']['Login']['Process']['EmptyFields'], $warning)); } else { self::DB()->Arguments($_username, $_password, USE_MD5); $checkLoginQ = self::DB()->Query("EXEC dbo.CTM_CheckAccount '%s','%s',%d"); $checkLogin = self::DB()->FetchRow($checkLoginQ); $resultLogin = "******" . bin2hex($checkLogin[0]); if ($resultLogin == "0x02") { return setResult(showMessage(self::instance()->lang->words['Auth']['Login']['Process']['LoginFailed'], $error)); } elseif ($resultLogin == "0x03") { $authSession = md5($_username . "&" . $_password . "&" . time() . "&" . mt_rand()); $authKey = self::EncodeKey($_username, $authSession); CTM_Cookies::setCookie("AuthLogin", self::Encode($_username)); CTM_Cookies::setCookie("AuthSession", $authSession); CTM_Cookies::setCookie("AuthKey", $authKey); $_SESSION['AUTH_SESSION'] = $authSession; $_SESSION['ACCOUNT_DATA'] = CTM_MuOnline::Lib('Member')->Load($_username); if (loadIsAjax() == true) { $location = CTM_URLEngine::URLBase() . "?app=core&module=global&section=login&do=process"; $data = "<form action='{$location}' method='post' name='continue'>"; $data .= "<input type='hidden' name='referer' value='" . $_referer . "' />"; $data .= "<input type='hidden' name='username' value='" . $_username . "' />"; $data .= "<input type='hidden' name='password' value='" . $_password . "' />"; $data .= "</form>"; $data .= "<script> document.continue.submit(); </script>"; exit($data); } self::instance()->output->redirectPage(self::instance()->lang->words['Auth']['Redirect']['Login'], NULL, $_referer); } } } }
/** * Option: Clear Character * Clear inventory, skills, quests and money from character * * @return void */ public function ClearCharacter() { if ($_GET['write'] == true) { $char_data = $this->MuLib('Member')->LoadChar($this->character, "Class"); $count = 0; if ($_POST['ClearInventory'] == 1) { $count++; } if ($_POST['ClearSkill'] == 1) { $count++; } if ($_POST['ClearQuest'] == 1) { $count++; } if ($_POST['ClearMoney'] == 1) { $count++; } if ($count == 0) { setResult(showMenssage($this->lang->words['UserPanel']['ClearCharacter']['Messages']['Error'], 1)); } else { $update_columns = array(); if ($_POST['ClearInventory'] == 1) { $update_columns['Inventory'] = "0x" . str_repeat("FF", CTM_INVENTORY_SIZE); } if ($_POST['ClearSkill'] == 1) { $update_columns['MagicList'] = "0x" . str_repeat("FF0000", CTM_SKILL_SIZE / 6); } if ($_POST['ClearQuest'] == 1) { $update_columns['Quest'] = "0x" . str_repeat("FF", 50); } if ($_POST['ClearQuest'] == 1) { $update_columns['Class'] = $this->functions->CharInitialClass($char_data['Class']); } if ($_POST['ClearMoney'] == 1) { $update_columns['Money'] = 0; } $this->DB->ForceDataType("Inventory", "*"); $this->DB->ForceDataType("MagicList", "*"); $this->DB->ForceDataType("Quest", "*"); $this->DB->ForceDataType("Money", "integer"); $this->DB->Arguments($this->character, USER_ACCOUNT); $this->DB->Update(MUGEN_CORE . "@Character", $update_columns, "Name = '%s' AND AccountID = '%s'"); $message = "<strong>" . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][0] . "</strong><br /><br />"; if ($_POST['ClearInventory'] == 1) { $message .= "» " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][1] . "<br />"; } if ($_POST['ClearSkill'] == 1) { $message .= "» " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][2] . "<br />"; } if ($_POST['ClearQuest'] == 1) { $message .= "» " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][3] . "<br />"; } if ($_POST['ClearMoney'] == 1) { $message .= "» " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][4] . "<br />"; } $this->WriteLog(array("option" => "Clear Character", "character" => true, "data" => array("Clear Inventory: " . ($_POST['ClearInventory'] == 1 ? "Yes" : "No"), "Clear Skill: " . ($_POST['ClearSkill'] == 1 ? "Yes" : "No"), "Clear Quest: " . ($_POST['ClearQuest'] == 1 ? "Yes" : "No"), "Clear Money: " . ($_POST['ClearMoney'] == 1 ? "Yes" : "No"), "Before Class: " . $this->functions->ClassInfo($char_data['Class']), "After Class: " . $this->functions->ClassInfo($this->functions->CharInitialClass($char_data['Class']))))); setResult(showMessage($message, 3)); } } }
private function validateParams($paramsArray, $msgResult) { if (!is_string($this->initparams["app_key"]) && empty($this->initparams["app_key"])) { $msgResult . setResult(1003, "The parameter of appkey is not valid."); return false; } if (!is_string($this->initparams["masterSecret"]) && empty($this->initparams["masterSecret"])) { $msgResult . setResult(1003, "The parameter of masterSecret is not valid."); return false; } if (!is_int($this->initparams["timeToLive"])) { $msgResult . setResult(1003, "The parameter of timeToLive is not valid."); return false; } if (!is_bool($this->initparams["apnsProduction"])) { $msgResult . setResult(1003, "The parameter of apnsProduction is not valid."); return false; } if (!array_key_exists("receiver_type", $paramsArray)) { $msgResult . setResult(1002, "Receiver type is required."); return false; } if (!(array_key_exists("receiver_type", $paramsArray) && is_int($paramsArray["receiver_type"]))) { $msgResult . setResult(1003, "The parameter of receiver-type is not valid."); return false; } if (!(array_key_exists("receiver_value", $paramsArray) && is_string($paramsArray["receiver_value"]))) { $msgResult . setResult(1003, "The parameter of receiver_value is not valid."); return false; } if (!(array_key_exists("sendno", $paramsArray) && is_int($paramsArray["sendno"]))) { $msgResult . setResult(1003, "The parameter of sendno is not valid."); return false; } if (!(array_key_exists("send_description", $paramsArray) && is_string($paramsArray["send_description"]))) { $msgResult . setResult(1003, "The parameter of send_description is not valid."); return false; } if (!(array_key_exists("override_msg_id", $paramsArray) && is_string($paramsArray["override_msg_id"]))) { $msgResult . setResult(1003, "The parameter of override_msg_id is not valid."); return false; } return true; }
/** * Option: Disconnect from Game * Connect to JoinServer and disconnect the player * * @return void */ public function DisconnectGame() { if ($_GET['do'] == "process") { if ($this->userData['stat']['ConnectStat'] == 0) { return setResult(showMessage($this->lang->words['UserPanel']['DisconnectGame']['Messages']['Offline'], 2)); } if (!$this->MuLib('JoinServer')->init()) { return setResult(showMessage(sprintf($this->lang->words['UserPanel']['DisconnectGame']['Messages']['Error'], CoreVariables::ErrorsCode()->JoinServerFail), 2)); } $this->MuLib('JoinServer')->ForceLogout(USER_ACCOUNT); return setResult(showMessage($this->lang->words['UserPanel']['DisconnectGame']['Messages']['Success'], 3)); } $GLOBALS['userpanel']['disconnect_game']['status'] = $this->userData['stat']['ConnectStat']; }
/** * Register Account * * @return void */ private function loadRegisterAccount() { if ($_GET['write'] == true) { if ($_POST['Terms'] != 1) { setResult(showMessage($this->lang->words['Register']['Register']['Messages']['CheckTerms'], 2)); } else { $error = NULL; $finishRegister = FALSE; $PID = $this->settings['REGISTER']['REGISTER_PID']; /* Variables to lower */ $_POST['Login'] = strtolower($_POST['Login']); $_POST['Mail'] = strtolower($_POST['Mail']); $_POST['CMail'] = strtolower($_POST['CMail']); /* Check Void Fields */ if (empty($_POST['Login'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Login'] . "<br />\n"; } if (empty($_POST['Password'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Password'] . "<br />\n"; } if (empty($_POST['CPassword'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_CPassword'] . "<br />\n"; } if (empty($_POST['Mail'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Mail'] . "<br />\n"; } if (empty($_POST['CMail'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_CMail'] . "<br />\n"; } if (empty($_POST['PersonalID']) && $PID) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_PID'] . "<br />\n"; } if (empty($_POST['Name'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Name'] . "<br />\n"; } if (empty($_POST['Phone'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Phone'] . "<br />\n"; } if (empty($_POST['Sex'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_Sex'] . "<br />\n"; } if (empty($_POST['BirthDay'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthDay'] . "<br />\n"; } if (empty($_POST['BirthMonth'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthMonth'] . "<br />\n"; } if (empty($_POST['BirthYear'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthYear'] . "<br />\n"; } if (empty($_POST['SecureQuestion'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_SecureQuestion'] . "<br />\n"; } if (empty($_POST['SecureAnswer'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['NULL_SecureAnswer'] . "<br />\n"; } if (empty($_POST['Captcha'])) { $error .= "» " . $this->lang->words['Global']['Captcha']['Messages']['Void']; } if (strlen($error) > 0) { return setResult(showMessage($this->lang->words['Register']['Register']['Messages']['NULL_Message'] . "<br /><br />" . $error, 1)); } /* Check Error Fields */ if (!CTM_Captcha::Check($_POST['Captcha'])) { $error .= "» " . $this->lang->words['Global']['Captcha']['Messages']['Invalid'] . "<br />\n"; } if (strlen($_POST['Login']) <= 3 || strlen($_POST['Login']) > 10) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_LoginLength'] . "<br />\n"; } if (strlen($_POST['Password']) <= 3 || strlen($_POST['Password']) > 10) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_PassLength'] . "<br />\n"; } if (strlen($_POST['PersonalID']) != 7 && $PID) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_PIDLength'] . "<br />\n"; } if (eregi("[^a-zA-Z0-9_!=?&-]", $_POST['Login'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_LoginWords'] . "<br />\n"; } if (eregi("[^a-zA-Z0-9_!=?&-]", $_POST['Password'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_PassWords'] . "<br />\n"; } if (!CTM_Text::checkMail($_POST['Mail'])) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_MailWords'] . "<br />\n"; } if (!is_numeric($_POST['PersonalID']) && $PID) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_PIDWords'] . "<br />\n"; } if (strcmp($_POST['Password'], $_POST['CPassword']) != 0) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_ConfirmPass'] . "<br />\n"; } if (strcmp($_POST['Mail'], $_POST['CMail']) != 0) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_ConfirmMail'] . "<br />\n"; } $this->DB->Arguments($_POST['Login']); $this->DB->Query("SELECT 1 FROM " . MUACC_CORE . ".dbo.MEMB_INFO WHERE LOWER(memb___id) = '%s'", $checkLoginQ); if ($this->DB->CountRows($checkLoginQ) > 0) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_LoginExists'] . "<br />\n"; } $this->DB->Arguments($_POST['Mail']); $this->DB->Query("SELECT 1 FROM " . MUACC_CORE . ".dbo.MEMB_INFO WHERE LOWER(mail_addr) = '%s'", $checkMailQ); if ($this->DB->CountRows($checkMailQ) > 0) { $error .= "» " . $this->lang->words['Register']['Register']['Messages']['Error_MailExists'] . "<br />\n"; } if (strlen($error) > 0) { return setResult(showMessage($this->lang->words['Register']['Register']['Messages']['Error_Message'] . "<br /><br />" . $error, 2)); } /* Finish and save fields values */ CTM_MuOnline::Lib('Member')->CreateAccount(array("Name" => utf8_encode($_POST['Name']), "Login" => $_POST['Login'], "Password" => $_POST['Password'], "Mail" => $_POST['Mail'], "PID" => $PID ? $_POST['PersonalID'] : $this->settings['REGISTER']['DEFAULT_PID'], "Phone" => $_POST['Phone'], "Sex" => $_POST['Sex'], "Birth" => $_POST['BirthDay'] . "/" . $_POST['BirthMonth'] . "/" . $_POST['BirthYear'], "SecureQuestion" => array(utf8_encode($_POST['SecureQuestion']), utf8_encode($_POST['SecureAnswer'])), "Lock" => $this->settings['REGISTER']['CONFIRM_MAIL'] == true ? 1 : 0, "Status" => $this->settings['REGISTER']['CONFIRM_MAIL'] == true ? 1 : 0)); $bonusCount = 0; $VIPBonus = FALSE; $coinBonus = FALSE; $vaultBonus = FALSE; if ($this->settings['REGISTER']['VIP']['SWITCH'] == TRUE && $_POST['VIPBonus'] == 1) { $this->DB->Arguments($this->settings['REGISTER']['VIP']['TYPE'], $this->settings['REGISTER']['VIP']['TIME'], time(), $_POST['Login']); $this->DB->Query("UPDATE " . VIP_CORE . ".dbo." . VIP_TABLE . " SET " . VIP_COLUMN . " = %d, " . VIP_TIME . " = %d, " . VIP_BEGIN . " = %d WHERE " . VIP_LOGIN . " = '%s'"); $VIPBonus = TRUE; $bonusCount++; } if ($this->settings['REGISTER']['COIN']['SWITCH'] == true && $_POST['CoinBonus'] == 1) { $column = constant("COIN_COLUMN_" . $this->settings['REGISTER']['COIN']['TYPE']); $this->DB->Arguments($column, $this->settings['REGISTER']['COIN']['NUMBER'], $_POST['Login']); $this->DB->Query("UPDATE " . COIN_CORE . ".dbo." . COIN_TABLE . " SET %s = %d WHERE " . COIN_LOGIN . "= '%s'"); $coinBonus = TRUE; $bonusCount++; } if ($this->settings['REGISTER']['VAULT_BONUS']['SWITCH'] == true && $_POST['VaultBonus'] != NULL) { if (array_key_exists($_POST['VaultBonus'], $this->settings['REGISTER']['VAULT_BONUS']['OPTIONS'])) { $this->loadVaultBonus($_POST['VaultBonus'], $_POST['Login']); $vaultBonus = TRUE; $bonusCount++; } } if ($this->settings['REGISTER']['CONFIRM_MAIL'] == true) { $dechex = create_function("\$integer", "return str_pad(dechex(\$integer >= 255 ? 255 : \$integer), 2, 0, STR_PAD_LEFT);"); $currentId = $this->DB->GetCurrentId("CTM_ValidingAccounts") + 1; $confirmCode = $dechex($currentId); $confirmCode .= ":" . $dechex(0xff - strlen($_POST['Account']) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(strlen($_POST['Mail']) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(mt_rand(0, 150)); $confirmCode .= ":" . $dechex(mt_rand(151, 255)); $confirmCode .= ":" . $dechex(0xff / intval(date("d")) + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(0xff / intval(date("m")) + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode .= ":" . $dechex(intval(date("Y")) / 0xff + intval(date("H")) + intval(date("m")) + intval(date("s")) + mt_rand(0, 50)); $confirmCode = strtoupper($confirmCode); $link = gerateFullLink("?/register/confirm"); $this->DB->Arguments($_POST['Login'], utf8_encode($_POST['Name']), $_POST['Mail'], $confirmCode); $this->DB->Query("INSERT INTO dbo.CTM_ValidatingAccounts (Account,Name,Mail,ConfirmCode) VALUES ('%s','%s','%s','%s')"); $this->email->arguments = array("NAME" => htmlEncode($_POST['Name']), "LOGIN" => $_POST['Login'], "EMAIL" => $_POST['Mail'], "SECURE_QUESTION" => htmlEncode($_POST['SecureQuestion']), "SECURE_ANSWER" => htmlEncode($_POST['SecureAnswer']), "VALIDATION_LINK" => $currentId, "VALIDATION_CODE" => $confirmCode, "SYSTEM_LINK" => $link); $this->email->LoadTemplate("RegisterNewMember"); $this->email->GetMailContent($mail); $this->mailer->AddAddress($_POST['Mail'], $_POST['Name']); $this->mailer->SetSubject($mail['subject']); $this->mailer->SetBody($mail['content']); if ($this->mailer->SendMail() == true) { $finishRegister = TRUE; $this->lang->setArguments("Register,Register,Messages,Success,NotCompleted", $_POST['Mail']); $success = "<strong>" . $this->lang->words['Register']['Register']['Messages']['Success'][1] . "</strong><br /><br />\n"; $success .= $this->lang->words['Register']['Register']['Messages']['Success']['NotCompleted']; } else { CTM_MuOnline::Lib('Member')->DeleteAccount($_POST['Login']); $this->lang->setArguments("Register,Register,Messages,Error_SendMail", CoreVariables::ErrorsCode()->SendMailError); setResult(showMessage($this->lang->words['Register']['Register']['Messages']['Error_SendMail'], 2)); } } else { $finishRegister = TRUE; $success = "<strong>" . $this->lang->words['Register']['Register']['Messages']['Success'][1] . "</strong><br /><br />\n"; $success .= "» " . $this->lang->words['Register']['Register']['Messages']['Success'][2] . "<strong> " . htmlEncode($_POST['Name']) . "</strong><br />\n"; $success .= "» " . $this->lang->words['Register']['Register']['Messages']['Success'][3] . "<strong> " . strtolower($_POST['Login']) . "</strong><br />\n"; $success .= "» " . $this->lang->words['Register']['Register']['Messages']['Success'][4] . "<strong> " . $_POST['Mail'] . "</strong>\n"; } if ($finishRegister == true) { if ($bonusCount > 0) { $success .= "<br /><br />\n"; $success .= "<strong>" . $this->lang->words['Register']['Register']['Messages']['Success'][5] . "</strong><br /><br />\n"; if ($VIPBonus) { $this->lang->setTags("Register,Register,Messages,Success,6", $this->settings['REGISTER']['VIP']['TIME'], constant("VIP_NAME_" . $this->settings['REGISTER']['VIP']['TYPE'])); $success .= "» " . $this->lang->words['Register']['Register']['Messages']['Success'][6] . "<br />\n"; } if ($coinBonus) { $this->lang->setTags("Register,Register,Messages,Success,7", $this->settings['REGISTER']['COIN']['NUMBER'], constant("COIN_NAME_" . $this->settings['REGISTER']['COIN']['TYPE'])); $success .= "» " . $this->lang->words['Register']['Register']['Messages']['Success'][7] . "<br />\n"; } if ($vaultBonus) { $success .= "» " . htmlEncode($this->settings['REGISTER']['VAULT_BONUS']['OPTIONS'][$_POST['VaultBonus']]) . "<br />\n"; } } $success .= "<br />\n"; $success .= $this->lang->words['Register']['Register']['Messages']['Success'][8]; CTM_Captcha::gerateCaptchaText(); setResult(showMessage($success, 3)); } } } }
/** * Option: Convert Coin * Convert the coins of account * * @return void */ public function ConvertCoin() { $GLOBALS['userpanel']['convertcoin']['balance_coin'][1] = number_format($this->userData['coin'][COIN_COLUMN_1], 0, false, "."); $GLOBALS['userpanel']['convertcoin']['balance_coin'][2] = number_format($this->userData['coin'][COIN_COLUMN_2], 0, false, "."); $GLOBALS['userpanel']['convertcoin']['balance_coin'][3] = number_format($this->userData['coin'][COIN_COLUMN_3], 0, false, "."); if ($_GET['write'] == true) { if (empty($_POST['ConvertOption'])) { return setResult(showMessage($this->lang->words['UserPanel']['ConvertCoin']['Messages']['Select'], 1)); } $loadOption = explode("#", $_POST['ConvertOption']); switch ($loadOption[0]) { case 0: if (COIN_NUMBER >= 1) { $option = "2_TO_1"; $from = 2; $to = 1; } break; case 1: if (COIN_NUMBER >= 2) { $option = "3_TO_1"; $from = 3; $to = 1; } break; case 2: if (COIN_NUMBER >= 3) { $option = "3_TO_2"; $from = 3; $to = 2; } break; } if ($option) { if (array_key_exists($loadOption[1], $this->settings['USERPANEL']['FINANCIAL']['CONVERT_COIN']['OPTIONS'][$option])) { $price = $this->settings['USERPANEL']['FINANCIAL']['CONVERT_COIN']['OPTIONS'][$option][$loadOption[1]]; $is_valid = TRUE; } } if ($is_valid == false) { return setResult(showMessage($this->lang->words['UserPanel']['ConvertCoin']['Messages']['Select'], 1)); } if ($this->userData['coin'][constant("COIN_COLUMN_" . $from)] < $loadOption[1]) { $this->lang->setArguments("UserPanel,ConvertCoin,Messages,Error_Balance", constant("COIN_NAME_" . $from)); return setResult(showMessage($this->lang->words['UserPanel']['ConvertCoin']['Messages']['Error_Balance'], 2)); } else { $columns = array(constant("COIN_COLUMN_" . $from) => "minus:" . $price, constant("COIN_COLUMN_" . $to) => "plus:" . $loadOption[1]); $this->DB->Arguments(USER_ACCOUNT); $this->DB->ForceDataType(constant("COIN_COLUMN_" . $from), "integer"); $this->DB->ForceDataType(constant("COIN_COLUMN_" . $to), "integer"); $this->DB->Update(COIN_CORE . "@" . COIN_TABLE, $columns, COIN_LOGIN . " = '%s'"); $this->WriteLog(array("option" => "Convert Coin", "data" => array("[General] Option: " . constant("COIN_NAME_" . $from) . " to " . constant("COIN_NAME_" . $to), "[General] Quantity: " . number_format($loadOption[1], 0, false, "."), "[Before] " . constant("COIN_NAME_" . $from) . ": " . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $from)], 0, false, "."), "[Before] " . constant("COIN_NAME_" . $to) . ": " . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $to)], 0, false, "."), "[After] " . constant("COIN_NAME_" . $from) . ": " . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $from)] - $price, 0, false, "."), "[After] " . constant("COIN_NAME_" . $to) . ": " . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $to)] + $loadOption[1], 0, false, ".")))); $message = "<script type=\"text/javascript\">\n"; $message .= "\$('#Balance_" . $from . "').text(" . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $from)] - $price, 0, false, ".") . ");\n"; $message .= "\$('#Balance_" . $to . "').text(" . number_format($this->userData['coin'][constant("COIN_COLUMN_" . $to)] + $loadOption[1], 0, false, ".") . ");\n"; $message .= "</script>"; $message .= showMessage($this->lang->words['UserPanel']['ConvertCoin']['Messages']['Success'], 3); Authentication::ReloadSession(); return setResult($message); } } }
setResult(true, $router); break; case 'register_token_ios': $token = $router->getParams("token", 0, true); $notifyController->registerNewToken($token, Notify::TOKEN_TYPE_APS); setResult(true, $router); break; default: setBadRequest('Unknown method for module push'); } break; default: setBadRequest('Unknown module' . $router->getModule()); } } catch (APIException $e) { setResult(false, $router, array("error_message" => $e->getMessage(), "error_code" => $e->getCode())); } catch (AppException $e) { setBadRequest($e->getMessage()); } /** * Output API result * * @param bool $success Is success flag * @param Router $router Current instance of Router * @param string|array $data Output data */ function setResult($success, Router $router, $data = "") { header("Content-Type: application/json"); echo json_encode(array("module" => $router->getModule(), "method" => $router->getMethod(), "success" => (bool) $success, "data" => $data)); }