diff --git a/AvocadoAmber/classes/character/character.class.php b/AvocadoAmber/classes/character/character.class.php
index a9e2a75..fd28007 100644
--- a/AvocadoAmber/classes/character/character.class.php
+++ b/AvocadoAmber/classes/character/character.class.php
@@ -1,14 +1,12 @@
$value) {
if (in_array($field, $table_columns)) {
@@ -103,7 +100,6 @@ class Character extends Module
}
$where_clause = implode(" AND ", $where_conditions);
- // 정렬 순서 설정
$order_parts = [];
foreach ($req_order as $field => $direction) {
if (in_array($field, $table_columns)) {
@@ -116,11 +112,9 @@ class Character extends Module
$limit = "LIMIT {$limit}";
}
- // sql 생성
$sql = "SELECT {$columns} FROM {$g5["character_table"]} WHERE {$where_clause} ORDER BY {$order} {$limit}";
$result = sql_query($sql);
- // 결과 생성
while ($row = sql_fetch_array($result)) {
$characters[] = $row;
}
@@ -128,6 +122,12 @@ class Character extends Module
return $characters;
}
+ /**
+ * update character (query)
+ * @param string|int $character_id
+ * @param object|array $data
+ * @return void
+ */
public static function update($character_id, $data)
{
global $g5;
@@ -147,6 +147,11 @@ class Character extends Module
}
}
+ /**
+ * insert character (query)
+ * @param object|array $data
+ * @return int|string|null
+ */
public static function insert($data)
{
global $g5;
@@ -167,6 +172,11 @@ class Character extends Module
}
}
+ /**
+ * check character exists
+ * @param string|int $character_id
+ * @return bool
+ */
public static function exists($character_id)
{
global $g5;
@@ -179,6 +189,11 @@ class Character extends Module
return false;
}
+ /**
+ * delete character
+ * @param string|int $character_id
+ * @return bool
+ */
public static function delete($character_id)
{
global $g5;
@@ -213,6 +228,231 @@ class Character extends Module
return false;
}
+ /**
+ * get character exp
+ * @param string|int $character_id
+ * @return mixed
+ */
+ public static function getCharacterExp($character_id)
+ {
+ global $g5;
+
+ // 포인트합
+ $sql = " select sum(ex_point) as sum_ex_point
+ from {$g5['exp_table']}
+ where ch_id = '$character_id' ";
+ $row = sql_fetch($sql);
+
+ return $row['sum_ex_point'];
+ }
+
+ /**
+ * get character all exp
+ * @param string|int $character_id
+ * @param string|int $amount
+ * @param string $content
+ * @param string $rel_action
+ * @return int
+ */
+ public static function addCharacterExp($character_id, $amount, $content = "", $rel_action = "")
+ {
+ global $g5;
+
+ if ($amount == 0 || $character_id == '') {
+ return 0;
+ }
+
+ $ch = self::getCharacter($character_id);
+ if (!$ch['ch_id']) {
+ return 0;
+ }
+
+ $ch_exp = self::getCharacterExp($character_id);
+
+ $ex_ch_exp = $ch_exp + $amount;
+ $time = G5_TIME_YMDHIS;
+ $purify_content = addslashes($content);
+
+ $sql = "INSERT INTO {$g5['exp_table']} SET
+ ch_id = '{$character_id}',
+ ch_name = '{$ch['ch_name']}',
+ ex_datetime = '{$time}',
+ ex_content = '{$purify_content}',
+ ex_point = '{$amount}',
+ ex_ch_exp = '{$ex_ch_exp}',
+ ex_rel_action = '{$rel_action}' ";
+ sql_query($sql);
+
+ self::update($character_id, ["ch_exp" => intval($ex_ch_exp)]);
+
+ $rank_info = get_rank_exp($ex_ch_exp, $character_id);
+
+ if ($ch['ch_rank'] != $rank_info['rank']) {
+ $state_point = $ch['ch_point'] + $rank_info['add_point'];
+ self::update($character_id, ["ch_rank" => $rank_info['rank'], "ch_point" => $state_point]);
+ }
+
+ return 1;
+ }
+
+ /**
+ * get rank name
+ * @param string $rank
+ * @return mixed
+ */
+ public static function getRankName($rank)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT lv_name FROM {$g5['level_table']} WHERE lv_id = '{$rank}'");
+
+ if ($result) {
+ $str = $result['lv_name'];
+ if (!$str) {
+ $str = '-';
+ }
+ } else {
+ $str = "-";
+ }
+
+ return $str;
+ }
+
+ /**
+ * get rank id
+ * @param string $rank
+ * @return mixed
+ */
+ public static function getRankID($rank)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT lv_id FROM {$g5['level_table']} WHERE lv_name = '{$rank}'");
+
+ if ($result) {
+ return $result['lv_id'];
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * get rank by character exp
+ * @param string|int $exp_amount
+ * @param string|int $character_id
+ * @return array
+ */
+ public static function getRank($exp_amount, $character_id)
+ {
+ global $g5;
+
+ $ch = self::getDetail($character_id, ["ch_rank"]);
+
+ $level = sql_fetch("SELECT t1.*,
+ (SELECT lv_id FROM {$g5['level_table']} WHERE lv_exp > t1.lv_exp ORDER BY lv_exp ASC LIMIT 1) as next_rank,
+ (SELECT lv_exp FROM {$g5['level_table']} WHERE lv_exp > t1.lv_exp ORDER BY lv_exp ASC LIMIT 1) as next_exp
+ FROM {$g5['level_table']} t1
+ WHERE t1.lv_exp <= {$exp_amount}
+ ORDER BY t1.lv_exp DESC
+ LIMIT 1
+ ");
+
+ $ch_rank = sql_fetch("SELECT * FROM {$g5['level_table']} WHERE lv_id = '{$ch['ch_rank']}'");
+
+ $add_status = 0;
+ if ($ch_rank['lv_exp'] != $level['lv_exp']) {
+ $min_exp = min($ch_rank['lv_exp'], $level['lv_exp']);
+ $max_exp = max($ch_rank['lv_exp'], $level['lv_exp']);
+
+ $status_result = sql_fetch("SELECT SUM(lv_add_state) as status
+ FROM {$g5['level_table']}
+ WHERE lv_exp > {$min_exp} AND lv_exp <= {$max_exp}
+ ");
+ $add_status = $status_result['status'];
+
+ if ($ch_rank['lv_exp'] > $level['lv_exp']) {
+ $add_status *= -1;
+ }
+ }
+
+ return [
+ 'rank' => $level['lv_id'],
+ 'next_rank' => $level['next_rank'],
+ 'add_point' => $add_status,
+ 'rest_exp' => $level['next_exp'] ? $level['next_exp'] - $level['lv_exp'] : 0
+ ];
+ }
+
+ /**
+ * get side name
+ * @param string|int $side_id
+ * @return mixed
+ */
+ public static function getSideName($side_id)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT si_name FROM {$g5['side_table']} WHERE si_id = '{$side_id}'");
+
+ return isset($result['si_name']) ? $result['si_name'] : "-";
+ }
+
+ /**
+ * get side icon
+ * @param string|int $side_id
+ * @return string
+ */
+ public static function getSideIcon($side_id)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT si_img, si_name FROM {$g5['side_table']} WHERE si_id = '{$side_id}'");
+
+ if (isset($result['si_img'])) {
+ $str = "
";
+ }
+
+ return $str;
+ }
+
+ /**
+ * get class name
+ * @param string|int $class_id
+ * @return mixed
+ */
+ public static function getClassName($class_id)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT cl_name FROM {$g5['class_table']} WHERE cl_id = '{$class_id}'");
+
+ return isset($result['cl_name']) ? $result["cl_name"] : "-";
+ }
+
+ /**
+ * get class icon
+ * @param string|int $class_id
+ * @return string
+ */
+ public static function getClassIcon($class_id)
+ {
+ global $g5;
+
+ $result = sql_fetch("SELECT cl_img, cl_name FROM {$g5['class_table']} WHERE cl_id = '{$class_id}'");
+
+ if (isset($result['cl_img'])) {
+ return "
";
+ }
+
+ return "";
+ }
+
+ /**
+ * set member's main character
+ * @param string|int $member_id
+ * @param string|int $character_id
+ * @return void
+ */
public static function setMemberMainCharacter($member_id, $character_id = "")
{
global $g5;
@@ -221,6 +461,11 @@ class Character extends Module
sql_query($sql);
}
+ /**
+ * character create on admin page
+ * @param object|array $data
+ * @return array
+ */
public static function createFromAdminPage($data)
{
global $g5;
@@ -231,6 +476,12 @@ class Character extends Module
return ['ch_id' => sql_insert_id()];
}
+ /**
+ * character update on admin page
+ * @param string|int $character_id
+ * @param object|array $data
+ * @return void
+ */
public static function updateFromAdminPage($character_id, $data)
{
global $g5;
@@ -251,18 +502,35 @@ class Character extends Module
}
}
+ /**
+ * query with specific columns
+ * @param string $character_name
+ * @param object|array $req_columns
+ * @return array|bool|null
+ */
public static function getDetailByName($character_name, $req_columns)
{
$character_name = sql_real_escape_string($character_name);
return self::getDetailWithCondition($req_columns, ["ch_name" => $character_name]);
}
+ /**
+ * query with specific columns
+ * @param string|int $character_id
+ * @param object|array $req_columns
+ * @return array|bool|null
+ */
public static function getDetail($character_id, $req_columns)
{
$character_id = intval($character_id);
return self::getDetailWithCondition($req_columns, ["ch_id" => $character_id]);
}
+ /**
+ * get character images
+ * @param string|int $character_id
+ * @return array|bool|null
+ */
public static function getImages($character_id)
{
global $g5;
@@ -279,7 +547,7 @@ class Character extends Module
/**
* get character by character_id
* note?: this function may cause excessive load on the database.
- * @param mixed $character_id
+ * @param string|int $character_id
* @return Character|array|object|null
*/
public static function getCharacter($character_id)
@@ -298,7 +566,7 @@ class Character extends Module
/**
* get character by character_id (compatilbe name for avocado)
- * @param mixed $character_id
+ * @param string|int $character_id
* @return Character|array|object|null
*/
public static function get_character($character_id)
@@ -308,7 +576,7 @@ class Character extends Module
/**
* get character by name
- * @param mixed $character_name
+ * @param string $character_name
* @return Character|null
*/
public static function getCharacterByName($character_name)
@@ -325,6 +593,11 @@ class Character extends Module
return null;
}
+ /**
+ * get character by name (compatible name for avocado)
+ * @param mixed $character_name
+ * @return Character|null
+ */
public static function get_character_by_name($character_name)
{
return self::getCharacterByName($character_name);
@@ -566,6 +839,10 @@ class Character extends Module
}
}
+ /**
+ * search count reset (for community feature)
+ * @return void
+ */
public static function resetSearchCount()
{
global $g5, $character;
diff --git a/AvocadoAmber/extend/community.config.php b/AvocadoAmber/extend/community.config.php
index fee1b44..4782899 100644
--- a/AvocadoAmber/extend/community.config.php
+++ b/AvocadoAmber/extend/community.config.php
@@ -58,13 +58,6 @@ function del_html($str)
return $str;
}
-function help($help = "")
-{
- global $g5;
- $str = '' . str_replace("\n", "
", $help) . '';
- return $str;
-}
-
function upload_file($srcfile, $destfile, $dir)
{
if ($destfile == "")
diff --git a/AvocadoAmber/extend/exp.lib.php b/AvocadoAmber/extend/exp.lib.php
index 9edaf88..e60ebb6 100644
--- a/AvocadoAmber/extend/exp.lib.php
+++ b/AvocadoAmber/extend/exp.lib.php
@@ -4,62 +4,10 @@ if (!defined('_GNUBOARD_'))
function insert_exp($ch_id, $exp, $content = '', $rel_action = '')
{
- global $config;
- global $g5;
- global $is_admin;
-
- if ($exp == 0) {
- return 0;
- }
- if ($ch_id == '') {
- return 0;
- }
- $ch = get_character($ch_id);
- if (!$ch['ch_id']) {
- return 0;
- }
-
- // 캐릭터 경험치
- $ch_exp = get_exp_sum($ch_id);
-
- // 경험치 건별 생성
- $ex_ch_exp = $ch_exp + $exp;
-
- $sql = " insert into {$g5['exp_table']}
- set ch_id = '$ch_id',
- ch_name = '{$ch['ch_name']}',
- ex_datetime = '" . G5_TIME_YMDHIS . "',
- ex_content = '" . addslashes($content) . "',
- ex_point = '$exp',
- ex_ch_exp = '$ex_ch_exp',
- ex_rel_action = '$rel_action' ";
- sql_query($sql);
-
- // 경험치 UPDATE
- Character::update($ch_id, ["ch_exp" => intval($ex_ch_exp)]);
-
- $rank_info = get_rank_exp($ex_ch_exp, $ch_id);
-
- // 기존 랭크에서 변동이 있을 경우에만 실행
- if ($ch['ch_rank'] != $rank_info['rank']) {
- $state_point = $ch['ch_point'] + $rank_info['add_point'];
- // 스탯 포인트 변동 사항 및 랭크 변동사항 저장
- Character::update($ch_id, ["ch_rank" => $rank_info['rank'], "ch_point" => $state_point]);
- }
-
- return 1;
+ return Character::addCharacterExp($ch_id, $exp, $content, $rel_action);
}
-// 경험치 내역 합계
function get_exp_sum($ch_id)
{
- global $g5, $config;
-
- // 포인트합
- $sql = " select sum(ex_point) as sum_ex_point
- from {$g5['exp_table']}
- where ch_id = '$ch_id' ";
- $row = sql_fetch($sql);
-
- return $row['sum_ex_point'];
+ return Character::getCharacterExp($ch_id);
}
diff --git a/AvocadoAmber/extend/rank.lib.php b/AvocadoAmber/extend/rank.lib.php
index d3e6c07..e393b91 100644
--- a/AvocadoAmber/extend/rank.lib.php
+++ b/AvocadoAmber/extend/rank.lib.php
@@ -4,50 +4,15 @@ if (!defined('_GNUBOARD_'))
function get_rank_name($rank)
{
- global $g5;
- $str = "";
- $result = sql_fetch("SELECT lv_name FROM {$g5['level_table']} where lv_id = '{$rank}'");
- $str = $result['lv_name'];
- if (!$str) {
- $str = '-';
- }
- return $str;
+ return Character::getRankName($rank);
}
function get_rank_id($rank)
{
- global $g5;
- $str = "";
- $result = sql_fetch("SELECT lv_id FROM {$g5['level_table']} where lv_name = '{$rank}'");
- $str = $result['lv_id'];
- return $str;
+ return Character::getRankID($rank);
}
function get_rank_exp($exp, $ch_id)
{
- global $g5;
- $result = [];
-
- $ch = Character::getDetail($ch_id, ["ch_rank"]);
-
- $ch_rank = sql_fetch("SELECT * FROM {$g5['level_table']} where lv_id = '{$ch['ch_rank']}'");
-
- $level = sql_fetch("SELECT * FROM {$g5['level_table']} where lv_exp <= {$exp} ORDER BY lv_exp DESC limit 0, 1");
- $n_level = sql_fetch("SELECT * FROM {$g5['level_table']} where lv_exp >= {$level['lv_exp']} ORDER BY lv_exp ASC limit 0, 1");
-
- if ($ch_rank['lv_exp'] < $level['lv_exp']) {
- $add_status = sql_fetch("SELECT SUM(lv_add_state) as status FROM {$g5['level_table']} where lv_exp > '{$ch_rank['lv_exp']}' and lv_exp <= '{$level['lv_exp']}'");
- $add_status = $add_status['status'];
-
- } else if ($ch_rank['lv_exp'] > $level['lv_exp']) {
- $add_status = sql_fetch("SELECT SUM(lv_add_state) as status FROM {$g5['level_table']} where lv_exp <= '{$ch_rank['lv_exp']}' and lv_exp > '{$level['lv_exp']}'");
- $add_status = $add_status['status'] * -1;
- }
-
- $result['rank'] = $level['lv_id'];
- $result['next_rank'] = $n_level['lv_id'];
- $result['add_point'] = $add_status;
- $result['rest_exp'] = ($n_level ? $n_level['lv_exp'] - $level['lv_exp'] : 0);
-
- return $result;
+ return Character::getRank($exp, $ch_id);
}
diff --git a/AvocadoAmber/extend/sideclass.lib.php b/AvocadoAmber/extend/sideclass.lib.php
index e5488c1..d35a976 100644
--- a/AvocadoAmber/extend/sideclass.lib.php
+++ b/AvocadoAmber/extend/sideclass.lib.php
@@ -4,52 +4,21 @@ if (!defined('_GNUBOARD_'))
function get_side_name($si_id)
{
- global $g5;
- $result = sql_fetch("select si_name from {$g5['side_table']} where si_id = '{$si_id}'");
-
- $str = $result['si_name'];
- if (!$str)
- $str = '-';
-
- return $str;
+ return Character::getSideName($si_id);
}
function get_class_name($cl_id)
{
- global $g5;
- $result = sql_fetch("select cl_name from {$g5['class_table']} where cl_id = '{$cl_id}'");
-
- $str = $result['cl_name'];
- if (!$str)
- $str = '-';
-
- return $str;
+ return Character::getClassName($cl_id);
}
function get_side_icon($si_id)
{
- global $g5;
- $str = "";
- $side_url = G5_DATA_URL . "/side";
- $result = sql_fetch("select si_img, si_name from {$g5['side_table']} where si_id = '{$si_id}'");
-
- if ($result['si_img']) {
- $str = "
";
- }
-
- return $str;
+ return Character::getSideIcon($si_id);
}
function get_class_icon($cl_id)
{
- global $g5;
- $str = "";
- $class_url = G5_DATA_URL . "/class";
-
- $result = sql_fetch("select cl_img, cl_name from {$g5['class_table']} where cl_id = '{$cl_id}'");
- if ($result['cl_img']) {
- $str = "
";
- }
- return $str;
+ return Character::getClassIcon($cl_id);
}
diff --git a/AvocadoAmber/lib/common.lib.php b/AvocadoAmber/lib/common.lib.php
index 5efcaff..681853a 100644
--- a/AvocadoAmber/lib/common.lib.php
+++ b/AvocadoAmber/lib/common.lib.php
@@ -3538,3 +3538,10 @@ function get_random_token_string($length = 6)
return bin2hex($randomString);
}
+
+function help($help = "")
+{
+ global $g5;
+ $str = '' . str_replace("\n", "
", $help) . '';
+ return $str;
+}