/**
  * save update bosslist
  */
 private function UpdateBossList()
 {
     global $user;
     $bossids = request_var('bossid', array(0 => 0));
     $newbossname = utf8_normalize_nfc(request_var('bossname', array(0 => ''), true));
     $newbossnameshorts = utf8_normalize_nfc(request_var('bossnameshort', array(0 => ''), true));
     $newbosswebids = request_var('bosswebid', array(0 => ''));
     foreach ($bossids as $boss_id) {
         $iBoss = new games\Boss($this->game_id);
         $iBoss->GetBoss($boss_id);
         $iBoss->setBossWebId($newbosswebids[$boss_id]);
         $iBoss->setBossName(\htmlspecialchars_decode($newbossname[$boss_id]));
         $iBoss->setBossShortName(\htmlspecialchars_decode($newbossnameshorts[$boss_id]));
         $iBoss2 = new games\Boss($this->game_id);
         $iBoss2->GetBoss($boss_id);
         if ($iBoss != $iBoss2) {
             $iBoss->UpdateBoss($iBoss->BossId);
         }
     }
     trigger_error($user->lang['BP_BPSAVED'], E_USER_NOTICE);
 }
 public function GetAllZoneProgress($guild_id, $game_id)
 {
     global $phpbb_root_path, $config, $db, $user;
     $sql_array = array('SELECT' => 'z.id as zoneid, z.imagename,
             l.name as zonename, l.name_short as zonename_short, z.webid ', 'FROM' => array(ZONEBASE => 'z', BB_LANGUAGE => 'l'), 'WHERE' => " 1=1 AND l.attribute_id = z.id\n                    AND z.showzone = 1\n                    AND l.attribute='zone' AND l.language= '" . $config['bbdkp_lang'] . "'\n\t\t\t\t\tAND z.game= '" . $game_id . "' and z.game = l.game_id ", 'ORDER_BY' => 'z.sequence desc ');
     $bp = new BossProgress($game_id);
     $zones = array();
     $sql = $db->sql_build_query('SELECT', $sql_array);
     $result = $db->sql_query($sql);
     while ($row = $db->sql_fetchrow($result)) {
         switch ($config['bbdkp_zone_photo']) {
             case 0:
                 //sepia
                 $progrimg = $phpbb_root_path . 'images/bbdkp/gameworld/' . $game_id . '/zones/normal/' . $row['imagename'] . '.jpg';
                 $background = $phpbb_root_path . 'images/bbdkp/gameworld/' . $game_id . '/zones/photo/' . $row['imagename'] . '.jpg';
                 break;
             case 1:
                 //blackwhite
                 $progrimg = $phpbb_root_path . 'images/bbdkp/gameworld/' . $game_id . '/zones/normal/' . $row['imagename'] . '.jpg';
                 $background = $phpbb_root_path . 'images/bbdkp/gameworld/' . $game_id . '/zones/sw/' . $row['imagename'] . '.jpg';
                 break;
             case 2:
                 $progrimg = '';
                 $background = $phpbb_root_path . 'images/bbdkp/gameworld/' . $game_id . '/zones/normal/' . $row['imagename'] . '.jpg';
         }
         $gameworld = new games\Boss($game_id);
         $bossinfo = $gameworld->GetAllBosses($row['zoneid']);
         $bosses = $bp->get_bossprogress($guild_id, $row['zoneid'], $game_id);
         $bosskilled = 0;
         foreach ($bosses as $j => $boss) {
             if ($boss['bosskilled'] == "1") {
                 $bosskilled++;
             }
         }
         if (count($bossinfo) > 0) {
             $zonecomplete = $j > 0 ? round($bosskilled / count($bossinfo) * 100, 2) : 0;
         } else {
             $zonecomplete = 0;
         }
         $zonestats = $user->lang['BOSSPROGRESS'] . ' ' . $bosskilled . '/' . count($bossinfo) . ' (' . $zonecomplete . '%)';
         $zones[$row['zoneid']] = array('zoneid' => $row['zoneid'], 'zonename' => $row['zonename'], 'zonename_short' => $row['zonename_short'], 'imagename' => $row['imagename'], 'zoneimage' => $progrimg, 'zonebackground' => $background, 'zonecomplete' => $zonecomplete, 'bosses' => $bosses, 'zonestats' => $zonestats, 'zonekills' => $bosskilled, 'zonebosses' => count($bossinfo), 'webid' => $row['webid']);
     }
     return $zones;
 }