/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/helpers/captcha_helper.php

  • Committer: gustav.hartvigsson at gmail
  • Date: 2013-04-03 11:52:56 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20130403115256-sz6zermzoom4lifc
Ignored .DS_Store files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2
 
/**
3
 
 * CodeIgniter
4
 
 *
5
 
 * An open source application development framework for PHP 5.1.6 or newer
6
 
 *
7
 
 * @package             CodeIgniter
8
 
 * @author              ExpressionEngine Dev Team
9
 
 * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
10
 
 * @license             http://codeigniter.com/user_guide/license.html
11
 
 * @link                http://codeigniter.com
12
 
 * @since               Version 1.0
13
 
 * @filesource
14
 
 */
15
 
 
16
 
// ------------------------------------------------------------------------
17
 
 
18
 
/**
19
 
 * CodeIgniter CAPTCHA Helper
20
 
 *
21
 
 * @package             CodeIgniter
22
 
 * @subpackage  Helpers
23
 
 * @category    Helpers
24
 
 * @author              ExpressionEngine Dev Team
25
 
 * @link                http://codeigniter.com/user_guide/helpers/xml_helper.html
26
 
 */
27
 
 
28
 
// ------------------------------------------------------------------------
29
 
 
30
 
/**
31
 
 * Create CAPTCHA
32
 
 *
33
 
 * @access      public
34
 
 * @param       array   array of data for the CAPTCHA
35
 
 * @param       string  path to create the image in
36
 
 * @param       string  URL to the CAPTCHA image folder
37
 
 * @param       string  server path to font
38
 
 * @return      string
39
 
 */
40
 
if ( ! function_exists('create_captcha'))
41
 
{
42
 
        function create_captcha($data = '', $img_path = '', $img_url = '', $font_path = '')
43
 
        {
44
 
                $defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200);
45
 
 
46
 
                foreach ($defaults as $key => $val)
47
 
                {
48
 
                        if ( ! is_array($data))
49
 
                        {
50
 
                                if ( ! isset($$key) OR $$key == '')
51
 
                                {
52
 
                                        $$key = $val;
53
 
                                }
54
 
                        }
55
 
                        else
56
 
                        {
57
 
                                $$key = ( ! isset($data[$key])) ? $val : $data[$key];
58
 
                        }
59
 
                }
60
 
 
61
 
                if ($img_path == '' OR $img_url == '')
62
 
                {
63
 
                        return FALSE;
64
 
                }
65
 
 
66
 
                if ( ! @is_dir($img_path))
67
 
                {
68
 
                        return FALSE;
69
 
                }
70
 
 
71
 
                if ( ! is_writable($img_path))
72
 
                {
73
 
                        return FALSE;
74
 
                }
75
 
 
76
 
                if ( ! extension_loaded('gd'))
77
 
                {
78
 
                        return FALSE;
79
 
                }
80
 
 
81
 
                // -----------------------------------
82
 
                // Remove old images
83
 
                // -----------------------------------
84
 
 
85
 
                list($usec, $sec) = explode(" ", microtime());
86
 
                $now = ((float)$usec + (float)$sec);
87
 
 
88
 
                $current_dir = @opendir($img_path);
89
 
 
90
 
                while ($filename = @readdir($current_dir))
91
 
                {
92
 
                        if ($filename != "." and $filename != ".." and $filename != "index.html")
93
 
                        {
94
 
                                $name = str_replace(".jpg", "", $filename);
95
 
 
96
 
                                if (($name + $expiration) < $now)
97
 
                                {
98
 
                                        @unlink($img_path.$filename);
99
 
                                }
100
 
                        }
101
 
                }
102
 
 
103
 
                @closedir($current_dir);
104
 
 
105
 
                // -----------------------------------
106
 
                // Do we have a "word" yet?
107
 
                // -----------------------------------
108
 
 
109
 
           if ($word == '')
110
 
           {
111
 
                        $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
112
 
 
113
 
                        $str = '';
114
 
                        for ($i = 0; $i < 8; $i++)
115
 
                        {
116
 
                                $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
117
 
                        }
118
 
 
119
 
                        $word = $str;
120
 
           }
121
 
 
122
 
                // -----------------------------------
123
 
                // Determine angle and position
124
 
                // -----------------------------------
125
 
 
126
 
                $length = strlen($word);
127
 
                $angle  = ($length >= 6) ? rand(-($length-6), ($length-6)) : 0;
128
 
                $x_axis = rand(6, (360/$length)-16);
129
 
                $y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height);
130
 
 
131
 
                // -----------------------------------
132
 
                // Create image
133
 
                // -----------------------------------
134
 
 
135
 
                // PHP.net recommends imagecreatetruecolor(), but it isn't always available
136
 
                if (function_exists('imagecreatetruecolor'))
137
 
                {
138
 
                        $im = imagecreatetruecolor($img_width, $img_height);
139
 
                }
140
 
                else
141
 
                {
142
 
                        $im = imagecreate($img_width, $img_height);
143
 
                }
144
 
 
145
 
                // -----------------------------------
146
 
                //  Assign colors
147
 
                // -----------------------------------
148
 
 
149
 
                $bg_color               = imagecolorallocate ($im, 255, 255, 255);
150
 
                $border_color   = imagecolorallocate ($im, 153, 102, 102);
151
 
                $text_color             = imagecolorallocate ($im, 204, 153, 153);
152
 
                $grid_color             = imagecolorallocate($im, 255, 182, 182);
153
 
                $shadow_color   = imagecolorallocate($im, 255, 240, 240);
154
 
 
155
 
                // -----------------------------------
156
 
                //  Create the rectangle
157
 
                // -----------------------------------
158
 
 
159
 
                ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color);
160
 
 
161
 
                // -----------------------------------
162
 
                //  Create the spiral pattern
163
 
                // -----------------------------------
164
 
 
165
 
                $theta          = 1;
166
 
                $thetac         = 7;
167
 
                $radius         = 16;
168
 
                $circles        = 20;
169
 
                $points         = 32;
170
 
 
171
 
                for ($i = 0; $i < ($circles * $points) - 1; $i++)
172
 
                {
173
 
                        $theta = $theta + $thetac;
174
 
                        $rad = $radius * ($i / $points );
175
 
                        $x = ($rad * cos($theta)) + $x_axis;
176
 
                        $y = ($rad * sin($theta)) + $y_axis;
177
 
                        $theta = $theta + $thetac;
178
 
                        $rad1 = $radius * (($i + 1) / $points);
179
 
                        $x1 = ($rad1 * cos($theta)) + $x_axis;
180
 
                        $y1 = ($rad1 * sin($theta )) + $y_axis;
181
 
                        imageline($im, $x, $y, $x1, $y1, $grid_color);
182
 
                        $theta = $theta - $thetac;
183
 
                }
184
 
 
185
 
                // -----------------------------------
186
 
                //  Write the text
187
 
                // -----------------------------------
188
 
 
189
 
                $use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE;
190
 
 
191
 
                if ($use_font == FALSE)
192
 
                {
193
 
                        $font_size = 5;
194
 
                        $x = rand(0, $img_width/($length/3));
195
 
                        $y = 0;
196
 
                }
197
 
                else
198
 
                {
199
 
                        $font_size      = 16;
200
 
                        $x = rand(0, $img_width/($length/1.5));
201
 
                        $y = $font_size+2;
202
 
                }
203
 
 
204
 
                for ($i = 0; $i < strlen($word); $i++)
205
 
                {
206
 
                        if ($use_font == FALSE)
207
 
                        {
208
 
                                $y = rand(0 , $img_height/2);
209
 
                                imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color);
210
 
                                $x += ($font_size*2);
211
 
                        }
212
 
                        else
213
 
                        {
214
 
                                $y = rand($img_height/2, $img_height-3);
215
 
                                imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1));
216
 
                                $x += $font_size;
217
 
                        }
218
 
                }
219
 
 
220
 
 
221
 
                // -----------------------------------
222
 
                //  Create the border
223
 
                // -----------------------------------
224
 
 
225
 
                imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
226
 
 
227
 
                // -----------------------------------
228
 
                //  Generate the image
229
 
                // -----------------------------------
230
 
 
231
 
                $img_name = $now.'.jpg';
232
 
 
233
 
                ImageJPEG($im, $img_path.$img_name);
234
 
 
235
 
                $img = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" style=\"border:0;\" alt=\" \" />";
236
 
 
237
 
                ImageDestroy($im);
238
 
 
239
 
                return array('word' => $word, 'time' => $now, 'image' => $img);
240
 
        }
241
 
}
242
 
 
243
 
// ------------------------------------------------------------------------
244
 
 
245
 
/* End of file captcha_helper.php */
246
 
/* Location: ./system/heleprs/captcha_helper.php */
 
 
b'\\ No newline at end of file'