User::_getSignature()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
namespace App\Model\Entity;
3
4
use Cake\Auth\DefaultPasswordHasher;
5
use Cake\Core\Configure;
6
use Cake\ORM\Entity;
7
use Cake\ORM\TableRegistry;
8
use HTMLPurifier;
9
use HTMLPurifier_Config;
10
11
class User extends Entity
12
{
13
14
    /**
15
     * Fields that can be mass assigned using newEntity() or patchEntity().
16
     *
17
     * @var array
18
     */
19
    protected $_accessible = [
20
        '*' => true,
21
        'id' => false,
22
        'group_id' => false
23
    ];
24
25
    /**
26
     * Hash the password before to save.
27
     *
28
     * @param string $password Password to be hashed.
29
     *
30
     * @return string
31
     */
32
    protected function _setPassword($password)
33
    {
34
        return (new DefaultPasswordHasher)->hash($password);
35
    }
36
37
    /**
38
     * Get the full name of the user. If empty, return the username.
39
     *
40
     * @return string
41
     */
42
    protected function _getFullName()
43
    {
44
        $fullName = trim($this->first_name . ' ' . $this->last_name);
0 ignored issues
show
Documentation introduced by
The property first_name does not exist on object<App\Model\Entity\User>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
Documentation introduced by
The property last_name does not exist on object<App\Model\Entity\User>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
45
46
        return (!empty($fullName)) ? $fullName : $this->username;
0 ignored issues
show
Documentation introduced by
The property username does not exist on object<App\Model\Entity\User>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
47
    }
48
49
    /**
50
     * Purify the biography.
51
     *
52
     * @param string $biography The biography to be purify.
53
     *
54
     * @return string
55
     */
56
    protected function _getBiography($biography)
57
    {
58
        $config = HTMLPurifier_Config::createDefault();
59
        $config->loadArray(Configure::read('HtmlPurifier.User.biography'));
60
61
        $HTMLPurifier = new HTMLPurifier($config);
62
63
        return $HTMLPurifier->purify($biography);
64
    }
65
66
    /**
67
     * Purify the signature.
68
     *
69
     * @param string $signature The signature to be purify.
70
     *
71
     * @return string
72
     */
73
    protected function _getSignature($signature)
74
    {
75
        $config = HTMLPurifier_Config::createDefault();
76
        $config->loadArray(Configure::read('HtmlPurifier.User.signature'));
77
78
        $HTMLPurifier = new HTMLPurifier($config);
79
80
        return $HTMLPurifier->purify($signature);
81
    }
82
83
    /**
84
     * The parendNode for ACL.
85
     *
86
     * @return null|array
87
     */
88
    public function parentNode()
89
    {
90
        if (!$this->id) {
0 ignored issues
show
Documentation introduced by
The property id does not exist on object<App\Model\Entity\User>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
91
            return null;
92
        }
93
        if (isset($this->group_id)) {
94
            $groupId = $this->group_id;
0 ignored issues
show
Documentation introduced by
The property group_id does not exist on object<App\Model\Entity\User>. Since you implemented __set, maybe consider adding a @property annotation.

Since your code implements the magic setter _set, this function will be called for any write access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

Since the property has write access only, you can use the @property-write annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
95
        } else {
96
            $Users = TableRegistry::get('Users');
97
            $user = $Users->find('all', ['fields' => ['group_id']])->where(['id' => $this->id])->first();
0 ignored issues
show
Documentation introduced by
The property id does not exist on object<App\Model\Entity\User>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
98
            $groupId = $user->group_id;
99
        }
100
101
        if (!$groupId) {
102
            return null;
103
        }
104
105
        return ['Groups' => ['id' => $groupId]];
106
    }
107
108
    /**
109
     * The bindNode method for ACL.
110
     *
111
     * @param array $user The current user.
112
     *
113
     * @return array The model and foreign_key to check.
114
     */
115
    public function bindNode($user)
116
    {
117
        return ['model' => 'Groups', 'foreign_key' => $user['Users']['group_id']];
118
    }
119
}
120