@@ -5,7 +5,7 @@ discard block |
||
| 5 | 5 | $modx->getSettings(); |
| 6 | 6 | $modx->invokeEvent('OnWebPageInit'); |
| 7 | 7 | |
| 8 | -$vword = new VeriWord(148,60); |
|
| 8 | +$vword = new VeriWord(148, 60); |
|
| 9 | 9 | $vword->output_image(); |
| 10 | 10 | $vword->destroy_image(); |
| 11 | 11 | |
@@ -41,7 +41,7 @@ discard block |
||
| 41 | 41 | ## see sample.php for test and usage |
| 42 | 42 | ## sample URL: http://www.program-ruti.org/veriword/ |
| 43 | 43 | #### |
| 44 | -class VeriWord { |
|
| 44 | +class VeriWord{ |
|
| 45 | 45 | |
| 46 | 46 | /* path to font directory*/ |
| 47 | 47 | public $dir_font = "ttf/"; |
@@ -51,44 +51,44 @@ discard block |
||
| 51 | 51 | public $im_width = 0; |
| 52 | 52 | public $im_height = 0; |
| 53 | 53 | |
| 54 | - public function __construct($w=200, $h=80) { |
|
| 54 | + public function __construct($w = 200, $h = 80){ |
|
| 55 | 55 | /* create session to set word for verification */ |
| 56 | 56 | $this->set_veriword(); |
| 57 | - $this->dir_font = dirname(__FILE__) . '/' . $this->dir_font; |
|
| 57 | + $this->dir_font = dirname(__FILE__).'/'.$this->dir_font; |
|
| 58 | 58 | $this->im_width = $w; |
| 59 | 59 | $this->im_height = $h; |
| 60 | 60 | } |
| 61 | 61 | |
| 62 | - public function set_veriword() { |
|
| 62 | + public function set_veriword(){ |
|
| 63 | 63 | /* create session variable for verification, |
| 64 | 64 | you may change the session variable name */ |
| 65 | 65 | $this->word = $this->pick_word(); |
| 66 | 66 | $_SESSION['veriword'] = $this->word; |
| 67 | 67 | } |
| 68 | 68 | |
| 69 | - public function output_image() { |
|
| 69 | + public function output_image(){ |
|
| 70 | 70 | /* output the image as jpeg */ |
| 71 | 71 | $this->draw_image(); |
| 72 | 72 | header("Content-type: image/jpeg"); |
| 73 | 73 | imagejpeg($this->im); |
| 74 | 74 | } |
| 75 | 75 | |
| 76 | - public function pick_word() { |
|
| 76 | + public function pick_word(){ |
|
| 77 | 77 | global $modx; |
| 78 | 78 | // set default words |
| 79 | - $words="MODX,Access,Better,BitCode,Chunk,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Oscope,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote"; |
|
| 79 | + $words = "MODX,Access,Better,BitCode,Chunk,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Oscope,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote"; |
|
| 80 | 80 | $words = $modx->config['captcha_words'] ? $modx->config['captcha_words'] : $words; |
| 81 | 81 | $arr_words = array_filter(array_map('trim', explode(',', $words))); |
| 82 | 82 | |
| 83 | 83 | /* pick one randomly for text verification */ |
| 84 | - return (string) $arr_words[array_rand($arr_words)].rand(10,999); |
|
| 84 | + return (string) $arr_words[array_rand($arr_words)].rand(10, 999); |
|
| 85 | 85 | } |
| 86 | 86 | |
| 87 | - public function draw_text() { |
|
| 87 | + public function draw_text(){ |
|
| 88 | 88 | $dir = dir($this->dir_font); |
| 89 | 89 | $fontstmp = array(); |
| 90 | 90 | while (false !== ($file = $dir->read())) { |
| 91 | - if(substr($file, -4) == '.ttf') { |
|
| 91 | + if (substr($file, -4) == '.ttf') { |
|
| 92 | 92 | $fontstmp[] = $this->dir_font.$file; |
| 93 | 93 | } |
| 94 | 94 | } |
@@ -96,35 +96,35 @@ discard block |
||
| 96 | 96 | $text_font = (string) $fontstmp[array_rand($fontstmp)]; |
| 97 | 97 | |
| 98 | 98 | /* angle for text inclination */ |
| 99 | - $text_angle = rand(-9,9); |
|
| 99 | + $text_angle = rand(-9, 9); |
|
| 100 | 100 | /* initial text size */ |
| 101 | 101 | $text_size = 30; |
| 102 | 102 | /* calculate text width and height */ |
| 103 | - $box = imagettfbbox ( $text_size, $text_angle, $text_font, $this->word); |
|
| 104 | - $text_width = $box[2]-$box[0]; //text width |
|
| 105 | - $text_height= $box[5]-$box[3]; //text height |
|
| 103 | + $box = imagettfbbox($text_size, $text_angle, $text_font, $this->word); |
|
| 104 | + $text_width = $box[2] - $box[0]; //text width |
|
| 105 | + $text_height = $box[5] - $box[3]; //text height |
|
| 106 | 106 | |
| 107 | 107 | /* adjust text size */ |
| 108 | - $text_size = round((20 * $this->im_width)/$text_width); |
|
| 108 | + $text_size = round((20 * $this->im_width) / $text_width); |
|
| 109 | 109 | |
| 110 | 110 | /* recalculate text width and height */ |
| 111 | - $box = imagettfbbox ( $text_size, $text_angle, $text_font, $this->word); |
|
| 112 | - $text_width = $box[2]-$box[0]; //text width |
|
| 113 | - $text_height= $box[5]-$box[3]; //text height |
|
| 111 | + $box = imagettfbbox($text_size, $text_angle, $text_font, $this->word); |
|
| 112 | + $text_width = $box[2] - $box[0]; //text width |
|
| 113 | + $text_height = $box[5] - $box[3]; //text height |
|
| 114 | 114 | |
| 115 | 115 | /* calculate center position of text */ |
| 116 | - $text_x = ($this->im_width - $text_width)/2; |
|
| 117 | - $text_y = ($this->im_height - $text_height)/2; |
|
| 116 | + $text_x = ($this->im_width - $text_width) / 2; |
|
| 117 | + $text_y = ($this->im_height - $text_height) / 2; |
|
| 118 | 118 | |
| 119 | 119 | /* create canvas for text drawing */ |
| 120 | - $im_text = imagecreate ($this->im_width, $this->im_height); |
|
| 121 | - $bg_color = imagecolorallocate ($im_text, 255, 255, 255); |
|
| 120 | + $im_text = imagecreate($this->im_width, $this->im_height); |
|
| 121 | + $bg_color = imagecolorallocate($im_text, 255, 255, 255); |
|
| 122 | 122 | |
| 123 | 123 | /* pick color for text */ |
| 124 | - $text_color = imagecolorallocate ($im_text, 0, 51, 153); |
|
| 124 | + $text_color = imagecolorallocate($im_text, 0, 51, 153); |
|
| 125 | 125 | |
| 126 | 126 | /* draw text into canvas */ |
| 127 | - imagettftext ( $im_text, |
|
| 127 | + imagettftext($im_text, |
|
| 128 | 128 | $text_size, |
| 129 | 129 | $text_angle, |
| 130 | 130 | $text_x, |
@@ -139,19 +139,19 @@ discard block |
||
| 139 | 139 | } |
| 140 | 140 | |
| 141 | 141 | |
| 142 | - public function draw_image() { |
|
| 142 | + public function draw_image(){ |
|
| 143 | 143 | |
| 144 | 144 | /* pick one background image randomly from image directory */ |
| 145 | - $img_file = $this->dir_noise."noise".rand(1,4).".jpg"; |
|
| 145 | + $img_file = $this->dir_noise."noise".rand(1, 4).".jpg"; |
|
| 146 | 146 | |
| 147 | 147 | /* create "noise" background image from your image stock*/ |
| 148 | - $noise_img = @imagecreatefromjpeg ($img_file); |
|
| 148 | + $noise_img = @imagecreatefromjpeg($img_file); |
|
| 149 | 149 | $noise_width = imagesx($noise_img); |
| 150 | 150 | $noise_height = imagesy($noise_img); |
| 151 | 151 | |
| 152 | 152 | /* resize the background image to fit the size of image output */ |
| 153 | - $this->im = imagecreatetruecolor($this->im_width,$this->im_height); |
|
| 154 | - imagecopyresampled ($this->im, |
|
| 153 | + $this->im = imagecreatetruecolor($this->im_width, $this->im_height); |
|
| 154 | + imagecopyresampled($this->im, |
|
| 155 | 155 | $noise_img, |
| 156 | 156 | 0, 0, 0, 0, |
| 157 | 157 | $this->im_width, |
@@ -160,17 +160,17 @@ discard block |
||
| 160 | 160 | $noise_height); |
| 161 | 161 | |
| 162 | 162 | /* put text image into background image */ |
| 163 | - imagecopymerge ( $this->im, |
|
| 163 | + imagecopymerge($this->im, |
|
| 164 | 164 | $this->draw_text(), |
| 165 | 165 | 0, 0, 0, 0, |
| 166 | 166 | $this->im_width, |
| 167 | 167 | $this->im_height, |
| 168 | - 70 ); |
|
| 168 | + 70); |
|
| 169 | 169 | |
| 170 | 170 | return $this->im; |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | - public function destroy_image() { |
|
| 173 | + public function destroy_image(){ |
|
| 174 | 174 | |
| 175 | 175 | imagedestroy($this->im); |
| 176 | 176 | |
@@ -41,7 +41,8 @@ discard block |
||
| 41 | 41 | ## see sample.php for test and usage |
| 42 | 42 | ## sample URL: http://www.program-ruti.org/veriword/ |
| 43 | 43 | #### |
| 44 | -class VeriWord { |
|
| 44 | +class VeriWord |
|
| 45 | +{ |
|
| 45 | 46 | |
| 46 | 47 | /* path to font directory*/ |
| 47 | 48 | public $dir_font = "ttf/"; |
@@ -51,7 +52,8 @@ discard block |
||
| 51 | 52 | public $im_width = 0; |
| 52 | 53 | public $im_height = 0; |
| 53 | 54 | |
| 54 | - public function __construct($w=200, $h=80) { |
|
| 55 | + public function __construct($w=200, $h=80) |
|
| 56 | + { |
|
| 55 | 57 | /* create session to set word for verification */ |
| 56 | 58 | $this->set_veriword(); |
| 57 | 59 | $this->dir_font = dirname(__FILE__) . '/' . $this->dir_font; |
@@ -59,21 +61,24 @@ discard block |
||
| 59 | 61 | $this->im_height = $h; |
| 60 | 62 | } |
| 61 | 63 | |
| 62 | - public function set_veriword() { |
|
| 64 | + public function set_veriword() |
|
| 65 | + { |
|
| 63 | 66 | /* create session variable for verification, |
| 64 | 67 | you may change the session variable name */ |
| 65 | 68 | $this->word = $this->pick_word(); |
| 66 | 69 | $_SESSION['veriword'] = $this->word; |
| 67 | 70 | } |
| 68 | 71 | |
| 69 | - public function output_image() { |
|
| 72 | + public function output_image() |
|
| 73 | + { |
|
| 70 | 74 | /* output the image as jpeg */ |
| 71 | 75 | $this->draw_image(); |
| 72 | 76 | header("Content-type: image/jpeg"); |
| 73 | 77 | imagejpeg($this->im); |
| 74 | 78 | } |
| 75 | 79 | |
| 76 | - public function pick_word() { |
|
| 80 | + public function pick_word() |
|
| 81 | + { |
|
| 77 | 82 | global $modx; |
| 78 | 83 | // set default words |
| 79 | 84 | $words="MODX,Access,Better,BitCode,Chunk,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Oscope,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote"; |
@@ -84,7 +89,8 @@ discard block |
||
| 84 | 89 | return (string) $arr_words[array_rand($arr_words)].rand(10,999); |
| 85 | 90 | } |
| 86 | 91 | |
| 87 | - public function draw_text() { |
|
| 92 | + public function draw_text() |
|
| 93 | + { |
|
| 88 | 94 | $dir = dir($this->dir_font); |
| 89 | 95 | $fontstmp = array(); |
| 90 | 96 | while (false !== ($file = $dir->read())) { |
@@ -139,7 +145,8 @@ discard block |
||
| 139 | 145 | } |
| 140 | 146 | |
| 141 | 147 | |
| 142 | - public function draw_image() { |
|
| 148 | + public function draw_image() |
|
| 149 | + { |
|
| 143 | 150 | |
| 144 | 151 | /* pick one background image randomly from image directory */ |
| 145 | 152 | $img_file = $this->dir_noise."noise".rand(1,4).".jpg"; |
@@ -170,7 +177,8 @@ discard block |
||
| 170 | 177 | return $this->im; |
| 171 | 178 | } |
| 172 | 179 | |
| 173 | - public function destroy_image() { |
|
| 180 | + public function destroy_image() |
|
| 181 | + { |
|
| 174 | 182 | |
| 175 | 183 | imagedestroy($this->im); |
| 176 | 184 | |