/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: galaxyAbstractor
  • Date: 2013-04-10 15:49:32 UTC
  • mto: (19.1.5 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410154932-4vizlzk0ar5gykvi
* Added an simple admin panel to the codeviewer-cmssy stuff
* Redesigned a bit like the mockups - still stuff to come
* Implemented the codeviewer + admin panel again using the Framework CodeIgniter instead 

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'