예제 #1
0
             }
         } else {
             // no error so user didn't have '256' access
         }
     }
     $qry2 = new DBQuery();
     $sql = "UPDATE kb3_api_keys SET key_flags = {$flags} WHERE key_name='" . $qry->escape($row['key_name']) . "' AND key_id='" . $qry->escape($row['key_id']) . "' AND key_key='" . $qry->escape($row['key_key']) . "' AND key_kbsite = '" . KB_SITE . "'";
     $qry2->execute($sql);
 }
 if ($flags & KB_APIKEY_LEGACY) {
     $html .= "<td></td><td>-</td><td>-</td>";
 } else {
     $html .= "<td>";
     $chars = array();
     if (!($flags & KB_APIKEY_BADAUTH || $flags & KB_APIKEY_EXPIRED)) {
         $act = new API_Account();
         $characters = $act->fetch($row['key_id'], $row['key_key']);
         if (is_array($characters)) {
             foreach ($act->fetch($row['key_id'], $row['key_key']) as $character) {
                 $chars[] = $character["characterName"] . ", " . $character["corporationName"];
             }
         } else {
             if ($act->getError() !== null) {
                 switch ($act->getError()) {
                     case 203:
                         $flags |= KB_APIKEY_BADAUTH;
                         break;
                     case 222:
                         $flags |= KB_APIKEY_EXPIRED;
                         break;
                     case 220:
예제 #2
0
 function Import($name, $id, $key, $flags)
 {
     $output = "";
     // Skip bad keys
     if ($flags & KB_APIKEY_BADAUTH || $flags & KB_APIKEY_EXPIRED || $flags & KB_APIKEY_BADCORP) {
         return;
         // skip bad keys
     }
     // also skip legacy keys now
     if ($flags & KB_APIKEY_LEGACY) {
         return;
     }
     // reduces strain on DB
     if (function_exists("set_time_limit") && !ini_get('safe_mode')) {
         set_time_limit(0);
     }
     $lastdatakillid = 1;
     $currentdatakillid = 0;
     $logsource = "New XML";
     // Load new XML
     $output = "<i>Downloading latest XML file for {$name}</i><br><br>";
     $accts = new API_Account();
     $characters = $accts->fetch($id, $key);
     $posted = array();
     $skipped = array();
     foreach ($characters as $char) {
         $output .= "Processing " . $char['characterName'] . "<br><br>";
         $currentkill = 0;
         $lastkill = -1;
         while ($lastkill != $currentkill) {
             $lastkill = $currentkill;
             $args = array("characterID" => $char['characterID']);
             if ($lastkill) {
                 $args["beforeKillID"] = $lastkill;
             }
             if ($flags & KB_APIKEY_CORP) {
                 $killLog = $this->CallAPI("corp", "KillLog", $args, $id, $key);
             } else {
                 if ($flags & KB_APIKEY_CHAR) {
                     $killLog = $this->CallAPI("char", "KillLog", $args, $id, $key);
                 } else {
                     $output .= "<div class='block-header2'>Key does not have access to KillLog</div>";
                     break;
                 }
             }
             if ($this->getError() === null) {
                 // Get oldest kill
                 $currentkill = 0;
                 $sxe = simplexml_load_string($this->pheal->xml);
                 foreach ($sxe->result->rowset->row as $row) {
                     if ($currentkill < (int) $row['killID']) {
                         $currentkill = (int) $row['killID'];
                     }
                 }
             }
             if ($this->getError() !== null) {
                 if ($this->getError() == 120 && $this->pheal->xml) {
                     // Check if we just need to skip back a few kills
                     // i.e. first page of kills is already fetched.
                     $pos = strpos($this->pheal->xml, "Expected beforeKillID [");
                     if ($pos) {
                         $pos += 23;
                         $pos2 = strpos($this->pheal->xml, "]", $pos);
                         $currentkill = (int) substr($this->pheal->xml, $pos, $pos2 - $pos);
                     }
                 } else {
                     if (!$posted && !$skipped) {
                         // Something went wrong and no kills were found.
                         $qry = DBFactory::getDBQuery();
                         $logtype = "Cron Job";
                         $qry->execute("insert into kb3_apilog\tvalues( '" . KB_SITE . "', '" . addslashes($name) . "'," . "0, " . "0, " . "0, " . "0, " . "0, '" . "Error','" . "Cron Job','" . $this->getError() . "', " . "UTC_TIMESTAMP() )");
                         $output .= "<div class='block-header2'>" . $this->getMessage() . "</div>";
                         break;
                     } else {
                         // We found kills!
                         $qry = DBFactory::getDBQuery();
                         $logtype = "Cron Job";
                         $qry->execute("insert into kb3_apilog values( '" . KB_SITE . "', '" . addslashes($name) . "'," . count($posted) . "," . "0 ," . count($skipped) . "," . "0 ," . (count($posted) + count($skipped)) . ",'" . "New XML','" . "Cron Job','" . ($this->getError() == 119 ? 0 : $this->getError()) . "', " . "UTC_TIMESTAMP() )");
                         break;
                     }
                 }
             }
             $feedfetch = new IDFeed();
             $feedfetch->setXML($this->pheal->xml);
             $feedfetch->setLogName("API");
             $feedfetch->read();
             $posted = array_merge($posted, $feedfetch->getPosted());
             $skipped = array_merge($skipped, $feedfetch->getSkipped());
             $output .= "<div class='block-header2'>" . count($posted) . " kill" . (count($posted) == 1 ? "" : "s") . " posted, " . count($skipped) . " skipped from feed: " . $id . ".<br></div>";
             if (count($posted)) {
                 $output .= "<div class='block-header2'>Posted</div>\n";
                 foreach ($posted as $killid) {
                     $output .= "<div><a href='" . edkURI::page('kill_detail', $killid[2], 'kll_id') . "'>Kill " . $killid[0] . "</a></div>";
                 }
             }
         }
     }
     return $output;
 }