Пример #1
0
 /**
  *	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));
     }
 }
Пример #2
0
 /**
  *	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));
         }
     }
 }
Пример #3
0
 /**
  *	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&amp;module=global&amp;section=login&amp;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 .= "&raquo; " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][1] . "<br />";
             }
             if ($_POST['ClearSkill'] == 1) {
                 $message .= "&raquo; " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][2] . "<br />";
             }
             if ($_POST['ClearQuest'] == 1) {
                 $message .= "&raquo; " . $this->lang->words['UserPanel']['ClearCharacter']['Messages']['Success'][3] . "<br />";
             }
             if ($_POST['ClearMoney'] == 1) {
                 $message .= "&raquo; " . $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));
         }
     }
 }
Пример #5
0
 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;
 }
Пример #6
0
 /**
  *	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'];
 }
Пример #7
0
 /**
  *	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 .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Login'] . "<br />\n";
             }
             if (empty($_POST['Password'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Password'] . "<br />\n";
             }
             if (empty($_POST['CPassword'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_CPassword'] . "<br />\n";
             }
             if (empty($_POST['Mail'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Mail'] . "<br />\n";
             }
             if (empty($_POST['CMail'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_CMail'] . "<br />\n";
             }
             if (empty($_POST['PersonalID']) && $PID) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_PID'] . "<br />\n";
             }
             if (empty($_POST['Name'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Name'] . "<br />\n";
             }
             if (empty($_POST['Phone'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Phone'] . "<br />\n";
             }
             if (empty($_POST['Sex'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_Sex'] . "<br />\n";
             }
             if (empty($_POST['BirthDay'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthDay'] . "<br />\n";
             }
             if (empty($_POST['BirthMonth'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthMonth'] . "<br />\n";
             }
             if (empty($_POST['BirthYear'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_BirthYear'] . "<br />\n";
             }
             if (empty($_POST['SecureQuestion'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_SecureQuestion'] . "<br />\n";
             }
             if (empty($_POST['SecureAnswer'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['NULL_SecureAnswer'] . "<br />\n";
             }
             if (empty($_POST['Captcha'])) {
                 $error .= "&raquo; " . $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 .= "&raquo; " . $this->lang->words['Global']['Captcha']['Messages']['Invalid'] . "<br />\n";
             }
             if (strlen($_POST['Login']) <= 3 || strlen($_POST['Login']) > 10) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_LoginLength'] . "<br />\n";
             }
             if (strlen($_POST['Password']) <= 3 || strlen($_POST['Password']) > 10) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_PassLength'] . "<br />\n";
             }
             if (strlen($_POST['PersonalID']) != 7 && $PID) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_PIDLength'] . "<br />\n";
             }
             if (eregi("[^a-zA-Z0-9_!=?&-]", $_POST['Login'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_LoginWords'] . "<br />\n";
             }
             if (eregi("[^a-zA-Z0-9_!=?&-]", $_POST['Password'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_PassWords'] . "<br />\n";
             }
             if (!CTM_Text::checkMail($_POST['Mail'])) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_MailWords'] . "<br />\n";
             }
             if (!is_numeric($_POST['PersonalID']) && $PID) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_PIDWords'] . "<br />\n";
             }
             if (strcmp($_POST['Password'], $_POST['CPassword']) != 0) {
                 $error .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Error_ConfirmPass'] . "<br />\n";
             }
             if (strcmp($_POST['Mail'], $_POST['CMail']) != 0) {
                 $error .= "&raquo; " . $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 .= "&raquo; " . $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 .= "&raquo; " . $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 .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Success'][2] . "<strong> " . htmlEncode($_POST['Name']) . "</strong><br />\n";
                 $success .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Success'][3] . "<strong> " . strtolower($_POST['Login']) . "</strong><br />\n";
                 $success .= "&raquo; " . $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 .= "&raquo; " . $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 .= "&raquo; " . $this->lang->words['Register']['Register']['Messages']['Success'][7] . "<br />\n";
                     }
                     if ($vaultBonus) {
                         $success .= "&raquo; " . 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);
         }
     }
 }
Пример #9
0
                    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));
}