PageRenderTime 57ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/armory/configuration/functions.php

https://bitbucket.org/chaosdeveloper/chaosweb-en
PHP | 434 lines | 420 code | 1 blank | 13 comment | 73 complexity | 59c76bfbdb77e3bb7baf736c6b69bb43 MD5 | raw file
  1. <?php
  2. function GetCharacterPortrait($CharacterLevel, $CharacterGender, $CharacterRace, $CharacterClass)
  3. {
  4. if($CharacterLevel <= 59)
  5. $CharacterPortrait = "wow-default/".$CharacterGender."-".$CharacterRace."-".$CharacterClass.".gif";
  6. else if($CharacterLevel >= 60 && $CharacterLevel <=69)
  7. $CharacterPortrait = "wow/".$CharacterGender."-".$CharacterRace."-".$CharacterClass.".gif";
  8. else if($CharacterLevel >= 70 && $CharacterLevel <=79)
  9. $CharacterPortrait = "wow-70/".$CharacterGender."-".$CharacterRace."-".$CharacterClass.".gif";
  10. else if($CharacterLevel >= 80)
  11. $CharacterPortrait = "wow-80/".$CharacterGender."-".$CharacterRace."-".$CharacterClass.".gif";
  12. return $CharacterPortrait;
  13. }
  14. function GetFaction($CharacterRace)
  15. {
  16. if($CharacterRace == 1 || $CharacterRace == 3 || $CharacterRace == 4 || $CharacterRace == 7 || $CharacterRace == 11)
  17. return "alliance";
  18. else
  19. return "horde";
  20. }
  21. function GetIcon($Type, $DisplayIconId)
  22. {
  23. if($Type == "item")
  24. {
  25. $Table = "itemdisplayinfo";
  26. $Field = "icon";
  27. }
  28. else if ($Type == "spell")
  29. {
  30. $Table = "spellicon";
  31. $Field = "name";
  32. }
  33. switchConnection("WEBSITE");
  34. $DisplayIconQuery = mysql_query("SELECT * FROM `".$Table."` WHERE `id` = '".$DisplayIconId."'");
  35. if(mysql_num_rows($DisplayIconQuery) > 0)
  36. {
  37. $Icon = mysql_fetch_assoc($DisplayIconQuery);
  38. $IconName = str_replace("/images/icons/64x64/", "images/icons/64x64/", $Icon[$Field]);
  39. $IconDisplay = "images/icons/64x64/".$IconName.".png";
  40. }
  41. else
  42. $IconDisplay = "images/icons/64x64/404.png";
  43. return $IconDisplay;
  44. }
  45. function GetChance($Chance)
  46. {
  47. if($Chance == 100)
  48. $Chance = "Guaranteed (".$Chance."%)";
  49. else if($Chance >= 51 && $Chance < 100)
  50. $Chance = "High (".$Chance."%)";
  51. else if($Chance >= 15 && $Chance < 51)
  52. $Chance = "Low (".$Chance."%)";
  53. else
  54. $Chance = "Very Low (".$Chance."%)";
  55. return $Chance;
  56. }
  57. function GetItemSource($item_id, $pvpreward = 0)
  58. {
  59. switchConnection("WORLD");
  60. if(mysql_num_rows(mysql_query("SELECT `entry` FROM `quest_template` WHERE `SrcItemId` = '".$item_id."' LIMIT 1")) == 1)
  61. $sourceText = "Quest Item";
  62. else if(mysql_num_rows(mysql_query("SELECT `entry` FROM `npc_vendor` WHERE `item` = '".$item_id."' LIMIT 1")) == 1)
  63. {
  64. if($pvpreward)
  65. $sourceText = "PVP Reward";
  66. else
  67. $sourceText = "Vendor";
  68. }
  69. else if(mysql_num_rows(mysql_query("SELECT `entry` FROM `gameobject_loot_template` WHERE `item` = '".$item_id."' LIMIT 1")) == 1)
  70. $sourceText = "Chest Drop";
  71. else if(mysql_num_rows(mysql_query("SELECT `entry` FROM `creature_loot_template` WHERE `item` = '".$item_id."' LIMIT 1")) == 1)
  72. $sourceText = "Drop";
  73. else if(mysql_num_rows(mysql_query("SELECT `entry` FROM `quest_template` WHERE `RewChoiceItemId1` = '".$item_id."' OR `RewChoiceItemId2` = '".$item_id."'
  74. OR `RewChoiceItemId3` = '".$item_id."' OR `RewChoiceItemId4` = '".$item_id."' OR `RewChoiceItemId5` = '".$item_id."' OR `RewChoiceItemId6` = '".$item_id."'
  75. OR `RewItemId1` = '".$item_id."' OR `RewItemId2` = '".$item_id."' OR `RewItemId3` = '".$item_id."' OR `RewItemId4` = '".$item_id."' LIMIT 1")) == 1)
  76. $sourceText = "Quest reward";
  77. else
  78. $sourceText = "Created";
  79. return $sourceText;
  80. }
  81. function cache_item($itemid)
  82. {
  83. global $stattype;
  84. // Check if the item is already cached //
  85. switchConnection("WEBSITE");
  86. $query = mysql_query("SELECT * FROM `cache_item` WHERE `item_id` = '".$itemid."'");
  87. if(mysql_num_rows($query) > 0)
  88. return 0;
  89. else
  90. {
  91. // Custom item
  92. require_once "tooltipmgr.inc.php";
  93. $tooltip_html = outputTooltip($itemid, array(), REALM_KEY);
  94. //Get item data
  95. switchConnection("WORLD");
  96. $itemQuery = mysql_query("SELECT * FROM `item_template` WHERE `entry` = '".$itemid."'") or die("<b>Fatal Error:</b> Error in item cache process for item ".$itemid.": ".mysql_error());
  97. $itemData = mysql_fetch_assoc($itemQuery);
  98. // Initialise stats that can't immediately be pulled from database
  99. $itemStat = array(
  100. "strength" => 0,
  101. "stamina" => 0,
  102. "agility" => 0,
  103. "intellect" => 0,
  104. "spirit" => 0,
  105. "critrating" => 0,
  106. "hitrating" => 0,
  107. "defenserating" => 0,
  108. "attackpower" => 0,
  109. "dodgerating" => 0,
  110. "parryrating" => 0,
  111. "resiliencerating" => 0,
  112. "hit" => 0,
  113. "crit" => 0,
  114. "mana" => 0,
  115. "health" => 0,
  116. "meleecritrating" => 0,
  117. "meleehitrating" => 0,
  118. "rangecritrating" => 0,
  119. "rangehitrating" => 0,
  120. "frostdmg" => 0,
  121. "firedmg" => 0,
  122. "naturedmg" => 0,
  123. "shadowdmg" => 0,
  124. "arcanedmg" => 0,
  125. "holydmg" => 0,
  126. "healing" => 0,
  127. "spelldmg" => 0,
  128. "spellhit" => 0,
  129. "spellcrit" => 0,
  130. "spelleffect" => 0,
  131. "spellhaste" => 0,
  132. "shieldblock" => 0,
  133. "blockrating" => 0,
  134. "haste" => 0,
  135. "expertise" => 0,
  136. "attackpower" => 0,
  137. "manaregen" => 0,
  138. "spellpower" => 0
  139. );
  140. for($i = 1; $i <= 10; $i ++)
  141. {
  142. if($itemData["stat_type".$i] > 0)
  143. {
  144. $statId = $itemData["stat_type".$i];
  145. $itemStat[$stattype[$statId]] += $itemData["stat_value".$i];
  146. }
  147. }
  148. $applyAuras = array(
  149. 1 => array("attackpower", 1),
  150. 9 => array("attackpower", 1),
  151. 13 => array("spelldmg", 1),
  152. 49 => array("dodgerating", 12),
  153. 52 => array("critrating", 14),
  154. 54 => array("hitrating", 12),
  155. 99 => array("attackpower", 1),
  156. 135 => array("healing", 1),
  157. 158 => array("shieldblock", 1),
  158. );
  159. switchConnection("WEBSITE");
  160. for($i = 1 ; $i <= 5 ; $i ++)
  161. {
  162. // only when effect is triggered "on equip"
  163. if(($itemData["spellid_".$i] > 0) && ($itemData["spelltrigger_".$i] == 1))
  164. {
  165. for($ii = 1 ; $ii <= 3 ; $ii ++)
  166. {
  167. //Get the spell data
  168. $sQuery = mysql_query("SELECT `id`,`effect_basepoints_".$ii."`,`effect_aura_".$ii."` FROM `spell` WHERE `id` = '".$itemData["spellid_".$i]."'") or print mysql_error();
  169. if(mysql_num_rows($sQuery) <> 0)
  170. {
  171. $sData = mysql_fetch_assoc($sQuery);
  172. if(array_key_exists($sData["effect_aura_".$ii], $applyAuras))
  173. $itemStat[$applyAuras[$sData["effect_aura_".$ii]][0]] += ($sData["effect_basepoints_".$ii]+1)*$applyAuras[$sData["effect_aura_".$ii]][1];
  174. }
  175. }
  176. }
  177. }
  178. // Hit+Crit gets added to melee and ranged hit+crit
  179. $itemStat["meleehitrating"] += $itemStat["hit"];
  180. $itemStat["rangehitrating"] += $itemStat["hit"];
  181. $itemStat["meleecritrating"] += $itemStat["crit"];
  182. $itemStat["rangecritrating"] += $itemStat["crit"];
  183. $itemStat["healing"] = $itemStat["spelldmg"]+$itemStat["healing"];
  184. $db_fields = array(
  185. "item_id" => $itemData["entry"],
  186. "item_name" => $itemData["name"],
  187. "item_quality" => $itemData["Quality"],
  188. "item_html" => $tooltip_html,
  189. "item_icon" => GetIcon("item",$itemData["displayid"]),
  190. "item_armor" => $itemData["armor"],
  191. "item_dmg_high" => ceil($itemData["dmg_max1"]),
  192. "item_dmg_low" => ceil($itemData["dmg_min1"]),
  193. "item_speed" => $itemData["delay"],
  194. "item_strength" => $itemStat["strength"],
  195. "item_stamina" => $itemStat["stamina"],
  196. "item_agility" => $itemStat["agility"],
  197. "item_intellect" => $itemStat["intellect"],
  198. "item_spirit" => $itemStat["spirit"],
  199. "item_critrating" => $itemStat["critrating"],
  200. "item_hitrating" => $itemStat["hitrating"],
  201. "item_defenserating" => $itemStat["defenserating"],
  202. "item_block" => $itemData["block"],
  203. "item_attack" => $itemStat["attackpower"],
  204. "item_dodgerating" => $itemStat["dodgerating"],
  205. "item_parryrating" => $itemStat["parryrating"],
  206. "item_resiliencerating" => $itemStat["resiliencerating"],
  207. "item_meleecritrating" => $itemStat["meleecritrating"],
  208. "item_meleehitrating" => $itemStat["meleehitrating"],
  209. "item_rangecritrating" => $itemStat["rangecritrating"],
  210. "item_rangehitrating" => $itemStat["rangehitrating"],
  211. "item_arcane_resist" => $itemData["arcane_res"],
  212. "item_fire_resist" => $itemData["fire_res"],
  213. "item_frost_resist" => $itemData["frost_res"],
  214. "item_nature_resist" => $itemData["nature_res"],
  215. "item_shadow_resist" => $itemData["shadow_res"],
  216. "item_holy_resist" => $itemData["holy_res"],
  217. "item_frostdmg" => $itemStat["frostdmg"],
  218. "item_firedmg" => $itemStat["firedmg"],
  219. "item_naturedmg" => $itemStat["naturedmg"],
  220. "item_shadowdmg" => $itemStat["shadowdmg"],
  221. "item_arcanedmg" => $itemStat["arcanedmg"],
  222. "item_holydmg" => $itemStat["holydmg"],
  223. "item_healing" => $itemStat["healing"],
  224. "item_spelldmg" => $itemStat["spelldmg"],
  225. "item_spellhit" => $itemStat["spellhit"],
  226. "item_spellcrit" => $itemStat["spellcrit"],
  227. "item_haste" => $itemStat["haste"]
  228. );
  229. return InsertCache($db_fields , 'cache_item');
  230. }
  231. }
  232. function cache_item_search($itemid)
  233. {
  234. // Check if the item is already cached //
  235. switchConnection("WEBSITE");
  236. $query = mysql_query("SELECT * FROM `cache_item_search` WHERE `item_id` = '".$itemid."'");
  237. if(mysql_num_rows($query) > 0)
  238. return 0;
  239. else
  240. {
  241. switchConnection("WORLD");
  242. $itemQuery = mysql_query("SELECT * FROM `item_template` WHERE `entry` = '".$itemid."'") or die("<b>Fatal Error:</b> Error in item cache process for item ".$itemid.": ".mysql_error());
  243. $itemData = mysql_fetch_assoc($itemQuery);
  244. if(($itemData["Flags"] & 32768) == 32768)
  245. $pvpreward = 1;
  246. else
  247. $pvpreward = 0;
  248. $db_fields = array(
  249. "item_id" => $itemData["entry"],
  250. "item_name" => $itemData["name"],
  251. "item_level" => $itemData["ItemLevel"],
  252. "item_source" => GetItemSource($itemData["entry"],$pvpreward),
  253. "item_relevance" => $itemData["Quality"]*25+$itemData["ItemLevel"]
  254. );
  255. return InsertCache($db_fields, 'cache_item_search');
  256. }
  257. }
  258. function InsertCache($db_fields, $db)
  259. {
  260. // Insert
  261. switchConnection("WEBSITE");
  262. $querystring = "INSERT INTO `".$db."` (";
  263. foreach($db_fields as $field => $value)
  264. $querystring .= "`".$field."`,";
  265. // Chop the end of $querystring off
  266. $querystring = substr($querystring, 0, -1);
  267. $querystring .= ") VALUES (";
  268. foreach($db_fields as $field => $value)
  269. $querystring .= "'".str_replace("'", "\'", $value)."',";
  270. // Chop the end off again
  271. $querystring = substr($querystring, 0, -1);
  272. $querystring .= ")";
  273. mysql_query($querystring) or die("Could not cache: ".mysql_error());
  274. return $db_fields; //return an associative array
  275. }
  276. function ShowPrice($Price, $buyorsell)
  277. {
  278. echo "<p><span>";
  279. if ($buyorsell == 1)
  280. echo "Cost";
  281. else
  282. echo "Sells for";
  283. echo ":</span>
  284. <br>
  285. <strong>";
  286. $Gold = floor($Price/10000);
  287. $Silver = floor(($Price-$Gold*10000)/100);
  288. $Copper = floor($Price-$Gold*10000-$Silver*100);
  289. if ($Gold <> 0)
  290. echo $Gold."<img class=\"pMoney\" src=\"images/icons/money-gold.gif\">";
  291. if ($Silver <> 0)
  292. echo $Silver."<img class=\"pMoney\" src=\"images/icons/money-silver.gif\">";
  293. if ($Copper <> 0)
  294. echo $Copper."<img class=\"pMoney\" src=\"images/icons/money-copper.gif\">";
  295. echo "&nbsp;</strong>
  296. </p>";
  297. }
  298. function ShowAllowable($Allowable, $classorrace)
  299. {
  300. require "infoarray.php";
  301. $AllowableString = "";
  302. if ($classorrace == 1)
  303. $AllowableTab = $AllowableClass;
  304. else
  305. $AllowableTab=$AllowableRace;
  306. foreach ($AllowableTab as $value)
  307. {
  308. if (($Allowable & $value[0]) <> 0)
  309. {
  310. if ($AllowableString <> "")
  311. $AllowableString .= ",";
  312. $AllowableString .= "&nbsp;".$value[1];
  313. }
  314. }
  315. return $AllowableString;
  316. }
  317. function GetNameFromDB($Id, $table = "skillline")
  318. {
  319. switchConnection("WEBSITE");
  320. $Query = mysql_query("SELECT `name` FROM `".$table."` WHERE `id`='".$Id."'") or die(mysql_error());
  321. $Result = mysql_fetch_assoc($Query);
  322. if (mysql_num_rows($Query) > 0)
  323. return $Result["name"];
  324. else
  325. return "";
  326. }
  327. function ValidatePageNumber($Cur_Page = 1, $TotalPages = 1)
  328. {
  329. if($Cur_Page > $TotalPages)
  330. $Cur_Page = $TotalPages;
  331. if($Cur_Page < 1)
  332. $Cur_Page = 1;
  333. return $Cur_Page;
  334. }
  335. function BuildPageButtons($Cur_Page = 1, $TotalPages = 1, $Main_Link, $File)
  336. {
  337. $Cur_Page = ValidatePageNumber($Cur_Page, $TotalPages);
  338. $PageText = "";
  339. if($Cur_Page == 1)
  340. $PageText .= "<div class = \"pnav\"><ul><li><a class=\"prev-first-off\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li><li><a class=\"prev-off\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li>";
  341. else
  342. {
  343. $ActionRewind = $Main_Link."&page=1";
  344. $ActionBack = $Main_Link."&page=".($Cur_Page - 1);
  345. $PageText .= "<div class = \"pnav\"><ul><li><a class=\"prev-first\" onclick=\"showResult('".$ActionRewind."', '".$File."')\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li><li><a class=\"prev\" onclick=\"showResult('".$ActionBack."', '".$File."')\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li>";
  346. }
  347. for($I = 0 ; $I < $TotalPages ; $I ++)
  348. {
  349. if(($I + 1) == ($Cur_Page))
  350. $PageText .= "<li><a class=\"sel\">" .($I+1)."</a></li>";
  351. else if($I <= 8 or ($I + 1) == $TotalPages)
  352. {
  353. $ActionClick = $Main_Link."&page=".($I+1);
  354. $PageText .= "<li><a class=\"p\" onclick=\"showResult('".$ActionClick."', '".$File."')\">".($I+1)."</a></li>";
  355. }
  356. }
  357. if($Cur_Page >= $TotalPages)
  358. $PageText .= "<li><a class=\"next-off\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li><li><a class=\"next-last-off\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li></ul></div>";
  359. else
  360. {
  361. $ActionFastforward = $Main_Link."&page=".$TotalPages;
  362. $ActionForward = $Main_Link."&page=".($Cur_Page+1);
  363. $PageText .= "<li><a class=\"next\" onclick=\"showResult('".$ActionForward."', '".$File."')\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li><li><a class=\"next-last\" onclick=\"showResult('".$ActionFastforward."', '".$File."')\"><img src=\"images/pixel.gif\" height=\"1\" width=\"1\" /></a></li></ul></div>";
  364. }
  365. return $PageText;
  366. }
  367. // validate input - preventing SQL injection
  368. function validate_string($string)
  369. {
  370. $string = trim($string);
  371. // strips excess whitespace
  372. $string = preg_replace('/\s\s+/', ' ', $string);
  373. if(preg_match('/[^[:alnum:]\sР-пр-џ]/', iconv('UTF-8', 'cp1251//IGNORE', $string)))
  374. $string = "";
  375. return $string;
  376. }
  377. // for searching in db
  378. function change_whitespace($string)
  379. {
  380. $string = str_replace(' ', '%', $string);
  381. return $string;
  382. }
  383. //talent counting
  384. function talentCounting($guid, $tab)
  385. {
  386. $pt = 0;
  387. switchConnection(REALM_KEY, "character");
  388. $selSpell = "SELECT `spell` FROM `character_spell` WHERE `guid` = '".$guid."' AND `disabled` = '0'";
  389. $resSpell = mysql_query($selSpell) or die (mysql_error());
  390. while($getSpell = mysql_fetch_assoc($resSpell))
  391. $spells[] = $getSpell['spell'];
  392. switchConnection("WEBSITE");
  393. $selTal = "SELECT rank1, rank2, rank3, rank4, rank5 FROM `talent` WHERE `ref_tab` = '".$tab."'";
  394. $resTal = mysql_query($selTal) or die (mysql_error());
  395. while($row = mysql_fetch_assoc($resTal))
  396. $ranks[] = $row;
  397. foreach($ranks as $key=>$val)
  398. {
  399. foreach($spells as $k=>$v)
  400. {
  401. if(in_array($v, $val))
  402. {
  403. if(array_search($v, $val) == "rank1")
  404. $pt += 1;
  405. elseif(array_search($v, $val) == "rank2")
  406. $pt += 2;
  407. elseif(array_search($v, $val) == "rank3")
  408. $pt += 3;
  409. elseif(array_search($v, $val) == "rank4")
  410. $pt += 4;
  411. elseif(array_search($v, $val) == "rank5")
  412. $pt += 5;
  413. }
  414. else
  415. $pt += 0;
  416. }
  417. }
  418. return $pt;
  419. }
  420. //get a tab from TalentTab
  421. function getTabOrBuild($class, $type, $tabnum)
  422. {
  423. if($type == "tab")
  424. $field = "id";
  425. elseif($type == "build")
  426. $field = "name";
  427. switchConnection("WEBSITE");
  428. $selTab = "SELECT ".$field." FROM `talenttab` WHERE `refmask_chrclasses` = '".pow(2,($class-1))."' AND `tab_number` = '".$tabnum."'";
  429. $resTab = mysql_query($selTab) or die (mysql_error());
  430. $getTab = mysql_fetch_assoc($resTab);
  431. return $getTab[$field];
  432. }
  433. ?>