User   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 7
Bugs 0 Features 0
Metric Value
wmc 7
dl 0
loc 63
rs 10
c 7
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A uploadPhoto() 0 13 2
A updatePhoto() 0 7 2
A saveWithPhoto() 0 17 3
1
<?php
2
3
/**
4
 * Clase para manejar los datos del usuario, tabla 'user'
5
 */
6
class User extends ActiveRecord
7
{
8
9
    /**
10
     * Guarda un usuario y sube la foto de un usuario.
11
     *
12
     * @param array $data Arreglo con los datos de usuario
13
     * @return boolean
14
     * @throws Exception
15
     */
16
    public function saveWithPhoto($data)
17
    {
18
        //Inicia la transacción
19
        $this->begin();
20
        //Intenta crear el usuario con los datos pasados
21
        if ($this->create($data)) {
22
            //Intenta subit y actualizar la foto
23
            if ($this->updatePhoto()) {
24
                //Se confirma la transacción
25
                $this->commit();
26
                return true;
27
            }
28
        }
29
30
        //Si alga falla se regresa la transacción
31
        $this->rollback();
32
        return false;
33
    }
34
35
    /**
36
     * Sube y actualiza la foto del usuario.
37
     *
38
     * @return boolean|null
39
     */
40
    public function updatePhoto()
41
    {
42
        //Intenta subir la foto que viene en el campo 'photo'
43
        if ($photo = $this->uploadPhoto('photo')) {
44
            //Modifica el campo photo del usuario y lo intenta actualizar
45
            $this->photo = $photo;
0 ignored issues
show
Bug Best Practice introduced by
The property photo does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
46
            return $this->update();
47
        }
48
    }
49
50
    /**
51
     * Sube la foto y retorna el nombre del archivo generado.
52
     *
53
     * @param string $imageField Nombre de archivo recibido por POST
54
     * @return string|false
55
     */
56
    public function uploadPhoto($imageField)
57
    {
58
        //Usamos el adapter 'image'
59
        $file = Upload::factory($imageField, 'image');
60
        //le asignamos las extensiones a permitir
61
        $file->setExtensions(array('jpg', 'png', 'gif', 'jpeg'));
62
        //Intenta subir el archivo
63
        if ($file->isUploaded()) {
64
            //Lo guarda usando un nombre de archivo aleatorio y lo retorna.
65
            return $file->saveRandom();
66
        }
67
        //Si falla al subir
68
        return false;
69
    }
70
}
71