| Conditions | 12 | 
| Paths | 58 | 
| Total Lines | 87 | 
| Code Lines | 53 | 
| Lines | 6 | 
| Ratio | 6.9 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 104 | private function checkMails($keyID, $vCode, $characterID)  | 
            ||
| 105 |     { | 
            ||
| 106 | |||
| 107 |         $url = "https://api.eveonline.com/char/MailMessages.xml.aspx?keyID={$keyID}&vCode={$vCode}&characterID={$characterID}"; | 
            ||
| 108 | $data = json_decode(json_encode(simplexml_load_string(downloadData($url), 'SimpleXMLElement', LIBXML_NOCDATA)), true);  | 
            ||
| 109 | $xml = makeApiRequest($url);  | 
            ||
| 110 | $cached = $xml->cachedUntil[0];  | 
            ||
| 111 | $baseUnix = strtotime($cached);  | 
            ||
| 112 | $cacheClr = $baseUnix - 13500;  | 
            ||
| 113 | |||
| 114 | //Set timer for next key based on number of keys  | 
            ||
| 115 | $nextKey = (1900 / (int)$this->numberOfKeys) + time();  | 
            ||
| 116 |         $nextKeyTime = gmdate('Y-m-d H:i:s', $nextKey); | 
            ||
| 117 |         setPermCache('mailLastChecked', $nextKey); | 
            ||
| 118 | |||
| 119 | //Set cache timer for api key  | 
            ||
| 120 | View Code Duplication |         if ($cacheClr <= time()) { | 
            |
| 121 | $weirdTime = time() + 1830;  | 
            ||
| 122 |             setPermCache("mailLastChecked{$keyID}", $weirdTime); | 
            ||
| 123 |         } else { | 
            ||
| 124 |             setPermCache("mailLastChecked{$keyID}", $cacheClr); | 
            ||
| 125 | }  | 
            ||
| 126 | |||
| 127 | // If there is no data, just quit..  | 
            ||
| 128 |         if (empty($data['result']['rowset']['row'])) { | 
            ||
| 129 | return null;  | 
            ||
| 130 | }  | 
            ||
| 131 | $data = $data['result']['rowset']['row'];  | 
            ||
| 132 | |||
| 133 | $mails = array();  | 
            ||
| 134 |         if (isset($data['@attributes'])) { | 
            ||
| 135 | $mails[] = $data['@attributes'];  | 
            ||
| 136 | }  | 
            ||
| 137 | // Sometimes there is only ONE notification, so.. yeah..  | 
            ||
| 138 |         if (count($data) > 1) { | 
            ||
| 139 |             foreach ($data as $multiMail) { | 
            ||
| 140 | $mails[] = $multiMail['@attributes'];  | 
            ||
| 141 | }  | 
            ||
| 142 | }  | 
            ||
| 143 | |||
| 144 | usort($mails, array($this, 'sortByDate'));  | 
            ||
| 145 | |||
| 146 |         foreach ($mails as $mail) { | 
            ||
| 147 |             if (in_array($mail['toCorpOrAllianceID'], $this->toIDs) && $mail['messageID'] > $this->newestMailID) { | 
            ||
| 148 | $sentBy = $mail['senderName'];  | 
            ||
| 149 | $title = $mail['title'];  | 
            ||
| 150 | $sentDate = $mail['sentDate'];  | 
            ||
| 151 |                 $url = "https://api.eveonline.com/char/MailBodies.xml.aspx?keyID={$keyID}&vCode={$vCode}&characterID={$characterID}&ids=" . $mail['messageID']; | 
            ||
| 152 |                 $content = strip_tags(str_replace('<br>', "\n", json_decode(json_encode(simplexml_load_string(downloadData($url), 'SimpleXMLElement', LIBXML_NOCDATA)))->result->rowset->row)); | 
            ||
| 153 | |||
| 154 | // Blank Content Check  | 
            ||
| 155 |                 if ($content === '') { | 
            ||
| 156 | return null;  | 
            ||
| 157 | }  | 
            ||
| 158 | |||
| 159 | $messageSplit = str_split($content, 1850);  | 
            ||
| 160 | |||
| 161 | // Stitch the mail together  | 
            ||
| 162 | $msg = "**------------------------------------**\n";  | 
            ||
| 163 |                 $msg .= "**Mail By: **{$sentBy}\n"; | 
            ||
| 164 |                 $msg .= "**Sent Date: **{$sentDate}\n"; | 
            ||
| 165 |                 $msg .= "**Title: ** {$title}\n"; | 
            ||
| 166 | $msg .= "**Content: **\n";  | 
            ||
| 167 | $msg .= htmlspecialchars_decode(trim($messageSplit[0]), null);  | 
            ||
| 168 | $msgLong = htmlspecialchars_decode(trim($messageSplit[1]), null);  | 
            ||
| 169 | |||
| 170 | // Send the mails to the channel  | 
            ||
| 171 | $channelID = $this->toDiscordChannel;  | 
            ||
| 172 | queueMessage($msg, $channelID, $this->guild);  | 
            ||
| 173 |                 $this->logger->addInfo('Mails: New mail queued'); | 
            ||
| 174 |                 if (strlen($content) > 1850) { | 
            ||
| 175 | queueMessage($msgLong, $channelID, $this->guild);  | 
            ||
| 176 | }  | 
            ||
| 177 | |||
| 178 | // Find the maxID so we don't spit this message out ever again  | 
            ||
| 179 | $this->maxID = max($mail['messageID'], $this->maxID);  | 
            ||
| 180 | $this->newestMailID = $this->maxID; //$mail["messageID"];  | 
            ||
| 181 | $updateMaxID = true;  | 
            ||
| 182 | |||
| 183 | // set the maxID  | 
            ||
| 184 |                 if ($updateMaxID) { | 
            ||
| 185 |                     setPermCache('newestCorpMailID', $this->maxID); | 
            ||
| 186 | }  | 
            ||
| 187 | }  | 
            ||
| 188 | }  | 
            ||
| 189 |         $this->logger->addInfo("Mails: Next Mail Check At: {$nextKeyTime} EVE Time"); | 
            ||
| 190 | }  | 
            ||
| 191 | |||
| 202 | 
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.