root/dev/mods/signature_generator/sig.php @ 391

Revision 391, 3.2 KB (checked in by kovell, 12 years ago)

Fixes: kill_detail comment posting works and non-existent kll_id gives correct error, t3 subsystems have correct location, potential conflicts with old mods and db classes removed.

RevLine 
[39]1<?php
2if (!$sig_name = $_GET['s'])
3{
4    $sig_name = 'default';
5}
6$sig_name = str_replace('.', '', $sig_name);
7$sig_name = str_replace('/', '', $sig_name);
8
[165]9function errorPic($string)
[39]10{
[165]11    $im = imagecreate(200, 60);
12    $black = imagecolorallocate($im, 0, 0, 0);
13    $red = imagecolorallocate($im, 250, 200, 20);
14    imagefill($im, 1, 1, $black);
15    imagestring($im, 3, 10, 10, 'Error: '.$string, $red);
16    header('Content-Type: image/jpeg');
17    imagejpeg($im);
[39]18    exit;
19}
[165]20
[192]21if (!$plt_id = intval($_GET['i']))
[165]22{
23    errorPic('No pilot id specified.');
24}
[190]25require_once("common/includes/class.pilot.php");
26require_once("common/includes/class.corp.php");
27require_once("common/includes/class.alliance.php");
28require_once("common/includes/class.killlist.php");
[39]29
30$pilot = new Pilot($plt_id);
31if (!$pilot->exists())
32{
[165]33    errorPic('That pilot doesnt exist.');
[39]34}
[391]35$pilot->getPortraitURL(256);
[39]36$corp = $pilot->getCorp();
37$alliance = $corp->getAlliance();
38
39// we dont generate pictures for non-member
40if (ALLIANCE_ID && $alliance->getID() != ALLIANCE_ID)
41{
[165]42    errorPic('Wrong alliance.');
[39]43}
44elseif (CORP_ID && $corp->getID() != CORP_ID)
45{
[165]46    errorPic('Wrong corporation.');
[39]47}
48
[72]49$id = abs(crc32($sig_name));
[39]50// check for cached version
[72]51if (file_exists('cache/data/sig_'.$id.'_'.$plt_id))
[39]52{
[72]53    $age = filemtime('cache/data/sig_'.$id.'_'.$plt_id);
[39]54
55    // cache files for 30 minutes
56    if (time() - $age < 30*60)
57    {
[87]58        if (file_exists('mods/signature_generator/signatures/'.$sig_name.'/typ.png'))
59        {
60            header('Content-Type: image/png');
61        }
62        else
63        {
64            header('Content-Type: image/jpeg');
65        }
[72]66        readfile('cache/data/sig_'.$id.'_'.$plt_id);
[39]67        return;
68    }
69}
70
[390]71$pid = $pilot->getExternalID();
72if (file_exists('cache/portraits/'.$pid.'_256.jpg'))
73{
74        touch('cache/portraits/'.$pid.'_256.jpg');
75}
76else
77{
78        // in case of a dead eve server we only want to wait 5 seconds
79        @ini_set('default_socket_timeout', 5);
80        $file = @file_get_contents('http://img.eve.is/serv.asp?s=256&c='.$pid);
81        if ($img = @imagecreatefromstring($file))
82        {
83                $fp = fopen('cache/portraits/'.$pid.'_256.jpg', 'w');
84                fwrite($fp, $file);
85                fclose($fp);
86        }
87        else
88        {
89                // try alternative access via fsockopen
90                // happens if allow_url_fopen wrapper is false
91                require_once('class.http.php');
92
93                $url = 'http://img.eve.is/serv.asp?s=256&c='.$pid;
94                $http = new http_request($url);
95                $file = $http->get_content();
96
97                if ($img = @imagecreatefromstring($file))
98                {
99                        $fp = fopen('cache/portraits/'.$id.'_256.jpg', 'w');
100                        fwrite($fp, $file);
101                }
102        }
103}
104
105
[39]106// check template
[72]107if (!is_dir('mods/signature_generator/signatures/'.$sig_name))
[39]108{
[165]109    errorPic('Template not found.');
[39]110}
111
[87]112// let the template do the work, we just output $im
[72]113require('mods/signature_generator/signatures/'.$sig_name.'/'.$sig_name.'.php');
[39]114
[87]115if (file_exists('mods/signature_generator/signatures/'.$sig_name.'/typ.png'))
116{
117    header('Content-Type: image/png');
[289]118    imagepng($im, 'cache/data/sig_'.$id.'_'.$plt_id);
[87]119}
120else
121{
122    header('Content-Type: image/jpeg');
[289]123    imagejpeg($im, 'cache/data/sig_'.$id.'_'.$plt_id, 90);
[87]124}
[72]125readfile('cache/data/sig_'.$id.'_'.$plt_id);
[39]126?>
Note: See TracBrowser for help on using the browser.