define('MPATH', dirname(__FILE__) . "/"); $im = imagecreatefrompng(MPATH . 'default.png'); $red = imagecolorallocate($im, 255, 10, 10); $orange = imagecolorallocate($im, 150, 120, 20); $blue = imagecolorallocate($im, 0, 0, 200); $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); $grey_trans = imagecolorallocatealpha($im, 50, 50, 50, 50); $greyred_trans = imagecolorallocatealpha($im, 50, 10, 10, 50); $name = $pilot->getName(); $list = new KillList(); $list->setOrdered(true); $list->setLimit(1); $list->setPodsNoobships(false); $list->addInvolvedPilot($pilot); $kill = $list->getKill(); // corp $box = imagettfbbox(10, 0, MPATH . 'GUNSHIP2.TTF', $corp->getName()); $width = $box[4]; imagettftext($im, 10, 0, 319 - $width, 71, $black, MPATH . 'GUNSHIP2.TTF', $corp->getName()); imagettftext($im, 10, 0, 318 - $width, 70, $red, MPATH . 'GUNSHIP2.TTF', $corp->getName()); // player $box = imagettfbbox(16, 0, MPATH . 'GUNSHIP2.TTF', $name); $width = $box[4]; imagettftext($im, 16, 0, 319 - $width, 91, $black, MPATH . 'GUNSHIP2.TTF', $name); imagettftext($im, 16, 0, 318 - $width, 90, $red, MPATH . 'GUNSHIP2.TTF', $name); // time, victim, victim corp and ship killed imagettftext($im, 11, 0, 39, 16, $black, MPATH . 'spaceage.ttf', $kill->getTimeStamp()); imagettftext($im, 11, 0, 38, 15, $white, MPATH . 'spaceage.ttf', $kill->getTimeStamp()); imagettftext($im, 11, 0, 39, 26, $black, MPATH . 'spaceage.ttf', $kill->getVictimName()); imagettftext($im, 11, 0, 38, 25, $white, MPATH . 'spaceage.ttf', $kill->getVictimName());
} $html .= "<form><textarea class=killmail id=killmail name=killmail cols=\"55\" rows=\"35\" readonly=readonly>"; // Setup the lists $klist = new KillList(); $klist->setOrdered(true); $klist->addInvolvedPilot($pilot); $klist->rewind(); while ($kll_id = $klist->getKill()) { $kill = new Kill($kll_id->getID()); $html .= "\""; $html .= $kill->getRawMail(); $html .= "\",\n\n"; } // Losses $llist = new KillList(); $llist->setOrdered(true); // $list->setPodsNoobships( true ); // Not working!! $llist->addVictimPilot($pilot); $llist->rewind(); while ($lss_id = $llist->getKill()) { $html .= "\""; $loss = new Kill($lss_id->getID()); $html .= $loss->getRawMail(); $html .= "\",\n\n"; } $html .= "</textarea><br>"; $html .= "<input type=\"button\" value=\"Select All\" onClick=\"this.form.killmail.select();this.form.killmail.focus(); document.execCommand('Copy')\"></form><br>"; $html .= "Copy content of textbox to another location (eg. a textfile)"; $page->setContent($html); $page->addContext($menubox->generate()); $page->generate();
/** * * @param KillList $killList * @return string KillList as XML */ public static function killListToXML($killList) { global $idfeedversion; $qry = DBFactory::getDBQuery(); $date = gmdate('Y-m-d H:i:s'); $xml = "<?xml version='1.0' encoding='UTF-8'?>\n\t\t<eveapi version='2' edkapi='" . $idfeedversion . "'>\n\t\t</eveapi>"; $sxe = new SimpleXMLElement($xml); // Let's start making the xml. $sxe->addChild('currentTime', $date); $result = $sxe->addChild('result'); $kills = $result->addChild('rowset'); $kills->addAttribute('name', 'kills'); $kills->addAttribute('key', 'killID'); $kills->addAttribute('columns', 'killID,solarSystemID,killTime,moonID,hash,trust'); $count = 0; $timing = ''; while ($kill = $killList->getKill()) { if (config::get('km_cache_enabled') && CacheHandler::exists($kill->getID() . ".xml", 'mails')) { $cachedRow = new SimpleXMLElement(CacheHandler::get($kill->getID() . ".xml", 'mails')); IDFeed::addXMLElement($kills, $cachedRow); continue; } $count++; if ($kill->isClassified()) { continue; } //$kill = Kill::getByID($kill->getID()); $row = $kills->addChild('row'); $row->addAttribute('killID', intval($kill->getExternalID())); $row->addAttribute('killInternalID', intval($kill->getID())); $row->addAttribute('solarSystemID', $kill->getSystem()->getExternalID()); $row->addAttribute('killTime', $kill->getTimeStamp()); $row->addAttribute('moonID', '0'); $row->addAttribute('hash', bin2hex(IDFeed::getHash($kill, true))); $row->addAttribute('trust', 3); $victim = Pilot::getByID($kill->getVictimID()); $victimCorp = Corporation::getByID($kill->getVictimCorpID()); $victimAlliance = Alliance::getByID($kill->getVictimAllianceID()); $victimrow = $row->addChild('victim'); if ($victim->getName() == $kill->getVictimShipName()) { $victimrow->addAttribute('characterID', "0"); $victimrow->addAttribute('characterName', ""); } else { $victimrow->addAttribute('characterID', $victim->getExternalID()); $victimrow->addAttribute('characterName', $victim->getName()); } $victimrow->addAttribute('corporationID', $victimCorp->getExternalID()); $victimrow->addAttribute('corporationName', $victimCorp->getName()); if ($victimAlliance->isFaction()) { $victimrow->addAttribute('allianceID', 0); $victimrow->addAttribute('allianceName', ''); $victimrow->addAttribute('factionID', $victimAlliance->getFactionID()); $victimrow->addAttribute('factionName', $victimAlliance->getName()); } else { $victimrow->addAttribute('allianceID', $victimAlliance->getExternalID()); $victimrow->addAttribute('allianceName', $victimAlliance->getName()); $victimrow->addAttribute('factionID', 0); $victimrow->addAttribute('factionName', ''); } $victimrow->addAttribute('damageTaken', $kill->getDamageTaken()); $victimrow->addAttribute('shipTypeID', $kill->getVictimShipExternalID()); $involved = $row->addChild('rowset'); $involved->addAttribute('name', 'attackers'); $involved->addAttribute('columns', 'characterID,characterName,corporationID,corporationName,allianceID,allianceName,factionID,factionName,securityStatus,damageDone,finalBlow,weaponTypeID,shipTypeID'); $sql = "SELECT ind_sec_status, ind_all_id, ind_crp_id,\n\t\t\t\tind_shp_id, ind_wep_id, ind_order, ind_dmgdone, plt_id, plt_name,\n\t\t\t\tplt_externalid, crp_name, crp_external_id,\n\t\t\t\twtype.typeName AS wep_name FROM kb3_inv_detail\n\t\t\t\tJOIN kb3_pilots ON (plt_id = ind_plt_id)\n\t\t\t\tJOIN kb3_corps ON (crp_id = ind_crp_id)\n\t\t\t\tJOIN kb3_invtypes wtype ON (ind_wep_id = wtype.typeID)\n\t\t\t\tWHERE ind_kll_id = " . $kill->getID() . " ORDER BY ind_order ASC"; $qry->execute($sql); while ($inv = $qry->getRow()) { $invrow = $involved->addChild('row'); if (strpos($inv['plt_name'], '- ') !== false) { $inv['plt_name'] = substr($inv['plt_name'], strpos($inv['plt_name'], '- ') + 2); } else { if (strpos($inv['plt_name'], '#') !== false) { $name = explode("#", $inv['plt_name']); $inv['plt_name'] = $name[3]; } } if ($inv['plt_name'] == $inv['wep_name']) { $invrow->addAttribute('characterID', 0); $invrow->addAttribute('characterName', ""); $invrow->addAttribute('weaponTypeID', 0); $invrow->addAttribute('shipTypeID', $inv['ind_wep_id']); } else { $invrow->addAttribute('characterID', $inv['plt_externalid']); $invrow->addAttribute('characterName', $inv['plt_name']); $invrow->addAttribute('weaponTypeID', $inv['ind_wep_id']); $invrow->addAttribute('shipTypeID', $inv['ind_shp_id']); } $invrow->addAttribute('corporationID', $inv['crp_external_id']); $invrow->addAttribute('corporationName', $inv['crp_name']); $invAlliance = Alliance::getByID($inv['ind_all_id']); if ($invAlliance->isFaction()) { $invrow->addAttribute('allianceID', 0); $invrow->addAttribute('allianceName', ''); $invrow->addAttribute('factionID', $invAlliance->getFactionID()); $invrow->addAttribute('factionName', $invAlliance->getName()); } else { if (strcasecmp($invAlliance->getName(), "None") == 0) { $invrow->addAttribute('allianceID', 0); $invrow->addAttribute('allianceName', ""); } else { $invrow->addAttribute('allianceID', $invAlliance->getExternalID()); $invrow->addAttribute('allianceName', $invAlliance->getName()); } $invrow->addAttribute('factionID', 0); $invrow->addAttribute('factionName', ''); } $invrow->addAttribute('securityStatus', number_format($inv['ind_sec_status'], 1)); $invrow->addAttribute('damageDone', $inv['ind_dmgdone']); if ($inv['plt_id'] == $kill->getFBPilotID()) { $final = 1; } else { $final = 0; } $invrow->addAttribute('finalBlow', $final); } $sql = "SELECT * FROM kb3_items_destroyed WHERE itd_kll_id = " . $kill->getID(); $qry->execute($sql); $qry2 = DBFactory::getDBQuery(); $sql = "SELECT * FROM kb3_items_dropped WHERE itd_kll_id = " . $kill->getID(); $qry2->execute($sql); if ($qry->recordCount() || $qry2->recordCount()) { $items = $row->addChild('rowset'); $items->addAttribute('name', 'items'); $items->addAttribute('columns', 'typeID,flag,qtyDropped,qtyDestroyed, singleton'); while ($iRow = $qry->getRow()) { $itemRow = $items->addChild('row'); $itemRow->addAttribute('typeID', $iRow['itd_itm_id']); $itemRow->addAttribute('flag', $iRow['itd_itl_id']); if ($iRow['itd_itl_id'] == -1) { $itemRow->addAttribute('singleton', 2); } else { $itemRow->addAttribute('singleton', 0); } $itemRow->addAttribute('qtyDropped', 0); $itemRow->addAttribute('qtyDestroyed', $iRow['itd_quantity']); } while ($iRow = $qry2->getRow()) { $itemRow = $items->addChild('row'); $itemRow->addAttribute('typeID', $iRow['itd_itm_id']); $itemRow->addAttribute('flag', $iRow['itd_itl_id']); if ($iRow['itd_itl_id'] == -1) { $itemRow->addAttribute('singleton', 2); } else { $itemRow->addAttribute('singleton', 0); } $itemRow->addAttribute('qtyDropped', $iRow['itd_quantity']); $itemRow->addAttribute('qtyDestroyed', 0); } } if (config::get('km_cache_enabled')) { CacheHandler::put($kill->getID() . ".xml", $row->asXML(), 'mails'); } $timing .= $kill->getID() . ": " . (microtime(true) - $starttime) . "<br />"; } $sxe->addChild('cachedUntil', $date); return $sxe->asXML(); }
if ($typ == 'a') { $klist->addInvolvedAlliance(new Alliance($id)); $llist->addVictimAlliance(new Alliance($id)); } elseif ($typ == 'c') { $klist->addInvolvedCorp(new Corporation($id)); $llist->addVictimCorp(new Corporation($id)); } elseif ($typ == 'p') { $klist->addInvolvedPilot(new Pilot($id)); $llist->addVictimPilot(new Pilot($id)); } } $kills = array(); while ($kill = $klist->getKill()) { $kills[$kill->getID()] = $kill->getTimestamp(); } while ($kill = $llist->getKill()) { $kills[$kill->getID()] = $kill->getTimestamp(); } asort($kills); $cnt = 0; foreach ($kills as $id => $timestamp) { $kill = new Kill($id); $cnt++; $file = $_SESSION['admin_kill_export']['dir'] . $cnt . $_SESSION['admin_kill_export']['ext']; $fp = fopen($file, 'w'); fwrite($fp, $kill->getRawMail()); fclose($fp); } $html .= $cnt . ' mails exported<br/>'; $html .= '<a href="' . edkURI::page("admin_kill_export") . '">Ok</a>'; unset($_SESSION['admin_kill_export']);
function generate() { global $smarty; $prevdate = ""; $this->kill_list_->rewind(); $smarty->assign('daybreak', $this->daybreak_); $smarty->assign('comments_count', config::get('comments_count')); // evil hardcode-hack, don't do this at home kids ! ;) if (config::get('style_name') == 'revelations') { $smarty->assign('comment_white', '_white'); } $c = 0; $kdpage = array('a', 'kill_detail', true); $krpage = array('a', 'kill_related', true); $kills = array(); while ($kill = $this->kill_list_->getKill()) { if ($this->limit_ && $c >= $this->limit_) { break; } else { $c++; } $curdate = substr($kill->getTimeStamp(), 0, 10); if ($curdate != $prevdate) { if (count($kills) && $this->daybreak_) { $kl[] = array('kills' => $kills, 'date' => strtotime($prevdate)); $kills = array(); } $prevdate = $curdate; } $kll = array(); $kll['id'] = $kill->getID(); $kll['victimshipimage'] = $kill->getVictimShipImage(32); $kll['victimshipname'] = $kill->getVictimShipName(); $kll['victimshipclass'] = $kill->getVictimShipClassName(); $kll['victim'] = $kill->getVictimName(); $kll['victimiskloss'] = $kill->getISKLoss(); if ($kll['victimiskloss'] > 1000000000) { $kll['victimiskloss'] = sprintf("%.01fb", $kll['victimiskloss'] / 1000000000); } elseif ($kll['victimiskloss'] > 1000000) { $kll['victimiskloss'] = sprintf("%.01fm", $kll['victimiskloss'] / 1000000); } elseif ($kll['victimiskloss'] > 1000) { $kll['victimiskloss'] = sprintf("%.0fk", $kll['victimiskloss'] / 1000); } $kll['victimcorp'] = $kill->getVictimCorpName(); $kll['victimalliancename'] = $kill->getVictimAllianceName(); $kll['fb'] = $kill->getFBPilotName(); $kll['fbcorp'] = $kill->getFBCorpName(); if ($kill->isClassified() && !Session::isAdmin()) { if (config::get('killlist_regionnames')) { $kll['region'] = Language::get("classified"); } $kll['systemsecurity'] = "-"; $kll['system'] = Language::get("classified"); } else { if (config::get('killlist_regionnames')) { $kll['region'] = $kill->getSystem()->getRegionName(); } $kll['systemsecurity'] = $kill->getSolarSystemSecurity(); $kll['system'] = $kill->getSolarSystemName(); } $kll['victimid'] = $kill->getVictimID(); $kll['victimcorpid'] = $kill->getVictimCorpID(); $kll['victimallianceid'] = $kill->getVictimAllianceID(); $kll['victimshipid'] = $kill->getVictimShipExternalID(); $kll['fbid'] = $kill->getFBPilotID(); $kll['fbcorpid'] = $kill->getFBCorpID(); $kll['inv'] = 0; if (config::get('killlist_involved')) { $kll['inv'] = $kill->getInvolvedPartyCount(); } $kll['timestamp'] = $kill->getTimeStamp(); if (config::get('killlist_alogo')) { // Need to return yet another value from killlists. $all = new Alliance($kill->getVictimAllianceID()); if (strcasecmp($all->getName(), "None") != 0) { $kll['allianceexists'] = true; $kll['victimallianceicon'] = $all->getPortraitURL(32); } else { $kll['allianceexists'] = true; $crp = new Corporation($kill->getVictimCorpID()); $kll['victimallianceicon'] = $crp->getPortraitURL(32); } } if (isset($kill->_tag)) { $kll['tag'] = $kill->_tag; } $kll['fbplext'] = $kill->getFBPilotExternalID(); $kll['plext'] = $kill->getFBPilotExternalID(); if (config::get('comments_count')) { $kll['commentcount'] = $kill->countComment(); } $kll['loss'] = false; $kll['kill'] = false; if ($this->combined_) { if (config::get('cfg_allianceid') && in_array($kill->getVictimAllianceID(), config::get('cfg_allianceid'))) { $kll['loss'] = true; } else { if (config::get('cfg_corpid') && in_array($kill->getVictimCorpID(), config::get('cfg_corpid'))) { $kll['loss'] = true; } else { if (config::get('cfg_pilotid') && in_array($kill->getVictimID(), config::get('cfg_pilotid'))) { $kll['loss'] = true; } } } $kll['kill'] = !$kll['loss']; } $kll['urldetail'] = edkURI::build($kdpage, array('kll_id', $kll['id'], true)); if (!$kill->isClassified()) { $kll['urlrelated'] = edkURI::build($krpage, array('kll_id', $kll['id'], true)); } $kll['victimextid'] = $kill->getVictimExternalID(); $kll['urlvictim'] = edkURI::page('pilot_detail', $kll['victimextid'] ? $kll['victimextid'] : $kll['victimid'], $kll['victimextid'] ? 'plt_ext_id' : 'plt_id'); $kll['urlfb'] = edkURI::page('pilot_detail', $kll['fbplext'] ? $kll['fbplext'] : $kll['fbid'], $kll['fbplext'] ? 'plt_ext_id' : 'plt_id'); if ($kll['allianceexists']) { $kll['urlvictimall'] = edkURI::page('alliance_detail', $kll['victimallianceid'], 'all_id'); } $kll['urlvictimcorp'] = edkURI::page('corp_detail', $kll['victimcorpid'], 'crp_id'); $kll['urlfbcorp'] = edkURI::page('corp_detail', $kll['fbcorpid'], 'crp_id'); event::call('killlist_table_kill', $kll); $kills[] = $kll; } event::call('killlist_table_kills', $kills); if (count($kills)) { $kl[] = array('kills' => $kills, 'date' => strtotime($prevdate)); } $smarty->assignByRef('killlist', $kl); $smarty->assign('killlist_iskloss', config::get('killlist_iskloss')); return $smarty->fetch(getcwd() . "/mods/highlight_capitals/templates/killlisttable.tpl"); }
/** * gets all the dropped loot int $dest_array * @param KillList $killList * @param array $droppedLoot * @return string */ protected static function getDroppedLoot($killList, &$droppedLoot) { $killList->rewind(); $totalValue = 0; $qry = DBFactory::getDBQuery(); while ($kill = $killList->getKill()) { $query = "SELECT kb3_items_dropped.itd_itm_id AS 'ID', kb3_invtypes.typeName AS 'Name', SUM( kb3_items_dropped.itd_quantity ) AS 'Quantity', AVG( kb3_item_price.price ) AS Price\n FROM kb3_items_dropped, kb3_invtypes, kb3_item_price\n WHERE \n (\n (\n kb3_items_dropped.itd_itm_id = kb3_invtypes.typeID\n )\n AND \n (\n kb3_items_dropped.itd_itm_id = kb3_item_price.typeID\n )\n AND \n (\n kb3_items_dropped.itd_kll_id = " . $kill->getID() . ")\n )\n GROUP BY kb3_items_dropped.itd_itm_id"; $qry->execute($query); while ($row = $qry->getRow()) { if (isset($droppedLoot[$row['Name']]['Quantity']) && is_numeric($droppedLoot[$row['Name']]['Quantity'])) { $droppedLoot[$row['Name']]['Quantity'] += $row['Quantity']; } else { $droppedLoot[$row['Name']]['Quantity'] = $row['Quantity']; } if (config::get('item_values')) { $droppedLoot[$row['Name']]['TValue'] = self::formatIskValue($row['Price'] * $droppedLoot[$row['Name']]['Quantity']); $droppedLoot[$row['Name']]['Value'] = self::formatIskValue($row['Price']); $droppedLoot[$row['Name']]['RawValue'] = $row['Price']; if (!isset($droppedLoot[$row['Name']]['Icon'])) { $item = Cacheable::factory('Item', $row['ID']); $droppedLoot[$row['Name']]['Icon'] = $item->getIcon(24, false); } $totalValue += $row['Quantity'] * $row['Price']; } } } return self::formatIskValue($totalValue); }