PageRenderTime 54ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/assessment/inc/update_hook.php

http://wowroster-addons.googlecode.com/
PHP | 486 lines | 371 code | 80 blank | 35 comment | 8 complexity | cfd619216cf72f37693780360ea2ac80 MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. /**
  3. * WoWRoster.net WoWRoster
  4. *
  5. * LICENSE: Licensed under the Creative Commons
  6. * "Attribution-NonCommercial-ShareAlike 2.5" license
  7. *
  8. * @copyright 2002-2007 WoWRoster.net
  9. * @license http://creativecommons.org/licenses/by-nc-sa/2.5 Creative Commons "Attribution-NonCommercial-ShareAlike 2.5"
  10. * @version SVN: $Id: update_hook.php 285 2007-10-29 00:55:45Z poetter $
  11. * @link http://www.wowroster.net
  12. * @package Assessment
  13. * @subpackage UpdateHook
  14. */
  15. if ( !defined('IN_ROSTER') )
  16. {
  17. exit('Detected invalid access to this file!');
  18. }
  19. /**
  20. * Addon Update class
  21. * This MUST be the same name as the addon basename
  22. *
  23. * @package Assessment
  24. * @subpackage UpdateHook
  25. */
  26. class assessmentUpdate
  27. {
  28. var $messages = ''; // Update messages
  29. var $files = array();
  30. /**
  31. * Class instantiation
  32. * The name of this function MUST be the same name as the class name
  33. *
  34. * @param array $data | Addon data
  35. * @return recipe
  36. */
  37. function assessmentUpdate( $data )
  38. {
  39. $this->data = $data;
  40. $this->files[] = 'assessment';
  41. }
  42. /**
  43. * Standalone Update Hook
  44. *
  45. * @return bool
  46. */
  47. function update( )
  48. {
  49. global $roster, $update;
  50. $this->usage = memory_get_usage();
  51. $this->last_usage = memory_get_usage();
  52. ini_set('memory_limit', '64M');
  53. print "limit: ". ini_get('memory_limit'). '<br />';
  54. print "start: ". $this->usage. '<br />';
  55. $this->reset_messages();
  56. $fightData =& $update->uploadData['assessment']['AssessmentDBPerCharacter']['global']['fightData'];
  57. $this->mem( 'datacopy');
  58. $this->messages .= '<ul>';
  59. foreach ( $fightData as $fightName => &$data ) {
  60. if ( preg_match( "/^\d+$/", $fightName ) ) {
  61. continue;
  62. }
  63. $this->_updateEvent( $fightName, $data );
  64. }
  65. $this->messages .= '</ul><br />';
  66. return true;
  67. }
  68. function mem ( $tag ) {
  69. print "$tag: ". ( memory_get_usage() - $this->usage ). ' gain: '. (memory_get_usage() - $this->last_usage).'<br />';
  70. $this->last_usage = memory_get_usage();
  71. }
  72. function _updateEvent( &$name = false, &$data = false ) {
  73. global $roster;
  74. require_once (ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc'. DIR_SEP. 'assessment.event.class.php');
  75. $this->mem( $name);
  76. $assEvent = new AssessmentEvent;
  77. $assEvent->get( 0, $name );
  78. $assEvent->set();
  79. $this->messages .= '<li>'. $name;
  80. $this->messages .= '<ul>';
  81. foreach ( $data as $detailName => &$detailData ) {
  82. $this->_updateEventDetail( $assEvent->id, $detailName, $detailData );
  83. }
  84. unset ($assEvent, $name, $data);
  85. $this->messages .= '</ul></li>';
  86. }
  87. function _updateEventDetail( &$eventId = 0, &$name = false, &$data = false ) {
  88. global $roster;
  89. $classFile = ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.'. strtolower($name). '.class.php';
  90. $this->mem( $name);
  91. switch ( $name ) {
  92. case 'gain':
  93. require_once ($classFile);
  94. $this->_updateEventGain( $eventId, $name, $data );
  95. break;
  96. case 'deaths':
  97. require_once ($classFile);
  98. $this->_updateEventDeaths( $eventId, $name, $data );
  99. break;
  100. case 'activity':
  101. require_once ($classFile);
  102. $this->_updateEventActivity( $eventId, $name, $data );
  103. break;
  104. case 'healingDone':
  105. require_once ($classFile);
  106. $this->_updateEventHealingDone( $eventId, $name, $data );
  107. break;
  108. case 'damageTaken':
  109. require_once ($classFile);
  110. $this->_updateEventDamageTaken( $eventId, $name, $data );
  111. break;
  112. case 'dispel':
  113. require_once ($classFile);
  114. $this->_updateEventDispel( $eventId, $name, $data );
  115. break;
  116. case 'healingTaken':
  117. require_once ($classFile);
  118. $this->_updateEventHealingTaken( $eventId, $name, $data );
  119. break;
  120. case 'aura':
  121. require_once ($classFile);
  122. $this->_updateEventAura( $eventId, $name, $data );
  123. break;
  124. case 'combatTime':
  125. require_once ($classFile);
  126. $this->_updateEventCombatTime( $eventId, $name, $data );
  127. break;
  128. case 'damageDealt':
  129. require_once ($classFile);
  130. $this->_updateEventDamageDealt( $eventId, $name, $data );
  131. break;
  132. case 'dataUpdateTimes':
  133. require_once ($classFile);
  134. $this->_updateEventDataUpdateTimes( $eventId, $name, $data );
  135. break;
  136. case 'groupMembers':
  137. require_once ($classFile);
  138. $this->_updateEventGroupMembers( $eventId, $name, $data );
  139. break;
  140. case 'interrupt':
  141. require_once ($classFile);
  142. $this->_updateEventInterrupt( $eventId, $name, $data );
  143. break;
  144. case 'crowdControlBreak':
  145. require_once ($classFile);
  146. $this->_updateEventCrowdControlBreak( $eventId, $name, $data );
  147. break;
  148. default:
  149. break;
  150. }
  151. $this->messages .= '<li>'. $name. '</li>';
  152. unset ($name, $data);
  153. }
  154. function _updateEventCrowdControlBreak( &$eventId = 0, &$name = false, &$data = false ) {
  155. global $roster;
  156. foreach ( $data as $memberName => &$memberData ) {
  157. $eventBreak = new AssessmentCrowdControlBreak;
  158. $eventBreak->get( $eventId, $memberName, 'sum' );
  159. $eventBreak->set( $memberData );
  160. if ( isset($memberData['detailList'])) {
  161. $i = 1;
  162. foreach ( $memberData['detailList'] as &$detailData ) {
  163. $eventBreakDetail = new AssessmentCrowdControlBreak;
  164. $eventBreakDetail->get( $eventId, $memberName, $i++ );
  165. $eventBreakDetail->set( $detailData );
  166. unset($eventBreakDetail);
  167. }
  168. unset($eventBreak);
  169. }
  170. }
  171. unset($eventId, $name, $data);
  172. }
  173. function _updateEventInterrupt( &$eventId = 0, &$name = false, &$data = false ) {
  174. global $roster;
  175. foreach ( $data as $memberName => &$memberData ) {
  176. $eventInterrupt = new AssessmentInterrupt;
  177. $eventInterrupt->get( $eventId, $memberName, 'sum' );
  178. $eventInterrupt->set( $memberData );
  179. $i = 1;
  180. foreach ( $memberData['detailList'] as &$detailData ) {
  181. $eventInterruptDetail = new AssessmentInterrupt;
  182. $eventInterruptDetail->get( $eventId, $memberName, $i++ );
  183. $eventInterruptDetail->set( $detailData );
  184. unset($eventInterruptDetail);
  185. }
  186. unset($eventInterrupt);
  187. }
  188. unset($eventId, $name, $data);
  189. }
  190. function _updateEventGroupMembers( &$eventId = 0, &$name = false, &$data = false ) {
  191. global $roster;
  192. foreach ( $data as $memberName => &$memberData ) {
  193. $eventGroupMember = new AssessmentGroupMembers;
  194. $eventGroupMember->get( $eventId, $memberName );
  195. $tmp = array( 'memberClass' => $memberData );
  196. $eventGroupMember->set( $tmp );
  197. unset($eventGroupMember, $tmp);
  198. }
  199. unset($eventId, $name, $data);
  200. }
  201. function _updateEventDataUpdateTimes( &$eventId = 0, &$name = false, &$data = false ) {
  202. global $roster;
  203. $eventDataUpdateTime = new AssessmentDataUpdateTimes;
  204. $eventDataUpdateTime->get( $eventId );
  205. $eventDataUpdateTime->set( $data );
  206. unset($eventDataUpdateTime, $data);
  207. }
  208. function _updateEventDamageDealt( &$eventId = 0, &$name = false, &$data = false ) {
  209. global $roster;
  210. foreach ( $data as $memberName => &$damages ) {
  211. $eventDamage = new AssessmentDamageDealt;
  212. $eventDamage->get( 0, $eventId, $memberName );
  213. $eventDamage->set( $damages );
  214. require_once( ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.damagedealtattackdetails.class.php' );
  215. foreach ( $damages['attackDetails'] as $abilityName => &$abilityData ) {
  216. $eventDamageDetail = new AssessmentDamageDealtAttackDetails;
  217. $eventDamageDetail->get( $eventDamage->id, $abilityName, 'sum');
  218. $eventDamageDetail->set( $abilityData );
  219. foreach ( $abilityData['hitDetails'] as $hitDetail => &$hitDetailData ) {
  220. $eventDamageHitDetail = new AssessmentDamageDealtAttackDetails;
  221. $eventDamageHitDetail->get( $eventDamage->id, $abilityName, $hitDetail );
  222. $eventDamageHitDetail->set( $hitDetailData );
  223. unset($eventDamageHitDetail);
  224. }
  225. unset($eventDamageDetail);
  226. }
  227. require_once( ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.damagedealtdamagetypedetails.class.php' );
  228. foreach ( $damages['damageTypeDetails'] as $typeName => &$typeData ) {
  229. $eventDamageDetail = new AssessmentDamageDealtDamageTypeDetails;
  230. $eventDamageDetail->get( $eventDamage->id, $typeName );
  231. $eventDamageDetail->set( $typeData );
  232. unset($eventDamageDetail);
  233. }
  234. unset($eventDamage);
  235. }
  236. unset($eventId, $name, $data);
  237. }
  238. function _updateEventCombatTime( &$eventId = 0, &$name = false, &$data = false ) {
  239. global $roster;
  240. $eventCombatTime = new AssessmentCombatTime;
  241. $eventCombatTime->get( $eventId );
  242. $eventCombatTime->set( $data );
  243. }
  244. function _updateEventAura( &$eventId = 0, &$name = false, &$data = false ) {
  245. global $roster;
  246. foreach ( $data as $memberName => &$auras ) {
  247. $eventAura = new AssessmentAura;
  248. $eventAura->get( $eventId, $memberName, 'sum' );
  249. $eventAura->set( $auras['count'] );
  250. foreach ( $auras['auraList'] as $auraName => &$auraData ) {
  251. $eventAuraDetail = new AssessmentAura;
  252. $eventAuraDetail->get( $eventId, $memberName, $auraName );
  253. $eventAuraDetail->set( $auraData );
  254. unset($eventAuraDetail);
  255. }
  256. unset($eventAura);
  257. }
  258. unset($eventId, $name, $data);
  259. }
  260. function _updateEventHealingTaken( &$eventId = 0, &$name = false, &$data = false ) {
  261. $this->_updateEventHealingX( $eventId, $name, $data, 'AssessmentHealingTaken');
  262. }
  263. function _updateEventDispel( &$eventId = 0, &$name = false, &$data = false ) {
  264. global $roster;
  265. foreach ( $data as $memberName => &$dispels ) {
  266. $eventDispel = new AssessmentDispel;
  267. $eventDispel->get( $eventId, $memberName );
  268. $eventDispel->set( $dispels );
  269. unset($eventDispel);
  270. }
  271. unset($eventId, $name, $data);
  272. }
  273. function _updateEventDamageTaken( &$eventId = 0, &$name = false, &$data = false ) {
  274. global $roster;
  275. foreach ( $data as $memberName => &$damages ) {
  276. $eventDamage = new AssessmentDamageTaken;
  277. $eventDamage->get( 0, $eventId, $memberName );
  278. $eventDamage->set( $damages );
  279. require_once( ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.damagetakenattackdetails.class.php' );
  280. foreach ( $damages['attackDetails'] as $abilityName => &$abilityData ) {
  281. $eventDamageDetail = new AssessmentDamageTakenAttackDetails;
  282. $eventDamageDetail->get( $eventDamage->id, $abilityName, 'sum');
  283. $eventDamageDetail->set( $abilityData );
  284. foreach ( $abilityData['hitDetails'] as $hitDetail => &$hitDetailData ) {
  285. $eventDamageHitDetail = new AssessmentDamageTakenAttackDetails;
  286. $eventDamageHitDetail->get( $eventDamage->id, $abilityName, $hitDetail );
  287. $eventDamageHitDetail->set( $hitDetailData );
  288. unset($eventDamageHitDetail);
  289. }
  290. unset($eventDamageDetail);
  291. }
  292. require_once( ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.damagetakendamagetypedetails.class.php' );
  293. foreach ( $damages['damageTypeDetails'] as $typeName => &$typeData ) {
  294. $eventDamageDetail = new AssessmentDamageTakenDamageTypeDetails;
  295. $eventDamageDetail->get( $eventDamage->id, $typeName );
  296. $eventDamageDetail->set( $typeData );
  297. unset($eventDamageDetail);
  298. }
  299. unset($eventDamage);
  300. }
  301. unset($eventId, $name, $data);
  302. }
  303. function _updateEventHealingDone( &$eventId = 0, &$name = false, &$data = false ) {
  304. $this->_updateEventHealingX( $eventId, $name, $data, 'AssessmentHealingDone');
  305. unset($eventId, $name, $data);
  306. }
  307. function _updateEventHealingX( &$eventId = 0, &$name = false, &$data = false, $class = false ) {
  308. global $roster;
  309. foreach ( $data as $memberName => &$healings ) {
  310. $eventHealing = new $class;
  311. $eventHealing->get( $eventId, $memberName, 'sum', 'sum' );
  312. $eventHealing->set( $healings );
  313. foreach ( $healings['healDetails'] as $abilityName => &$abilityDetails ) {
  314. $eventHealingDetail = new $class;
  315. $eventHealingDetail->get( $eventId, $memberName, $abilityName, 'abilitySum');
  316. $eventHealingDetail->set( $abilityDetails );
  317. unset($eventHealingDetail);
  318. if ( isset( $abilityDetails['hitDetails']['Heal'] ) ) {
  319. $eventHealingDetail = new $class;
  320. $eventHealingDetail->get( $eventId, $memberName, $abilityName, 'heal');
  321. $eventHealingDetail->set( $abilityDetails['hitDetails']['Heal'] );
  322. unset($eventHealingDetail);
  323. }
  324. if ( isset( $abilityDetails['hitDetails']['Critical Heal'] ) ) {
  325. $eventHealingDetail = new $class;
  326. $eventHealingDetail->get( $eventId, $memberName, $abilityName, 'criticalHeal');
  327. $eventHealingDetail->set( $abilityDetails['hitDetails']['Critical Heal'] );
  328. unset($eventHealingDetail);
  329. }
  330. }
  331. unset($eventHealing);
  332. }
  333. unset($eventId, $name, $data);
  334. }
  335. function _updateEventActivity( &$eventId = 0, &$name = false, &$data = false ) {
  336. global $roster;
  337. foreach ( $data as $memberName => &$activitys ) {
  338. $eventActivity = new AssessmentActivity;
  339. $eventActivity->get( $eventId, $memberName );
  340. $eventActivity->set( $activitys );
  341. unset($eventActivity);
  342. }
  343. unset($eventId, $name, $data);
  344. }
  345. function _updateEventDeaths( &$eventId = 0, &$name = false, &$data = false ) {
  346. global $roster;
  347. foreach ( $data as $memberName => &$deaths ) {
  348. $eventDeaths = new AssessmentDeaths;
  349. $eventDeaths->get( 0, $eventId, $memberName, 'sum' );
  350. $eventDeaths->set( $deaths );
  351. if ( isset($deaths['deathTimes']) ) {
  352. $i = 1;
  353. foreach ( $deaths['deathTimes'] as &$deathTime ) {
  354. $eventDeathsDetail = new AssessmentDeaths;
  355. $eventDeathsDetail->get( 0, $eventId, $memberName, $i++ );
  356. $tmp = array( 'deathTime' => $deathTime );
  357. $eventDeathsDetail->set( $tmp );
  358. unset($eventDeathsDetail);
  359. }
  360. }
  361. if ( isset($deaths['deathList'])) {
  362. $i = 1;
  363. foreach ( $deaths['deathList'] as &$deathDetails ) {
  364. $eventDeathsDetail = new AssessmentDeaths;
  365. $eventDeathsDetail->get( 0, $eventId, $memberName, $i );
  366. $eventDeathsDetail->set( $deathDetails );
  367. $j = 1;
  368. foreach ( $deathDetails['recentEventList'] as &$eventList ) {
  369. require_once( ROSTER_BASE. 'addons'. DIR_SEP. 'assessment'. DIR_SEP. 'inc/assessment.deathseventlist.class.php' );
  370. $deathEventList = new AssessmentDeathsEventList;
  371. $deathEventList->get( $eventId, $i, $j++ );
  372. $deathEventList->set( $eventList );
  373. unset($deathEventList);
  374. }
  375. $i++;
  376. unset($eventDeathsDetail);
  377. }
  378. }
  379. unset($eventDeaths);
  380. }
  381. unset($eventId, $name, $data);
  382. }
  383. function _updateEventGain( &$eventId = 0, &$name = false, &$data = false ) {
  384. global $roster;
  385. foreach ( $data as $memberName => &$gains ) {
  386. $eventGain = new AssessmentGain;
  387. $eventGain->get( $eventId, $memberName, 'sum' );
  388. $eventGain->set( $gains );
  389. foreach ( $gains['gainDetails'] as $gainDetailName => &$gainDetailData ) {
  390. $eventGainDetail = new AssessmentGain;
  391. $eventGainDetail->get( $eventId, $memberName, $gainDetailName);
  392. $eventGainDetail->set( $gainDetailData );
  393. unset($eventGainDetail);
  394. }
  395. unset($eventGain);
  396. }
  397. unset($eventId, $name, $data);
  398. }
  399. /**
  400. * Resets addon messages
  401. */
  402. function reset_messages()
  403. {
  404. $this->messages = 'Assessment:';
  405. }
  406. }