Passed
Push — master ( 57c539...d81008 )
by Esteban De La Fuente
14:52
created

Mailbox   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 46
ccs 0
cts 13
cp 0
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A status() 0 15 3
A countUnreadMails() 0 5 1
A isConnected() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Derafu: Biblioteca PHP (Núcleo).
7
 * Copyright (C) Derafu <https://www.derafu.org>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de GNU
20
 * junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace Derafu\Lib\Core\Package\Prime\Component\Mail\Support;
26
27
use PhpImap\Mailbox as PhpImapMailbox;
28
use stdClass;
29
30
/**
31
 * Casilla de correo electrónico que se usará en la estrategia que recibe
32
 * correos mediante IMAP.
33
 */
34
class Mailbox extends PhpImapMailbox
35
{
36
    /**
37
     * Verifica si se está conectado al servidor IMAP.
38
     *
39
     * @return bool `true` si se está conectado, `false` en caso contrario.
40
     */
41
    public function isConnected(): bool
42
    {
43
        return $this->getImapStream() !== false;
44
    }
45
46
    /**
47
     * Obtiene el estado de la casilla de correo.
48
     *
49
     * @param string|null $folder Carpeta a consultar, `null` para la actual.
50
     * @return stdClass Objeto con el estado de la casilla de correo.
51
     */
52
    public function status(?string $folder = null): stdClass
53
    {
54
        $originalMailbox = $this->getImapPath();
55
56
        if ($folder !== null) {
57
            $this->switchMailbox($folder);
58
        }
59
60
        $status = $this->statusMailbox();
61
62
        if ($folder !== null) {
63
            $this->switchMailbox($originalMailbox);
64
        }
65
66
        return $status;
67
    }
68
69
    /**
70
     * Cuenta la cantidad de mensajes sin leer en la casilla de correo.
71
     *
72
     * @param string|null $folder Carpeta a consultar, `null` para la actual.
73
     * @return int Cantidad de mensajes sin leer.
74
     */
75
    public function countUnreadMails(?string $folder = null): int
76
    {
77
        $status = $this->status($folder);
78
79
        return $status->unseen ?? 0;
80
    }
81
}
82