From: <wel...@us...> - 2009-04-10 20:27:27
|
Revision: 3435 http://planeshift.svn.sourceforge.net/planeshift/?rev=3435&view=rev Author: weltall2 Date: 2009-04-10 20:27:21 +0000 (Fri, 10 Apr 2009) Log Message: ----------- Ported to db schema to HEAD, Various fixes around and added some crafting editing functions. Patch by ravna. Modified Paths: -------------- www/webconsole-new/actionlocations/almain.php www/webconsole-new/actionlocations/als.php www/webconsole-new/commonfunctions.php www/webconsole-new/crafting/craftingmain.php www/webconsole-new/crafting/patterns.php www/webconsole-new/crafting/process.php www/webconsole-new/crafting/transforms.php www/webconsole-new/footer.php www/webconsole-new/header.php www/webconsole-new/index.php www/webconsole-new/items/createitem.php www/webconsole-new/items/deletecategory.php www/webconsole-new/items/deleteitem.php www/webconsole-new/items/editcategory.php www/webconsole-new/items/edititem.php www/webconsole-new/items/itemmain.php www/webconsole-new/items/listitems.php www/webconsole-new/items/locateitem.php www/webconsole-new/npcs/ka_scripts.php www/webconsole-new/npcs/ka_trigger.php www/webconsole-new/npcs/listlootrules.php www/webconsole-new/npcs/listmerchant.php www/webconsole-new/npcs/listnpcs.php www/webconsole-new/npcs/listspawnrules.php www/webconsole-new/npcs/listtrainer.php www/webconsole-new/npcs/npc_details.php www/webconsole-new/npcs/npc_search.php www/webconsole-new/npcs/npcmain.php www/webconsole-new/npcs/synonyms.php www/webconsole-new/quests/createquest.php www/webconsole-new/quests/deletequest.php www/webconsole-new/quests/editquest.php www/webconsole-new/quests/listquests.php www/webconsole-new/quests/questmain.php www/webconsole-new/rules/factions.php www/webconsole-new/rules/glyphs.php www/webconsole-new/rules/locations.php www/webconsole-new/rules/raceinfo.php www/webconsole-new/rules/resources.php www/webconsole-new/rules/rulesmain.php www/webconsole-new/rules/scripts.php www/webconsole-new/rules/skills.php www/webconsole-new/rules/spells.php www/webconsole-new/rules/waypoints.php Modified: www/webconsole-new/actionlocations/almain.php =================================================================== --- www/webconsole-new/actionlocations/almain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/actionlocations/almain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function almain(){ if (checkaccess('als', 'read')){ echo '<div class="menu_left">'; Modified: www/webconsole-new/actionlocations/als.php =================================================================== --- www/webconsole-new/actionlocations/als.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/actionlocations/als.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function alsector(){ if (checkaccess('als', 'read')){ $query = "SELECT name FROM sectors ORDER BY name"; Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/commonfunctions.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php /*mysql_query2() calls mysql_query and dies with a failure message if there are any mysql errors*/ function mysql_query2($a, $log=true){ @@ -13,6 +13,7 @@ if (strcasecmp($foo[0], 'SELECT') != 0){ $foo = mysql_real_escape_string($a); $user = mysql_real_escape_string($_SESSION['username']); + date_default_timezone_set('UTC'); $date = date("Y-m-d H:i:s"); $query = "INSERT INTO wc_cmdlog (username, query, date) VALUES ('$user', '$foo', '$date')"; mysql_query2($query, false); @@ -182,6 +183,8 @@ $typevals["glyphs"] = "SELECT id, name FROM item_stats WHERE category_id='5' ORDER BY name"; $typevals["locations"] = "SELECT id, name FROM sc_locations ORDER BY name"; $typevals["process"] = "SELECT process_id, name FROM trade_processes ORDER BY name"; + $typevals["patterns"] = "SELECT id, pattern_name FROM trade_patterns ORDER BY pattern_name"; + $typevals["mind_slot_items"] = "SELECT id, name FROM item_stats WHERE stat_type='B' AND valid_slots LIKE '%MIND%' ORDER BY name"; $query = $typevals[$type]; @@ -211,6 +214,7 @@ $typevals["glyphs"] = '""'; $typevals["locations"] = '"-1"'; $typevals["process"] = '""'; + $typevals["patterns"] = '""'; $nullval = $typevals[$type]; Modified: www/webconsole-new/crafting/craftingmain.php =================================================================== --- www/webconsole-new/crafting/craftingmain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/crafting/craftingmain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,10 +1,12 @@ -<? +<?php //This is the main crafting page - gives options for displaying/editing crafts function craftingmain(){ if (checkaccess('crafting', 'read')){ echo '<div class="menu_left">'; echo '<a href="./index.php?do=listpatterns">List Patterns</a> <br/>'; + echo '<a href="./index.php?do=createtransform">Create Transform</a> <br/>'; + echo '<a href="./index.php?do=createpattern">Create Pattern</a> <br/>'; echo '<hr/><a href="./index.php">Return to main page.</a>'; echo '</div><div class="main">'; } Modified: www/webconsole-new/crafting/patterns.php =================================================================== --- www/webconsole-new/crafting/patterns.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/crafting/patterns.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listpatterns(){ if (checkaccess('crafting', 'read')){ @@ -98,6 +98,7 @@ echo '</tr>'; } echo '</table>'; + echo '<a href="./index.php?do=createtransform&id='.$pattern_id.'">Create new transform for this pattern </a><br />'; echo '<p class="bold">Available Combinations</p>'; $Alt = FALSE; $item = -1; @@ -137,4 +138,38 @@ } } +function createpattern() +{ + if (checkaccess('crafting','create') && isset($_POST['commit']) && ($_POST['commit']=='Create Pattern')) // submit pattern + { + $pattern_name = mysql_real_escape_string($_POST['pattern_name']); + $group_id = mysql_real_escape_string($_POST['group_id']); + $designitem_id = mysql_real_escape_string($_POST['designitem_id']); + $k_factor = mysql_real_escape_string($_POST['k_factor']); + $description = mysql_real_escape_string($_POST['description']); + $query = "INSERT INTO trade_patterns (pattern_name, group_id, designitem_id, k_factor, description) VALUES ('$pattern_name', '$group_id', '$designitem_id', '$k_factor', '$description')"; + mysql_query2($query); + echo '<p class="error">Pattern added succesfully</a>'; + unset($_POST); + createpattern(); + } + elseif (checkaccess('crafting','create')) + { + echo '<p class="bold">Create Pattern</p>'."\n"; // new pattern + echo '<form action="./index.php?do=createpattern" method="post" /><table>'; + echo '<tr><td>Pattern Name</td><td><input type="text" name="pattern_name" /> </td></tr>'; + echo '<tr><td>Group id</td><td><input type="text" name="group_id" /> </td></tr>'; + $items_results = PrepSelect('mind_slot_items'); + echo '<tr><td>Design Item </td><td>'.DrawSelectBox('items', $items_results, 'designitem_id', '', false).'</td></tr>'; + echo '<tr><td>Difficulty Factor</td><td><input type="text" name="k_factor" /> </td></tr>'; + echo '<tr><td>Description</td><td><textarea name="description" rows="5" cols="40"></textarea> </td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Pattern"/></td></tr>'; + echo '</table></form>'."\n"; + } + else + { + echo '<p class="error">You do not have the required access to create a pattern.</a>'; + } +} + ?> Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/crafting/process.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function editprocess(){ if (checkaccess('crafting', 'read')){ $id = mysql_real_escape_string($_GET['id']); Modified: www/webconsole-new/crafting/transforms.php =================================================================== --- www/webconsole-new/crafting/transforms.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/crafting/transforms.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function edittransform(){ if (checkaccess('crafting', 'edit')){ if (!isset($_GET['id'])){ @@ -29,6 +29,7 @@ $query = "SELECT process_id, result_id, result_qty, item_id, item_qty, trans_points, penilty_pct, description FROM trade_transformations WHERE id='$id'"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); + $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletetransform&id='.$id.'">Delete Transform</a>' : ""); echo '<p class="header">Transformation Details</p>'; echo '<form action="./index.php?do=transform&id='.$id.'" method="post"><table>'; echo '<tr><td>Source Item</td><td><input type="text" name="item_qty" value="'.$row['item_qty'].'" size="4"/> '.DrawSelectBox('items', $Items, 'item_id', $row['item_id']).'</td></tr>'; @@ -37,11 +38,107 @@ echo '<tr><td>Description</td><td><textarea name="description" rows="4" cols="40">'.$row['description'].'</textarea></td></tr>'; echo '<tr><td>Time Taken</td><td><input type="text" name="trans_points" value="'.$row['trans_points'].'"/></td></tr>'; echo '<tr><td>Resultant Quality factor(0-1)</td><td><input type="text" name="penilty_pct" value="'.$row['penilty_pct'].'"/></td></tr>'; - echo '<tr><td><input type="submit" name="commit" value="Update Transform"/></td></tr>'; + echo '<tr><td><input type="submit" name="commit" value="Update Transform"/> </td><td>'.$delete_text.'</td></tr>'; echo '</table></form>'; } }else{ echo '<p class="error">You are not authorized to use these functions</p>'; } } + +function createtransform() +{ + if (checkaccess('crafting','create') && isset($_POST['commit']) && $_POST['commit'] == "Create Transformation") + { + $pattern_id = mysql_real_escape_string($_POST['pattern_id']); + $item_id = mysql_real_escape_string($_POST['item_id']); + $item_qty = mysql_real_escape_string($_POST['item_qty']); + $process_id = mysql_real_escape_string($_POST['process_id']); + $trans_points = mysql_real_escape_string($_POST['trans_points']); + $result_id = mysql_real_escape_string($_POST['result_id']); + $result_qty = mysql_real_escape_string($_POST['result_qty']); + $penilty_pct = mysql_real_escape_string($_POST['penilty_pct']); + $query = "INSERT INTO trade_transformations ( pattern_id, item_id, item_qty, process_id, trans_points, result_id, result_qty, penilty_pct ) VALUES ('$pattern_id', '$item_id', '$item_qty', '$process_id', '$trans_points', '$result_id', '$result_qty', '$penilty_pct')"; + mysql_query2($query); + if(isset($_GET['id'])) // "redirect the user back to where they came from (if they came from somewhere). + { + echo '<p class="error">Transform Creation Successful</p>'; + include('./crafting/patterns.php'); + editpattern(); + } + else // or bring the user back to the create tranfrom from. + { + echo '<p class="error">Transform Creation Successful</p>'; + unset($_POST); + createtransform(); + } + + } + elseif (checkaccess('crafting','create')) + { + echo '<p class="bold">Create Transformation</p>'."\n"; // new transformation + + $redir = (isset($_GET['id']) ? "&id={$_GET['id']}" : ""); // set this value if the script was called from a certain pattern, and if it was, return to there after inserting the data. + echo '<form action="./index.php?do=createtransform'.$redir.'" method="post" /><table>'; + + if(isset ($_GET['id'])) + { + echo '<tr><td>Pattern id</td><td><input type="hidden" name="pattern_id" value="'.$_GET['id'].'" />'.$_GET['id'].'</td></tr>'; + } + else + { + $pattern_results = PrepSelect('patterns'); + echo '<tr><td>Pattern id</td><td>'.DrawSelectBox('patterns', $pattern_results, 'pattern_id', '', false).'</td></tr>'; + } + echo '<tr><td>(amount) Source Item</td><td><input type="text" name="item_qty" size="4" /> '; + $items_results = PrepSelect('items'); + echo DrawSelectBox('items', $items_results, 'item_id', '', false).'</td></tr>'; + + $process_results = PrepSelect('process'); + echo '<tr><td>Process</td><td>'.DrawSelectBox('process', $process_results, 'process_id', '', false).'</td></tr>'; + echo '<tr><td>Time Taken</td><td><input type="text" name="trans_points" /></td></tr>'; + echo '<tr><td>(amount) Result Item</td><td><input type="text" name="result_qty" size="4"/> '; + echo DrawSelectBox('items', $items_results, 'result_id', '', false).'</td></tr>'; + echo '<tr><td>Resultant Quality factor(0-1)</td><td><input type="text" name="penilty_pct" /></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Transformation"/></td></tr>'; + echo '</table></form>'."\n"; + } + else + { + echo '<p class="error">You are not authorized to do this operation</p>'; + } +} + + +function deletetransform() +{ + if (checkaccess('crafting','delete') && isset($_POST['submit']) && isset($_GET['id']) && is_numeric($_GET['id'])) + { + $password = mysql_real_escape_string($_POST['passd']); + $username = mysql_real_escape_string($_SESSION['username']); + $query = "SELECT COUNT(username) FROM accounts WHERE username='$username' AND password=MD5('$password')"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if ($row[0] == 1) + { + $id = mysql_real_escape_string($_GET['id']); + $query = "DELETE FROM trade_transformations WHERE id = $id LIMIT 1"; //limit is not needed, but if something unexpected does happen, it'll only affect 1 transform. + mysql_query2($query); + echo '<p class="error">Transformation with ID '.$id.' was succesfully deleted.</p>'; + } + else + { + echo '<p class="error">Password check failed - Did Not Delete Transform</p>'; + } + } + elseif (checkaccess('crafting','delete') && isset($_GET['id']) && is_numeric($_GET['id'])) + { + echo '<p>You are about to permanently delete transform id '.$_GET['id'].'</p>'; + echo '<form action="./index.php?do=deletetransform&id='.$_GET['id'].'" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + } + else + { + echo 'You do not have access to delete transformations, or did not provide a valid ID'; + } +} ?> Modified: www/webconsole-new/footer.php =================================================================== --- www/webconsole-new/footer.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/footer.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,6 +1,6 @@ <div class="footer"> All material found here is (c) Atomic Blue.<br/> -<? +<?php $time2 = microtime(true); $time = $time2-$time1; $time = sprintf("%01.4f", $time); Modified: www/webconsole-new/header.php =================================================================== --- www/webconsole-new/header.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/header.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php $time1 = microtime(true); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" @@ -9,7 +9,7 @@ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" href="./global.css" /> <title>PlaneShift - Administrator Console -<? +<?php if (isset($header)) echo ": $Header"; ?> Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/index.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php include('./../secure/db_config.php'); include('./commonfunctions.php'); SetUpDB("$db_hostname", "$db_username", "$db_password", "$db_name"); @@ -371,12 +371,30 @@ craftingmain(); editpattern(); break; + case 'createpattern': + include('./crafting/craftingmain.php'); + include('./crafting/patterns.php'); + craftingmain(); + createpattern(); + break; case 'transform': include('./crafting/craftingmain.php'); include('./crafting/transforms.php'); craftingmain(); edittransform(); break; + case 'createtransform': + include('./crafting/craftingmain.php'); + include('./crafting/transforms.php'); + craftingmain(); + createtransform(); + break; + case 'deletetransform': + include('./crafting/craftingmain.php'); + include('./crafting/transforms.php'); + craftingmain(); + deletetransform(); + break; case 'process': include('./crafting/craftingmain.php'); include('./crafting/process.php'); @@ -392,31 +410,46 @@ default: echo '<p class="error">shouldn\'t reach this!</p>'; } - }else{ + } + else + { echo '<div class="main">'; echo "Server Information:<br/>\n"; - exec("ps -eo user,etime,%mem,comm|grep psserver", $info); - if (count($info) == 0){ - echo '<p class="error">ERROR: psserver does not appear to be running</p>'; - }else{ - foreach ($info as $i){ - echo $i."<br/>\n"; - } + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + echo "cannot display server status on Windows hosts."; } - echo "NPC Client Information:<br/>\n"; - unset($info); - exec("ps -eo user,etime,%mem,comm|grep psnpcclient", $info); - if (count($info) == 0){ - echo '<p class="error">ERROR: npcclient does not appear to be running</p>'; - }else{ - foreach ($info as $i){ - echo $i."<br/>\n"; - } + else + { + exec("ps -eo user,etime,%mem,comm|grep psserver", $info); + if (count($info) == 0) + { + echo '<p class="error">ERROR: psserver does not appear to be running</p>'; + } + else + { + foreach ($info as $i) + { + echo $i."<br/>\n"; + } + } + echo "NPC Client Information:<br/>\n"; + unset($info); + exec("ps -eo user,etime,%mem,comm|grep psnpcclient", $info); + if (count($info) == 0) + { + echo '<p class="error">ERROR: npcclient does not appear to be running</p>'; + } + else + { + foreach ($info as $i){ + echo $i."<br/>\n"; + } + } + echo "Server Load:<br/>\n"; + echo exec("uptime")."<br/>\n"; + echo "Mysql Status:<br/>\n"; + echo exec("mysqladmin status")."<br/>\n"; } - echo "Server Load:<br/>\n"; - echo exec("uptime")."<br/>\n"; - echo "Mysql Status:<br/>\n"; - echo exec("mysqladmin status")."<br/>\n"; } echo "</div><hr/>This is Debugging Information Only: ".($_SESSION['totalq']); unset($_SESSION['totalq']); Modified: www/webconsole-new/items/createitem.php =================================================================== --- www/webconsole-new/items/createitem.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/createitem.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function createitem(){ if (checkaccess('items', 'create')){ if (isset($_GET['commit']) && isset($_POST['name'])){ @@ -54,17 +54,17 @@ $cols = $cols . ', decay_rate'; $values = $values . ", '$decay_rate'"; } - if (isset($_POST['item_skill_id_1'])){ + if (isset($_POST['item_skill_id_1']) && trim($_POST['item_skill_id_1']) != ""){ $item_skill_id_1 = mysql_real_escape_string($_POST['item_skill_id_1']); $cols = $cols . ', item_skill_id_1'; $values = $values . ", '$item_skill_id_1'"; } - if (isset($_POST['item_skill_id_2'])){ + if (isset($_POST['item_skill_id_2']) && trim($_POST['item_skill_id_2']) != ""){ $item_skill_id_2 = mysql_real_escape_string($_POST['item_skill_id_2']); $cols = $cols . ', item_skill_id_2'; $values = $values . ", '$item_skill_id_2'"; } - if (isset($_POST['item_skill_id_3'])){ + if (isset($_POST['item_skill_id_3']) && trim($_POST['item_skill_id_3']) != ""){ $item_skill_id_3 = mysql_real_escape_string($_POST['item_skill_id_3']); $cols = $cols . ', item_skill_id_3'; $values = $values . ", '$item_skill_id_3'"; @@ -84,62 +84,62 @@ $cols = $cols . ', item_bonus_3_attr'; $values = $values . ", '$item_bonus_3_attr'"; } - if (isset($_POST['item_bonus_1_max'])){ + if (isset($_POST['item_bonus_1_max']) && trim($_POST['item_bonus_1_max']) != ""){ $item_bonus_1_max = mysql_real_escape_string($_POST['item_bonus_1_max']); $cols = $cols . ', item_bonus_1_max'; $values = $values . ", '$item_bonus_1_max'"; } - if (isset($_POST['item_bonus_2_max'])){ + if (isset($_POST['item_bonus_2_max']) && trim($_POST['item_bonus_2_max']) != ""){ $item_bonus_2_max = mysql_real_escape_string($_POST['item_bonus_2_max']); $cols = $cols . ', item_bonus_2_max'; $values = $values . ", '$item_bonus_2_max'"; } - if (isset($_POST['item_bonus_3_max'])){ + if (isset($_POST['item_bonus_3_max']) && trim($_POST['item_bonus_3_max']) != ""){ $item_bonus_3_max = mysql_real_escape_string($_POST['item_bonus_3_max']); $cols = $cols . ', item_bonus_3_max'; $values = $values . ", '$item_bonus_3_max'"; } - if (isset($_POST['dmg_slash'])){ + if (isset($_POST['dmg_slash']) && trim($_POST['dmg_slash']) != ""){ $dmg_slash = mysql_real_escape_string($_POST['dmg_slash']); $cols = $cols . ', dmg_slash'; $values = $values . ", '$dmg_slash'"; } - if (isset($_POST['dmg_blunt'])){ + if (isset($_POST['dmg_blunt']) && trim($_POST['dmg_blunt']) != ""){ $dmg_blunt = mysql_real_escape_string($_POST['dmg_blunt']); $cols = $cols . ', dmg_blunt'; - $values = $values . ", '$smg_blunt'"; + $values = $values . ", '$dmg_blunt'"; } - if (isset($_POST['dmg_pierce'])){ + if (isset($_POST['dmg_pierce']) && trim($_POST['dmg_pierce']) != ""){ $dmg_pierce = mysql_real_escape_string($_POST['dmg_pierce']); $cols = $cols . ', dmg_pierce'; $values = $values . ", '$dmg_pierce'"; } - if (isset($_POST['weapon_speed'])){ + if (isset($_POST['weapon_speed']) && trim($_POST['weapon_speed']) != ""){ $weapon_speed = mysql_real_escape_string($_POST['weapon_speed']); $cols = $cols . ', weapon_speed'; $values = $values . ", '$weapon_speed'"; } - if (isset($_POST['weapon_penetration'])){ + if (isset($_POST['weapon_penetration']) && trim($_POST['weapon_penetration']) != ""){ $weapon_penetration = mysql_real_escape_string($_POST['weapon_penetration']); $cols = $cols . ', weapon_penetration'; $values = $values . ", '$weapon_penetration'"; } - if (isset($_POST['weapon_block_targeted'])){ + if (isset($_POST['weapon_block_targeted']) && trim($_POST['weapon_block_targeted']) != ""){ $weapon_block_targeted = mysql_real_escape_string($_POST['weapon_block_targeted']); $cols = $cols . ', weapon_block_targeted'; $values = $values . ", '$weapon_block_targeted'"; } - if (isset($_POST['weapon_block_untargeted'])){ + if (isset($_POST['weapon_block_untargeted']) && trim($_POST['weapon_block_untargeted']) != ""){ $weapon_block_untargeted = mysql_real_escape_string($_POST['weapon_block_untargeted']); $cols = $cols . ', weapon_block_untargeted'; $values = $values . ", '$weapon_block_untargeted'"; } - if (isset($_POST['weapon_counterblock'])){ + if (isset($_POST['weapon_counterblock']) && trim($_POST['weapon_counterblock']) != ""){ $weapon_counterblock = mysql_real_escape_string($_POST['weapon_counterblock']); $cols = $cols . ', weapon_counterblock'; $values = $values . ", '$weapon_counterblock'"; } - if (isset($_POST['armor_hardness'])){ + if (isset($_POST['armor_hardness']) && trim($_POST['armor_hardness']) != ""){ $armor_hardness = mysql_real_escape_string($_POST['armor_hardness']); $cols = $cols . ', armor_hardness'; $values = $values . ", '$armor_hardness'"; @@ -189,7 +189,7 @@ $cols = $cols . ', requirement_1_name'; $values = $values . ", '$requirement_1_name'"; } - if (isset($_POST['requirement_1_value'])){ + if (isset($_POST['requirement_1_value']) && trim($_POST['requirement_1_value']) != ""){ $requirement_1_value = mysql_real_escape_string($_POST['requirement_1_value']); $cols = $cols . ', requirement_1_value'; $values = $values . ", '$requirement_1_value'"; @@ -199,7 +199,7 @@ $cols = $cols . ', requirement_2_name'; $values = $values . ", '$requirement_2_name'"; } - if (isset($_POST['requirement_2_value'])){ + if (isset($_POST['requirement_2_value']) && trim($_POST['requirement_2_value']) != ""){ $requirement_2_value = mysql_real_escape_string($_POST['requirement_2_value']); $cols = $cols . ', requirement_2_value'; $values = $values . ", '$requirement_2_value'"; @@ -209,7 +209,7 @@ $cols = $cols . ', requirement_3_name'; $values = $values . ", '$requirement_3_name'"; } - if (isset($_POST['requirement_3_value'])){ + if (isset($_POST['requirement_3_value']) && trim($_POST['requirement_3_value']) != ""){ $requirement_3_value = mysql_real_escape_string($_POST['requirement_3_value']); $cols = $cols . ', requirement_3_value'; $values = $values . ", '$requirement_3_value'"; @@ -224,7 +224,7 @@ $cols = $cols . ', spell_id_on_hit'; $values = $values . ", '$spell_id_on_hit'"; } - if (isset($_POST['spell_on_hit_prob'])){ + if (isset($_POST['spell_on_hit_prob']) && trim($_POST['spell_on_hit_prob']) != ""){ $spell_on_hit_prob = mysql_real_escape_string($_POST['spell_on_hit_prob']); $cols = $cols . ', spell_on_hit_prob'; $values = $values . ", '$spell_on_hit_prob'"; @@ -249,21 +249,16 @@ $cols = $cols . ', item_anim_id'; $values = $values . ", '$item_anim_id'"; } - if (isset($_POST['prg_evt_equip'])){ - $prg_evt_equip = mysql_real_escape_string($_POST['prg_evt_equip']); - $cols = $cols . ', prg_evt_equip'; - $values = $values . ", '$prg_evt_equip'"; + if (isset($_POST['equip_script'])){ + $equip_script = mysql_real_escape_string($_POST['equip_script']); + $cols = $cols . ', equip_script'; + $values = $values . ", '$equip_script'"; } - if (isset($_POST['prg_evt_unequip'])){ - $prg_evt_unequip = mysql_real_escape_string($_POST['prg_evt_unequip']); - $cols = $cols . ', prg_evt_unequip'; - $values = $values . ", '$prg_evt_unequip'"; + if (isset($_POST['consume_script'])){ + $consume_script = mysql_real_escape_string($_POST['consume_script']); + $cols = $cols . ', consume_script'; + $values = $values . ", '$consume_script'"; } - if (isset($_POST['prg_evt_consume'])){ - $prg_evt_consume = mysql_real_escape_string($_POST['prg_evt_consume']); - $cols = $cols . ', prg_evt_consume'; - $values = $values . ", '$prg_evt_consume'"; - } if (isset($_POST['creative_definition'])){ $creative_definition = mysql_real_escape_string($_POST['creative_definition']); $cols = $cols . ', creative_definition'; @@ -274,7 +269,7 @@ $cols = $cols . ', max_charges'; $values = $values . ", '$max_charges'"; } - if (isset($_POST['weapon_range'])){ + if (isset($_POST['weapon_range']) && trim($_POST['weapon_range']) != ""){ $weapon_range = mysql_real_escape_string($_POST['weapon_range']); $cols = $cols . ', weapon_range'; $values = $values . ", '$weapon_range'"; @@ -349,9 +344,8 @@ echo '<tr><td>spell_feature_timing</td><td><input type="text" name="spell_feature_timing" /></td></tr>'; echo '<tr><td>item_anim_id</td><td><input type="text" name="item_anim_id" /></td></tr>'; $script_result = PrepSelect('scripts'); - echo '<tr><td>prg_evt_equip</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_equip' , '', 'true').'</td></tr>'; - echo '<tr><td>prg_evt_unequip</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_unequip' , '', 'true').'</td></tr>'; - echo '<tr><td>prg_evt_consume</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_consume' , '', 'true').'</td></tr>'; + echo '<tr><td>equip_script</td><td>'.DrawSelectBox('scripts', $script_result, 'equip_script' , '', 'true').'</td></tr>'; + echo '<tr><td>consume_script</td><td>'.DrawSelectBox('scripts', $script_result, 'consume_script' , '', 'true').'</td></tr>'; echo '<tr><td>creative_definition</td><td>'; echo '<textarea name="creative_definition" rows="6" cols="50"></textarea>'; echo '</td></tr>'; Modified: www/webconsole-new/items/deletecategory.php =================================================================== --- www/webconsole-new/items/deletecategory.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/deletecategory.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function deletecategory(){ if (checkaccess('items', 'delete')){ if (isset($_GET['id'])){ Modified: www/webconsole-new/items/deleteitem.php =================================================================== --- www/webconsole-new/items/deleteitem.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/deleteitem.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function deleteitem(){ if (checkaccess('items', 'delete')){ if (isset($_GET['commit']) && isset($_POST['passd'])){ @@ -17,13 +17,13 @@ <SCRIPT language="javascript"> document.location = "index.php?do=listitems"; </script> -<? +<?php }else{ echo '<p class="error">Password check failed - Did Not Delete item</p>'; include('./items/listitems.php'); $_GET['item'] = $id; listitems(); - return; + return; } }else{ $id = mysql_real_escape_string($_GET['item']); Modified: www/webconsole-new/items/editcategory.php =================================================================== --- www/webconsole-new/items/editcategory.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/editcategory.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function editcategory(){ if (checkaccess('items', 'create')){ if (isset($_GET['commit'])){ @@ -10,7 +10,7 @@ <SCRIPT language="javascript"> document.location = "index.php?do=editcategory"; </script> -<? +<?php exit; }else{ $query = "SELECT category_id, name FROM item_categories ORDER BY name ASC"; Modified: www/webconsole-new/items/edititem.php =================================================================== --- www/webconsole-new/items/edititem.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/edititem.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function edititem(){ if (checkaccess('items','edit')){ if (!isset($_GET['commit'])){ @@ -76,9 +76,8 @@ echo '<tr><td>spell_feature_timing</td><td><input type="text" name="spell_feature_timing" value="'.$row['spell_feature_timing'].'" /></td></tr>'; echo '<tr><td>item_anim_id</td><td><input type="text" name="item_anim_id" value="'.$row['item_anim_id'].'"/></td></tr>'; $script_result = PrepSelect('scripts'); - echo '<tr><td>prg_evt_equip</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_equip' , $row['prg_evt_equip'], 'true').'</td></tr>'; - echo '<tr><td>prg_evt_unequip</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_unequip' , $row['prg_evt_unequip'], 'true').'</td></tr>'; - echo '<tr><td>prg_evt_consume</td><td>'.DrawSelectBox('scripts', $script_result, 'prg_evt_consume' , $row['prg_evt_consume'], 'true').'</td></tr>'; + echo '<tr><td>equip_script</td><td>'.DrawSelectBox('scripts', $script_result, 'equip_script' , $row['equip_script'], 'true').'</td></tr>'; + echo '<tr><td>consume_script</td><td>'.DrawSelectBox('scripts', $script_result, 'consume_script' , $row['consume_script'], 'true').'</td></tr>'; echo '<tr><td>creative_definition</td><td>'; if (strpos($row['flags'], "CREATIVE") !== FALSE){ echo '<textarea name="creative_definition" rows="6" cols="50">'.$row['creative_definition'].'</textarea>'; @@ -198,12 +197,10 @@ $query = $query . "spell_feature_timing='$spell_feature_timing', "; $item_anim_id = mysql_real_escape_string($_POST['item_anim_id']); $query = $query . "item_anim_id='$item_anim_id', "; - $prg_evt_equip = mysql_real_escape_string($_POST['prg_evt_equip']); - $query = $query . "prg_evt_equip='$prg_evt_equip', "; - $prg_evt_unequip = mysql_real_escape_string($_POST['prg_evt_unequip']); - $query = $query . "prg_evt_unequip='$prg_evt_unequip', "; - $prg_evt_consume = mysql_real_escape_string($_POST['prg_evt_consume']); - $query = $query . "prg_evt_consume='$prg_evt_consume', "; + $equip_script = mysql_real_escape_string($_POST['equip_script']); + $query = $query . "equip_script='$equip_script', "; + $consume_script = mysql_real_escape_string($_POST['consume_script']); + $query = $query . "consume_script='$consume_script', "; $creative_definition = mysql_real_escape_string($_POST['creative_definition']); $query = $query . "creative_definition='$creative_definition', "; $max_charges = mysql_real_escape_string($_POST['max_charges']); @@ -214,9 +211,9 @@ $result = mysql_query2($query); ?> <SCRIPT language="javascript"> - document.location = "index.php?do=listitems&item=<?echo $id?>"; + document.location = "index.php?do=listitems&item=<?php echo $id?>"; </script> -<? +<?php exit; } }else{ Modified: www/webconsole-new/items/itemmain.php =================================================================== --- www/webconsole-new/items/itemmain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/itemmain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function itemmain(){ if (checkaccess('items', 'read')){ echo '<div class="menu_left">'."\n"; Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/listitems.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listitems(){ if(checkaccess('items', 'read')){ $query = 'SELECT category_id, name FROM item_categories ORDER BY name'; Modified: www/webconsole-new/items/locateitem.php =================================================================== --- www/webconsole-new/items/locateitem.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/items/locateitem.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,13 +1,13 @@ -<? +<?php function locateitem(){ if (checkaccess('items', 'read')){ if (isset($_POST['search'])){ if ($_POST['search'] == "Find Items"){ echo 'Finding item'; $itemstat = mysql_real_escape_string($_POST['itemid']); - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE item_stats_id_standard=$itemstat"; + $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE item_stats_id_standard=$itemstat"; $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>Instance</th><th>Flags</th></tr>'."\n"; + echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th<th>Instance</th><th>Flags</th></tr>'."\n"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo '<tr><td>'.$row['id'].'</td>'; echo '<td>'.$row['name'].'</td>'; @@ -17,19 +17,21 @@ echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; echo '<td>'.$row['stack_count'].'</td>'; echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td><td>'.$row['loc_instance'].'</td>'; + echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; + echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; + echo '<td>'.$row['loc_instance'].'</td>'; echo '<td>'.$row['flags'].'</td></tr>'."\n"; } echo '</table>'; }else if ($_POST['search'] == "Droped Items"){ echo 'Droped Items'; - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.char_id_owner=0"; + $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.char_id_owner=0"; if ($_POST['sectorid'] != ''){ $sectorid = mysql_real_escape_string($_POST['sectorid']); $query = $query . " AND i.loc_sector_id='$sectorid'"; } $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>Instance</th><th>Flags</th></tr>'."\n"; + echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th><th>Instance</th><th>Flags</th></tr>'."\n"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo '<tr><td>'.$row['id'].'</td>'; echo '<td>'.$row['name'].'</td>'; @@ -39,15 +41,17 @@ echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; echo '<td>'.$row['stack_count'].'</td>'; echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td><td>'.$row['loc_instance'].'</td>'; + echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; + echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; + echo '<td>'.$row['loc_instance'].'</td>'; echo '<td>'.$row['flags'].'</td></tr>'."\n"; } echo '</table>'; }else if ($_POST['search'] == "Find Instance"){ $iid = mysql_real_escape_string($_POST['iid']); - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.id=$iid"; + $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.id='$iid'"; $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>Instance</th><th>Flags</th></tr>'."\n"; + echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th><th>Instance</th><th>Flags</th></tr>'."\n"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo '<tr><td>'.$row['id'].'</td>'; echo '<td>'.$row['name'].'</td>'; @@ -57,7 +61,9 @@ echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; echo '<td>'.$row['stack_count'].'</td>'; echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td><td>'.$row['loc_instance'].'</td>'; + echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; + echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; + echo '<td>'.$row['loc_instance'].'</td>'; echo '<td>'.$row['flags'].'</td></tr>'."\n"; } echo '</table>'; Modified: www/webconsole-new/npcs/ka_scripts.php =================================================================== --- www/webconsole-new/npcs/ka_scripts.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/ka_scripts.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function ka_scripts(){ if (checkaccess('npcs', 'read')){ if (!isset($_GET['sub'])){ Modified: www/webconsole-new/npcs/ka_trigger.php =================================================================== --- www/webconsole-new/npcs/ka_trigger.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/ka_trigger.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function ka_trigger(){ if (checkaccess('npcs', 'read')){ $query = "SELECT DISTINCT area FROM npc_triggers ORDER BY area"; Modified: www/webconsole-new/npcs/listlootrules.php =================================================================== --- www/webconsole-new/npcs/listlootrules.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/listlootrules.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listlootrules(){ if (checkaccess('npcs', 'read')){ $query = 'SELECT id, name FROM loot_rules'; Modified: www/webconsole-new/npcs/listmerchant.php =================================================================== --- www/webconsole-new/npcs/listmerchant.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/listmerchant.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listmerchant(){ if (checkaccess('npcs', 'read')){ $query = 'SELECT category_id, name FROM item_categories'; Modified: www/webconsole-new/npcs/listnpcs.php =================================================================== --- www/webconsole-new/npcs/listnpcs.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/listnpcs.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listnpcs($a, $b = NULL){ if (checkaccess('npcs', 'read')){ echo '<table border="1">'; Modified: www/webconsole-new/npcs/listspawnrules.php =================================================================== --- www/webconsole-new/npcs/listspawnrules.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/listspawnrules.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listspawnrules(){ if (checkaccess('npcs', 'read')){ $query = 'SELECT * FROM npc_spawn_rules'; @@ -15,7 +15,7 @@ $id = $c_row['id']; $chars[$rule][$id] = $c_row['name']; } - $query = "SELECT r.id, r.npc_spawn_rule_id, r.x1, r.y1, r.z1, r.x2, r.y2, r.z2, r.cstr_id_spawn_sector, r.range_type_code, s.name FROM npc_spawn_ranges AS r LEFT JOIN sectors AS s ON r.cstr_id_spawn_sector=s.id"; + $query = "SELECT r.id, r.npc_spawn_rule_id, r.x1, r.y1, r.z1, r.x2, r.y2, r.z2, r.sector_id, r.range_type_code, s.name FROM npc_spawn_ranges AS r LEFT JOIN sectors AS s ON r.sector_id=s.id"; $r_result = mysql_query2($query); while ($r_row = mysql_fetch_array($r_result, MYSQL_ASSOC)){ $rule = $r_row['npc_spawn_rule_id']; @@ -27,7 +27,7 @@ $Rules[$rule][$id]['x2'] = $r_row['x2']; $Rules[$rule][$id]['y2'] = $r_row['y2']; $Rules[$rule][$id]['z2'] = $r_row['z2']; - $Rules[$rule][$id]['sector'] = $r_row['cstr_id_spawn_sector']; + $Rules[$rule][$id]['sector'] = $r_row['sector_id']; $Rules[$rule][$id]['sname'] = $r_row['name']; $Rules[$rule][$id]['code'] = $r_row['range_type_code']; } @@ -94,7 +94,7 @@ echo '<td><input type="text" name="x2" size="4" /></td>'; echo '<td><input type="text" name="y2" size="4" /></td>'; echo '<td><input type="text" name="z2" size="4" /></td>'; - echo '<td>'.DrawSelectBox('sectorid', $Sectors, 'cstr_id_spawn_sector', '').'</td>'; + echo '<td>'.DrawSelectBox('sectorid', $Sectors, 'sector_id', '').'</td>'; echo '<td><select name="code"><option value="A">Area</option><option value="L">Line</option></select></td>'; echo '</tr>'; echo '</table><input type="submit" name="commit" value="New Range" /></form>'; @@ -198,9 +198,9 @@ $x2 = mysql_real_escape_string($_POST['x2']); $y2 = mysql_real_escape_string($_POST['y2']); $z2 = mysql_real_escape_string($_POST['z2']); - $cstr_id_spawn_sector = mysql_real_escape_string($_POST['cstr_id_spawn_sector']); + $sector_id = mysql_real_escape_string($_POST['sector_id']); $range_type_code = mysql_real_escape_string($_POST['code']); - $query = "INSERT INTO npc_spawn_ranges (npc_spawn_rule_id, x1, y1, z1, x2, y2, z2, cstr_id_spawn_sector, range_type_code) VALUES ('$id', '$x1', '$y1', '$z1', '$x2', '$y2', '$z2', '$cstr_id_spawn_sector', '$range_type_code')"; + $query = "INSERT INTO npc_spawn_ranges (npc_spawn_rule_id, x1, y1, z1, x2, y2, z2, sector_id, range_type_code) VALUES ('$id', '$x1', '$y1', '$z1', '$x2', '$y2', '$z2', '$sector_id', '$range_type_code')"; $result = mysql_query2($query); echo '<p class="error">Update Successful</p>'; listspawnrules(); Modified: www/webconsole-new/npcs/listtrainer.php =================================================================== --- www/webconsole-new/npcs/listtrainer.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/listtrainer.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listtrainer(){ if (checkaccess('npcs', 'read')){ $query = "SELECT skill_id, name FROM skills"; Modified: www/webconsole-new/npcs/npc_details.php =================================================================== --- www/webconsole-new/npcs/npc_details.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/npc_details.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function npc_main(){ if (checkaccess('npcs', 'edit')){ if (isset($_GET['npc_id'])){ Modified: www/webconsole-new/npcs/npc_search.php =================================================================== --- www/webconsole-new/npcs/npc_search.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/npc_search.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function npc_search(){ if (checkaccess('npcs', 'read')){ if (isset($_POST['commit'])){ Modified: www/webconsole-new/npcs/npcmain.php =================================================================== --- www/webconsole-new/npcs/npcmain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/npcmain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php //This is the main quest page - gives options for displaying/editing quests function npcmain(){ Modified: www/webconsole-new/npcs/synonyms.php =================================================================== --- www/webconsole-new/npcs/synonyms.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/npcs/synonyms.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function synonyms(){ if (checkaccess('npcs', 'read')){ if (isset($_POST['commit'])){ Modified: www/webconsole-new/quests/createquest.php =================================================================== --- www/webconsole-new/quests/createquest.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/quests/createquest.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function createquest(){ if(checkaccess('quests','create')){ if(!isset($_GET['commit'])){ @@ -28,7 +28,7 @@ <SCRIPT language="javascript"> document.location = "index.php?do=editquest&id=<?echo $id?>"; </script> -<? +<?php exit; } }else{ Modified: www/webconsole-new/quests/deletequest.php =================================================================== --- www/webconsole-new/quests/deletequest.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/quests/deletequest.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function deletequest(){ if (checkaccess('quests', 'delete')){ if (!isset($_GET['id'])){ Modified: www/webconsole-new/quests/editquest.php =================================================================== --- www/webconsole-new/quests/editquest.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/quests/editquest.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function editquest(){ if(checkaccess('quests', 'read')){ if(!isset($_GET['id'])){ Modified: www/webconsole-new/quests/listquests.php =================================================================== --- www/webconsole-new/quests/listquests.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/quests/listquests.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listquests(){ if(checkaccess('quests', 'read')){ $query = 'SELECT id, name, category, player_lockout_time, quest_lockout_time, prerequisite FROM quests'; Modified: www/webconsole-new/quests/questmain.php =================================================================== --- www/webconsole-new/quests/questmain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/quests/questmain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php //This is the main quest page - gives options for displaying/editing quests function questmain(){ Modified: www/webconsole-new/rules/factions.php =================================================================== --- www/webconsole-new/rules/factions.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/factions.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,12 +1,13 @@ -<? +<?php function listfactions(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit']) && checkaccess('rules', 'edit')){ if ($_POST['commit'] == "Commit Edit"){ $id = mysql_real_escape_string($_POST['id']); $faction_description = mysql_real_escape_string($_POST['faction_description']); + $faction_character = mysql_real_escape_string($_POST['faction_character']); $faction_weight = mysql_real_escape_string($_POST['faction_weight']); - $query = "UPDATE factions SET faction_description='$faction_description', faction_weight='$faction_weight' WHERE id='$id'"; + $query = "UPDATE factions SET faction_description='$faction_description', faction_character='$faction_character', faction_weight='$faction_weight' WHERE id='$id'"; $result = mysql_query2($query); unset($_POST); echo '<p class="error">Update Successful</p>'; @@ -29,6 +30,7 @@ echo '<table border="1"><tr><th>Field</th><th>Value</th></tr>'; echo '<tr><td>Name:</td><td>'.$row['faction_name'].'</td></tr>'; echo '<tr><td>Description:</td><td><textarea name="faction_description" row="4" cols="40">'.$row['faction_description'].'</textarea></td></tr>'; + echo '<tr><td>Character:</td><td><textarea name="faction_character" row="4" cols="40">'.$row['faction_character'].'</textarea></td></tr>'; echo '<tr><td>Weight:</td><td><input type="text" name="faction_weight" value="'.$row['faction_weight'].'" /></td></tr>'; echo '</table>'; echo '<input type="submit" name="commit" value="Commit Edit" />'; @@ -45,7 +47,7 @@ if (mysql_numrows($result) == 0 ){ echo 'No Skills Found!'; } - echo '<table border="1"><tr><th>Faction</th><th>Description</th><th>Weight</th>'; + echo '<table border="1"><tr><th>Faction</th><th>Description</th><th>Character</th><th>Weight</th>'; if (checkaccess('rules', 'edit')){ echo '<th>Actions</th>'; } @@ -54,6 +56,7 @@ echo '<tr>'; echo '<td>'.$row['faction_name'].'</td>'; echo '<td>'.$row['faction_description'].'</td>'; + echo '<td>'.$row['faction_character'].'</td>'; echo '<td>'.$row['faction_weight'].'</td>'; if (checkaccess('rules', 'edit')){ echo '<td>'; Modified: www/webconsole-new/rules/glyphs.php =================================================================== --- www/webconsole-new/rules/glyphs.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/glyphs.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function glyphs_used(){ if (checkaccess('rules', 'read')){ $query = "SELECT i.name, g.spell_id, s.name AS spell FROM item_stats AS i LEFT JOIN spell_glyphs AS g ON i.id=g.item_id LEFT JOIN spells AS s ON s.id=g.spell_id WHERE i.category_id='5' ORDER BY name"; Modified: www/webconsole-new/rules/locations.php =================================================================== --- www/webconsole-new/rules/locations.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/locations.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listlocations(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit']) && checkaccess('rules', 'edit')){ Modified: www/webconsole-new/rules/raceinfo.php =================================================================== --- www/webconsole-new/rules/raceinfo.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/raceinfo.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function raceinfo(){ if (checkaccess('rules','read')){ if (checkaccess('rules', 'edit') && isset($_POST['commit'])){ Modified: www/webconsole-new/rules/resources.php =================================================================== --- www/webconsole-new/rules/resources.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/resources.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listresources(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit']) && (checkaccess('rules', 'edit'))){ Modified: www/webconsole-new/rules/rulesmain.php =================================================================== --- www/webconsole-new/rules/rulesmain.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/rulesmain.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function rulesmain(){ if (checkaccess('rules', 'read')){ echo '<div class="menu_left">'; Modified: www/webconsole-new/rules/scripts.php =================================================================== --- www/webconsole-new/rules/scripts.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/scripts.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function rule_scripts(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit'])){ Modified: www/webconsole-new/rules/skills.php =================================================================== --- www/webconsole-new/rules/skills.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/skills.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function listskills(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit']) && checkaccess('rules', 'edit')){ Modified: www/webconsole-new/rules/spells.php =================================================================== --- www/webconsole-new/rules/spells.php 2009-04-10 16:36:56 UTC (rev 3434) +++ www/webconsole-new/rules/spells.php 2009-04-10 20:27:21 UTC (rev 3435) @@ -1,4 +1,4 @@ -<? +<?php function spells(){ if (checkaccess('rules', 'read')){ if (checkaccess('rules', 'delete') && isset($_POST['commit']) && isset($_GET['way'])){ @@ -67,7 +67,7 @@ if (checkaccess('rules', 'read')){ if (isset($_GET['id'])){ $id = mysql_real_escape_string($_GET['id']); - $query = "SELECT s.name, s.way_id, s.realm, s.caster_effect, s.target_effect, s.spell_description, s.offensive, s.progression_event, s.saved_progression_event, s.saving_throw, s.saving_throw_value, s.max_power, s.npc_spell_power, s.target_type, s.image_name, s.cstr_npc_spell_category AS cstr FROM spells AS s WHERE s.id='$id'"; + $query = "SELECT s.name, s.way_id, s.realm, s.casting_effect, s.spell_description, s.offensive, s.outcome, s.max_power, s.npc_spell_power, s.target_type, s.exclude_target, s.cast_duration, s.range, s.aoe_radius, s.aoe_angle, s.image_name, s.cstr_npc_spell_category AS cstr FROM spells AS s WHERE s.id='$id'"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); if (checkaccess('rules', 'edit')){ @@ -75,27 +75,28 @@ $name = mysql_real_escape_string($_POST['name']); $way_id = mysql_real_escape_string($_POST['way_id']); $realm = mysql_real_escape_string($_POST['realm']); - $caster_effect = mysql_real_escape_string($_POST['caster... [truncated message content] |
From: <wel...@us...> - 2009-04-17 14:02:06
|
Revision: 3487 http://planeshift.svn.sourceforge.net/planeshift/?rev=3487&view=rev Author: weltall2 Date: 2009-04-17 14:02:00 +0000 (Fri, 17 Apr 2009) Log Message: ----------- various bug fixes. A lot of crafting expansions: including combinations editing process/pattern/combination deletion, merged the quest validator in the webconsole patch by ravna Modified Paths: -------------- www/webconsole-new/crafting/craftingmain.php www/webconsole-new/crafting/patterns.php www/webconsole-new/crafting/process.php www/webconsole-new/index.php www/webconsole-new/quests/editquest.php www/webconsole-new/quests/listquests.php Added Paths: ----------- www/webconsole-new/crafting/combines.php www/webconsole-new/quests/validatequest.php Added: www/webconsole-new/crafting/combines.php =================================================================== --- www/webconsole-new/crafting/combines.php (rev 0) +++ www/webconsole-new/crafting/combines.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -0,0 +1,254 @@ +<?php + +function editcombine() +{ + if (checkaccess('crafting','edit') && isset($_POST['commit']) && $_POST['commit'] == "Edit Combine") + { + for ($i = 0; $i < count($_POST['id']); $i++) + { + $id = mysql_real_escape_string($_POST['id'][$i]); + $pattern_id = mysql_real_escape_string($_POST['pattern_id']); + $result_id = mysql_real_escape_string($_POST['result_id']); + $result_qty = mysql_real_escape_string($_POST['result_qty']); + $item_id = mysql_real_escape_string($_POST['item_id'][$i]); + $min_qty = mysql_real_escape_string($_POST['min_qty'][$i]); + $max_qty = mysql_real_escape_string($_POST['max_qty'][$i]); + $description = mysql_real_escape_string($_POST['description'][$i]); + + if ($item_id != "") + { + if ($id != 0) + { + $query = "UPDATE trade_combinations SET result_id='$result_id', result_qty='$result_qty', item_id='$item_id', min_qty='$min_qty', max_qty='$max_qty', description='$description' WHERE id='$id'"; + mysql_query2($query); + } + else // someone added this entry. + { + $query = "INSERT INTO trade_combinations (pattern_id, result_id, result_qty, item_id, min_qty, max_qty, description) VALUES ('$pattern_id', '$result_id', '$result_qty', '$item_id', '$min_qty', '$max_qty', '$description')"; + mysql_query2($query); + } + } + else + { + if ($id != 0) + { + $query = "DELETE FROM trade_combinations WHERE id='$id' LIMIT 1"; + mysql_query2($query); + } + } + } + echo '<p class="error">Combination was succesfully updated.</p>'; + unset($_POST); + if (isset($_GET['id'])) + { + include('./crafting/patterns.php'); + editpattern(); // ID is set to pattern_id, so this method will list the info for the pattern which combination we edited. + } + else + { + // can't do anyhting if ID is not set. + } + } + elseif (checkaccess('crafting','edit') && isset($_GET['id']) && isset($_GET['pattern_id'])) + { + $id = mysql_real_escape_string($_GET['id']); + $query = "SELECT id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE result_id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) < 1) + { + echo '<p class="error">No combinations were found with result id'.$id.'</p>'; + return; + } + + $items_results = PrepSelect('items'); + $pattern_name = ""; + while ($row=mysql_fetch_row($items_results)){ + if ($row[0] == $_GET['id']) + { + $result_item = $row[1]; + } + } + $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletecombine&pattern_id='.$_GET['pattern_id'].'&result_id='.$id.'">Delete Combination</a>' : ""); + $row = mysql_fetch_array($result); + echo '<p class="bold">Edit Combine</p>'."\n"; + echo 'If you set any item to "NONE", it will be removed from the combination.'; + echo '<form action="./index.php?do=editcombine&id='.$_GET['pattern_id'].'" method="post" /><table>'; // we set pattern_id here instead of combination ID, so we can redirect people back to where they came from. + echo '<tr><td>Pattern id</td><td><input type="hidden" name="pattern_id" value="'.$_GET['pattern_id'].'" />'.$_GET['pattern_id'].'</td></tr>'; + echo '<tr><td>Result Item</td><td><input type="hidden" name="result_id" value="'.$id.'" />'.$result_item.'</td></tr>'; + echo '<tr><td>Result Quantity</td><td><input type="text" name="result_qty" value="'.$row['result_qty'].'" /></td></tr>'; + do + { + echo '<tr><input type="hidden" name="id[]" value="'.$row['id'].'" /><td></td><td></td></tr>'; + echo '<tr><td>Input Item</td><td>'.DrawSelectBox('items', $items_results, 'item_id[]', $row['item_id'], true).'</td></tr>'; + echo '<tr><td>Minimum Quantity</td><td><input type="text" name="min_qty[]" value="'.$row['min_qty'].'" /></td></tr>'; + echo '<tr><td>Maximum Quantity</td><td><input type="text" name="max_qty[]" value="'.$row['max_qty'].'" /></td></tr>'; + echo '<tr><td>Description</td><td><input type="text" name="description[]" value="'.$row['description'].'" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + } while ($row = mysql_fetch_array($result)); + echo '<tr><td colspan="2">If you fill in the item below, it will be added to the combination.<input type="hidden" name="id[]" value="0" /></td></tr>'; + echo '<tr><td>Input Item</td><td>'.DrawSelectBox('items', $items_results, 'item_id[]', '', true).'</td></tr>'; // add 1 more row so we can add new lines. + echo '<tr><td>Minimum Quantity</td><td><input type="text" name="min_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Maximum Quantity</td><td><input type="text" name="max_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Description</td><td><input type="text" name="description[]" value="" /></td></tr>'; + + echo '<tr><td>'.$delete_text.'</td><td><input type=submit name="commit" value="Edit Combine"/></td></tr>'; + echo '</table></form>'."\n"; + } + else + { + echo '<p class="error">You do not have the proper rights to use this function, or made an invalid request.</p>'; + } +} + +function createcombine() +{ + if (checkaccess('crafting','create') && isset($_POST['commit']) && $_POST['commit'] == "Create Combine") + { // The user wants to submit data. + for ($i = 0; $i < count($_POST['item_id']); $i++) + { + $pattern_id = mysql_real_escape_string($_POST['pattern_id']); + $result_id = mysql_real_escape_string($_POST['result_id']); + $result_qty = mysql_real_escape_string($_POST['result_qty']); + $item_id = mysql_real_escape_string($_POST['item_id'][$i]); + $min_qty = mysql_real_escape_string($_POST['min_qty'][$i]); + $max_qty = mysql_real_escape_string($_POST['max_qty'][$i]); + $description = mysql_real_escape_string($_POST['description'][$i]); + + if ($item_id != "") // if this is "", the user has left this line empty because they didn't need it. + { + $query = "INSERT INTO trade_combinations (pattern_id, result_id, result_qty, item_id, min_qty, max_qty, description) VALUES ('$pattern_id', '$result_id', '$result_qty', '$item_id', '$min_qty', '$max_qty', '$description')"; + mysql_query2($query); + } + } + echo '<p class="error">Combination was succesfully added.</p>'; + unset($_POST); + if (isset($_GET['id'])) + { + include('./crafting/patterns.php'); + editpattern(); // ID is set to pattern_id, so this method will list the info for the pattern to which we added a combination. + } + } + elseif (checkaccess('crafting','create') && isset($_POST['add'])) // The user wants more input fields. + { + echo '<p class="bold">Create Combine</p>'."\n"; // new pattern + echo 'If you set any item to "NONE", it will not be added to the combination.'; + echo '<form action="./index.php?do=createcombine&id='.$_GET['id'].'" method="post" /><table>'; // we set pattern_id here so we can redirect people back to where they came from. + $items_results = PrepSelect('items'); + echo '<tr><td>Pattern id</td><td><input type="hidden" name="pattern_id" value="'.$_POST['pattern_id'].'" />'.$_POST['pattern_id'].'</td></tr>'; + echo '<tr><td>Result Item</td><td>'.DrawSelectBox('items', $items_results, 'result_id', $_POST['result_id'], false).'</</td></tr>'; + echo '<tr><td>Result Quantity</td><td><input type="text" name="result_qty" value="'.$_POST['result_qty'].'" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + for ($i = 0; $i < count($_POST['item_id']); $i++) // Show all previously entered values (if someone posted this form to increase the size. + { + echo '<tr><td>Input Item</td><td>'.DrawSelectBox('items', $items_results, 'item_id[]', $_POST['item_id'][$i], true).'</td></tr>'; + echo '<tr><td>Minimum Quantity</td><td><input type="text" name="min_qty[]" value="'.$_POST['min_qty'][$i].'" /></td></tr>'; + echo '<tr><td>Maximum Quantity</td><td><input type="text" name="max_qty[]" value="'.$_POST['max_qty'][$i].'" /></td></tr>'; + echo '<tr><td>Description</td><td><input type="text" name="description[]" value="'.$_POST['description'][$i].'" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + } + for ($i = 0; $i < $_POST['more_fields']; $i++) // add the additional fields. + { + echo '<tr><td>Input Item</td><td>'.DrawSelectBox('items', $items_results, 'item_id[]', '', true).'</td></tr>'; + echo '<tr><td>Minimum Quantity</td><td><input type="text" name="min_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Maximum Quantity</td><td><input type="text" name="max_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Description</td><td><input type="text" name="description[]" value="" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + } + echo '<tr><td colspan="2">Add <input type="text" name="more_fields" value="0"> more fields to this form <input type=submit name="add" value="add"/></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Combine"/></td></tr>'; + echo '</table></form>'."\n"; + } + elseif (checkaccess('crafting','create') && isset($_GET['pattern_id'])) + { + echo '<p class="bold">Create Combine</p>'."\n"; // new pattern + echo 'If you set any item to "NONE", it will not be added to the combination.'; + echo '<form action="./index.php?do=createcombine&id='.$_GET['pattern_id'].'" method="post" /><table>'; // we set pattern_id here so we can redirect people back to where they came from. + $items_results = PrepSelect('items'); + echo '<tr><td>Pattern id</td><td><input type="hidden" name="pattern_id" value="'.$_GET['pattern_id'].'" />'.$_GET['pattern_id'].'</td></tr>'; + echo '<tr><td>Result Item</td><td>'.DrawSelectBox('items', $items_results, 'result_id', '', false).'</</td></tr>'; + echo '<tr><td>Result Quantity</td><td><input type="text" name="result_qty" value="0" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + for ($i = 0; $i < 2; $i++) // form wasn't used before, show 2 fields (can't make a combine with less). + { + echo '<tr><td>Input Item</td><td>'.DrawSelectBox('items', $items_results, 'item_id[]', '', true).'</td></tr>'; + echo '<tr><td>Minimum Quantity</td><td><input type="text" name="min_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Maximum Quantity</td><td><input type="text" name="max_qty[]" value="0" /></td></tr>'; + echo '<tr><td>Description</td><td><input type="text" name="description[]" value="" /></td></tr>'; + echo '<tr><td></td><td></td></tr>'; + } + echo '<tr><td colspan="2">Add <input type="text" name="more_fields" value="0"> more fields to this form <input type=submit name="add" value="add"/></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Combine"/></td></tr>'; + echo '</table></form>'."\n"; + + } + else + { + echo '<p class="error">You do not have the proper rights to use this function, or made an invalid request.</p>'; + } +} + +function deletecombine() +{ + if (checkaccess('crafting','delete') && isset($_POST['submit']) && isset($_GET['id']) && isset($_GET['result_id'])) + { + if(!is_numeric($_GET['id']) && !is_numeric($_GET['result_id'])) + { + echo '<p class="error">Non-numeric ID provided, aborting.</p>'; + return; + } + $password = mysql_real_escape_string($_POST['passd']); + $username = mysql_real_escape_string($_SESSION['username']); + $query = "SELECT COUNT(username) FROM accounts WHERE username='$username' AND password=MD5('$password')"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if ($row[0] == 1) + { + $pattern_id = mysql_real_escape_string($_GET['id']); + $result_id = mysql_real_escape_string($_GET['result_id']); + $query = "DELETE FROM trade_combinations WHERE pattern_id='$pattern_id' AND result_id='$result_id'"; + mysql_query2($query); + echo '<p class="error">Combination was succesfully deleted.</p>'; + unset($_POST); + if (isset($_GET['id'])) + { + include('./crafting/patterns.php'); + editpattern(); // ID is set to pattern_id, so this method will list the info for the pattern to which we added a combination. + } + } + else + { + echo '<p class="error">Password check failed - Did Not Delete Combination</p>'; + } + } + elseif (checkaccess('crafting','delete') && isset($_GET['pattern_id']) && isset($_GET['result_id'])) + { + $query = "SELECT id, name FROM item_stats"; + $temp = mysql_query2($query); + $items=""; + while ($row=mysql_fetch_array($temp, MYSQL_ASSOC)){ + $iid=$row['id']; + $items["$iid"]=$row['name']; + } + $pattern_id = mysql_real_escape_string($_GET['pattern_id']); + $result_id = mysql_real_escape_string($_GET['result_id']); + echo '<p>You are about to permanently delete the following combinations:</p>'; + $query = "SELECT result_id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE pattern_id='$pattern_id' AND result_id='$result_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result); + echo '<table><tr><th>Result Item</th><th>Source Items</th></tr>'; + echo '<td>'.$row['result_qty'].' '.$items[$row['result_id']].'</td>'; + echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$items[$row['item_id']].'<br>'; + while ($row = mysql_fetch_array($result)) + { + echo $row['min_qty'].' to '.$row['max_qty'].' '.$items[$row['item_id']].'<br>'; + } + echo '</td></tr></table>'; + echo '<form action="./index.php?do=deletecombine&id='.$pattern_id.'&result_id='.$result_id.'" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + + } + else + { + echo '<p class="error">You do not have access to delete combinations, or did not provide a valid pattern/result ID</p>'; + } +} +?> \ No newline at end of file Property changes on: www/webconsole-new/crafting/combines.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/crafting/craftingmain.php =================================================================== --- www/webconsole-new/crafting/craftingmain.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/crafting/craftingmain.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -5,6 +5,7 @@ if (checkaccess('crafting', 'read')){ echo '<div class="menu_left">'; echo '<a href="./index.php?do=listpatterns">List Patterns</a> <br/>'; + echo '<a href="./index.php?do=listprocess">List Process</a> <br/>'; echo '<a href="./index.php?do=createtransform">Create Transform</a> <br/>'; echo '<a href="./index.php?do=createpattern">Create Pattern</a> <br/>'; echo '<hr/><a href="./index.php">Return to main page.</a>'; Modified: www/webconsole-new/crafting/patterns.php =================================================================== --- www/webconsole-new/crafting/patterns.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/crafting/patterns.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -60,12 +60,13 @@ $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); if (checkaccess('crafting', 'edit')){ + $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletepattern&id='.$pattern_id.'">Delete Pattern</a>' : ""); echo '<form action="./index.php?do=editpattern&id='.$pattern_id.'" method="post">'; echo '<table><tr><td>Pattern Name:</td><td><input type="text" name="pattern_name" value="'.$row['pattern_name'].'"/></td></tr>'; echo '<tr><td>Pattern Description:</td><td><textarea name="description" rows="5" cols="40">'.$row['description'].'</textarea></td></tr>'; $i = $row['designitem_id']; echo '<tr><td>Design Item:</td><td>'.$Items["$i"].'</td></tr>'; - echo '<tr><td><input type="submit" name="commit" value="Update Pattern"/></td></tr>'; + echo '<tr><td><input type="submit" name="commit" value="Update Pattern"/></td><td>'.$delete_text.'</td></tr>'; echo '</table>'; echo '</form>'; }else{ @@ -109,7 +110,7 @@ while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ if ($item != $row['result_id']){ if ($item != '-1'){ - echo '</td><td><a href="./index.php?do=combines&id='.$item.'">Edit</a></td></tr>'."\n"; + echo '</td><td><a href="./index.php?do=editcombine&id='.$item.'&pattern_id='.$_GET['id'].'">Edit</a></td></tr>'."\n"; } $item = $row['result_id']; $Alt = !$Alt; @@ -128,9 +129,11 @@ echo $row['min_qty'].' to '.$row['max_qty'].' '.$Items["$item_id"]; } } - echo '<td><a href="./index.php?do=combines&id='.$item.'">Edit</a></td></tr></table>'; + echo '<td><a href="./index.php?do=editcombine&id='.$item.'&pattern_id='.$_GET['id'].'">Edit</a></td></tr></table>'; + echo '<a href="./index.php?do=createcombine&pattern_id='.$pattern_id.'">Create new combine for this pattern </a><br />'; }else{ - echo '<p class="error">No available Combines</a>'; + echo '<p class="error">No available Combines</p>'; + echo '<a href="./index.php?do=createcombine&pattern_id='.$pattern_id.'">Create new combine for this pattern </a><br />'; } } }else{ @@ -149,7 +152,7 @@ $description = mysql_real_escape_string($_POST['description']); $query = "INSERT INTO trade_patterns (pattern_name, group_id, designitem_id, k_factor, description) VALUES ('$pattern_name', '$group_id', '$designitem_id', '$k_factor', '$description')"; mysql_query2($query); - echo '<p class="error">Pattern added succesfully</a>'; + echo '<p class="error">Pattern added succesfully</p>'; unset($_POST); createpattern(); } @@ -158,18 +161,143 @@ echo '<p class="bold">Create Pattern</p>'."\n"; // new pattern echo '<form action="./index.php?do=createpattern" method="post" /><table>'; echo '<tr><td>Pattern Name</td><td><input type="text" name="pattern_name" /> </td></tr>'; - echo '<tr><td>Group id</td><td><input type="text" name="group_id" /> </td></tr>'; + echo '<tr><td>Group id</td><td><input type="text" name="group_id" value="0" /> </td></tr>'; $items_results = PrepSelect('mind_slot_items'); echo '<tr><td>Design Item </td><td>'.DrawSelectBox('items', $items_results, 'designitem_id', '', false).'</td></tr>'; - echo '<tr><td>Difficulty Factor</td><td><input type="text" name="k_factor" /> </td></tr>'; + echo '<tr><td>Difficulty Factor</td><td><input type="text" name="k_factor" value="0" /> </td></tr>'; echo '<tr><td>Description</td><td><textarea name="description" rows="5" cols="40"></textarea> </td></tr>'; echo '<tr><td></td><td><input type=submit name="commit" value="Create Pattern"/></td></tr>'; echo '</table></form>'."\n"; } else { - echo '<p class="error">You do not have the required access to create a pattern.</a>'; + echo '<p class="error">You do not have the required access to create a pattern.</p>'; } } +function deletepattern() +{ + if (checkaccess('crafting','delete') && isset($_POST['submit']) && isset($_GET['id']) && is_numeric($_GET['id'])) + { + $password = mysql_real_escape_string($_POST['passd']); + $username = mysql_real_escape_string($_SESSION['username']); + $query = "SELECT COUNT(username) FROM accounts WHERE username='$username' AND password=MD5('$password')"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if ($row[0] == 1) + { + $id = mysql_real_escape_string($_GET['id']); + $query = "DELETE FROM trade_patterns WHERE id = $id LIMIT 1"; //limit is not needed, but if something unexpected does happen, it'll only affect 1 transform. + mysql_query2($query); + $query = "DELETE FROM trade_transformations WHERE pattern_id = $id"; // the following queries are not limited since we don't know how many they will delete. + mysql_query2($query); + $query = "DELETE FROM trade_combinations WHERE pattern_id = $id"; + mysql_query2($query); + echo '<p class="error">Pattern with ID '.$id.' and all associated transformations/combinations were succesfully deleted.</p>'; + unset($_POST); + listpatterns(); + } + else + { + echo '<p class="error">Password check failed - Did Not Delete Transform</p>'; + } + + } + elseif (checkaccess('crafting','delete') && isset($_GET['id']) && is_numeric($_GET['id'])) + { + $pattern_id = $_GET['id']; + echo '<p class="error">Warning, deleting this pattern will also delete *ALL* of the combinations and transformations listed below.</p>'; + $query = "SELECT id, name FROM item_stats"; + $Temp = mysql_query2($query); + while ($row=mysql_fetch_array($Temp, MYSQL_ASSOC)){ + $iid=$row['id']; + $items["$iid"]=$row['name']; + } + $query = "SELECT pattern_name, description, designitem_id FROM trade_patterns WHERE id='$pattern_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + + echo '<table><tr><td>Pattern Name:</td><td>'.$row['pattern_name'].'</td></tr>'; + echo '<tr><td>Pattern Description:</td><td>'.$row['description'].'</td></tr>'; + $i = $row['designitem_id']; + echo '<tr><td>Design Item:</td><td>'.$items["$i"].'</td></tr>'; + echo '</table>'; + + echo '<p class="bold">Available Transforms</p>'; + $query = "SELECT t.id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE pattern_id='$pattern_id' GROUP BY id"; + $result = mysql_query2($query); + echo '<table><tr><th>Source Item</th><th>Process</th><th>Result Item</th><th>Time</th><th>Resultant Quality</th></tr>'; + $alt = FALSE; + while ($row=mysql_fetch_array($result, MYSQL_ASSOC)) + { + $alt = !$alt; + if ($alt){ + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + $item_id=$row['item_id']; + echo '<td>'.$row['item_qty'].' '.$items["$item_id"].'</td>'; + echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; + $result_id=$row['result_id']; + echo '<td>'.$row['result_qty'].' '.$items["$result_id"].'</td>'; + echo '<td>'.$row['trans_points'].'</td>'; + echo '<td>'.$row['penilty_pct'].'</td>'; + echo '</tr>'; + } + echo '</table>'; + echo '<p class="bold">Available Combinations</p>'; + $alt = FALSE; + $item = -1; + $query = "SELECT result_id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE pattern_id='$pattern_id' ORDER BY result_id"; + $result = mysql_query2($query); + if (mysql_num_rows($result) != 0) + { + echo '<table><tr><th>Result Item</th><th>Source Items</th></tr>'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + if ($item != $row['result_id']) + { + if ($item != '-1') + { + echo '</td></tr>'."\n"; + } + $item = $row['result_id']; + $alt = !$alt; + if ($alt){ + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + $result_id = $row['result_id']; + echo '<td>'.$row['result_qty'].' '.$items["$result_id"].'</td>'; + $item_id = $row['item_id']; + echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$items["$item_id"]; + } + else + { + echo '<br/>'; + $item_id = $row['item_id']; + echo $row['min_qty'].' to '.$row['max_qty'].' '.$items["$item_id"]; + } + } + echo '</tr></table>'; + } + else + { + echo '<p class="error">No available Combines</p>'; + } + + echo '<form action="./index.php?do=deletepattern&id='.$_GET['id'].'" method="post">Enter your password to confirm deletion of *ALL* items listed above: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + + } + else + { + echo 'You do not have access to delete patterns, or did not provide a valid ID'; + } +} + ?> Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/crafting/process.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -1,4 +1,74 @@ <?php +function listprocess() +{ + if (checkaccess('crafting', 'read')) + { + echo '<p class="header">Process Information</p>'; + $result = mysql_query2("SELECT id, name FROM item_stats"); + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $i = $row['id']; + $items["$i"] = $row['name']; + } + $items[0] = ""; + $result = mysql_query2("SELECT skill_id, name FROM skills"); + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $i = $row['skill_id']; + $skills["$i"] = $row['name']; + } + $skills[0] = ""; + $query = "SELECT * FROM trade_processes"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + $id = $row['process_id']; + mysql_data_seek($result, 0); + echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th>Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + if (checkaccess('crafting', 'edit')){ + echo '<th>Actions</th>'; + } + echo '</tr>'; + $alt= FALSE; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; + echo '<td>'.$row['subprocess_number'].'</td>'; + echo '<td>'.$row['animation'].'</td>'; + $i = $row['workitem_id']; + echo '<td>'.$items["$i"].'</td>'; + $i = $row['equipment_id']; + echo '<td>'.$items["$i"].'</td>'; + echo '<td>'.$row['constraints'].'</td>'; + $i = $row['garbage_id']; + echo '<td>'.$row['garbage_qty'].' '.$items["$i"].'</td>'; + $i = $row['primary_skill_id']; + echo '<td>'.$skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; + $i = $row['secondary_skill_id']; + echo '<td>'.$skills["$i"].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; + echo '<td>'.$row['description'].'</td>'; + if (checkaccess('crafting','edit')) + { + echo '<td><a href="./index.php?do=editsubprocess&id='.$row['process_id'].'&sub='.$row['subprocess_number'].'">Edit</a></td>'; + } + echo '</tr>'; + } + echo '</table>'; + if (checkaccess('crafting','create')){ + echo '<a href="./index.php?do=createprocess">Create new Process</a>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + function editprocess(){ if (checkaccess('crafting', 'read')){ $id = mysql_real_escape_string($_GET['id']); @@ -8,11 +78,13 @@ $i = $row['id']; $Items["$i"] = $row['name']; } + $Items[0] = ""; $result = mysql_query2("SELECT skill_id, name FROM skills"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $i = $row['skill_id']; $Skills["$i"] = $row['name']; } + $Skills[0] = ""; $query = "SELECT * FROM trade_processes WHERE process_id = '$id'"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); @@ -51,6 +123,9 @@ echo '</tr>'; } echo '</table>'; + if (checkaccess('crafting','create')){ + echo '<a href="./index.php?do=createprocess&id='.$id.'">Create new Sub-process</a>'; + } }else{ echo '<p class="error">You are not authorized to use these functions</p>'; } @@ -58,19 +133,49 @@ function editsubprocess(){ if (checkaccess('crafting','edit')){ - if (isset($_POST['commit']) && ($_POST['commit'] == "Update Process")){ - //do Magic - }else{ + if (isset($_POST['commit']) && ($_POST['commit'] == "Update Process")) + { + $process_id = mysql_real_escape_string($_GET['id']); + $subprocess_number = mysql_real_escape_string($_GET['sub']); + $name = mysql_real_escape_string($_POST['name']); + $animation = mysql_real_escape_string($_POST['animation']); + $workitem_id = mysql_real_escape_string($_POST['workitem_id']); + $workitem_id = ($workitem_id == '' ? 0 : $workitem_id); // change id to 0 if it is not provided by user ('') + $equipment_id = mysql_real_escape_string($_POST['equipment_id']); + $equipment_id = ($equipment_id == '' ? 0 : $equipment_id); + $garbage_id = mysql_real_escape_string($_POST['garbage_id']); + $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); + $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); + $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); + $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); + $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); + $primary_quality_factor = mysql_real_escape_string($_POST['primary_quality_factor']); + $secondary_skill_id = mysql_real_escape_string($_POST['secondary_skill_id']); + $secondary_skill_id = ($secondary_skill_id == -1 ? 0 : $secondary_skill_id); // change id to 0 if it is not provided by user (-1) + $secondary_min_skill = mysql_real_escape_string($_POST['secondary_min_skill']); + $secondary_max_skill = mysql_real_escape_string($_POST['secondary_max_skill']); + $secondary_practice_points = mysql_real_escape_string($_POST['secondary_practice_points']); + $secondary_quality_factor = mysql_real_escape_string($_POST['secondary_quality_factor']); + $description = mysql_real_escape_string($_POST['description']); + $query = "UPDATE trade_processes SET name='$name', animation='$animation', workitem_id='$workitem_id', equipment_id='$equipment_id', garbage_id='$garbage_id', garbage_qty='$garbage_qty', primary_skill_id='$primary_skill_id', primary_min_skill='$primary_min_skill', primary_max_skill='$primary_max_skill', primary_practice_points='$primary_practice_points', primary_quality_factor='$primary_quality_factor', secondary_skill_id='$secondary_skill_id', secondary_min_skill='$secondary_min_skill', secondary_max_skill='$secondary_max_skill', secondary_practice_points='$secondary_practice_points', secondary_quality_factor='$secondary_quality_factor', description='$description' WHERE process_id='$process_id' AND subprocess_number='$subprocess_number'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + unset($_POST); + editsubprocess(); + } + else{ $id = mysql_real_escape_string($_GET['id']); $sub = mysql_real_escape_string($_GET['sub']); + $delete = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deleteprocess&id='.$id.'&sub='.$sub.'">Delete</a>' : ''); $query = "SELECT * FROM trade_processes WHERE process_id = '$id' AND subprocess_number='$sub'"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); echo '<p class="header">Edit Sub-Proccess</p>'; - echo '<form action="./index.php?do=editsubproccess&id='.$id.'&sub='.$sub.'" method="post">'; + echo '<form action="./index.php?do=editsubprocess&id='.$id.'&sub='.$sub.'" method="post">'; echo '<table><tr><th>Field</th><th>Value</th></tr>'; echo '<tr><td>Process ID:</td><td>'.$row['process_id'].'</tr>'; echo '<tr><td>SubProcess ID:</td><td>'.$row['subprocess_number'].'</td></tr>'; + echo '<tr><td>Name:</td><td><input type="hidden" name="name" value="'.$row['name'].'">'.$row['name'].'</td></tr>'; echo '<tr><td>Description:</td><td><input type="text" name="description" value="'.$row['description'].'" /></td></tr>'; echo '<tr><td>Animation:</td><td><input type="text" name="animation" value="'.$row['animation'].'" /></td></tr>'; $Items = PrepSelect('items'); @@ -89,12 +194,226 @@ echo '<tr><td>Secondary Maximum Skill Level:</td><td><input type="text" name="secondary_max_skill" value="'.$row['secondary_max_skill'].'"/></td></tr>'; echo '<tr><td>Secondary Practice Points:</td><td><input type="text" name="secondary_practice_points" value="'.$row['secondary_practice_points'].'"/></td></tr>'; echo '<tr><td>Secondary Quality Factor:</td><td><input type="text" name="secondary_quality_factor" value="'.$row['secondary_quality_factor'].'"/></td></tr>'; - echo '</table></form>'; + echo '<tr><td>'.$delete.'</td><td><input type=submit name="commit" value="Update Process"/></td></tr>'; + echo '</table></form>'; } }else{ - echo '<p class="error">You are not authroized to use these functions</p>'; + echo '<p class="error">You are not authorized to use these functions</p>'; } } +function createprocess() +{ + if (checkaccess('crafting','create') && isset($_POST['commit']) && $_POST['commit'] == "Create Process") + { + $name = mysql_real_escape_string($_POST['name']); + $animation = mysql_real_escape_string($_POST['animation']); + $workitem_id = mysql_real_escape_string($_POST['workitem_id']); + $workitem_id = ($workitem_id == '' ? 0 : $workitem_id); // change id to 0 if it is not provided by user ('') + $equipment_id = mysql_real_escape_string($_POST['equipment_id']); + $equipment_id = ($equipment_id == '' ? 0 : $equipment_id); + $constraints = mysql_real_escape_string($_POST['constraints']); + $garbage_id = mysql_real_escape_string($_POST['garbage_id']); + $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); + $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); + $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); + $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); + $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); + $primary_quality_factor = mysql_real_escape_string($_POST['primary_quality_factor']); + $secondary_skill_id = mysql_real_escape_string($_POST['secondary_skill_id']); + $secondary_skill_id = ($secondary_skill_id == -1 ? 0 : $secondary_skill_id); // change id to 0 if it is not provided by user (-1) + $secondary_min_skill = mysql_real_escape_string($_POST['secondary_min_skill']); + $secondary_max_skill = mysql_real_escape_string($_POST['secondary_max_skill']); + $secondary_practice_points = mysql_real_escape_string($_POST['secondary_practice_points']); + $secondary_quality_factor = mysql_real_escape_string($_POST['secondary_quality_factor']); + $description = mysql_real_escape_string($_POST['description']); + if (isset($_POST['process_id'])) // we are adding a sub-process, determine the highest number and make this 1 above that. + { + $process_id = mysql_real_escape_string($_POST['process_id']); + $query = "SELECT MAX(subprocess_number) FROM trade_processes WHERE process_id='$process_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + $subprocess_number = $row[0]+1; + } + else // we are adding a process, determine the highest number and add 1, set sub to 0. + { + $query = "SELECT MAX(process_id) FROM trade_processes"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + $process_id = $row[0]+1; + $subprocess_number = 0; + } + $query = "INSERT INTO trade_processes (process_id, subprocess_number, name, animation, workitem_id, equipment_id, constraints, garbage_id, garbage_qty, primary_skill_id, primary_min_skill, primary_max_skill, primary_practice_points, primary_quality_factor, secondary_skill_id, secondary_min_skill, secondary_max_skill, secondary_practice_points, secondary_quality_factor, description) VALUES ('$process_id', '$subprocess_number', '$name', '$animation', '$workitem_id', '$equipment_id', '$constraints', '$garbage_id', '$garbage_qty', '$primary_skill_id', '$primary_min_skill', '$primary_max_skill', '$primary_practice_points', '$primary_quality_factor', '$secondary_skill_id', '$secondary_min_skill', '$secondary_max_skill', '$secondary_practice_points', '$secondary_quality_factor', '$description')"; + mysql_query2($query); + echo '<p class="error">Process added succesfully.</p>'; + unset($_POST); + createprocess(); + } + elseif (checkaccess('crafting','create')) + { + $id = (isset($_GET['id']) ? $_GET['id'] : ""); + + echo '<p class="header">Create Process</p>'; + echo '<form action="./index.php?do=createprocess" method="post"><table>'; + if ($id != "") // if ID was supplied, we are making a sub-process. + { + $query = "SELECT name FROM trade_processes WHERE process_id='".mysql_real_escape_string($id)."'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) < 1) + { + echo '<p class="error">Invalid process_id ('.$id.') supplied, could not create sub-process.</p>'; + return; + } + $row = mysql_fetch_array($result); + $name = $row['name']; + echo '<tr><td>Process ID:</td><td><input type="hidden" name="process_id" value="'.$id.'" />'.$id.'</td></tr>'; + echo '<tr><td>Process Name:</td><td><input type="hidden" name="name" value="'.$name.'" />'.$name.'</td></tr>'; + } + else + { + echo '<tr><td>Process Name:</td><td><input type="text" name="name" /></td></tr>'; + } + echo '<tr><td>Description:</td><td><input type="text" name="description" /></td></tr>'; + echo '<tr><td>Animation:</td><td><input type="text" name="animation" /></td></tr>'; + $items = PrepSelect('items'); + echo '<tr><td>Work Item:</td><td>'.DrawSelectBox('items', $items, 'workitem_id', '', true).'</td></tr>'; + echo '<tr><td>Equipment:</td><td>'.DrawSelectBox('items', $items, 'equipment_id', '', true).'</td></tr>'; + echo '<tr><td>Constraints:</td><td><input type="text" name="constraints" /></td></tr>'; + echo '<tr><td>Garbage Item:</td><td>'.DrawSelectBox('items', $items, 'garbage_id', '', false).'</td></tr>'; + echo '<tr><td>Garbage Quantity:</td><td><input type="text" name="garbage_qty" value="0"/></td></tr>'; + $skills = PrepSelect('skill'); + echo '<tr><td>Primary Skill:</td><td>'.DrawSelectBox('skill', $skills, 'primary_skill_id', '', false).'</td></tr>'; + echo '<tr><td>Primary Minimum Skill Level:</td><td><input type="text" name="primary_min_skill" value="0"/></td></tr>'; + echo '<tr><td>Primary Maximum Skill Level:</td><td><input type="text" name="primary_max_skill" value="0"/></td></tr>'; + echo '<tr><td>Primary Practice Points:</td><td><input type="text" name="primary_practice_points" value="0"/></td></tr>'; + echo '<tr><td>Primary Quality Factor:</td><td><input type="text" name="primary_quality_factor" value="0"/></td></tr>'; + echo '<tr><td>Secondary Skill:</td><td>'.DrawSelectBox('skill', $skills, 'secondary_skill_id', '', true).'</td></tr>'; + echo '<tr><td>Secondary Minimum Skill Level:</td><td><input type="text" name="secondary_min_skill" value="0"/></td></tr>'; + echo '<tr><td>Secondary Maximum Skill Level:</td><td><input type="text" name="secondary_max_skill" value="0"/></td></tr>'; + echo '<tr><td>Secondary Practice Points:</td><td><input type="text" name="secondary_practice_points" value="0"/></td></tr>'; + echo '<tr><td>Secondary Quality Factor:</td><td><input type="text" name="secondary_quality_factor" value="0"/></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Process"/></td></tr>'; + echo '</table></form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +function deleteprocess() +{ + if (checkaccess('crafting','delete') && isset($_POST['submit'])) + { + $process_id = mysql_real_escape_string($_GET['id']); + $subprocess_number = mysql_real_escape_string($_GET['sub']); + if (!is_numeric($process_id) || !is_numeric($subprocess_number)) + { + echo '<p class="error">Invalid (sub)process ID.</p>'; + return; + } + + $password = mysql_real_escape_string($_POST['passd']); + $username = mysql_real_escape_string($_SESSION['username']); + $query = "SELECT COUNT(username) FROM accounts WHERE username='$username' AND password=MD5('$password')"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if ($row[0] == 1) + { + if ($subprocess_number == 0) + { + $query = "DELETE FROM trade_processes WHERE process_id='$process_id'"; + mysql_query2($query); + echo '<p class="error">Process with ID '.$process_id.' was succesfully deleted.</p>'; + } + else + { + $query = "DELETE FROM trade_processes WHERE process_id='$process_id' AND subprocess_number='$subprocess_number' LIMIT 1"; + mysql_query2($query); + echo '<p class="error">Process with ID '.$process_id.' and subprocess ID '.$subprocess_number.' was succesfully deleted.</p>'; + } + unset($_POST); + listprocess(); + } + else + { + echo '<p class="error">Password check failed - Did Not Delete Process</p>'; + } + } + elseif (checkaccess('crafting','delete')) + { + $process_id = mysql_real_escape_string($_GET['id']); + $subprocess_number = mysql_real_escape_string($_GET['sub']); + if (!is_numeric($process_id) || !is_numeric($subprocess_number)) + { + echo '<p class="error">Invalid (sub)process ID.</p>'; + return; + } + $query = "SELECT name FROM trade_processes WHERE process_id='$process_id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) < 1) // process_id does not exist + { + echo '<p class="error">No process with ID '.$process_id.'</p>'; + return; + } + $row = mysql_fetch_array($result); + $process_name = $row['name']; + + $query = "SELECT id, name FROM item_stats"; + $result = mysql_query2($query); + while ($row=mysql_fetch_array($result, MYSQL_ASSOC)){ + $iid=$row['id']; + $items["$iid"]=$row['name']; + } + + if ($subprocess_number == 0) // this is a main process + { + $query = "SELECT t.id, t.pattern_id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE t.process_id='$process_id' GROUP BY pattern_id"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) // there still are dependencies, do not offer to delete anything. + { + echo '<p class="error">You can NOT delete this process ('.$process_name.'), since the following transforms still use it.</p>'; + echo '<table><tr><th>Source Item</th><th>Process</th><th>Result Item</th><th>Time</th><th>Resultant Quality</th><th>Actions</th></tr>'; + $alt = FALSE; + while ($row=mysql_fetch_array($result, MYSQL_ASSOC)) + { + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + $item_id=$row['item_id']; + echo '<td>'.$row['item_qty'].' '.$items["$item_id"].'</td>'; + echo '<td>'.$row['name'].'</td>'; + $result_id=$row['result_id']; + echo '<td>'.$row['result_qty'].' '.$items["$result_id"].'</td>'; + echo '<td>'.$row['trans_points'].'</td>'; + echo '<td>'.$row['penilty_pct'].'</td>'; + echo '<td><a href="./index.php?do=transform&id='.$row['id'].'">Edit</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>You are about to permanently delete process id '.$process_id.' ('.$process_name.') and all known subprocesses</p>'; + echo '<form action="./index.php?do=deleteprocess&id='.$process_id.'&sub='.$subprocess_number.'" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + } + } + else // we have a sub-process, we can delete those without question. + { + echo '<p>You are about to permanently delete sub process number: '.$subprocess_number.' from process id '.$process_id.' ('.$process_name.')</p>'; + echo '<form action="./index.php?do=deleteprocess&id='.$process_id.'&sub='.$subprocess_number.'" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + ?> Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/index.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -79,6 +79,12 @@ questmain(); readquest(); break; + case 'validatequest': + include('./quests/questmain.php'); + include('./quests/validatequest.php'); + questmain(); + validatequest(); + break; case 'editquest': include('./quests/questmain.php'); include('./quests/editquest.php'); @@ -377,6 +383,30 @@ craftingmain(); createpattern(); break; + case 'deletepattern': + include('./crafting/craftingmain.php'); + include('./crafting/patterns.php'); + craftingmain(); + deletepattern(); + break; + case 'editcombine': + include('./crafting/craftingmain.php'); + include('./crafting/combines.php'); + craftingmain(); + editcombine(); + break; + case 'createcombine': + include('./crafting/craftingmain.php'); + include('./crafting/combines.php'); + craftingmain(); + createcombine(); + break; + case 'deletecombine': + include('./crafting/craftingmain.php'); + include('./crafting/combines.php'); + craftingmain(); + deletecombine(); + break; case 'transform': include('./crafting/craftingmain.php'); include('./crafting/transforms.php'); @@ -395,6 +425,12 @@ craftingmain(); deletetransform(); break; + case 'listprocess': + include('./crafting/craftingmain.php'); + include('./crafting/process.php'); + craftingmain(); + listprocess(); + break; case 'process': include('./crafting/craftingmain.php'); include('./crafting/process.php'); @@ -407,6 +443,18 @@ craftingmain(); editsubprocess(); break; + case 'createprocess': + include('./crafting/craftingmain.php'); + include('./crafting/process.php'); + craftingmain(); + createprocess(); + break; + case 'deleteprocess': + include('./crafting/craftingmain.php'); + include('./crafting/process.php'); + craftingmain(); + deleteprocess(); + break; default: echo '<p class="error">shouldn\'t reach this!</p>'; } Modified: www/webconsole-new/quests/editquest.php =================================================================== --- www/webconsole-new/quests/editquest.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/quests/editquest.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -41,7 +41,7 @@ <SCRIPT language="javascript"> document.location = "index.php?do=listquests"; </script> -<? +<?php exit; } }else{ Modified: www/webconsole-new/quests/listquests.php =================================================================== --- www/webconsole-new/quests/listquests.php 2009-04-17 13:56:46 UTC (rev 3486) +++ www/webconsole-new/quests/listquests.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -33,6 +33,7 @@ echo '<tr><td>'.$row['id'].'</td><td>'.$row['category'].'</td><td>'.$row['name'].'</td><td>'.$row['player_lockout_time']; echo '</td><td>'.$row['quest_lockout_time'].'</td><td>'.htmlspecialchars($row['prerequisite']).'</td><td>'; echo '<a href="./index.php?do=readquest&id='.$row['id'].'">Read</a>'; + echo '<br /><a href="./index.php?do=validatequest&id='.$row['id'].'">Validate</a>'; if (checkaccess('quests', 'edit')){ echo '<br/><a href="./index.php?do=editquest&id='.$row['id'].'">Edit</a>'; } Added: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php (rev 0) +++ www/webconsole-new/quests/validatequest.php 2009-04-17 14:02:00 UTC (rev 3487) @@ -0,0 +1,878 @@ +<?php + +/** +* Planeshift quest script validator +* Author: G. Hofstee +*/ + +$parse_log = ""; +$line_number = 0; +function validatequest() +{ + if(checkaccess('quests', 'read')) + { + global $parse_log; + $id = (isset($_POST['id']) ? $_POST['id'] : (isset($_GET['id']) ? $_GET['id'] : 0)); // If an ID is posted, use that, otherwise, use GET, if neither is available, use 0. + echo " +<p>show script lines means it will show all lines it found in the script and number them (so you can look at what errors belong +to what line in your browser.<br> +<form name=\"singlescript\" method=\"post\" action=\"./index.php?do=validatequest&id=$id\"> +<table> +<tr><td>Quest ID:</td><td><input type=\"text\" name=\"id\" value=\"$id\"></td></tr> +<tr><td><input type=\"checkbox\" name=\"show_lines\">Show script lines?</td><td></td></tr> +</table> +<input type=\"submit\" name=\"submit\" value=\"submit\"> +</form> +"; + + if(isset($_POST['submit'])) + { + $show_lines = false; + if (isset($_POST['show_lines'])) + { + $show_lines = true; + } + if (is_numeric($id)) + { + parseScripts($id, $show_lines); + } + } + echo $parse_log; + } + else + { + echo '<p class="error">You are not authorized to view this page.</p>'; + } +} + + + +// quest_id is not unique, (KA scripts for example, but others too are not enforeced unique. +// So we need to collect them all, and then handle the actual script the next method +function parseScripts($quest_id, $show_lines) +{ + $result = mysql_query2("SELECT script FROM quest_scripts WHERE quest_id = '$quest_id'"); + if (mysql_num_rows($result) < 1) + { + echo '<p class="error">Error: no quest found with ID '.$quest_id.'</p>'; + return; + } + for($i = 1; $row = mysql_fetch_row($result); $i++) + { + append_log("<p class=\"error\">"); + append_log("parsing script # $i with ID $quest_id"); + parseScript($quest_id, $row[0], $show_lines); + append_log("parsing script # $i with ID $quest_id completed"); + append_log("</p>"); + } +} + +function parseScript($quest_id, $script, $show_lines) +{ + $line = ""; + $p_count = 0; + $npc_name = ""; + $step = 1; + $assigned = false; // to check if the quest is already assigned. + global $line_number; + $line_number = 0; + $seen_npc_triggers = false; // this variable is used to see if there has been any "NPC:" trigger since the last P: + + if($show_lines) + { + echo "<BR />\n"; + echo "<BR />\n"; + echo "Quest ID: $quest_id <BR />\n"; + } + + while(getNextLine($line, $script)) + { + if($show_lines) + { + echo "$line_number: $line <BR />\n"; // debug line, shows you all the lines of the script. + } + if(strncasecmp($line, "#", 1) === 0) //comment line + { + continue; //ignore comment lines + } + elseif(strncasecmp($line, "P:", 2) === 0) // P: trigger + { + if ($seen_npc_triggers && $p_count > 0) + { + append_log("parse error, there have been more P: or player than npc: tags before $line_number"); + $p_count = 0; + } + $seen_npc_triggers = false; + $count = 0; + if(getTriggerCount($line, "P:", $count) === false) //get the amount of P: tags + { + append_log("parse error, P: with no text on line $line_number"); + } + else + { + $p_count += $count; + } + // store P: for comparing with NPC: triggers + } + elseif(strncasecmp($line, "Menu:", 5) === 0) // Menu: trigger + { + if(getTriggerCount($line, "Menu:", $count) === false) + { + append_log("parse error, Menu: with no text on line $line_number"); + } + } + elseif(strpos($line, ":") !== false) // NPC_NAME: trigger, check for content, and match with the amount of P: triggers + { + // Every P: and NPC: combo should be unique, we don't check this atm. + $count = 0; + $seen_npc_triggers = true; + $temp_name = substr($line, 0, strpos($line, ":")); + if(stripos($npc_name, $temp_name) === false) // new npc name + { + $npc_name = $temp_name; + if ($quest_id == -1 && $npc_name == "general") + { + // valid situation, general means all npcs, does not exist in database. + } + elseif (validate_npc($npc_name) === false) + { + append_log("parse error, invalid NPC name: $npc_name at line $line_number"); + } + } + + if(getTriggerCount($line, $temp_name.":", $count) === false) //get the amount of NPC: tags .":" adds the ":" which is not included in the name. + { + append_log("parse error, $temp_name: with no text on line $line_number"); + } + $p_count -= $count; // substract the amount of npc: tags from the P: count, they should match 1 on 1 . + if ($p_count < 0) + { + append_log("parse error, there are more $npc_name: triggers than there are P: or player triggers before line $line_number"); + } + + } + elseif(strncasecmp($line, "Player ", 7) === 0) // player does something + { + if ($seen_npc_triggers && $p_count > 0) + { + append_log("parse error, there have been more P: or player than npc: tags before $line_number"); + $p_count = 0; + } + handle_player_action($line); + ... [truncated message content] |
From: <mg...@us...> - 2009-04-18 19:52:01
|
Revision: 3491 http://planeshift.svn.sourceforge.net/planeshift/?rev=3491&view=rev Author: mgist Date: 2009-04-18 19:51:57 +0000 (Sat, 18 Apr 2009) Log Message: ----------- - Added math script listing to WC. Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/rules/rulesmain.php Added Paths: ----------- www/webconsole-new/rules/mscripts.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-18 19:35:09 UTC (rev 3490) +++ www/webconsole-new/index.php 2009-04-18 19:51:57 UTC (rev 3491) @@ -301,6 +301,12 @@ rulesmain(); rule_scripts(); break; + case 'mscripts': + include('./rules/rulesmain.php'); + include('./rules/mscripts.php'); + rulesmain(); + rule_scripts(); + break; case 'spells': include('./rules/rulesmain.php'); include('./rules/spells.php'); Added: www/webconsole-new/rules/mscripts.php =================================================================== --- www/webconsole-new/rules/mscripts.php (rev 0) +++ www/webconsole-new/rules/mscripts.php 2009-04-18 19:51:57 UTC (rev 3491) @@ -0,0 +1,100 @@ +<?php +function rule_scripts(){ + if (checkaccess('rules', 'read')){ + if (isset($_POST['commit'])){ + if (($_POST['commit']=='Change Name') && (checkaccess('rules', 'edit'))){ + $name = mysql_real_escape_string($_POST['name']); + $orig_name = mysql_real_escape_string($_POST['orig_name']); + $query = "UPDATE math_scripts SET name='$name' WHERE name='$orig_name'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + $_GET['type']=$_POST['type']; + unset($_POST); + rule_scripts(); + return; + }else if (($_POST['commit']=='Update Script') && (checkaccess('rules', 'edit'))){ + $name = mysql_real_escape_string($_POST['name']); + $math_script = mysql_real_escape_string($_POST['math_script']); + $query = "UPDATE math_scripts SET math_script='$math_script' WHERE name='$name'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + $_GET['type']=$_POST['type']; + unset($_POST); + rule_scripts(); + return; + }else if (($_POST['commit']=='Delete') && (checkaccess('rules', 'delete'))){ + $name = mysql_real_escape_string($_POST['name']); + $query = "DELETE FROM math_scripts WHERE name='$name'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + $_GET['type']=$_POST['type']; + unset($_POST); + rule_scripts(); + return; + }else if (($_POST['commit']=='Create Script') && (checkaccess('rules', 'create'))){ + $name = mysql_real_escape_string($_POST['name']); + $math_script = mysql_real_escape_string($_POST['math_script']); + $query = "INSERT INTO math_scripts (name, math_script) VALUES ('$name', '$math_script')"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + $_GET['type']=$_POST['type']; + unset($_POST); + rule_scripts(); + return; + } + }else{ + $query = "SELECT name, math_script FROM math_scripts ORDER BY name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0){ + echo '<table border="1">'; + echo '<tr><th>Name</th><th>Script</th>'; + if (checkaccess('rules', 'delete')){ + echo '<th>Actions</th></tr>'; + }else{ + echo '</tr>'; + } + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + echo '<tr>'; + if (checkaccess('rules', 'edit')){ + echo '<td><form action="index.php?do=scripts" method="post">'; + if (isset($_GET['type'])){ + echo '<input type="hidden" name="type" value="'.$_GET['type'].'"/>'; + } + echo '<input type="hidden" name="orig_name" value="'.$row['name'].'"/><input type="text" name="name" value="'.$row['name'].'"/><br/><input type="submit" name="commit" value="Change Name"/></form></td>'; + echo '<td><form action="index.php?do=scripts" method="post"><input type="hidden" name="name" value="'.$row['name'].'"/>'; + if (isset($_GET['type'])){ + echo '<input type="hidden" name="type" value="'.$_GET['type'].'"/>'; + } + echo '<textarea name="math_script" rows="3" cols="45">'.$row['math_script'].'</textarea><br/><input type="submit" name="commit" value="Update Script"/></form></td>'; + if (checkaccess('rules', 'delete')){ + echo '<td><form action="index.php?do=scripts" method="post"><input type="hidden" name="name" value="'.$row['name'].'"/>'; + if (isset($_GET['type'])){ + echo '<input type="hidden" name="type" value="'.$_GET['type'].'"/>'; + } + echo '<input type="submit" name="commit" value="Delete"/>'; + echo '</form></td>'; + } + }else{ + echo '<td>'.$row['name'].'</td><td>'.htmlspecialchars($row['math_script']).'</td>'; + } + echo '</tr>'; + } + echo '</table>'; + }else{ + echo '<p class="error">No Scripts Found</p>'; + } + if (checkaccess('rules', 'create')){ + echo '<hr/><p>Create New progression script</p>'; + echo '<form action="index.php?do=scripts" method="post">Name:<input type="text" name="name" /><br/>'; + echo 'Script: <textarea name="math_script" rows="3" cols="45"></textarea><br/>'; + if (isset($_GET['type'])){ + echo '<input type="hidden" name="type" value="'.$_GET['type'].'"/>'; + } + echo '<input type="submit" name="commit" value="Create Script" /></form>'; + } + } + }else{ + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> Property changes on: www/webconsole-new/rules/mscripts.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/rules/rulesmain.php =================================================================== --- www/webconsole-new/rules/rulesmain.php 2009-04-18 19:35:09 UTC (rev 3490) +++ www/webconsole-new/rules/rulesmain.php 2009-04-18 19:51:57 UTC (rev 3491) @@ -6,6 +6,7 @@ echo '<a href="./index.php?do=scripts&type=SI">List SimpleItem Scripts</a> <br/>'; echo '<a href="./index.php?do=scripts&type=CG">List CharGen Scripts</a> <br/>'; echo '<a href="./index.php?do=scripts&type=S">List Spell Scripts</a> <br/>'; + echo '<a href="./index.php?do=mscripts">List Math Scripts</a> <br/>'; echo '<a href="./index.php?do=scripts&type=O">List Other Scripts</a> <br/>'; echo '<hr/>'; echo '<a href="./index.php?do=spells">List Spells</a><br/>'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2009-04-18 19:55:54
|
Revision: 3492 http://planeshift.svn.sourceforge.net/planeshift/?rev=3492&view=rev Author: mgist Date: 2009-04-18 19:55:52 +0000 (Sat, 18 Apr 2009) Log Message: ----------- - Changed functon name so it's unique. Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/rules/mscripts.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-18 19:51:57 UTC (rev 3491) +++ www/webconsole-new/index.php 2009-04-18 19:55:52 UTC (rev 3492) @@ -305,7 +305,7 @@ include('./rules/rulesmain.php'); include('./rules/mscripts.php'); rulesmain(); - rule_scripts(); + rule_mscripts(); break; case 'spells': include('./rules/rulesmain.php'); Modified: www/webconsole-new/rules/mscripts.php =================================================================== --- www/webconsole-new/rules/mscripts.php 2009-04-18 19:51:57 UTC (rev 3491) +++ www/webconsole-new/rules/mscripts.php 2009-04-18 19:55:52 UTC (rev 3492) @@ -1,5 +1,5 @@ <?php -function rule_scripts(){ +function rule_mscripts(){ if (checkaccess('rules', 'read')){ if (isset($_POST['commit'])){ if (($_POST['commit']=='Change Name') && (checkaccess('rules', 'edit'))){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-04-21 22:45:53
|
Revision: 3519 http://planeshift.svn.sourceforge.net/planeshift/?rev=3519&view=rev Author: weltall2 Date: 2009-04-21 22:45:40 +0000 (Tue, 21 Apr 2009) Log Message: ----------- various additional patches, fixes, additions by ravna Modified Paths: -------------- www/webconsole-new/commonfunctions.php www/webconsole-new/crafting/craftingmain.php www/webconsole-new/crafting/process.php www/webconsole-new/index.php www/webconsole-new/items/listitems.php www/webconsole-new/npcs/listlootrules.php www/webconsole-new/npcs/listtrainer.php Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/commonfunctions.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -163,7 +163,7 @@ /*PrepSelect() Returns the result link appropriate for the table requested*/ function PrepSelect($a){ $type = strtolower($a); - $typevals["items"] = "SELECT i.id, CONCAT_WS(' - ', c.name, i.name) FROM item_stats AS i LEFT JOIN item_categories AS c ON i.category_id=c.category_id WHERE i.stat_type='B' ORDER BY c.name"; + $typevals["items"] = "SELECT i.id, CONCAT_WS(' - ', c.name, i.name) FROM item_stats AS i LEFT JOIN item_categories AS c ON i.category_id=c.category_id WHERE i.stat_type='B' ORDER BY c.name, i.name"; $typevals["items_resource"] = "SELECT i.id, CONCAT_WS(' - ', c.name, i.name) FROM item_stats AS i LEFT JOIN item_categories AS c ON i.category_id=c.category_id WHERE i.stat_type='B' ORDER BY c.name IN ('Raw Materials') DESC, c.name"; $typevals["skill"] = "SELECT skill_id, name FROM skills ORDER BY name"; $typevals["category"] = "SELECT category_id, name FROM item_categories ORDER BY name"; Modified: www/webconsole-new/crafting/craftingmain.php =================================================================== --- www/webconsole-new/crafting/craftingmain.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/crafting/craftingmain.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -1,19 +1,25 @@ <?php //This is the main crafting page - gives options for displaying/editing crafts -function craftingmain(){ - if (checkaccess('crafting', 'read')){ - echo '<div class="menu_left">'; - echo '<a href="./index.php?do=listpatterns">List Patterns</a> <br/>'; - echo '<a href="./index.php?do=listprocess">List Process</a> <br/>'; - echo '<a href="./index.php?do=createtransform">Create Transform</a> <br/>'; - echo '<a href="./index.php?do=createpattern">Create Pattern</a> <br/>'; - echo '<hr/><a href="./index.php">Return to main page.</a>'; - echo '</div><div class="main">'; - } - else{ - echo 'You are not authorized to use these functions!'; - } +function craftingmain() +{ + if (checkaccess('crafting', 'read')) + { + echo '<div class="menu_left">'; + echo '<a href="./index.php?do=listpatterns">List Patterns</a> <br/>'; + echo '<a href="./index.php?do=listprocess">List Process</a> <br/>'; + if (checkaccess('crafting', 'create')) + { + echo '<a href="./index.php?do=createtransform">Create Transform</a> <br/>'; + echo '<a href="./index.php?do=createpattern">Create Pattern</a> <br/>'; + } + echo '<hr/><a href="./index.php">Return to main page.</a>'; + echo '</div><div class="main">'; + } + else + { + echo 'You are not authorized to use these functions!'; + } } ?> Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/crafting/process.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -131,8 +131,10 @@ } } -function editsubprocess(){ - if (checkaccess('crafting','edit')){ +function editsubprocess() +{ + if (checkaccess('crafting','edit')) + { if (isset($_POST['commit']) && ($_POST['commit'] == "Update Process")) { $process_id = mysql_real_escape_string($_GET['id']); @@ -144,8 +146,10 @@ $equipment_id = mysql_real_escape_string($_POST['equipment_id']); $equipment_id = ($equipment_id == '' ? 0 : $equipment_id); $garbage_id = mysql_real_escape_string($_POST['garbage_id']); + $garbage_id = ($garbage_id == '' ? 0 : $garbage_id); $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); + $primary_skill_id = ($primary_skill_id == -1 ? 0 : $primary_skill_id); $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); @@ -163,7 +167,8 @@ unset($_POST); editsubprocess(); } - else{ + else + { $id = mysql_real_escape_string($_GET['id']); $sub = mysql_real_escape_string($_GET['sub']); $delete = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deleteprocess&id='.$id.'&sub='.$sub.'">Delete</a>' : ''); @@ -179,12 +184,12 @@ echo '<tr><td>Description:</td><td><input type="text" name="description" value="'.$row['description'].'" /></td></tr>'; echo '<tr><td>Animation:</td><td><input type="text" name="animation" value="'.$row['animation'].'" /></td></tr>'; $Items = PrepSelect('items'); - echo '<tr><td>Work Item:</td><td>'.DrawSelectBox('items', $Items, 'workitem_id', $row['workitem_id'], 'true').'</td></tr>'; - echo '<tr><td>Equipment:</td><td>'.DrawSelectBox('items', $Items, 'equipment_id', $row['equipment_id'], 'true').'</td></tr>'; - echo '<tr><td>Garbage Item:</td><td>'.DrawSelectBox('items', $Items, 'garbage_id', $row['garbage_id']).'</td></tr>'; + echo '<tr><td>Work Item:</td><td>'.DrawSelectBox('items', $Items, 'workitem_id', $row['workitem_id'], true).'</td></tr>'; + echo '<tr><td>Equipment:</td><td>'.DrawSelectBox('items', $Items, 'equipment_id', $row['equipment_id'], true).'</td></tr>'; + echo '<tr><td>Garbage Item:</td><td>'.DrawSelectBox('items', $Items, 'garbage_id', $row['garbage_id'], true).'</td></tr>'; echo '<tr><td>Garbage Quantity:</td><td><input type="text" name="garbage_qty" value="'.$row['garbage_qty'].'" /></td></tr>'; $Skills = PrepSelect('skill'); - echo '<tr><td>Primary Skill:</td><td>'.DrawSelectBox('skill', $Skills, 'primary_skill_id', $row['primary_skill_id']).'</td></tr>'; + echo '<tr><td>Primary Skill:</td><td>'.DrawSelectBox('skill', $Skills, 'primary_skill_id', $row['primary_skill_id'], true).'</td></tr>'; echo '<tr><td>Primary Minimum Skill Level:</td><td><input type="text" name="primary_min_skill" value="'.$row['primary_min_skill'].'"/></td></tr>'; echo '<tr><td>Primary Maximum Skill Level:</td><td><input type="text" name="primary_max_skill" value="'.$row['primary_max_skill'].'"/></td></tr>'; echo '<tr><td>Primary Practice Points:</td><td><input type="text" name="primary_practice_points" value="'.$row['primary_practice_points'].'"/></td></tr>'; @@ -197,7 +202,9 @@ echo '<tr><td>'.$delete.'</td><td><input type=submit name="commit" value="Update Process"/></td></tr>'; echo '</table></form>'; } - }else{ + } + else + { echo '<p class="error">You are not authorized to use these functions</p>'; } } @@ -214,8 +221,10 @@ $equipment_id = ($equipment_id == '' ? 0 : $equipment_id); $constraints = mysql_real_escape_string($_POST['constraints']); $garbage_id = mysql_real_escape_string($_POST['garbage_id']); + $garbage_id = ($garbage_id == '' ? 0 : $garbage_id); $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); + $primary_skill_id = ($primary_skill_id == -1 ? 0 : $primary_skill_id); $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); @@ -279,10 +288,10 @@ echo '<tr><td>Work Item:</td><td>'.DrawSelectBox('items', $items, 'workitem_id', '', true).'</td></tr>'; echo '<tr><td>Equipment:</td><td>'.DrawSelectBox('items', $items, 'equipment_id', '', true).'</td></tr>'; echo '<tr><td>Constraints:</td><td><input type="text" name="constraints" /></td></tr>'; - echo '<tr><td>Garbage Item:</td><td>'.DrawSelectBox('items', $items, 'garbage_id', '', false).'</td></tr>'; + echo '<tr><td>Garbage Item:</td><td>'.DrawSelectBox('items', $items, 'garbage_id', '', true).'</td></tr>'; echo '<tr><td>Garbage Quantity:</td><td><input type="text" name="garbage_qty" value="0"/></td></tr>'; $skills = PrepSelect('skill'); - echo '<tr><td>Primary Skill:</td><td>'.DrawSelectBox('skill', $skills, 'primary_skill_id', '', false).'</td></tr>'; + echo '<tr><td>Primary Skill:</td><td>'.DrawSelectBox('skill', $skills, 'primary_skill_id', '', true).'</td></tr>'; echo '<tr><td>Primary Minimum Skill Level:</td><td><input type="text" name="primary_min_skill" value="0"/></td></tr>'; echo '<tr><td>Primary Maximum Skill Level:</td><td><input type="text" name="primary_max_skill" value="0"/></td></tr>'; echo '<tr><td>Primary Practice Points:</td><td><input type="text" name="primary_practice_points" value="0"/></td></tr>'; Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/index.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -225,6 +225,18 @@ npcmain(); listlootrules(); break; + case 'editlootruledetail': + include('./npcs/npcmain.php'); + include('./npcs/listlootrules.php'); + npcmain(); + editlootruledetail(); + break; + case 'createlootruledetail': + include('./npcs/npcmain.php'); + include('./npcs/listlootrules.php'); + npcmain(); + createlootruledetail(); + break; case 'editlootrule': include('./npcs/npcmain.php'); include('./npcs/listlootrules.php'); Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/items/listitems.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -52,6 +52,7 @@ if (!isset($_GET['override2'])){ $query = $query." AND stat_type = 'B'"; } + $query .= ' ORDER BY name'; $result = mysql_query2($query); while ($row = mysql_fetch_array($result)){ echo '<a href="./index.php?do=listitems&category='.$_GET['category'].'&item='.$row['id']; Modified: www/webconsole-new/npcs/listlootrules.php =================================================================== --- www/webconsole-new/npcs/listlootrules.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/npcs/listlootrules.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -1,131 +1,94 @@ <?php -function listlootrules(){ - if (checkaccess('npcs', 'read')){ - $query = 'SELECT id, name FROM loot_rules'; - if (isset($_GET['id'])){ - $id = mysql_real_escape_string($_GET['id']); - $query = $query . ' WHERE id='.$id; - } - $result = mysql_query2($query); - $query = "SELECT id, CONCAT_WS(' ', name, lastname) AS name, npc_addl_loot_category_id FROM characters WHERE npc_addl_loot_category_id !=0"; - $c_result = mysql_query2($query); - while ($c_row = mysql_fetch_array($c_result, MYSQL_ASSOC)){ - $rule = $c_row['npc_addl_loot_category_id']; - $id = $c_row['id']; - $chars[$rule][$id] = $c_row['name']; - } - - $query = 'SELECT l.id, l.loot_rule_id, l.item_stat_id, i.name, l.probability, l.min_money, l.max_money, l.randomize FROM loot_rule_details AS l LEFT JOIN item_stats AS i ON i.id=l.item_stat_id'; - $rules_result = mysql_query2($query); - while ($r_row = mysql_fetch_array($rules_result, MYSQL_ASSOC)){ - $R_id = $r_row['loot_rule_id']; - $l_id = $r_row['id']; - $Rules["$R_id"]["$l_id"]['id'] = $l_id; - $Rules["$R_id"]["$l_id"]['item_stat_id'] = $r_row['item_stat_id']; - $Rules["$R_id"]["$l_id"]['name'] = $r_row['name']; - $Rules["$R_id"]["$l_id"]['probability'] = $r_row['probability']; - $Rules["$R_id"]["$l_id"]['min_money'] = $r_row['min_money']; - $Rules["$R_id"]["$l_id"]['max_money'] = $r_row['max_money']; - $Rules["$R_id"]["$l_id"]['randomize'] = $r_row['randomize']; - } - - echo '<table border="1">'; - echo '<tr><th>Rule</th><th>Details</th><th>NPCs</th></tr>'; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'.$row['id'].'<br/>'; - if (checkaccess('npcs', 'edit')){ - echo '<form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="'.$row['id'].'"/><input type="text" name="name" value="'.$row['name'].'" size="30"/><br/><input type="submit" name="commit" value="Change Name" /></form></td>'; - }else{ - echo $row['name'].'</td>'; - } - echo '<td>'; - if (checkaccess('npcs', 'edit')){ - if (!isset($item_result)){ - $item_result = PrepSelect('items'); +function listlootrules() +{ + if (checkaccess('npcs', 'read')) + { + $query = 'SELECT l.id, lr.id AS loot_rule_id, l.item_stat_id, i.name AS item_name, l.probability, l.min_money, l.max_money, l.randomize, lr.name FROM loot_rule_details AS l RIGHT JOIN loot_rules AS lr ON lr.id=l.loot_rule_id LEFT JOIN item_stats AS i ON i.id=l.item_stat_id'; + if (isset($_GET['id'])){ + $id = mysql_real_escape_string($_GET['id']); + $query .= ' WHERE lr.id='.$id; } - $R_id = $row['id']; - if (isset($Rules["$R_id"])){ - foreach ($Rules["$R_id"] as $R){ - echo '<form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="'.$R['id'].'"/><table border="1"><tr><th>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th></tr>'; - echo '<tr><td>'.DrawSelectBox('items', $item_result, 'item_stat_id', $R['item_stat_id']).'</td>'; - echo '<td><input type="text" name="probability" value="'.$R['probability'].'" size="8"/></td>'; - echo '<td><input type="text" name="min_money" value="'.$R['min_money'].'" size="11"/></td>'; - echo '<td><input type="text" name="max_money" value="'.$R['max_money'].'" size="11"/></td>'; - echo '<td><select name="randomize">'; - if ($R['randomize'] == 1){ - echo '<option value="0">No</option><option value="1" selected="true">Yes</option>'; - }else{ - echo '<option value="0" selected="true">No</option><option value="1">Yes</option>'; + $query .= ' ORDER BY lr.id'; + $result = mysql_query2($query); + $rule_id = ''; + echo '<table border="1" cellspacing="0">'; + while ($row = mysql_fetch_array($result)) + { + $delete_text = ''; + if (checkaccess('npcs', 'delete')) + { + $delete_text = '<input type="submit" name="commit" value="Delete Rule" />'; } - echo '</select></td></tr>'; - echo '</table><input type="submit" name="commit" value="Update Rule"/></form>'; - } + if ($rule_id == '') + { + $rule_id = $row['loot_rule_id']; + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="6"><form action="./index.php?do=editlootrule" method="post">Rule # '.$rule_id.' named: <input type="hidden" name="id" value="'.$row['loot_rule_id'].'"/> <input type="text" name="name" value="'.$row['name'].'" size="30"/> <input type="submit" name="commit" value="Change Name" />'.$delete_text.'</form></td></tr>'; + echo '<tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td><td>actions</td></tr>'; + } + else + { + echo '<tr><td colspan="6">Rule # '.$rule_id.' named: '.$row['name'].'</td></tr>'; + echo '<tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td><td>actions</td></tr>'; + } + } + elseif ($rule_id != $row['loot_rule_id']) + { + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="6"><form action="./index.php?do=createlootruledetail&id='.$rule_id.'" method="post"><input type="submit" name="create" value="Add New Detail"></form></td></tr>'; + } + echo '<tr><td colspan="6"></td></tr>'; + $rule_id = $row['loot_rule_id']; + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="6"><form action="./index.php?do=editlootrule" method="post"> Rule # '.$rule_id.' named: <input type="hidden" name="id" value="'.$row['loot_rule_id'].'"/> <input type="text" name="name" value="'.$row['name'].'" size="30"/> <input type="submit" name="commit" value="Change Name" />'.$delete_text.'</form></td></tr>'; + echo '<tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td><td>actions</td></tr>'; + } + else + { + echo '<tr><td colspan="6">Rule # '.$rule_id.' named: '.$row['name'].'</td></tr>'; + echo '<tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td><td>actions</td></tr>'; + } + } + if ($row['item_name'] == '') // empty item name means there are no details on this rule, so we display it's name, and bail out. + { + continue; + } + $delete_text = ''; + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td>'.$row['item_name'].'</td><td>'.$row['probability'].'</td><td>'.$row['min_money'].'</td><td>'.$row['max_money'].'</td><td>'.($row['randomize'] == 1 ? 'Yes' : 'No').'</td><td><form action="./index.php?do=editlootruledetail&id='.$row['id'].'" method="post"><input type="submit" name="edit" value="Edit"><input type="submit" name="delete" value="Delete"></form></td></tr>'; + } + else + { + echo '<tr><td>'.$row['item_name'].'</td><td>'.$row['probability'].'</td><td>'.$row['min_money'].'</td><td>'.$row['max_money'].'</td><td>'.($row['randomize'] == 1 ? 'Yes' : 'No').'</td><td></td></tr>'; + } } - }else{ - if (isset($Rules["$R_id"])){ - foreach ($Rules["$R_id"] as $R){ - echo '<table border="1"><tr><th>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th></tr>'; - echo '<tr><td>'.$R['item_stat_id'].' - '.$R['name'].'</td><td>'.$R['probability'].'</td><td>'.$R['min_money'].'</td><td>'.$R['max_money'].'</td><td>'.$R['randomize'].'</td></tr>'; - echo '</table>'; - } + if (mysql_num_rows($result) > 1) // Check if there were results, if there were, we need to add the last "add details" function. + { + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="6"><form action="./index.php?do=createlootruledetail&id='.$rule_id.'" method="post"><input type="submit" name="create" value="Add New Detail"></form></td></tr>'; + } } - } - if (checkaccess('npcs', 'edit')){ - echo '<hr/>'; - echo '<form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="'.$row['id'].'"/><table border="1"><tr><th>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th></tr>'; - echo '<tr><td>'.DrawSelectBox('items', $item_result, 'item_stat_id', '', true).'</td>'; - echo '<td><input type="text" name="probability" value="0" size="8"/></td>'; - echo '<td><input type="text" name="min_money" value="0" size="11"/></td>'; - echo '<td><input type="text" name="max_money" value="0" size="11"/></td>'; - echo '<td><select name="randomize">'; - echo '<option value="0" selected="true">No</option><option value="1">Yes</option>'; - echo '</select></td></tr>'; - echo '</table><input type="submit" name="commit" value="Create Rule"/></form>'; - } - echo '<br/></td><td>'; - if (checkaccess('npcs', 'edit')){ - echo '<form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="'.$row['id'].'"/>'; - echo '<select name="npc_id">'; - $id = $row['id']; - if (isset($chars["$id"])){ - foreach ($chars["$id"] AS $c_id => $c_name){ - echo '<option value="'.$c_id.'">'; - echo $c_id. ' - '. $c_name.'</option>'; - } - } - echo '</select><input type="submit" name="commit" value="Remove NPC" /></form>'; - }else{ - $id = $row['id']; - if (isset($chars["$id"])){ - foreach ($chars["$id"] AS $c_id => $c_name){ - echo $c_id. ' - '. $c_name.'<br/>'; - } - } - } - echo '</td></tr>'."\n"; + echo '<tr><td colspan="6"><form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="0" />'; + echo '<input type="text" name="name" size="30" /><input type="submit" name="commit" value="Create New Rule"/></form></td></tr>'; + echo '</table>'; } - if (checkaccess('npcs', 'create')){ - echo '<tr><td><form action="./index.php?do=editlootrule" method="post"><input type="hidden" name="id" value="0" />'; - echo '<input type="text" name="name" size="30" /><input type="submit" name="commit" value="Create New Rule"/></form></td>'; - echo '<td></td><td></td></tr>'; + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; } - echo '</table>'; - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } } -function editlootrule(){ - if (checkaccess('npcs', 'edit')){ - if (isset($_POST['id'])){ - $id = mysql_real_escape_string($_POST['id']); - if ($_POST['commit'] == "Change Name"){ - $name = mysql_real_escape_string($_POST['name']); - $query = "UPDATE loot_rules SET name='$name' WHERE id='$id'"; - $result = mysql_query2($query); - echo '<p class="error">Update Successful</p>'; - listlootrules(); - }else if ($_POST['commit'] == "Update Rule"){ +// This method handles the "edit and delete loot_rule_detail" +function editlootruledetail() +{ + if (checkaccess('npcs', 'edit') && isset($_POST['commit']) && $_POST['commit'] == 'Update Rule Detail') + { + $id = mysql_real_escape_string($_POST['id']); $item_stat_id = mysql_real_escape_string($_POST['item_stat_id']); $probability = mysql_real_escape_string($_POST['probability']); $min_money = mysql_real_escape_string($_POST['min_money']); @@ -134,37 +97,233 @@ $query = "UPDATE loot_rule_details SET item_stat_id='$item_stat_id', probability='$probability', min_money='$min_money', max_money='$max_money', randomize='$randomize' WHERE id='$id'"; $result = mysql_query2($query); echo '<p class="error">Update Successful</p>'; + unset($_POST); listlootrules(); - }else if ($_POST['commit'] == "Remove NPC"){ - $npc_id = mysql_real_escape_string($_POST['npc_id']); - $query = "UPDATE characters SET npc_addl_loot_category_id='0' WHERE id='$npc_id'"; + } + elseif (checkaccess('npcs', 'edit') && isset($_POST['delete']) && $_POST['delete'] == 'Confirm Delete') + { + $id = mysql_real_escape_string($_POST['id']); + $query = "DELETE FROM loot_rule_details WHERE id='$id' LIMIT 1"; $result = mysql_query2($query); - echo '<p class="error">Update Successful</p>'; + echo '<p class="error">Delete Successful</p>'; + unset($_POST); listlootrules(); - }else if ($_POST['commit'] == "Create Rule"){ + } + elseif (checkaccess('npcs', 'edit') && isset($_POST['edit'])) + { + if (isset($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + if (!is_numeric($id)) + { + echo '<p class="error">Invalid (non numeric) ID</p>'; + return; + } + } + else + { + echo '<p class="error">No ID specified</p>'; + return; + } + $query = "SELECT * FROM loot_rule_details WHERE id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) != 1) + { + echo '<p class="error">No loot rule detail found in the database with this ID ('.$id.')</p>'; + return; + } + $item_result = PrepSelect('items'); + $row = mysql_fetch_array($result); + echo '<table><tr><th>'; // We set the ID in the form to the rule ID instead of the detail, so we can redirect back to ListRules. + echo '<form action="./index.php?do=editlootruledetail&id='.$row['loot_rule_id'].'" method="post"><input type="hidden" name="id" value="'.$id.'"/>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th><th>Action</th></tr>'; + echo '<tr><td>'.DrawSelectBox('items', $item_result, 'item_stat_id', $row['item_stat_id'], false).'</td>'; + echo '<td><input type="text" name="probability" value="'.$row['probability'].'" size="8"/></td>'; + echo '<td><input type="text" name="min_money" value="'.$row['min_money'].'" size="11"/></td>'; + echo '<td><input type="text" name="max_money" value="'.$row['max_money'].'" size="11"/></td>'; + echo '<td><select name="randomize">'; + if ($row['randomize'] == 1) + { + echo '<option value="0">No</option><option value="1" selected="true">Yes</option>'; + } + else + { + echo '<option value="0" selected="true">No</option><option value="1">Yes</option>'; + } + echo '</select></td>'; + echo '<td><input type="submit" name="commit" value="Update Rule Detail"/></form></td></tr>'; + echo '</table>'; + } + elseif (checkaccess('npcs', 'edit') && isset($_POST['delete'])) + { + if (isset($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + if (!is_numeric($id)) + { + echo '<p class="error">Invalid (non numeric) ID</p>'; + return; + } + } + else + { + echo '<p class="error">No ID specified</p>'; + return; + } + $query = "SELECT i.name AS item_name, l.probability, l.loot_rule_id, l.min_money, l.max_money, l.randomize FROM loot_rule_details AS l LEFT JOIN item_stats AS i ON i.id=l.item_stat_id WHERE l.id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) != 1) + { + echo '<p class="error">No loot rule detail found in the database with this ID ('.$id.')</p>'; + return; + } + $row = mysql_fetch_array($result); + echo '<p class="error">You are about to permanently delete Loot Rule Detail '.$id.' </p>'; + echo '<table><tr><td>'.$row['item_name'].'</td><td>'.$row['probability'].'</td><td>'.$row['min_money'].'</td><td>'.$row['max_money'].'</td><td>'.($row['randomize'] == 1 ? 'Yes' : 'No').'</td></tr></table>'; + echo '<form action="./index.php?do=editlootruledetail&id='.$row['loot_rule_id'].'" method="post"><input type="hidden" name="id" value="'.$id.'"/><input type="submit" name="delete" value="Confirm Delete"></form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function createlootruledetail() +{ + if (checkaccess('npcs', 'create') && isset($_POST['commit']) && $_POST['commit'] == 'Create Rule Detail') + { + $loot_rule_id = mysql_real_escape_string($_POST['loot_rule_id']); $item_stat_id = mysql_real_escape_string($_POST['item_stat_id']); $probability = mysql_real_escape_string($_POST['probability']); $min_money = mysql_real_escape_string($_POST['min_money']); $max_money = mysql_real_escape_string($_POST['max_money']); $randomize = mysql_real_escape_string($_POST['randomize']); - $query = "INSERT INTO loot_rule_details (loot_rule_id, item_stat_id, probability, min_money, max_money, randomize) VALUES ('$id', '$item_stat_id', '$probability', '$min_money', '$max_money', '$randomize')"; + $query = "INSERT INTO loot_rule_details (loot_rule_id, item_stat_id, probability, min_money, max_money, randomize) VALUES ('$loot_rule_id', '$item_stat_id', '$probability', '$min_money', '$max_money', '$randomize')"; $result = mysql_query2($query); echo '<p class="error">Update Successful</p>'; + unset($_POST); listlootrules(); - }else if ($_POST['commit'] == "Create New Rule"){ - $name = mysql_real_escape_string($_POST['name']); - $query = "INSERT INTO loot_rules (name) VALUES ('$name')"; - $result = mysql_query2($query); - echo '<p class="error">Update Successful</p>'; - listlootrules(); - } - }else{ - echo '<p class="error">Error: No ID specified</p>'; - listlootrules(); } - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } + elseif (checkaccess('npcs', 'create') && isset($_POST['create'])) + { + $item_result = PrepSelect('items'); + $item_box = DrawSelectBox('items', $item_result, 'item_stat_id', '', false); + $loot_rule_id = mysql_real_escape_string($_GET['id']); + echo '<table border="1"><form action="./index.php?do=createlootruledetail" method="post"><input type="hidden" name="loot_rule_id" value="'.$loot_rule_id.'"/>'; + echo '<tr><th>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th></tr>'; + echo '<tr><td>'.$item_box.'</td>'; + echo '<td><input type="text" name="probability" value="0" size="8"/></td>'; + echo '<td><input type="text" name="min_money" value="0" size="11"/></td>'; + echo '<td><input type="text" name="max_money" value="0" size="11"/></td>'; + echo '<td><select name="randomize">'; + echo '<option value="0" selected="selected">No</option><option value="1">Yes</option>'; + echo '</select></td></tr>'; + echo '</table><input type="submit" name="commit" value="Create Rule Detail"/></form>'; + + } } + +// Handles the "delete and rename rule" part +function editlootrule() +{ + if (checkaccess('npcs', 'edit')) + { + if (isset($_POST['id'])) + { + $id = mysql_real_escape_string($_POST['id']); + if ($_POST['commit'] == 'Change Name') + { + $name = mysql_real_escape_string($_POST['name']); + $query = "UPDATE loot_rules SET name='$name' WHERE id='$id'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + listlootrules(); + } + elseif ($_POST['commit'] == 'Delete Rule') + { + // List all affected details here, check if the rule is still in use by NPCs (can't delete if it is), and finally confirm (with pass) + if (!checkaccess('npcs', 'delete')) + { + echo '<p class="error">You are not authorized to use this feature.</p>'; + return; + } + $query = "SELECT id, name, lastname FROM characters WHERE npc_addl_loot_category_id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + echo '<p class="error">You can not delete this Loot Rule, it is still in use by the following NPCs:</p>'; + echo '<table border="1"><tr><th>ID</th><th>Name</th></tr>'; + while ($row = mysql_fetch_array($result)) + { + echo '<tr><td>'.$row['id'].'</td><td><a href="./index.php?do=npc_details&sub=main&npc_id='.$row['id'].'">'.$row['name'].' '.$row['lastname'].'</a></td></tr>'; + } + echo '</table>'; + return; + } + $query = "SELECT name FROM loot_rules WHERE id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $row = mysql_fetch_array($result); + echo '<p class="error">You are about to permanently delete rule: '.$row['name'].' with ID: '.$id.'</p>'; + } + else + { + echo '<p class="error">No rule exists with ID: '.$id.'</p>'; + } + $query = "SELECT i.name AS item_name, l.probability, l.loot_rule_id, l.min_money, l.max_money, l.randomize FROM loot_rule_details AS l LEFT JOIN item_stats AS i ON i.id=l.item_stat_id WHERE l.loot_rule_id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + echo '<p class="error">Deleting this rule will also delete the following Loot Rule Details:</p>'; + echo '<table border="1"><tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td></tr>'; + while ($row = mysql_fetch_array($result)) + { + echo '<tr><td>'.$row['item_name'].'</td><td>'.$row['probability'].'</td><td>'.$row['min_money'].'</td><td>'.$row['max_money'].'</td><td>'.($row['randomize'] == 1 ? 'Yes' : 'No').'</td></tr>'; + } + echo '</table>'; + } + echo '<form action="./index.php?do=editlootrule" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="hidden" name="id" value="'.$id.'" /><input type="submit" name="commit" value="Confirm Delete" /></form>'; + } + elseif ($_POST['commit'] == 'Confirm Delete') + { + // List all affected details here, check if the rule is still in use by NPCs (can't delete if it is), and finally confirm (with pass) + if (!checkaccess('npcs', 'delete')) + { + echo '<p class="error">You are not authorized to use this feature.</p>'; + return; + } + $query = "DELETE FROM loot_rule_details WHERE loot_rule_id='$id'"; + $result = mysql_query2($query); + $query = "DELETE FROM loot_rules WHERE id='$id' LIMIT 1"; + $result = mysql_query2($query); + echo '<p class="error">Delete Succesful.</p>'; + unset($_POST); + listlootrules(); + } + else if ($_POST['commit'] == "Create New Rule") + { + $name = mysql_real_escape_string($_POST['name']); + $query = "INSERT INTO loot_rules (name) VALUES ('$name')"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + unset($_POST); + listlootrules(); + } + else + { + echo '<p class="error">Unknown command.</p>'; + } + } + else + { + echo '<p class="error">Error: No ID specified</p>'; + listlootrules(); + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} ?> Modified: www/webconsole-new/npcs/listtrainer.php =================================================================== --- www/webconsole-new/npcs/listtrainer.php 2009-04-21 20:36:39 UTC (rev 3518) +++ www/webconsole-new/npcs/listtrainer.php 2009-04-21 22:45:40 UTC (rev 3519) @@ -1,82 +1,111 @@ <?php function listtrainer(){ - if (checkaccess('npcs', 'read')){ - $query = "SELECT skill_id, name FROM skills"; - $result = mysql_query2($query); - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - $S_id = $row['skill_id']; - $Skills["$S_id"] = $row['name']; + if (checkaccess('npcs', 'read')){ + $query = "SELECT sk.name AS skill_name, t.skill_id, t.min_rank, t.max_rank, t.player_id, t.min_faction, CONCAT_WS(' ', c.name, c.lastname) AS name, s.name AS sector FROM trainer_skills AS t LEFT JOIN characters AS c on t.player_id=c.id LEFT JOIN sectors AS s ON c.loc_sector_id=s.id LEFT JOIN skills AS sk ON sk.skill_id=t.skill_id"; + if (isset($_GET['sort'])) + { + if ($_GET['sort'] == 'name') + { + $query .= ' ORDER BY name, sector'; + } + else if ($_GET['sort'] == 'sector') + { + $query .= ' ORDER BY sector, name'; + } + } + else + { + $query .= ' ORDER BY sector, name'; + } + $result = mysql_query2($query); + $id = ""; + $skill_result = PrepSelect('skill'); + $skill_box = DrawSelectBox('skill', $skill_result, 'skill_id', '', false); + echo '<table border="1" cellspacing="0"><tr><th><a href="./index.php?do=listtrainer&sort=name">NPC</a></th><th><a href="./index.php?do=listtrainer&sort=sector">Sector</a></th><th>Details</th></tr>'; + while ($row = mysql_fetch_array($result)) + { + if ($id == "") + { + echo '<tr><td>'; + $id = $row['player_id']; + if (checkaccess('npcs', 'edit')) + { + echo '<a href="./index.php?do=npc_details&sub=main&npc_id='.$id.'">'.$row['name'].'</a></td><td>'; + } + else + { + echo $row['name'].'</td><td>'; + } + echo $row['sector'].'</td><td>'; + echo '<table border="1" cellspacing="0"><tr><th class="item_wide">Skill</th><th>MinRank</th><th>MaxRank</th><th>Min Faction</th><th>Actions</th></tr>'; + } + elseif ($id != $row['player_id']) + { + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="5"></td></tr>'; + echo '<form action="./index.php?do=edittrainer" method="post">'; + echo '<input type="hidden" name="player_id" value="'.$id.'" />'; + echo '<tr><td>'.$skill_box.'</td>'; + echo '<td><input type="text" name="min_rank" size="10"/></td>'; + echo '<td><input type="text" name="max_rank" size="10"/></td>'; + echo '<td><input type="text" name="min_faction" size="10"/></td>'; + echo '<td><input type="submit" name="commit" value="Add" /></td>'; + echo '</tr>'; + echo '</form>'; + } + echo '</table></td></tr><tr><td>'; + $id = $row['player_id']; + if (checkaccess('npcs', 'edit')) + { + echo '<a href="./index.php?do=npc_details&sub=main&npc_id='.$id.'">'.$row['name'].'</a></td><td>'; + } + else + { + echo $row['name'].'</td><td>'; + } + echo $row['sector'].'</td><td>'; + echo '<table border="1" cellspacing="0"><tr><th class="item_wide">Skill</th><th>MinRank</th><th>MaxRank</th><th>Min Faction</th><th>Actions</th></tr>'; + } + + if (checkaccess('npcs', 'edit')){ + echo '<tr><form action="./index.php?do=edittrainer" method="post">'; + echo '<input type="hidden" name="player_id" value="'.$id.'" />'; + echo '<input type="hidden" name="skill_id" value="'.$row['skill_id'].'" />'; + echo '<td>'.$row['skill_name'].'</td>'; + echo '<td><input type="text" name="min_rank" value="'.$row['min_rank'].'" size="10"/></td>'; + echo '<td><input type="text" name="max_rank" value="'.$row['max_rank'].'" size="10"/></td>'; + echo '<td><input type="text" name="min_faction" value="'.$row['min_faction'].'" size="10"/></td>'; + echo '<td><input type="submit" name="commit" value="Update" /> <input type="submit" name="commit" value="Remove" /></td>'; + echo '</form>'; + echo '</tr>'; + } + else + { + echo '<tr><td>'.$row['skill_name'].'</td><td>'.$row['min_rank'].'</td><td>'.$row['max_rank'].'</td><td>'.$row['min_faction'].'</td><td></td></tr>'; + } + } + if (checkaccess('npcs', 'edit')) + { + echo '<tr><td colspan="5"></td></tr>'; + echo '<form action="./index.php?do=edittrainer" method="post">'; + echo '<input type="hidden" name="player_id" value="'.$id.'" />'; + echo '<tr><td>'.$skill_box.'</td>'; + echo '<td><input type="text" name="min_rank" size="10"/></td>'; + echo '<td><input type="text" name="max_rank" size="10"/></td>'; + echo '<td><input type="text" name="min_faction" size="10"/></td>'; + echo '<td><input type="submit" name="commit" value="Add" /></td>'; + echo '</tr>'; + echo '</form>'; + } + echo '</table>'; + echo '</td></tr>'; + echo '</table>'; } - $query = "SELECT t.skill_id, t.min_rank, t.max_rank, t.player_id, t.min_faction FROM trainer_skills AS t"; - $result = mysql_query2($query); - while (list($skill_id, $min_rank, $max_rank, $player_id, $min_faction) = mysql_fetch_array($result)){ - $Trainer["$player_id"]["$skill_id"]['min_rank'] = $min_rank; - $Trainer["$player_id"]["$skill_id"]['max_rank'] = $max_rank; - $Trainer["$player_id"]["$skill_id"]['min_faction'] = $min_faction; - $Trainer["$player_id"]["$skill_id"]['skill'] = $skill_id; + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; } - $skill_result = PrepSelect('skill'); - $query = "SELECT DISTINCT t.player_id, CONCAT_WS(' ', c.name, c.lastname) AS name, s.name AS sector FROM trainer_skills AS t LEFT JOIN characters AS c on t.player_id=c.id LEFT JOIN sectors AS s ON c.loc_sector_id=s.id"; - if (isset($_GET['sort'])){ - if ($_GET['sort'] == 'name'){ - $query = $query . ' ORDER BY name, sector'; - }else if ($_GET['sort'] == 'sector'){ - $query = $query . ' ORDER BY sector, name'; - } - }else{ - $query = $query . ' ORDER BY sector, name'; - } - $result = mysql_query2($query); - echo '<table border="1"><tr><th><a href="./index.php?do=listtrainer&sort=name">NPC</a></th><th><a href="./index.php?do=listtrainer&sort=sector">Sector</a></th><th>Details</th></tr>'; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'; - $T_id = $row['player_id']; - if (checkaccess('npcs', 'edit')){ - echo '<a href="./index.php?do=npc_details&sub=main&npc_id='.$T_id.'">'.$row['name'].'</a></td><td>'; - }else{ - echo $row['name'].'</td><td>'; - } - echo $row['sector'].'</td><td>'; - foreach ($Trainer["$T_id"] AS $t){ - if (checkaccess('npcs', 'edit')){ - echo '<form action="./index.php?do=edittrainer" method="post">'; - echo '<input type="hidden" name="player_id" value="'.$T_id.'" />'; - echo '<input type="hidden" name="skill_id" value="'.$t['skill'].'" />'; - echo '<table border="1"><tr><th class="item_wide">Skill</th><th>MinRank</th><th>MaxRank</th><th>Min Faction</th><th>Actions</th></tr>'; - $skill = $t['skill']; - echo '<tr><td>'.htmlspecialchars($Skills["$skill"]).'</td>'; - echo '<td><input type="text" name="min_rank" value="'.$t['min_rank'].'" size="10"/></td>'; - echo '<td><input type="text" name="max_rank" value="'.$t['max_rank'].'" size="10"/></td>'; - echo '<td><input type="text" name="min_faction" value="'.$t['min_faction'].'" size="10"/></td>'; - echo '<td><input type="submit" name="commit" value="Update" /><br/><input type="submit" name="commit" value="Remove" /></td>'; - echo '</tr></table>'; - echo '</form>'; - }else{ - echo '<table border="1"><tr><th class="item_wide">Skill</th><th>MinRank</th><th>MaxRank</th><th>Min Faction</th></tr>'; - $skill = $t['skill']; - echo '<tr><td>'.htmlspecialchars($Skills["$skill"]).'</td><td>'.$t['min_rank'].'</td><td>'.$t['max_rank'].'</td><td>'.$t['min_faction'].'</tr>'; - echo '</table>'; - } - } - if (checkaccess('npcs', 'edit')){ - echo '<hr/><form action="./index.php?do=edittrainer" method="post">'; - echo '<input type="hidden" name="player_id" value="'.$T_id.'" />'; - echo '<table border="1"><tr><th class="item_wide">Skill</th><th>MinRank</th><th>MaxRank</th><th>Min Faction</th></tr>'; - echo '<tr><td>'.DrawSelectBox('skill', $skill_result, 'skill_id', '').'</td>'; - echo '<td><input type="text" name="min_rank" size="10"/></td>'; - echo '<td><input type="text" name="max_rank" size="10"/></td>'; - echo '<td><input type="text" name="min_faction" size="10"/></td>'; - echo '</tr>'; - echo '</table>'; - echo '<input type="submit" name="commit" value="Add" />'; - echo '</form>'; - } - echo '</td></tr>'; - } - echo '</table>'; - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } } function edittrainer(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-04-24 16:06:58
|
Revision: 3537 http://planeshift.svn.sourceforge.net/planeshift/?rev=3537&view=rev Author: weltall2 Date: 2009-04-24 16:06:46 +0000 (Fri, 24 Apr 2009) Log Message: ----------- various fixes, improvements, updates from ravna to the webconsole Modified Paths: -------------- www/webconsole-new/crafting/patterns.php www/webconsole-new/crafting/process.php www/webconsole-new/items/edititem.php www/webconsole-new/quests/validatequest.php www/webconsole-new/rules/spells.php Modified: www/webconsole-new/crafting/patterns.php =================================================================== --- www/webconsole-new/crafting/patterns.php 2009-04-24 15:09:28 UTC (rev 3536) +++ www/webconsole-new/crafting/patterns.php 2009-04-24 16:06:46 UTC (rev 3537) @@ -50,11 +50,12 @@ editpattern(); return; }else{ - $query = "SELECT id, name FROM item_stats"; + $query = "SELECT id, name FROM item_stats WHERE stat_type='B'"; $Temp = mysql_query2($query); while ($row=mysql_fetch_array($Temp, MYSQL_ASSOC)){ $iid=$row['id']; $Items["$iid"]=$row['name']; + $Items[0]=""; } $query = "SELECT pattern_name, description, designitem_id FROM trade_patterns WHERE id='$pattern_id'"; $result = mysql_query2($query); @@ -77,9 +78,9 @@ echo '<tr><td>Design Item:</td><td>'.$Items["$i"].'</td></tr>'; } echo '<p class="bold">Available Transforms</p>'; - $query = "SELECT t.id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE pattern_id='$pattern_id' GROUP BY id"; + $query = "SELECT t.id, t.process_id, p.name, t.result_id, i.name AS result_name, c.name AS result_cat, c.category_id AS result_cat_id, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id WHERE pattern_id='$pattern_id' GROUP BY id ORDER BY p.name, i.name"; $result = mysql_query2($query); - echo '<table><tr><th>Source Item</th><th>Process</th><th>Result Item</th><th>Time</th><th>Resultant Quality</th><th>Actions</th></tr>'; + echo '<table><tr><th colspan="2">Source Item</th><th>Category</th><th>Process</th><th colspan="2">Result Item</th><th>Category</th><th>Time</th><th>Result Q</th><th>Actions</th></tr>'; $Alt = FALSE; while ($row=mysql_fetch_array($result, MYSQL_ASSOC)){ $Alt = !$Alt; @@ -88,11 +89,27 @@ }else{ echo '<tr class="color_b">'; } - $item_id=$row['item_id']; - echo '<td>'.$row['item_qty'].' '.$Items["$item_id"].'</td>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['item_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['item_qty'].' </td><td> '.$item_name.' </td>'; + } + echo '<td>'.$row['item_cat'].'</td>'; echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; - $result_id=$row['result_id']; - echo '<td>'.$row['result_qty'].' '.$Items["$result_id"].'</td>'; + $result_name = ($row['result_name'] == "NULL" ? ($row['result_id'] != 0 ? "BROKEN" : "") :$row['result_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['result_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['result_cat_id'].'&item='.$row['result_id'].'">'.$result_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['result_qty'].' </td><td> '.$result_name.'</td>'; + } + echo '<td>'.$row['result_cat'].'</td>'; echo '<td>'.$row['trans_points'].'</td>'; echo '<td>'.$row['penilty_pct'].'</td>'; echo '<td><a href="./index.php?do=transform&id='.$row['id'].'">Edit</a></td>'; @@ -103,10 +120,10 @@ echo '<p class="bold">Available Combinations</p>'; $Alt = FALSE; $item = -1; - $query = "SELECT result_id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE pattern_id='$pattern_id' ORDER BY result_id"; + $query = "SELECT t.result_id, c.name AS result_cat, c.category_id AS result_cat_id, i.name AS result_name, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.min_qty, t.max_qty, t.description FROM trade_combinations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id WHERE pattern_id='$pattern_id' ORDER BY i.name"; $result = mysql_query2($query); if (mysql_num_rows($result)!= 0){ - echo '<table><tr><th>Result Item</th><th>Source Items</th><th>Actions</th></tr>'; + echo '<table><tr><th colspan="2">Result Item</th><th>Category</th><th>Source Items</th><th>Actions</th></tr>'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ if ($item != $row['result_id']){ if ($item != '-1'){ @@ -120,13 +137,36 @@ echo '<tr class="color_b">'; } $result_id = $row['result_id']; - echo '<td>'.$row['result_qty'].' '.$Items["$result_id"].'</td>'; - $item_id = $row['item_id']; - echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$Items["$item_id"]; + $result_name = ($row['result_name'] == "NULL" ? ($row['result_id'] != 0 ? "BROKEN" : "") :$row['result_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['result_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['result_cat_id'].'&item='.$row['result_id'].'">'.$result_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['result_qty'].' </td><td> '.$result_name.'</td>'; + } + echo '<td>'.$row['result_cat'].'</td>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> ('.$row['item_cat'].')'; + } + else + { + echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$item_name.' ('.$row['item_cat'].')'; + } }else{ echo '<br/>'; - $item_id = $row['item_id']; - echo $row['min_qty'].' to '.$row['max_qty'].' '.$Items["$item_id"]; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo $row['min_qty'].' to '.$row['max_qty'].' <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> ('.$row['item_cat'].')'; + } + else + { + echo $row['min_qty'].' to '.$row['max_qty'].' '.$item_name.' ('.$row['item_cat'].')'; + } } } echo '<td><a href="./index.php?do=editcombine&id='.$item.'&pattern_id='.$_GET['id'].'">Edit</a></td></tr></table>'; @@ -224,9 +264,9 @@ echo '</table>'; echo '<p class="bold">Available Transforms</p>'; - $query = "SELECT t.id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE pattern_id='$pattern_id' GROUP BY id"; + $query = "SELECT t.id, t.process_id, p.name, t.result_id, i.name AS item_name, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE pattern_id='$pattern_id' GROUP BY id ORDER BY p.name, i.name"; $result = mysql_query2($query); - echo '<table><tr><th>Source Item</th><th>Process</th><th>Result Item</th><th>Time</th><th>Resultant Quality</th></tr>'; + echo '<table><tr><th colspan="2">Source Item</th><th>Process</th><th colspan="2">Result Item</th><th>Time</th><th>Result Q</th></tr>'; $alt = FALSE; while ($row=mysql_fetch_array($result, MYSQL_ASSOC)) { @@ -239,10 +279,10 @@ echo '<tr class="color_b">'; } $item_id=$row['item_id']; - echo '<td>'.$row['item_qty'].' '.$items["$item_id"].'</td>'; + echo '<td>'.$row['item_qty'].' </td><td> '.$items["$item_id"].'</td>'; echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; $result_id=$row['result_id']; - echo '<td>'.$row['result_qty'].' '.$items["$result_id"].'</td>'; + echo '<td>'.$row['result_qty'].' </td><td> '.$items["$result_id"].'</td>'; echo '<td>'.$row['trans_points'].'</td>'; echo '<td>'.$row['penilty_pct'].'</td>'; echo '</tr>'; @@ -255,7 +295,7 @@ $result = mysql_query2($query); if (mysql_num_rows($result) != 0) { - echo '<table><tr><th>Result Item</th><th>Source Items</th></tr>'; + echo '<table><tr><th colspan="2">Result Item</th><th>Source Items</th></tr>'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ if ($item != $row['result_id']) { @@ -273,7 +313,7 @@ echo '<tr class="color_b">'; } $result_id = $row['result_id']; - echo '<td>'.$row['result_qty'].' '.$items["$result_id"].'</td>'; + echo '<td>'.$row['result_qty'].' </td><td> '.$items["$result_id"].'</td>'; $item_id = $row['item_id']; echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$items["$item_id"]; } Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-04-24 15:09:28 UTC (rev 3536) +++ www/webconsole-new/crafting/process.php 2009-04-24 16:06:46 UTC (rev 3537) @@ -16,12 +16,17 @@ $skills["$i"] = $row['name']; } $skills[0] = ""; - $query = "SELECT * FROM trade_processes"; + /* + Notice: skill '0' is sword skill, however, this is the only table that does that, also the database seems to use '0' as + "NONE" as well, so here we have a bug most likely. Currently it does *not* show anything when the ID is '0', so it shows + swords (skill id 0) as no skill too. (although it does have a min/max, so that will in turn cause it to work fine in engine.) + */ + $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $id = $row['process_id']; mysql_data_seek($result, 0); - echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th>Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; if (checkaccess('crafting', 'edit')){ echo '<th>Actions</th>'; } @@ -46,7 +51,7 @@ echo '<td>'.$items["$i"].'</td>'; echo '<td>'.$row['constraints'].'</td>'; $i = $row['garbage_id']; - echo '<td>'.$row['garbage_qty'].' '.$items["$i"].'</td>'; + echo '<td>'.$row['garbage_qty'].' </td><td> '.$items["$i"].'</td>'; $i = $row['primary_skill_id']; echo '<td>'.$skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; $i = $row['secondary_skill_id']; @@ -85,12 +90,12 @@ $Skills["$i"] = $row['name']; } $Skills[0] = ""; - $query = "SELECT * FROM trade_processes WHERE process_id = '$id'"; + $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes AS t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id WHERE process_id = '$id' ORDER BY s.name, t.primary_min_skill, ss.name, secondary_min_skill, t.name"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); echo '- '.$row['name'].'</p>'; mysql_data_seek($result, 0); - echo '<table><tr><th>Sub-Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th>Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + echo '<table><tr><th>Sub-Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; if (checkaccess('crafting', 'edit')){ echo '<th>Actions</th>'; } @@ -111,7 +116,7 @@ echo '<td>'.$Items["$i"].'</td>'; echo '<td>'.$row['constraints'].'</td>'; $i = $row['garbage_id']; - echo '<td>'.$row['garbage_qty'].' '.$Items["$i"].'</td>'; + echo '<td>'.$row['garbage_qty'].' </td><td> '.$Items["$i"].'</td>'; $i = $row['primary_skill_id']; echo '<td>'.$Skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; $i = $row['secondary_skill_id']; Modified: www/webconsole-new/items/edititem.php =================================================================== --- www/webconsole-new/items/edititem.php 2009-04-24 15:09:28 UTC (rev 3536) +++ www/webconsole-new/items/edititem.php 2009-04-24 16:06:46 UTC (rev 3537) @@ -211,7 +211,7 @@ $result = mysql_query2($query); ?> <SCRIPT language="javascript"> - document.location = "index.php?do=listitems&item=<?php echo $id?>"; + document.location = "index.php?do=listitems&category=<?php echo $category_id?>&item=<?php echo $id?>"; </script> <?php exit; Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-04-24 15:09:28 UTC (rev 3536) +++ www/webconsole-new/quests/validatequest.php 2009-04-24 16:06:46 UTC (rev 3537) @@ -116,7 +116,7 @@ } elseif(strncasecmp($line, "Menu:", 5) === 0) // Menu: trigger { - if(getTriggerCount($line, "Menu:", $count) === false) + if(getTriggerCount($line, "Menu:", $count, 80) === false) { append_log("parse error, Menu: with no text on line $line_number"); } @@ -268,8 +268,9 @@ /** * get the count for $trigger in $line and put it in $count. If any trigger has no text following it, return false otherwise true. */ -function getTriggerCount($line, $trigger, &$count) +function getTriggerCount($line, $trigger, &$count, $max_chars_per_line='99999') { + global $line_number; $count = 0; $pos = 0; while (($pos = stripos($line, $trigger, $pos)) !== false) @@ -288,6 +289,10 @@ { $count++; } + if (strlen($temp_line) > $max_chars_per_line) + { + append_log("Warning, more than $max_chars_per_line char found in trigger on line $line_number"); + } check_parenthesis($temp_line); // check for parenthesis and and if they're found, check if they're valid. $pos += strlen($trigger); // move the position pointer past our first find so it doesn't get seen again. } @@ -491,7 +496,7 @@ { $item_name = trim($item); } - $query = sprintf("SELECT id FROM item_stats WHERE name = '%s'", mysql_real_escape_string($item_name)); + $query = sprintf("SELECT id FROM item_stats WHERE name = '%s' AND stat_type='B'", mysql_real_escape_string($item_name)); $result = mysql_query2($query); if (mysql_num_rows($result) == 1) { Modified: www/webconsole-new/rules/spells.php =================================================================== --- www/webconsole-new/rules/spells.php 2009-04-24 15:09:28 UTC (rev 3536) +++ www/webconsole-new/rules/spells.php 2009-04-24 16:06:46 UTC (rev 3537) @@ -157,18 +157,6 @@ echo '<tr><td>NPC Spell Power</td><td><input type="text" name="npc_spell_power" value="'.$row['npc_spell_power'].'" size="30" /></td></tr>'; echo '<tr><td>Target Type</td><td>'; $tt = $row['target_type']; - if ($tt >= 256){ - echo 'TARGET_PVP: <input type="checkbox" name="tt[]" value="256" checked="true"/><br/>'; - $tt -= 256; - }else{ - echo 'TARGET_PVP: <input type="checkbox" name="tt[]" value="256"/><br/>'; - } - if ($tt >=128){ - echo 'TARGET_GM: <input type="checkbox" name="tt[]" value="128" checked="true"/><br/>'; - $tt -= 128; - }else{ - echo 'TARGET_GM: <input type="checkbox" name="tt[]" value="128" /><br/>'; - } if ($tt >=64){ echo 'TARGET_DEAD: <input type="checkbox" name="tt[]" value="64" checked="true"/><br/>'; $tt -= 64; @@ -199,12 +187,6 @@ }else{ echo 'TARGET_ITEM: <input type="checkbox" name="tt[]" value="4"/><br/>'; } - if ($tt >=2){ - echo 'TARGET_NPC: <input type="checkbox" name="tt[]" value="2" checked="true"/><br/>'; - $tt -= 2; - }else{ - echo 'TARGET_NPC: <input type="checkbox" name="tt[]" value="2"/><br/>'; - } if ($tt >= 1){ echo 'TARGET_NONE: <input type="checkbox" name="tt[]" value="1" checked="true"/><br/>'; $tt -= 1; @@ -259,13 +241,7 @@ echo '<tr><td>Target Type</td><td>'; $tt = $row['target_type']; while ($tt > 0){ - if ($tt >= 256){ - echo 'TARGET_PVP<br/>'; - $tt -= 256; - }else if ($tt >=128){ - echo 'TARGET_GM<br/>'; - $tt -= 128; - }else if ($tt >=64){ + if ($tt >=64){ echo 'TARGET_DEAD<br/>'; $tt -= 64; }else if ($tt >=32){ @@ -280,9 +256,6 @@ }else if ($tt >=4){ echo 'TARGET_ITEM<br/>'; $tt -= 4; - }else if ($tt >=2){ - echo 'TARGET_NPC<br/>'; - $tt -= 2; }else{ echo 'TARGET_NONE<br/>'; $tt -= 1; @@ -407,21 +380,18 @@ echo '<tr><td>Max Power</td><td><input type="text" name="max_power" size="30"/></td></tr>'; echo '<tr><td>NPC Spell Power</td><td><input type="text" name="npc_spell_power" size="30" /></td></tr>'; echo '<tr><td>Target Type</td><td>'; - echo 'TARGET_PVP: <input type="checkbox" name="tt[]" value="256"/><br/>'; - echo 'TARGET_GM: <input type="checkbox" name="tt[]" value="128" /><br/>'; echo 'TARGET_DEAD: <input type="checkbox" name="tt[]" value="64"/><br/>'; echo 'TARGET_FOE: <input type="checkbox" name="tt[]" value="32"/><br/>'; echo 'TARGET_FRIEND: <input type="checkbox" name="tt[]" value="16"/><br/>'; echo 'TARGET_SELF: <input type="checkbox" name="tt[]" value="8"/><br/>'; echo 'TARGET_ITEM: <input type="checkbox" name="tt[]" value="4"/><br/>'; - echo 'TARGET_NPC: <input type="checkbox" name="tt[]" value="2"/><br/>'; echo 'TARGET_NONE: <input type="checkbox" name="tt[]" value="1"/><br/>'; echo '</td></tr>'; - echo '<tr><td>Exclude Target</td><td><input type="text" name="exclude_target" value="'.$row['exclude_target'].'" size="30" /></td></tr>'; - echo '<tr><td>Cast Duration</td><td><input type="text" name="cast_duration" value="'.$row['cast_duration'].'" size="30" /></td></tr>'; - echo '<tr><td>Range</td><td><input type="text" name="range" value="'.$row['range'].'" size="30" /></td></tr>'; - echo '<tr><td>Aoe Radius</td><td><input type="text" name="aoe_radius" value="'.$row['aoe_radius'].'" size="30" /></td></tr>'; - echo '<tr><td>Aoe Range</td><td><input type="text" name="aoe_angle" value="'.$row['aoe_angle'].'" size="30" /></td></tr>'; + echo '<tr><td>Exclude Target</td><td><input type="text" name="exclude_target" value="" size="30" /></td></tr>'; + echo '<tr><td>Cast Duration</td><td><input type="text" name="cast_duration" value="" size="30" /></td></tr>'; + echo '<tr><td>Range</td><td><input type="text" name="range" value="" size="30" /></td></tr>'; + echo '<tr><td>Aoe Radius</td><td><input type="text" name="aoe_radius" value="" size="30" /></td></tr>'; + echo '<tr><td>Aoe Range</td><td><input type="text" name="aoe_angle" value="" size="30" /></td></tr>'; echo '<tr><td>Image Name</td><td><input type="text" name="image_name" size="30" /></td></tr>'; $cstrings = PrepSelect('cstring'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-04-27 20:50:17
|
Revision: 3578 http://planeshift.svn.sourceforge.net/planeshift/?rev=3578&view=rev Author: weltall2 Date: 2009-04-27 20:50:07 +0000 (Mon, 27 Apr 2009) Log Message: ----------- various fix improvements and new functions like a 'where an item is used' function to the webconsole. check history for more informations patch by ravna Modified Paths: -------------- www/webconsole-new/commonfunctions.php www/webconsole-new/crafting/combines.php www/webconsole-new/crafting/patterns.php www/webconsole-new/crafting/process.php www/webconsole-new/crafting/transforms.php www/webconsole-new/index.php www/webconsole-new/items/deleteitem.php www/webconsole-new/items/listitems.php www/webconsole-new/npcs/npc_details.php www/webconsole-new/quests/validatequest.php Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/commonfunctions.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -182,7 +182,7 @@ $typevals["cast_events"] = "SELECT name, name FROM progression_events WHERE name LIKE 'cast %'"; $typevals["glyphs"] = "SELECT id, name FROM item_stats WHERE category_id='5' ORDER BY name"; $typevals["locations"] = "SELECT id, name FROM sc_locations ORDER BY name"; - $typevals["process"] = "SELECT process_id, name FROM trade_processes ORDER BY name"; + $typevals["process"] = "SELECT DISTINCT process_id, CONCAT(process_id, ' - ', name) FROM trade_processes ORDER BY name"; $typevals["patterns"] = "SELECT id, pattern_name FROM trade_patterns ORDER BY pattern_name"; $typevals["mind_slot_items"] = "SELECT id, name FROM item_stats WHERE stat_type='B' AND valid_slots LIKE '%MIND%' ORDER BY name"; @@ -214,7 +214,7 @@ $typevals["glyphs"] = '""'; $typevals["locations"] = '"-1"'; $typevals["process"] = '""'; - $typevals["patterns"] = '""'; + $typevals["patterns"] = '"0"'; $nullval = $typevals[$type]; @@ -272,4 +272,4 @@ return $id; } -?> +?> \ No newline at end of file Modified: www/webconsole-new/crafting/combines.php =================================================================== --- www/webconsole-new/crafting/combines.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/crafting/combines.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -24,7 +24,7 @@ { if ($id != 0) { - $query = "UPDATE trade_combinations SET result_id='$result_id', result_qty='$result_qty', item_id='$item_id', min_qty='$min_qty', max_qty='$max_qty', description='$description' WHERE id='$id'"; + $query = "UPDATE trade_combinations SET pattern_id='$pattern_id', result_id='$result_id', result_qty='$result_qty', item_id='$item_id', min_qty='$min_qty', max_qty='$max_qty', description='$description' WHERE id='$id'"; mysql_query2($query); } else // someone added this entry. @@ -57,7 +57,8 @@ elseif (checkaccess('crafting','edit') && isset($_GET['id']) && isset($_GET['pattern_id'])) { $id = mysql_real_escape_string($_GET['id']); - $query = "SELECT id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE result_id='$id'"; + $pattern_id = mysql_real_escape_string($_GET['pattern_id']); + $query = "SELECT id, pattern_id, result_qty, item_id, min_qty, max_qty, description FROM trade_combinations WHERE result_id='$id' AND pattern_id='$pattern_id'"; $result = mysql_query2($query); if (mysql_num_rows($result) < 1) { @@ -73,12 +74,14 @@ $result_item = $row[1]; } } - $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletecombine&pattern_id='.$_GET['pattern_id'].'&result_id='.$id.'">Delete Combination</a>' : ""); + $patterns = PrepSelect('patterns'); + $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletecombine&pattern_id='.$pattern_id.'&result_id='.$id.'">Delete Combination</a>' : ""); $row = mysql_fetch_array($result); echo '<p class="bold">Edit Combine</p>'."\n"; echo 'If you set any item to "NONE", it will be removed from the combination.'; - echo '<form action="./index.php?do=editcombine&id='.$_GET['pattern_id'].'" method="post" /><table>'; // we set pattern_id here instead of combination ID, so we can redirect people back to where they came from. - echo '<tr><td>Pattern id</td><td><input type="hidden" name="pattern_id" value="'.$_GET['pattern_id'].'" />'.$_GET['pattern_id'].'</td></tr>'; + echo '<form action="./index.php?do=editcombine&id='.$pattern_id.'" method="post" /><table>'; // we set pattern_id here instead of combination ID, so we can redirect people back to where they came from. + echo '<tr><td colspan="2">If you change this dropdown, you will move this transformation to another pattern, moving it to "NONE" will make it "patternless".</td></tr>'; + echo '<tr><td>Pattern</td><td>'.DrawSelectBox('patterns', $patterns, 'pattern_id', $row['pattern_id'], true).'</td></tr>'; echo '<tr><td>Result Item</td><td><input type="hidden" name="result_id" value="'.$id.'" />'.$result_item.'</td></tr>'; echo '<tr><td>Result Quantity</td><td><input type="text" name="result_qty" value="'.$row['result_qty'].'" /></td></tr>'; do Modified: www/webconsole-new/crafting/patterns.php =================================================================== --- www/webconsole-new/crafting/patterns.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/crafting/patterns.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -86,7 +86,7 @@ echo '<p>Please take note that this is not technically a pattern, it is the lack of it. This collection of combines and transforms is considered "general knowledge" and because of that is not associated with any pattern. You are free to add/edit any of these as long as you keep this in mind.</p>'; } echo '<p class="bold">Available Transforms</p>'; - $query = "SELECT t.id, t.process_id, p.name, t.result_id, i.name AS result_name, c.name AS result_cat, c.category_id AS result_cat_id, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id WHERE pattern_id='$pattern_id' GROUP BY id ORDER BY p.name, i.name"; + $query = "SELECT t.id, t.process_id, p.name, t.result_id, i.name AS result_name, c.name AS result_cat, c.category_id AS result_cat_id, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id WHERE pattern_id='$pattern_id' GROUP BY id ORDER BY p.name, ii.name, i.name"; $result = mysql_query2($query); echo '<table><tr><th colspan="2">Source Item</th><th>Category</th><th>Process</th><th colspan="2">Result Item</th><th>Category</th><th>Time</th><th>Result Q</th><th>Actions</th></tr>'; $Alt = FALSE; Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/crafting/process.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -21,7 +21,7 @@ "NONE" as well, so here we have a bug most likely. Currently it does *not* show anything when the ID is '0', so it shows swords (skill id 0) as no skill too. (although it does have a min/max, so that will in turn cause it to work fine in engine.) */ - $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name"; + $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name, t.process_id, t.subprocess_number"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $id = $row['process_id']; Modified: www/webconsole-new/crafting/transforms.php =================================================================== --- www/webconsole-new/crafting/transforms.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/crafting/transforms.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -9,6 +9,7 @@ } if (isset($_POST['commit']) && $_POST['commit'] == "Update Transform"){ $id = mysql_real_escape_string($_GET['id']); + $pattern_id = mysql_real_escape_string($_POST['pattern_id']); $item_qty = mysql_real_escape_string($_POST['item_qty']); $item_id = mysql_real_escape_string($_POST['item_id']); $item_id = ($item_id == '' ? 0 : $item_id); // change id to 0 if it is not provided by user ('') @@ -23,7 +24,7 @@ echo '<p class="error">Source and Result item can not both be empty.</p>'; return; } - $query = "UPDATE trade_transformations SET item_qty='$item_qty', item_id='$item_id', process_id='$process_id', result_qty='$result_qty', result_id='$result_id', trans_points='$trans_points', penilty_pct='$penilty_pct' WHERE id='$id'"; + $query = "UPDATE trade_transformations SET pattern_id='$pattern_id', item_qty='$item_qty', item_id='$item_id', process_id='$process_id', result_qty='$result_qty', result_id='$result_id', trans_points='$trans_points', penilty_pct='$penilty_pct' WHERE id='$id'"; $result = mysql_query2($query); echo '<p class="error">Update Successful</p>'; unset($_POST); @@ -33,12 +34,15 @@ $id = mysql_real_escape_string($_GET['id']); $items = PrepSelect('items'); $process = PrepSelect('process'); - $query = "SELECT process_id, result_id, result_qty, item_id, item_qty, trans_points, penilty_pct, description FROM trade_transformations WHERE id='$id'"; + $patterns = PrepSelect('patterns'); + $query = "SELECT pattern_id, process_id, result_id, result_qty, item_id, item_qty, trans_points, penilty_pct, description FROM trade_transformations WHERE id='$id'"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $delete_text = (checkaccess('crafting','delete') ? '<a href="./index.php?do=deletetransform&id='.$id.'">Delete Transform</a>' : ""); echo '<p class="header">Transformation Details</p>'; echo '<form action="./index.php?do=transform&id='.$id.'" method="post"><table>'; + echo '<tr><td colspan="2">If you change this dropdown, you will move this transformation to another pattern, moving it to "NONE" will make it "patternless".</td></tr>'; + echo '<tr><td>Pattern</td><td>'.DrawSelectBox('patterns', $patterns, 'pattern_id', $row['pattern_id'], true).'</td></tr>'; echo '<tr><td>Source Item</td><td><input type="text" name="item_qty" value="'.$row['item_qty'].'" size="4"/> '.DrawSelectBox('items', $items, 'item_id', $row['item_id'], true).'</td></tr>'; echo '<tr><td>Process</td><td>'.DrawSelectBox('process', $process, 'process_id', $row['process_id']).'</td></tr>'; echo '<tr><td>Result Item</td><td><input type="text" name="result_qty" value="'.$row['result_qty'].'" size="4"/> '.DrawSelectBox('items', $items, 'result_id', $row['result_id'], true).'</td></tr>'; Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/index.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -112,13 +112,19 @@ case 'items': include('./items/itemmain.php'); itemmain(); - break; + break; case 'listitems': include('./items/itemmain.php'); include('./items/listitems.php'); itemmain(); listitems(); break; + case 'showitemusage': + include('./items/itemmain.php'); + include('./items/listitems.php'); + itemmain(); + showitemusage(); + break; case 'edititem': include('./items/itemmain.php'); include('./items/edititem.php'); Modified: www/webconsole-new/items/deleteitem.php =================================================================== --- www/webconsole-new/items/deleteitem.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/items/deleteitem.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -27,14 +27,17 @@ } }else{ $id = mysql_real_escape_string($_GET['item']); - $query = "SELECT COUNT(id) FROM item_instances WHERE item_stats_id_standard=$id"; - $result = mysql_query2($query); - $row = mysql_fetch_row($result); - $num = $row[0]; + include('./items/listitems.php'); + echo 'Looking up usage for this item.'; + if (showitemusage()) + { + echo '<p class="error"> You cannot delete this item because it is still in use.'; + return; + } $query = "SELECT name FROM item_stats WHERE id=$id"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); - echo '<p>You are about to permanently delete item id '.$id.' and all related instances<br/>Item Name: '.$row['name'].'<br/>Number of Instances: '.$num.'</p>'; + echo '<p>No usage of this item was found <br /><br />You are about to permanently delete item id '.$id.' Item Name: '.$row['name'].'</p>'; echo '<form action="./index.php?do=deleteitem&commit&id='.$id.'" method="post">Enter your password to confirm: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; } }else{ Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/items/listitems.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -72,6 +72,7 @@ echo '<table border="1" class="top">'; if (checkaccess('items','edit')){ echo '<tr><td>Item Actions:</td><td><a href="./index.php?do=edititem&item='.$_GET['item'].'">Edit Item</a>'; + echo ' -- <a href="./index.php?do=showitemusage&id='.$id.'">Check Usage</a>'; } if (checkaccess('items','delete')){ echo ' -- <a href="./index.php?do=deleteitem&item='.$_GET['item'].'">Delete Item</a>'; @@ -88,4 +89,429 @@ echo '<p class="error">You are not authorized to use these functions!</p>'; } } + +/* +This method prints all places where this item is used. It returns false if the item is not used, and true if it was used. +*/ +function showitemusage() +{ + if(!checkaccess('items', 'read')) + { + echo '<p class="error">You are not authorized to use these functions!</p>'; + return; + } + $id = ''; + if (isset($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + } + elseif (isset($_GET['item'])) // some scripts call it this, should be refactored someday. + { + $id = mysql_real_escape_string($_GET['item']); + } + else + { + echo '<p class="error">No valid ID was set.</p>'; + return; + + } + $query = "SELECT name FROM item_stats WHERE id=$id"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result); + $my_item_name = $row['name']; + $item_is_used = false; + + echo '<p>This is the usage repor for item #'.$id.' named: '.$my_item_name.'</p>'; + + // pattern + $query = "SELECT t.id, t.pattern_name, t.description, i.name FROM trade_patterns AS t LEFT JOIN item_stats AS i ON t.designitem_id=i.id WHERE t.designitem_id='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('crafting', 'read')) + { + echo '<p class="header">Crafting Patterns using this item:</p>'; + $alt = FALSE; + echo '<table><tr><th>ID</th><th>Pattern Name</th><th>Description</th><th>Design Item</th>'; + echo '<th>Actions</th>'; + echo '</tr>'; + while ($row = mysql_fetch_array($result)){ + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.$row['pattern_name'].'</td>'; + echo '<td>'.$row['description'].'</td>'; + echo '<td>'.$row['name'].'</td>'; + echo '<td><a href="./index.php?do=editpattern&id='.$row['id'].'">Details</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>You do not have permission to view Crafting patterns, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Crafting Patterns are using this item.</p>'; + } + + // transforms + $query = "SELECT pat.pattern_name, t.pattern_id, t.id, t.process_id, p.name, t.result_id, i.name AS result_name, c.name AS result_cat, c.category_id AS result_cat_id, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id LEFT JOIN trade_patterns AS pat ON pat.id=t.pattern_id WHERE t.result_id='$id' OR t.item_id='$id' GROUP BY id ORDER BY p.name, i.name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('crafting', 'read')) + { + echo '<p class="bold">Transforms using this item:</p>'; + echo '<table><tr><th>Pattern</th><th colspan="2">Source Item</th><th>Category</th><th>Process</th><th colspan="2">Result Item</th><th>Category</th><th>Time</th><th>Result Q</th><th>Actions</th></tr>'; + $alt = FALSE; + while ($row=mysql_fetch_array($result)) + { + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + $pattern_name = ($row['pattern_id'] != 0 ? $row['pattern_name'] : "patternless"); + echo '<td><a href="./index.php?do=editpattern&id='.$row['pattern_id'].'">'.$pattern_name.'</a></td>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['item_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['item_qty'].' </td><td> '.$item_name.' </td>'; + } + echo '<td>'.$row['item_cat'].'</td>'; + echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; + $result_name = ($row['result_name'] == "NULL" ? ($row['result_id'] != 0 ? "BROKEN" : "") :$row['result_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['result_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['result_cat_id'].'&item='.$row['result_id'].'">'.$result_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['result_qty'].' </td><td> '.$result_name.'</td>'; + } + echo '<td>'.$row['result_cat'].'</td>'; + echo '<td>'.$row['trans_points'].'</td>'; + echo '<td>'.$row['penilty_pct'].'</td>'; + echo '<td><a href="./index.php?do=transform&id='.$row['id'].'">Edit</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>You do not have permission to view Transforms, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Transforms are using this item.</p>'; + } + + // Combinations + $query = "SELECT DISTINCT pat.pattern_name, t.result_id, t.pattern_id, c.name AS result_cat, c.category_id AS result_cat_id, i.name AS result_name, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.min_qty, t.max_qty, t.description FROM trade_combinations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id LEFT JOIN trade_patterns AS pat ON pat.id=t.pattern_id WHERE result_id='$id' OR item_id='$id' ORDER BY t.pattern_id, result_name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('crafting', 'read')) + { + echo '<p class="bold">Combinations using this item:</p>'; + $alt = false; + $item = -1; + echo '<table><tr><th>Pattern</th><th colspan="2">Result Item</th><th>Category</th><th>Source Items</th><th>Actions</th></tr>'; + while ($row = mysql_fetch_array($result)) + { + if ($item != $row['result_id']) + { + if ($item != '-1') + { + echo '</td><td><a href="./index.php?do=editcombine&id='.$item.'&pattern_id='.$row['pattern_id'].'">Edit</a></td></tr>'."\n"; + } + $item = $row['result_id']; + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + }else{ + echo '<tr class="color_b">'; + } + $result_id = $row['result_id']; + $result_name = ($row['result_name'] == '' ? ($row['result_id'] != 0 ? "BROKEN" : "") :$row['result_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + $pattern_name = ($row['pattern_id'] != 0 ? $row['pattern_name'] : "patternless"); + echo '<td><a href="./index.php?do=editpattern&id='.$row['pattern_id'].'">'.$pattern_name.'</a></td>'; + if (checkaccess('items','edit')) + { + echo '<td>'.$row['result_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['result_cat_id'].'&item='.$row['result_id'].'">'.$result_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['result_qty'].' </td><td> '.$result_name.'</td>'; + } + echo '<td>'.$row['result_cat'].'</td>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + //echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> ('.$row['item_cat'].')'; + } + else + { + //echo '<td>'.$row['min_qty'].' to '.$row['max_qty'].' '.$item_name.' ('.$row['item_cat'].')'; + } + } + else + { + echo '<br/>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + //echo $row['min_qty'].' to '.$row['max_qty'].' <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> ('.$row['item_cat'].')'; + } + else + { + // echo $row['min_qty'].' to '.$row['max_qty'].' '.$item_name.' ('.$row['item_cat'].')'; + } + } + } + echo '<td><a href="./index.php?do=editcombine&id='.$item.'&pattern_id='.$row['pattern_id'].'">Edit</a></td></tr></table>'; + } + else + { + echo '<p>You do not have permission to view Combinations, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Combinations are using this item.</p>'; + } + + // Processes + $result = mysql_query2("SELECT id, name FROM item_stats"); + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $i = $row['id']; + $items["$i"] = $row['name']; + } + $items[0] = ""; + $result = mysql_query2("SELECT skill_id, name FROM skills"); + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $i = $row['skill_id']; + $skills["$i"] = $row['name']; + } + $skills[0] = ""; + $query = "SELECT DISTINCT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id WHERE t.workitem_id='$id' OR t.equipment_id='$id' OR t.garbage_id='$id' ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('crafting', 'read')) + { + echo '<p class="bold">Processes using this item:</p>'; + echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + if (checkaccess('crafting', 'edit')){ + echo '<th>Actions</th>'; + } + echo '</tr>'; + $alt= FALSE; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; + echo '<td>'.$row['subprocess_number'].'</td>'; + echo '<td>'.$row['animation'].'</td>'; + $i = $row['workitem_id']; + echo '<td>'.$items["$i"].'</td>'; + $i = $row['equipment_id']; + echo '<td>'.$items["$i"].'</td>'; + echo '<td>'.$row['constraints'].'</td>'; + $i = $row['garbage_id']; + echo '<td>'.$row['garbage_qty'].' </td><td> '.$items["$i"].'</td>'; + $i = $row['primary_skill_id']; + echo '<td>'.$skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; + $i = $row['secondary_skill_id']; + echo '<td>'.$skills["$i"].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; + echo '<td>'.$row['description'].'</td>'; + if (checkaccess('crafting','edit')) + { + echo '<td><a href="./index.php?do=editsubprocess&id='.$row['process_id'].'&sub='.$row['subprocess_number'].'">Edit</a></td>'; + } + echo '</tr>'; + } + echo '</table>'; + + } + else + { + echo '<p>You do not have permission to view Processes, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Processes are using this item.</p>'; + } + + // Spells + $query = "SELECT DISTINCT name, realm, spell_description, id FROM spells LEFT JOIN spell_glyphs ON spell_id=id WHERE item_id='$id' ORDER BY realm, name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('rules', 'read')) + { + echo '<p class="bold">Spells using this item:</p>'; + echo '<table border="1"><tr><th>Name</th><th>Realm</th><th>Description</th>'; + echo '</tr>'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + echo '<tr><td>'; + echo '<a href="./index.php?do=spell&id='.$row['id'].'">'.$row['name'].'</a>'; + echo '</td><td>'; + echo $row['realm']; + echo '</td><td>'; + echo $row['spell_description']; + echo '</td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>You do not have permission to view Spells, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Spells are using this item.</p>'; + } + + // Resources + + $query = "SELECT r.id, r.loc_sector_id, s.name AS sector, r.loc_x, r.loc_y, r.loc_z, r.radius, r.visible_radius, r.probability, r.skill, sk.name AS skill_name, r.skill_level, r.item_cat_id, c.name AS category, r.item_quality, r.animation, r.anim_duration_seconds, r.item_id_reward, i.name AS item, r.reward_nickname, r.action FROM natural_resources AS r LEFT JOIN sectors AS s ON r.loc_sector_id=s.id LEFT JOIN item_stats AS i on i.id=r.item_id_reward LEFT JOIN item_categories AS c ON r.item_cat_id=c.category_id LEFT JOIN skills AS sk on sk.skill_id=r.skill WHERE i.id='$id' ORDER BY sector"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + $item_is_used = true; + if (checkaccess('rules', 'read')) + { + echo '<p class="bold">Resources using this item:</p>'; + echo '<table border="1"><tr><th>Location</th><th>Radius</th><th>Visible Radius</th><th>Probability</th><th>Skill</th><th>Skill Level</th><th>Tool Category</th><th>Item Quality</th><th>Animation</th><th>Animation Duration</th><th>Item</th><th>Resource "Nickname"</th>'; + if (checkaccess('rules', 'edit')){ + echo '<th>Actions</th>'; + } + echo '</tr>'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) + { + echo '<tr>'; + echo '<td>'.$row['sector'].'/'.$row['loc_x'].'/'.$row['loc_y'].'/'.$row['loc_z'].'</td>'; + echo '<td>'.$row['radius'].'</td>'; + echo '<td>'.$row['visible_radius'].'</td>'; + echo '<td>'.$row['probability'].'</td>'; + echo '<td>'.$row['skill_name'].'</td>'; + echo '<td>'.$row['skill_level'].'</td>'; + echo '<td>'.$row['category'].'</td>'; + echo '<td>'.$row['item_quality'].'</td>'; + echo '<td>'.$row['animation'].'</td>'; + echo '<td>'.$row['anim_duration_seconds'].'</td>'; + echo '<td>'.$row['item'].'</td>'; + echo '<td>'.$row['reward_nickname'].'</td>'; + if (checkaccess('rules', 'edit')) + { + echo '<td><form action="./index.php?do=resource" method="post">'; + echo '<input type="hidden" name="id" value="'.$row['id'].'" />'; + echo '<input type="submit" name="action" value="Edit" />'; + echo '</form>'; + } + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>You do not have permission to view Resources, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Resources are using this item.</p>'; + } + + // NPC inventory + $query = "SELECT COUNT(id) FROM item_instances WHERE item_stats_id_standard=$id"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if (($num = $row[0]) > 0) + { + $item_is_used = true; + $button = (checkaccess('items', 'read') ? '<br>Please click the button below if you wish to see a full overview of all instances of this item. <form action="./index.php?do=finditem" method="post"><input type="hidden" name="itemid" value="'.$id.'"><input type="submit" name="search" value="Find Items"/></form>' : ''); + echo '<p> There are '.$num.' instances of this item in the database. '.$button.'</p>'; + } + else + { + echo '<p>There are no instances of this item.</p>'; + } + + // quests + // REGEXP queries match case-insensitive. To do this on a "blob" field, we first need to convert the data to a charset. (SQL supports REGEXP on binary data, but it'll become case sensitive, so we don't want that.) + // in a regexp, you can make a character group (in our case \n (with an additional \ to escape it in the PHP string)) by placing something between []. + // so we get 'text[^\n]* item' In this case our character group is 'NOT newline' where \n is the newline, and ^ means not. Finally, the * after the group means zero or more of this character. + // In other words, we are looking for a character sequence that contains "Player Gives" and "item_name" with any amount of characters between them that are not newlines. This effectively means they have to be on the same line. +// $query = "SELECT q.id, q.name, q.category FROM quests AS q LEFT JOIN quest_scripts AS qs ON q.id=qs.quest_id WHERE CONVERT(qs.script USING latin1) REGEXP 'Player Gives[^\\n]*$my_item_name' OR CONVERT(qs.script USING latin1) REGEXP 'Give[^\\n]*$my_item_name' ORDER BY q.name ASC"; +$query = "SELECT q.id, q.name, q.category FROM quests AS q LEFT JOIN quest_scripts AS qs ON q.id=qs.quest_id WHERE CONVERT(qs.script USING latin1) REGEXP '(Player Gives|Give)[^\\n]*$my_item_name' ORDER BY q.name ASC"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + if (checkaccess('quests', 'read')) + { + echo '<p class="bold">Quests using this item:</p>'; + echo '<p>Please notice that if the item name is contained in another item name, it may report that item too. (If you search for an item named "ring", it will also match "golden ring". Additionally, this script can match any "Give Item" block anywhere in the text (like "P: Give Golden Ring". Use this quest data as a pointer, not as an absolute truth. </p>'; + echo '<table border="1">'."\n"; + echo '<tr><th>ID</th><th>Category</th><th>Name</th><th>Actions</th></tr>'; + while ($row = mysql_fetch_array($result)) + { + echo '<tr><td>'.$row['id'].'</td><td>'.$row['category'].'</td><td>'.$row['name'].'</td>'; + echo '<td><a href="./index.php?do=readquest&id='.$row['id'].'">Read</a>'; + if (checkaccess('quests', 'edit')) + { + echo ' || <a href="./index.php?do=editquest&id='.$row['id'].'">Edit</a>'; + } + echo '</td></tr>'; + } + echo '</table>'."\n"; + } + else + { + echo '<p class="error">You do not have permission to view Quests, but they do use this item.</p>'; + } + } + else + { + echo '<p>No Quests are using this item.</p>'; + } + + return $item_is_used; +} ?> Modified: www/webconsole-new/npcs/npc_details.php =================================================================== --- www/webconsole-new/npcs/npc_details.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/npcs/npc_details.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -12,13 +12,13 @@ if ($row['npc_master_id'] == $id){ echo '<tr><td>This NPC is not using a Template<br/>You can set the master NPC id to</td><td><input type="text" name="npc_master_id" value="'.$row['npc_master_id'].'" /></td></tr>'; }else{ - echo '<tr><td>This NPC is using NPC <a href="./index.php?do=npc_details&npc_id='.$row['npc_master_id'].'&sub=main">'.$row['npc_master_id'].'</a> as a template<br/>You can set the master NPC id to </td><td><input type="text name="npc_master_id" value="'.$row['npc_master_id'].'" /></td></tr>'; + echo '<tr><td>This NPC is using NPC <a href="./index.php?do=npc_details&npc_id='.$row['npc_master_id'].'&sub=main">'.$row['npc_master_id'].'</a> as a template<br/>You can set the master NPC id to </td><td><input type="text" name="npc_master_id" value="'.$row['npc_master_id'].'" /></td></tr>'; } - $Sectors = PrepSelect('sector'); + $Sectors = PrepSelect('sectorid'); echo '<tr><td>Location:</td>'; echo '<td>'; echo '<table><tr><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>Rotation</th><th>Instance</th></tr>'; - echo '<tr><td>'.DrawSelectBox('sector', $Sectors, 'loc_sector_id', $row['loc_sector_id']).'</td><td><input type="text" name="loc_x" value="'.$row['loc_x'].'" size="5"/></td>'; + echo '<tr><td>'.DrawSelectBox('sectorid', $Sectors, 'loc_sector_id', $row['loc_sector_id']).'</td><td><input type="text" name="loc_x" value="'.$row['loc_x'].'" size="5"/></td>'; echo '<td><input type="text" name="loc_y" value="'.$row['loc_y'].'" size="5"/></td>'; echo '<td><input type="text" name="loc_z" value="'.$row['loc_z'].'" size="5"/></td>'; echo '<td><input type="text" name="loc_yrot" value="'.$row['loc_yrot'].'" size="5"/></td>'; Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-04-27 18:07:09 UTC (rev 3577) +++ www/webconsole-new/quests/validatequest.php 2009-04-27 20:50:07 UTC (rev 3578) @@ -36,6 +36,8 @@ { parseScripts($id, $show_lines); } + append_log('<a href="./index.php?do=editquest&id='.$id.'">Edit this script2</a>'); + append_log(''); } echo $parse_log; } @@ -580,8 +582,8 @@ { append_log("parse error, no faction ($faction) found in database on line $line_number"); } - } - elseif (stripos($given[$i], " exp") !== false) + } // takes the last 4 chars from the "give" string to see if it's " exp", so it doesn't match "expert cookbook" or something by accident. + elseif (strcasecmp(substr(trim($given[$i]), -4) , " exp") === 0) { $words = explode(" ", trim($given[$i])); if (count($words) != 2 || !is_numeric(trim($words[0]))) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-01 22:17:34
|
Revision: 3604 http://planeshift.svn.sourceforge.net/planeshift/?rev=3604&view=rev Author: weltall2 Date: 2009-05-01 22:17:33 +0000 (Fri, 01 May 2009) Log Message: ----------- Various additions to the wc patch by ravna Modified Paths: -------------- www/webconsole-new/crafting/combines.php www/webconsole-new/crafting/process.php www/webconsole-new/items/listitems.php www/webconsole-new/quests/validatequest.php Modified: www/webconsole-new/crafting/combines.php =================================================================== --- www/webconsole-new/crafting/combines.php 2009-05-01 20:47:03 UTC (rev 3603) +++ www/webconsole-new/crafting/combines.php 2009-05-01 22:17:33 UTC (rev 3604) @@ -82,7 +82,7 @@ echo '<form action="./index.php?do=editcombine&id='.$pattern_id.'" method="post" /><table>'; // we set pattern_id here instead of combination ID, so we can redirect people back to where they came from. echo '<tr><td colspan="2">If you change this dropdown, you will move this transformation to another pattern, moving it to "NONE" will make it "patternless".</td></tr>'; echo '<tr><td>Pattern</td><td>'.DrawSelectBox('patterns', $patterns, 'pattern_id', $row['pattern_id'], true).'</td></tr>'; - echo '<tr><td>Result Item</td><td><input type="hidden" name="result_id" value="'.$id.'" />'.$result_item.'</td></tr>'; + echo '<tr><td>Result Item</td><td>'.DrawSelectBox('items', $items_results, 'result_id', $id, true).'</td></tr>'; echo '<tr><td>Result Quantity</td><td><input type="text" name="result_qty" value="'.$row['result_qty'].'" /></td></tr>'; do { Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-05-01 20:47:03 UTC (rev 3603) +++ www/webconsole-new/crafting/process.php 2009-05-01 22:17:33 UTC (rev 3604) @@ -3,30 +3,17 @@ { if (checkaccess('crafting', 'read')) { - echo '<p class="header">Process Information</p>'; - $result = mysql_query2("SELECT id, name FROM item_stats"); - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - $i = $row['id']; - $items["$i"] = $row['name']; - } - $items[0] = ""; - $result = mysql_query2("SELECT skill_id, name FROM skills"); - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - $i = $row['skill_id']; - $skills["$i"] = $row['name']; - } - $skills[0] = ""; /* Notice: skill '0' is sword skill, however, this is the only table that does that, also the database seems to use '0' as "NONE" as well, so here we have a bug most likely. Currently it does *not* show anything when the ID is '0', so it shows swords (skill id 0) as no skill too. (although it does have a min/max, so that will in turn cause it to work fine in engine.) */ - $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name, t.process_id, t.subprocess_number"; + $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, i.name AS workitem_name, i.category_id AS work_cat_id, t.equipment_id, ii.name AS equipment_name, ii.category_id AS equipment_cat_id, t.constraints, t.garbage_id, iii.name AS garbage_name, iii.category_id AS garbage_cat_id, t.garbage_qty, t.primary_skill_id, s.name AS primary_skill_name, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, ss.name AS secondary_skill_name, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id LEFT JOIN item_stats AS i ON i.id=t.workitem_id LEFT JOIN item_stats AS ii ON ii.id=t.equipment_id LEFT JOIN item_stats AS iii ON iii.id=t.garbage_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name, t.process_id, t.subprocess_number"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); $id = $row['process_id']; mysql_data_seek($result, 0); - echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Work Item</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; if (checkaccess('crafting', 'edit')){ echo '<th>Actions</th>'; } @@ -45,17 +32,12 @@ echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; echo '<td>'.$row['subprocess_number'].'</td>'; echo '<td>'.$row['animation'].'</td>'; - $i = $row['workitem_id']; - echo '<td>'.$items["$i"].'</td>'; - $i = $row['equipment_id']; - echo '<td>'.$items["$i"].'</td>'; + echo '<td><a href="./index.php?do=listitems&override1&category='.$row['work_cat_id'].'&item='.$row['workitem_id'].'">'.$row['workitem_name'].'</a></td>'; + echo '<td><a href="./index.php?do=listitems&override1&category='.$row['equipment_cat_id'].'&item='.$row['equipment_id'].'">'.$row['equipment_name'].'</a></td>'; echo '<td>'.$row['constraints'].'</td>'; - $i = $row['garbage_id']; - echo '<td>'.$row['garbage_qty'].' </td><td> '.$items["$i"].'</td>'; - $i = $row['primary_skill_id']; - echo '<td>'.$skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; - $i = $row['secondary_skill_id']; - echo '<td>'.$skills["$i"].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; + echo '<td>'.$row['garbage_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['garbage_cat_id'].'&item='.$row['garbage_id'].'">'.$row['garbage_name'].'</a></td>'; + echo '<td>'.$row['primary_skill_name'].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; + echo '<td>'.$row['secondary_skill_name'].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; echo '<td>'.$row['description'].'</td>'; if (checkaccess('crafting','edit')) { @@ -90,12 +72,12 @@ $Skills["$i"] = $row['name']; } $Skills[0] = ""; - $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, t.equipment_id, t.constraints, t.garbage_id, t.garbage_qty, t.primary_skill_id, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes AS t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id WHERE process_id = '$id' ORDER BY s.name, t.primary_min_skill, ss.name, secondary_min_skill, t.name"; + $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, i.name AS workitem_name, i.category_id AS work_cat_id, t.equipment_id, ii.name AS equipment_name, ii.category_id AS equipment_cat_id, t.constraints, t.garbage_id, iii.name AS garbage_name, iii.category_id AS garbage_cat_id, t.garbage_qty, t.primary_skill_id, s.name AS primary_skill_name, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, ss.name AS secondary_skill_name, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id LEFT JOIN item_stats AS i ON i.id=t.workitem_id LEFT JOIN item_stats AS ii ON ii.id=t.equipment_id LEFT JOIN item_stats AS iii ON iii.id=t.garbage_id WHERE process_id = '$id' ORDER BY s.name, t.primary_min_skill, ss.name, secondary_min_skill, t.name"; $result = mysql_query2($query); $row = mysql_fetch_array($result, MYSQL_ASSOC); echo '- '.$row['name'].'</p>'; mysql_data_seek($result, 0); - echo '<table><tr><th>Sub-Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + echo '<table><tr><th>Sub-Process</th><th>Animation</th><th>Work Item</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; if (checkaccess('crafting', 'edit')){ echo '<th>Actions</th>'; } @@ -110,17 +92,12 @@ } echo '<td>'.$row['subprocess_number'].'</td>'; echo '<td>'.$row['animation'].'</td>'; - $i = $row['workitem_id']; - echo '<td>'.$Items["$i"].'</td>'; - $i = $row['equipment_id']; - echo '<td>'.$Items["$i"].'</td>'; + echo '<td><a href="./index.php?do=listitems&override1&category='.$row['work_cat_id'].'&item='.$row['workitem_id'].'">'.$row['workitem_name'].'</a></td>'; + echo '<td><a href="./index.php?do=listitems&override1&category='.$row['equipment_cat_id'].'&item='.$row['equipment_id'].'">'.$row['equipment_name'].'</a></td>'; echo '<td>'.$row['constraints'].'</td>'; - $i = $row['garbage_id']; - echo '<td>'.$row['garbage_qty'].' </td><td> '.$Items["$i"].'</td>'; - $i = $row['primary_skill_id']; - echo '<td>'.$Skills["$i"].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; - $i = $row['secondary_skill_id']; - echo '<td>'.$Skills["$i"].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; + echo '<td>'.$row['garbage_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['garbage_cat_id'].'&item='.$row['garbage_id'].'">'.$row['garbage_name'].'</a></td>'; + echo '<td>'.$row['primary_skill_name'].' / '.$row['primary_min_skill'].' / '.$row['primary_max_skill'].' / '.$row['primary_practice_points'].' / '.$row['primary_quality_factor'].'</td>'; + echo '<td>'.$row['secondary_skill_name'].' / '.$row['secondary_min_skill'].' / '.$row['secondary_max_skill'].' / '.$row['secondary_practice_points'].' / '.$row['secondary_quality_factor'].'</td>'; echo '<td>'.$row['description'].'</td>'; if (checkaccess('crafting','edit')){ echo '<td><a href="./index.php?do=editsubprocess&id='.$id.'&sub='.$row['subprocess_number'].'">Edit</a></td>'; @@ -131,7 +108,60 @@ if (checkaccess('crafting','create')){ echo '<a href="./index.php?do=createprocess&id='.$id.'">Create new Sub-process</a>'; } - }else{ + $query = "SELECT t.id, t.process_id, t.pattern_id, pat.pattern_name, p.name, t.result_id, i.name AS result_name, c.name AS result_cat, c.category_id AS result_cat_id, t.result_qty, t.item_id, ii.name AS item_name, cc.name AS item_cat, cc.category_id AS item_cat_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN item_stats AS i ON i.id=t.result_id LEFT JOIN item_stats AS ii ON ii.id=t.item_id LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_categories AS c ON i.category_id=c.category_id LEFT JOIN item_categories AS cc ON ii.category_id=cc.category_id LEFT JOIN trade_patterns AS pat ON t.pattern_id=pat.id WHERE t.process_id='$id' ORDER BY pattern_id"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + echo '<p>Transformations using this process:</p>'; + echo '<table><tr><th colspan="2">Source Item</th><th>Category</th><th>Process</th><th colspan="2">Result Item</th><th>Category</th><th>Time</th><th>Result Q</th><th>Actions</th></tr>'; + $alt = false; + while ($row=mysql_fetch_array($result, MYSQL_ASSOC)){ + $alt = !$alt; + if ($alt) + { + echo '<tr class="color_a">'; + } + else + { + echo '<tr class="color_b">'; + } + $pattern_name = ($row['pattern_id'] != 0 ? $row['pattern_name'] : "patternless"); + echo '<td><a href="./index.php?do=editpattern&id='.$row['pattern_id'].'">'.$pattern_name.'</a></td>'; + $item_name = ($row['item_name'] == "NULL" ? ($row['item_id'] != 0 ? "BROKEN" : "") :$row['item_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['item_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['item_cat_id'].'&item='.$row['item_id'].'">'.$item_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['item_qty'].' </td><td> '.$item_name.' </td>'; + } + echo '<td>'.$row['item_cat'].'</td>'; + echo '<td><a href="./index.php?do=process&id='.$row['process_id'].'">'.$row['name'].'</a></td>'; + $result_name = ($row['result_name'] == "NULL" ? ($row['result_id'] != 0 ? "BROKEN" : "") :$row['result_name']); // Item name is broken if NULL was returned and ID is not 0, if ID was 0, name is "", else name the name found in the database. + if (checkaccess('items','edit')) + { + echo '<td>'.$row['result_qty'].' </td><td> <a href="./index.php?do=listitems&override1&category='.$row['result_cat_id'].'&item='.$row['result_id'].'">'.$result_name.'</a> </td>'; + } + else + { + echo '<td>'.$row['result_qty'].' </td><td> '.$result_name.'</td>'; + } + echo '<td>'.$row['result_cat'].'</td>'; + echo '<td>'.$row['trans_points'].'</td>'; + echo '<td>'.$row['penilty_pct'].'</td>'; + echo '<td><a href="./index.php?do=transform&id='.$row['id'].'">Edit</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p>No transforms use this process.</p>'; + } + } + else + { echo '<p class="error">You are not authorized to use these functions</p>'; } } @@ -378,11 +408,12 @@ while ($row=mysql_fetch_array($result, MYSQL_ASSOC)){ $iid=$row['id']; $items["$iid"]=$row['name']; + $items[0] = ""; } if ($subprocess_number == 0) // this is a main process { - $query = "SELECT t.id, t.pattern_id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id WHERE t.process_id='$process_id' GROUP BY pattern_id"; + $query = "SELECT t.id, t.pattern_id, t.process_id, p.name, t.result_id, t.result_qty, t.item_id, t.item_qty, t.trans_points, t.penilty_pct, t.description FROM trade_transformations AS t LEFT JOIN trade_processes AS p ON t.process_id=p.process_id LEFT JOIN item_stats AS i ON i.id=t.result_id WHERE t.process_id='$process_id' ORDER BY pat.pattern_name, i.name"; $result = mysql_query2($query); if (mysql_num_rows($result) > 0) // there still are dependencies, do not offer to delete anything. { Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-05-01 20:47:03 UTC (rev 3603) +++ www/webconsole-new/items/listitems.php 2009-05-01 22:17:33 UTC (rev 3604) @@ -325,7 +325,7 @@ if (checkaccess('crafting', 'read')) { echo '<p class="bold">Processes using this item:</p>'; - echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Item Used</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; + echo '<table><tr><th>Name</th><th>Sub-<br>Process</th><th>Animation</th><th>Work Item</th><th>Equipment Used</th><th>Constraints</th><th colspan="2">Garbage Item</th><th>Primary Skill / Min / Max / Practice / Quality</th><th>Secondary Skill / Min / Max / Practice / Quality</th><th>Description</th>'; if (checkaccess('crafting', 'edit')){ echo '<th>Actions</th>'; } Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-05-01 20:47:03 UTC (rev 3603) +++ www/webconsole-new/quests/validatequest.php 2009-05-01 22:17:33 UTC (rev 3604) @@ -277,6 +277,14 @@ $pos = 0; while (($pos = stripos($line, $trigger, $pos)) !== false) { + if (strlen($trigger) > 3) //check if this is not some "S:" type NPC shortname, can't check those. + { + $trigger_without_colon = substr($trigger, 0, strlen($trigger)-1); // in all other cases, check if the second "menu:" or "name:" has a colon following it. + if (stripos($line, $trigger_without_colon, $pos + strlen($trigger)) !== false) + { + append_log("Warning, no ':' after '$trigger_without_colon' found on line $line_number, please make sure this is intended."); + } + } $next_pos = stripos($line, $trigger, $pos + strlen($trigger)); //check if there is another one if ($next_pos === false) //if no more triggers are found, this line goes till the end { @@ -712,6 +720,14 @@ elseif (strncasecmp($command, "Introduce", 9) === 0) { } + elseif (strncasecmp($command, "Menu", 4) === 0) // This is basically an error catcher, it should be below all other cases. + { + append_log("parse error, no ':' following 'Menu' at line $line_number"); + } + elseif (strncasecmp($command, "P", 1) === 0) // This is basically an error catcher, it should be below all other cases. + { + append_log("parse error, no ':' following 'P' at line $line_number"); + } else { append_log("parse error, unknown command ($command) at line $line_number"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-11 15:20:28
|
Revision: 3665 http://planeshift.svn.sourceforge.net/planeshift/?rev=3665&view=rev Author: weltall2 Date: 2009-05-11 15:20:20 +0000 (Mon, 11 May 2009) Log Message: ----------- added back resource,waypoint and location maps ported from the old webconsole patch by ravna Modified Paths: -------------- www/webconsole-new/commonfunctions.php www/webconsole-new/index.php www/webconsole-new/rules/rulesmain.php Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-05-10 23:45:03 UTC (rev 3664) +++ www/webconsole-new/commonfunctions.php 2009-05-11 15:20:20 UTC (rev 3665) @@ -272,4 +272,114 @@ return $id; } +/* + This method contains hardcoded coords and part of SQL statements. They are the sizes of each map, as well as which sectors they + span in the database. This data "should" be put in a database someday(TM), since right now you will need to edit this code + every time a map gets added to the world. (This gets used for drawing maps.) +*/ +function getDataFromArea($area) { + + // sectors + $data; + if ($area=='hydlaa_plaza') { + $data[0] = 'loc_sector_id=15 or loc_sector_id=52'; + $data[1] = 535; + $data[2] = 180; + $data[3] = 2.2; + $data[4] = 2.2; + } else if ($area=='hydlaa_jayose') { + $data[0] = 'loc_sector_id=49 or loc_sector_id=40'; + $data[1] = -250; + $data[2] = -150; + $data[3] = 3.2; + $data[4] = 3.2; + } else if ($area=='hydlaa_winch') { + $data[0] = 'loc_sector_id=72'; + $data[1] = 200; + $data[2] = -430; + $data[3] = 2.2; + $data[4] = 2.2; + } else if ($area=='sewers') { + $data[0] = 'loc_sector_id>26 and loc_sector_id<38'; + $data[1] = 645; + $data[2] = 175; + $data[3] = 2.5; + $data[4] = 2.5; + } else if ($area=='laanxdungeon') { + $data[0] = 'loc_sector_id>43 and loc_sector_id<49'; + $data[1] = 1452; + $data[2] = 815; + $data[3] = 6.73; + $data[4] = 6.73; + } else if ($area=='arena') { + $data[0] = 'loc_sector_id>3 and loc_sector_id<15'; + $data[1] = 470; + $data[2] = 456; + $data[3] = 4.43; + $data[4] = 4.43; + } else if ($area=='ojaroad1') { + $data[0] = 'loc_sector_id=22'; + $data[1] = 603; + $data[2] = 600; + $data[3] = 0.9; + $data[4] = 0.9; + } else if ($area=="ojaroad2") { + $data[0] = 'loc_sector_id=59'; + $data[1] = 632; + $data[2] = 625; + $data[3] = 1; + $data[4] = 1; + } else if ($area=='akkaio') { + $data[0] = 'loc_sector_id>16 and loc_sector_id<20'; + $data[1] = 445; + $data[2] = 465; + $data[3] = 5.3; + $data[4] = 5.3; + } else if ($area=='bdroad1') { + $data[0] = 'loc_sector_id=60'; + $data[1] = 491; + $data[2] = 493; + $data[3] = 0.76; + $data[4] = 0.76; + } else if ($area=='bdroad2') { + $data[0] = 'loc_sector_id=61'; + $data[1] = 669; + $data[2] = 667; + $data[3] = 1.07; + $data[4] = 1.07; + } else if ($area=='bdoorsout') { + $data[0] = 'loc_sector_id=67'; + $data[1] = 832; + $data[2] = -749; + $data[3] = 0.55; + $data[4] = 0.55; + } else if ($area=='bdoorsin') { + $data[0] = 'loc_sector_id=66'; + $data[1] = 656; + $data[2] = -977; + $data[3] = 2.2; + $data[4] = 2.2; + } else if ($area=='gugrontid') { + $data[0] = 'loc_sector_id=77'; + $data[1] = 240; + $data[2] = 673; + $data[3] = 1.3; + $data[4] = 1.3; + } else if ($area=='NPCroom') { + $data[0] = 'loc_sector_id=3'; + $data[1] = 321.94; + $data[2] = -371.05; + $data[3] = 3.22; + $data[4] = 3.26; + } else if ($area=='npcroom2') { + $data[0] = 'loc_sector_id=6 or loc_sector_id=7'; + $data[1] = 460; + $data[2] = 318; + $data[3] = 4; + $data[4] = 4; + } + + return $data; +} + ?> \ No newline at end of file Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-05-10 23:45:03 UTC (rev 3664) +++ www/webconsole-new/index.php 2009-05-11 15:20:20 UTC (rev 3665) @@ -355,18 +355,36 @@ rulesmain(); listresources(); break; - case 'waypoint': + case 'resourcemap': include('./rules/rulesmain.php'); + include('./rules/resourcemap.php'); + rulesmain(); + natural_resources_map(); + break; + case 'waypoint': + include('./rules/rulesmain.php'); include('./rules/waypoints.php'); rulesmain(); listwaypoints(); break; + case 'waypointmap': + include('./rules/rulesmain.php'); + include('./rules/waypointmap.php'); + rulesmain(); + waypoint_map(); + break; case 'location': include('./rules/rulesmain.php'); include('./rules/locations.php'); rulesmain(); listlocations(); break; + case 'locationmap': + include('./rules/rulesmain.php'); + include('./rules/locationmap.php'); + rulesmain(); + location_map(); + break; case 'skills': include('./rules/rulesmain.php'); include('./rules/skills.php'); Modified: www/webconsole-new/rules/rulesmain.php =================================================================== --- www/webconsole-new/rules/rulesmain.php 2009-05-10 23:45:03 UTC (rev 3664) +++ www/webconsole-new/rules/rulesmain.php 2009-05-11 15:20:20 UTC (rev 3665) @@ -15,8 +15,11 @@ echo '<a href="./index.php?do=createspell">Create Spell</a><br/>'; } echo '<hr/><a href="./index.php?do=resource">List Natural Resources</a><br/>'; + echo '<a href="./index.php?do=resourcemap">List Resource Map</a><br/>'; echo '<a href="./index.php?do=waypoint">List Waypoints</a><br/>'; + echo '<a href="./index.php?do=waypointmap">List Waypoint Map</a><br/>'; echo '<a href="./index.php?do=location">List Locations</a><br/>'; + echo '<a href="./index.php?do=locationmap">List Location Map</a><br/>'; echo '<hr/><a href="./index.php?do=skills">List Skills</a><br/>'; echo '<a href="./index.php?do=factions">List Factions</a><br/>'; echo '<a href="./index.php?do=raceinfo">Race Info/Spawn Points</a><br/>'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-17 08:06:14
|
Revision: 3711 http://planeshift.svn.sourceforge.net/planeshift/?rev=3711&view=rev Author: weltall2 Date: 2009-05-17 08:06:09 +0000 (Sun, 17 May 2009) Log Message: ----------- Various fixes and more checks for item use in the database patch by ravna Modified Paths: -------------- www/webconsole-new/crafting/process.php www/webconsole-new/items/listitems.php www/webconsole-new/items/locateitem.php www/webconsole-new/quests/validatequest.php Modified: www/webconsole-new/crafting/process.php =================================================================== --- www/webconsole-new/crafting/process.php 2009-05-17 03:47:04 UTC (rev 3710) +++ www/webconsole-new/crafting/process.php 2009-05-17 08:06:09 UTC (rev 3711) @@ -4,9 +4,8 @@ if (checkaccess('crafting', 'read')) { /* - Notice: skill '0' is sword skill, however, this is the only table that does that, also the database seems to use '0' as - "NONE" as well, so here we have a bug most likely. Currently it does *not* show anything when the ID is '0', so it shows - swords (skill id 0) as no skill too. (although it does have a min/max, so that will in turn cause it to work fine in engine.) + Notice: skill '0' is sword skill, however, this is the only table that does that, I don't believe this is "good", but for now + there is not too much that can be done about it. -1 is "none". */ $query = "SELECT t.process_id, t.subprocess_number, t.name, t.animation, t.render_effect, t.workitem_id, i.name AS workitem_name, i.category_id AS work_cat_id, t.equipment_id, ii.name AS equipment_name, ii.category_id AS equipment_cat_id, t.constraints, t.garbage_id, iii.name AS garbage_name, iii.category_id AS garbage_cat_id, t.garbage_qty, t.primary_skill_id, s.name AS primary_skill_name, t.primary_min_skill, t.primary_max_skill, t.primary_practice_points, t.primary_quality_factor, t.secondary_skill_id, ss.name AS secondary_skill_name, t.secondary_min_skill, t.secondary_max_skill, t.secondary_practice_points, t.secondary_quality_factor, t.description FROM trade_processes as t LEFT JOIN skills AS s ON t.primary_skill_id=s.skill_id LEFT JOIN skills AS ss ON t.secondary_skill_id=ss.skill_id LEFT JOIN item_stats AS i ON i.id=t.workitem_id LEFT JOIN item_stats AS ii ON ii.id=t.equipment_id LEFT JOIN item_stats AS iii ON iii.id=t.garbage_id ORDER BY s.name, t.primary_min_skill, ss.name, t.secondary_min_skill, t.name, t.process_id, t.subprocess_number"; $result = mysql_query2($query); @@ -184,13 +183,11 @@ $garbage_id = ($garbage_id == '' ? 0 : $garbage_id); $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); - $primary_skill_id = ($primary_skill_id == -1 ? 0 : $primary_skill_id); $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); $primary_quality_factor = mysql_real_escape_string($_POST['primary_quality_factor']); $secondary_skill_id = mysql_real_escape_string($_POST['secondary_skill_id']); - $secondary_skill_id = ($secondary_skill_id == -1 ? 0 : $secondary_skill_id); // change id to 0 if it is not provided by user (-1) $secondary_min_skill = mysql_real_escape_string($_POST['secondary_min_skill']); $secondary_max_skill = mysql_real_escape_string($_POST['secondary_max_skill']); $secondary_practice_points = mysql_real_escape_string($_POST['secondary_practice_points']); @@ -259,13 +256,11 @@ $garbage_id = ($garbage_id == '' ? 0 : $garbage_id); $garbage_qty = mysql_real_escape_string($_POST['garbage_qty']); $primary_skill_id = mysql_real_escape_string($_POST['primary_skill_id']); - $primary_skill_id = ($primary_skill_id == -1 ? 0 : $primary_skill_id); $primary_min_skill = mysql_real_escape_string($_POST['primary_min_skill']); $primary_max_skill = mysql_real_escape_string($_POST['primary_max_skill']); $primary_practice_points = mysql_real_escape_string($_POST['primary_practice_points']); $primary_quality_factor = mysql_real_escape_string($_POST['primary_quality_factor']); $secondary_skill_id = mysql_real_escape_string($_POST['secondary_skill_id']); - $secondary_skill_id = ($secondary_skill_id == -1 ? 0 : $secondary_skill_id); // change id to 0 if it is not provided by user (-1) $secondary_min_skill = mysql_real_escape_string($_POST['secondary_min_skill']); $secondary_max_skill = mysql_real_escape_string($_POST['secondary_max_skill']); $secondary_practice_points = mysql_real_escape_string($_POST['secondary_practice_points']); Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-05-17 03:47:04 UTC (rev 3710) +++ www/webconsole-new/items/listitems.php 2009-05-17 08:06:09 UTC (rev 3711) @@ -459,14 +459,14 @@ echo '<p>No Resources are using this item.</p>'; } - // NPC inventory + // Item instances $query = "SELECT COUNT(id) FROM item_instances WHERE item_stats_id_standard=$id"; $result = mysql_query2($query); $row = mysql_fetch_row($result); if (($num = $row[0]) > 0) { $item_is_used = true; - $button = (checkaccess('items', 'read') ? '<br>Please click the button below if you wish to see a full overview of all instances of this item. <form action="./index.php?do=finditem" method="post"><input type="hidden" name="itemid" value="'.$id.'"><input type="submit" name="search" value="Find Items"/></form>' : ''); + $button = (checkaccess('items', 'read') ? '<br>Please click the button below if you wish to see a full overview of all instances of this item. <form action="./index.php?do=finditem" method="post"><input type="hidden" name="itemid" value="'.$id.'"><input type="submit" name="search" value="Find Items"/> <input type="submit" name="search" value="Find Merchants"/> </form>' : ''); echo '<p> There are '.$num.' instances of this item in the database. '.$button.'</p>'; } else @@ -474,6 +474,30 @@ echo '<p>There are no instances of this item.</p>'; } + // Loot tables + $query = "SELECT DISTINCT lr.name, lrd.loot_rule_id FROM loot_rule_details AS lrd LEFT JOIN loot_rules AS lr ON lr.id=lrd.loot_rule_id WHERE lrd.item_stat_id=$id"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) { + $item_is_used = true; + if (checkaccess('npcs', 'read')) { + echo '<p>The following loot rules use this item: </p>'; + echo '<table border="1">'; + while($row = mysql_fetch_array($result)) + { + echo '<tr><td><a href="./index.php?do=listloot&id='.$row['loot_rule_id'].'">'.$row['name'].'</a></tr></td>'; + } + echo '</table>'; + } + else + { + echo '<p>You do not have permission to view Loot Rules, but they do use this item.</p>'; + } + } + else + { + echo '<p>This item is not in any loot rule.</p>'; + } + // quests // REGEXP queries match case-insensitive. To do this on a "blob" field, we first need to convert the data to a charset. (SQL supports REGEXP on binary data, but it'll become case sensitive, so we don't want that.) // in a regexp, you can make a character group (in our case \n (with an additional \ to escape it in the PHP string)) by placing something between []. Modified: www/webconsole-new/items/locateitem.php =================================================================== --- www/webconsole-new/items/locateitem.php 2009-05-17 03:47:04 UTC (rev 3710) +++ www/webconsole-new/items/locateitem.php 2009-05-17 08:06:09 UTC (rev 3711) @@ -67,6 +67,22 @@ echo '<td>'.$row['flags'].'</td></tr>'."\n"; } echo '</table>'; + }else if ($_POST['search'] == "Find Merchants"){ + $itemid = mysql_real_escape_string($_POST['itemid']); // Don't make "is" "iss" (like it should logically be) since "is" is a reserved keyword in mysql. + $query = "SELECT DISTINCT c.id, c.name, c.lastname, iss.name AS item_name FROM merchant_item_categories AS m LEFT JOIN characters AS c ON c.id=m.player_id LEFT JOIN item_instances AS i ON i.char_id_owner=m.player_id LEFT JOIN item_stats AS iss ON iss.id=i.item_stats_id_standard WHERE i.location_in_parent > '15' AND i.item_stats_id_standard='$itemid' AND iss.category_id=m.category_id ORDER BY iss.name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) == 0) + { + echo '<p class="error">No vendors found for this item.</p>'; + return; + } + $row = mysql_fetch_array($result, MYSQL_ASSOC); + echo '<p class="bold">Displaying vendors for '.$row['item_name'].' </p>'; + echo '<table>'; + do { + echo '<tr><td><a href="./index.php?do=npc_details&sub=main&npc_id='.$row['id'].'">'.$row['name'].' '.$row['lastname'].'</a></td></tr>'; + } while ($row = mysql_fetch_array($result, MYSQL_ASSOC)); + echo '</table>'; } }else{ echo '<form action="./index.php?do=finditem" method="post">'; @@ -75,7 +91,8 @@ echo DrawSelectBox('items', $itemresult, 'itemid', ''). '<input type="submit" name="search" value="Find Items"/><br/>'; echo 'Locate Instance ID: <input type="text" name="iid" /><input type="submit" name="search" value="Find Instance" /><br/>'; $Sectors = PrepSelect('sectorid'); - echo 'Locate All Items on floor (Limit to Sector: '.DrawSelectBox('sectorid', $Sectors, 'sectorid', '', true).') <input type="submit" name="search" value="Droped Items" />'; + echo 'Locate All Items on floor (Limit to Sector: '.DrawSelectBox('sectorid', $Sectors, 'sectorid', '', true).') <input type="submit" name="search" value="Droped Items" /><br/>'; + echo 'Find all vendors of item: '.DrawSelectBox('items', $itemresult, 'itemid', ''). '<input type="submit" name="search" value="Find Merchants"/><br/>'; echo '</form>'; } }else{ Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-05-17 03:47:04 UTC (rev 3710) +++ www/webconsole-new/quests/validatequest.php 2009-05-17 08:06:09 UTC (rev 3711) @@ -36,7 +36,7 @@ { parseScripts($id, $show_lines); } - append_log('<a href="./index.php?do=editquest&id='.$id.'">Edit this script2</a>'); + append_log('<a href="./index.php?do=editquest&id='.$id.'">Edit this script</a>'); append_log(''); } echo $parse_log; @@ -277,12 +277,16 @@ $pos = 0; while (($pos = stripos($line, $trigger, $pos)) !== false) { - if (strlen($trigger) > 3) //check if this is not some "S:" type NPC shortname, can't check those. + if (strcasecmp($trigger, "menu:") === 0) //if we check a menu trigger, check next ones for exact grammar. { - $trigger_without_colon = substr($trigger, 0, strlen($trigger)-1); // in all other cases, check if the second "menu:" or "name:" has a colon following it. - if (stripos($line, $trigger_without_colon, $pos + strlen($trigger)) !== false) + $trigger_without_colon = substr($trigger, 0, strlen($trigger)-1); //check if the second "menu:" has a colon following it. + if (($temp_pos = stripos($line, $trigger_without_colon, $pos + strlen($trigger))) !== false) { - append_log("Warning, no ':' after '$trigger_without_colon' found on line $line_number, please make sure this is intended."); + $temp_pos2 = stripos($line, $trigger, $pos + strlen($trigger)); + if ($temp_pos != $temp_pos2) // it's only a mismatch if "trigger" and "trigger_without_colon" are not starting at the same place. + { + append_log("Warning, no ':' after '$trigger_without_colon' found on line $line_number, please make sure this is intended."); + } } } $next_pos = stripos($line, $trigger, $pos + strlen($trigger)); //check if there is another one This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-18 05:55:54
|
Revision: 3739 http://planeshift.svn.sourceforge.net/planeshift/?rev=3739&view=rev Author: weltall2 Date: 2009-05-18 05:55:52 +0000 (Mon, 18 May 2009) Log Message: ----------- missing files Added Paths: ----------- www/webconsole-new/admin/ www/webconsole-new/admin/adminmain.php www/webconsole-new/admin/tips.php www/webconsole-new/admin/viewcommands.php www/webconsole-new/admin/viewserveroptions.php Added: www/webconsole-new/admin/adminmain.php =================================================================== --- www/webconsole-new/admin/adminmain.php (rev 0) +++ www/webconsole-new/admin/adminmain.php 2009-05-18 05:55:52 UTC (rev 3739) @@ -0,0 +1,18 @@ +<?php +function adminmain() +{ + if (checkaccess('admin', 'read')) + { + echo '<div class="menu_left">'; + echo '<a href="./index.php?do=listtips">List Tips</a><br/>'; + echo '<a href="./index.php?do=viewcommands">View Commands</a><br/>'; + echo '<a href="./index.php?do=viewserveroptions">View Server Options</a><br/>'; + echo '<hr/><a href="./index.php">Return to main page.</a>'; + echo '</div><div class="main">'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> Property changes on: www/webconsole-new/admin/adminmain.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/admin/tips.php =================================================================== --- www/webconsole-new/admin/tips.php (rev 0) +++ www/webconsole-new/admin/tips.php 2009-05-18 05:55:52 UTC (rev 3739) @@ -0,0 +1,129 @@ +<?PHP +function listtips(){ + + if (checkaccess('admin', 'read')) + { + $query = 'SELECT * FROM tips ORDER BY tip'; + $result = mysql_query2($query); + echo'<table border="1">'; + while ($row = mysql_fetch_array($result)) + { + echo '<tr><td>'; + if(checkaccess('admin', 'edit')) + { + echo '<form action="./index.php?do=edittips" method="post">'; + echo '<textarea cols="50" rows="2" name="tip">'.$row['tip'].'</textarea>'; + echo '<input type="hidden" name="id" value ="'.$row['id'].'">'; + echo '</td><td>'; + echo '<input type="submit" name="action" value="Save">'; + if(checkaccess('admin', 'delete')) + { + echo '<br><input type="submit" name="action" value="Delete">'; + } + echo '</form>'; + } + else + { + echo $row['tip'].'</td><td>'; + } + echo '</td></tr>'; + } + if(checkaccess('admin', 'create')) + { + echo '<tr><td>'; + echo '<form action="./index.php?do=edittips" method="post">'; + echo '<textarea cols="50" rows="2" name="tip"></textarea>'; + echo '</td><td>'; + echo '<input type="submit" name="action" value="Add">'; + echo '</td></tr>'; + echo '</form>'; + } + echo '</td></tr>'; + echo '</table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function edittips(){ +// check access, isset post, etc + $action = ''; + $id = ''; + $tip = ''; + if (isset($_POST['action'])) + { + $action = $_POST['action']; + } + + if (isset($_POST['tip'])) + { + $tip = mysql_real_escape_string($_POST['tip']); + } + if (isset($_POST['id'])) + { + $id = mysql_real_escape_string($_POST['id']); + } + if ((trim($tip) == '' && !isset($_POST['submit'])) || (!is_numeric($id) && $action != 'Add')) + { + echo '<p class="error">Tip or ID invalid, no action has been performed.</p>'; + return; + } + + if ($action == 'Add'){ + if (checkaccess('admin', 'create')) + { + mysql_query2("INSERT INTO tips (tip) VALUES ('$tip')"); + echo '<p class="error">Tip was successfully added.</p>'; + unset($_POST); + listtips(); + } + + } + elseif ($action == 'Save'){ + if (checkaccess('admin', 'edit')) + { + mysql_query2("UPDATE tips SET tip = '$tip' WHERE id = '$id'"); + echo '<p class="error">Tip was successfully edited.</p>'; + unset($_POST); + listtips(); + } + + } + elseif ($action == 'Delete' && isset($_POST['submit']) && $_POST['submit'] == 'Confirm Delete') + { + $password = mysql_real_escape_string($_POST['passd']); + $username = mysql_real_escape_string($_SESSION['username']); + $query = "SELECT COUNT(username) FROM accounts WHERE username='$username' AND password=MD5('$password')"; + $result = mysql_query2($query); + $row = mysql_fetch_row($result); + if ($row[0] == 1) + { + mysql_query2("DELETE FROM tips WHERE id ='$id' LIMIT 1"); + echo '<p class="error">Tip was successfully deleted.</p>'; + unset($_POST); + listtips(); + } + else + { + echo '<p class="error">Password check failed - Did Not Delete Tip</p>'; + } + } + elseif ($action == 'Delete') + { + if (checkaccess('admin', 'delete')) + { + echo '<p class="error">Warning, you are about to permanently delete the following Tip:</p>'; + echo '<p>'.$tip.'</p>'; + echo '<form action="./index.php?do=edittips" method="post"><input type="hidden" name="action" value="Delete"><input type="hidden" name="id" value="'.$id.'">'; + echo 'Enter your password to confirm deletion the Tip listed above: <input type="password" name="passd" /><input type="submit" name="submit" value="Confirm Delete"></form>'; + } + } + else + { + echo '<p class="error">Invalid action or insufficient access.</p>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/admin/tips.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/admin/viewcommands.php =================================================================== --- www/webconsole-new/admin/viewcommands.php (rev 0) +++ www/webconsole-new/admin/viewcommands.php 2009-05-18 05:55:52 UTC (rev 3739) @@ -0,0 +1,48 @@ +<?PHP +function viewcommands() +{ + if (checkaccess('admin', 'read')) + { + $group = ''; + if (isset($_GET['group'])) + { + $group = $_GET['group']; + } + $query = 'SELECT * FROM command_groups'; + $result = mysql_query2($query); + echo'<table><tr><td valign="top"><table>'; + while ($row = mysql_fetch_array($result, MYSQL_NUM)){ + echo "<tr><td><a href='index.php?do=viewcommands&group=".$row[0]."'>".$row[1]."</a></td></tr>"; + } + echo'</table>'; + + // get group name + $query = "SELECT * FROM command_groups WHERE id ='$group'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_NUM); + $groupname=$row[1]; + + + $query = "SELECT * FROM command_group_assignment WHERE group_member ='$group' ORDER BY command_name"; + $result = mysql_query2($query); + echo'</td><td valign="top"><table border="1">'; + + $found = false; + echo"<TR><TH ><b>Group: $groupname</b></TH></TR>"; + while ($row = mysql_fetch_array($result, MYSQL_NUM)){ + $found = true; + echo '<TR><TD>'.$row[0].'</TD></TR>'; + // There is nothing to edit with, so drop the link for now. + //echo '<TR><TD><a href="index.php?do=cmd_actions&group='.$row[1].'&cmd='.$row[0].'">'.$row[0].'</a></TD></TR>'; + //echo"<TD ><P>$row[1] </P></TD></TR>"; + } + + if(!$found && isset($_GET['group'])) + echo "<TR><TD><P>No commands found in this group</P></TD></TR>"; + + echo '</TABLE></td></tr></table>'; + } +} + + +?> Property changes on: www/webconsole-new/admin/viewcommands.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/admin/viewserveroptions.php =================================================================== --- www/webconsole-new/admin/viewserveroptions.php (rev 0) +++ www/webconsole-new/admin/viewserveroptions.php 2009-05-18 05:55:52 UTC (rev 3739) @@ -0,0 +1,44 @@ +<?PHP +function viewserveroptions() +{ + if (checkaccess('admin', 'read')) + { + if(isset($_POST['submit']) && $_POST['submit'] == 'Save') + { + if (checkaccess('admin', 'edit')) + { + for ($i = 0; count($_POST['data']) > $i; $i++) + { + $option = mysql_real_escape_string($_POST['option'][$i]); + $data = mysql_real_escape_string($_POST['data'][$i]); + if ($option == '' || $data == '') + { + echo '<p class="error">I ignored 1 empty line. You cannot leave lines empty.</p>'; + continue; + } + $query = "UPDATE server_options SET option_value = '$data' WHERE option_name = '$option'"; + mysql_query2($query); + } + echo '<p class="error">Server options successfully updated.</p>'; + } + else + { + echo '<p class="error">You are not authorized to edit this page.</p>'; + } + } + + $query = 'select * from server_options order by option_name'; + $result = mysql_query2($query); + echo '<form action="./index.php?do=viewserveroptions" method="POST">'; + echo '<table width="500" border="0"><tr><td>Option name</td><td>Option value</td></tr>'; + while ($row = mysql_fetch_array($result)) + { + echo '<tr><td width="150">'.$row['option_name'].'</td>'; + echo '<td width="350"><input type="hidden" name="option[]" value="'.$row['option_name'].'"><INPUT size=90 type=text name="data[]" value="'.$row['option_value'].'"</td></tr>'; + } + echo '</table>'; + echo '<input type="submit" name="submit" value="Save"></form>'; + } +} + +?> Property changes on: www/webconsole-new/admin/viewserveroptions.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-04 15:34:11
|
Revision: 3911 http://planeshift.svn.sourceforge.net/planeshift/?rev=3911&view=rev Author: weltall2 Date: 2009-07-04 15:34:03 +0000 (Sat, 04 Jul 2009) Log Message: ----------- Ported other/guild functions from the old wc patch by nakem Modified Paths: -------------- www/webconsole-new/index.php Added Paths: ----------- www/webconsole-new/other/ www/webconsole-new/other/guilds.php www/webconsole-new/other/othermain.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-07-04 08:09:38 UTC (rev 3910) +++ www/webconsole-new/index.php 2009-07-04 15:34:03 UTC (rev 3911) @@ -51,7 +51,7 @@ echo '<a href="./index.php?do=crafting">Crafting</a> -- '; } if (checkaccess('other', 'read')){ - echo 'other -- '; + echo '<a href="./index.php?do=other">Other</a> -- '; } if (checkaccess('admin', 'read')){ echo '<a href="./index.php?do=admin">Admin</a> -- '; @@ -497,6 +497,16 @@ craftingmain(); deleteprocess(); break; + case 'other': + include('./other/othermain.php'); + othermain(); + break; + case 'listguilds': + include('./other/othermain.php'); + include('./other/guilds.php'); + othermain(); + listguilds(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); Added: www/webconsole-new/other/guilds.php =================================================================== --- www/webconsole-new/other/guilds.php (rev 0) +++ www/webconsole-new/other/guilds.php 2009-07-04 15:34:03 UTC (rev 3911) @@ -0,0 +1,134 @@ +<?php +function listguilds() { + if(CheckAccess('other', 'read')) + { + $guild = intval(@$_GET['guild']); + if(empty($guild)) // If the user hasn't selected a guild we'll just present a list. + { + echo '<p class="header">Guild List</p>'; + + $sql = 'SELECT t1.*, t2.name as char_name_founder FROM guilds as t1, characters as t2 WHERE t2.id = t1.char_id_founder ORDER BY t1.name'; + $query = mysql_query2($sql); + echo '<table>'; + echo '<tr>'; + echo '<th>ID</th>'; + echo '<th width="250">Guild name</th>'; + echo '<th width="30">KP</th>'; + echo '<th width="170">Created</th>'; + echo '<th>Founder</th>'; + echo '<th width="70">Actions</th>'; + echo '</tr>'; + + $mode = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $mode = ($mode == 'a' ? 'b': 'a'); + + echo '<tr class="color_'.$mode.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['name']).'</td>'; + echo '<td>'.$row['karma_points'].'</td>'; + echo '<td>'.htmlentities($row['date_created']).'</td>'; + echo '<td>'.htmlentities($row['char_name_founder']).'</td>'; + echo '<td><a href="./index.php?do=listguilds&guild='.$row['id'].'">Details</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else // Now we can get into the details. + { + $sql = 'SELECT g.*, c.name AS founder_name, a.name AS alliance_name, g2.name AS leading_guild from guilds AS g LEFT JOIN alliances AS a ON a.id = g.alliance LEFT JOIN guilds AS g2 ON g2.id = a.leading_guild LEFT JOIN characters AS c ON c.id=g.char_id_founder WHERE g.id='.$guild; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + + echo '<p class="header">Guild Infos for "'.htmlentities($row['name']).'"</p>'; + echo '<a href="./index.php?do=listguilds">Back to listing</a><br />'; + + echo '<table border="1" cellspacing="0" cellpadding="0">'; + echo '<tr><td width="150">Name</td><td>'.htmlentities($row['name']).'</td></tr>'; + echo '<tr><td>Karma points (KP)</td><td>'.htmlentities($row['karma_points']).'</td></tr>'; + echo '<tr><td>Date created</td><td>'.htmlentities($row['date_created']).'</td></tr>'; + echo '<tr><td>Founder name</td><td>'.htmlentities($row['founder_name']).'</td></tr>'; + echo '<tr><td>Web page</td><td><a href="http://'.$row['web_page'].'">'.htmlentities($row['web_page']).'</a></td></tr>'; + echo '<tr><td>MOTD</td><td>'.htmlentities($row['motd']).'</td></tr>'; + echo '</table>'; + + if($row['alliance'] != 0) + { + if($row['alliance_name']) + { + echo '<br />Alliance:'; + echo '<br />Leading guild: '.htmlentities($row['leading_guild']); + echo '<br />Alliance name: '.htmlentities($row['alliance_name']); + echo '<br /><b>Guilds:</b><br />'; + + echo '<table><tr>'; + echo '<th>ID</th>'; + echo '<th width="250">Guild name</th>'; + echo '<th width="30">KP</th>'; + echo '<th width="170">Created</th>'; + echo '<th>Founder</th>'; + echo '<th width="70">Actions</th>'; + echo '</tr>'; + + $sql = 'SELECT g.*, c.name as founder_name FROM guilds AS g, characters as c WHERE g.alliance = '.$row['alliance'].' AND c.id = g.char_id_founder ORDER BY name'; + $query = mysql_query2($sql); + $mode = 'b'; + while($row2 = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $mode = ($mode == 'a' ? 'b': 'a'); + + echo '<tr class="color_'.$mode.'">'; + echo '<td>'.$row2['id'].'</td>'; + echo '<td>'.htmlentities($row2['name']).'</td>'; + echo '<td>'.$row2['karma_points'].'</td>'; + echo '<td>'.htmlentities($row2['date_created']).'</td>'; + echo '<td>'.htmlentities($row2['founder_name']).'</td>'; + echo '<td><a href="./index.php?do=listguilds&guild='.$row2['id'].'">Details</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + } + + echo '<br /><b>Members:</b><br />'; + + echo '<table border="0">'; + echo '<tr>'; + echo '<th>ID</th>'; + echo '<th align="left">Member Name</th>'; + echo '<th>Level</th>'; + echo '<th width=100>Guild points</th>'; + echo '<th>Actions</th>'; + echo '</tr>'; + + $sql = 'SELECT * FROM characters WHERE guild_member_of = '.$guild.' ORDER BY name'; + $query = mysql_query2($sql); + $mode = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $mode = ($mode == 'a' ? 'b': 'a'); + + echo '<tr class="color_'.$mode.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['name']).'</td>'; + echo '<td>'.htmlentities($row['guild_level']).'</td>'; + echo '<td>'.htmlentities($row['guild_points']).'</td>'; + echo '<td>'; + /* Just waiting for the account page to come. + * + echo '<a href="./index.php?do=editaccounts&id='.$row['id'].'">Edit</a>'; + if(CheckAccess('other', 'delete')) + { + echo ' - <a href="./index.php?do=deleteaccounts&id='.$row['id'].'">Delete</a>'; + }*/ + echo '</td></tr>'; + } + echo '</table>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> \ No newline at end of file Property changes on: www/webconsole-new/other/guilds.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/other/othermain.php =================================================================== --- www/webconsole-new/other/othermain.php (rev 0) +++ www/webconsole-new/other/othermain.php 2009-07-04 15:34:03 UTC (rev 3911) @@ -0,0 +1,26 @@ +<?php +function othermain(){ + if (checkaccess('other', 'read')) + { + echo '<div class="menu_left">'; + echo '<a href="./index.php?do=listguilds">List guilds and members</a> <br/>'; + /* + * These pages still need to be done! + * + echo '<a href="./index.php?do=listpetitions">List petitions</a> <br/>'; + echo '<a href="./index.php?do=viewaccounts">View accounts</a> <br/>'; + echo '<a href="./index.php?do=viewgms">View/Edit gms</a> <br/>'; // Admins + + echo '<a href="./index.php?do=viewcharacters">View characters</a <br/>'; + echo '<a href="./index.php?do=listtraits">List/Edit traits</a> <br/>'; // SysAdmin + echo '<a href="./index.php?do=listcommonstrings">List/Edit Common Strings</a> <br/>';*/ + + echo '<a href="./index.php">Return to main page</a>'; + echo '</div><div class="main">'."\n"; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> \ No newline at end of file Property changes on: www/webconsole-new/other/othermain.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-05 13:09:58
|
Revision: 3921 http://planeshift.svn.sourceforge.net/planeshift/?rev=3921&view=rev Author: weltall2 Date: 2009-07-05 12:27:55 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Improved patch for guild listing and added edit/delete function for each member in the guild patch by nakem Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/other/guilds.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-07-05 12:20:10 UTC (rev 3920) +++ www/webconsole-new/index.php 2009-07-05 12:27:55 UTC (rev 3921) @@ -507,6 +507,18 @@ othermain(); listguilds(); break; + case 'editguildmember': + include('./other/othermain.php'); + include('./other/guilds.php'); + othermain(); + editguildmember(); + break; + case 'deleteguildmember': + include('./other/othermain.php'); + include('./other/guilds.php'); + othermain(); + deleteguildmember(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); Modified: www/webconsole-new/other/guilds.php =================================================================== --- www/webconsole-new/other/guilds.php 2009-07-05 12:20:10 UTC (rev 3920) +++ www/webconsole-new/other/guilds.php 2009-07-05 12:27:55 UTC (rev 3921) @@ -2,8 +2,8 @@ function listguilds() { if(CheckAccess('other', 'read')) { - $guild = intval(@$_GET['guild']); - if(empty($guild)) // If the user hasn't selected a guild we'll just present a list. + $guild = @$_GET['guild']; + if(!is_numeric($guild)) // If the user hasn't selected a guild we'll just present a list. { echo '<p class="header">Guild List</p>'; @@ -37,7 +37,7 @@ } else // Now we can get into the details. { - $sql = 'SELECT g.*, c.name AS founder_name, a.name AS alliance_name, g2.name AS leading_guild from guilds AS g LEFT JOIN alliances AS a ON a.id = g.alliance LEFT JOIN guilds AS g2 ON g2.id = a.leading_guild LEFT JOIN characters AS c ON c.id=g.char_id_founder WHERE g.id='.$guild; + $sql = 'SELECT g.*, c.name AS founder_name, a.name AS alliance_name, g2.name AS leading_guild from guilds AS g LEFT JOIN alliances AS a ON a.id = g.alliance LEFT JOIN guilds AS g2 ON g2.id = a.leading_guild LEFT JOIN characters AS c ON c.id=g.char_id_founder WHERE g.id='.$guild.' LIMIT 1'; $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); echo '<p class="header">Guild Infos for "'.htmlentities($row['name']).'"</p>'; @@ -113,14 +113,11 @@ echo '<td>'.htmlentities($row['name']).'</td>'; echo '<td>'.htmlentities($row['guild_level']).'</td>'; echo '<td>'.htmlentities($row['guild_points']).'</td>'; - echo '<td>'; - /* Just waiting for the account page to come. - * - echo '<a href="./index.php?do=editaccounts&id='.$row['id'].'">Edit</a>'; + echo '<td><a href="./index.php?do=editguildmember&id='.$row['id'].'">Edit</a>'; if(CheckAccess('other', 'delete')) { - echo ' - <a href="./index.php?do=deleteaccounts&id='.$row['id'].'">Delete</a>'; - }*/ + echo ' - <a href="./index.php?do=deleteguildmember&id='.$row['id'].'&guild='.$guild.'">Delete</a>'; + } echo '</td></tr>'; } echo '</table>'; @@ -131,4 +128,129 @@ echo '<p class="error">You are not authorized to use these functions</p>'; } } + +function editguildmember() +{ + if(!CheckAccess('other', 'read')) + { + echo '<p class="error">You are not authorized to use these functions</p>'; + return; + } + $edit = CheckAccess('other', 'edit'); + $member = @$_GET['id']; + if(!is_numeric($member)) + { + echo '<p class="error">You have to specify a valid member ID!</p>'; + return; + } + + if(isset($_POST['guild_public_notes']) && isset($_POST['guild_private_notes'])) + { + $public_notes = mysql_real_escape_string(str_replace("\r", '', $_POST['guild_public_notes'])); + $private_notes = mysql_real_escape_string(str_replace("\r", '', $_POST['guild_private_notes'])); + + $sql = 'UPDATE characters SET guild_public_notes = \''.$public_notes.'\', guild_private_notes = \''.$private_notes.'\' WHERE id = '.$member.' LIMIT 1'; + $query = mysql_query2($sql); + if(1 == ($rows = mysql_affected_rows())) + { + echo '<p class="error">Update successful.</p>'; + } + else + { + echo '<p class="error">Something went wrong while updating! (updated rows '.$rows.')</p>'; + } + } + + echo '<p class="header">'.($edit ? 'Edit' : 'View').' a character\'s guild notes</p>'; + + $sql = 'SELECT c.*, g.name as guild FROM characters AS c, guilds AS g WHERE c.id = '.$member.' AND g.id = c.guild_member_of LIMIT 1'; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + + echo '<a href="./index.php?do=listguilds&guild='.$row['guild_member_of'].'">Back</a><br/>'; + if($edit) + { + echo '<form action="./index.php?do=editguildmember&id='.$member.'" method="post">'; + } + echo '<table>'; + echo '<tr class="color_a"><td>ID</td><td>'.$member.'</td></tr>'; + echo '<tr class="color_b"><td>Name</td><td>'.htmlentities($row['name']).'</td></tr>'; + echo '<tr class="color_a"><td>Guild</td><td>'.htmlentities($row['guild']).'</td></tr>'; + echo '<tr class="color_b"><td>Guild Public Notes</td><td>'; + echo ($edit ? '<textarea name="guild_public_notes" style="width: 400px; height: 100px;">' : '<div style="width: 400px; height: 100px;overflow: auto;"><pre style="margin: 0px;white-space: normal;">'); + $notes = htmlentities($row['guild_public_notes']); + echo ($edit ? $notes : nl2br($notes)); + echo ($edit ? '</textarea>' : '</pre></div>').'</td></tr>'; + + echo '<tr class="color_a"><td>Guild Private Notes</td><td>'; + echo ($edit ? '<textarea name="guild_private_notes" style="width: 400px; height: 100px;">' : '<div style="width: 400px; height: 100px;overflow: auto;"><pre style="margin: 0px;white-space: normal;">'); + $notes = htmlentities($row['guild_private_notes']); + echo ($edit ? $notes : nl2br($notes)); + echo ($edit ? '</textarea>' : '</pre></div>').'</td></tr>'; + echo '</table>'; + + if($edit) + { + echo '<input type="submit" value="update" /></form>'; + } +} + +function deleteguildmember() +{ + if(CheckAccess('other', 'delete')) + { + $id = @$_GET['id']; + $guild = @$_GET['guild']; + if(!is_numeric($id)) + { + echo '<p class="error">You have to specify a valid member ID!</p>'; + return; + } + if(!is_numeric($guild)) + { + echo '<p class="error">You have to specify a valid guild ID!</p>'; + return; + } + + $sql = 'SELECT * FROM characters WHERE id = '.$id.' LIMIT 1'; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + + $passed = false; + $password = @$_POST['password']; + if(!empty($password)) + { + $sql = 'SELECT username FROM accounts WHERE password = \''.md5($password).'\' LIMIT 1'; + $row2 = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + if($_SESSION['username'] == $row2['username']) + { + $passed = true; + } + } + if(!$passed) + { + echo '<strong>Are sure you want to remove "'.$row['name'].'" from the guild?</strong><br/>'; + echo '<form action="./index.php?do=deleteguildmember&id='.$id.'&guild='.$guild.'" method="post">'; + echo 'Password: <input type="password" name="password" /><br/>'; + echo '<input type="submit" value="Yes"/>'; + echo ' - <a href="./index.php?do=listguilds&guild='.$guild.'">No</a></form>'; + } + else + { + $sql = 'UPDATE characters SET guild_member_of = 0 WHERE id = '.$id.' LIMIT 1'; + $query = mysql_query2($sql); + if(1 == ($rows = mysql_affected_rows())) + { + echo '<p class="error">"'.htmlentities($row['name']).'" now belongs to no guild.</p>'; + } + else + { + echo '<p class="error">Something went wrong! '.$rows.' characters are excluded from their guild.</p>'; + } + echo '<a href="./index.php?do=listguilds&guild='.$guild.'">Back</a>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} ?> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-08 21:09:10
|
Revision: 3945 http://planeshift.svn.sourceforge.net/planeshift/?rev=3945&view=rev Author: weltall2 Date: 2009-07-08 12:27:29 +0000 (Wed, 08 Jul 2009) Log Message: ----------- added list petition function patch by nakem Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/other/othermain.php Added Paths: ----------- www/webconsole-new/other/listpetitions.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-07-07 20:34:16 UTC (rev 3944) +++ www/webconsole-new/index.php 2009-07-08 12:27:29 UTC (rev 3945) @@ -519,6 +519,12 @@ othermain(); deleteguildmember(); break; + case 'listpetitions': + include('./other/othermain.php'); + include('./other/listpetitions.php'); + othermain(); + listpetitions(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); Added: www/webconsole-new/other/listpetitions.php =================================================================== --- www/webconsole-new/other/listpetitions.php (rev 0) +++ www/webconsole-new/other/listpetitions.php 2009-07-08 12:27:29 UTC (rev 3945) @@ -0,0 +1,146 @@ +<?php + +function sort_link($column, $label, $sort_col, $sort_dir) +{ + $html = '<a href="./index.php?do=listpetitions&page='.@$_GET['page'].'&items_per_page='.@$_GET['items_per_page'].'&sort_column='.$column; + if($sort_col == $column && $sort_dir == 'ASC') + { + $html .= '&sort_dir=DESC'; + } + else + { + $html .= '&sort_dir=ASC'; + } + $html .= '">'.$label; + if($sort_col == $column) + { + $html .= '<img src="s_'.strtolower($sort_dir).'.png" border="0" />'; + } + $html .= '</a>'; + return $html; +} + +function msg_cut($str, $length) +{ + return (strlen($str) > $length ? substr($str, 0, $length-3).'...': $str); +} + +function listpetitions() { + if(!CheckAccess('other', 'read')) + { + echo '<p class="error">You are not authorized to use these functions</p>'; + return; + } + + $petition = @$_GET['petition']; + if(!is_numeric($petition)) + { + $page = (is_numeric(@$_GET['page']) ? $_GET['page'] : 0); + $items_per_page = (is_numeric(@$_GET['items_per_page']) ? $_GET['items_per_page'] : 30); + $sort_column = (!empty($_GET['sort_column']) ? $_GET['sort_column'] : 'id'); + $sort_dir = (@$_GET['sort_dir'] == 'DESC' ? 'DESC' : 'ASC'); + + $sql = 'SELECT COUNT(*) FROM petitions'; + $page_count = mysql_fetch_array(mysql_query2($sql), MYSQL_NUM); + $page_count = ceil($page_count[0] / $items_per_page); + + if($page > $page_count) + { + $page = $page_count; + } + if($page < 0) + { + $page = 0; + } + + $sql = 'SELECT p.*, c.name AS player_name, c2.name AS gm_name FROM petitions as p LEFT JOIN characters AS c ON c.id = p.player LEFT JOIN characters AS c2 ON c2.id = p.assigned_gm'; + $sql .= ' ORDER BY '.$sort_column.' '.$sort_dir.' LIMIT '.($page*$items_per_page).', '.$items_per_page; + $query = mysql_query2($sql); + + echo '<p class="header">List Petitions</p>'; + + for($i = 0; $i< $page_count; $i++) + { + if($i == $page) + { + echo ($i+1); + } + else + { + echo '<a href="./index.php?do=listpetitions&page='.$i.'&items_per_page='.$items_per_page.'&sort_column='.$sort_column.'&sort_dir='.$sort_dir.'">'.($i+1).'</a>'; + } + echo ($i == ($page_count -1) ? '' : ' | '); + } + + echo ' <form action="./index.php" method="get">'; + echo '<input type="hidden" name="do" value="listpetitions" />'; + echo '<input type="hidden" name="page" value="'.$page.'" />'; + echo '<input type="hidden" name="sort_column" value="'.$sort_column.'" />'; + echo '<input type="hidden" name="sort_dir" value="'.$sort_dir.'" />'; + echo 'Items per page: <input type="text" name="items_per_page" value="'.$items_per_page.'" size="3" />'; + echo '</form>'; + echo '<br />'; + + + echo '<table><tr>'; + echo '<th>'.sort_link('id', 'ID', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('player_name', 'Player', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('petition', 'Content', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('status', 'Status', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('category', 'Category', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('created_date', 'Created', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('closed_date', 'Closed', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('gm_name', 'GM', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('resolution', 'Resolution', $sort_column, $sort_dir).'</th>'; + echo '<th>'.sort_link('escalation_level', 'Escalation Level', $sort_column, $sort_dir).'</th>'; + echo '<th>Actions</th>'; + echo '</tr>'; + + $mode = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $mode = ($mode == 'a' ? 'b' : 'a'); + echo '<tr class="color_'.$mode.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['player_name']).'</td>'; + echo '<td>'.htmlentities(msg_cut($row['petition'], 50)).'</td>'; + echo '<td>'.htmlentities($row['status']).'</td>'; + echo '<td>'.htmlentities($row['category']).'</td>'; + echo '<td>'.$row['created_date'].'</td>'; + echo '<td>'.($row['closed_date'] == '0000-00-00 00:00:00' ? 'never' : $row['closed_date']).'</td>'; + echo '<td>'.htmlentities($row['assigned_gm'] == '-1' ? 'none' : $row['gm_name'] ).'</td>'; + echo '<td>'.htmlentities(msg_cut($row['resolution'], 20)).'</td>'; + echo '<td>'.$row['escalation_level'].'</td>'; + echo '<td><a href="./index.php?do=listpetitions&petition='.$row['id'].'">Details</a></td>'; + } + echo '</table>'; + } + else + { + $id = @$_GET['petition']; + if(!is_numeric($id)) + { + echo '<p class="error">You have to specify a valid petition ID!</p>'; + return; + } + echo '<p class="header">Information about the Petition #'.$id.'</p>'; + + $sql = 'SELECT p.*, c.name AS player_name, c2.name AS gm_name FROM petitions as p LEFT JOIN characters AS c ON c.id = p.player LEFT JOIN characters AS c2 ON c2.id = p.assigned_gm WHERE p.id = '.$id.' LIMIT 1'; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + + echo '<a href="./index.php?do=listpetitions">Back</a><br/>'; + echo '<table>'; + echo '<tr class="color_a"><td>Player</td><td>'.htmlentities($row['player_name']).'</td></tr>'; + echo '<tr class="color_b"><td>Content</td><td>'.htmlentities($row['petition']).'</td></tr>'; + echo '<tr class="color_a"><td>Status</td><td>'.htmlentities($row['status']).'</td></tr>'; + echo '<tr class="color_b"><td>Category</td><td>'.htmlentities($row['category']).'</td></tr>'; + echo '<tr class="color_a"><td>Created</td><td>'.$row['created_date'].'</td></tr>'; + echo '<tr class="color_b"><td>Closed</td><td>'.($row['closed_date'] == '0000-00-00 00:00:00' ? 'never' : $row['closed_date']).'</td></tr>'; + echo '<tr class="color_a"><td>Assigned GM</td><td>'.($row['assigned_gm'] == '-1' ? 'none' : htmlentities($row['gm_name'])).'</td></tr>'; + echo '<tr class="color_b"><td>Resolution</td><td>'.htmlentities($row['resolution']).'</td></tr>'; + echo '<tr class="color_a"><td>Escalation Level</td><td>'.$row['escalation_level'].'</td></tr>'; + echo '</table>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/other/listpetitions.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/other/othermain.php =================================================================== --- www/webconsole-new/other/othermain.php 2009-07-07 20:34:16 UTC (rev 3944) +++ www/webconsole-new/other/othermain.php 2009-07-08 12:27:29 UTC (rev 3945) @@ -4,10 +4,10 @@ { echo '<div class="menu_left">'; echo '<a href="./index.php?do=listguilds">List guilds and members</a> <br/>'; + echo '<a href="./index.php?do=listpetitions">List petitions</a> <br/>'; /* * These pages still need to be done! * - echo '<a href="./index.php?do=listpetitions">List petitions</a> <br/>'; echo '<a href="./index.php?do=viewaccounts">View accounts</a> <br/>'; echo '<a href="./index.php?do=viewgms">View/Edit gms</a> <br/>'; // Admins This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-16 09:16:51
|
Revision: 4026 http://planeshift.svn.sourceforge.net/planeshift/?rev=4026&view=rev Author: weltall2 Date: 2009-07-16 09:16:48 +0000 (Thu, 16 Jul 2009) Log Message: ----------- Deleted listquest.php.orig Fixes: list_item, escape the item name in sql queries. NPC -> detailed NPC view -> KA's -- added a direct link to edit/view these KA area's. Quest validator: "Complete something Step 21 Complete something." was accepted. Now checks for anything that comes after the number (When a step is given) and refuses it if found. patches by ravna Modified Paths: -------------- www/webconsole-new/items/listitems.php www/webconsole-new/npcs/npc_details.php www/webconsole-new/quests/validatequest.php Removed Paths: ------------- www/webconsole-new/quests/listquests.php.orig Modified: www/webconsole-new/items/listitems.php =================================================================== --- www/webconsole-new/items/listitems.php 2009-07-16 09:08:47 UTC (rev 4025) +++ www/webconsole-new/items/listitems.php 2009-07-16 09:16:48 UTC (rev 4026) @@ -503,8 +503,8 @@ // in a regexp, you can make a character group (in our case \n (with an additional \ to escape it in the PHP string)) by placing something between []. // so we get 'text[^\n]* item' In this case our character group is 'NOT newline' where \n is the newline, and ^ means not. Finally, the * after the group means zero or more of this character. // In other words, we are looking for a character sequence that contains "Player Gives" and "item_name" with any amount of characters between them that are not newlines. This effectively means they have to be on the same line. -// $query = "SELECT q.id, q.name, q.category FROM quests AS q LEFT JOIN quest_scripts AS qs ON q.id=qs.quest_id WHERE CONVERT(qs.script USING latin1) REGEXP 'Player Gives[^\\n]*$my_item_name' OR CONVERT(qs.script USING latin1) REGEXP 'Give[^\\n]*$my_item_name' ORDER BY q.name ASC"; -$query = "SELECT q.id, q.name, q.category FROM quests AS q LEFT JOIN quest_scripts AS qs ON q.id=qs.quest_id WHERE CONVERT(qs.script USING latin1) REGEXP '(Player Gives|Give)[^\\n]*$my_item_name' ORDER BY q.name ASC"; + $escaped_item_name = mysql_real_escape_string($my_item_name); + $query = "SELECT q.id, q.name, q.category FROM quests AS q LEFT JOIN quest_scripts AS qs ON q.id=qs.quest_id WHERE CONVERT(qs.script USING latin1) REGEXP '(Player Gives|Give)[^\\n]*$escaped_item_name' ORDER BY q.name ASC"; $result = mysql_query2($query); if (mysql_num_rows($result) > 0) { Modified: www/webconsole-new/npcs/npc_details.php =================================================================== --- www/webconsole-new/npcs/npc_details.php 2009-07-16 09:08:47 UTC (rev 4025) +++ www/webconsole-new/npcs/npc_details.php 2009-07-16 09:16:48 UTC (rev 4026) @@ -43,7 +43,7 @@ echo '<select name="npc_impervious_ind"><option value="N" selected="true">False</option><option value="Y">True</option></select>'; } echo '</td></tr>'; - echo '<tr><td>Experiance</td><td><input type="text" name="kill_exp" value="'.$row['kill_exp'].'" size="7" /></td></tr>'; + echo '<tr><td>Experience</td><td><input type="text" name="kill_exp" value="'.$row['kill_exp'].'" size="7" /></td></tr>'; echo '<tr><td> </td><td> </td></tr>'; $Spawns = PrepSelect('spawn'); $Loots = PrepSelect('loot'); @@ -279,7 +279,7 @@ echo '<tr><th>Area</th><th>Priority</th><th>Actions</th></tr>'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo '<tr>'; - echo '<td>'.$row['area'].'</td>'; + echo '<td><a href="./index.php?do=ka_detail&area='.rawurlencode($row['area']).'">'.$row['area'].'</a></td>'; echo '<td>'.$row['priority'].'</td>'; echo '<td><form action="./index.php?do=npc_details&npc_id='.$id.'&sub=kas" method="post">'; echo '<input type="hidden" name="area" value="'.$row['area'].'" />'; Deleted: www/webconsole-new/quests/listquests.php.orig =================================================================== --- www/webconsole-new/quests/listquests.php.orig 2009-07-16 09:08:47 UTC (rev 4025) +++ www/webconsole-new/quests/listquests.php.orig 2009-07-16 09:16:48 UTC (rev 4026) @@ -1,123 +0,0 @@ -<? -function listquests(){ - if(checkaccess('quests', 'read')){ - $query = 'SELECT id, name, category, player_lockout_time, quest_lockout_time, prerequisite FROM quests'; - if(!isset($_GET['sort'])){ - $query = $query.' ORDER BY name ASC'; - } - else{ - switch($_GET['sort']){ - case 'id': - $query = $query.' ORDER BY id ASC'; - break; - case 'category': - $query = $query.' ORDER BY category ASC'; - break; - case 'name': - $query = $query.' ORDER BY name ASC'; - break; - case 'plock': - $query = $query.' ORDER BY player_lockout_time ASC'; - break; - case 'qlock': - $query = $query.' ORDER by quest_lockout_time ASC'; - break; - default: - $query = $query.' ORDER BY name ASC'; - } - } - $result = mysql_query2($query); - echo '<table border="1">'."\n"; - echo '<tr><th><a href="./index.php?do=listquests&sort=id">ID</a></th><th><a href="./index.php?do=listquests&sort=category">Category</a></th><th><a href="./index.php?do=listquests&sort=name">Name</a></th><th><a href="./index.php?do=listquests&sort=plock">Player Lockout</a></th><th><a href="./index.php?do=listquests&sort=qlock">Quest Lockout</a></th><th>Prerequisites</th><th>Actions</th></tr>'; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'.$row['id'].'</td><td>'.$row['category'].'</td><td>'.$row['name'].'</td><td>'.$row['player_lockout_time']; - echo '</td><td>'.$row['quest_lockout_time'].'</td><td>'.htmlspecialchars($row['prerequisite']).'</td><td>'; - echo '<a href="./index.php?do=readquest&id='.$row['id'].'">Read</a>'; - if (checkaccess('quests', 'edit')){ - echo '<br/><a href="./index.php?do=editquest&id='.$row['id'].'">Edit</a>'; - } - if (checkaccess('quests', 'delete')){ - echo '<br/><a href="./index.php?do=deletequest&id='.$row['id'].'">Delete</a>'; - } - echo '</td></tr>'; - } - echo '</table>'."\n"; - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } -} - -function readquest(){ - if(checkaccess('quests', 'read')){ - if(!isset($_GET['id'])){ - echo '<p class="error">Error: No quest ID specified - Reverting to list quests</p>'; - listquests(); - }else{ - $id = mysql_real_escape_string($_GET['id']); - $query = 'SELECT name, category, player_lockout_time, quest_lockout_time, prerequisite FROM quests WHERE id='.$id; - $result = mysql_query2($query); - $query2 = 'SELECT script FROM quest_scripts WHERE quest_id='.$id; - $result2 = mysql_query2($query2); - $row = mysql_fetch_array($result, MYSQL_ASSOC); - echo 'Quest ID: '.$id."<br/>\n"; - echo 'Quest Name: '.$row['name']."<br/>\n"; - echo 'Quest Category: '.$row['category']."<br/>\n"; - echo 'Player Lockout Time: '.$row['player_lockout_time']."<br/>\n"; - echo 'Quest Lockout Time: '.$row['quest_lockout_time']."<br/>\n"; - echo 'Prerequisites: '.htmlspecialchars($row['prerequisite'])."<br/>\n"; - $row = mysql_fetch_array($result2, MYSQL_ASSOC); - $script = str_replace("\n", "<br/>\n", $row['script']); - echo '<hr/>'; - echo 'Quest Script:<br/>'.$script."<br/>\n"; - } - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } -} - -function npcquests(){ - if (checkaccess('quests', 'read')){ - //Select all NPCs - $query = 'SELECT c.id, c.name, c.lastname, s.name AS sector FROM characters AS c LEFT JOIN sectors AS s ON c.loc_sector_id = s.id WHERE account_id=9 AND racegender_id<22 ORDER BY c.name'; - $result = mysql_query2($query); - echo '<table border="1"><tr><th>NPC Name</th><th>Sector</th><th>Quests</th><th>Starting Quests</th></tr>'; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - $fullname = $row['name']; - if ($row['lastname'] != ""){ - $fullname = $fullname . ' ' . $row['lastname']; - } - echo '<tr><td>'.$fullname.'</td><td>'.$row['sector'].'</td><td>'; - $query = "SELECT quests.id, name, quest_scripts.script FROM quests LEFT JOIN quest_scripts on quests.id=quest_scripts.quest_id WHERE quest_scripts.script LIKE '%$fullname:%'"; - $result2 = mysql_query2($query); - while ($quests = mysql_fetch_array($result2, MYSQL_ASSOC)){ - $string = '/'.$fullname.'\:.*assign\040quest/ims'; - if (preg_match($string, $quests['script']) == 1){ - $Q_ID = $quests['id']; - $StartQuests["$Q_ID"] = $quests['name']; - }else{ - echo $quests['name'] . ' - <a href="./index.php?do=readquest&id='.$quests['id'].'">Read</a>'; - if (checkaccess('quests', 'edit')){ - echo ' - <a href="./index.php?do=editquest&id='.$quests['id'].'">Edit</a>'; - } - echo '<br/>'; - } - } - echo '</td><td>'; - if (isset($StartQuests)){ - foreach($StartQuests as $q_id => $q_name){ - echo $q_name . ' - <a href="./index.php?do=readquest&id='.$q_id.'">Read</a>'; - if (checkaccess('quests', 'edit')){ - echo ' - <a href="./index.php?do=editquest&id='.$q_id.'">Edit</a>'; - } - echo '<br/>'; - } - } - unset($StartQuests); - echo '</td></tr>'."\n"; - } - echo '</table>'; - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } -} -?> Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-07-16 09:08:47 UTC (rev 4025) +++ www/webconsole-new/quests/validatequest.php 2009-07-16 09:16:48 UTC (rev 4026) @@ -195,7 +195,7 @@ } else // we found a command { - $commands = explode(".", $line); + $commands = explode(".", $line); // Notice that this also drops the trailing '.' of every command. for($i = 0; $i < count($commands); $i++) { if(trim($commands[$i]) != "") @@ -551,8 +551,13 @@ } elseif (strncasecmp($command, "complete $name step", 14+strlen($name)) === 0) { - if(substr(trim($command), 14+strlen($name)) <= $step) + $split_complete = explode(' ', substr(trim($command), 15+strlen($name))); + if (count($split_complete) > 1) { + append_log("parse error, illegal text following 'complete $name step {$split_complete[0]}' on line $line_number"); + } + elseif ($split_complete[0] != '' && is_numeric($split_complete[0]) && $split_complete[0] <= $step && $split_complete[0] > 0) + { // valid, do nothing } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-07-26 23:55:46
|
Revision: 4136 http://planeshift.svn.sourceforge.net/planeshift/?rev=4136&view=rev Author: weltall2 Date: 2009-07-26 23:55:38 +0000 (Sun, 26 Jul 2009) Log Message: ----------- Added "List Item Icons" (ported from OLD) Added the option to exclude "private" zones (guild houses/NPCroom) from item instance searches. Also re-arranged the code to drop 2 redundant parts. Added gender to the lists of vuln/invuln NPCs Added "check npc triggers" which lists all NPCs with missing "greetings" "about you" or "how you" triggers. (ported from old) Added "check npc loaded" which lists all NPC's that are either not loaded as well as a list of npcs that are loaded in the NPC room or in a sector ID smaller than 1. Added .error to the stylesheet (only had p.error). This does the same, but is valid for all elements that chose that class. patch by ravna Modified Paths: -------------- www/webconsole-new/global.css www/webconsole-new/index.php www/webconsole-new/items/itemmain.php www/webconsole-new/items/locateitem.php www/webconsole-new/npcs/listnpcs.php www/webconsole-new/npcs/npcmain.php Added Paths: ----------- www/webconsole-new/items/listitemicons.php www/webconsole-new/npcs/checknpcloaded.php www/webconsole-new/npcs/checknpctriggers.php Modified: www/webconsole-new/global.css =================================================================== --- www/webconsole-new/global.css 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/global.css 2009-07-26 23:55:38 UTC (rev 4136) @@ -104,6 +104,10 @@ font-weight:bold; } +.error{ + color:red; +} + p.error{ color:red; } Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/index.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -119,6 +119,12 @@ itemmain(); listitems(); break; + case 'listitemicons': + include('./items/itemmain.php'); + include('./items/listitemicons.php'); + itemmain(); + listitemicons(); + break; case 'showitemusage': include('./items/itemmain.php'); include('./items/listitems.php'); @@ -309,6 +315,18 @@ npcmain(); ka_scripts(); break; + case 'checknpctriggers': + include('./npcs/npcmain.php'); + include('./npcs/checknpctriggers.php'); + npcmain(); + checknpctriggers(); + break; + case 'checknpcloaded': + include('./npcs/npcmain.php'); + include('./npcs/checknpcloaded.php'); + npcmain(); + checknpcloaded(); + break; case 'rules': include('./rules/rulesmain.php'); rulesmain(); Modified: www/webconsole-new/items/itemmain.php =================================================================== --- www/webconsole-new/items/itemmain.php 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/items/itemmain.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -1,17 +1,23 @@ <?php -function itemmain(){ - if (checkaccess('items', 'read')){ - echo '<div class="menu_left">'."\n"; - echo '<a href="./index.php?do=listitems">List items</a> <br/>'."\n"; - echo '<a href="./index.php?do=finditem">Locate Items</a> <br/>'; - if (checkaccess('items', 'create')){ - echo '<a href="./index.php?do=createitem">Create Item</a> <br/>'; - echo '<a href="./index.php?do=editcategory">Edit Categories</a> <br/>'; +function itemmain() +{ + if (checkaccess('items', 'read')) + { + echo '<div class="menu_left">'."\n"; + echo '<a href="./index.php?do=listitems">List items</a> <br/>'."\n"; + echo '<a href="./index.php?do=listitemicons">List item icons</a> <br/>'."\n"; + echo '<a href="./index.php?do=finditem">Locate Items</a> <br/>'; + if (checkaccess('items', 'create')) + { + echo '<a href="./index.php?do=createitem">Create Item</a> <br/>'; + echo '<a href="./index.php?do=editcategory">Edit Categories</a> <br/>'; + } + echo '<a href="./index.php">Return to main page.</a>'."\n"; + echo '</div><div class="main">'."\n"; } - echo '<a href="./index.php">Return to main page.</a>'."\n"; - echo '</div><div class="main">'."\n"; - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } } ?> Added: www/webconsole-new/items/listitemicons.php =================================================================== --- www/webconsole-new/items/listitemicons.php (rev 0) +++ www/webconsole-new/items/listitemicons.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -0,0 +1,43 @@ +<?php + +function listitemicons() +{ + displayCategory("books"); + displayCategory("food"); + displayCategory("furniture"); + displayCategory("helms"); + displayCategory("items"); + displayCategory("jewelry"); + displayCategory("money"); + displayCategory("naturalres"); + displayCategory("potions"); + displayCategory("shields"); + displayCategory("tools"); + displayCategory("weapons"); +} + +function displayCategory ($category) +{ + if (checkaccess('items', 'read')) + { + + echo "<H1>".$category."</H1>"; + echo '<TABLE BORDER="1">'; + + $query = "SELECT * FROM common_strings WHERE string LIKE '%$category%' ORDER BY id"; + $result = mysql_query2($query); + + while ($row = mysql_fetch_array($result)) { + echo "<TR><TD>".$row['id'] . "</TD><TD> " . $row['string']; + $str = $row['string']; + $name = substr( $str, strrpos($str,"/")); + echo "</TD></TR>"; + } + echo '</TABLE>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> Property changes on: www/webconsole-new/items/listitemicons.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/items/locateitem.php =================================================================== --- www/webconsole-new/items/locateitem.php 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/items/locateitem.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -1,102 +1,99 @@ <?php function locateitem(){ - if (checkaccess('items', 'read')){ - if (isset($_POST['search'])){ - if ($_POST['search'] == "Find Items"){ - echo 'Finding item'; - $itemstat = mysql_real_escape_string($_POST['itemid']); - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE item_stats_id_standard=$itemstat"; - $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th<th>Instance</th><th>Flags</th></tr>'."\n"; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'.$row['id'].'</td>'; - echo '<td>'.$row['name'].'</td>'; - echo '<td>'.$row['char_id_owner'].'</td>'; - echo '<td>'.$row['char_id_guardian'].'</td>'; - echo '<td>'.$row['parent_item_id'].'</td>'; - echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; - echo '<td>'.$row['stack_count'].'</td>'; - echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; - echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; - echo '<td>'.$row['loc_instance'].'</td>'; - echo '<td>'.$row['flags'].'</td></tr>'."\n"; + if (checkaccess('items', 'read')) + { + $display_item = false; + if (isset($_POST['search'])) + { + $query = 'SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE '; + if ($_POST['search'] == "Find Items") // these first 3 all give the same results with another "where", so we print them all at the end in the same code. + { + echo 'Finding item'; + $itemstat = mysql_real_escape_string($_POST['itemid']); + $query .= "item_stats_id_standard = $itemstat"; + if (isset($_POST['private'])) // The brackets in the SQL are intentional, and required for it's proper working. The sector names for guild houses are static/fixed for now (juli, 2009), but this may change in the future. + { + $query .= " AND (isnull(sec.name) OR i.loc_sector_id = '0' OR (sec.name != 'guildsimple' AND sec.name != 'guildlaw' AND sec.name != 'NPCroom'))"; + } + $display_item = true; + } + else if ($_POST['search'] == "Dropped Items") + { + echo 'Dropped Items'; + $query .= "i.char_id_owner = 0"; + if ($_POST['sectorid'] != '') + { + $sectorid = mysql_real_escape_string($_POST['sectorid']); + $query = $query . " AND i.loc_sector_id='$sectorid'"; + } + if (isset($_POST['private'])) + { + $query .= " AND sec.name != 'guildsimple' AND sec.name != 'guildlaw' AND sec.name != 'NPCroom'"; + } + $display_item = true; + } + else if ($_POST['search'] == "Find Instance") + { + $iid = mysql_real_escape_string($_POST['iid']); + $query .= "i.id='$iid'"; // "private" is not relevant when finding a specific instance. + $display_item = true; + } + else if ($_POST['search'] == "Find Merchants") // This one is different, so it gets it's own print. + { + $itemid = mysql_real_escape_string($_POST['vendoritemid']); // Don't make "is" "iss" (like it should logically be) since "is" is a reserved keyword in mysql. + $query = "SELECT DISTINCT c.id, c.name, c.lastname, iss.name AS item_name FROM merchant_item_categories AS m LEFT JOIN characters AS c ON c.id=m.player_id LEFT JOIN item_instances AS i ON i.char_id_owner=m.player_id LEFT JOIN item_stats AS iss ON iss.id=i.item_stats_id_standard WHERE i.location_in_parent > '15' AND i.item_stats_id_standard='$itemid' AND iss.category_id=m.category_id ORDER BY iss.name"; + $result = mysql_query2($query); + if (mysql_num_rows($result) == 0) + { + echo '<p class="error">No vendors found for this item.</p>'; + return; + } + $row = mysql_fetch_array($result, MYSQL_ASSOC); + echo '<p class="bold">Displaying vendors for '.$row['item_name'].' </p>'; + echo '<table>'; + do { + echo '<tr><td><a href="./index.php?do=npc_details&sub=main&npc_id='.$row['id'].'">'.$row['name'].' '.$row['lastname'].'</a></td></tr>'; + } while ($row = mysql_fetch_array($result, MYSQL_ASSOC)); + echo '</table>'; + } } - echo '</table>'; - }else if ($_POST['search'] == "Droped Items"){ - echo 'Droped Items'; - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.char_id_owner=0"; - if ($_POST['sectorid'] != ''){ - $sectorid = mysql_real_escape_string($_POST['sectorid']); - $query = $query . " AND i.loc_sector_id='$sectorid'"; + else // if there was no search, print the form + { + echo '<form action="./index.php?do=finditem" method="post"><table>'; + echo '<tr><td colspan="3"><input type="checkbox" name="private"> Exclude private zones (guild houses/NPC room) from the search?</td></tr>'; + echo '<tr><td>Find all instances of item: </td><td>'; + $itemresult = PrepSelect('items'); + echo DrawSelectBox('items', $itemresult, 'itemid', ''). '</td><td><input type="submit" name="search" value="Find Items"/></td></tr>'; + echo '<tr><td>Locate Instance ID: </td><td><input type="text" name="iid" /></td><td><input type="submit" name="search" value="Find Instance" /></td></tr>'; + $Sectors = PrepSelect('sectorid'); + echo '<tr><td>Locate All Items on floor (Limit to Sector: </td><td>'.DrawSelectBox('sectorid', $Sectors, 'sectorid', '', true).') </td><td><input type="submit" name="search" value="Dropped Items" /></td></tr>'; + echo '<tr><td>Find all vendors of item: </td><td>'.DrawSelectBox('items', $itemresult, 'vendoritemid', ''). '</td><td><input type="submit" name="search" value="Find Merchants"/></td></tr>'; + echo '</table></form>'; } - $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th><th>Instance</th><th>Flags</th></tr>'."\n"; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'.$row['id'].'</td>'; - echo '<td>'.$row['name'].'</td>'; - echo '<td>'.$row['char_id_owner'].'</td>'; - echo '<td>'.$row['char_id_guardian'].'</td>'; - echo '<td>'.$row['parent_item_id'].'</td>'; - echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; - echo '<td>'.$row['stack_count'].'</td>'; - echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; - echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; - echo '<td>'.$row['loc_instance'].'</td>'; - echo '<td>'.$row['flags'].'</td></tr>'."\n"; - } - echo '</table>'; - }else if ($_POST['search'] == "Find Instance"){ - $iid = mysql_real_escape_string($_POST['iid']); - $query = "SELECT i.id, s.name, i.char_id_owner, i.char_id_guardian, i.parent_item_id, i.location_in_parent, i.stack_count, sec.name as sector, i.loc_x, i.loc_y, i.loc_z, i.loc_xrot, i.loc_zrot, i.loc_instance, i.flags FROM item_instances AS i LEFT JOIN sectors AS sec ON i.loc_sector_id=sec.id LEFT JOIN item_stats AS s ON i.item_stats_id_standard=s.id WHERE i.id='$iid'"; - $result = mysql_query2($query); - echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th><th>Instance</th><th>Flags</th></tr>'."\n"; - while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ - echo '<tr><td>'.$row['id'].'</td>'; - echo '<td>'.$row['name'].'</td>'; - echo '<td>'.$row['char_id_owner'].'</td>'; - echo '<td>'.$row['char_id_guardian'].'</td>'; - echo '<td>'.$row['parent_item_id'].'</td>'; - echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; - echo '<td>'.$row['stack_count'].'</td>'; - echo '<td>'.$row['sector'].'</td>'; - echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; - echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; - echo '<td>'.$row['loc_instance'].'</td>'; - echo '<td>'.$row['flags'].'</td></tr>'."\n"; - } - echo '</table>'; - }else if ($_POST['search'] == "Find Merchants"){ - $itemid = mysql_real_escape_string($_POST['vendoritemid']); // Don't make "is" "iss" (like it should logically be) since "is" is a reserved keyword in mysql. - $query = "SELECT DISTINCT c.id, c.name, c.lastname, iss.name AS item_name FROM merchant_item_categories AS m LEFT JOIN characters AS c ON c.id=m.player_id LEFT JOIN item_instances AS i ON i.char_id_owner=m.player_id LEFT JOIN item_stats AS iss ON iss.id=i.item_stats_id_standard WHERE i.location_in_parent > '15' AND i.item_stats_id_standard='$itemid' AND iss.category_id=m.category_id ORDER BY iss.name"; - $result = mysql_query2($query); - if (mysql_num_rows($result) == 0) + if ($display_item) // if there was an item search, print it here. { - echo '<p class="error">No vendors found for this item.</p>'; - return; + $result = mysql_query2($query); + echo '<table border="1"><tr><th>Instance ID</th><th>Name</th><th>Owner ID</th><th>Guardian ID</th><th>Parent Item</th><th>Location in Parent</th><th>Stack Count</th><th>Sector</th><th>X</th><th>Y</th><th>Z</th><th>X rot</th><th>Z rot</th<th>Instance</th><th>Flags</th></tr>'."\n"; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ + echo '<tr><td>'.$row['id'].'</td>'; + echo '<td>'.$row['name'].'</td>'; + echo '<td>'.$row['char_id_owner'].'</td>'; + echo '<td>'.$row['char_id_guardian'].'</td>'; + echo '<td>'.$row['parent_item_id'].'</td>'; + echo '<td>'.LocationToString($row['location_in_parent']).'</td>'; + echo '<td>'.$row['stack_count'].'</td>'; + echo '<td>'.$row['sector'].'</td>'; + echo '<td>'.$row['loc_x'].'</td><td>'.$row['loc_y'].'</td><td>'.$row['loc_z'].'</td>'; + echo '<td>'.$row['loc_xrot'].'</td><td>'.$row['loc_zrot'].'</td>'; + echo '<td>'.$row['loc_instance'].'</td>'; + echo '<td>'.$row['flags'].'</td></tr>'."\n"; + } + echo '</table>'; } - $row = mysql_fetch_array($result, MYSQL_ASSOC); - echo '<p class="bold">Displaying vendors for '.$row['item_name'].' </p>'; - echo '<table>'; - do { - echo '<tr><td><a href="./index.php?do=npc_details&sub=main&npc_id='.$row['id'].'">'.$row['name'].' '.$row['lastname'].'</a></td></tr>'; - } while ($row = mysql_fetch_array($result, MYSQL_ASSOC)); - echo '</table>'; - } - }else{ - echo '<form action="./index.php?do=finditem" method="post">'; - echo 'Find all instances of item: '; - $itemresult = PrepSelect('items'); - echo DrawSelectBox('items', $itemresult, 'itemid', ''). '<input type="submit" name="search" value="Find Items"/><br/>'; - echo 'Locate Instance ID: <input type="text" name="iid" /><input type="submit" name="search" value="Find Instance" /><br/>'; - $Sectors = PrepSelect('sectorid'); - echo 'Locate All Items on floor (Limit to Sector: '.DrawSelectBox('sectorid', $Sectors, 'sectorid', '', true).') <input type="submit" name="search" value="Droped Items" /><br/>'; - echo 'Find all vendors of item: '.DrawSelectBox('items', $itemresult, 'vendoritemid', ''). '<input type="submit" name="search" value="Find Merchants"/><br/>'; - echo '</form>'; } - }else{ - echo '<p class="error">You are not authorized to use these functions</p>'; - } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } } ?> Added: www/webconsole-new/npcs/checknpcloaded.php =================================================================== --- www/webconsole-new/npcs/checknpcloaded.php (rev 0) +++ www/webconsole-new/npcs/checknpcloaded.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -0,0 +1,75 @@ +<?PHP +function checknpcloaded(){ + + if (checkaccess('npc', 'read')) + { + // extract all NPCs names that are not loaded in game + $query = "select c.id, c.name, c.lastname, sec.name, c.loc_x, c.loc_y, c.loc_z, c.npc_spawn_rule from characters as c, sectors as sec "; + $query = $query . " where npc_master_id !=0 and c.loc_sector_id=sec.id"; + $query = $query . " and character_type!=2 and npc_spawn_rule<1"; + $query = $query . " order by sec.name, c.name"; + + $result = mysql_query2($query); + + echo "<h3>All NPCs that are not loaded in game (Pets excluded)</h3>"; + echo " <TABLE BORDER=1>"; + echo " <TH> ID </TH> <TH> NAME</TH><TH> Sector</TH><TH> Position</TH><TH> Loaded in game?</TH>"; + + // for each NPC + while ($line = mysql_fetch_array($result, MYSQL_NUM)) + { + + $loaded = "yes"; + if ($line[7] == 0) + { + $loaded = '<span class="error">no</span>'; + } + + $fullname = $line[1] . " " . $line[2]; + $fullname = trim($fullname); + + echo "<TR><TD>$line[0] </TD><TD><A href='index.php?do=npc_details&sub=main&npc_id=".$line[0]."'>".$fullname."</a></TD><TD>$line[3]</TD><TD>$line[4]/$line[5]/$line[6]</TD>"; + echo "<TD>$loaded</TD></TR>"; + } + echo '</TABLE><br><br>'; + + echo '<br><br>'; + + echo "<h3>All NPC Loaded in NPCRoom or in wrong sector</h3>"; + // NPC Loaded in NPCRoom or in wrong sector + $query = "select c.id, c.name, c.lastname, sec.name, c.loc_x, c.loc_y, c.loc_z, c.npc_spawn_rule from characters as c, sectors as sec "; + $query = $query . " where npc_master_id !=0 and c.loc_sector_id=sec.id"; + $query = $query . " and npc_spawn_rule>0 and (loc_sector_id<1 or loc_sector_id=3)"; + $query = $query . " order by sec.name, c.name"; + + $result = mysql_query2($query); + + echo " <TABLE BORDER=1>"; + echo " <TH> ID </TH> <TH> NAME</TH><TH> Sector</TH><TH> Position</TH><TH> Loaded in game?</TH>"; + + // for each NPC + while ($line = mysql_fetch_array($result, MYSQL_NUM)) + { + + $loaded = "yes"; + if ($line[6] == 0) + { + $loaded = '<span class="error">no</span>'; + } + + $fullname = $line[1] . " " . $line[2]; + $fullname = trim($fullname); + + echo "<TR><TD>$line[0] </TD><TD><A href='index.php?do=npc_details&sub=main&npc_id=".$line[0]."'>".$fullname."</a></TD><TD>$line[3]</TD><TD>$line[4]/$line[5]/$line[6]</TD>"; + echo "<TD>$loaded</TD></TR>"; + } + echo '</TABLE><br><br>'; + echo '<br><br>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> Property changes on: www/webconsole-new/npcs/checknpcloaded.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/npcs/checknpctriggers.php =================================================================== --- www/webconsole-new/npcs/checknpctriggers.php (rev 0) +++ www/webconsole-new/npcs/checknpctriggers.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -0,0 +1,78 @@ +<?PHP +function checknpctriggers(){ + + if (checkaccess('npc', 'read')) + { + // extract all invulnerable NPC names + $query = "select c.id, c.name, c.lastname, sec.name, c.loc_x, c.loc_y, c.loc_z, c.npc_spawn_rule from characters as c, sectors as sec "; + $query = $query . " where c.npc_master_id !=0 and c.loc_sector_id=sec.id"; + $query = $query . " and c.npc_impervious_ind='Y'"; + $query = $query . " order by sec.name, c.name"; + + $result = mysql_query2($query); + + echo " <TABLE BORDER=1>"; + echo " <TH> ID </TH> <TH> NAME</TH><TH> Sector</TH><TH> Position</TH><TH> Missing Triggers</TH><TH> Loaded in game?</TH>"; + + // for each NPC + while ($line = mysql_fetch_array($result, MYSQL_NUM)) + { + + $fullname = $line[1] . " " . $line[2]; + $fullname = trim($fullname); + // search his triggers + $query2 = "select count(*) from npc_triggers where area='$fullname' and trigger_text='greetings'"; + $result2 = mysql_query2($query2); + $line2 = mysql_fetch_array($result2, MYSQL_NUM); + $found1 = $line2[0]; + if ($found1=="0") { + $query2 = "select count(*) from npc_knowledge_areas where area like 'greetings%' and player_id=$line[0]"; + $result2 = mysql_query2($query2); + $line2 = mysql_fetch_array($result2, MYSQL_NUM); + $found1 = $line2[0]; + } + + $query2 = "select count(*) from npc_triggers where area='$fullname' and trigger_text='about you'"; + $result2 = mysql_query2($query2); + $line2 = mysql_fetch_array($result2, MYSQL_NUM); + $found2 = $line2[0]; + + $query2 = "select count(*) from npc_triggers where area='$fullname' and trigger_text='how you'"; + $result2 = mysql_query2($query2); + $line2 = mysql_fetch_array($result2, MYSQL_NUM); + $found3 = $line2[0]; + + $loaded = "yes"; + if ($line[7]==0) + { + $loaded = "<font color=red>no</font>"; + } + + if ($found1=="0" or $found2=="0" or $found3=="0") { + echo "<TR><TD>$line[0] </TD><TD><A href='index.php?do=npc_details&sub=main&npc_id=".$line[0]."'>".$fullname."</a></TD><TD>$line[3]</TD><TD>$line[4]/$line[5]/$line[6]</TD><TD>"; + if ($found1=="0") + { + echo "greetings <br>"; + } + if ($found2=="0") + { + echo "about you <br>"; + } + if ($found3=="0") + { + echo "how you <br>"; + } + echo "</TD><TD>$loaded</TD></TR>"; + } + } + echo '</TABLE><br><br>'; + + echo '<br><br>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> Property changes on: www/webconsole-new/npcs/checknpctriggers.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/npcs/listnpcs.php =================================================================== --- www/webconsole-new/npcs/listnpcs.php 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/npcs/listnpcs.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -2,8 +2,8 @@ function listnpcs($a, $b = NULL){ if (checkaccess('npcs', 'read')){ echo '<table border="1">'; - echo '<tr><th><a href="./index.php?do='.$_GET['do'].'&sort=id">ID</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=name">Name</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=race">Race</a></th><th>Description</th><th><a href="./index.php?do='.$_GET['do'].'&sort=spawn">Spawn</a>/<a href="./index.php?do='.$_GET['do'].'&sort=loot">Loot</a></th><th>Position</th><th><a href="./index.php?do='.$_GET['do'].'&sort=sector">Sector</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=behavior">Behavior</a></th><th>Region</th></tr>'; - $query = 'SELECT c.id, c.name, c.lastname, c.description, c.npc_spawn_rule, c.npc_addl_loot_category_id, s.name AS sector, c.loc_x, c.loc_y, c.loc_z, c.loc_instance, b.npctype AS behavior, b.region, r.name AS race FROM characters as c LEFT JOIN sectors AS s ON c.loc_sector_id=s.id LEFT JOIN sc_npc_definitions AS b ON c.id=b.char_id LEFT JOIN race_info AS r ON c.racegender_id=r.id WHERE c.character_type=1'; + echo '<tr><th><a href="./index.php?do='.$_GET['do'].'&sort=id">ID</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=name">Name</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=race">Race</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=sex">Gender</a></th><th>Description</th><th><a href="./index.php?do='.$_GET['do'].'&sort=spawn">Spawn</a>/<a href="./index.php?do='.$_GET['do'].'&sort=loot">Loot</a></th><th>Position</th><th><a href="./index.php?do='.$_GET['do'].'&sort=sector">Sector</a></th><th><a href="./index.php?do='.$_GET['do'].'&sort=behavior">Behavior</a></th><th>Region</th></tr>'; + $query = 'SELECT c.id, c.name, c.lastname, c.description, c.npc_spawn_rule, c.npc_addl_loot_category_id, s.name AS sector, c.loc_x, c.loc_y, c.loc_z, c.loc_instance, b.npctype AS behavior, b.region, r.name AS race, r.sex FROM characters as c LEFT JOIN sectors AS s ON c.loc_sector_id=s.id LEFT JOIN sc_npc_definitions AS b ON c.id=b.char_id LEFT JOIN race_info AS r ON c.racegender_id=r.id WHERE c.character_type=1'; if ($b != NULL){ $query = $query . $b; }else{ @@ -28,6 +28,8 @@ $query = $query . ' ORDER by behavior, name'; }else if ($_GET['sort'] == 'race'){ $query = $query . ' ORDER by race, sector, name'; + }else if ($_GET['sort'] == 'sex'){ + $query = $query . ' ORDER by sex, sector, name'; }else{ $query = $query . ' ORDER BY sector, name'; } @@ -46,6 +48,7 @@ echo '<td>'.$row['name'].' '.$row['lastname'].'</td>'; } echo '<td>'.$row['race'].'</td>'; + echo '<td>'.$row['sex'].'</td>'; echo '<td>'.$row['description'].'</td>'; echo '<td>(<a href="./index.php?do=listspawn&id='.$row['npc_spawn_rule'].'">'.$row['npc_spawn_rule'].'</a>)'; echo '/(<a href="./index.php?do=listloot&id='.$row['npc_addl_loot_category_id'].'">'.$row['npc_addl_loot_category_id'].'</a>)</td>'; Modified: www/webconsole-new/npcs/npcmain.php =================================================================== --- www/webconsole-new/npcs/npcmain.php 2009-07-26 23:41:41 UTC (rev 4135) +++ www/webconsole-new/npcs/npcmain.php 2009-07-26 23:55:38 UTC (rev 4136) @@ -14,6 +14,9 @@ echo '<a href="./index.php?do=synonyms">List Synonyms</a> <br/>'; echo '<a href="./index.php?do=ka_trigg">List Trigger KAs</a> <br/>'; echo '<a href="./index.php?do=ka_scripts">List KA Scripts</a> <br/>'; + echo '<hr/>'; + echo '<a href="./index.php?do=checknpctriggers">Check NPC Triggers</a> <br/>'; + echo '<a href="./index.php?do=checknpcloaded">Check NPC Loaded</a> <br/>'; echo '<hr/><a href="./index.php">Return to main page.</a>'; echo '</div><div class="main">'; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-08-05 12:49:36
|
Revision: 4188 http://planeshift.svn.sourceforge.net/planeshift/?rev=4188&view=rev Author: weltall2 Date: 2009-08-05 12:49:27 +0000 (Wed, 05 Aug 2009) Log Message: ----------- Updates to the webconsole by ravna: - Added list/edit/create/delete waypoint links. - Loot rules: allow "none" (0) as an item. (for the cases where you only want to let ppl loot money) - Added list/edit/create/delete path points - When deleting a skill from a trainer, it would delete all skills with that name regardles of rank. (So if you had swords 1~5 and 10~15, and delete one, both would be gone.) This is now fixed. - Added Find KA trigger (ported from OLD + added direct links to the KA's any found results belong to) - Added check on delete waypoint, can't delete if waypoint_links still use it. - Added variable checking to the quest validator, menu: and npc: lines each have their own specific variables, no other variables may exist. NPC speaking lines can use $playerrace, $sir and $playername MENU lines can use $name, $race, $his, and $sir Modified Paths: -------------- www/webconsole-new/commonfunctions.php www/webconsole-new/index.php www/webconsole-new/npcs/listlootrules.php www/webconsole-new/npcs/listtrainer.php www/webconsole-new/npcs/npcmain.php www/webconsole-new/quests/validatequest.php www/webconsole-new/rules/rulesmain.php www/webconsole-new/rules/waypoints.php Added Paths: ----------- www/webconsole-new/npcs/findtrigger.php www/webconsole-new/rules/pathpoints.php www/webconsole-new/rules/waypointlinks.php Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/commonfunctions.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -185,7 +185,8 @@ $typevals["process"] = "SELECT DISTINCT process_id, CONCAT(process_id, ' - ', name) FROM trade_processes ORDER BY name"; $typevals["patterns"] = "SELECT id, pattern_name FROM trade_patterns ORDER BY pattern_name"; $typevals["mind_slot_items"] = "SELECT id, name FROM item_stats WHERE stat_type='B' AND valid_slots LIKE '%MIND%' ORDER BY name"; - + $typevals["waypoints"] = "SELECT w.id, CONCAT(s.name, ' -- ', w.name, ' -- ', ' X: ', w.x, ' Y: ', w.y, ' Z: ', w.z) FROM sc_waypoints AS w LEFT JOIN sectors AS s ON w.loc_sector_id=s.id ORDER BY s.name, w.name"; + $query = $typevals[$type]; $result = mysql_query2($query); @@ -195,7 +196,7 @@ /*DrawSelectBox() creates and returns the string for the <select> box*/ function DrawSelectBox($type, $result, $name, $value, $includenull=false){ $type = strtolower($type); - $typevals["items"] = '""'; + $typevals["items"] = '"0"'; $typevals["skill"] = '"-1"'; $typevals["category"] = '"-1"'; $typevals["icon"] = '"0"'; @@ -215,8 +216,9 @@ $typevals["locations"] = '"-1"'; $typevals["process"] = '""'; $typevals["patterns"] = '"0"'; + $typevals["mind_slot_items"] = '"0"'; + $typevals["waypoints"] = '""'; - $nullval = $typevals[$type]; mysql_data_seek($result, 0); Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/index.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -315,6 +315,12 @@ npcmain(); ka_scripts(); break; + case 'findtrigger': + include('./npcs/npcmain.php'); + include('./npcs/findtrigger.php'); + npcmain(); + findtrigger(); + break; case 'checknpctriggers': include('./npcs/npcmain.php'); include('./npcs/checknpctriggers.php'); @@ -385,12 +391,60 @@ rulesmain(); listwaypoints(); break; + case 'listwaypointlinks': + include('./rules/rulesmain.php'); + include('./rules/waypointlinks.php'); + rulesmain(); + listwaypointlinks(); + break; + case 'editwaypointlink': + include('./rules/rulesmain.php'); + include('./rules/waypointlinks.php'); + rulesmain(); + editwaypointlink(); + break; + case 'createwaypointlink': + include('./rules/rulesmain.php'); + include('./rules/waypointlinks.php'); + rulesmain(); + createwaypointlink(); + break; + case 'deletewaypointlink': + include('./rules/rulesmain.php'); + include('./rules/waypointlinks.php'); + rulesmain(); + deletewaypointlink(); + break; case 'waypointmap': include('./rules/rulesmain.php'); include('./rules/waypointmap.php'); rulesmain(); waypoint_map(); break; + case 'listpathpoints': + include('./rules/rulesmain.php'); + include('./rules/pathpoints.php'); + rulesmain(); + listpathpoints(); + break; + case 'editpathpoint': + include('./rules/rulesmain.php'); + include('./rules/pathpoints.php'); + rulesmain(); + editpathpoint(); + break; + case 'createpathpoint': + include('./rules/rulesmain.php'); + include('./rules/pathpoints.php'); + rulesmain(); + createpathpoint(); + break; + case 'deletepathpoint': + include('./rules/rulesmain.php'); + include('./rules/pathpoints.php'); + rulesmain(); + deletepathpoint(); + break; case 'location': include('./rules/rulesmain.php'); include('./rules/locations.php'); Added: www/webconsole-new/npcs/findtrigger.php =================================================================== --- www/webconsole-new/npcs/findtrigger.php (rev 0) +++ www/webconsole-new/npcs/findtrigger.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -0,0 +1,39 @@ +<?php +function findtrigger(){ + + if (checkaccess('npc', 'read') && isset($_POST['commit'])) + { + $word = $_POST['word']; + + $query = "SELECT id,trigger_text,area FROM npc_triggers WHERE trigger_text='$word' OR trigger_text LIKE '% $word %' OR trigger_text LIKE '$word %' OR trigger_text LIKE '% $word'"; + $result = mysql_query2($query); + + if (mysql_num_rows($result) == 0) + { + echo '<p class="error">No results were found.</p>'; + return; + } + echo '<b>Triggers found</b><br><br>'; + echo '<table border=1><th>ID</th><th>Trigger</th><th>Area</th>'; + while ($line = mysql_fetch_array($result, MYSQL_NUM)){ + echo '<TR><TD><b>'.$line[0].'</b></TD><TD>'.$line[1].'</TD><TD><a href="./index.php?do=ka_detail&area='.$line[2].'">'.$line[2].'</a></TD></TR>'; + } + echo '</TABLE><br>'; + } + else if (checkaccess('npc', 'read')) + { + echo '<FORM ACTION="./index.php?do=findtrigger" METHOD="POST" >'; + echo '<br><TABLE BORDER=0>'; + echo '<tr><td>Enter the word to search for: </td><td><INPUT TYPE=text NAME=word>'; + echo '<INPUT TYPE="SUBMIT" NAME="commit" VALUE="Search"></td></tr>'; + echo '</TABLE></FORM>'; + + echo '<br><br>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/npcs/findtrigger.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/npcs/listlootrules.php =================================================================== --- www/webconsole-new/npcs/listlootrules.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/npcs/listlootrules.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -52,7 +52,7 @@ echo '<tr><td>Item</td><td>Probability</td><td>Minimum Money</td><td>Maxiumum Money</td><td>Randomize</td><td>actions</td></tr>'; } } - if ($row['item_name'] == '') // empty item name means there are no details on this rule, so we display it's name, and bail out. + if ($row['item_name'] == '' && $row['min_money'] == '' && $row['max_money'] == '') // empty item name means there are no details on this rule, so we display it's name, and bail out. { continue; } @@ -136,7 +136,7 @@ $row = mysql_fetch_array($result); echo '<table><tr><th>'; // We set the ID in the form to the rule ID instead of the detail, so we can redirect back to ListRules. echo '<form action="./index.php?do=editlootruledetail&id='.$row['loot_rule_id'].'" method="post"><input type="hidden" name="id" value="'.$id.'"/>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th><th>Action</th></tr>'; - echo '<tr><td>'.DrawSelectBox('items', $item_result, 'item_stat_id', $row['item_stat_id'], false).'</td>'; + echo '<tr><td>'.DrawSelectBox('items', $item_result, 'item_stat_id', $row['item_stat_id'], true).'</td>'; echo '<td><input type="text" name="probability" value="'.$row['probability'].'" size="8"/></td>'; echo '<td><input type="text" name="min_money" value="'.$row['min_money'].'" size="11"/></td>'; echo '<td><input type="text" name="max_money" value="'.$row['max_money'].'" size="11"/></td>'; @@ -206,7 +206,7 @@ elseif (checkaccess('npcs', 'create') && isset($_POST['create'])) { $item_result = PrepSelect('items'); - $item_box = DrawSelectBox('items', $item_result, 'item_stat_id', '', false); + $item_box = DrawSelectBox('items', $item_result, 'item_stat_id', '', true); $loot_rule_id = mysql_real_escape_string($_GET['id']); echo '<table border="1"><form action="./index.php?do=createlootruledetail" method="post"><input type="hidden" name="loot_rule_id" value="'.$loot_rule_id.'"/>'; echo '<tr><th>Item</th><th>Probability</th><th>Minimum Money</th><th>Maxiumum Money</th><th>Randomize</th></tr>'; Modified: www/webconsole-new/npcs/listtrainer.php =================================================================== --- www/webconsole-new/npcs/listtrainer.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/npcs/listtrainer.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -123,7 +123,7 @@ $query = "UPDATE trainer_skills SET min_rank='$min_rank', max_rank='$max_rank', min_faction='$min_faction' WHERE player_id='$player_id' AND skill_id='$skill_id'"; $result = mysql_query2($query); }else if ($_POST['commit'] == "Remove"){ - $query = "DELETE FROM trainer_skills WHERE player_id='$player_id' AND skill_id='$skill_id'"; + $query = "DELETE FROM trainer_skills WHERE player_id='$player_id' AND skill_id='$skill_id' AND min_rank='$min_rank' LIMIT 1"; $result = mysql_query2($query); } echo '<p class="error">Update Successful</p>'; Modified: www/webconsole-new/npcs/npcmain.php =================================================================== --- www/webconsole-new/npcs/npcmain.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/npcs/npcmain.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -14,6 +14,7 @@ echo '<a href="./index.php?do=synonyms">List Synonyms</a> <br/>'; echo '<a href="./index.php?do=ka_trigg">List Trigger KAs</a> <br/>'; echo '<a href="./index.php?do=ka_scripts">List KA Scripts</a> <br/>'; + echo '<a href="./index.php?do=findtrigger">Find KA</a> <br/>'; echo '<hr/>'; echo '<a href="./index.php?do=checknpctriggers">Check NPC Triggers</a> <br/>'; echo '<a href="./index.php?do=checknpcloaded">Check NPC Loaded</a> <br/>'; Modified: www/webconsole-new/quests/validatequest.php =================================================================== --- www/webconsole-new/quests/validatequest.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/quests/validatequest.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -116,23 +116,24 @@ } // store P: for comparing with NPC: triggers } - elseif(strncasecmp($line, "Menu:", 5) === 0) // Menu: trigger + elseif(strncasecmp($line, 'Menu:', 5) === 0) // Menu: trigger { - if(getTriggerCount($line, "Menu:", $count, 80) === false) + if(getTriggerCount($line, 'Menu:', $count, 80) === false) { append_log("parse error, Menu: with no text on line $line_number"); } + checkVariables($line, 'menu'); } elseif(strpos($line, ":") !== false) // NPC_NAME: trigger, check for content, and match with the amount of P: triggers { // Every P: and NPC: combo should be unique, we don't check this atm. $count = 0; $seen_npc_triggers = true; - $temp_name = substr($line, 0, strpos($line, ":")); + $temp_name = substr($line, 0, strpos($line, ':')); if(stripos($npc_name, $temp_name) === false) // new npc name { $npc_name = $temp_name; - if ($quest_id == -1 && $npc_name == "general") + if ($quest_id == -1 && $npc_name == 'general') { // valid situation, general means all npcs, does not exist in database. } @@ -151,6 +152,7 @@ { append_log("parse error, there are more $npc_name: triggers than there are P: or player triggers before line $line_number"); } + checkVariables($line, 'npc'); } elseif(strncasecmp($line, "Player ", 7) === 0) // player does something @@ -313,6 +315,32 @@ return true; } +function checkVariables($line, $type) +{ + global $line_number; + $words = preg_split("/[\s,.]+/", $line); // splits a line by any space characters (\n \t \r \f) as well as any comma or dot. + means greedy (tries to make as many matches as possible). + foreach($words as $word) + { + if (strpos(trim($word), '$') !== false) + { + if ($type == 'npc') + { + if ($word != '$playerrace' && $word != '$sir' && $word != '$playername') + { + append_log("parse error, misplaced variable ($word) on line $line_number"); + } + } + else if ($type == 'menu') + { + if ($word != '$name' && $word != '$race' && $word != '$his' && $word != '$sir') + { + append_log("parse error, misplaced variable ($word) on line $line_number"); + } + } + } + } +} + function validate_npc($name) { $split = explode(" ", trim($name)); // explode is faster than split if you don't use regex, returns input if pattern is not found. Added: www/webconsole-new/rules/pathpoints.php =================================================================== --- www/webconsole-new/rules/pathpoints.php (rev 0) +++ www/webconsole-new/rules/pathpoints.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -0,0 +1,457 @@ +<?php +function listpathpoints() +{ + if (checkaccess('rules', 'read')) + { + $query = "SELECT DISTINCT p.path_id, s.name AS sector, wl.wp1, wl.wp2, CONCAT(' X: ', w.x, ' Y: ', w.y, ' Z: ', w.z) AS wp1_coords, CONCAT(' X: ', ww.x, ' Y: ', ww.y, ' Z: ', ww.z) AS wp2_coords, w.name AS wp1_name, ww.name AS wp2_name FROM sc_path_points AS p LEFT JOIN sc_waypoint_links AS wl ON p.path_id=wl.id LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id LEFT JOIN sectors AS s ON w.loc_sector_id=s.id"; + + if (isset($_GET['sector']) && $_GET['sector'] != '') + { + $sec = mysql_real_escape_string($_GET['sector']); + $query = $query . " WHERE w.loc_sector_id='$sec'"; + } + + if (isset($_GET['sort'])) + { + switch($_GET['sort']) + { + case 'path_id': + $query .= ' ORDER BY p.path_id'; + break; + case 'sector': + $query .= ' ORDER BY s.name, w.name'; + break; + case 'wp1': + $query .= ' ORDER BY w.name, ww.name'; + break; + case 'wp2': + $query .= ' ORDER BY ww.name, w.name'; + break; + } + } + else + { + $query .= ' ORDER BY p.path_id'; + } + if (isset($_GET['limit']) && is_numeric($_GET['limit'])) + { + $start = $_GET['limit'] - 30; + $limit = $_GET['limit']; + $query = $query . " LIMIT $start, $limit"; + } + else + { + $query = $query . ' LIMIT 30'; + $limit = 30; + } + $result = mysql_query2($query); + if (mysql_numrows($result) == 0){ + echo '<p class="error">No Paths Found</p>'; + } + else + { + $prev_lim = $limit - 30; + if ($limit > 30) + { + echo '<a href="./index.php?do=listpathpoints'; + if (isset($_GET['sort'])) + { + echo '&sort='.$_GET['sort']; + } + echo '&limit='.$prev_lim.'">Previous Page</a> '; + } + echo ' - Displaying records '.$prev_lim.' through '.$limit.' - '; + if (mysql_numrows($result) == 30) + { + echo '<a href="./index.php?do=listpathpoints'; + if (isset($_GET['sort'])) + { + echo '&sort='.$_GET['sort']; + } + $next_lim = $limit + 30; + echo '&limit='.$next_lim.'">Next Page</a>'; + } + $sectors = PrepSelect('sectorid'); + echo '<form action="./index.php" method="get"><input type="hidden" name="do" value="listpathpoints"/>'; + $sid = 0; + if (isset($_GET['sector'])) + { + $sid = $_GET['sector']; + } + if (isset($_GET['sort'])) + { + echo '<input type="hidden" name="sort" value="'.$_GET['sort'].'"/>'; + } + if (isset($_GET['limit'])) + { + echo '<input type="hidden" name="limit" value="'.$_GET['limit'].'"/>'; + } + echo DrawSelectBox('sectorid', $sectors, 'sector' ,$sid, true); + echo '<input type="submit" name="submit" value="Limit By Sector" /></form>'; + + echo '<table border="1">'; + echo '<tr><th><a href="./index.php?do=listpathpoints&sort=path_id&limit='.$limit.'§or='.$sid.'">Path ID</a></th>'; + echo '<th><a href="./index.php?do=listpathpoints&sort=sector&limit='.$limit.'§or='.$sid.'">Starting Sector</a></th>'; + echo '<th><a href="./index.php?do=listpathpoints&sort=wp1&limit='.$limit.'§or='.$sid.'">wp1</a></th>'; + echo '<th><a href="./index.php?do=listpathpoints&sort=wp2&limit='.$limit.'§or='.$sid.'">wp2</a></th>'; + if (checkaccess('rules','edit')) + { + echo '<th>Actions</th>'; + } + echo '</tr>'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) + { + echo '<tr>'; + echo '<td>'.$row['path_id'].'</td>'; + echo '<td>'.$row['sector'].'</td>'; + echo '<td>'.$row['wp1_name'].'<br />'.$row['wp1_coords'].'</td>'; + echo '<td>'.$row['wp2_name'].'<br />'.$row['wp2_coords'].'</td>'; + if (checkaccess('rules', 'edit')) + { + echo '<td><a href="./index.php?do=editpathpoint&path_id='.$row['path_id'].'">Edit</a>'; + if (checkaccess('rules', 'delete')) + { + echo '<br/><a href="./index.php?do=deletepathpoint&path_id='.$row['path_id'].'">Delete</a>'; + } + echo '</td>'; + } + echo '</tr>'; + } + echo '</table>'; + } + echo '<hr/>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function editpathpoint() +{ + if (checkaccess('rules', 'edit') && isset($_POST['commit']) && $_POST['commit'] == 'Save Changes') + { + if (isset($_POST['path_id']) && is_numeric($_POST['path_id'])) // the form sends both post and get for this value, we use post because it's less likely to be user influenced. (accidentally) + { + $path_id = mysql_real_escape_string($_POST['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $prev_id = 0; + for($i = 0; count($_POST['id']) > $i; $i++) + { + $id = mysql_real_escape_string($_POST['id'][$i]); + $x = mysql_real_escape_string($_POST['x'][$i]); + $y = mysql_real_escape_string($_POST['y'][$i]); + $z = mysql_real_escape_string($_POST['z'][$i]); + $loc_sector_id = mysql_real_escape_string($_POST['loc_sector_id'][$i]); + if ($id != -1) + { + if ($x != '' && $y != '' && $z != '' && $loc_sector_id != '') // we don't process any lines that are not completely filled out. + { + $query = "UPDATE sc_path_points SET prev_point='$prev_id', x='$x', y='$y', z='$z', loc_sector_id='$loc_sector_id' WHERE id='$id'"; + mysql_query2($query); + $prev_id = $id; + } + else + { + echo "<p class=\"error\"> Warning, ignored line with X: $x Y: $y Z: $z sector_id: $loc_sector_id because one or more of the fields contained no data.</p>"; + } + } + else // if id = -1, this is a new entry, we insert the data, and ask for the last auto-generated ID (should be our query) + { + if ($x != '' && $y != '' && $z != '' && $loc_sector_id != '') // we don't process any lines that are not completely filled out. + { + $query = "INSERT INTO sc_path_points (path_id, prev_point, x, y, z, loc_sector_id) VALUES ('$path_id', '$prev_id', '$x', '$y', '$z', '$loc_sector_id')"; + mysql_query2($query); + $query = "SELECT id FROM sc_path_points WHERE path_id='$path_id' AND prev_point='$prev_id' AND x='$x' AND y='$y' AND z='$z' AND loc_sector_id='$loc_sector_id'"; + $result = mysql_query2($query); // We assume here, that there are no identical entries. (there should not be) + $row = mysql_fetch_array($result, MYSQL_ASSOC); + $prev_id = $row['id']; // We could also have used mysql_insert_id here, but that is not guaranteed to be correct if multiple users are inserting at the same time. + } + else + { + echo "<p class=\"error\"> Warning, ignored line with X: $x Y: $y Z: $z sector_id: $loc_sector_id because one or more of the fields contained no data.</p>"; + } + } + } + echo '<p class="error">Data succesfully updated.</p>'; + unset($_POST); + editpathpoint(); + } + elseif (checkaccess('rules', 'edit')) // This part handles insert/delete as well. + { + if (isset($_GET['path_id']) && is_numeric($_GET['path_id'])) + { + $path_id = $_GET['path_id']; + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $insert = -1; // set it to an initial value that will never be encountered, so it does nothing if it is unset. + if (isset($_GET['insert']) && is_numeric($_GET['insert'])) + { + $insert = $_GET['insert']; + } + if (isset($_GET['delete']) && is_numeric($_GET['delete'])) + { + $delete_id = mysql_real_escape_string($_GET['delete']); + $query = "SELECT prev_point FROM sc_path_points WHERE id='$delete_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + $prev_id = $row['prev_point']; + $query = "DELETE FROM sc_path_points WHERE id='$delete_id' LIMIT 1"; + mysql_query2($query); + $query = "UPDATE sc_path_points SET prev_point='$prev_id' WHERE prev_point='$delete_id' AND path_id='$path_id' LIMIT 1"; + mysql_query2($query); // We set the next entry to refer to the one before the deleted enty (so the chain remains unbroken). + echo '<p class="error">Line successfully deleted.</p>'; + } + $query = "SELECT pp.id, s.name AS sector_name, pp.prev_point, pp.x, pp.y, pp.z, pp.loc_sector_id FROM sc_path_points AS pp LEFT JOIN sectors AS s ON s.id=pp.loc_sector_id WHERE path_id='$path_id'"; + $result = mysql_query2($query); + echo '<form action="./index.php?do=editpathpoint&path_id='.$path_id.'" method="post"><input type="hidden" name="path_id" value="'.$path_id.'" />'; + echo '<p class="header">Path Points listing for waypoint link: '.$path_id.'</p>'; + echo '<p>Please note that neither insert nor delete "remember" any other changes you make, so hit "Save Changes" first. (You can however edit multiple lines at once, and you do not need to save "delete" iteself.)</p>'; + echo '<table border="1">'; + echo '<tr><th>X</th><th>Y</th><th>Z</th><th>Sector</th><th>Actions</th></tr>'; + $prev = 0; + $count_down = mysql_num_rows($result) - 1; + $sectors = PrepSelect('sectorid'); + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) // This slightly more complex loop serves to get the entries in proper order. + { + if ($prev == $insert) + { + echo '<tr>'; + echo '<td><input type="hidden" name="id[]" value="-1" /><input type="text" name="x[]" value="" /></td>'; + echo '<td><input type="text" name="y[]" value="" /></td>'; + echo '<td><input type="text" name="z[]" value="" /></td>'; + echo '<td>'.DrawSelectBox('sectorid', $sectors, 'loc_sector_id[]', '', true).'</td></tr>'; + $insert = -1; // set it to a value that will never be encountered. + } + if ($row['prev_point'] == $prev && ($prev == 0 || $count_down == 0)) // In these 2 cases we have the first and last point, they equal the position of the waypoint 1/2 in the waypoint link, and thus can not be changed. + { + echo '<tr>'; + echo '<td><input type="hidden" name="id[]" value="'.$row['id'].'" /><input type="hidden" name="x[]" value="'.$row['x'].'" />'.$row['x'].'</td>'; + echo '<td><input type="hidden" name="y[]" value="'.$row['y'].'" />'.$row['y'].'</td>'; + echo '<td><input type="hidden" name="z[]" value="'.$row['z'].'" />'.$row['z'].'</td>'; + echo '<td><input type="hidden" name="loc_sector_id[]" value="'.$row['loc_sector_id'].'" />'.$row['sector_name'].'</td>'; + if ($prev == 0) + { + echo '<td><a href="./index.php?do=editpathpoint&path_id='.$path_id.'&insert='.$row['id'].'">Insert</a></td>'; + } + echo '</tr>'; + $prev = $row['id']; + mysql_data_seek($result, 0); + $count_down--; + } + else if ($row['prev_point'] == $prev) { + echo '<tr>'; + echo '<td><input type="hidden" name="id[]" value="'.$row['id'].'" /><input type="text" name="x[]" value="'.$row['x'].'" /></td>'; + echo '<td><input type="text" name="y[]" value="'.$row['y'].'" /></td>'; + echo '<td><input type="text" name="z[]" value="'.$row['z'].'" /></td>'; + echo '<td>'.DrawSelectBox('sectorid', $sectors, 'loc_sector_id[]', $row['loc_sector_id']).'</td>'; + echo '<td><a href="./index.php?do=editpathpoint&path_id='.$path_id.'&insert='.$row['id'].'">Insert</a><br><br><a href="./index.php?do=editpathpoint&path_id='.$path_id.'&delete='.$row['id'].'">Delete</a></td></tr>'; + $prev = $row['id']; + mysql_data_seek($result, 0); + $count_down--; + } // No else, we want the loop to continue, so else { continue; } could be done, but just a waste of space. :) + } + echo '<tr><td colspan="5"><input type="submit" name="commit" value="Save Changes" /></td></tr>'; + echo '</table></form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function createpathpoint() +{ + if (checkaccess('rules', 'create') && isset($_POST['commit']) && $_POST['commit'] == 'Create Path') + { + if (isset($_POST['path_id']) && is_numeric($_POST['path_id'])) + { + $path_id = mysql_real_escape_string($_POST['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $prev_id = 0; + for ($i = 0; $i < count($_POST['x']); $i++) + { + $x = mysql_real_escape_string($_POST['x'][$i]); + $y = mysql_real_escape_string($_POST['y'][$i]); + $z = mysql_real_escape_string($_POST['z'][$i]); + $loc_sector_id = mysql_real_escape_string($_POST['loc_sector_id'][$i]); + if ($x != '' && $y != '' && $z != '' && $loc_sector_id != '') // we don't process any lines that are not completely filled out. + { + $query = "INSERT INTO sc_path_points (path_id, prev_point, x, y, z, loc_sector_id) VALUES ('$path_id', '$prev_id', '$x', '$y', '$z', '$loc_sector_id')"; + mysql_query2($query); + $query = "SELECT id FROM sc_path_points WHERE path_id='$path_id' AND prev_point='$prev_id' AND x='$x' AND y='$y' AND z='$z' AND loc_sector_id='$loc_sector_id'"; + $result = mysql_query2($query); // We assume here, that there are no identical entries. (there should not be) + $row = mysql_fetch_array($result, MYSQL_ASSOC); + $prev_id = $row['id']; // We could also have used mysql_insert_id here, but that is not guaranteed to be correct if multiple users are inserting at the same time. + } + else + { + echo "<p class=\"error\"> Warning, ignored line with X: $x Y: $y Z: $z sector_id: $loc_sector_id because one or more of the fields contained no data.</p>"; + } + } + echo '<p class="error">Path created succesfully.</p>'; + unset($_POST); + listpathpoints(); + } + elseif (checkaccess('rules','create') && isset($_POST['add'])) // The user wants more input fields. + { + if (isset($_POST['path_id']) && is_numeric($_POST['path_id'])) + { + $path_id = mysql_real_escape_string($_POST['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $sectors = PrepSelect('sectorid'); + echo '<p class="bold">Create Path Point</p>'."\n"; // new path point + echo 'If you leave any row empty, it will not be added.'; + echo '<form action="./index.php?do=createpathpoint" method="post" /><table border="1">'; + echo '<tr><th>X</th><th>Y</th><th>Z</th><th>Sector</th></tr>'; + // This is the first line, this time we get the data from the $_POST (unlike the first time, see the next elseif). + echo '<td><input type="hidden" name="path_id" value="'.$path_id.'" /><input type="hidden" name="x[]" value="'.$_POST['x'][0].'" />'.$_POST['x'][0].'</td>'; + echo '<td><input type="hidden" name="y[]" value="'.$_POST['y'][0].'" />'.$_POST['y'][0].'</td>'; + echo '<td><input type="hidden" name="z[]" value="'.$_POST['z'][0].'" />'.$_POST['z'][0].'</td>'; + echo '<td><input type="hidden" name="loc_sector_id[]" value="'.$_POST['loc_sector_id'][0].'" /><input type="hidden" name="wp1_name" value="'.$_POST['wp1_name'].'" />'.$_POST['wp1_name'].'</td></tr>'; + for ($i = 1; $i < count($_POST['x'])-1; $i++) // count either of the values to see how many lines there already were. Start at 1 and go to count-1 to avoid printing the first and last point again. + { + echo '<tr>'; + echo '<td><input type="text" name="x[]" value="'.$_POST['x'][$i].'" /></td>'; + echo '<td><input type="text" name="y[]" value="'.$_POST['y'][$i].'" /></td>'; + echo '<td><input type="text" name="z[]" value="'.$_POST['z'][$i].'" /></td>'; + echo '<td>'.DrawSelectBox('sectorid', $sectors, 'loc_sector_id[]', ''.$_POST['loc_sector_id'][$i].'', true).'</td></tr>'; + } + for ($i = 0; $i < $_POST['more_fields']; $i++) // form was used before, show all existing rows, and provide new space. + { + echo '<tr>'; + echo '<td><input type="text" name="x[]" value="" /></td>'; + echo '<td><input type="text" name="y[]" value="" /></td>'; + echo '<td><input type="text" name="z[]" value="" /></td>'; + echo '<td>'.DrawSelectBox('sectorid', $sectors, 'loc_sector_id[]', '', true).'</td></tr>'; + } + // This is the last line, this time we get the data from the $_POST (unlike the first time, see the next elseif). + $last = count($_POST['x'])-1; // get the last entry. + echo '<tr><td><input type="hidden" name="path_id" value="'.$path_id.'" /><input type="hidden" name="x[]" value="'.$_POST['x'][$last].'" />'.$_POST['x'][$last].'</td>'; + echo '<td><input type="hidden" name="y[]" value="'.$_POST['y'][$last].'" />'.$_POST['y'][$last].'</td>'; + echo '<td><input type="hidden" name="z[]" value="'.$_POST['z'][$last].'" />'.$_POST['z'][$last].'</td>'; + echo '<td><input type="hidden" name="loc_sector_id[]" value="'.$_POST['loc_sector_id'][$last].'" /><input type="hidden" name="wp2_name" value="'.$_POST['wp2_name'].'" />'.$_POST['wp2_name'].'</td></tr>'; + echo '<tr><td colspan="2">Add <input type="text" name="more_fields" value="0"> more fields to this form <input type=submit name="add" value="add"/></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Path"/></td></tr>'; + echo '</table></form>'."\n"; + + + } + elseif (checkaccess('rules', 'create')) + { + if (isset($_GET['path_id']) && is_numeric($_GET['path_id'])) + { + $path_id = mysql_real_escape_string($_GET['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $query = "SELECT id FROM sc_path_points WHERE path_id='$path_id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + echo '<p class="error">A path for this waypoint ('.$path_id.') already exists.</p>'; + return; + } + $sectors = PrepSelect('sectorid'); + echo '<p class="bold">Create Path Point</p>'."\n"; // new path point + echo 'If you leave any row empty, it will not be added.'; + echo '<form action="./index.php?do=createpathpoint" method="post" /><table border="1">'; + echo '<tr><th>X</th><th>Y</th><th>Z</th><th>Sector</th></tr>'; + $query = "SELECT wp1.x AS wp1_x, wp1.y AS wp1_y, wp1.z AS wp1_z, wp1.loc_sector_id AS wp1_loc, s1.name AS wp1_name, wp2.x AS wp2_x, wp2.y AS wp2_y, wp2.z AS wp2_z, wp2.loc_sector_id AS wp2_loc, s2.name AS wp2_name FROM sc_waypoint_links AS wl LEFT JOIN sc_waypoints AS wp1 ON wl.wp1=wp1.id LEFT JOIN sc_waypoints AS wp2 ON wl.wp2=wp2.id LEFT JOIN sectors AS s1 ON s1.id=wp1.loc_sector_id LEFT JOIN sectors AS s2 ON s2.id=wp2.loc_sector_id WHERE wl.id='$path_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + // This is the first line, get data from the waypoint link (sql), to obtain x/y/z for wp1. + echo '<td><input type="hidden" name="path_id" value="'.$path_id.'" /><input type="hidden" name="x[]" value="'.$row['wp1_x'].'" />'.$row['wp1_x'].'</td>'; + echo '<td><input type="hidden" name="y[]" value="'.$row['wp1_y'].'" />'.$row['wp1_y'].'</td>'; + echo '<td><input type="hidden" name="z[]" value="'.$row['wp1_z'].'" />'.$row['wp1_z'].'</td>'; + echo '<td><input type="hidden" name="loc_sector_id[]" value="'.$row['wp1_loc'].'" /><input type="hidden" name="wp1_name" value="'.$row['wp1_name'].'" />'.$row['wp1_name'].'</td></tr>'; + for ($i = 0; $i < 3; $i++) // form wasn't used before, show 3 rows to give the user some space. + { + echo '<tr>'; + echo '<td><input type="text" name="x[]" value="" /></td>'; + echo '<td><input type="text" name="y[]" value="" /></td>'; + echo '<td><input type="text" name="z[]" value="" /></td>'; + echo '<td>'.DrawSelectBox('sectorid', $sectors, 'loc_sector_id[]', '', true).'</td></tr>'; + } + // This is the last line, get data from the waypoint link (sql), to obtain x/y/z for wp2. + echo '<tr><td><input type="hidden" name="path_id" value="'.$path_id.'" /><input type="hidden" name="x[]" value="'.$row['wp2_x'].'" />'.$row['wp2_x'].'</td>'; + echo '<td><input type="hidden" name="y[]" value="'.$row['wp2_y'].'" />'.$row['wp2_y'].'</td>'; + echo '<td><input type="hidden" name="z[]" value="'.$row['wp2_z'].'" />'.$row['wp2_z'].'</td>'; + echo '<td><input type="hidden" name="loc_sector_id[]" value="'.$row['wp2_loc'].'" /><input type="hidden" name="wp2_name" value="'.$row['wp2_name'].'" />'.$row['wp2_name'].'</td></tr>'; + echo '<tr><td colspan="2">Add <input type="text" name="more_fields" value="0"> more fields to this form <input type=submit name="add" value="add"/></td></tr>'; + echo '<tr><td></td><td><input type=submit name="commit" value="Create Path"/></td></tr>'; + echo '</table></form>'."\n"; + + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function deletepathpoint() +{ + if (checkaccess('rules', 'delete') && isset($_POST['commit']) && $_POST['commit'] == 'Confirm Delete') + { + if (isset($_POST['path_id']) && is_numeric($_POST['path_id'])) + { + $path_id = mysql_real_escape_string($_POST['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $query = "DELETE FROM sc_path_points WHERE path_id='$path_id'"; + $result = mysql_query2($query); + echo '<p class="error">Delete Successful</p>'; + unset($_POST); + listpathpoints(); + } + elseif (checkaccess('rules', 'delete')) + { + if (isset($_GET['path_id']) && is_numeric($_GET['path_id'])) + { + $path_id = mysql_real_escape_string($_GET['path_id']); + } + else + { + echo '<p class="error">Invalid Path ID</p>'; + return; + } + $query = "SELECT DISTINCT s.name AS sector, w.name AS wp1_name, ww.name AS wp2_name FROM sc_path_points AS p LEFT JOIN sc_waypoint_links AS wl ON p.path_id=wl.id LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id LEFT JOIN sectors AS s ON w.loc_sector_id=s.id WHERE p.path_id='$path_id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result); + echo 'You are about to delete all path_points between '.$row['wp1_name'].' and '.$row['wp2_name'].' belonging to waypoint link '.$path_id.' - Please confirm you wish to do this<br/>'; + echo '<form action="./index.php?do=deletepathpoint" method="post">'; + echo '<input type="hidden" name="path_id" value="'.$path_id.'" /><input type="submit" name="commit" value="Confirm Delete" /></form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/rules/pathpoints.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/rules/rulesmain.php =================================================================== --- www/webconsole-new/rules/rulesmain.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/rules/rulesmain.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -17,7 +17,9 @@ echo '<hr/><a href="./index.php?do=resource">List Natural Resources</a><br/>'; echo '<a href="./index.php?do=resourcemap">List Resource Map</a><br/>'; echo '<a href="./index.php?do=waypoint">List Waypoints</a><br/>'; + echo '<a href="./index.php?do=listwaypointlinks">List Waypoint links</a><br/>'; echo '<a href="./index.php?do=waypointmap">List Waypoint Map</a><br/>'; + echo '<a href="./index.php?do=listpathpoints">List Pathpoints</a><br/>'; echo '<a href="./index.php?do=location">List Locations</a><br/>'; echo '<a href="./index.php?do=locationmap">List Location Map</a><br/>'; echo '<hr/><a href="./index.php?do=skills">List Skills</a><br/>'; Added: www/webconsole-new/rules/waypointlinks.php =================================================================== --- www/webconsole-new/rules/waypointlinks.php (rev 0) +++ www/webconsole-new/rules/waypointlinks.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -0,0 +1,330 @@ +<?php + +function listwaypointlinks() +{ + if (checkaccess('rules', 'read')) + { + $query = "SELECT DISTINCT wl.id, wl.name, wl.type, wl.wp1, wl.wp2, wl.flags, CONCAT(' X: ', w.x, ' Y: ', w.y, ' Z: ', w.z) AS wp1_coords, CONCAT(' X: ', ww.x, ' Y: ', ww.y, ' Z: ', ww.z) AS wp2_coords, w.name AS wp1_name, ww.name AS wp2_name, !ISNULL(pp.id) AS has_path FROM sc_waypoint_links AS wl LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id LEFT JOIN sc_path_points AS pp ON pp.path_id=wl.id"; + + if (isset($_GET['sector']) && $_GET['sector'] != '') + { + $sec = mysql_real_escape_string($_GET['sector']); + $query = $query . " WHERE w.loc_sector_id='$sec'"; + } + + if (isset($_GET['sort'])) + { + switch($_GET['sort']) + { + case 'id': + $query .= ' ORDER BY wl.id'; + break; + case 'name': + $query .= ' ORDER BY wl.name, w.name'; + break; + case 'wp1': + $query .= ' ORDER BY w.name, wl.name'; + break; + case 'wp2': + $query .= ' ORDER BY ww.name, wl.name'; + break; + } + } + else + { + $query .= ' ORDER BY wl.name, w.name'; + } + if (isset($_GET['limit']) && is_numeric($_GET['limit'])) + { + $start = $_GET['limit'] - 30; + $limit = $_GET['limit']; + $query = $query . " LIMIT $start, $limit"; + } + else + { + $query = $query . ' LIMIT 30'; + $limit = 30; + } + $result = mysql_query2($query); + if (mysql_numrows($result) == 0){ + echo '<p class="error">No Waypoint Links</p>'; + } + else + { + $prev_lim = $limit - 30; + if ($limit > 30) + { + echo '<a href="./index.php?do=listwaypointlinks'; + if (isset($_GET['sort'])) + { + echo '&sort='.$_GET['sort']; + } + echo '&limit='.$prev_lim.'">Previous Page</a> '; + } + echo ' - Displaying records '.$prev_lim.' through '.$limit.' - '; + if (mysql_numrows($result) == 30) + { + echo '<a href="./index.php?do=listwaypointlinks'; + if (isset($_GET['sort'])) + { + echo '&sort='.$_GET['sort']; + } + $next_lim = $limit + 30; + echo '&limit='.$next_lim.'">Next Page</a>'; + } + + $sectors = PrepSelect('sectorid'); + echo '<form action="./index.php" method="get"><input type="hidden" name="do" value="listwaypointlinks"/>'; + $sid = 0; + if (isset($_GET['sector'])) + { + $sid = $_GET['sector']; + } + if (isset($_GET['sort'])) + { + echo '<input type="hidden" name="sort" value="'.$_GET['sort'].'"/>'; + } + if (isset($_GET['limit'])) + { + echo '<input type="hidden" name="limit" value="'.$_GET['limit'].'"/>'; + } + echo DrawSelectBox('sectorid', $sectors, 'sector' ,$sid, true); + echo '<input type="submit" name="submit" value="Limit By Sector" /></form>'; + + echo '<table border="1">'; + echo '<tr><th><a href="./index.php?do=listwaypointlinks&sort=id&limit='.$limit.'§or='.$sid.'">ID</a></th>'; + echo '<th><a href="./index.php?do=listwaypointlinks&sort=name&limit='.$limit.'§or='.$sid.'">Name</a></th>'; + echo '<th>Type</th>'; + echo '<th><a href="./index.php?do=listwaypointlinks&sort=wp1&limit='.$limit.'§or='.$sid.'">wp1</a></th>'; + echo '<th><a href="./index.php?do=listwaypointlinks&sort=wp2&limit='.$limit.'§or='.$sid.'">wp2</a></th>'; + echo '<th>Flags</th>'; + if (checkaccess('rules','edit')) + { + echo '<th>Actions</th>'; + } + echo '</tr>'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) + { + echo '<tr>'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.$row['name'].'</td>'; + echo '<td>'.$row['type'].'</td>'; + echo '<td>'.$row['wp1_name'].'<br />'.$row['wp1_coords'].'</td>'; + echo '<td>'.$row['wp2_name'].'<br />'.$row['wp2_coords'].'</td>'; + echo '<td>'.$row['flags'].'</td>'; + if (checkaccess('rules', 'edit')) + { + echo '<td><a href="./index.php?do=editwaypointlink&id='.$row['id'].'">Edit</a>'; + if (checkaccess('rules', 'delete')) + { + echo '<br/><a href="./index.php?do=deletewaypointlink&id='.$row['id'].'">Delete</a>'; + } + if (checkaccess('rules', 'create') && !$row['has_path']) + { + echo '<br/><a href="./index.php?do=createpathpoint&path_id='.$row['id'].'">Create Path</a>'; + } + else if ($row['has_path']) + { + echo '<br/><a href="./index.php?do=editpathpoint&path_id='.$row['id'].'">Edit Path</a>'; + } + echo '</td>'; + } + echo '</tr>'; + } + echo '</table>'; + } + echo '<hr/>'; + echo '<form action="./index.php?do=createwaypointlink" method="post">'; + echo '<table border="1">'; + echo '<tr><th colspan="2">Create waypoint link</th></tr>'; + echo '<tr><td>Name</td><td><input type="text" name="name" /></td></tr>'; + echo '<tr><td>Type</td><td><input type="text" name="type" /></td></tr>'; + $waypoints = PrepSelect('waypoints'); + echo '<tr><td>Waypoint 1</td><td>'.DrawSelectBox('waypoints', $waypoints, 'wp1', '', false).'</td></tr>'; + echo '<tr><td>Waypoint 2</td><td>'.DrawSelectBox('waypoints', $waypoints, 'wp2', '', false).'</td></tr>'; + echo '<tr><td>Flags</td><td>'; + $flags = ' '.$row['flags']; + + echo '<input type="checkbox" name="flags[]" value="ONEWAY" /> ONEWAY<br/>'; + echo '<input type="checkbox" name="flags[]" value="NO_WANDER" /> NO_WANDER<br/>'; + echo '</td></tr>'; + echo '</table>'; + echo '<input type="submit" name="commit" value="Create Waypoint Link" />'; + echo '</form>'; + + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function editwaypointlink() +{ + if (checkaccess('rules', 'edit') && isset($_POST['commit'])) + { + if (isset($_POST['id']) && is_numeric($_POST['id'])) + { + $id = mysql_real_escape_string($_POST['id']); + } + else + { + echo '<p class="error">Invalid ID</p>'; + return; + } + + $name = mysql_real_escape_string($_POST['name']); + $type = mysql_real_escape_string($_POST['type']); + $wp1 = mysql_real_escape_string($_POST['wp1']); + $wp2 = mysql_real_escape_string($_POST['wp2']); + $flags = ''; + if (isset($_POST['flags'])) + { + foreach ($_POST['flags'] AS $key => $value) + { + $flags .= $value . ', '; + } + if (strlen($flags) > 0){ + $flags = substr($flags, 0, -2); + } + } + $flags = mysql_real_escape_string($flags); + if ($wp1 == $wp2) + { + echo '<p class="error">Waypoint 1 may not equal waypoint 2. Update canceled.</p>'; + return; + } + $query = "UPDATE sc_waypoint_links SET name='$name', type='$type', wp1='$wp1', wp2='$wp2', flags='$flags' WHERE id='$id'"; + $result = mysql_query2($query); + echo '<p class="error">Update Successful</p>'; + unset($_POST); + listwaypointlinks(); + } + elseif (checkaccess('rules', 'edit')) + { + if (isset($_GET['id']) && is_numeric($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + } + else + { + echo '<p class="error">Invalid ID</p>'; + return; + } + $query = "SELECT * FROM sc_waypoint_links WHERE id='$id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + echo '<form action="./index.php?do=editwaypointlink" method="post"><input type="hidden" name="id" value="'.$id.'" />'; + echo '<table border="1">'; + echo '<tr><th colspan="2">Edit waypoint link</th></tr>'; + echo '<tr><td>Name</td><td><input type="text" name="name" value="'.$row['name'].'" /></td></tr>'; + echo '<tr><td>Type</td><td><input type="text" name="type" value="'.$row['type'].'"/></td></tr>'; + $waypoints = PrepSelect('waypoints'); + echo '<tr><td>Waypoint 1</td><td>'.DrawSelectBox('waypoints', $waypoints, 'wp1', $row['wp1'], false).'</td></tr>'; + echo '<tr><td>Waypoint 2</td><td>'.DrawSelectBox('waypoints', $waypoints, 'wp2', $row['wp2'], false).'</td></tr>'; + echo '<tr><td>Flags</td><td>'; + $flags = ' '.$row['flags']; + + echo '<input type="checkbox" name="flags[]" value="ONEWAY" '.(strpos($flags, 'ONEWAY') !== false ? 'checked="true"' : '').' /> ONEWAY<br/>'; + echo '<input type="checkbox" name="flags[]" value="NO_WANDER" '.(strpos($flags, 'NO_WANDER') !== false ? 'checked="true"' : '').' /> NO_WANDER<br/>'; + echo '</td></tr>'; + echo '</table>'; + echo '<input type="submit" name="commit" value="Update Waypoint Link" />'; + echo '</form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function createwaypointlink() +{ + if (checkaccess('rules', 'create') && isset($_POST['commit']) && $_POST['commit'] == 'Create Waypoint Link') + { + $name = mysql_real_escape_string($_POST['name']); + $type = mysql_real_escape_string($_POST['type']); + $wp1 = mysql_real_escape_string($_POST['wp1']); + $wp2 = mysql_real_escape_string($_POST['wp2']); + $flags = ''; + if (isset($_POST['flags'])) + { + foreach ($_POST['flags'] AS $key => $value) + { + $flags .= $value . ', '; + } + if (strlen($flags) > 0){ + $flags = substr($flags, 0, -2); + } + } + $flags = mysql_real_escape_string($flags); + if ($wp1 == $wp2) + { + echo '<p class="error">Waypoint 1 may not equal waypoint 2. Creation canceled.</p>'; + return; + } + $query = "INSERT INTO sc_waypoint_links ( name, type, wp1, wp2, flags ) VALUES ( '$name', '$type', '$wp1', '$wp2', '$flags' )"; + $result = mysql_query2($query); + echo '<p class="error">Creation Successful</p>'; + unset($_POST); + listwaypointlinks(); + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function deletewaypointlink() +{ + if (checkaccess('rules', 'delete') && isset($_POST['commit']) && $_POST['commit'] == 'Confirm Delete') + { + if (isset($_POST['id']) && is_numeric($_POST['id'])) + { + $id = mysql_real_escape_string($_POST['id']); + } + else + { + echo '<p class="error">Invalid ID</p>'; + return; + } + $query = "DELETE FROM sc_waypoint_links WHERE id='$id' LIMIT 1"; + $result = mysql_query2($query); + $query = "DELETE FROM sc_path_points WHERE path_id='$id'"; + $result = mysql_query2($query); + echo '<p class="error">Delete Successful</p>'; + unset($_POST); + listwaypointlinks(); + } + elseif (checkaccess('rules', 'delete')) + { + if (isset($_GET['id']) && is_numeric($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + } + else + { + echo '<p class="error">Invalid ID</p>'; + return; + } + $query = "SELECT id FROM sc_path_points WHERE path_id='$id'"; + $result = mysql_query2($query); + $path_point_delete = ''; + if (mysql_num_rows($result) > 0) + { + $path_point_delete = ' AND the path associated with it'; + } + $query = "SELECT w.name AS wp1, ww.name AS wp2 FROM sc_waypoint_links AS wl LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id WHERE wl.id='$id'"; + $result = mysql_query2($query); + $row = mysql_fetch_array($result); + echo 'You are about to delete the waypoint link between '.$row['wp1'].' and '.$row['wp2'].$path_point_delete.' - Please confirm you wish to do this<br/>'; + echo '<form action="./index.php?do=deletewaypointlink" method="post">'; + echo '<input type="hidden" name="id" value="'.$id.'"/><input type="submit" name="commit" value="Confirm Delete" /></form>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> Property changes on: www/webconsole-new/rules/waypointlinks.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/rules/waypoints.php =================================================================== --- www/webconsole-new/rules/waypoints.php 2009-08-05 10:06:50 UTC (rev 4187) +++ www/webconsole-new/rules/waypoints.php 2009-08-05 12:49:27 UTC (rev 4188) @@ -113,6 +113,19 @@ echo '</form>'; }else if (($_POST['action'] == 'Delete') && checkaccess('rules', 'delete')){ $id = mysql_real_escape_string($_POST['id']); + $query = "SELECT id FROM sc_waypoint_links WHERE wp1='$id' OR wp2='$id'"; + $result = mysql_query2($query); + if (mysql_num_rows($result) > 0) + { + echo '<p class="error">There are waypoint links still using this waypoint, it may not be deleted.</p>'; + echo '<p>Below are links to all such waypoints.<br /><br />'; + while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) + { + echo '<a href="./index.php?do=editwaypointlink&id='.$row['id'].'">'.$row['id'].'</a><br />'; + } + echo '</p>'; + return; + } $query = "SELECT name FROM sc_waypoints WHERE id='$id'"; $result = mysql_query2($query); $row = mysql_fetch_array($result); @@ -274,7 +287,7 @@ } } }else{ - echo '<p class="error">You are not authorized to use these functions</a>'; + echo '<p class="error">You are not authorized to use these functions</p>'; } } ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-08-06 18:08:57
|
Revision: 4193 http://planeshift.svn.sourceforge.net/planeshift/?rev=4193&view=rev Author: weltall2 Date: 2009-08-06 18:08:19 +0000 (Thu, 06 Aug 2009) Log Message: ----------- Merged common string functionality to the new webconsole - patch by nakem Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/other/othermain.php Added Paths: ----------- www/webconsole-new/other/commonstrings.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-08-05 21:39:36 UTC (rev 4192) +++ www/webconsole-new/index.php 2009-08-06 18:08:19 UTC (rev 4193) @@ -597,6 +597,30 @@ othermain(); listpetitions(); break; + case 'listcommonstrings': + include('./other/othermain.php'); + include('./other/commonstrings.php'); + othermain(); + listcommonstrings(); + break; + case 'addcommonstrings': + include('./other/othermain.php'); + include('./other/commonstrings.php'); + othermain(); + addcommonstrings(); + break; + case 'editcommonstrings': + include('./other/othermain.php'); + include('./other/commonstrings.php'); + othermain(); + editcommonstrings(); + break; + case 'deletecommonstrings': + include('./other/othermain.php'); + include('./other/commonstrings.php'); + othermain(); + deletecommonstrings(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); Added: www/webconsole-new/other/commonstrings.php =================================================================== --- www/webconsole-new/other/commonstrings.php (rev 0) +++ www/webconsole-new/other/commonstrings.php 2009-08-06 18:08:19 UTC (rev 4193) @@ -0,0 +1,191 @@ +<?php +function listcommonstrings() +{ + if (checkaccess('other', 'read')) + { + $page = (isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0); + $items_per_page = (isset($_GET['items_per_page']) && is_numeric($_GET['items_per_page']) ? $_GET['items_per_page'] : 30); + + $sql = 'SELECT COUNT(*) FROM common_strings'; + $page_count = mysql_fetch_array(mysql_query2($sql), MYSQL_NUM); + $page_count = ceil($page_count[0] / $items_per_page); + + if($page > $page_count) + { + $page = ($page_count - 1); + } + if($page < 0) + { + $page = 0; + } + + $sql = 'SELECT id, string FROM common_strings ORDER BY id LIMIT '.($page * $items_per_page).', '.$items_per_page; + $query = mysql_query2($sql); + + + echo '<p class="header">List Common Strings</p>'; + + echo '<form action="./index.php" method="get">'; + echo '<input type="hidden" name="do" value="listcommonstrings" />'; + echo '<input type="hidden" name="page" value="'.$page.'" />'; + echo 'Items per page: <input type="text" name="items_per_page" value="'.$items_per_page.'" size="5" />'; + echo '</form>'; + + echo 'Page: '; + for($i = 0; $i < $page_count; $i++) { + if($i == $page) + { + echo ($i+1).' '; + } + else + { + echo '<a href="./index.php?do=listcommonstrings&items_per_page='.$items_per_page.'&page='.$i.'">'.($i+1).'</a> '; + } + echo ($i == ($page_count -1) ? '' : ' | '); + } + echo '<br/><br/>'; + + echo '<a href="./index.php?do=addcommonstrings">Add a common string</a>'; + echo '<table>'; + echo '<tr><th>ID</th><th>String</th><th>Actions</th></tr>'; + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) { + $color = ($color == 'a' ? 'b' : 'a'); + echo '<tr class="color_'.$color.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['string']).'</td>'; + echo '<td><a href="./index.php?do=editcommonstrings&id='.intval($row['id']).'">Edit</a> '; + echo '<a href="./index.php?do=deletecommonstrings&id='.intval($row['id']).'">Delete</a> '; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function addcommonstrings() +{ + if(!checkaccess('other', 'create')) + { + echo '<p class="error">You are not authorized to use these functions</p>'; + return false; + } + $form_sent = (isset($_GET['form_sent']) && $_GET['form_sent'] == 'yes'); + $string = (isset($_POST['string']) ? $_POST['string'] : ''); + $message = ''; + + echo '<p class="header">Add A Common String</p>'; + if($form_sent) + { + if(empty($string)) + { + $message = '<p class="error">You have to enter a string!</p>'; + } + else + { + $_string = mysql_real_escape_string($string); + $sql = 'SELECT id FROM common_strings WHERE string = \''.$_string.'\' LIMIT 1'; + $query = mysql_query2($sql); + if(mysql_num_rows($query) > 0) + { + $message = '<p class="error">You have to enter an unique string!</p>'; + } + else + { + $sql = 'INSERT INTO common_strings (string) VALUES (\''.$_string.'\')'; + $query = mysql_query2($sql); + $message = '<p style="color: green;">The string was added!</p>'; // FIXME: Why isn't there a "success" class? + } + } + } + echo '<a href="./index.php?do=listcommonstrings">Back</a>'; + echo $message; + echo '<form action="index.php?do=addcommonstrings&form_sent=yes" method="post">'; + echo 'String: <input type="text" name="string" value="'.htmlentities($string).'" />'; + echo '<input type="submit" value="Add" /></form>'; +} + +function editcommonstrings() +{ + if(!checkaccess('other', 'edit')) + { + echo '<p class="error">You are not authorized to use these functions</p>'; + return false; + } + $form_sent = (isset($_GET['form_sent']) && $_GET['form_sent'] == 'yes'); + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + $string = (isset($_POST['string']) ? $_POST['string'] : ''); + + echo '<p class="header">Edit Common Strings</p>'; + if(empty($id) || $id == 'nan') + { + echo '<p class="error">You have to specify a valid ID to edit!</p>'; + echo '<a href="./index.php?do=listcommonstrings">Back</a>'; + } + else + { + $message = ''; + if($form_sent) + { + if(empty($string)) + { + $message = '<p class="error">You can\'t enter an empty string!</p>'; + } + else + { + $string = mysql_real_escape_string($string); + $sql = 'UPDATE common_strings SET string = \''.$string.'\' WHERE id = '.$id; + $query = mysql_query2($sql); + // FIXME: Why isn't there a "success" class? + $message = '<p style="color: green;">Your changes have been submitted to the database.</p>'; + } + } + $sql = 'SELECT string FROM common_strings WHERE id = '.$id.' LIMIT 1'; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + + echo '<a href="./index.php?do=listcommonstrings">Back</a>'; + echo $message; + echo '<form action="./index.php?do=editcommonstrings&id='.$id.'&form_sent=yes" method="post">'; + echo '<table>'; + echo '<tr class="color_a"><td>ID: </td><td>'.$id.'</td></tr>'; + echo '<tr class="color_b"><td>String: </td><td><input type="text" name="string" value="'.htmlentities($row['string']).'"/></td></tr>'; + echo '</table>'; + echo '<input type="submit" value="Save" /></form>'; + } +} + +function deletecommonstrings() +{ + if(!checkaccess('other', 'delete')) + { + echo '<p class="error">You are not authorized to use these functions</p>'; + return false; + } + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + $sure = (isset($_GET['answer']) && $_GET['answer'] == 'yes'); + + echo '<p class="header">Delete A Common String</p>'; + if(empty($id) || $id == 'nan') + { + echo '<p class="error">You have to specify an ID to delete!</p>'; + echo '<a href="./index.php?do=listcommonstrings">Back</a>'; + } + elseif($sure) + { + $sql = 'DELETE FROM common_strings WHERE id = '.$id.' LIMIT 1'; + $query = mysql_query2($sql); + echo '<p style="color: green;">The string was successfully deleted.</p>'; + echo '<a href="./index.php?do=listcommonstrings">Back</a>'; + } + else + { + echo '<form action="./index.php?do=deletecommonstrings&id='.$id.'&answer=yes" method="post">'; + echo 'Are you sure you want to delete the string with ID '.$id.'?<br/>'; + echo '<input type="submit" value="Yes" /><a href="./index.php?do=listcommonstrings">No</a>'; + echo '</form>'; + } +} +?> \ No newline at end of file Property changes on: www/webconsole-new/other/commonstrings.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/other/othermain.php =================================================================== --- www/webconsole-new/other/othermain.php 2009-08-05 21:39:36 UTC (rev 4192) +++ www/webconsole-new/other/othermain.php 2009-08-06 18:08:19 UTC (rev 4193) @@ -1,5 +1,6 @@ <?php -function othermain(){ +function othermain() +{ if (checkaccess('other', 'read')) { echo '<div class="menu_left">'; @@ -13,8 +14,10 @@ echo '<a href="./index.php?do=viewcharacters">View characters</a <br/>'; echo '<a href="./index.php?do=listtraits">List/Edit traits</a> <br/>'; // SysAdmin - echo '<a href="./index.php?do=listcommonstrings">List/Edit Common Strings</a> <br/>';*/ + */ + echo '<a href="./index.php?do=listcommonstrings">List Common Strings</a> <br/>'; + echo '<hr />'; echo '<a href="./index.php">Return to main page</a>'; echo '</div><div class="main">'."\n"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-08-07 14:37:13
|
Revision: 4199 http://planeshift.svn.sourceforge.net/planeshift/?rev=4199&view=rev Author: weltall2 Date: 2009-08-07 14:36:58 +0000 (Fri, 07 Aug 2009) Log Message: ----------- moved the images from /rules to /img Added viewnpcmap (assuming report.xml to be in /rules ) Fixed a bug in the links in (when clicking on the ball.gif) in waypointmap/locationmap. Fixed a bug in sorting pathpoint/waypoint patches by ravna Modified Paths: -------------- www/webconsole-new/commonfunctions.php www/webconsole-new/index.php www/webconsole-new/rules/draw_map.php www/webconsole-new/rules/locationmap.php www/webconsole-new/rules/locations.php www/webconsole-new/rules/pathpoints.php www/webconsole-new/rules/resourcemap.php www/webconsole-new/rules/resources.php www/webconsole-new/rules/rulesmain.php www/webconsole-new/rules/waypointlinks.php www/webconsole-new/rules/waypointmap.php www/webconsole-new/rules/waypoints.php Added Paths: ----------- www/webconsole-new/rules/img/ www/webconsole-new/rules/img/ball01m.gif www/webconsole-new/rules/img/ball04m.gif www/webconsole-new/rules/img/npcroom1.gif www/webconsole-new/rules/viewnpcmap.php Removed Paths: ------------- www/webconsole-new/rules/ball01m.gif www/webconsole-new/rules/ball04m.gif www/webconsole-new/rules/npcroom1.gif Modified: www/webconsole-new/commonfunctions.php =================================================================== --- www/webconsole-new/commonfunctions.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/commonfunctions.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -289,78 +289,91 @@ $data[2] = 180; $data[3] = 2.2; $data[4] = 2.2; + $data[5] = array('hydlaa_plaza', 'tavern_de_kadel'); } else if ($area=='hydlaa_jayose') { $data[0] = 'loc_sector_id=49 or loc_sector_id=40'; $data[1] = -250; $data[2] = -150; $data[3] = 3.2; $data[4] = 3.2; + $data[5] = array('hydlaa_jayose', 'jayose_inside'); } else if ($area=='hydlaa_winch') { $data[0] = 'loc_sector_id=72'; $data[1] = 200; $data[2] = -430; $data[3] = 2.2; $data[4] = 2.2; + $data[5] = array('hydlaa_winch'); } else if ($area=='sewers') { $data[0] = 'loc_sector_id>26 and loc_sector_id<38'; $data[1] = 645; $data[2] = 175; $data[3] = 2.5; $data[4] = 2.5; + $data[5] = array('swr-pink', 'swr-lightgreen', 'swr-yellow', 'swr-purple', 'swr-red', 'swr-blue', 'swr-orange', 'swr-darkgreen01', 'swr-darkgreen02', 'swr-lightblue01', 'swr-lightblue02'); } else if ($area=='laanxdungeon') { $data[0] = 'loc_sector_id>43 and loc_sector_id<49'; $data[1] = 1452; $data[2] = 815; $data[3] = 6.73; $data[4] = 6.73; + $data[5] = array('laanxdungeon', 'wtowerdung', 'wtower', 'wtowerexit', 'wtowertop'); } else if ($area=='arena') { $data[0] = 'loc_sector_id>3 and loc_sector_id<15'; $data[1] = 470; $data[2] = 456; $data[3] = 4.43; $data[4] = 4.43; + $data[5] = array('hall', 'trans1', 'dngn', 'cntr', 'trans2', 'merc', 'upper', 'entr', 'outer', 'hycorr1', 'hycorr2'); } else if ($area=='ojaroad1') { $data[0] = 'loc_sector_id=22'; $data[1] = 603; $data[2] = 600; $data[3] = 0.9; $data[4] = 0.9; + $data[5] = array('ojaroad1'); } else if ($area=="ojaroad2") { $data[0] = 'loc_sector_id=59'; $data[1] = 632; $data[2] = 625; $data[3] = 1; $data[4] = 1; + $data[5] = array('ojaroad2'); } else if ($area=='akkaio') { $data[0] = 'loc_sector_id>16 and loc_sector_id<20'; $data[1] = 445; $data[2] = 465; $data[3] = 5.3; $data[4] = 5.3; + $data[5] = array('ojapath', 'Akk-Central', 'Akk-East'); } else if ($area=='bdroad1') { $data[0] = 'loc_sector_id=60'; $data[1] = 491; $data[2] = 493; $data[3] = 0.76; $data[4] = 0.76; + $data[5] = array('bdroad1'); } else if ($area=='bdroad2') { $data[0] = 'loc_sector_id=61'; $data[1] = 669; $data[2] = 667; $data[3] = 1.07; $data[4] = 1.07; + $data[5] = array('bdroad2'); } else if ($area=='bdoorsout') { $data[0] = 'loc_sector_id=67'; $data[1] = 832; $data[2] = -749; $data[3] = 0.55; $data[4] = 0.55; + $data[5] = array('bdoorsout'); } else if ($area=='bdoorsin') { $data[0] = 'loc_sector_id=66'; $data[1] = 656; $data[2] = -977; $data[3] = 2.2; $data[4] = 2.2; + $data[5] = array('bdoorsin'); } else if ($area=='gugrontid') { $data[0] = 'loc_sector_id=77'; $data[1] = 240; @@ -373,12 +386,14 @@ $data[2] = -371.05; $data[3] = 3.22; $data[4] = 3.26; + $data[5] = array('NPCroom'); } else if ($area=='npcroom2') { $data[0] = 'loc_sector_id=6 or loc_sector_id=7'; $data[1] = 460; $data[2] = 318; $data[3] = 4; $data[4] = 4; + $data[5] = array('dngn', 'cntr'); } return $data; Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/index.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -457,6 +457,12 @@ rulesmain(); location_map(); break; + case 'viewnpcmap': + include('./rules/rulesmain.php'); + include('./rules/viewnpcmap.php'); + rulesmain(); + viewnpcmap(); + break; case 'skills': include('./rules/rulesmain.php'); include('./rules/skills.php'); Deleted: www/webconsole-new/rules/ball01m.gif =================================================================== (Binary files differ) Deleted: www/webconsole-new/rules/ball04m.gif =================================================================== (Binary files differ) Modified: www/webconsole-new/rules/draw_map.php =================================================================== --- www/webconsole-new/rules/draw_map.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/draw_map.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -27,14 +27,14 @@ function natural_resources_draw() { - $sector = isset($_GET['sector']) ? $_GET['sector'] : ""; - $type = isset($_GET['type']) ? $_GET['type'] : ""; + $sector = isset($_GET['sector']) ? $_GET['sector'] : ''; + $type = isset($_GET['type']) ? $_GET['type'] : ''; if (!checkAccess('rules', 'read')) // you can't actually see these echo's if you don't type this file directly in your browser. { echo 'You do not have access to view this image!'; return; } - if ($sector == "" || $type == "") + if ($sector == '' || $type == '') { echo 'You must supply a sector name and type.'; return; @@ -48,7 +48,7 @@ function draw_map($sector, $type) { - $image_name = $sector.".gif"; + $image_name = '../img/'.$sector.'.gif'; $data = getDataFromArea($sector); $sectors = $data[0]; @@ -71,22 +71,26 @@ $gray = imagecolorallocate($im, 228, 228, 228); $blue = imagecolorallocate($im, 0, 0, 128); - if ($type == "location") + if ($type == 'location') { draw_locations($im,$sectors,$centerx,$centery,$scalefactorx,$scalefactory,$red); } - elseif ($type == "waypoint") + elseif ($type == 'waypoint') { draw_waypoints($im,$sectors,$centerx,$centery,$scalefactorx,$scalefactory,$orange,$blue); } - elseif ($type == "path") + elseif ($type == 'path') { draw_paths($im,$sectors,$centerx,$centery,$scalefactorx,$scalefactory,$gray,$blue); } - elseif ($type == "resource") + elseif ($type == 'resource') { draw_natural_resources($im,$sectors,$centerx,$centery,$scalefactorx,$scalefactory,$green,$dark_green); } + elseif ($type == 'live') + { + draw_live_paths($im,$data[5],$centerx,$centery,$scalefactorx,$scalefactory, array($red, $green, $dark_green, $orange, $gray, $blue)); + } else // do nothing if we don't know the command. { } @@ -288,4 +292,47 @@ } } +function draw_live_paths($im,$sectors,$centerx,$centery,$scalefactorx,$scalefactory, $colors){ + $colorindex = 0; + + $dir = "../../psserver/tracking/"; + if($files = @scandir($dir)) { + foreach($files as $file) { + if($file == '.' || $file == '..') continue; + + $handle = @fopen($dir.$file,"r"); + if($handle) { + $prevx = 999.0; + $prevy = 999.0; + while(!feof($handle)) + { + $buffer = fgets($handle, 4096); + $pieces = explode(",", $buffer); + $found = FALSE; + foreach($sectors as $sectorname) + { + if(trim($pieces[2]) === $sectorname) + $found = TRUE; + } + if($found) + { + + $x = $centerx+($pieces[0]*$scalefactorx); + $y = $centery-($pieces[1]*$scalefactory); + if(!($prevx == 999.0 && $prevy == 999.0)) + { + imageline($im,$prevx,$prevy,$x,$y,$colors[$colorindex]); + } + $prevx = $x; + $prevy = $y; + } + } + fclose($handle); + // draw each npc as a different colour + $colorindex = ($colorindex + 1) % count($colors); + } + } + } +} + ?> Copied: www/webconsole-new/rules/img/ball01m.gif (from rev 3893, www/webconsole-new/rules/ball01m.gif) =================================================================== (Binary files differ) Property changes on: www/webconsole-new/rules/img/ball01m.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: www/webconsole-new/rules/img/ball04m.gif (from rev 3893, www/webconsole-new/rules/ball04m.gif) =================================================================== (Binary files differ) Property changes on: www/webconsole-new/rules/img/ball04m.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: www/webconsole-new/rules/img/npcroom1.gif (from rev 3893, www/webconsole-new/rules/npcroom1.gif) =================================================================== (Binary files differ) Property changes on: www/webconsole-new/rules/img/npcroom1.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: www/webconsole-new/rules/locationmap.php =================================================================== --- www/webconsole-new/rules/locationmap.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/locationmap.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -4,13 +4,13 @@ function location_map(){ if (!checkAccess('rules', 'read')) { - echo "You do not have permission to use this page."; + echo 'You do not have permission to use this page.'; return; } - $sector = (isset($_POST['sector']) ? $_POST['sector'] : ""); + $sector = (isset($_POST['sector']) ? $_POST['sector'] : ''); - if ($sector!=null && $sector!="") { + if ($sector != null && $sector != '') { ?> @@ -136,9 +136,9 @@ //echo "query is $query"; $res = mysql_query2($query); - $result=""; + $result = ''; while ($line = mysql_fetch_array($res, MYSQL_NUM)){ - $elem = $line[0] . "|I: ".$line[0]." N:" . $line[6] . " R:".$line[4]." F:".$line[5]."|x|" . $line[1] . "|" . $line[2]."|".$line[3]."|".$line[7]."|".$line[8]; + $elem = $line[0] . '|I: '.$line[0].' N:' . $line[6] . ' R:'.$line[4].' F:'.$line[5].'|x|' . $line[1] . '|' . $line[2].'|'.$line[3].'|'.$line[7].'|'.$line[8]; $result .= ($elem . "\n"); } // get each line @@ -153,17 +153,17 @@ foreach($peoples as $people) { // skips commented lines - $pos = strstr($people, "#"); + $pos = strstr($people, '#'); - if ($pos=="0") { - $tok2 = strtok($people, "|"); + if ($pos == '0') { + $tok2 = strtok($people, '|'); $infos[] = ""; $count = 1; while ($tok2) { - $tok2 = str_replace("\n", "", $tok2); - $tok2 = str_replace("\r", "", $tok2); + $tok2 = str_replace("\n", '', $tok2); + $tok2 = str_replace("\r", '', $tok2); $infos[$count]=$tok2; - $tok2 = strtok("|"); + $tok2 = strtok('|'); $count++; } @@ -175,15 +175,15 @@ $x= $centerx+($infos[4]*$scalefactorx)-4; $y= $centery-($infos[6]*$scalefactory)-4; - if ($infos[7]=="-1" || $infos[7]=="0") { - $ball = "rules/ball01m.gif"; + if ($infos[7] == '-1' || $infos[7] == '0') { + $ball = 'img/ball01m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?page=listlocations&category=Rules_Functions&selected=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; + echo "<A HREF=index.php?do=location&id=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; } else { - $ball = "rules/ball04m.gif"; + $ball = 'img/ball04m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?page=listlocations&category=Rules_Functions&selectedtype=$infos[8]><img border=0 src=$ball width=10 height=10></a></div>\n"; + echo "<A HREF=index.php?do=location&type=$infos[8]><img border=0 src=$ball width=10 height=10></a></div>\n"; } } @@ -193,13 +193,13 @@ } $sectors_list = PrepSelect('sector'); - echo " <FORM action=\"index.php?do=locationmap\" METHOD=POST>"; - echo " <b>Select one area:</b> <br><br> Area: "; + echo ' <FORM action="index.php?do=locationmap" METHOD=POST>'; + echo ' <b>Select one area:</b> <br><br> Area: '; echo DrawSelectBox('sector', $sectors_list, 'sector', '', false); //SelectAreas('','sector'); - echo " <br><br><INPUT type=submit value=view><br><br>"; - echo "</FORM>"; - echo "</div>"; + echo ' <br><br><INPUT type=submit value=view><br><br>'; + echo '</FORM>'; + echo '</div>'; } Modified: www/webconsole-new/rules/locations.php =================================================================== --- www/webconsole-new/rules/locations.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/locations.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -87,6 +87,16 @@ } }else{ $query = "SELECT l.id, l.type_id, l.id_prev_loc_in_region, l.name, l.x, l.y, l.z, l.radius, l.angle, l.flags, l.loc_sector_id, s.name AS sector FROM sc_locations AS l LEFT JOIN sectors AS s ON l.loc_sector_id = s.id"; + if (isset($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + $query .= " WHERE l.id='$id'"; + } + elseif (isset($_GET['type'])) + { + $type = mysql_real_escape_string($_GET['type']); + $query .= " WHERE l.type_id='$type'"; + } if (isset($_GET['sort'])){ switch ($_GET['sort']){ case 'name': Deleted: www/webconsole-new/rules/npcroom1.gif =================================================================== (Binary files differ) Modified: www/webconsole-new/rules/pathpoints.php =================================================================== --- www/webconsole-new/rules/pathpoints.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/pathpoints.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -5,7 +5,7 @@ { $query = "SELECT DISTINCT p.path_id, s.name AS sector, wl.wp1, wl.wp2, CONCAT(' X: ', w.x, ' Y: ', w.y, ' Z: ', w.z) AS wp1_coords, CONCAT(' X: ', ww.x, ' Y: ', ww.y, ' Z: ', ww.z) AS wp2_coords, w.name AS wp1_name, ww.name AS wp2_name FROM sc_path_points AS p LEFT JOIN sc_waypoint_links AS wl ON p.path_id=wl.id LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id LEFT JOIN sectors AS s ON w.loc_sector_id=s.id"; - if (isset($_GET['sector']) && $_GET['sector'] != '') + if (isset($_GET['sector']) && $_GET['sector'] != '' && $_GET['sector'] != '0') { $sec = mysql_real_escape_string($_GET['sector']); $query = $query . " WHERE w.loc_sector_id='$sec'"; Modified: www/webconsole-new/rules/resourcemap.php =================================================================== --- www/webconsole-new/rules/resourcemap.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/resourcemap.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -4,13 +4,13 @@ function natural_resources_map(){ if (!checkAccess('rules', 'read')) { - echo "You do not have permission to use this page."; + echo 'You do not have permission to use this page.'; return; } - $sector = (isset($_POST['sector']) ? $_POST['sector'] : ""); + $sector = (isset($_POST['sector']) ? $_POST['sector'] : ''); - if ($sector!=null && $sector!="") { + if ($sector != null && $sector != '') { ?> @@ -123,7 +123,7 @@ <?PHP echo "<h1>Natural Resources Map View $sector</h1>"; -echo "Natural Resources painted in green<br>"; +echo 'Natural Resources painted in green<br>'; echo "<div id=Layer2 style=\"position:relative; \">"; //echo "<div id=Layer2 style=\"position:absolute; width:1968px; height:954px; z-index:1; left:0px; top:250px\">"; @@ -135,7 +135,7 @@ //echo "query is $query"; $res = mysql_query2($query); - $result=""; + $result = ''; while ($line = mysql_fetch_array($res, MYSQL_NUM)){ $elem = $line[0] . "|R:" . $line[5] . " P:".$line[6]." I:".$line[7]."|x|" . $line[1] . "|" . $line[3]."|".$line[6]; $result .= ($elem . "\n"); @@ -152,17 +152,17 @@ foreach($peoples as $people) { // skips commented lines - $pos = strstr($people, "#"); + $pos = strstr($people, '#'); - if ($pos=="0") { - $tok2 = strtok($people, "|"); - $infos[] = ""; + if ($pos == '0') { + $tok2 = strtok($people, '|'); + $infos[] = ''; $count = 1; while ($tok2) { - $tok2 = str_replace("\n", "", $tok2); - $tok2 = str_replace("\r", "", $tok2); + $tok2 = str_replace("\n", '', $tok2); + $tok2 = str_replace("\r", '', $tok2); $infos[$count]=$tok2; - $tok2 = strtok("|"); + $tok2 = strtok('|'); $count++; } @@ -171,18 +171,18 @@ $scalefactorx = $data[3]; $scalefactory = $data[4]; - $x= $centerx+($infos[4]*$scalefactorx); - $y= $centery-($infos[5]*$scalefactory); + $x = $centerx+($infos[4]*$scalefactorx); + $y = $centery-($infos[5]*$scalefactory); - if ($infos[6]=="Y") { - $ball = "rules/ball01m.gif"; + if ($infos[6] == 'Y') { + $ball = 'img/ball01m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?do=resource&selected=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; + echo "<A HREF=index.php?do=resource&id=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; } else { - $ball = "rules/ball04m.gif"; + $ball = 'img/ball04m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?do=resource&selected=$infos[1]><img border=0 src=$ball width=10 height=10></a></div>\n"; + echo "<A HREF=index.php?do=resource&id=$infos[1]><img border=0 src=$ball width=10 height=10></a></div>\n"; } } @@ -192,13 +192,13 @@ } $sectors_list = PrepSelect('sector'); - echo " <FORM action=\"index.php?do=resourcemap\" METHOD=POST>"; - echo " <b>Select one area:</b> <br><br> Area: "; + echo ' <FORM action="index.php?do=resourcemap" METHOD=POST>'; + echo ' <b>Select one area:</b> <br><br> Area: '; echo DrawSelectBox('sector', $sectors_list, 'sector', '', false); //SelectAreas('','sector'); - echo " <br><br><INPUT type=submit value=view><br><br>"; - echo "</FORM>"; - echo "</div>"; + echo ' <br><br><INPUT type=submit value=view><br><br>'; + echo '</FORM>'; + echo '</div>'; } Modified: www/webconsole-new/rules/resources.php =================================================================== --- www/webconsole-new/rules/resources.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/resources.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -123,6 +123,11 @@ } }else{ $query = "SELECT r.id, r.loc_sector_id, s.name AS sector, r.loc_x, r.loc_y, r.loc_z, r.radius, r.visible_radius, r.probability, r.skill, sk.name AS skill_name, r.skill_level, r.item_cat_id, c.name AS category, r.item_quality, r.animation, r.anim_duration_seconds, r.item_id_reward, i.name AS item, r.reward_nickname, r.action FROM natural_resources AS r LEFT JOIN sectors AS s ON r.loc_sector_id=s.id LEFT JOIN item_stats AS i on i.id=r.item_id_reward LEFT JOIN item_categories AS c ON r.item_cat_id=c.category_id LEFT JOIN skills AS sk on sk.skill_id=r.skill"; + if (isset($_GET['id'])) + { + $id = mysql_real_escape_string($_GET['id']); + $query .= " WHERE r.id='$id'"; + } if (isset($_GET['sort'])){ if ($_GET['sort'] == 'loc'){ $query = $query . ' ORDER BY sector, loc_x, loc_y, loc_z, item'; Modified: www/webconsole-new/rules/rulesmain.php =================================================================== --- www/webconsole-new/rules/rulesmain.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/rulesmain.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -22,6 +22,7 @@ echo '<a href="./index.php?do=listpathpoints">List Pathpoints</a><br/>'; echo '<a href="./index.php?do=location">List Locations</a><br/>'; echo '<a href="./index.php?do=locationmap">List Location Map</a><br/>'; + echo '<a href="./index.php?do=viewnpcmap">View NPC Map</a><br/>'; echo '<hr/><a href="./index.php?do=skills">List Skills</a><br/>'; echo '<a href="./index.php?do=factions">List Factions</a><br/>'; echo '<a href="./index.php?do=raceinfo">Race Info/Spawn Points</a><br/>'; Added: www/webconsole-new/rules/viewnpcmap.php =================================================================== --- www/webconsole-new/rules/viewnpcmap.php (rev 0) +++ www/webconsole-new/rules/viewnpcmap.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -0,0 +1,268 @@ +<?php +function viewnpcmap(){ + + $report = 'rules/report.xml'; // where this script expects the report.xml file to be. + + if (!checkAccess('rules', 'read')) + { + echo 'You do not have permission to use this page.'; + return; + } + + $sector = (isset($_GET['sector']) ? $_GET['sector'] : ''); + + if ($sector != null && $sector != '') { + + +?> + +<script language="JavaScript"> +<!-- +function MM_reloadPage(init) { //reloads the window if Nav4 resized + if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { + document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} + else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); +} +MM_reloadPage(true); +// --> +</script> + +<style type="text/css"> +#dhtmltooltip{ +position: absolute; +width: 150px; +border: 2px solid black; +padding: 2px; +background-color: lightyellow; +visibility: hidden; +z-index: 100; +/*Remove below line to remove shadow. Below line should always appear last within this CSS*/ +filter: progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135); +} + +</style> + +</head> + +<body bgcolor="#FFFFFF" text="#000000"> + + +<div id="dhtmltooltip"></div> + +<script type="text/javascript"> + +/*********************************************** +* Cool DHTML tooltip script- \xA9 Dynamic Drive DHTML code library (www.dynamicdrive.com) +* This notice MUST stay intact for legal use +* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code +***********************************************/ + +var offsetxpoint=-60 //Customize x offset of tooltip +var offsetypoint=20 //Customize y offset of tooltip +var ie=document.all +var ns6=document.getElementById && !document.all +var enabletip=false +if (ie||ns6) +var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : "" + +function ietruebody(){ +return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body +} + +function ddrivetip(thetext, thecolor, thewidth){ +if (ns6||ie){ +if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px" +if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor +tipobj.innerHTML=thetext +enabletip=true +return false +} +} + +function positiontip(e){ +if (enabletip){ +var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft; +var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop; +//Find out how close the mouse is to the corner of the window +var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20 +var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20 + +var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000 + +//if the horizontal distance isn't enough to accomodate the width of the context menu +if (rightedge<tipobj.offsetWidth) +//move the horizontal position of the menu to the left by it's width +tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px" +else if (curX<leftedge) +tipobj.style.left="5px" +else +//position the horizontal position of the menu where the mouse is positioned +tipobj.style.left=curX+offsetxpoint+"px" + +//same concept with the vertical position +if (bottomedge<tipobj.offsetHeight) +tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px" +else +tipobj.style.top=curY+offsetypoint+"px" +tipobj.style.visibility="visible" +} +} + +function hideddrivetip(){ +if (ns6||ie){ +enabletip=false +tipobj.style.visibility="hidden" +tipobj.style.left="-1000px" +tipobj.style.backgroundColor='' +tipobj.style.width='' +} +} +document.onmousemove=positiontip; + +</script> + +<?PHP +if(!isset($_GET['live'])){ +echo "<h1>NPC Map View $sector</h1>"; +} +else +{ +echo "<h1>LIVE Map View $sector</h1>"; +} + +echo "<div id=Layer2 style=\"position:relative; \">"; +//echo "<div id=Layer2 style=\"position:absolute; width:1968px; height:954px; z-index:1; left:0px; top:90px\">"; + +if(!isset($_GET['live'])) + echo "<img src=\"rules/draw_map.php?sector=$sector&type=path\" >"; +else + echo "<img src=\"rules/draw_map.php?sector=$sector&type=live\" >"; + +$data = getDataFromArea($sector); +$sectors = $data[0]; +$centerx = $data[1]; +$centery = $data[2]; +$scalefactorx = $data[3]; +$scalefactory = $data[4]; + +if(!isset($_GET['live'])){ + $query = "SELECT id,name,loc_x,loc_y,loc_z,loc_sector_id, npc_impervious_ind FROM characters WHERE npc_master_id>0 AND " . $sectors . " and npc_spawn_rule>0"; + $res = mysql_query2($query); + + $i=0; + $result = ''; + while ($line = mysql_fetch_array($res, MYSQL_NUM)){ + $elem = $line[0] . "|" . $line[1] . "|x|" . $line[2] . "|" . $line[4]."|".$line[6]; + $result .= $elem . "\n"; + } + // get each line + $tok = strtok($result, "\n"); + $peoples; + while ($tok) { + $peoples[]=$tok; + $tok = strtok("\n"); + } + + + // get all info for each line + foreach( $peoples as $people ) { + + // skips commented lines + $pos = strstr($people, '#'); + + if ($pos=="0") { + $tok2 = strtok($people, '|'); + $infos[] = ''; + $count = 1; + while ($tok2) { + $tok2 = str_replace("\n", '', $tok2); + $tok2 = str_replace("\r", '', $tok2); + $infos[$count]=$tok2; + $tok2 = strtok('|'); + $count++; + } + + + $x = $centerx+($infos[4]*$scalefactorx); + $y = $centery-($infos[5]*$scalefactory); + + if ($infos[6] == 'Y') { + $ball = 'img/ball01m.gif'; + echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; + echo "<A HREF=index.php?do=npc_details&sub=main&npc_id=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; + + } else { + $ball = 'img/ball04m.gif'; + echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; + echo "<A HREF=index.php?do=npc_details&sub=main&npc_id=$infos[1]><img border=0 src=$ball width=10 height=10></a></div>\n"; + } + + } + } +} +else +{ + // Get Live position data + $handle = @fopen($report,"r"); + if($handle) { + while ( !feof($handle) ) + { + $buffer = fgets($handle, 4096); + if(preg_match("/npc name=\"(?P<name>.*?)\".*pos=\"(?P<x>.*?),.*?,(?P<z>.*?)\" sector=\"(?P<sector>.*?)\"/", $buffer, $matches)) { + $found = FALSE; + foreach($data[5] as $sectorname) + { + if($matches['sector'] === $sectorname) + $found = TRUE; + } + if($found) + { + $ball = 'img/ball01m.gif'; + $x= $centerx+($matches['x']*$scalefactorx); + $y= $centery-($matches['z']*$scalefactory); + echo "<div id=Layer1 onMouseover=\"ddrivetip('".$matches['name']."')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; + echo "<img border=0 src=$ball width=8 height=8></div>\n"; + } + } + elseif(preg_match("/player name=\"(?P<name>.*?)\".*pos=\"(?P<x>.*?),.*?,(?P<z>.*?)\" sector=\"(?P<sector>.*?)\"/", $buffer, $matches)) { + $found = FALSE; + foreach($data[5] as $sectorname) + { + if($matches['sector'] === $sectorname) + $found = TRUE; + } + if($found) + { + $ball = 'img/ball04m.gif'; + $x= $centerx+($matches['x']*$scalefactorx); + $y= $centery-($matches['z']*$scalefactory); + echo "<div id=Layer1 onMouseover=\"ddrivetip('".$matches['name']."')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; + echo "<img border=0 src=$ball width=10 height=10></div>\n"; + } + } + + } + } + else + { + echo '<p class="error">Could not open report.xml file in '.$report.'</p>'; + } + @fclose($handle); + +} +} + $sectors_list = PrepSelect('sector'); + echo ' <FORM action="index.php" METHOD="GET"><input type="hidden" name="do" value="viewnpcmap">'; + echo ' <b>Select one area:</b> <br><br> Area: '; + echo DrawSelectBox('sector', $sectors_list, 'sector', '', false); + //SelectAreas('','sector'); + echo ' <br><input type="checkbox" name="live" value="yes">LIVE view <br><br><INPUT type="submit" value="view"><br><br>'; + echo '</FORM>'; + echo '</div>'; +} +?> + + + + + Property changes on: www/webconsole-new/rules/viewnpcmap.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/rules/waypointlinks.php =================================================================== --- www/webconsole-new/rules/waypointlinks.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/waypointlinks.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -6,7 +6,7 @@ { $query = "SELECT DISTINCT wl.id, wl.name, wl.type, wl.wp1, wl.wp2, wl.flags, CONCAT(' X: ', w.x, ' Y: ', w.y, ' Z: ', w.z) AS wp1_coords, CONCAT(' X: ', ww.x, ' Y: ', ww.y, ' Z: ', ww.z) AS wp2_coords, w.name AS wp1_name, ww.name AS wp2_name, !ISNULL(pp.id) AS has_path FROM sc_waypoint_links AS wl LEFT JOIN sc_waypoints AS w ON wl.wp1=w.id LEFT JOIN sc_waypoints AS ww ON wl.wp2=ww.id LEFT JOIN sc_path_points AS pp ON pp.path_id=wl.id"; - if (isset($_GET['sector']) && $_GET['sector'] != '') + if (isset($_GET['sector']) && $_GET['sector'] != '' && $_GET['sector'] != '0') { $sec = mysql_real_escape_string($_GET['sector']); $query = $query . " WHERE w.loc_sector_id='$sec'"; Modified: www/webconsole-new/rules/waypointmap.php =================================================================== --- www/webconsole-new/rules/waypointmap.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/waypointmap.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -4,13 +4,13 @@ function waypoint_map(){ if (!checkAccess('rules', 'read')) { - echo "You do not have permission to use this page."; + echo 'You do not have permission to use this page.'; return; } - $sector = (isset($_POST['sector']) ? $_POST['sector'] : ""); + $sector = (isset($_POST['sector']) ? $_POST['sector'] : ''); - if ($sector!=null && $sector!="") { + if ($sector != null && $sector != '') { ?> @@ -123,7 +123,7 @@ <?PHP echo "<h1>Waypoint Map View $sector</h1>"; -echo "NPC Waypoints painted in orange<br>"; +echo 'NPC Waypoints painted in orange<br>'; echo "<div id=Layer2 style=\"position:relative; \">"; //echo "<div id=Layer2 style=\"position:absolute; width:1968px; height:954px; z-index:1; left:0px; top:250px\">"; @@ -154,15 +154,15 @@ foreach($peoples as $people) { // skips commented lines - $pos = strstr($people, "#"); + $pos = strstr($people, '#'); if ($pos=="0") { - $tok2 = strtok($people, "|"); + $tok2 = strtok($people, '|'); $infos[] = ""; $count = 1; while ($tok2) { - $tok2 = str_replace("\n", "", $tok2); - $tok2 = str_replace("\r", "", $tok2); + $tok2 = str_replace("\n", '', $tok2); + $tok2 = str_replace("\r", '', $tok2); $infos[$count]=$tok2; $tok2 = strtok("|"); $count++; @@ -173,18 +173,18 @@ $scalefactorx = $data[3]; $scalefactory = $data[4]; - $x= $centerx+($infos[4]*$scalefactorx)-5; - $y= $centery-($infos[6]*$scalefactory)-5; + $x = $centerx+($infos[4]*$scalefactorx)-5; + $y = $centery-($infos[6]*$scalefactory)-5; - if ($infos[7]=="ALLOW_RETURN") { - $ball = "rules/ball04m.gif"; + if ($infos[7] == "ALLOW_RETURN") { + $ball = 'img/ball04m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?page=listwaypoints&selected=$infos[1]§or=$sector><img border=0 src=$ball width=8 height=8></a></div>\n"; + echo "<A HREF=index.php?do=waypoint&id=$infos[1]><img border=0 src=$ball width=8 height=8></a></div>\n"; } else { - $ball = "rules/ball01m.gif"; + $ball = 'img/ball01m.gif'; echo "<div id=Layer1 onMouseover=\"ddrivetip('$infos[2]')\"; onMouseout=\"hideddrivetip()\" style=\"position:absolute; offsetTop:20px; width:10px; height:10px; z-index:2; left:".$x."px; top:".$y."px\">"; - echo "<A HREF=index.php?page=listwaypoints&selected=$infos[1]§or=$sector><img border=0 src=$ball width=10 height=10></a></div>\n"; + echo "<A HREF=index.php?do=waypoint&id=$infos[1]><img border=0 src=$ball width=10 height=10></a></div>\n"; } } @@ -194,13 +194,13 @@ } $sectors_list = PrepSelect('sector'); - echo " <FORM action=\"index.php?do=waypointmap\" METHOD=POST>"; - echo " <b>Select one area:</b> <br><br> Area: "; + echo ' <FORM action="index.php?do=waypointmap" METHOD=POST>'; + echo ' <b>Select one area:</b> <br><br> Area: '; echo DrawSelectBox('sector', $sectors_list, 'sector', '', false); //SelectAreas('','sector'); - echo " <br><br><INPUT type=submit value=view><br><br>"; - echo "</FORM>"; - echo "</div>"; + echo ' <br><br><INPUT type=submit value=view><br><br>'; + echo '</FORM>'; + echo '</div>'; } Modified: www/webconsole-new/rules/waypoints.php =================================================================== --- www/webconsole-new/rules/waypoints.php 2009-08-07 06:03:47 UTC (rev 4198) +++ www/webconsole-new/rules/waypoints.php 2009-08-07 14:36:58 UTC (rev 4199) @@ -140,26 +140,30 @@ } }else{ $query = "SELECT w.id, w.name, w.wp_group, w.x, w.y, w.z, w.radius, w.flags, w.loc_sector_id, s.name AS sector FROM sc_waypoints AS w LEFT JOIN sectors AS s on s.id=w.loc_sector_id"; - if (isset($_GET['sector']) && $_GET['sector']!=""){ + if (isset($_GET['id']) && $_GET['id']!=''){ + $id = mysql_real_escape_string($_GET['id']); + $query .= " WHERE w.id='$id'"; + } + elseif (isset($_GET['sector']) && $_GET['sector']!=''){ $sec = mysql_real_escape_string($_GET['sector']); - $query = $query . " WHERE loc_sector_id='$sec'"; + $query .= " WHERE w.loc_sector_id='$sec'"; } if (isset($_GET['sort'])){ switch($_GET['sort']){ case 'name': - $query = $query . " ORDER BY w.name"; + $query .= ' ORDER BY w.name'; break; case 'group': - $query = $query . " ORDER BY w.wp_group"; + $query .= ' ORDER BY w.wp_group'; break; case 'sector': - $query = $query . " ORDER BY sector, name"; + $query .= ' ORDER BY sector, name'; break; default: - $query = $query . " ORDER BY sector, name"; + $query .= ' ORDER BY sector, name'; } }else{ - $query = $query . " ORDER BY sector, name"; + $query .= ' ORDER BY sector, name'; } if (isset($_GET['limit']) && is_numeric($_GET['limit'])){ $lim = $_GET['limit'] - 30; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-08-07 14:38:26
|
Revision: 4200 http://planeshift.svn.sourceforge.net/planeshift/?rev=4200&view=rev Author: weltall2 Date: 2009-08-07 14:38:17 +0000 (Fri, 07 Aug 2009) Log Message: ----------- moved the folder in the right place Added Paths: ----------- www/webconsole-new/img/ Removed Paths: ------------- www/webconsole-new/rules/img/ Property changes on: www/webconsole-new/img ___________________________________________________________________ Added: svn:mergeinfo + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-09-01 19:32:11
|
Revision: 4303 http://planeshift.svn.sourceforge.net/planeshift/?rev=4303&view=rev Author: weltall2 Date: 2009-09-01 19:24:00 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Added character, account and gm listing and editing, plus some missing images and bugfixes patch by nakem Modified Paths: -------------- www/webconsole-new/admin/adminmain.php www/webconsole-new/index.php www/webconsole-new/other/guilds.php www/webconsole-new/other/listpetitions.php www/webconsole-new/other/othermain.php Added Paths: ----------- www/webconsole-new/admin/gms.php www/webconsole-new/img/s_asc.png www/webconsole-new/img/s_desc.png www/webconsole-new/other/accounts.php www/webconsole-new/other/characters.php Modified: www/webconsole-new/admin/adminmain.php =================================================================== --- www/webconsole-new/admin/adminmain.php 2009-09-01 14:50:14 UTC (rev 4302) +++ www/webconsole-new/admin/adminmain.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -7,6 +7,7 @@ echo '<a href="./index.php?do=listtips">List Tips</a><br/>'; echo '<a href="./index.php?do=viewcommands">View Commands</a><br/>'; echo '<a href="./index.php?do=viewserveroptions">View Server Options</a><br/>'; + echo '<a href="./index.php?do=listgms">List GMs</a><br/>'; echo '<hr/><a href="./index.php">Return to main page.</a>'; echo '</div><div class="main">'; } Added: www/webconsole-new/admin/gms.php =================================================================== --- www/webconsole-new/admin/gms.php (rev 0) +++ www/webconsole-new/admin/gms.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -0,0 +1,280 @@ +<?php + +function listgms() +{ + if(checkaccess('admin', 'read')) + { + echo '<p class="header">List Game Masters</p>'; + + $sql = 'SELECT a.id AS account_id, a.username AS account_name, a.security_level, s.title AS security_title, c.id AS character_id, c.name AS firstname, c.lastname, c.time_connected_sec, g.id AS guild_id, g.name AS guild '; + $sql.= 'FROM characters AS c LEFT JOIN accounts AS a ON c.account_id = a.id LEFT JOIN guilds AS g ON g.id = c.guild_member_of LEFT JOIN security_levels AS s ON a.security_level = s.level WHERE a.security_level > 20 AND a.security_level < 50'; + $query = mysql_query2($sql); + + if(checkaccess('admin', 'create')) + { + echo '<form action="./index.php?do=addgm" method="post">'; + echo '<input type="text" name="username" size="20" /><input type="submit" value="Find Username" />'; + echo '</form>'; + } + echo '<table>'; + echo '<tr><th>Account/Character ID</th><th>Security Level</th><th>Account</th><th>Firstname</th><th>Lastname</th><th>Guild</th><th>Total Time Connected</th><th>Actions</th></tr>'; + + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $color = ($color == 'a' ? 'b' : 'a'); + $sec_level = (isset($row['security_title']) && !empty($row['security_title']) ? $row['security_title'] : 'Unknown'); + + echo '<tr class="color_'.$color.'">'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listaccounts&id='.$row['account_id'].'">' : ''); + echo $row['account_id'].(checkaccess('other', 'read') ? '</a>' : '').' / '; + echo (checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&npc_id='.$row['character_id'].'&sub=main">' : ''); + echo $row['character_id'].(checkaccess('npcs', 'edit') ? '</a>' : '').'</td>'; + echo '<td>'.$sec_level.'('.$row['security_level'].')</td>'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listaccounts&id='.$row['account_id'].'">' : ''); + echo htmlentities($row['account_name']).(checkaccess('other', 'read') ? '</a>': '').'</td>'; + echo '<td>'.(checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&sub=main&npc_id='.$row['character_id'].'">' : ''); + echo htmlentities($row['firstname']).(checkaccess('npcs', 'edit') ? '</a>' : '').'</td>'; + echo '<td>'.htmlentities($row['lastname']).'</td>'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listguilds&guild='.$row['guild_id'].'">' : ''); + echo htmlentities($row['guild']).(checkaccess('other', 'read') ? '</a>' : '').'</td>'; + + $t = $row['time_connected_sec']; + $days = floor($t / (60*60*24)); + $t -= $days * 60*60*24; + + $hours = floor($t / (60*60)); + $t -= $hours * 60*60; + + $min = floor($t / 60); + $t -= $min * 60; + + $secs = $t; + echo '<td>'.$days.' days, '.$hours.' hours, '.$min.' minutes, '.$secs.' seconds</td>'; + echo '<td>'.(checkaccess('admin', 'edit') ? '<a href="./index.php?do=editgm&id='.$row['character_id'].'">Edit</a> ' : ''); + echo '<a href="./index.php?do=viewgmlog&id='.$row['character_id'].'">View Commandlog</a></td>'; + echo '</tr>'; + } + echo '</table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function viewgmlog() +{ + if(checkaccess('admin', 'read')) + { + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + $lines_per_page = (isset($_GET['lines_per_page']) && is_numeric($_GET['lines_per_page']) ? $_GET['lines_per_page'] : 200); + $page = (isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0); + + echo '<p class="header">View Game Master Commandlog</p>'; + echo '<a href="./index.php?do=listgms">Back</a><br/>'; + if($id == 'nan') + { + echo '<p class="error">You have to specify a valid ID!</p>'; + } + else + { + $sql = "SELECT name, lastname FROM characters WHERE id = '$id' LIMIT 1"; + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + $name = $row['name'].' '.$row['lastname']; + + $sql = "SELECT COUNT(*) FROM gm_command_log WHERE gm = '$id'"; + $page_count = mysql_fetch_array(mysql_query2($sql), MYSQL_NUM); + $page_count = ceil($page_count[0] / $lines_per_page); + + if($page >= $page_count) + { + $page = $page_count - 1; + } + if($page < 0) + { + $page = 0; + } + + $sql = "SELECT ex_time, command FROM gm_command_log WHERE gm = '$id' LIMIT ".($page * $lines_per_page).', '.$lines_per_page; + $query = mysql_query2($sql); + + echo '<form action="./index.php" method="get">'; + echo '<input type="hidden" name="do" value="viewgmlog" />'; + echo '<input type="hidden" name="id" value="'.$id.'" />'; + echo '<input type="hidden" name="page" value="'.$page.'" />'; + echo 'Lines per page: <input type="text" name="lines_per_page" size="5" value="'.$lines_per_page.'" />'; + echo '</form><br/>'; + + echo 'Page: '; + for($i = 0; $i< $page_count; $i++) + { + if($i == $page) + { + echo ($i+1); + } + else + { + echo '<a href="./index.php?do=viewgmlog&id='.$id.'&lines_per_page='.$lines_per_page.'&page='.$i.'">'.($i+1).'</a>'; + } + echo ($i == ($page_count - 1) ? '' : ' | '); + } + echo '<br/>'; + + echo 'Viewing Commandlog of GM "'.htmlentities($name).'"<br/><pre>'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + echo '('.$row['ex_time'].') '.htmlentities($row['command'])."\n"; + } + echo '</pre>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function addgm() +{ + if(checkaccess('admin', 'create')) + { + $username = (isset($_POST['username']) ? $_POST['username'] : ''); + $username = str_replace('*', '%', $username); + + echo '<p class="header">Adding a new Game Master</p>'; + + if(empty($username)) + { + echo '<a href="./index.php?do=listgms">Back</a>'; + echo '<p class="error">You have to enter a username to search for!</p>'; + } + else + { + $sql = 'SELECT a.id AS account_id, a.username AS account_name, c.id AS character_id, c.name AS firstname, c.lastname, c.time_connected_sec, g.id AS guild_id, g.name AS guild '; + $sql.= 'FROM characters AS c LEFT JOIN accounts AS a ON c.account_id = a.id LEFT JOIN guilds AS g ON g.id = c.guild_member_of WHERE a.security_level = 0 AND c.name'." LIKE '".mysql_real_escape_string($username)."'"; + $query = mysql_query2($sql); + + echo '<table>'; + echo '<tr><th>Account/Character ID</th><th>Account</th><th>Firstname</th><th>Lastname</th><th>Guild</th><th>Total Time Connected</th><th>Actions</th></tr>'; + + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $color = ($color == 'a' ? 'b' : 'a'); + + echo '<tr class="color_'.$color.'">'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listaccounts&id='.$row['account_id'].'">' : ''); + echo $row['account_id'].(checkaccess('other', 'read') ? '</a>' : '').' / '; + echo (checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&npc_id='.$row['character_id'].'&sub=main">' : ''); + echo $row['character_id'].(checkaccess('npcs', 'edit') ? '</a>' : '').'</td>'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listaccounts&id='.$row['account_id'].'">' : ''); + echo htmlentities($row['account_name']).(checkaccess('other', 'read') ? '</a>': '').'</td>'; + echo '<td>'.(checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&sub=main&npc_id='.$row['character_id'].'">' : ''); + echo htmlentities($row['firstname']).(checkaccess('npcs', 'edit') ? '</a>' : '').'</td>'; + echo '<td>'.htmlentities($row['lastname']).'</td>'; + echo '<td>'.(checkaccess('other', 'read') ? '<a href="./index.php?do=listguilds&guild='.$row['guild_id'].'">' : ''); + echo htmlentities($row['guild']).(checkaccess('other', 'read') ? '</a>' : '').'</td>'; + + $t = $row['time_connected_sec']; + $days = floor($t / (60*60*24)); + $t -= $days * 60*60*24; + + $hours = floor($t / (60*60)); + $t -= $hours * 60*60; + + $min = floor($t / 60); + $t -= $min * 60; + + $secs = $t; + echo '<td>'.$days.' days, '.$hours.' hours, '.$min.' minutes, '.$secs.' seconds</td>'; + echo '<td><a href="./index.php?do=editgm&id='.$row['character_id'].'">Make a GM</a>'; + echo '</td>'; + echo '</tr>'; + } + echo '</table>'; + } + + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function editgm() +{ + if(checkaccess('admin', 'edit') || checkaccess('admin', 'create')) + { + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + $security_level = (isset($_POST['security_level']) && is_numeric($_POST['security_level']) ? $_POST['security_level'] : 'nan'); + + echo '<p class="header">Editing/Creating a Game Master</p>'; + + if($id == 'nan') + { + echo '<p class="error">You have to specify a valid ID!</p>'; + } + else + { + $sql = 'SELECT c.name, c.lastname, c.account_id, a.security_level FROM characters AS c, accounts AS a WHERE c.id = \''.$id.'\' AND a.id = c.account_id LIMIT 1'; + $query = mysql_query2($sql); + + if(!checkaccess('admin', 'edit') && mysql_num_rows($query) > 0) + { // You don't have the right to edit! + echo '<p class="error">You are not authorized to use these functions</p>'; + return false; + } + elseif(!checkaccess('admin', 'create')) + { // You don't have the right to create! + echo '<p class="error">You are not authorized to use these functions</p>'; + return false; + } + $row = mysql_fetch_array($query); + + if($security_level != 'nan') + { + $sql = "UPDATE accounts SET security_level = '".$security_level."' WHERE id = '".$row['account_id']."' LIMIT 1"; + $query = mysql_query2($sql); + echo '<p style="color: yellow;">Successfully updated the security level!</p>'; + $row['security_level'] = $security_level; + } + + $levels = array(0, 21, 22, 23, 24); + $arr = array(); + $sql = 'SELECT level, title FROM security_levels'; + $query2 = mysql_query2($sql); + while($row2 = mysql_fetch_array($query2)) + { + if(in_array($row2['level'], $levels)) + { + $arr[$row2['level']] = $row2['title']; + } + } + $levels = $arr; + unset($arr); + + echo '<a href="./index.php?do=listgms">Back</a>'; + echo '<form action="./index.php?do=editgm&id='.$id.'" method="post">'; + echo '<table>'; + echo '<tr class="color_a"><td>ID: </td><td>'.$id.'</td></tr>'; + echo '<tr class="color_b"><td>Firstname: </td><td>'.htmlentities($row['name']).'</td></tr>'; + echo '<tr class="color_a"><td>Lastname: </td><td>'.htmlentities($row['lastname']).'</td></tr>'; + echo '<tr class="color_a"><td>Security Level: </td><td><select name="security_level">'; + foreach($levels as $level => $name) + { + echo '<option value="'.$level.'"'.($row['security_level'] == $level ? ' selected="selected"' : '').'>'; + echo htmlentities($name).' ('.$level.')</option>'; + } + echo '</select></td></tr>'; + echo '</table>'; + echo '<input type="submit" value="Save" /></form>'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/admin/gms.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/img/s_asc.png =================================================================== (Binary files differ) Property changes on: www/webconsole-new/img/s_asc.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: www/webconsole-new/img/s_desc.png =================================================================== (Binary files differ) Property changes on: www/webconsole-new/img/s_desc.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-09-01 14:50:14 UTC (rev 4302) +++ www/webconsole-new/index.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -627,6 +627,30 @@ othermain(); deletecommonstrings(); break; + case 'listaccounts': + include('./other/othermain.php'); + include('./other/accounts.php'); + othermain(); + listaccounts(); + break; + case 'viewaccount': + include('./other/othermain.php'); + include('./other/accounts.php'); + othermain(); + viewaccount(); + break; + case 'listcharacters': + include('./other/othermain.php'); + include('./other/characters.php'); + othermain(); + listcharacters(); + break; + case 'viewcharacter': + include('./other/othermain.php'); + include('./other/characters.php'); + othermain(); + viewcharacter(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); @@ -655,6 +679,30 @@ adminmain(); viewserveroptions(); break; + case 'listgms': + include('./admin/adminmain.php'); + include('./admin/gms.php'); + adminmain(); + listgms(); + break; + case 'viewgmlog': + include('./admin/adminmain.php'); + include('./admin/gms.php'); + adminmain(); + viewgmlog(); + break; + case 'addgm': + include('./admin/adminmain.php'); + include('./admin/gms.php'); + adminmain(); + addgm(); + break; + case 'editgm': + include('./admin/adminmain.php'); + include('./admin/gms.php'); + adminmain(); + editgm(); + break; default: echo '<p class="error">shouldn\'t reach this!</p>'; } Added: www/webconsole-new/other/accounts.php =================================================================== --- www/webconsole-new/other/accounts.php (rev 0) +++ www/webconsole-new/other/accounts.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -0,0 +1,163 @@ +<?php + +function listaccounts() +{ + if(checkaccess('other', 'read')) + { + $items_per_page = (isset($_GET['items_per_page']) && is_numeric($_GET['items_per_page']) ? $_GET['items_per_page'] : 30); + $page = (isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0); + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + + if($items_per_page < 1) + { + $items_per_page = 1; + } + + if($id != 'nan') + { + $sql = 'SELECT COUNT(*) FROM accounts'; + $page_count = mysql_fetch_array(mysql_query2($sql), MYSQL_NUM); + $page_count = ceil($page_count[0] / $items_per_page); + } + else + { + $page_count = 1; + } + + $sql = 'SELECT a.id, a.username, a.status, a.verificationid, b.end AS banned_until FROM accounts AS a LEFT JOIN bans AS b ON a.id = b.account'; + $sql.= ($id != 'nan' ? " WHERE id = '".$id."' LIMIT 1" : ' ORDER BY id LIMIT '.($page * $items_per_page).', '.$items_per_page); + $query = mysql_query2($sql); + + echo '<p class="header">List Accounts</p>'; + + echo 'Page: '; + for($i = 0; $i< $page_count; $i++) + { + if($i == $page) + { + echo ($i+1); + } + else + { + echo '<a href="./index.php?do=listaccounts&page='.$i.'&items_per_page='.$items_per_page.'">'.($i+1).'</a>'; + } + echo ($i == ($page_count - 1) ? '' : ' | '); + } + echo '<br/><form action="./index.php" method="get">'; + echo '<input type="hidden" name="do" value="listaccounts" />'; + echo '<input type="hidden" name="page" value="'.$page.'" />'; + echo 'Items per Page: <input type="text" name="items_per_page" value="'.$items_per_page.'" size="5" />'; + echo '</form>'; + + echo '<table>'; + echo '<tr><th>ID</th><th>Accountname</th><th>Account status</th><th>Verify ID</th><th>Actions</th></tr>'; + + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $color = ($color == 'a' ? 'b' : 'a'); + $status = ''; + if($row['status'] == 'A') + { + $status = 'Active'; + } + elseif($row['status'] == 'U') + { + $status = 'Unactive'; + } + elseif($row['status'] == 'B') + { + $status = 'Banned - until '.date('H:i d/m/Y', $row['banned_until']); + } + else + { + $status = 'Other'; + } + + echo '<tr class="color_'.$color.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['username']).'</td>'; + echo '<td>'.$status.'</td>'; + echo '<td>'.$row['verificationid'].'</td>'; + echo '<td>'; + echo '<a href="./index.php?do=viewaccount&id='.$row['id'].'">Details</a> '; + //echo (checkaccess('other', 'edit') ? '<a href="./index.php?do=editaccount&id='.$row['id'].'">Edit</a> ' : ''); + //echo (checkaccess('other', 'delete') ? '<a href="./index.php?do=deleteaccount&id='.$row['id'].'">Delete</a> ' : ''); + echo '</td>'; + } + echo '</table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function viewaccount() +{ + if(checkaccess('other', 'read')) + { + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + + echo '<p class="header">Account Details</p>'; + echo '<a href="./index.php?do=listaccounts">Back</a>'; + if($id == 'nan') + { + echo '<p class="error">You have to specify a valid ID!</p>'; + return false; + } + + $sql = 'SELECT a.username, a.last_login, a.created_date, a.last_login_ip, a.security_level, a.verificationid, a.country, a.gender, a.birth, a.status, a.spam_points, a.advisor_points, a.advisor_ban, a.comments, b.end AS banned_until '; + $sql.= 'FROM accounts AS a LEFT JOIN bans AS b ON a.id = b.account WHERE a.id = '.$id.' LIMIT 1'; + + $row = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + $gender = 'Other'; + if($row['gender'] == 'M') + { + $gender = 'male'; + } + elseif($row['gender'] == 'F') + { + $gender = 'female'; + } + $status = 'Other'; + if($row['status'] == 'A') + { + $status = 'Active'; + } + elseif($row['status'] == 'U') + { + $status = 'Unactive'; + } + elseif($row['status'] == 'B') + { + $status = 'Banned - until '.date('H:i d/m/Y', $row['banned_until']); + } + + echo '<table>'; + echo '<tr class="color_a"><td>ID: </td><td>'.$id.'</td></tr>'; + echo '<tr class="color_b"><td>Name: </td><td>'.htmlentities($row['username']).'</td></tr>'; + echo '<tr class="color_a"><td>Last login: </td><td>'.$row['last_login'].' ('.$row['last_login_ip'].')</td></tr>'; + echo '<tr class="color_b"><td>Created on: </td><td>'.$row['created_date'].'</td></tr>'; + echo '<tr class="color_a"><td>Security level: </td><td>'.$row['security_level'].'</td></tr>'; + echo '<tr class="color_b"><td>Verify ID: </td><td>'.$row['verificationid'].'</td></tr>'; + echo '<tr class="color_a"><td>Country: </td><td>'.htmlentities($row['country']).'</td></tr>'; + echo '<tr class="color_b"><td>Gender: </td><td>'.$gender.'</td></tr>'; + echo '<tr class="color_a"><td>Birth: </td><td>'.$row['birth'].'</td></tr>'; + echo '<tr class="color_b"><td>Status: </td><td>'.$status.'</td></tr>'; + echo '<tr class="color_a"><td>Spam points: </td><td>'.$row['spam_points'].'</td></tr>'; + echo '<tr class="color_b"><td>Advisor points: </td><td>'.$row['advisor_points'].'</td></tr>'; + echo '<tr class="color_a"><td>Advisor ban: </td><td>'.($row['advisor_ban'] ? 'Yes' : 'No').'</td></tr>'; + echo '<tr class="color_b"><td>Comments: </td><td><pre>'.htmlentities($row['comments']).'</pre></td></tr>'; + echo '</table><br/><br/>'; + + echo '<a href="./index.php?do=listcharacters&account_id='.$id.'">List this account\'s characters</a>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> + Property changes on: www/webconsole-new/other/accounts.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: www/webconsole-new/other/characters.php =================================================================== --- www/webconsole-new/other/characters.php (rev 0) +++ www/webconsole-new/other/characters.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -0,0 +1,125 @@ +<?php + +function listcharacters() +{ + if(checkaccess('other', 'read')) + { + $account_id = (isset($_GET['account_id']) && is_numeric($_GET['account_id']) ? $_GET['account_id'] : 'nan'); + $page = (isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0); + $items_per_page = (isset($_GET['items_per_page']) && is_numeric($_GET['items_per_page']) ? $_GET['items_per_page'] : 30); + + echo '<p class="header">List Characters</p>'; + + $sql = 'SELECT COUNT(*) FROM characters'.($account_id == 'nan' ? '' : ' WHERE account_id = '.$account_id); + $page_count = mysql_fetch_array(mysql_query2($sql), MYSQL_NUM); + $page_count = ceil($page_count[0] / $items_per_page); + + if($page >= $page_count) + { + $page = $page_count - 1; + } + if($page < 0) + { + $page = 0; + } + + $sql = 'SELECT c.id, c.account_id, c.name, c.lastname, c.guild_member_of, c.time_connected_sec, g.name AS guild_name, a.username AS account_name '; + $sql.= 'FROM characters AS c LEFT JOIN guilds AS g on g.id = c.guild_member_of LEFT JOIN accounts AS a ON a.id = c.account_id '; + $sql.= ($account_id == 'nan' ? '' : 'WHERE c.account_id = \''.$account_id.'\' ').' ORDER BY name LIMIT '.($page * $items_per_page).', '.$items_per_page; + $query = mysql_query2($sql); + + $sql = 'SELECT id, username FROM accounts ORDER BY username'; + $query2 = mysql_query2($sql); + + echo 'Page: '; + for($i = 0; $i< $page_count; $i++) + { + if($page == $i) + { + echo ($i+1); + } + else + { + echo '<a href="./index.php?do=listcharacters&account_id='.$account_id.'&items_per_page='.$items_per_page.'&page='.$i.'">'.($i+1).'</a>'; + } + echo ($i == ($page_count - 1) ? '' : ' | '); + } + echo '<br/><form action="./index.php" method="get">'; + echo '<input type="hidden" name="do" value="listcharacters" />'; + echo '<input type="hidden" name="page" value="'.$page.'" />'; + echo 'Items per Page: <input type="text" name="items_per_page" value="'.$items_per_page.'" size="5" /><br/>'; + echo 'List all characters of this account: <select name="account_id" onChange="this.form.submit();">'; + echo '<option value=""'.($account_id == 'nan' ? ' selected="selected"' : '').'>All</option>'; + while($row = mysql_fetch_array($query2, MYSQL_ASSOC)) + { + echo '<option value="'.$row['id'].'"'.($row['id'] == $account_id ? ' selected="selected"' : '').'>'.htmlentities($row['username']).'</option>'; + } + echo '</select>'; + + echo '</form><br/>'; + + echo '<table>'; + echo '<tr><th>ID</th><th>Firstname</th><th>Lastname</th><th>NPC</th><th>Guild</th><th>Account</th><th>Total time connected</th><th>Actions</th></tr>'; + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $color = ($color == 'a' ? 'b' : 'a'); + + echo '<tr class="color_'.$color.'">'; + echo '<td>'.$row['id'].'</td>'; + echo '<td>'.htmlentities($row['name']).'</td>'; + echo '<td>'.htmlentities($row['lastname']).'</td>'; + echo '<td>'.($row['account_name'] == 'superclient' ? 'Yes' : 'No').'</td>'; + echo '<td><a href="./index.php?do=listguilds&guild='.$row['guild_member_of'].'">'.htmlentities($row['guild_name']).'</a></td>'; + echo '<td><a href="./index.php?do=listaccounts&id='.$row['account_id'].'">'.htmlentities($row['account_name']).'</a></td>'; + + $t = $row['time_connected_sec']; + $days = floor($t / (60*60*24)); + $t -= $days * 60*60*24; + + $hours = floor($t / (60*60)); + $t -= $hours * 60*60; + + $min = floor($t / 60); + $t -= $min * 60; + + $secs = $t; + echo '<td>'.$days.' days, '.$hours.' hours, '.$min.' minutes, '.$secs.' seconds</td>'; + echo '<td>'; //<a href="./index.php?do=viewcharacter&id='.$row['id'].'">Details</a> '; + echo (checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&npc_id='.$row['id'].'">Edit</a>' : '').'</td>'; + echo '</tr>'; + + } + echo '</table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function viewcharacter() +{ + if(checkaccess('other', 'read')) + { + $id = (isset($_GET['id']) && is_numeric($_GET['id']) ? $_GET['id'] : 'nan'); + + echo '<p class="header">Character Details</p>'; + echo '<a href="./index.php?do=listcharacters">Back</a><br/>'; + if($id == 'nan') + { + echo '<p class="error">You have to specify a valid ID!</p>'; + } + else + { + echo 'Comming Soon (tm).'; + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> + Property changes on: www/webconsole-new/other/characters.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/other/guilds.php =================================================================== --- www/webconsole-new/other/guilds.php 2009-09-01 14:50:14 UTC (rev 4302) +++ www/webconsole-new/other/guilds.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -144,7 +144,7 @@ return; } - if(isset($_POST['guild_public_notes']) && isset($_POST['guild_private_notes'])) + if($edit && isset($_POST['guild_public_notes']) && isset($_POST['guild_private_notes'])) { $public_notes = mysql_real_escape_string(str_replace("\r", '', $_POST['guild_public_notes'])); $private_notes = mysql_real_escape_string(str_replace("\r", '', $_POST['guild_private_notes'])); Modified: www/webconsole-new/other/listpetitions.php =================================================================== --- www/webconsole-new/other/listpetitions.php 2009-09-01 14:50:14 UTC (rev 4302) +++ www/webconsole-new/other/listpetitions.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -14,7 +14,7 @@ $html .= '">'.$label; if($sort_col == $column) { - $html .= '<img src="s_'.strtolower($sort_dir).'.png" border="0" />'; + $html .= '<img src="img/s_'.strtolower($sort_dir).'.png" border="0" />'; } $html .= '</a>'; return $html; @@ -144,4 +144,4 @@ } } -?> \ No newline at end of file +?> Modified: www/webconsole-new/other/othermain.php =================================================================== --- www/webconsole-new/other/othermain.php 2009-09-01 14:50:14 UTC (rev 4302) +++ www/webconsole-new/other/othermain.php 2009-09-01 19:24:00 UTC (rev 4303) @@ -6,13 +6,11 @@ echo '<div class="menu_left">'; echo '<a href="./index.php?do=listguilds">List guilds and members</a> <br/>'; echo '<a href="./index.php?do=listpetitions">List petitions</a> <br/>'; + echo '<a href="./index.php?do=listaccounts">List accounts</a> <br/>'; + echo '<a href="./index.php?do=listcharacters">List characters</a <br/>'; /* * These pages still need to be done! * - echo '<a href="./index.php?do=viewaccounts">View accounts</a> <br/>'; - echo '<a href="./index.php?do=viewgms">View/Edit gms</a> <br/>'; // Admins - - echo '<a href="./index.php?do=viewcharacters">View characters</a <br/>'; echo '<a href="./index.php?do=listtraits">List/Edit traits</a> <br/>'; // SysAdmin */ echo '<a href="./index.php?do=listcommonstrings">List Common Strings</a> <br/>'; @@ -26,4 +24,4 @@ echo '<p class="error">You are not authorized to use these functions</p>'; } } -?> \ No newline at end of file +?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-10-01 20:43:38
|
Revision: 4597 http://planeshift.svn.sourceforge.net/planeshift/?rev=4597&view=rev Author: weltall2 Date: 2009-10-01 20:43:28 +0000 (Thu, 01 Oct 2009) Log Message: ----------- added book checking function from old wc patch by nakem Modified Paths: -------------- www/webconsole-new/actionlocations/almain.php www/webconsole-new/index.php Added Paths: ----------- www/webconsole-new/actionlocations/checkbooks.php Modified: www/webconsole-new/actionlocations/almain.php =================================================================== --- www/webconsole-new/actionlocations/almain.php 2009-10-01 19:17:55 UTC (rev 4596) +++ www/webconsole-new/actionlocations/almain.php 2009-10-01 20:43:28 UTC (rev 4597) @@ -3,7 +3,7 @@ if (checkaccess('als', 'read')){ echo '<div class="menu_left">'; echo '<a href="./index.php?do=alsector">Action Locations</a> <br/>'; - echo 'Check Books <br/>'; + echo '<a href="./index.php?do=checkbooks">Check Books</a> <br/>'; echo '<a href="./index.php">Return to main page</a>'; echo '</div><div class="main">'."\n"; }else{ Added: www/webconsole-new/actionlocations/checkbooks.php =================================================================== --- www/webconsole-new/actionlocations/checkbooks.php (rev 0) +++ www/webconsole-new/actionlocations/checkbooks.php 2009-10-01 20:43:28 UTC (rev 4597) @@ -0,0 +1,142 @@ +<?php + +function checkbooks() +{ + if(checkaccess('als', 'read')) + { + echo '<p class="header">Check Books</p>'; + + $mode = (isset($_GET['mode']) && $_GET['mode'] == 'name' ? 'name' : 'category' ); + echo ($mode == 'name' ? '' : '<a href="./index.php?do=checkbooks&mode=name">').'Search books by name / meshname (in action_locations)'.($mode == 'name' ? '' : '</a>').' | '; + echo ($mode == 'category' ? '' : '<a href="./index.php?do=checkbooks&mode=category">').'Search books by category'.($mode == 'category' ? '' : '</a>').'<br/><br/>'; + + if($mode == 'name') + { + $sql = "SELECT id, name, response, sectorname FROM action_locations WHERE name LIKE '%books%' OR meshname LIKE '%book%'"; + $query = mysql_query2($sql); + + $result = array(); + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $result[] = $row; + } + mysql_free_result($query); + } + else + { + // A complicated way: + // * first we get the category_id for Books + // * next we get the books from item_stats + // * now we get the parent_item_id (the container) from item_instances + $sql = "SELECT i.parent_item_id FROM item_categories AS c, item_stats AS s, item_instances AS i WHERE c.name = 'Books' AND s.category_id = c.category_id AND i.item_stats_id_standard = s.id"; + $query = mysql_query2($sql); + + $sql = "SELECT id, name, response, sectorname FROM action_locations WHERE response LIKE '%<Container ID=%'"; + $query2 = mysql_query2($sql); + + $items = array(); + while($row = mysql_fetch_array($query2, MYSQL_ASSOC)) + { + $items[] = $row; + } + mysql_free_result($query2); + + $result = array(); + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $id = $row['parent_item_id']; + foreach($items as $i => $fields) + { + $tmp = str_replace(array("\n", "\r"), '', $fields['response']); // Just to be sure... + if(strpos($tmp, '<Container ID=\''.$id.'\'/>') !== false) { + $result[] = $fields; + break; + } + } + } + mysql_free_result($query); + } + + // Start "streaming". From this point on every output will be transferred to the browser without buffering. + ob_implicit_flush(1); + ob_end_flush(); + + if(count($result) == 0) + { + echo '<p class="error">No books found!</p>'; + } + else + { + foreach($result as $row) + { + $pos = strpos($row['response'], 'Container ID'); + if($pos === false) continue; + + $containerid = substr($row['response'], $pos + 14, strpos($row['response'], "'", $pos + 14) - $pos - 14); + $sql = "SELECT s.name AS sectorname, i.char_id_owner, i.parent_item_id, i.flags, c.name AS char_firstname, c.lastname AS char_lastname FROM item_instances AS i LEFT JOIN sectors AS s ON i.loc_sector_id = s.id LEFT JOIN characters AS c ON i.char_id_owner = c.id WHERE i.id = '$containerid' LIMIT 1"; + $query2 = mysql_query2($sql); + + if(mysql_num_rows($query2) == 0) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies an invalid container #'.$containerid.'.</p>'; + continue; + } + $row2 = mysql_fetch_array($query2, MYSQL_ASSOC); + + if($row2['char_id_owner'] != null && $row2['char_id_owner'] != 0) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the container is carried by player '; + echo '"'.(checkaccess('npcs', 'edit') ? '<a href="./index.php?do=npc_details&sub=main&npc_id='.$row['char_id_owner'].'">' : '').htmlentities($row['char_firstname']).' '.htmlentities($row['char_lastname']).(checkaccess('npcs', 'edit') ? '</a>' : '' ).'".</p>'; + continue; + } + if($row2['parent_item_id'] != null && $row2['parent_item_id'] != 0) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but is inside another container with id "'.$row2['parent_item_id'].'".</p>'; + continue; + } + if($row2['sectorname'] != $row['sectorname']) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the container is inside another sector: "'.htmlentities($row2['sectorname']).'".</p>'; + continue; + } + if(strpos($row2['flags'], 'NOPICKUP') === false) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the container is missing the "NOPICKUP" flag.</p>'; + echo " Tip: UPDATE item_instances SET flags = 'NOPICKUP NPCOWNED' WHERE id = '$containerid' LIMIT 1<br/>"; + continue; + } + if(strpos($row2['flags'], 'NPCOWNED') === false) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the container is missing the "NPCOWNED" flag.</p>'; + echo " Tip: UPDATE item_instances SET flags = 'NOPICKUP NPCOWNED' WHERE id = '$containerid' LIMIT 1<br/>"; + continue; + } + + $sql = "SELECT flags, item_stats_id_standard FROM item_instances WHERE parent_item_id = '$containerid' ORDER BY item_stats_id_standard"; + $query3 = mysql_query2($sql); + if(mysql_num_rows($query3) == 0) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the container seems empty.</p>'; + continue; + } + + while($row3 = mysql_fetch_array($query3, MYSQL_ASSOC)) + { + if(strpos($row3['flags'], 'NOPICKUP') === false) + { + echo '<p class="error">Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' but the item #'.$row3['id'].' contained is missing the "NOPICKUP" flag.</p>'; + continue; + } + echo ' Book #'.$row3['item_stats_id_standard'].' in container #'.$containerid.' is ok.<br/>'; + } + echo 'Action location #'.$row['id'].' "'.htmlentities($row['name']).'" specifies a valid container #'.$containerid.' and all checks are passed.<br/>'; + } + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/actionlocations/checkbooks.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-10-01 19:17:55 UTC (rev 4596) +++ www/webconsole-new/index.php 2009-10-01 20:43:28 UTC (rev 4597) @@ -203,6 +203,12 @@ almain(); deleteal(); break; + case 'checkbooks': + include('./actionlocations/almain.php'); + include('./actionlocations/checkbooks.php'); + almain(); + checkbooks(); + break; case 'npcs': include('./npcs/npcmain.php'); npcmain(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-10-07 13:05:32
|
Revision: 4622 http://planeshift.svn.sourceforge.net/planeshift/?rev=4622&view=rev Author: weltall2 Date: 2009-10-07 13:05:16 +0000 (Wed, 07 Oct 2009) Log Message: ----------- - Spells: Changed an sql query to use aoe_angle instead of aoe_range. - edit combines adds an "empty" item when NONE is selected. - Sort listpattern by ID. patches by ravna Modified Paths: -------------- www/webconsole-new/crafting/combines.php www/webconsole-new/crafting/patterns.php www/webconsole-new/rules/spells.php Modified: www/webconsole-new/crafting/combines.php =================================================================== --- www/webconsole-new/crafting/combines.php 2009-10-05 19:46:29 UTC (rev 4621) +++ www/webconsole-new/crafting/combines.php 2009-10-07 13:05:16 UTC (rev 4622) @@ -20,7 +20,7 @@ $max_qty = mysql_real_escape_string($_POST['max_qty'][$i]); $description = mysql_real_escape_string($_POST['description'][$i]); - if ($item_id != "") + if ($item_id != '0') { if ($id != 0) { @@ -127,7 +127,7 @@ $max_qty = mysql_real_escape_string($_POST['max_qty'][$i]); $description = mysql_real_escape_string($_POST['description'][$i]); - if ($item_id != "") // if this is "", the user has left this line empty because they didn't need it. + if ($item_id != '0') // if this is '0', the user has left this line empty because they didn't need it. { $query = "INSERT INTO trade_combinations (pattern_id, result_id, result_qty, item_id, min_qty, max_qty, description) VALUES ('$pattern_id', '$result_id', '$result_qty', '$item_id', '$min_qty', '$max_qty', '$description')"; mysql_query2($query); Modified: www/webconsole-new/crafting/patterns.php =================================================================== --- www/webconsole-new/crafting/patterns.php 2009-10-05 19:46:29 UTC (rev 4621) +++ www/webconsole-new/crafting/patterns.php 2009-10-07 13:05:16 UTC (rev 4622) @@ -3,7 +3,7 @@ function listpatterns(){ if (checkaccess('crafting', 'read')){ echo '<p class="header">Available Crafting Patterns</p>'; - $query = "SELECT t.id, t.pattern_name, t.description, i.name FROM trade_patterns AS t LEFT JOIN item_stats AS i ON t.designitem_id=i.id"; + $query = "SELECT t.id, t.pattern_name, t.description, i.name FROM trade_patterns AS t LEFT JOIN item_stats AS i ON t.designitem_id=i.id ORDER BY t.id"; $r = mysql_query2($query); $Alt = FALSE; echo '<table><tr><th>ID</th><th>Pattern Name</th><th>Description</th><th>Design Item</th>'; Modified: www/webconsole-new/rules/spells.php =================================================================== --- www/webconsole-new/rules/spells.php 2009-10-05 19:46:29 UTC (rev 4621) +++ www/webconsole-new/rules/spells.php 2009-10-07 13:05:16 UTC (rev 4622) @@ -96,7 +96,7 @@ $pos1 = mysql_real_escape_string($_POST['position-1']); $pos2 = mysql_real_escape_string($_POST['position-2']); $pos3 = mysql_real_escape_string($_POST['position-3']); - $query = "UPDATE spells SET name='$name', way_id='$way_id', realm='$realm', casting_effect='$casting_effect', spell_description='$spell_description', offensive='$offensive', outcome='$outcome', max_power='$max_power', npc_spell_power='$npc_spell_power', target_type='$target_type', exclude_target='$exclude_target', cast_duration='$cast_duration', range='$range', aoe_radius='$aoe_radius', aoe_range='$aoe_range', image_name='$image_name', cstr_npc_spell_category='$cstr_npc_spell_category' WHERE id='$id'"; + $query = "UPDATE spells SET name='$name', way_id='$way_id', realm='$realm', casting_effect='$casting_effect', spell_description='$spell_description', offensive='$offensive', outcome='$outcome', max_power='$max_power', npc_spell_power='$npc_spell_power', target_type='$target_type', exclude_target='$exclude_target', cast_duration='$cast_duration', range='$range', aoe_radius='$aoe_radius', aoe_angle='$aoe_angle', image_name='$image_name', cstr_npc_spell_category='$cstr_npc_spell_category' WHERE id='$id'"; $result = mysql_query2($query); if ($pos0 == ''){ $query = "DELETE FROM spell_glyphs WHERE spell_id='$id' AND position='0'"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-10-08 19:08:09
|
Revision: 4627 http://planeshift.svn.sourceforge.net/planeshift/?rev=4627&view=rev Author: weltall2 Date: 2009-10-08 19:07:53 +0000 (Thu, 08 Oct 2009) Log Message: ----------- ported "list statistics" from old wc. patch by nakem Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/other/othermain.php Added Paths: ----------- www/webconsole-new/img/bluebar2.gif www/webconsole-new/other/liststats.php Added: www/webconsole-new/img/bluebar2.gif =================================================================== (Binary files differ) Property changes on: www/webconsole-new/img/bluebar2.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-10-07 22:52:03 UTC (rev 4626) +++ www/webconsole-new/index.php 2009-10-08 19:07:53 UTC (rev 4627) @@ -657,6 +657,12 @@ othermain(); viewcharacter(); break; + case 'liststats': + include('./other/othermain.php'); + include('./other/liststats.php'); + othermain(); + liststats(); + break; case 'admin': include('./admin/adminmain.php'); adminmain(); Added: www/webconsole-new/other/liststats.php =================================================================== --- www/webconsole-new/other/liststats.php (rev 0) +++ www/webconsole-new/other/liststats.php 2009-10-08 19:07:53 UTC (rev 4627) @@ -0,0 +1,121 @@ +<?php + +function liststats() +{ + if(checkaccess('other', 'read')) + { + echo '<p class="header">Statistics</p>'; + + $groupid = (isset($_GET['groupid']) && is_numeric($_GET['groupid']) ? $_GET['groupid'] : 'nan'); + $op = (isset($_GET['op']) && ($_GET['op'] == 'add' || $_GET['op'] == 'calc') ? $_GET['op'] : 'list'); + $period = (isset($_GET['period']) && is_numeric($_GET['period']) ? $_GET['period'] : 'nan'); + + if($groupid == 'nan') + { + echo '<p class="error">You have to specify a valid Group ID!</p>'; + return; + } + + if($op == 'add') + { + if(checkaccess('other', 'create')) + { + $sql = 'SELECT COUNT(*) FROM accounts'; + $sql = "INSERT INTO wc_statistics (groupid, periodname, query) VALUES ('$groupid', '".getNextQuarterPeriod($groupid)."', '$sql')"; + mysql_query2($sql); + } + else + { + echo '<p class="error">You are not authorized to add a statistic!</p>'; + } + } + elseif($op == 'calc') + { + if(checkaccess('other', 'edit')) + { + if($period == 'nan') + { + echo '<p class="error">You have to specify a valid Period ID!</p>'; + } + else + { + $sql = "SELECT query FROM wc_statistics WHERE id = '$period'"; + $query = mysql_query2($sql); + + if(mysql_num_rows($query) < 1) + { + echo '<p class="error">No period found!</p>'; + } + else + { + $sql = mysql_fetch_array($query, MYSQL_ASSOC); + $sql = $sql['query']; + $query = mysql_query2($sql); + + $result = mysql_fetch_array($query, MYSQL_NUM); + $sql = "UPDATE wc_statistics SET result = '".mysql_real_escape_string($result[0])."' WHERE id = '$period'"; + mysql_query2($sql); + } + } + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } + } + + $sql = "SELECT id, periodname, result, query FROM wc_statistics WHERE groupid = '$groupid' ORDER BY periodname"; + $query = mysql_query2($sql); + + echo '<a href="./index.php?do=liststats&op=add&groupid='.$groupid.'">Add a new entry</a><br/>'; + echo '<table><tr>'; + + $line2 = ''; + $line3 = ''; + while($result = mysql_fetch_array($query, MYSQL_ASSOC)) + { + echo '<th>'.htmlentities($result['periodname']).'</th>'; + $line2 .= '<td>'; + if(is_numeric($result['result'])) + { + $line2 .= '<img src="img/bluebar2.gif" width="20" height="'.($result['result'] / 1).'" />'; + } + else + { + $line2 .= '<a href="./index.php?do=liststats&groupid='.$groupid.'&period='.$result['id'].'&op=calc">Calculate</a>'; + } + $line2 .= '</td>'; + $line3 .= '<td>'.(is_numeric($result['result']) ? $result['result'] : '').'</td>'; + } + + echo '</tr><tr class="color_a">'.$line2.'</tr><tr class="color_b">'.$line3.'</tr></table>'; + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} + +function getNextQuarterPeriod($groupid) { + $sql = "SELECT MAX(periodname) AS max FROM wc_statistics WHERE groupid = '$groupid' ORDER BY periodname"; + + $result = mysql_fetch_array(mysql_query2($sql), MYSQL_ASSOC); + $max = $result['max']; + + $year = substr($max, 0, 4); + $quarter = substr($max, 5, 6); + + if($quarter == 'Q4') + { + $year = $year+1; + $quarter = 'Q1'; + } + else + { + $quarter = 'Q'. (substr($quarter, 1, 2) + 1); + } + + return $year.' '.$quarter; +} + +?> \ No newline at end of file Property changes on: www/webconsole-new/other/liststats.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/other/othermain.php =================================================================== --- www/webconsole-new/other/othermain.php 2009-10-07 22:52:03 UTC (rev 4626) +++ www/webconsole-new/other/othermain.php 2009-10-08 19:07:53 UTC (rev 4627) @@ -7,7 +7,8 @@ echo '<a href="./index.php?do=listguilds">List guilds and members</a> <br/>'; echo '<a href="./index.php?do=listpetitions">List petitions</a> <br/>'; echo '<a href="./index.php?do=listaccounts">List accounts</a> <br/>'; - echo '<a href="./index.php?do=listcharacters">List characters</a <br/>'; + echo '<a href="./index.php?do=listcharacters">List characters</a> <br/>'; + echo '<a href="./index.php?do=liststats&groupid=1">List Stats</a> <br/>'; /* * These pages still need to be done! * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-10-30 21:07:06
|
Revision: 4702 http://planeshift.svn.sourceforge.net/planeshift/?rev=4702&view=rev Author: weltall2 Date: 2009-10-30 21:06:59 +0000 (Fri, 30 Oct 2009) Log Message: ----------- added trainer checking patch by nakem Modified Paths: -------------- www/webconsole-new/index.php www/webconsole-new/npcs/npcmain.php Added Paths: ----------- www/webconsole-new/npcs/checktrainers.php Modified: www/webconsole-new/index.php =================================================================== --- www/webconsole-new/index.php 2009-10-30 08:31:38 UTC (rev 4701) +++ www/webconsole-new/index.php 2009-10-30 21:06:59 UTC (rev 4702) @@ -339,6 +339,12 @@ npcmain(); checknpcloaded(); break; + case 'checktrainers': + include('./npcs/npcmain.php'); + include('./npcs/checktrainers.php'); + npcmain(); + checktrainers(); + break; case 'rules': include('./rules/rulesmain.php'); rulesmain(); Added: www/webconsole-new/npcs/checktrainers.php =================================================================== --- www/webconsole-new/npcs/checktrainers.php (rev 0) +++ www/webconsole-new/npcs/checktrainers.php 2009-10-30 21:06:59 UTC (rev 4702) @@ -0,0 +1,134 @@ +<?php + +function sum_ranges($current, $new, $npc, $names) { + $finished = false; + foreach($current as $i => $range) + { + if($range['max'] < $new['min'] || $range['min'] > $new['max']) + { // It's not in this range... + continue; + } + if($range['max'] >= $new['max'] && $range['min'] <= $new['min']) + {// Included in this range. + $range['status'] .= '<a href="./index.php?do=npc_details&sub=main&npc_id='.$npc.'"><span style="color: yellow;">'.htmlentities($names[$npc]).': Range '.$new['min'].'-'.$new['max'].' is included in '.$range['min'].'-'.$range['max'].'!</span></a><br/>'; + $current[$i] = $range; + $finished = true; + break; + } + if($range['max'] == $new['min']) + {// Extends this range. + if($range['max'] < $new['max']) + { + $range['max'] = $new['max']; + } + $range['npc'][] = $npc; + $current[$i] = $range; + $finished = true; + break; + } + else + { + $npcs = $range['npc']; + foreach($npcs as $z => $id) + { + $npcs[$z] = $names[$id]; + } + $range['status'] .= '<a href="./index.php?do=npc_details&sub=main&npc_id='.$npc.'"><span style="color: red;">'.htmlentities($names[$npc]).': Range '.$new['min'].'-'.$new['max'].' is overlapping with '.$range['min'].'-'.$range['max'].'('.implode(', ', $npcs).')!</span></a><br/>'; + $current[$i] = $range; + $finished = true; + break; + } + } + + if(!$finished) + { + $new['status'] = ''; + $new['npc'] = array($npc); + $current[] = $new; + } + return $current; +} + +function checktrainers() +{ + if(checkaccess('npc', 'read')) + { + echo '<p class="header">Check Trainers</p>'; + + $sql = 'SELECT id, name FROM characters'; + $query = mysql_query2($sql); + $names = array(); + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $names[$row['id']] = $row['name']; + } + + $sql = 'SELECT player_id, skill_id, min_rank, max_rank FROM trainer_skills ORDER BY min_rank'; + $query = mysql_query2($sql); + $skills = array(); + + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + if($row['max_rank'] < $row['min_rank']) + { + $msg = '<a href="./index.php?do=npc_details&sub=main&npc_id='.$row['player_id'].'"><span style="color: red;">'.htmlentities($names[$row['player_id']]).': cannot define higher min ('.$row['min_rank'].') than max ('.$row['max_rank'].')!</span></a><br/>'; + if(isset($skills[$row['skill_id']])) + { + $skills[$row['skill_id']][0]['status'] .= $msg; + } + else + { + $skills[$row['skill_id']] = array(array('min' => 0, 'max' => 0, 'npc' => array($row['player_id']), 'status' => $msg)); + } + unset($msg); + continue; + } + if(isset($skills[$row['skill_id']])) + { + $skills[$row['skill_id']] = sum_ranges($skills[$row['skill_id']], array('min' => $row['min_rank'], 'max' => $row['max_rank']), $row['player_id'], $names); + } + else + { + $skills[$row['skill_id']] = array(array('min' => $row['min_rank'], 'max' => $row['max_rank'], 'npc' => array($row['player_id']), 'status' => '')); + } + } + + $sql = 'SELECT skill_id, name FROM skills ORDER BY name'; + $query = mysql_query2($sql); + + echo '<table><tr><th>Skill</th><th>Range</th><th>Status</th></tr>'; + $color = 'b'; + while($row = mysql_fetch_array($query, MYSQL_ASSOC)) + { + $color = ($color == 'a' ? 'b' : 'a'); + $str = ''; + $status = ''; + if(isset($skills[$row['skill_id']])) + { + foreach($skills[$row['skill_id']] as $range) + { + $str .= ','.$range['min'].'-'.$range['max']; + $status .= $range['status']; + } + $str = substr($str, 1); + } + if(!isset($skills[$row['skill_id']]) || count($skills[$row['skill_id']]) == 0) + { + $status .= '<span style="color: yellow;">No Trainer available for this skill!</span>'; + } + elseif(count($skills[$row['skill_id']]) > 1) + { + $status .= '<span style="color: yellow;">There are gaps between the skill levels!</span>'; + } + $status = (empty($status) ? 'OK' : $status); + echo '<tr class="color_'.$color.'"><td><label title="'.$row['skill_id'].'">'.htmlentities($row['name']).'</label></td><td>'.$str.'</td><td>'.$status.'</td></tr>'; + } + echo '</table>'; + + } + else + { + echo '<p class="error">You are not authorized to use these functions</p>'; + } +} +?> \ No newline at end of file Property changes on: www/webconsole-new/npcs/checktrainers.php ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: www/webconsole-new/npcs/npcmain.php =================================================================== --- www/webconsole-new/npcs/npcmain.php 2009-10-30 08:31:38 UTC (rev 4701) +++ www/webconsole-new/npcs/npcmain.php 2009-10-30 21:06:59 UTC (rev 4702) @@ -18,6 +18,7 @@ echo '<hr/>'; echo '<a href="./index.php?do=checknpctriggers">Check NPC Triggers</a> <br/>'; echo '<a href="./index.php?do=checknpcloaded">Check NPC Loaded</a> <br/>'; + echo '<a href="./index.php?do=checktrainers">Check NPC Trainers</a> <br/>'; echo '<hr/><a href="./index.php">Return to main page.</a>'; echo '</div><div class="main">'; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |