root/branch/rev3/common/includes/class.thumb.php @ 244

Revision 244, 6.2 KB (checked in by exi, 13 years ago)

Removed rig0rs mail on request.
New option in Mapoptions to cache region maps.
Added several NPC corp images.
Improved corp image handling, you can now store the logo as <corpname>.jpg in img/corps/.
Killmails now handle the Killmail Mk1.5 format.
A reinforced killboard will now cache all generated maps regardless of their type.
Page kill_detail will now show damage and dropped items.
Upgraded category icons on kill_detail to ones with alpha channel.

Line 
1<?php
2
3class thumb
4{
5    function thumb($str_id, $size, $type = 'pilot')
6    {
7        $this->_id = $str_id;
8        $this->_size = $size;
9        $this->_type = $type;
10        $this->_encoding = 'jpeg';
11
12        $this->validate();
13    }
14
15    function display()
16    {
17        if (!$this->isCached())
18        {
19            if (!$this->genCache())
20            {
21                return false;
22            }
23        }
24
25        if (headers_sent())
26        {
27            echo 'Error occured.<br/>';
28            return false;
29        }
30        if ($this->_encoding == 'jpeg')
31        {
32            header("Content-Type: image/jpeg");
33            readfile($this->_thumb);
34        }
35        elseif ($this->_encoding == 'png')
36        {
37            header("Content-Type: image/png");
38            readfile($this->_thumb);
39        }
40    }
41
42    function validate()
43    {
44        if (!$this->_size)
45        {
46            $this->_size = 32;
47        }
48        switch ($this->_type)
49        {
50            case 'corp':
51                $this->_id = preg_replace('/[^a-z0-9]/', '', $this->_id);
52                break;
53            case 'alliance':
54                $this->_id = preg_replace('/[^a-zA-Z0-9]/', '', $this->_id);
55                if (!strlen($this->_id))
56                {
57                    $this->_id = 'default';
58                }
59                break;
60            default:
61                $this->_type = 'pilot';
62                $this->_id = intval($this->_id);
63        }
64    }
65
66    function isCached()
67    {
68        switch ($this->_type)
69        {
70            case 'pilot':
71                $this->_thumb = 'cache/portraits/'.$this->_id.'_'.$this->_size.'.jpg';
72                break;
73            case 'corp':
74                $this->_thumb = 'cache/corps/'.$this->_id.'_'.$this->_size.'.jpg';
75                break;
76            case 'alliance':
77                $this->_thumb = 'cache/corps/all'.$this->_id.'_'.$this->_size.'.png';
78                break;
79        }
80
81        if (file_exists($this->_thumb))
82        {
83            return true;
84        }
85    }
86
87    function genCache()
88    {
89        switch ($this->_type)
90        {
91            case 'pilot':
92                $this->genPilot();
93                break;
94            case 'corp':
95                $this->genCorp();
96                break;
97            case 'alliance':
98                $this->genAlliance();
99                break;
100        }
101        return true;
102    }
103
104    function genPilot()
105    {
106        if (file_exists('cache/portraits/'.$this->_id.'_256.jpg'))
107        {
108            $img = imagecreatefromjpeg('cache/portraits/'.$this->_id.'_256.jpg');
109        }
110        // 20070911 - Gate: Support EVE/Capture/Portraits images
111        elseif (file_exists('cache/portraits/'.$this->_id.'.jpg'))
112        {
113                        $img = imagecreatefromjpeg('cache/portraits/'.$this->_id.'.jpg');
114                        $newimg = imagecreatetruecolor($this->_size, $this->_size);
115                        imagecopyresampled($newimg, $img, 0, 0, 0, 0, $this->_size, $this->_size, 1024, 1024);
116                        imagejpeg($newimg, $this->_thumb, 90);
117                        imagedestroy($newimg);
118
119                        return;
120        }
121        else
122        {
123            if ($this->_id)
124            {
125                // check for a valid, known external id
126                $qry = new DBQuery();
127                $qry->execute('SELECT plt_externalid FROM kb3_pilots WHERE plt_externalid = '.$this->_id.' LIMIT 1');
128                $row = $qry->getRow();
129                if (!$id = $row['plt_externalid'])
130                {
131                    // there is no such id so set it to 0
132                    $this->_id = 0;
133                    $this->_thumb = 'img/portrait_0_'.$this->_size.'.jpg';
134                    return;
135                }
136            }
137
138            @ini_set('default_socket_timeout', 5);
139            $file = @file_get_contents('http://img.eve.is/serv.asp?s=256&c='.$this->_id);
140            if ($img = @imagecreatefromstring($file))
141            {
142                $fp = fopen('cache/portraits/'.$this->_id.'_256.jpg', 'w');
143                fwrite($fp, $file);
144                fclose($fp);
145            }
146            else
147            {
148                // try alternative access via fsockopen
149                // happens if allow_url_fopen wrapper is false
150                require_once('class.http.php');
151
152                $url = 'http://img.eve.is/serv.asp?s=256&c='.$this->_id;
153                $http = new http_request($url);
154                $file = $http->get_content();
155
156                if ($img = @imagecreatefromstring($file))
157                {
158                    $fp = fopen('cache/portraits/'.$id.'_256.jpg', 'w');
159                    fwrite($fp, $file);
160                }
161            }
162        }
163
164        if ($img)
165        {
166            $newimg = imagecreatetruecolor($this->_size, $this->_size);
167            imagecopyresampled($newimg, $img, 0, 0, 0, 0, $this->_size, $this->_size, 256, 256);
168            imagejpeg($newimg, $this->_thumb, 90);
169        }
170        else
171        {
172            // fallback to a portrait with red !
173            $this->_thumb = 'img/portrait_0_'.$this->_size.'.jpg';
174        }
175    }
176
177    function genCorp()
178    {
179        if (!file_exists('img/corps/'.$this->_id.'.jpg'))
180        {
181            $this->_id = 0;
182        }
183        $img = imagecreatefromjpeg('img/corps/'.$this->_id.'.jpg');
184        if ($img)
185        {
186            $newimg = imagecreatetruecolor($this->_size, $this->_size);
187            $oldx = imagesx($img);
188            $oldy = imagesy($img);
189            imagecopyresampled($newimg, $img, 0, 0, 0, 0, $this->_size, $this->_size, $oldx, $oldy);
190            imagejpeg($newimg, $this->_thumb, 90);
191        }
192    }
193
194    function genAlliance()
195    {
196        if (!file_exists('img/alliances/'.$this->_id.'.png'))
197        {
198            $this->_id = 0;
199        }
200        $img = imagecreatefromjpeg('img/alliances/'.$this->_id.'.png');
201        if ($img)
202        {
203            $newimg = imagecreatetruecolor($this->_size, $this->_size);
204            $oldx = imagesx($img);
205            $oldy = imagesy($img);
206            imagecopyresampled($newimg, $img, 0, 0, 0, 0, $this->_size, $this->_size, $oldx, $oldy);
207            imagepng($newimg, $this->_thumb);
208        }
209    }
210}
211?>
Note: See TracBrowser for help on using the browser.