function has_reward($user_id, $amount) { $user_id = intval($user_id); $amount = intval($amount); $users_amount = get_reward($user_id); return $users_amount >= $amount; }
} ##=== START: show all items or just those available to user? $points_check_sql = $show_only_mine == '1' ? ' AND item_price <= ' . $points : ''; $item_sql = $show_only_mine == '1' ? $item_sql : ''; ##=== END: show all items or just those available to user? $shop_more_sql = $shop_owner != 1 ? 'AND item_in_shop = 1' : ''; $cat_sql = $cat ? 'AND item_type_use = ' . $cat : ''; $sql = "SELECT count(*) AS total FROM " . ADR_SHOPS_ITEMS_TABLE . " \n\t\t\t\tWHERE item_owner_id = {$shop_owner}\n\t\t\t\t{$item_sql}\n\t\t\t\t{$points_check_sql}\n\t\t\t\t{$shop_more_sql} \n\t\t\t\t{$cat_sql}\n\t\t\t\tAND item_duration > 0 "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, $sql); } if ($total = $db->sql_fetchrow($result)) { $total_items = $total['total']; $pagination = generate_pagination("adr_shops.{$phpEx}?mode=see_shop&mode2={$mode2}&order={$sort_order}&shop_id=" . $shop_id . "", $total_items, $board_config['topics_per_page'], $start) . ' '; } $template->assign_vars(array('ORDER_BY' => $order_by, 'ACTION_SELECT' => $action_select, 'SELECT_CAT' => $select_category, 'SELECT_QUANTITY' => $select_quantity, 'SHOP_OWNER_ID' => $shop_owner, 'SHOP_NAME' => $shop_name, 'SHOP_DESC' => $shop_desc, 'POINTS' => number_format(get_reward($user_id)), 'SHOW_LINK' => $show_link, 'L_POINTS' => $lang['Adr_my'] . get_reward_name(), 'L_SHOW_LINK' => $show_type, "L_SELECT_CAT" => $lang['Adr_items_select'], "L_SELECT_QUANTITY" => $lang['Adr_items_select_quantity'], "L_ITEM_NAME" => $lang['Adr_shops_categories_item_name'], "L_ITEM_DESC" => $lang['Adr_shops_categories_item_desc'], "L_ITEM_QUALITY" => $lang['Adr_items_quality'], "L_ITEM_POWER" => $lang['Adr_items_power'], "L_ITEM_WEIGHT" => $lang['Adr_character_weight'], "L_ITEM_DURATION" => $lang['Adr_items_duration'], "L_ITEM_ELEMENT" => $lang['Adr_shops_item_element'], "L_ACTION" => $lang['Adr_items_action'], "L_ITEM_IMG" => $lang['Adr_races_image'], "L_ITEM_PRICE" => $lang['Adr_items_price'], "L_ITEM_TYPE" => $lang['Adr_items_type_use'], "L_NO_ITEMS" => $lang['Adr_items_none'], 'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'], 'L_ORDER' => $lang['Order'], 'L_SORT' => $lang['Sort'], 'L_SUBMIT' => $lang['Submit'], 'S_MODE_SELECT' => $select_sort_mode, 'S_ORDER_SELECT' => $select_sort_order, 'PAGINATION' => $pagination, 'PAGE_NUMBER' => sprintf($lang['Page_of'], floor($start / $board_config['topics_per_page']) + 1, ceil($total_items / $board_config['topics_per_page'])), 'L_GOTO_PAGE' => $lang['Goto_page'], 'S_MODE_ACTION' => append_sid("adr_shops.{$phpEx}?mode=see_shop&shop_id=" . $shop_id . ""))); break; case 'shop_list': $template->assign_block_vars('shop_list', array()); if (isset($_GET['mode2']) || isset($_POST['mode2'])) { $mode2 = isset($_POST['mode2']) ? htmlspecialchars($_POST['mode2']) : htmlspecialchars($_GET['mode2']); } else { $mode2 = 'itemname'; } if (isset($_POST['order'])) { $sort_order = $_POST['order'] == 'ASC' ? 'ASC' : 'DESC'; } else { if (isset($_GET['order'])) { $sort_order = $_GET['order'] == 'ASC' ? 'ASC' : 'DESC'; } else { $sort_order = 'ASC';
} } if (isset($HTTP_POST_VARS['sub_mode']) && !empty($HTTP_POST_VARS['sub_mode'])) { $sub_mode = htmlspecialchars($HTTP_POST_VARS['sub_mode']); } else { if (isset($HTTP_GET_VARS['sub_mode'])) { $sub_mode = htmlspecialchars($HTTP_GET_VARS['sub_mode']); } else { $sub_mode = ""; } } $start = isset($HTTP_GET_VARS['start']) ? intval($HTTP_GET_VARS['start']) : 0; if ($mode != "") { switch ($mode) { case 'training': $template->assign_block_vars('training', array()); if ($sub_mode == "") { $template->assign_block_vars('training.training_main', array()); if ($adr_general['training_allow_change']) { $template->assign_block_vars('training.training_main.change', array()); } $template->assign_vars(array('L_TOWN_TRAINING_SKILL' => $lang['Adr_town_training_grounds_train_skill'], 'L_TOWN_TRAINING_UPGRADE' => $lang['Adr_town_training_grounds_train_upgrade'], 'L_TOWN_TRAINING_CHARAC' => $lang['Adr_town_training_grounds_train_charac'], 'L_TOWN_TRAINING_CHANGE' => $lang['Adr_town_training_grounds_change_class'], 'U_TOWN_TRAINING_SKILL' => append_sid("adr_town.{$phpEx}?mode=training&sub_mode=train_skill"), 'U_TOWN_TRAINING_UPGRADE' => append_sid("adr_town.{$phpEx}?mode=training&sub_mode=train_upgrade"), 'U_TOWN_TRAINING_CHARAC' => append_sid("adr_town.{$phpEx}?mode=training&sub_mode=train_charac"), 'U_TOWN_TRAINING_CHANGE' => append_sid("adr_town.{$phpEx}?mode=training&sub_mode=change_class"))); } else { switch ($sub_mode) { case 'train_skill': $template->assign_block_vars('training.train_skill', array()); $skills = adr_get_skill_data(''); $base = $adr_general['training_skill_cost']; // Check if points or SP is to be used as payment if (!$board_config['Adr_skill_sp_enable']) { $points = get_reward($user_id);
$approvelist_sql = ", approvelist = '', approve_fee = '' "; // Give all those on the approve list their money back! [START] $sqlZZ = "SELECT approvelist, approve_fee FROM " . ADR_CLANS_TABLE . " WHERE id = '" . intval($_GET['clan']) . "' "; if (!($resultZZ = $db->sql_query($sqlZZ))) { message_die(GENERAL_ERROR, 'Error retrieving data', '', __LINE__, __FILE__, $sqlZZ); } while ($rowZZ = $db->sql_fetchrow($resultZZ)) { if ($rowZZ['approvelist'] != '') { $allapprove = str_replace("ß", "", $rowZZ['approvelist']); $newapprove = explode("Þ", $allapprove); $count = count($newapprove) - 1; $allfees = str_replace("ß", "", $rowZZ['approve_fee']); $newfees = explode("Þ", $allfees); for ($xy = 0; $xy < $count; $xy++) { // $sqlZZ2 = "SELECT user_points FROM ". USERS_TABLE ." WHERE user_id = '".$newapprove[$xy]."' "; $sqlZZ2 = get_reward($newapprove[$xy]); if (!($resultZZ2 = $db->sql_query($sqlZZ2))) { message_die(GENERAL_ERROR, 'Error retrieving data', '', __LINE__, __FILE__, $sqlZZ2); } while ($rowZZ2 = $db->sql_fetchrow($resultZZ2)) { $newpoints = $rowZZ2['user_points'] + $newfees[$xy]; } set_reward($newapprove[$xy], $newpoints); // $sql23 = "UPDATE ". USERS_TABLE ." SET user_points = '".$newpoints."' WHERE user_id = '".$newapprove[$xy]."' "; // if ( !$db->sql_query($sql23) ) { message_die(GENERAL_ERROR, 'Error updating clan info', '', __LINE__, __FILE__, $sql23); } } } } // Give all those on the approve list their money back! [END] } else { $approvelist_sql = "";
function adr_character_replen_quota() { global $db, $phpEx, $adr_general, $board_config, $lang, $table_prefix, $phpbb_root_path; // define some constants define('ADR_SHOPS_TABLE', $table_prefix . 'adr_shops'); define('IN_ADR_SETTINGS', 1); define('IN_ADR_VAULT', 1); define('IN_ADR_BATTLE', 1); define('IN_ADR_CHARACTER', 1); $sql = "SELECT * FROM " . ADR_CHARACTERS_TABLE . ""; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, 'Could not obtain character list', '', __LINE__, __FILE__, $sql); } $characters = $db->sql_fetchrowset($result); for ($c = 0; $c < count($characters); $c++) { if ($characters[$c]['character_id'] != '0' && $characters[$c]['character_id'] != '') { // Define some variables $character_id = $characters[$c]['character_id']; $points = get_reward($character_id); $adr_user['character_birth'] = $characters[$c]['character_birth']; $adr_user['character_limit_update'] = $characters[$c]['character_limit_update']; $adr_user['character_warehouse_update'] = $characters[$c]['character_warehouse_update']; $adr_user['character_warehouse'] = $characters[$c]['character_warehouse']; $adr_user['character_shop_update'] = $characters[$c]['character_shop_update']; $pm_wh = FALSE; $pm_shop = FALSE; $wh_msg = ''; $shop_msg = ''; // Vault account check $sql = "SELECT account_sum FROM " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not query vault user table', '', __LINE__, __FILE__, $sql); } $vault_check = $db->sql_fetchrow($result); // Shop stats check $sql = "SELECT shop_id FROM " . ADR_SHOPS_TABLE . "\n\t\t\t\tWHERE shop_owner_id = '{$character_id}'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not query shops table', '', __LINE__, __FILE__, $sql); } $shop_check = $db->sql_fetchrow($result); // Work out how many days have passed since character_creation $character_days = floor((time() - $adr_user['character_birth']) / 86400); // START battle & skill regening if (is_numeric($character_id) && $adr_general['Adr_character_limit_enable'] != '0' && $character_days > $adr_user['character_limit_update'] + ($adr_general['Adr_limit_regen_duration'] - 1)) { $new_battle_limit = $adr_general['Adr_character_battle_limit']; $new_skill_limit = $adr_general['Adr_character_skill_limit']; $new_trading_limit = $adr_general['Adr_character_trading_limit']; $new_thief_limit = $adr_general['Adr_character_thief_limit']; $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_battle_limit = {$new_battle_limit},\n\t\t\t\t\t\tcharacter_skill_limit = {$new_skill_limit},\n\t\t\t\t\t\tcharacter_trading_limit = {$new_trading_limit},\n\t\t\t\t\t\tcharacter_thief_limit = {$new_thief_limit},\n\t\t\t\t\t\tcharacter_limit_update = {$character_days}\n\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error regening user battle & skill limits'); } } // END battle & skill regening // START warehouse tax check if (is_numeric($character_id) && $character_days > $adr_user['character_warehouse_update'] + ($board_config['Adr_warehouse_duration'] - 1)) { $warehouse_days = $character_days - ($adr_user['character_warehouse_update'] + ($board_config['Adr_warehouse_duration'] - 1)); $warehouse_tax = $board_config['Adr_warehouse_tax'] * $warehouse_days; if ($adr_user['character_warehouse'] != '0' && $board_config['Adr_warehouse_tax'] > '0') { if ($points >= $warehouse_tax) { // Remove tax from user_points subtract_reward($character_id, $warehouse_tax); $wh_msg = sprintf($lang['Adr_character_warehouse_tax'], $warehouse_tax, get_reward_name()); } elseif ($points < $warehouse_tax && is_numeric($vault_check['account_sum']) && $vault_check['account_sum'] >= $warehouse_tax) { // Else remove from Vault $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\t\t\t\t\tSET account_sum = (account_sum - {$warehouse_tax})\n\t\t\t\t\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(CRITICAL_ERROR, 'Error removing points for WH tax (vault)'); } $wh_msg = sprintf($lang['Adr_character_warehouse_tax'], $warehouse_tax, get_reward_name()); } else { // Close warehouse $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\t\t\tSET character_warehouse = 0\n\t\t\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_MESSAGE, 'Error closing warehouse'); } // Remove warehouse status from itemsif rent not paid $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . "\n\t\t\t\t\t\t\tSET item_in_warehouse = 0\n\t\t\t\t\t\t\tWHERE item_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not remove WH status for items', "", __LINE__, __FILE__, $sql); } $wh_msg = sprintf($lang['Adr_character_warehouse_closed'], $warehouse_tax, get_reward_name()); } // Check for any messages to use later on in PM to user $pm_wh = TRUE; } // Update user warehouse update time $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_warehouse_update = {$character_days}\n\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error updating warehouse'); } } // END warehouse tax check // START open shop tax check if (is_numeric($character_id) && $character_days > $adr_user['character_shop_update'] + ($board_config['Adr_shop_duration'] - 1)) { $shop_days = $character_days - ($adr_user['character_shop_update'] + ($board_config['Adr_shop_duration'] - 1)); $shop_tax = $board_config['Adr_shop_tax'] * $shop_days; // see if user has a shop open if (is_numeric($shop_check['shop_id']) && $board_config['Adr_shop_tax'] > '0') { if ($points >= $shop_tax) { // Remove tax from user_points subtract_reward($character_id, $shop_tax); $shop_msg = sprintf($lang['Adr_character_shop_tax'], $shop_tax, get_reward_name()); } elseif ($points < $shop_tax && is_numeric($vault_check['account_sum']) && $vault_check['account_sum'] >= $shop_tax) { $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\t\t\t\t\tSET account_sum = (account_sum - {$shop_tax})\n\t\t\t\t\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(CRITICAL_ERROR, 'Error removing points for shop (vault)'); } $shop_msg = sprintf($lang['Adr_character_shop_tax'], $shop_tax, get_reward_name()); } else { // Remove shop status from items & close shop if rent not paid $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . "\n\t\t\t\t\t\t\tSET item_in_shop = 0\n\t\t\t\t\t\t\tWHERE item_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not remove shop status for items', "", __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . ADR_SHOPS_TABLE . "\n\t\t\t\t\t\t\tWHERE shop_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete shop', "", __LINE__, __FILE__, $sql); } // Remove all transaction logs for user store $sql = "DELETE FROM " . ADR_STORES_USER_HISTORY . "\n\t\t\t\t\t\t\tWHERE user_store_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete user store trans logs', "", __LINE__, __FILE__, $sql); } $shop_msg = sprintf($lang['Adr_character_shop_closed'], $shop_tax, get_reward_name()); } // Check for any messages to use later on in PM to user $pm_shop = TRUE; } // Last shop update $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_shop_update = {$character_days}\n\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error updating warehouse'); } } // END open shop tax check // Here we need to check whether to send user a PM notification of charges if ($pm_wh === TRUE || $pm_shop === TRUE) { $subject = sprintf($lang['Adr_tax_pm_sub']); if ($pm_wh === TRUE) { $message = $wh_msg . ' '; } if ($pm_shop === TRUE) { $message .= $shop_msg; } adr_send_pm($character_id, $subject, $message, 2); } } } return; }