Completed
Branch master (555f37)
by Alfred
01:38
created

Captcha   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 33
c 1
b 0
f 0
dl 0
loc 36
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 34 5
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: sjhc1170
5
 * Date: 17/05/2018
6
 * Time: 14:17
7
 */
8
9
namespace Iriven\Plugins\Form\Elements;
10
11
12
class Captcha extends Text
13
{
14
    public function __construct($label='Security Code', $attributes)
15
    {
16
        $operators = ['+','x','-'];
17
        $operator = $operators[rand(0,2)];
18
        switch($operator):
19
            case 'x':
20
                do{
21
                    $firstnumber = rand(3,7);
22
                    $secondnumber = rand(2,6);
23
                    $response = $firstnumber * $secondnumber;
24
                } while($response > 35);
25
                break;
26
            case '-':
27
                do{
28
                    $firstnumber = rand(6,11);
29
                    $secondnumber = rand(1,8);
30
                    $response = $firstnumber - $secondnumber;
31
                } while($response < 2);
32
                break;
33
            default:
34
                $firstnumber = rand(3,8);
35
                $secondnumber = rand(1,7);
36
                $response = $firstnumber + $secondnumber;
37
                break;
38
        endswitch;
39
        $label .= ". $firstnumber $operator $secondnumber";
40
        parent::__construct($label, $attributes);
41
        $this->Attributes()->set('name', str_replace(". $firstnumber $operator $secondnumber",'',$label));
42
        $this->Attributes()->createElementID($this->Attributes()->get('name'));
43
        $this->Attributes()->set('maxlength',2);
44
        $this->Attributes()->set('required','required');
45
        $this->Attributes()->set('pattern','[0-9]{1,2}');
46
        $this->Attributes()->set('placeholder','Enter result');
47
        $this->Attributes()->set('capresponse',$response);
48
      /*  $this->Attributes()->set('capfirstnumber',$firstnumber);
49
        $this->Attributes()->set('capsecondnumber',$secondnumber);
50
        $this->Attributes()->set('capoperator',$operator);*/
51
    }
52
53
}