public static function GetNormalRaidsManyBosses($CharacterGUID, $Expansion, $Instance, $Bosses, $Criteria, $Heroic) { global $FCCore; $ParametersIDs = ':id_' . implode(',:id_', array_keys($Criteria)); $IDsAndValues = array_combine(explode(",", $ParametersIDs), $Criteria); $IDsAndValues = String::UnshiftAssoc($IDsAndValues, ':guid', $CharacterGUID); $HTML = ""; $RaidData = array(); $CharactersSQL = "SELECT cap.*, fa.value1 as bossid FROM character_achievement_progress cap LEFT JOIN " . $FCCore['Database']['database'] . ".freedomcore_achievementcriteria fa ON cap.criteria = fa.id WHERE guid = :guid AND criteria IN (" . $ParametersIDs . ")"; $CharactersData = Characters::$CharConnection->prepare($CharactersSQL); $CharactersData->execute($IDsAndValues); $Result = $CharactersData->fetchAll(PDO::FETCH_ASSOC); $BossKills = 0; if (empty($Result)) { $AchievementsPerBoss = count($Criteria) / count($Bosses); $BossID = 0; $CriteriaID = 0; $ArrayIndex = 0; $RaidData['guid'] = $CharacterGUID; $RaidData['expansion'] = $Expansion; $RaidData['instance'] = $Instance; foreach ($Bosses as $Boss) { $BossCriteria = array_slice($Criteria, 0, 2); if (is_numeric($Boss)) { if (strlen((string) $Boss) == 6) { $RaidData['npcs'][$ArrayIndex] = Raids::GetObjectInfo($Boss); } else { $RaidData['npcs'][$ArrayIndex] = Raids::GetNPCInfo($Boss); } } else { $RaidData['npcs'][$ArrayIndex] = array('name' => $Boss); } $RaidData['npcs'][$ArrayIndex]['counter'] = 0; unset($Criteria[0]); unset($Criteria[1]); $Criteria = array_values($Criteria); $CriteriaID++; $ArrayIndex++; } $HTML .= Raids::CreateSimpleHTML($Instance, 'incomplete') . PHP_EOL; } else { $BossesInInstance = count($Bosses); $DataForBosses = count($Result); $RaidData['guid'] = $CharacterGUID; $RaidData['expansion'] = $Expansion; $RaidData['instance'] = $Instance; $BossID = 0; foreach ($Bosses as $Boss) { $BossKills = 0; foreach ($Result as $Data) { if ($Boss == $Data['bossid']) { $BossCriteriaPortion = array_slice($Criteria, $BossID * 2, 2); if (in_array($Data['criteria'], $BossCriteriaPortion)) { $BossKills = $BossKills + $Data['counter']; if (is_numeric($Boss)) { if (strlen((string) $Boss) == 6) { $RaidData['npcs'][$BossID] = Raids::GetObjectInfo($Boss); } else { $RaidData['npcs'][$BossID] = Raids::GetNPCInfo($Boss); } } else { $RaidData['npcs'][$BossID] = array('name' => $Boss); } $RaidData['npcs'][$BossID]['counter'] = $BossKills; } } else { if (is_numeric($Boss)) { if (strlen((string) $Boss) == 6) { $RaidData['npcs'][$BossID] = Raids::GetObjectInfo($Boss); } else { $RaidData['npcs'][$BossID] = Raids::GetNPCInfo($Boss); } } else { $RaidData['npcs'][$BossID] = array('name' => $Boss); } $RaidData['npcs'][$BossID]['counter'] = 0; } } $BossID++; } if ($BossesInInstance == $DataForBosses) { $HTML .= Raids::CreateSimpleHTML($Instance, 'completed') . PHP_EOL; } else { $HTML .= Raids::CreateSimpleHTML($Instance, 'in-progress') . PHP_EOL; } } return array('data' => $RaidData, 'html' => $HTML); }