Passed
Push — develop ( d66898...d52602 )
by Nikolay
12:48
created

ExternalPhonesConf::getDependenceModels()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/*
3
 * MikoPBX - free phone system for small business
4
 * Copyright (C) 2017-2020 Alexey Portnov and Nikolay Beketov
5
 *
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation; either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License along with this program.
17
 * If not, see <https://www.gnu.org/licenses/>.
18
 */
19
20
namespace MikoPBX\Core\Asterisk\Configs;
21
22
use MikoPBX\Common\Models\ExternalPhones;
23
24
class ExternalPhonesConf extends CoreConfigClass
25
{
26
    private $arrExternalPhones;
27
28
    /**
29
     * Получение настроек с АТС.
30
     */
31
    public function getSettings(): void
32
    {
33
        $ext_data   = [];
34
        $ext_phones = ExternalPhones::find("disabled = '0' OR disabled IS NULL");
35
36
        foreach ($ext_phones as $ext_phone) {
37
            $ext_data[] = [
38
                'extension'  => $ext_phone->extension,
39
                'dialstring' => $ext_phone->dialstring,
40
            ];
41
        }
42
43
        $this->arrExternalPhones = $ext_data;
44
    }
45
46
    /**
47
     * Генерация внутреннего номерного плана.
48
     *
49
     * @return string
50
     */
51
    public function extensionGenInternal(): string
52
    {
53
        if ($this->arrExternalPhones===null){
54
            $this->getSettings();
55
        }
56
        $conf = '';
57
        foreach ($this->arrExternalPhones as $external) {
58
            $conf .= "exten => _{$external['extension']},1,Set(EXTERNALPHONE=" . $external['dialstring'] . ")\n\t";
59
            $conf .= "same => n,Goto(outgoing,{$external['dialstring']},1)\n\t";
60
            $conf .= "same => n,AGI(check_redirect.php,\${BLINDTRANSFER})\n";
61
        }
62
        $conf .= "\n";
63
64
        return $conf;
65
    }
66
67
    /**
68
     * @return string
69
     */
70
    public function extensionGenInternalTransfer(): string
71
    {
72
        if ($this->arrExternalPhones===null){
73
            $this->getSettings();
74
        }
75
        $conf = '';
76
        foreach ($this->arrExternalPhones as $external) {
77
            $conf .= 'exten => _' . $external['extension'] . ',1,Set(__ISTRANSFER=transfer_)' . " \n\t";
78
            $conf .= 'same => n,Goto(internal,${EXTEN},1)' . " \n";
79
        }
80
        $conf .= "\n";
81
82
        return $conf;
83
    }
84
85
    /**
86
     *
87
     * @return array
88
     */
89
    public function getDependenceModels(): array
90
    {
91
        return [ExternalPhones::class];
92
    }
93
94
}
95