Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31ae516a49 | ||
|
|
d70fa0307b | ||
|
|
278ae0376b | ||
|
|
689fe5c6b4 | ||
|
|
296b092b22 | ||
|
|
1f0c30529b | ||
|
|
b9e6a89a37 | ||
|
|
4951647225 | ||
|
|
4e861b0dcb | ||
|
|
f93fd6b00c | ||
|
|
b1457116d8 | ||
|
|
52c0b3955f | ||
|
|
d3aed6707e | ||
|
|
9b68b04aa4 | ||
|
|
57614ea8af | ||
|
|
e06c8ea208 | ||
|
|
025f243bac | ||
|
|
0ab4e245e5 | ||
|
|
8841e28f32 | ||
|
|
75e7e0859c | ||
|
|
28695de14c | ||
|
|
90259527cc | ||
|
|
0f3d8a1d87 | ||
|
|
ddfa077635 | ||
|
|
83aff11098 | ||
|
|
5d387ac3dd | ||
|
|
d20b2f3a23 | ||
|
|
ffc7d32bdc | ||
|
|
9a2c3f6299 | ||
|
|
d3cfa9c2bc | ||
|
|
1f62c73b2d | ||
|
|
9c0b0c3a60 | ||
|
|
21be0125b5 | ||
|
|
65ec8133df | ||
|
|
dea23a1e3b | ||
|
|
1bc941e244 | ||
|
|
37c2b8a040 | ||
|
|
04a6701343 | ||
|
|
e72afde5a7 | ||
|
|
e6538d3858 | ||
|
|
3732d51753 | ||
|
|
73c6b87121 | ||
|
|
cf38aa88ec | ||
|
|
59e96d19b0 | ||
|
|
cd28379dd2 | ||
|
|
818fb6f203 | ||
|
|
e3cfa0d1da | ||
|
|
3b6c2acd76 | ||
|
|
d6969715d7 | ||
|
|
9ae6c12cbb | ||
|
|
7724c6fe5b | ||
|
|
5fb8ab41d8 | ||
|
|
3dfe583a42 | ||
|
|
7f60ff23c4 | ||
|
|
f00712463c | ||
|
|
e5a4890d29 | ||
|
|
f998c4f62b | ||
|
|
8c8ef2c309 | ||
|
|
ddcd2c6d5a | ||
|
|
656e077d40 | ||
|
|
53acebd180 | ||
|
|
b7e3d6133c | ||
|
|
890321e338 | ||
|
|
5bcb9b8d26 | ||
|
|
3c9678bbf2 | ||
|
|
ae51a57566 | ||
|
|
e629e615d4 | ||
|
|
ceb0637c83 | ||
|
|
49a45f08be | ||
|
|
27bc8df629 | ||
|
|
0665ac02e2 | ||
|
|
56d5c8a755 | ||
|
|
6f73009728 | ||
|
|
07ff69b53d | ||
|
|
c3f4d8a1c2 | ||
|
|
408247599b | ||
|
|
999858e01c | ||
|
|
3ea9e7d012 | ||
|
|
d7b3e25cd4 | ||
|
|
63bb9b6e81 | ||
|
|
255b1773ae | ||
|
|
bcf81d3306 | ||
|
|
2854fd816c | ||
|
|
51c349a78e | ||
|
|
fe750a092d | ||
|
|
7d90568f05 | ||
|
|
e03becd5d1 | ||
|
|
b1e6c72408 | ||
|
|
85ed88878d | ||
|
|
ffbd2996f1 | ||
|
|
b509050827 | ||
|
|
212ceb361d | ||
|
|
6fa3dcdb53 | ||
|
|
1ecd3c7be9 | ||
|
|
c3438ec3ae | ||
|
|
17af8976d9 | ||
|
|
f8b657f674 | ||
|
|
53779d50d3 | ||
|
|
49648e6655 | ||
|
|
e5ca998ef8 | ||
|
|
ba3afa2565 | ||
|
|
2a577635e3 | ||
|
|
54beb80b32 | ||
|
|
da6270a7af | ||
|
|
1057c4cf8e | ||
|
|
ec04006971 | ||
|
|
c143b9fe83 | ||
|
|
1f0d24a447 | ||
|
|
0177861b45 | ||
|
|
4644cf6e15 | ||
|
|
fc8bc10803 | ||
|
|
6f352c2efb | ||
|
|
b3f9e44db1 | ||
|
|
a8f25e9657 | ||
|
|
679df10c6e | ||
|
|
5ef1c225f6 | ||
|
|
24197a88d6 | ||
|
|
5bce5b103b | ||
|
|
a034fbe08b | ||
|
|
c393b27bf3 | ||
|
|
d24acf66bf | ||
|
|
dec61c3833 | ||
|
|
a9bd6cbc9a | ||
|
|
eed43da50c | ||
|
|
1f5fd680ab | ||
|
|
68c4e29346 | ||
|
|
3e64700259 | ||
|
|
39c81b60c4 | ||
|
|
2e2bd53170 | ||
|
|
65a84216bb | ||
|
|
b23a18fdf1 | ||
|
|
a7ecdf72f8 | ||
|
|
aa7def54a6 | ||
|
|
123ac6e00a | ||
|
|
a72c843b52 | ||
|
|
b6c521d787 | ||
|
|
97e0d93400 | ||
|
|
6e1cfb0354 | ||
|
|
88faf89219 | ||
|
|
0d39719318 | ||
|
|
1f20424cbd | ||
|
|
3389ab292d | ||
|
|
90c2ef0029 | ||
|
|
b22aae01d0 | ||
|
|
71d6415d06 | ||
|
|
d17265c3ec | ||
|
|
67e60db16a | ||
|
|
4641c3d295 | ||
|
|
2c9d741158 | ||
|
|
6bcc5aff5e | ||
|
|
7c85bc95f6 | ||
|
|
1a65701da8 | ||
|
|
fd0e30bdb7 | ||
|
|
033774c809 | ||
|
|
62a61f451b | ||
|
|
3eb64d1d9a | ||
|
|
fcda82136f | ||
|
|
bcf7cbaad2 | ||
|
|
ec7a088099 | ||
|
|
aa4a959f1c | ||
|
|
9520fd9481 | ||
|
|
b0bfaf8400 | ||
|
|
1452bde1ac | ||
|
|
38150d25aa | ||
|
|
ab646085be | ||
|
|
219d65ba18 | ||
|
|
3021f59431 | ||
|
|
8393701d13 | ||
|
|
719b84ed2a | ||
|
|
0dc9aaabe8 | ||
|
|
cfda1ab335 | ||
|
|
c92872ab8f | ||
|
|
d6cb17e5b9 | ||
|
|
32051873be | ||
|
|
d4231ab0e1 | ||
|
|
c69535413c | ||
|
|
094a0f4388 | ||
|
|
2ee90482f1 | ||
|
|
ad34744272 | ||
|
|
4d54821119 | ||
|
|
142b6dd323 | ||
|
|
c1aebc39a3 | ||
|
|
e8cca7bcc6 | ||
|
|
09ef6074a7 | ||
|
|
76e6b5924b | ||
|
|
91366eddc5 | ||
|
|
09567f45c1 | ||
|
|
d7bbcd89f5 | ||
|
|
85599c69a0 | ||
|
|
c746119faa | ||
|
|
f8c31c4958 | ||
|
|
9f339f4ff2 | ||
|
|
ba92ef16f7 | ||
|
|
cdfde3aca2 | ||
|
|
c8f71780e3 | ||
|
|
f63010d915 | ||
|
|
13d7703e2d | ||
|
|
9e6c45f924 | ||
|
|
764dd1612a | ||
|
|
a96b721025 | ||
|
|
49e8aa9863 | ||
|
|
821dd7ed08 | ||
|
|
f506b00b57 | ||
|
|
bb9f48296a | ||
|
|
19bb912d27 | ||
|
|
25b24d68bd | ||
|
|
364f2582a3 | ||
|
|
5d9c8ad770 | ||
|
|
6e7d274c5a | ||
|
|
a903d0efbf | ||
|
|
9b1ac240b3 | ||
|
|
5e90483b95 | ||
|
|
777b56ae9a | ||
|
|
8b982dd6e3 | ||
|
|
eeba323429 | ||
|
|
305a18c6b0 | ||
|
|
d92961d769 | ||
|
|
2cc5035ceb | ||
|
|
4b249e1fe4 | ||
|
|
03d446ec0d | ||
|
|
44fe36fc3d | ||
|
|
4ba06c5335 | ||
|
|
3f94d93411 | ||
|
|
d8652d72e9 | ||
|
|
fa93b4e7f5 | ||
|
|
09ba7069dc | ||
|
|
e016d3d39c | ||
|
|
39cb1c3588 | ||
|
|
bd9a407ba5 | ||
|
|
93e59f230a | ||
|
|
5759a636e6 | ||
|
|
66e14c586c | ||
|
|
475cf4d253 | ||
|
|
a07e7af955 | ||
|
|
ec40d59152 | ||
|
|
9f9021cb69 | ||
|
|
0396809b65 | ||
|
|
6b07e8d168 | ||
|
|
4ac06a9194 | ||
|
|
1b3af9fb36 | ||
|
|
fb3d416c76 | ||
|
|
557284070a | ||
|
|
1e391aad4f | ||
|
|
2a2a705f6a | ||
|
|
eda0d90eb2 | ||
|
|
b49892ab8a | ||
|
|
83c05beb46 | ||
|
|
c1dee4cc6a | ||
|
|
230579d9a8 | ||
|
|
4ee30460b8 | ||
|
|
7331f90d1b | ||
|
|
3b2964748a | ||
|
|
473033257a | ||
|
|
8014b57a0d | ||
|
|
426f09b2b0 | ||
|
|
b75b0f63e6 | ||
|
|
8d51e9d948 | ||
|
|
992a7e6f62 | ||
|
|
16aa7f8d3a | ||
|
|
72bb8904be | ||
|
|
addae78ac8 | ||
|
|
d327d569f5 | ||
|
|
35a52b46c3 | ||
|
|
9a7311b825 | ||
|
|
4e77106a4c | ||
|
|
4783d2dbcc | ||
|
|
c7e567b2d2 | ||
|
|
8e9f28a5e0 | ||
|
|
3fddd36858 | ||
|
|
22a01b147d | ||
|
|
b14fde8eec | ||
|
|
fb0c2829e6 | ||
|
|
047824cad7 | ||
|
|
28ebdbc722 | ||
|
|
f86abd84c4 | ||
|
|
21fc42f12a | ||
|
|
3b7020be21 | ||
|
|
21f2a922d7 | ||
|
|
8f59093604 | ||
|
|
6314053331 | ||
|
|
658281f46d | ||
|
|
fb8d0e2983 | ||
|
|
791be82f27 | ||
|
|
a0dc490838 | ||
|
|
ae10573235 | ||
|
|
59a07e9cc7 | ||
|
|
8965f68c8d | ||
|
|
8b5970630e | ||
|
|
a4a56d06e3 | ||
|
|
f5f3ef680e | ||
|
|
bc43f696ca | ||
|
|
079d9ca3d5 | ||
|
|
79df700a81 | ||
|
|
190e13628d | ||
|
|
c01df877e4 | ||
|
|
93f85e6ea4 | ||
|
|
d5a4146c57 | ||
|
|
51b22069ee | ||
|
|
bf194cddaf | ||
|
|
f8662f20a3 | ||
|
|
951d3f9321 | ||
|
|
42ecba0214 | ||
|
|
fae05e5341 | ||
|
|
150735c810 | ||
|
|
37fd554842 | ||
|
|
e0e59e6110 | ||
|
|
0a4454ac5c | ||
|
|
911f94b080 | ||
|
|
340765af8e | ||
|
|
75da594fea | ||
|
|
358c36ef2b | ||
|
|
bc322e5cd6 | ||
|
|
7a0fbaeb8e | ||
|
|
7f16f52b8a | ||
|
|
237b11705a | ||
|
|
1eae3a70e9 | ||
|
|
4e0713bb18 | ||
|
|
0849bf51a0 | ||
|
|
be9390795c | ||
|
|
b4855290de | ||
|
|
c8e8c5acd7 | ||
|
|
408470b1d2 | ||
|
|
69900445b5 | ||
|
|
85f378c8f2 | ||
|
|
8ca359a5f1 | ||
|
|
d6b73cf296 | ||
|
|
9c650a29b1 | ||
|
|
072d351b8c | ||
|
|
e68c2f33a0 | ||
|
|
9df57e679d | ||
|
|
7b25e81a8d | ||
|
|
6793ab363f | ||
|
|
787fec4d5e | ||
|
|
19cdc81be0 | ||
|
|
bbc6b5d280 | ||
|
|
f0598117ab | ||
|
|
410f5e6f68 | ||
|
|
1d23d548d0 | ||
|
|
a93535d990 | ||
|
|
d98e054f34 | ||
|
|
8fff4dc17b | ||
|
|
ae817047ef | ||
|
|
a4ad93632d | ||
|
|
f7dac01eaa | ||
|
|
eb45bc2de0 | ||
|
|
b90894ae84 | ||
|
|
195b81faa0 | ||
|
|
38e80c6e1e | ||
|
|
94eadf2382 | ||
|
|
3f17c98516 | ||
|
|
0406eeb14f | ||
|
|
88a966cbcc | ||
|
|
e9281cb0cb | ||
|
|
f444f651e5 | ||
|
|
488b199950 | ||
|
|
980286a2e3 | ||
|
|
140e726414 | ||
|
|
951340dc1b | ||
|
|
c4f44f9ad5 | ||
|
|
c3fda2c09d | ||
|
|
3a6d3792db | ||
|
|
437024d3ed | ||
|
|
80dd552e15 | ||
|
|
2384def111 | ||
|
|
c450d10f93 | ||
|
|
b1cf7d7e1d | ||
|
|
f4c141f6ef | ||
|
|
81d19fdce7 | ||
|
|
55124c5313 | ||
|
|
607d19ab3e | ||
|
|
b85e22ea8b | ||
|
|
56068684ff | ||
|
|
2fd25f3621 | ||
|
|
c92ebd8f0a | ||
|
|
f432bdc14a | ||
|
|
81f6294a9b | ||
|
|
1c4bf2066e | ||
|
|
5d75490eab | ||
|
|
2ca03f5159 | ||
|
|
1b35623c59 | ||
|
|
268dd25f6f | ||
|
|
8eb36dc7c2 | ||
|
|
c679165016 | ||
|
|
283ed042f2 | ||
|
|
5b79979c41 | ||
|
|
f9dd931caf | ||
|
|
c1980aa241 | ||
|
|
0ca497643c | ||
|
|
65ab2ccada | ||
|
|
6670e18e88 | ||
|
|
b4122d04e0 | ||
|
|
a001f27730 | ||
|
|
164b8b842c | ||
|
|
75ea925753 | ||
|
|
f30614baf0 | ||
|
|
711ca64ad3 | ||
|
|
3112c9ae18 | ||
|
|
b939ac2442 | ||
|
|
7979ff145b | ||
|
|
ad6ed407d7 | ||
|
|
55e506ff99 | ||
|
|
54dc9e1970 | ||
|
|
9083885b75 | ||
|
|
29008867d0 | ||
|
|
5677ddfa8a | ||
|
|
411e93c4b4 | ||
|
|
3adeb15ace | ||
|
|
4d8bad9f1a | ||
|
|
bf1ccc04b5 | ||
|
|
035ba1b86b | ||
|
|
fd0118206d | ||
|
|
82c71368cf | ||
|
|
89a1668cf6 | ||
|
|
711ffac87c | ||
|
|
1c54896102 | ||
|
|
4b86260336 | ||
|
|
c4a42dda96 | ||
|
|
677aa45a90 | ||
|
|
47bc97347f | ||
|
|
5bb29763ad | ||
|
|
e3dce560cf | ||
|
|
48e5f4f2f4 | ||
|
|
7ad7701640 | ||
|
|
798001bb23 | ||
|
|
d0357b6124 | ||
|
|
7d2b43dc15 | ||
|
|
caea15af15 | ||
|
|
d964f354db | ||
|
|
09219263e1 | ||
|
|
35b04ba3a1 | ||
|
|
0e9df92730 | ||
|
|
fea5368a74 | ||
|
|
7b18e82c32 | ||
|
|
18b6c4b318 | ||
|
|
6119f7de7d | ||
|
|
251feddff8 | ||
|
|
65bc00535f | ||
|
|
af101bcd7b | ||
|
|
3b8b771c92 | ||
|
|
9f84d64981 | ||
|
|
843b9b4377 | ||
|
|
9e5dec8113 | ||
|
|
cc44fc47c9 | ||
|
|
e0ccb81dd8 | ||
|
|
c65d50160e | ||
|
|
5dbff0ca1c | ||
|
|
c026aab073 | ||
|
|
c03ae6e098 | ||
|
|
eafa89a624 | ||
|
|
e6a69de549 | ||
|
|
7276160030 | ||
|
|
66a0d61ad6 | ||
|
|
85314b3a23 | ||
|
|
a8adf18fcf | ||
|
|
ad95542c4c | ||
|
|
ac217f1209 | ||
|
|
9227344748 | ||
|
|
fcc9600f83 | ||
|
|
a650ca062a | ||
|
|
cc5b2ba554 | ||
|
|
2cf6e79c2e | ||
|
|
2608f1ffad | ||
|
|
63ccea687c | ||
|
|
dbb3e90ace | ||
|
|
3311363c27 | ||
|
|
dfdcba5a0c | ||
|
|
18f9c7a26f | ||
|
|
d0481896ba | ||
|
|
a707462979 | ||
|
|
9abea834b5 | ||
|
|
d0b6874f23 | ||
|
|
7ee2b7c4b3 | ||
|
|
a419fa985b | ||
|
|
c045bb4705 | ||
|
|
54ce2b15c8 | ||
|
|
044932163c | ||
|
|
e7730e9e69 | ||
|
|
e0d8574410 | ||
|
|
efc332aba7 | ||
|
|
c6e3fd381b | ||
|
|
67e77560a6 | ||
|
|
d8a6101460 | ||
|
|
c9122ded11 | ||
|
|
dc613c7c44 | ||
|
|
b235f951a1 | ||
|
|
878e83fc80 | ||
|
|
8673208931 | ||
|
|
6fc9312331 | ||
|
|
04746d9e87 | ||
|
|
61bc6c2b5b | ||
|
|
6311514ff6 | ||
|
|
886c609a44 | ||
|
|
75fff1c33a | ||
|
|
d1960cc3e7 | ||
|
|
3b53247dee | ||
|
|
25fdc12f18 | ||
|
|
672dc9fa4d | ||
|
|
c6bf3f50f4 | ||
|
|
64a8254aa6 | ||
|
|
9a44cd409e | ||
|
|
8649db18d8 | ||
|
|
62b95fa690 | ||
|
|
cf580e6c8c | ||
|
|
778b5832be | ||
|
|
d900a7cffc | ||
|
|
60adb692ec | ||
|
|
05063e35d2 | ||
|
|
f8a3d95e83 | ||
|
|
f09b7a699f | ||
|
|
9a97c44952 | ||
|
|
0dec70827d | ||
|
|
5c7dfe339b | ||
|
|
f1ac3d92dd | ||
|
|
10a4ceae65 | ||
|
|
74959e69c7 | ||
|
|
766cf7ef66 | ||
|
|
ca6ecc8548 | ||
|
|
662d6e71de | ||
|
|
c3018b6ae2 | ||
|
|
4bac37850a | ||
|
|
1618c84e07 | ||
|
|
c42fd0abdc | ||
|
|
9122baa9d7 | ||
|
|
86a09e5635 | ||
|
|
af8a6991b1 | ||
|
|
3fc342ad3e | ||
|
|
6cbf572512 | ||
|
|
7d18e3eedc | ||
|
|
6d7e125743 | ||
|
|
6816921f47 | ||
|
|
603199f1d4 | ||
|
|
3487b8ae53 | ||
|
|
d853209c3f | ||
|
|
a26c953291 | ||
|
|
c6eba58cf7 | ||
|
|
4c50b6e83a | ||
|
|
31f4368851 | ||
|
|
2afda399e6 | ||
|
|
8bd20b97cd | ||
|
|
d6306c7efd | ||
|
|
1faddafbe1 | ||
|
|
ea0c03c3ea | ||
|
|
c2776e993f | ||
|
|
9465e36b37 | ||
|
|
10c39f9bcb | ||
|
|
c827f6bf21 | ||
|
|
f74db00fb1 | ||
|
|
3f544496b7 | ||
|
|
ab29d70f40 | ||
|
|
fac4b6bcd0 | ||
|
|
bc34789bdc | ||
|
|
3dc38973e1 | ||
|
|
f7951324ea | ||
|
|
a87ae4794e | ||
|
|
70067117f5 | ||
|
|
7d37d7a521 | ||
|
|
8482b6eb46 | ||
|
|
47e0347195 | ||
|
|
155f15a407 | ||
|
|
7aac235f14 | ||
|
|
3cf0334686 | ||
|
|
6fa40778f7 | ||
|
|
93b8c4a4f8 | ||
|
|
74b3ce154c | ||
|
|
0c585bcb07 | ||
|
|
78bb6ec80c | ||
|
|
c5f7e61c82 | ||
|
|
b8d03a0384 | ||
|
|
200bd891f3 | ||
|
|
64c159931c | ||
|
|
714add73fb | ||
|
|
8a449172a0 | ||
|
|
059aea351e | ||
|
|
ce4de56b7c | ||
|
|
2e270b07f0 | ||
|
|
aa52764215 | ||
|
|
67e2d731b5 | ||
|
|
a94c465759 | ||
|
|
5755ae3f48 | ||
|
|
5a82d31502 | ||
|
|
ab2bd0ef5e | ||
|
|
01c3ed5c48 | ||
|
|
04dc606831 | ||
|
|
0035a93d60 | ||
|
|
445b63ec3a | ||
|
|
c63ab15768 | ||
|
|
7a8b2b7d79 | ||
|
|
0162ac42d8 | ||
|
|
e7ed4fe568 | ||
|
|
0a37d8c8d5 | ||
|
|
f6a48235d2 | ||
|
|
ca43df30f2 | ||
|
|
2bcfaf27f2 | ||
|
|
adfdb7bae5 | ||
|
|
196125952b | ||
|
|
2fbd1b238d | ||
|
|
c1a979a643 | ||
|
|
ff2c52eda8 | ||
|
|
a4fddc7897 | ||
|
|
ecf60103a1 | ||
|
|
44a46d491b | ||
|
|
e9839e3b30 | ||
|
|
cd27922ce6 | ||
|
|
d9946b0207 | ||
|
|
ebf552e448 | ||
|
|
5c34c991cf | ||
|
|
d10e8bfdd4 | ||
|
|
3185ed5a92 | ||
|
|
11a49bfacd | ||
|
|
a2bb8e5f90 | ||
|
|
237603dad0 | ||
|
|
a46c5dbfc9 | ||
|
|
590faa4e83 | ||
|
|
9dc8bcf7e9 | ||
|
|
4f60390b34 | ||
|
|
48fb933266 | ||
|
|
40d9121c8f | ||
|
|
ad06162b29 | ||
|
|
ffd9a2c4b5 | ||
|
|
733b206664 | ||
|
|
1986dc1ae7 | ||
|
|
beac6eedeb | ||
|
|
a9baddb6e0 | ||
|
|
2a3d9e8e3d | ||
|
|
5badf55c3c | ||
|
|
c01c2d7d31 | ||
|
|
5dae7314a1 | ||
|
|
663bcf929e | ||
|
|
cc77a060e1 | ||
|
|
cb32d58f21 | ||
|
|
5cac8f61e7 | ||
|
|
eccae62149 | ||
|
|
020b1414aa | ||
|
|
6f554eefa8 | ||
|
|
442147391c | ||
|
|
b86cd20e8e | ||
|
|
a9fbb07a55 | ||
|
|
9902e823b9 | ||
|
|
ac38507462 | ||
|
|
872e676f59 | ||
|
|
dae1cc9909 | ||
|
|
1b460941d5 | ||
|
|
f5a508ed0b | ||
|
|
9ec44fed71 | ||
|
|
c3e0a845d1 | ||
|
|
26595860cc | ||
|
|
e7b72de33c | ||
|
|
71b14727a7 | ||
|
|
6d4463a5b7 | ||
|
|
c894161060 | ||
|
|
4de76b44f2 | ||
|
|
80ce576ea5 | ||
|
|
c391faccfc | ||
|
|
8f50a96d51 | ||
|
|
198ee84d9a | ||
|
|
8021a71647 | ||
|
|
43961ec6f2 | ||
|
|
bac9c83f33 | ||
|
|
46ff8cb278 | ||
|
|
15e11da84b | ||
|
|
2d3f623174 | ||
|
|
c57fa0fc39 | ||
|
|
32672b7472 | ||
|
|
821720db1d | ||
|
|
be4bf7fa7f | ||
|
|
5f2a3fde90 | ||
|
|
5811b3d377 | ||
|
|
42936ca6fa | ||
|
|
f28fa76890 | ||
|
|
3404a997ac | ||
|
|
017c58e44c | ||
|
|
0ed58954e3 | ||
|
|
3e0ec8b752 | ||
|
|
55dc76f099 | ||
|
|
b732c0afe9 | ||
|
|
13d73a33e2 | ||
|
|
43d33fb121 | ||
|
|
0880485e73 | ||
|
|
bc0c2ea588 | ||
|
|
89af27e94e | ||
|
|
06bbdec276 | ||
|
|
9e4e8558e5 | ||
|
|
651c8ba971 | ||
|
|
fd0615587e | ||
|
|
0413b998e8 | ||
|
|
edb12399ce | ||
|
|
1c6c542d15 | ||
|
|
e69a509b9d | ||
|
|
26e3a0881d | ||
|
|
a1cea6bf56 | ||
|
|
46e3c9dc48 | ||
|
|
2c9f6a157a | ||
|
|
cb30f00513 | ||
|
|
600c2b3a7e | ||
|
|
423606631b | ||
|
|
28e6cb9b48 | ||
|
|
decebec7db | ||
|
|
8ddbe07d3d | ||
|
|
2047921cde | ||
|
|
b9670cf385 | ||
|
|
eb84bf476b | ||
|
|
d9cc3314d3 | ||
|
|
a866875383 | ||
|
|
3aa5024cb2 | ||
|
|
eeef486384 | ||
|
|
0757c79271 | ||
|
|
09d953c4dd | ||
|
|
2bc91f2612 | ||
|
|
fddafec0b6 | ||
|
|
10a2d87ee6 | ||
|
|
e37b930b07 | ||
|
|
0038395009 | ||
|
|
b40005c11e | ||
|
|
0f3b212586 | ||
|
|
8614f617a2 | ||
|
|
f29a78a6af | ||
|
|
6e7c50cba5 | ||
|
|
fef8165be2 | ||
|
|
ebbb2f1a72 | ||
|
|
93d1e1259a | ||
|
|
37cbb7e847 | ||
|
|
33fd5e8fa3 | ||
|
|
7f37607b4e | ||
|
|
712018cb19 | ||
|
|
37646c0893 | ||
|
|
82810fbcb3 | ||
|
|
9119a1bd65 | ||
|
|
824f4257e0 | ||
|
|
bc255fba73 | ||
|
|
14f6dee027 | ||
|
|
a258a067a5 | ||
|
|
a802e275f6 | ||
|
|
719163331a | ||
|
|
1c6c903709 | ||
|
|
c742f4e03e | ||
|
|
6c8c6085cb | ||
|
|
19963168d3 | ||
|
|
1513bd3301 | ||
|
|
28fe89066e | ||
|
|
381b3bdd9f | ||
|
|
41e87e7f01 | ||
|
|
5a3b35cb83 | ||
|
|
2d592027fb | ||
|
|
4c01af52f0 | ||
|
|
f313d06bdd | ||
|
|
f12384b282 | ||
|
|
4051b1d4e0 | ||
|
|
ad6c7415a6 | ||
|
|
dc7d596ace | ||
|
|
915b8d3fe6 | ||
|
|
afe9a412c6 | ||
|
|
bc4ed0c8c1 | ||
|
|
30758cfd4c | ||
|
|
f61ee80185 | ||
|
|
501e13eaee | ||
|
|
5203eae005 | ||
|
|
3a2dcc23e1 | ||
|
|
0bb2443dc0 | ||
|
|
4c0f1ce46f | ||
|
|
2f7cb99e00 | ||
|
|
66322d63d9 | ||
|
|
a384772c07 | ||
|
|
5b9e9f54a8 | ||
|
|
55313a34a0 | ||
|
|
651f6dda3b | ||
|
|
532ad89330 | ||
|
|
ee10e9c23a | ||
|
|
a1167b8f11 | ||
|
|
acf05f470a | ||
|
|
1f302c903f | ||
|
|
ff944683b8 | ||
|
|
610edaae60 | ||
|
|
4c36b41313 | ||
|
|
365d5ee316 | ||
|
|
74a7d3b612 | ||
|
|
68ebe39481 | ||
|
|
793940f525 | ||
|
|
cea439d213 | ||
|
|
ce540fe25b | ||
|
|
de791a2201 | ||
|
|
c253e8e975 | ||
|
|
f4e9069cec | ||
|
|
18ff648488 | ||
|
|
6d05163a21 | ||
|
|
83af204be1 | ||
|
|
3210441627 | ||
|
|
a86ef65e76 | ||
|
|
0b3cc45032 | ||
|
|
675ace1d9a | ||
|
|
69bd42af05 | ||
|
|
c0443e4da9 | ||
|
|
4a67359a78 | ||
|
|
3711bf3664 | ||
|
|
b6950a4083 | ||
|
|
5cfdccdc2a | ||
|
|
b3a0d67ac9 | ||
|
|
414829383c | ||
|
|
e40749a18b | ||
|
|
ae7c57eb45 | ||
|
|
81d3adbd35 | ||
|
|
a9908cb745 | ||
|
|
333e989221 | ||
|
|
96d64a0b21 | ||
|
|
0dcc3892da | ||
|
|
c8b5b58320 | ||
|
|
dc327aec6d | ||
|
|
2e50454e1c | ||
|
|
3cc543c1e5 | ||
|
|
019ca725d8 | ||
|
|
4433737c43 | ||
|
|
2973ca1e4d | ||
|
|
b4ccdd244b | ||
|
|
4859282306 | ||
|
|
4a71d7a49a | ||
|
|
c1f81c963f | ||
|
|
9800311adb | ||
|
|
0c28221ae2 | ||
|
|
2edfb9a0c2 | ||
|
|
225870213b | ||
|
|
d11d4b167d | ||
|
|
1b025e0aa2 | ||
|
|
3c2c1f01f2 | ||
|
|
c270aed781 | ||
|
|
0295c17393 | ||
|
|
e405e375f6 | ||
|
|
81f42a4148 | ||
|
|
b6542299ba | ||
|
|
1058c1bc87 | ||
|
|
869a1e1350 | ||
|
|
600d5db942 | ||
|
|
18430f2abe | ||
|
|
8e04ade980 | ||
|
|
929ac552ea | ||
|
|
4718999c9e | ||
|
|
121ffe5d3f | ||
|
|
11e01e416d | ||
|
|
7c10962a5f | ||
|
|
bba5b22d77 | ||
|
|
9b7ab3d204 | ||
|
|
840d2dcd31 | ||
|
|
3771e7af13 | ||
|
|
559a963a87 | ||
|
|
b0f51ebfcd | ||
|
|
9b4c6c2e7e | ||
|
|
3909f12992 | ||
|
|
a8eebe9da6 | ||
|
|
ff958a8c96 | ||
|
|
c65b316217 | ||
|
|
98180d0ea2 | ||
|
|
d906b8e60d | ||
|
|
c705e8712c | ||
|
|
8dbd85484e | ||
|
|
c989649176 | ||
|
|
2eea25e108 | ||
|
|
d4ab968fe2 | ||
|
|
15dae6e74a | ||
|
|
f8b3649f1b | ||
|
|
9cf9d4c332 | ||
|
|
b8816c4089 | ||
|
|
7d58793a37 | ||
|
|
e6acab33ae | ||
|
|
4ac9b4ea2c | ||
|
|
cb3f458d4e | ||
|
|
f51f48646a | ||
|
|
d5a28f3d91 | ||
|
|
d29bc2987c | ||
|
|
c6d9b31498 | ||
|
|
50749f5374 | ||
|
|
2313d45752 | ||
|
|
cb85b66b16 | ||
|
|
28d323617a | ||
|
|
18225f82f2 | ||
|
|
f5f6b33676 | ||
|
|
cd044b35aa | ||
|
|
ad715d7fbb | ||
|
|
d674d67143 | ||
|
|
44961e6acb | ||
|
|
30db2c5a6b | ||
|
|
3b2f66a3b8 | ||
|
|
6f489f0cf3 | ||
|
|
fd20067433 | ||
|
|
e336cb6999 | ||
|
|
a9dc2ec479 | ||
|
|
33de786791 | ||
|
|
1cebbb7c45 | ||
|
|
edb65edeec | ||
|
|
8498d3edb6 | ||
|
|
30e75b1288 | ||
|
|
ca0f5d5363 | ||
|
|
6bdab612b5 | ||
|
|
6a556e55ad | ||
|
|
00801b5b04 | ||
|
|
74f6630df4 | ||
|
|
61469d8cb9 | ||
|
|
94288b7e96 | ||
|
|
050e242a13 | ||
|
|
3bd64de10b | ||
|
|
4d3f2e1e0b | ||
|
|
8a3ea373f6 | ||
|
|
f181f533ae | ||
|
|
00fc9c0dda | ||
|
|
1f7f047d58 | ||
|
|
53acce3369 | ||
|
|
757fd38c51 | ||
|
|
076b69ae93 | ||
|
|
9a9cff7ebd | ||
|
|
0356d3ea7e | ||
|
|
3d593b35d1 | ||
|
|
c4ca3313fe | ||
|
|
2582720028 | ||
|
|
19e58af546 | ||
|
|
2d2c5fc06e | ||
|
|
a5d2558112 | ||
|
|
d662a641e6 | ||
|
|
00364f318c | ||
|
|
064bf7204a | ||
|
|
67f3bc6808 | ||
|
|
81f3bdffc9 | ||
|
|
5eca8b1ade | ||
|
|
d8634b1fc2 | ||
|
|
dbeb793710 | ||
|
|
800e742387 | ||
|
|
cd0e603521 | ||
|
|
13c25f77c3 | ||
|
|
09d5108fb3 | ||
|
|
b9776041c1 | ||
|
|
3d62b16259 | ||
|
|
b6012976fb | ||
|
|
1af129b94f | ||
|
|
36a4768917 | ||
|
|
f5e21d8a49 | ||
|
|
005cd93c3e | ||
|
|
88da43b924 | ||
|
|
423bcd8aa8 | ||
|
|
d704ffa1c9 | ||
|
|
408122c60c | ||
|
|
de08aa6a1d | ||
|
|
3a8dfca16d | ||
|
|
751596cd89 | ||
|
|
253635bde4 | ||
|
|
e2c22776ce | ||
|
|
a78d3a221e | ||
|
|
fe065819af | ||
|
|
f657e15b7b | ||
|
|
f0c1ebd3a1 | ||
|
|
4dbee9b596 | ||
|
|
3e0b41ef0f | ||
|
|
7a26c271de | ||
|
|
120a25e6db | ||
|
|
eac6f09832 | ||
|
|
abbaccde9d | ||
|
|
08fce99db7 | ||
|
|
ab67243911 | ||
|
|
fce7b43c2e | ||
|
|
737adf44f3 | ||
|
|
3a1f3d1feb | ||
|
|
b4670b1203 | ||
|
|
bb4e854198 | ||
|
|
d1d42eb1d3 | ||
|
|
8165dcc251 | ||
|
|
d92c32764a | ||
|
|
43eb2a5b9d | ||
|
|
3091370f14 | ||
|
|
e710c20a0d | ||
|
|
ca36d10121 | ||
|
|
de70dd2910 | ||
|
|
7d31d6958b | ||
|
|
54be67935b | ||
|
|
ac129143a7 | ||
|
|
21cdf81256 | ||
|
|
850beb081b | ||
|
|
14cbce3fdd | ||
|
|
7800633304 | ||
|
|
75fcb46b47 | ||
|
|
7a3c67f6c5 | ||
|
|
d03fca2970 | ||
|
|
a1505ea945 | ||
|
|
366577891f | ||
|
|
2f37571b64 | ||
|
|
5c14e0b8cf | ||
|
|
1eece9111d | ||
|
|
d07996d9d8 | ||
|
|
48c3c11cfc | ||
|
|
0b9ea07576 | ||
|
|
fba26b3f84 | ||
|
|
8c0f8e8505 | ||
|
|
d5850f154c | ||
|
|
d31e854488 | ||
|
|
d40c3c76fa | ||
|
|
0f02253e4e | ||
|
|
4fe99907e1 | ||
|
|
9714da4309 | ||
|
|
945ff01553 | ||
|
|
c1de249792 | ||
|
|
5c77562535 | ||
|
|
e905e7e3c8 | ||
|
|
8cdcd86ba9 | ||
|
|
5e23824940 | ||
|
|
051cb01fdc | ||
|
|
cedef761a6 | ||
|
|
3247357c5d | ||
|
|
26b0988075 | ||
|
|
9e01767688 | ||
|
|
42ca53567d | ||
|
|
9c8f4e9060 | ||
|
|
c923293050 | ||
|
|
c41121a00f | ||
|
|
9a565cdb14 | ||
|
|
628592e1af | ||
|
|
e3696871c9 | ||
|
|
6d114f0d11 | ||
|
|
07280b0754 | ||
|
|
b449bef03e | ||
|
|
d8a45a5872 | ||
|
|
e91ed6e5a3 | ||
|
|
c4422e65f8 | ||
|
|
801c19da80 | ||
|
|
98f4ae6bb7 | ||
|
|
934d653b21 | ||
|
|
731d6d1e47 | ||
|
|
242ceb7ccb | ||
|
|
49ed64bba9 | ||
|
|
e2c1157227 | ||
|
|
b7e63aff1a | ||
|
|
181998cb37 | ||
|
|
58f43ba642 | ||
|
|
c57f8fee22 | ||
|
|
bc7b6d9529 | ||
|
|
c6cbecc5d5 | ||
|
|
f6b065085b | ||
|
|
e72094543a | ||
|
|
99f88edcc3 | ||
|
|
aa51f96212 | ||
|
|
67bfd31765 | ||
|
|
2ca41f446b | ||
|
|
eb828db2d7 | ||
|
|
95579ca716 | ||
|
|
8e86fe6243 | ||
|
|
593b90230e | ||
|
|
fc7a8106fb | ||
|
|
2c76741976 | ||
|
|
e91f78bafe | ||
|
|
d4458782b8 | ||
|
|
29b5b774eb | ||
|
|
cd517ea403 | ||
|
|
ecad712b26 | ||
|
|
2d4bd75ac9 | ||
|
|
1d36ca2dc9 | ||
|
|
da4f02521f | ||
|
|
c430c5c07f | ||
|
|
f027c75aa4 | ||
|
|
0334768c30 | ||
|
|
a677c6abc3 | ||
|
|
7326cb845a | ||
|
|
ef866e12d7 | ||
|
|
97dbe7b31a | ||
|
|
7dbfd22acb | ||
|
|
bc84d609d0 | ||
|
|
712b1e7281 | ||
|
|
ae98ad2d49 | ||
|
|
5fe06f76c1 | ||
|
|
7901818eec | ||
|
|
20ba2acf3c | ||
|
|
a65c4cc532 | ||
|
|
ee466d69b0 | ||
|
|
eab4b53d3a | ||
|
|
66695f00c9 | ||
|
|
f15b012c9f | ||
|
|
a8deadc38c | ||
|
|
615a776af4 | ||
|
|
aee22fe540 | ||
|
|
bb5588fe58 | ||
|
|
eda9ee41fb | ||
|
|
9ef904fed1 | ||
|
|
4c29c3c4cf | ||
|
|
a229d1e46c | ||
|
|
7afcad0743 | ||
|
|
f8f906a29c | ||
|
|
854802ea7f | ||
|
|
0f6ac8920c | ||
|
|
129d173624 | ||
|
|
fe616a6ce8 | ||
|
|
9438b6979b | ||
|
|
e1713bfc0b | ||
|
|
7bca5305ec | ||
|
|
8396f1b572 | ||
|
|
2acda5ea06 | ||
|
|
ce52b2f750 | ||
|
|
7b6774050e | ||
|
|
f5afe618e1 | ||
|
|
9c19eff170 | ||
|
|
06949a96d9 | ||
|
|
1ad7f84011 | ||
|
|
2055aff48a | ||
|
|
f14d050979 | ||
|
|
9026f3b505 | ||
|
|
d35c7577bf | ||
|
|
a727c4c38a | ||
|
|
9c73670845 | ||
|
|
f862d65f4b | ||
|
|
3ea56af2c3 | ||
|
|
00b5b79886 | ||
|
|
9aa88dc537 | ||
|
|
ea59d3bf58 | ||
|
|
324b720cda | ||
|
|
b0c1a74f63 | ||
|
|
5494a72941 | ||
|
|
1078bacd70 | ||
|
|
78b4651106 | ||
|
|
aacb232fc3 | ||
|
|
09c41b88ef | ||
|
|
46854d4025 | ||
|
|
7d08ffc53c | ||
|
|
87192bd07d | ||
|
|
d8f3f698e3 | ||
|
|
a4c4e4c52a | ||
|
|
658cb83894 | ||
|
|
a7437be120 | ||
|
|
0a6148bbc4 | ||
|
|
d9ba8b8880 | ||
|
|
530ba85969 | ||
|
|
f0797aee40 | ||
|
|
2092156157 | ||
|
|
3fe43be2a8 | ||
|
|
a48ba691b4 | ||
|
|
6bc1e53244 | ||
|
|
d04b6db96a | ||
|
|
ba344fd56b | ||
|
|
badc0ee6c4 | ||
|
|
5b3cd98a29 | ||
|
|
eca0080b39 | ||
|
|
e3b600eaff | ||
|
|
87716d051d | ||
|
|
4ba6148f57 | ||
|
|
4b7bac9ba1 | ||
|
|
b35aafc391 | ||
|
|
9f7133ac4f | ||
|
|
8a95ff6453 | ||
|
|
2db8d523ff | ||
|
|
49f3aa1fcf | ||
|
|
6825825891 | ||
|
|
107b8a48f2 | ||
|
|
c4b8c7add1 | ||
|
|
02a9372634 | ||
|
|
a3811128af | ||
|
|
21b639cd8e | ||
|
|
433e42d933 | ||
|
|
9a6628b592 | ||
|
|
a46d0856d3 | ||
|
|
9ae3cf8da3 | ||
|
|
e488985708 | ||
|
|
9672dcc299 | ||
|
|
0279384ed6 | ||
|
|
4ad93b421d | ||
|
|
7dac0db939 | ||
|
|
7fc8ad9c77 | ||
|
|
9781d965ff | ||
|
|
3bfa2fc525 | ||
|
|
8f2e1b0cd1 | ||
|
|
b393089769 | ||
|
|
14e752197e | ||
|
|
dc1307028a | ||
|
|
d31d028a0c | ||
|
|
df6bc02489 | ||
|
|
581c919132 | ||
|
|
7d22b514a4 | ||
|
|
c5ebafa893 | ||
|
|
a527bb5122 | ||
|
|
41ac46b204 | ||
|
|
28aa3dce38 | ||
|
|
ec6daa7be0 | ||
|
|
62a8b95a16 | ||
|
|
2980555287 | ||
|
|
f2d98ebcdf | ||
|
|
a5c6314861 | ||
|
|
25cdd2dbda | ||
|
|
dc3b95da36 | ||
|
|
d27fddda45 | ||
|
|
4b52636022 | ||
|
|
e8c59469c4 | ||
|
|
96ba877a30 | ||
|
|
bbcfa128e5 | ||
|
|
e914fcde5e | ||
|
|
c29c00dac1 | ||
|
|
0873d67552 | ||
|
|
e5b4f36b4b | ||
|
|
a51fba9745 | ||
|
|
3d144e58b0 | ||
|
|
3b2e92a67d | ||
|
|
a28e248867 | ||
|
|
e1b0f08321 | ||
|
|
86b8c2bea6 | ||
|
|
1aa1467872 | ||
|
|
59129449fd | ||
|
|
dad60ef40a | ||
|
|
422b41cf8f | ||
|
|
bb3b813ce4 | ||
|
|
d796eee8a0 | ||
|
|
60aa8f6ab2 | ||
|
|
cf69ee46dc | ||
|
|
37ab508d1b | ||
|
|
310d4d00e7 | ||
|
|
b43d6f3267 | ||
|
|
bae38f3b65 | ||
|
|
0dbbdd000e | ||
|
|
1e49e686c9 | ||
|
|
08a6cdb864 | ||
|
|
13bcd5d244 | ||
|
|
2b1b4b9315 | ||
|
|
819d7aeb4c | ||
|
|
784bdafccf | ||
|
|
a93bce2ae4 | ||
|
|
7e58f6d773 | ||
|
|
7908de0965 | ||
|
|
cb1777c794 | ||
|
|
21dfbc2d61 | ||
|
|
885c950a15 | ||
|
|
967445ab34 | ||
|
|
2a0616b050 | ||
|
|
68f7ca517e | ||
|
|
7c44a0b642 | ||
|
|
52308e2f15 | ||
|
|
ef1dbca245 | ||
|
|
ba9548c196 | ||
|
|
6a3f7e95a4 | ||
|
|
0afe985352 | ||
|
|
9f0217aa44 | ||
|
|
f714ef6798 | ||
|
|
c9fe34f271 | ||
|
|
19354fa37c | ||
|
|
8c749a2d02 | ||
|
|
ba8adb9df6 | ||
|
|
a44ca60441 | ||
|
|
ee17eb2665 | ||
|
|
347874d42f | ||
|
|
fa8ef47510 | ||
|
|
5ccd29f20f | ||
|
|
0719510ab5 | ||
|
|
a83982ea1b | ||
|
|
30ddc55e03 | ||
|
|
5ed0b299aa | ||
|
|
a593f567d1 | ||
|
|
b3d201b909 | ||
|
|
045c87c98c | ||
|
|
49e8222219 | ||
|
|
3f4c74dac8 | ||
|
|
a62235e983 | ||
|
|
7997d808ce | ||
|
|
7b928dc6b4 | ||
|
|
b7147022cc | ||
|
|
b8c2fc182a | ||
|
|
433918a151 | ||
|
|
1cb9c932b8 | ||
|
|
92123052e1 | ||
|
|
bccc736fea | ||
|
|
5fabba6bb9 | ||
|
|
7cb9836574 | ||
|
|
3b9357976d | ||
|
|
afa57b26a4 | ||
|
|
259dd1fbab | ||
|
|
77cbcad4dc | ||
|
|
0f60b2b34d | ||
|
|
c910f2177a | ||
|
|
93dc310178 | ||
|
|
ec91cbb962 | ||
|
|
e8d01efc58 | ||
|
|
7767c7dc33 | ||
|
|
61b1c5547b | ||
|
|
6aab62d12f | ||
|
|
8c7677bbb2 | ||
|
|
7b9892b414 | ||
|
|
57756eb2a8 | ||
|
|
421b5dd024 | ||
|
|
7b9203e84f | ||
|
|
2885115ed8 | ||
|
|
bbde291760 | ||
|
|
cb7881ce02 | ||
|
|
dba7375faa | ||
|
|
bfbfd8a99b | ||
|
|
61652e1eb3 | ||
|
|
c50e737beb | ||
|
|
696ad43044 | ||
|
|
700e964221 | ||
|
|
e32351eee0 | ||
|
|
440883fba8 | ||
|
|
ff2aa6a5db | ||
|
|
c447dccd21 | ||
|
|
095e1f6016 | ||
|
|
135686c252 | ||
|
|
2d3b41a3ee | ||
|
|
520b5d71f3 | ||
|
|
895530ce71 | ||
|
|
ddcc5d3065 | ||
|
|
6a8bf567ae | ||
|
|
9e5f931626 | ||
|
|
c4a46297a0 | ||
|
|
88bc541d0d | ||
|
|
4a1913b447 | ||
|
|
b241b921fa | ||
|
|
0eaab4e60a | ||
|
|
1ec48d46c9 | ||
|
|
acf9a046e0 | ||
|
|
f3c2c4930d | ||
|
|
ce77a7ca75 | ||
|
|
786d60120a | ||
|
|
d9e43cda4c | ||
|
|
b88c79938b | ||
|
|
d3ee256286 | ||
|
|
acf3781bd3 | ||
|
|
ef98de7a8f | ||
|
|
3796d6424e | ||
|
|
cb96c4a848 | ||
|
|
b620b36f28 | ||
|
|
3859f72c5a | ||
|
|
c797953291 | ||
|
|
1ec440684b | ||
|
|
b3f16569fd | ||
|
|
95dd6094e0 | ||
|
|
63e6c5ab66 | ||
|
|
bdbc1c2d4d | ||
|
|
f40621141f | ||
|
|
720eb58a89 | ||
|
|
150e3cfed7 | ||
|
|
9cd8261eda | ||
|
|
5a71e16f15 | ||
|
|
bc378823bd | ||
|
|
d87ecbb3f2 | ||
|
|
bfe557edc3 | ||
|
|
9880cd630a | ||
|
|
dd87f510c6 | ||
|
|
a0e3cd1268 | ||
|
|
e807f9c14a | ||
|
|
e84927a216 | ||
|
|
2178427977 | ||
|
|
7685e7fcdb | ||
|
|
4892c468eb | ||
|
|
fdf5f5f1f1 | ||
|
|
127d55579f | ||
|
|
b44a4da6e1 | ||
|
|
d345542098 | ||
|
|
d8acec2630 | ||
|
|
7485757458 | ||
|
|
4afc040efa | ||
|
|
88b43cfa14 | ||
|
|
b004e8f3ba | ||
|
|
87360643ab | ||
|
|
2ea90bfc52 | ||
|
|
2bdf0d382e | ||
|
|
2816a54a8f | ||
|
|
7e88b594dd | ||
|
|
14552806a1 | ||
|
|
353be53ba8 | ||
|
|
0bba8702a1 | ||
|
|
87ccce1867 | ||
|
|
47c13a7270 | ||
|
|
8df6c6be4f | ||
|
|
dfe990b277 | ||
|
|
ef3bd6ddaf | ||
|
|
2197aa0c74 | ||
|
|
9436090b7b | ||
|
|
eacff4c797 | ||
|
|
a373958ffd | ||
|
|
49e146c8c2 | ||
|
|
5f12776252 | ||
|
|
07916dec2e | ||
|
|
80b76cd156 | ||
|
|
69246119f6 | ||
|
|
61d8b54dcb | ||
|
|
03ac05fc64 | ||
|
|
3b8d3b70ea | ||
|
|
ef040f2b7a | ||
|
|
3e8ea2015f | ||
|
|
0a25c48b5d | ||
|
|
58d0a1ad8c | ||
|
|
598eb4ab31 | ||
|
|
2a2069fe9e | ||
|
|
d207508ac5 | ||
|
|
2d88fc35d8 | ||
|
|
1fd0b9976b | ||
|
|
d3c4fa011d | ||
|
|
40680f1e00 | ||
|
|
0ef99c7649 | ||
|
|
f54f1e6fc5 | ||
|
|
2bcf6743a5 | ||
|
|
1dee0683ef | ||
|
|
4a8e148ccf | ||
|
|
dc748c2376 | ||
|
|
0a47fc22b3 | ||
|
|
b373e3c7fe | ||
|
|
227aa97adc | ||
|
|
b8e8c726be | ||
|
|
b300961d75 | ||
|
|
fa870da5c9 | ||
|
|
f75f623767 | ||
|
|
eadc950298 | ||
|
|
0a2798575c | ||
|
|
122a8c1e03 | ||
|
|
2f55ba03c8 | ||
|
|
8179da3ef8 | ||
|
|
878e5a10eb | ||
|
|
e3b782e7cb | ||
|
|
fb0c92bbeb | ||
|
|
80d25cc088 | ||
|
|
eb8ccb4fb5 | ||
|
|
09427c23ba | ||
|
|
93ec88629b | ||
|
|
fe53483ed8 | ||
|
|
83d2f4fe2c | ||
|
|
d50bcb476a | ||
|
|
a52ab303e9 | ||
|
|
30ec556c4a | ||
|
|
cdd6397285 | ||
|
|
114fe7252c | ||
|
|
4f7018700a | ||
|
|
7a16083095 | ||
|
|
1c81f9c8b2 | ||
|
|
7aa7ae4dd1 | ||
|
|
26401d45c0 | ||
|
|
f37dad8814 | ||
|
|
adcc0ad068 | ||
|
|
8f269a56f9 | ||
|
|
263af5a76f | ||
|
|
6081a34833 | ||
|
|
a7721f5186 | ||
|
|
b58d34010f | ||
|
|
4d8496f4ad | ||
|
|
0db773e395 | ||
|
|
b16265458e | ||
|
|
93dd8bda71 | ||
|
|
aeec91fae8 | ||
|
|
e06a7d4fef | ||
|
|
92f0eb7405 | ||
|
|
1a0a8e1f6a | ||
|
|
8bdfcb935b | ||
|
|
7964410618 | ||
|
|
ad9087316a | ||
|
|
c28dcab2ca | ||
|
|
0e163a8e68 | ||
|
|
6d9e83cb1f | ||
|
|
d084f68a45 | ||
|
|
370139f7ef | ||
|
|
2f19cf2ff4 | ||
|
|
568d561c0c | ||
|
|
6fc44d467e | ||
|
|
f70576b8d0 | ||
|
|
ecb385cf60 | ||
|
|
49aa12067b | ||
|
|
f4b9a3331c | ||
|
|
eeec6173e0 | ||
|
|
ed107606d3 | ||
|
|
6f2a8df168 | ||
|
|
3c18286c69 | ||
|
|
27041e63e6 | ||
|
|
24b982d87c | ||
|
|
8a0f4ed6d2 | ||
|
|
21d6f002b3 | ||
|
|
eafd5a9fe0 | ||
|
|
2900b9fb1b | ||
|
|
bc2b14739c | ||
|
|
a355dda5b7 | ||
|
|
c9b3b7ce3f | ||
|
|
7435e8bd91 | ||
|
|
ff6f555793 | ||
|
|
dee0b53cfe | ||
|
|
e29877e958 | ||
|
|
446f4615bf | ||
|
|
884e90ac39 | ||
|
|
4400618830 | ||
|
|
50b66f8bea | ||
|
|
d5bd5957a4 | ||
|
|
7c2017bd03 | ||
|
|
2ff62f638b | ||
|
|
5485764c08 | ||
|
|
eb5c25aa35 | ||
|
|
ba3b60b07b | ||
|
|
46e554e2fc | ||
|
|
894afb08a1 | ||
|
|
ba398de05c | ||
|
|
85ca868ee4 | ||
|
|
a2cedd0513 | ||
|
|
de21143246 | ||
|
|
b5ba126aae | ||
|
|
864afee9c3 | ||
|
|
410bab6d05 | ||
|
|
1d55981cbb | ||
|
|
4fce9a4565 | ||
|
|
6f6eb88ebb | ||
|
|
694fa611ef | ||
|
|
7d641711fc | ||
|
|
81688cb8c8 | ||
|
|
5ed64d2be4 | ||
|
|
be257eeb03 | ||
|
|
0fce8ac1a5 | ||
|
|
bb56827f4f | ||
|
|
b17748dc1e | ||
|
|
c9a661de6f | ||
|
|
bf11de1215 | ||
|
|
33ff275c12 | ||
|
|
e88176c755 | ||
|
|
ae7c312136 | ||
|
|
c12cd0d296 | ||
|
|
7369409648 | ||
|
|
8f8e0795ff | ||
|
|
aa2d0eb477 | ||
|
|
f9324acecc | ||
|
|
d71e4075a4 | ||
|
|
6bed337061 | ||
|
|
52b06b5afc | ||
|
|
29d1221346 | ||
|
|
334d989b08 | ||
|
|
f63cbfaa78 | ||
|
|
a43388bace | ||
|
|
09dbdfb79f | ||
|
|
56de8714fa | ||
|
|
fd364879ac | ||
|
|
0435dc0719 | ||
|
|
2ca336e956 | ||
|
|
b8f1eb7f10 | ||
|
|
347e02e273 | ||
|
|
d62f360f77 | ||
|
|
6bb6ae6b2b | ||
|
|
2cd382ec38 | ||
|
|
d52695b29f | ||
|
|
e51f48b17f | ||
|
|
2fcd0dbd9a | ||
|
|
6e2e54922f | ||
|
|
fa270a4ee8 | ||
|
|
04d3b0bfe0 | ||
|
|
3d0fe368ac | ||
|
|
e52f6626f9 | ||
|
|
4f2d0316c5 | ||
|
|
01b31dce1a | ||
|
|
6365b28cf2 | ||
|
|
26b3e7893b | ||
|
|
f8f09f9a31 | ||
|
|
a9e534f1fa | ||
|
|
ea9b9ce621 | ||
|
|
2783cbd251 | ||
|
|
98b19d1f22 | ||
|
|
e4884fa4b1 | ||
|
|
ada9f69af3 | ||
|
|
82bb973ea7 | ||
|
|
7e34f1f8f4 | ||
|
|
1b8bf75eff | ||
|
|
074628ca7a | ||
|
|
2177091702 | ||
|
|
c2085c2320 | ||
|
|
9b06671810 | ||
|
|
326544a006 | ||
|
|
df755fae5c | ||
|
|
a517e185d5 | ||
|
|
5fe1f5c601 | ||
|
|
3519353008 | ||
|
|
d9ed7a343f | ||
|
|
93c90c8969 | ||
|
|
f94bad1730 | ||
|
|
8a3af98f6b | ||
|
|
24b9012d8c | ||
|
|
00c9452e13 | ||
|
|
59b42035e4 | ||
|
|
d67fa590bd | ||
|
|
d9c2388975 | ||
|
|
df3a492816 | ||
|
|
d4572fcb0f | ||
|
|
68965ccf0a | ||
|
|
8431d419ca | ||
|
|
25d59d69fe | ||
|
|
b12c474c19 | ||
|
|
1466659fe6 | ||
|
|
38fa7591d5 | ||
|
|
4d88052984 | ||
|
|
6299e91d76 | ||
|
|
eea25a336d | ||
|
|
6e746c89a4 | ||
|
|
174a72a9fa | ||
|
|
da768d984b | ||
|
|
84a3ab143d | ||
|
|
6f2a2a76a1 | ||
|
|
e0b37ae834 | ||
|
|
0a45b7acf1 | ||
|
|
440584898b | ||
|
|
d5e7552fb4 | ||
|
|
58d7e402d9 | ||
|
|
301dc1501c | ||
|
|
74d034d7a9 | ||
|
|
3418859ee9 | ||
|
|
e1449e5cd3 | ||
|
|
7a6c44267a | ||
|
|
f591c04f22 | ||
|
|
86fe4fe1b0 | ||
|
|
10b28721f7 | ||
|
|
2f67b36276 | ||
|
|
a4ff0f1007 | ||
|
|
2c5c522186 | ||
|
|
7103adf98f | ||
|
|
c12b03d31a | ||
|
|
7f494e3baf | ||
|
|
79b5f70cdf | ||
|
|
d384547adb | ||
|
|
0680a4d252 | ||
|
|
054a33cf3e | ||
|
|
73ded9bf60 | ||
|
|
854f2bf1f0 | ||
|
|
976d983174 | ||
|
|
3ec9cdaba1 | ||
|
|
53c20a156e | ||
|
|
2f8ba11520 | ||
|
|
9bd300db84 | ||
|
|
305ba420dc | ||
|
|
d881ca7af6 | ||
|
|
551f84d5c5 | ||
|
|
7a71f0bf0a | ||
|
|
c20e83e64c | ||
|
|
5997aae095 | ||
|
|
f60d6e7557 | ||
|
|
95c358f8e4 | ||
|
|
7897bd16aa | ||
|
|
02522b11f3 | ||
|
|
2b457c9dfb | ||
|
|
8779206311 | ||
|
|
9c8840ed6a | ||
|
|
5dd4459acd | ||
|
|
37f754336b | ||
|
|
1f6a081471 | ||
|
|
22a243ceb4 | ||
|
|
9d2efbeccb | ||
|
|
3ee97e0d76 | ||
|
|
5a11c55553 | ||
|
|
287e8c07b6 | ||
|
|
c8aaf80781 | ||
|
|
17ab8e61ab | ||
|
|
96df02b398 | ||
|
|
6e40068040 | ||
|
|
ea4a5e7f67 | ||
|
|
0e9b8f15b5 | ||
|
|
5be250c569 | ||
|
|
1a96d4007a | ||
|
|
aa488eed01 | ||
|
|
e65d483ef7 | ||
|
|
4cf53c9719 | ||
|
|
3eb258c7ea | ||
|
|
2de1abb657 | ||
|
|
dfa60ba49a | ||
|
|
89258e09e5 | ||
|
|
e6d7c76870 | ||
|
|
5f8fcc07fb | ||
|
|
8ce558702a | ||
|
|
ca5ef8d03d | ||
|
|
41c5fa3a3f | ||
|
|
2c7e40bd8e | ||
|
|
d9a9bbc8e0 | ||
|
|
4f2987da2d | ||
|
|
4ee607eb83 | ||
|
|
a49177c5c5 | ||
|
|
11fb638d2d | ||
|
|
f89ecf5b36 | ||
|
|
e2640b8752 | ||
|
|
c2ba621c15 | ||
|
|
cacdc51899 | ||
|
|
4669b3efba | ||
|
|
084e36d0a0 | ||
|
|
88b34831e4 | ||
|
|
6780949019 | ||
|
|
767937260d | ||
|
|
da181fc6f6 | ||
|
|
5bc7083692 | ||
|
|
899fc18420 | ||
|
|
230ee4ab49 | ||
|
|
1bcff440d4 | ||
|
|
57df8a02aa | ||
|
|
24962e4033 | ||
|
|
be98ea3fea | ||
|
|
3838c55fae | ||
|
|
fb5aae1fb0 | ||
|
|
216383b3b1 | ||
|
|
e7651c0456 | ||
|
|
930f813057 | ||
|
|
d2d79f3f0b | ||
|
|
35d1e28a23 | ||
|
|
d8fb60b11e | ||
|
|
c3a9987868 | ||
|
|
07679fe80d | ||
|
|
de22a9121a | ||
|
|
b8f70a6cb5 | ||
|
|
be841cd17a | ||
|
|
220f19dcf0 | ||
|
|
3a31141e6f | ||
|
|
6dbe626b56 | ||
|
|
b7e7d27c79 | ||
|
|
f907619679 | ||
|
|
9c176e31e5 | ||
|
|
d82fd6a587 | ||
|
|
39ed9d80b1 | ||
|
|
74fcfdc5a9 | ||
|
|
d6c02e8694 | ||
|
|
44dedb9acf | ||
|
|
7983bee43d | ||
|
|
f450a1c9bb | ||
|
|
c36f1c3968 | ||
|
|
8c6d8a4103 | ||
|
|
2e2376829f | ||
|
|
dd7117fbbe | ||
|
|
c076fae485 | ||
|
|
f6c64054fa | ||
|
|
99ed45ca2b | ||
|
|
2620f9e266 | ||
|
|
5cc64eefb2 | ||
|
|
632898d4a9 | ||
|
|
7a6f02474e | ||
|
|
d6b1cdd63f | ||
|
|
b3fc6e6857 | ||
|
|
0e3f286ff7 | ||
|
|
d3af1acd73 | ||
|
|
611a13c32c | ||
|
|
f214547359 | ||
|
|
44f07fa5db | ||
|
|
4634e1b579 | ||
|
|
dfeda45c68 | ||
|
|
af6b00bf66 | ||
|
|
d0d0346b42 | ||
|
|
7644c8d4fa | ||
|
|
7f6b1472e6 | ||
|
|
1fa04dd8a5 | ||
|
|
d16dd2ae1e | ||
|
|
cf1aad072c | ||
|
|
e0866eba32 | ||
|
|
7205c76fba | ||
|
|
d3eeaab1b4 | ||
|
|
1199269347 | ||
|
|
9fc81c880c | ||
|
|
ad3a4825a1 | ||
|
|
3643f98d62 | ||
|
|
93c7714148 | ||
|
|
7bbbc4e895 | ||
|
|
4dd80fb779 | ||
|
|
795254a421 | ||
|
|
6440e4362d | ||
|
|
d3533931df | ||
|
|
ae3e7ba9cb | ||
|
|
27c03ae80b | ||
|
|
83eaee56a2 | ||
|
|
643f014181 | ||
|
|
2a0392dec2 | ||
|
|
54a5fb5a2b | ||
|
|
a0718f367a | ||
|
|
147956f655 | ||
|
|
5a89fa5081 | ||
|
|
10748a95c8 | ||
|
|
c87ab41fff | ||
|
|
5d2b919fa9 | ||
|
|
5d41fd01df | ||
|
|
fd67765c74 | ||
|
|
3093a0a8cb | ||
|
|
e851245c86 | ||
|
|
b1e2d3312d | ||
|
|
1be00e330e | ||
|
|
d897fad100 | ||
|
|
56f8d4ba44 | ||
|
|
d5775257b4 | ||
|
|
46447d83c3 | ||
|
|
2326d79113 | ||
|
|
fdbaefa2cf | ||
|
|
7d82b82089 | ||
|
|
53e8ab5f16 | ||
|
|
ed1d1afd07 | ||
|
|
27f0d9d5b4 | ||
|
|
37e3837323 | ||
|
|
c4556ebba4 | ||
|
|
1434d39cff | ||
|
|
10de04f929 | ||
|
|
a2477f8dd5 | ||
|
|
41e96f691e | ||
|
|
c73f4de8d1 | ||
|
|
d097d5b64c | ||
|
|
f13d538277 | ||
|
|
c1f9134654 | ||
|
|
bc9f33cde1 | ||
|
|
55de8844bf | ||
|
|
8c4ad43fbc | ||
|
|
58fc71fce9 | ||
|
|
22db796b11 | ||
|
|
6c2ebbc28c | ||
|
|
6247cddddc | ||
|
|
94ec533ca1 | ||
|
|
269aeccde9 | ||
|
|
1de40cbaf6 | ||
|
|
b32dfe4025 | ||
|
|
8e3b136ca4 | ||
|
|
c6e1e5e08d | ||
|
|
decdee0d0c | ||
|
|
47fc0edfde | ||
|
|
9d154ba66d | ||
|
|
fbd09820a8 | ||
|
|
a752ab76dc | ||
|
|
dd44b54082 | ||
|
|
5448ac02a9 | ||
|
|
38541f7a2d | ||
|
|
d5db02be42 | ||
|
|
312873fb39 | ||
|
|
3dd7d3cdf4 | ||
|
|
56b53b5f2c | ||
|
|
28c0d704df | ||
|
|
dd1b315101 | ||
|
|
ca16c0b622 | ||
|
|
e83885c722 | ||
|
|
f2aba2251f | ||
|
|
a4c0e93cbe | ||
|
|
90f33bd64d | ||
|
|
4d18f598b2 | ||
|
|
5e9481ebc4 | ||
|
|
60e484e8f5 | ||
|
|
3600e479fe | ||
|
|
d2d8c2bdcb | ||
|
|
9330414120 | ||
|
|
9e77266299 | ||
|
|
2050d98e3e | ||
|
|
4e2fe618e7 | ||
|
|
4e9e007a2b | ||
|
|
ca921e88ac | ||
|
|
ea337e42ae | ||
|
|
cc8914341f | ||
|
|
d5481c05fd | ||
|
|
652621c215 | ||
|
|
829f8a35d6 | ||
|
|
b8a71eb59b | ||
|
|
907c2d332c | ||
|
|
d9c3779c47 | ||
|
|
bfa5492e21 | ||
|
|
94bc7d9f99 | ||
|
|
be5f1e47f6 | ||
|
|
ee84131443 | ||
|
|
791d0046c0 | ||
|
|
eee7786529 | ||
|
|
16b8d5e172 | ||
|
|
f080a39053 | ||
|
|
0e4e379b14 | ||
|
|
eeba3eb66f | ||
|
|
bac66f75ac | ||
|
|
06e0e48476 |
@@ -17,13 +17,12 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2020
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2022
|
||||
the Initial Developer. All Rights Reserved.
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -40,13 +39,14 @@
|
||||
$text = $language->get();
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$access_control_uuid = $_REQUEST["id"];
|
||||
$id = $_REQUEST["id"];
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
$access_control_uuid = uuid();
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
@@ -58,7 +58,15 @@
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (count($_POST) > 0 && empty($_POST["persistformvar"])) {
|
||||
|
||||
//enforce valid data
|
||||
if ($access_control_name == 'providers' || $access_control_name == 'domains') {
|
||||
$access_control_default = 'deny';
|
||||
}
|
||||
if ($access_control_default != 'allow' && $access_control_default != 'deny') {
|
||||
$access_control_default = 'deny';
|
||||
}
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
@@ -69,7 +77,7 @@
|
||||
}
|
||||
|
||||
//process the http post data by submitted action
|
||||
if ($_POST['action'] != '' && strlen($_POST['action']) > 0) {
|
||||
if (!empty($_POST['action'])) {
|
||||
|
||||
//prepare the array(s)
|
||||
$x = 0;
|
||||
@@ -123,11 +131,11 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
if (strlen($access_control_name) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_name']."<br>\n"; }
|
||||
if (strlen($access_control_default) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_default']."<br>\n"; }
|
||||
//if (strlen($access_control_nodes) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_nodes']."<br>\n"; }
|
||||
//if (strlen($access_control_description) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_description']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (empty($access_control_name)) { $msg .= $text['message-required']." ".$text['label-access_control_name']."<br>\n"; }
|
||||
if (empty($access_control_default)) { $msg .= $text['message-required']." ".$text['label-access_control_default']."<br>\n"; }
|
||||
//if (empty($access_control_nodes)) { $msg .= $text['message-required']." ".$text['label-access_control_nodes']."<br>\n"; }
|
||||
//if (empty($access_control_description)) { $msg .= $text['message-required']." ".$text['label-access_control_description']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -140,11 +148,6 @@
|
||||
return;
|
||||
}
|
||||
|
||||
//add the access_control_uuid
|
||||
if (!is_uuid($_POST["access_control_uuid"])) {
|
||||
$access_control_uuid = uuid();
|
||||
}
|
||||
|
||||
//prepare the array
|
||||
$array['access_controls'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_controls'][0]['access_control_name'] = $access_control_name;
|
||||
@@ -153,22 +156,48 @@
|
||||
$y = 0;
|
||||
if (is_array($access_control_nodes)) {
|
||||
foreach ($access_control_nodes as $row) {
|
||||
if (strlen($row['node_type']) > 0) {
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = $row["access_control_node_uuid"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $row["node_type"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $row["node_cidr"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_domain'] = $row["node_domain"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = $row["node_description"];
|
||||
$y++;
|
||||
|
||||
//validate the data
|
||||
if (!is_uuid($row["access_control_node_uuid"])) { continue; }
|
||||
if ($row["node_type"] != 'allow' && $row["node_type"] != 'deny') { continue; }
|
||||
if (isset($row["node_cidr"]) && $row["node_cidr"] != '') {
|
||||
$cidr_array = explode("/", str_replace("\\", "/", $row["node_cidr"]));
|
||||
if (filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
|
||||
if (isset($cidr_array[1]) && is_numeric($cidr_array[1])) {
|
||||
//valid IPv4 address and cidr notation
|
||||
$node_cidr = $row["node_cidr"];
|
||||
}
|
||||
else {
|
||||
//valid IPv4 address add the missing cidr notation
|
||||
$node_cidr = $row["node_cidr"].'/32';
|
||||
}
|
||||
}
|
||||
elseif(filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
|
||||
//valid IPv6 address
|
||||
$node_cidr = $row["node_cidr"];
|
||||
}
|
||||
}
|
||||
|
||||
//build the sub array
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = $row["access_control_node_uuid"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $row["node_type"];
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $node_cidr;
|
||||
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = $row["node_description"];
|
||||
$y++;
|
||||
|
||||
//unset values
|
||||
unset($cidr_array, $node_cidr);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//save the data
|
||||
$database = new database;
|
||||
$database->app_name = 'access controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array);
|
||||
if (is_array($array)) {
|
||||
$database = new database;
|
||||
$database->app_name = 'access controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array);
|
||||
}
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
@@ -194,14 +223,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
//set default values
|
||||
$access_control_name = '';
|
||||
$access_control_default = '';
|
||||
$access_control_description = '';
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($access_control_uuid) && is_uuid($access_control_uuid) && empty($_POST["persistformvar"])) {
|
||||
$sql = "select * from v_access_controls ";
|
||||
$sql .= "where access_control_uuid = :access_control_uuid ";
|
||||
$parameters['access_control_uuid'] = $access_control_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
if (!empty($row) && count($row) > 0) {
|
||||
$access_control_name = $row["access_control_name"];
|
||||
$access_control_default = $row["access_control_default"];
|
||||
$access_control_description = $row["access_control_description"];
|
||||
@@ -210,7 +244,7 @@
|
||||
}
|
||||
|
||||
//get the child data
|
||||
if (is_uuid($access_control_uuid)) {
|
||||
if (!empty($access_control_uuid) && is_uuid($access_control_uuid)) {
|
||||
$sql = "select * from v_access_control_nodes ";
|
||||
$sql .= "where access_control_uuid = :access_control_uuid ";
|
||||
$sql .= "order by node_cidr asc";
|
||||
@@ -221,23 +255,22 @@
|
||||
}
|
||||
|
||||
//add the $access_control_node_uuid
|
||||
if (!is_uuid($access_control_node_uuid)) {
|
||||
if (empty($access_control_node_uuid)) {
|
||||
$access_control_node_uuid = uuid();
|
||||
}
|
||||
|
||||
//add an empty row
|
||||
if (is_array($access_control_nodes) && @sizeof($access_control_nodes) != 0) {
|
||||
if (!empty($access_control_nodes) && count($access_control_nodes) > 0) {
|
||||
$x = count($access_control_nodes);
|
||||
}
|
||||
else {
|
||||
$access_control_nodes = array();
|
||||
$x = 0;
|
||||
}
|
||||
$access_control_nodes[$x]['access_control_uuid'] = $access_control_uuid;
|
||||
$access_control_nodes[$x]['access_control_uuid'] = $access_control_uuid ?? '';
|
||||
$access_control_nodes[$x]['access_control_node_uuid'] = uuid();
|
||||
$access_control_nodes[$x]['node_type'] = '';
|
||||
$access_control_nodes[$x]['node_cidr'] = '';
|
||||
$access_control_nodes[$x]['node_domain'] = '';
|
||||
$access_control_nodes[$x]['node_description'] = '';
|
||||
|
||||
//create token
|
||||
@@ -257,6 +290,9 @@
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'access_controls.php']);
|
||||
if ($action == 'update') {
|
||||
if (permission_exists('access_control_node_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'style'=>'margin-right: 3px;','link'=>'access_control_import.php?id='.escape($access_control_uuid)]);
|
||||
}
|
||||
if (permission_exists('access_control_node_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
|
||||
}
|
||||
@@ -337,7 +373,6 @@
|
||||
echo " <tr>\n";
|
||||
echo " <th class='vtablereq'>".$text['label-node_type']."</th>\n";
|
||||
echo " <td class='vtable'>".$text['label-node_cidr']."</td>\n";
|
||||
echo " <td class='vtable'>".$text['label-node_domain']."</td>\n";
|
||||
echo " <td class='vtable'>".$text['label-node_description']."</td>\n";
|
||||
if (is_array($access_control_nodes) && @sizeof($access_control_nodes) > 1 && permission_exists('access_control_node_delete')) {
|
||||
echo " <td class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n";
|
||||
@@ -372,9 +407,6 @@
|
||||
echo " <input class='formfld' type='text' name='access_control_nodes[$x][node_cidr]' maxlength='255' value=\"".escape($row["node_cidr"])."\">\n";
|
||||
echo " </td>\n";
|
||||
echo " <td class='formfld'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_nodes[$x][node_domain]' maxlength='255' value=\"".escape($row["node_domain"])."\">\n";
|
||||
echo " </td>\n";
|
||||
echo " <td class='formfld'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_nodes[$x][node_description]' maxlength='255' value=\"".escape($row["node_description"])."\">\n";
|
||||
echo " </td>\n";
|
||||
if (is_array($access_control_nodes) && @sizeof($access_control_nodes) > 1 && permission_exists('access_control_node_delete')) {
|
||||
|
||||
@@ -0,0 +1,453 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('access_control_node_add')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduce the functionality but requires PHP 5.1.0 or higher
|
||||
if (!function_exists('str_getcsv')) {
|
||||
function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
|
||||
$fp = fopen("php://memory", 'r+');
|
||||
fputs($fp, $input);
|
||||
rewind($fp);
|
||||
$data = fgetcsv($fp, null, $delimiter, $enclosure); // $escape only got added in 5.3.0
|
||||
fclose($fp);
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
//set the max php execution time
|
||||
ini_set('max_execution_time', 7200);
|
||||
|
||||
//get the http get values and set them as php variables
|
||||
$action = $_POST["action"] ?? '';
|
||||
$from_row = $_POST["from_row"] ?? '';
|
||||
$delimiter = $_POST["data_delimiter"] ?? '';
|
||||
$enclosure = $_POST["data_enclosure"] ?? '';
|
||||
|
||||
//save the data to the csv file
|
||||
if (isset($_POST['data'])) {
|
||||
$file = $_SESSION['server']['temp']['dir']."/access_control_nodes-".$_SESSION['domain_name'].".csv";
|
||||
if (file_put_contents($file, $_POST['data'])) {
|
||||
$_SESSION['file'] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
//copy the csv file
|
||||
//$_POST['submit'] == "Upload" &&
|
||||
if (!empty($_FILES['ulfile']['tmp_name']) && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('access_control_node_add')) {
|
||||
if (!empty($_POST['type']) &&$_POST['type'] == 'csv') {
|
||||
$file = $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name'];
|
||||
if (move_uploaded_file($_FILES['ulfile']['tmp_name'], $file)) {
|
||||
$_SESSION['file'] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//get the schema
|
||||
if (!empty($delimiter)) {
|
||||
//get the first line
|
||||
$line = fgets(fopen($_SESSION['file'], 'r'));
|
||||
$line_fields = explode($delimiter, $line);
|
||||
|
||||
//get the schema
|
||||
$x = 0;
|
||||
include "app/access_controls/app_config.php";
|
||||
$i = 0;
|
||||
foreach ($apps[0]['db'] as $table) {
|
||||
//get the table name and parent name
|
||||
if (is_array($table["table"]['name'])) {
|
||||
$table_name = $table["table"]['name']['text'];
|
||||
}
|
||||
else {
|
||||
$table_name = $table["table"]['name'];
|
||||
}
|
||||
$parent_name = $table["table"]['parent'];
|
||||
|
||||
//remove the v_ table prefix
|
||||
if (substr($table_name, 0, 2) == 'v_') {
|
||||
$table_name = substr($table_name, 2);
|
||||
}
|
||||
if (substr($parent_name, 0, 2) == 'v_') {
|
||||
$parent_name = substr($parent_name, 2);
|
||||
}
|
||||
|
||||
//filter for specific tables and build the schema array
|
||||
if ($table_name == 'access_control_nodes') {
|
||||
$schema[$i]['table'] = $table_name;
|
||||
$schema[$i]['parent'] = $parent_name;
|
||||
foreach($table['fields'] as $row) {
|
||||
$row['deprecated'] = $row['deprecated'] ?? '';
|
||||
if ($row['deprecated'] !== 'true') {
|
||||
if (is_array($row['name'])) {
|
||||
$field_name = $row['name']['text'];
|
||||
}
|
||||
else {
|
||||
$field_name = $row['name'];
|
||||
}
|
||||
$schema[$i]['fields'][] = $field_name;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//match the column names to the field names
|
||||
if (!empty($delimiter) && file_exists($_SESSION['file']) && $action != 'import') {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: access_control_edit.php?id='.$_GET['id']);
|
||||
exit;
|
||||
}
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include header
|
||||
$document['title'] = $text['label-import'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//form to match the fields to the column names
|
||||
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['label-import']."</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'access_control_node_edit.php?id='.$_GET['id']]);
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'id'=>'btn_save']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo $text['description-import']."\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
||||
//loop through the lines and fields
|
||||
$x = 0;
|
||||
foreach ($line_fields as $line_field) {
|
||||
$line_field = preg_replace('#[^a-zA-Z0-9_]#', '', $line_field);
|
||||
echo "<tr>\n";
|
||||
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo $line_field;
|
||||
echo " </td>\n";
|
||||
echo " <td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' style='' name='fields[$x]' onchange=\"document.getElementById('labels_$x').style.display = this.options[this.selectedIndex].value == 'contact_phones.phone_number' ? 'inline' : 'none';\">\n";
|
||||
echo " <option value=''></option>\n";
|
||||
foreach($schema as $row) {
|
||||
echo " <optgroup label='".$row['table']."'>\n";
|
||||
foreach($row['fields'] as $field) {
|
||||
$selected = '';
|
||||
if ($field == $line_field) {
|
||||
$selected = "selected='selected'";
|
||||
}
|
||||
if (substr($field, -5) != '_uuid') {
|
||||
echo " <option value='".$row['table'].".".$field."' ".$selected.">".$field."</option>\n";
|
||||
}
|
||||
}
|
||||
echo " </optgroup>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<input name='action' type='hidden' value='import'>\n";
|
||||
echo "<input name='from_row' type='hidden' value='$from_row'>\n";
|
||||
echo "<input name='data_delimiter' type='hidden' value='$delimiter'>\n";
|
||||
echo "<input name='data_enclosure' type='hidden' value='$enclosure'>\n";
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>\n";
|
||||
|
||||
require_once "resources/footer.php";
|
||||
|
||||
//end the script
|
||||
exit;
|
||||
}
|
||||
|
||||
//get the parent table
|
||||
function get_parent($schema,$table_name) {
|
||||
foreach ($schema as $row) {
|
||||
if ($row['table'] == $table_name) {
|
||||
return $row['parent'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//upload the csv
|
||||
if (file_exists($_SESSION['file'] ?? '') && $action == 'import') {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: access_control_edit.php?id='.$_GET['id']);
|
||||
exit;
|
||||
}
|
||||
|
||||
//user selected fields, labels
|
||||
$fields = $_POST['fields'] ?? '';
|
||||
$labels = $_POST['labels'] ?? '';
|
||||
|
||||
//set the domain_uuid
|
||||
$domain_uuid = $_SESSION['domain_uuid'];
|
||||
|
||||
//get the contents of the csv file and convert them into an array
|
||||
$handle = @fopen($_SESSION['file'], "r");
|
||||
if ($handle) {
|
||||
//set the starting identifiers
|
||||
$row_id = 0;
|
||||
$row_number = 1;
|
||||
|
||||
//loop through the array
|
||||
while (($line = fgets($handle, 4096)) !== false) {
|
||||
if ($from_row <= $row_number) {
|
||||
//format the data
|
||||
$y = 0;
|
||||
foreach ($fields as $key => $value) {
|
||||
//get the line
|
||||
$result = str_getcsv($line, $delimiter, $enclosure);
|
||||
|
||||
//get the table and field name
|
||||
$field_array = explode(".",$value);
|
||||
$table_name = $field_array[0];
|
||||
$field_name = $field_array[1];
|
||||
//echo "value: $value<br />\n";
|
||||
//echo "table_name: $table_name<br />\n";
|
||||
//echo "field_name: $field_name<br />\n";
|
||||
|
||||
//get the parent table name
|
||||
$parent = get_parent($schema, $table_name);
|
||||
|
||||
//count the field names
|
||||
if (isset($field_count[$table_name][$field_name])) {
|
||||
$field_count[$table_name][$field_name]++;
|
||||
}
|
||||
else {
|
||||
$field_count[$table_name][$field_name] = 0;
|
||||
}
|
||||
|
||||
//set the ordinal ID
|
||||
$id = $field_count[$table_name][$field_name];
|
||||
|
||||
//remove formatting from the phone number
|
||||
if ($field_name == "node_cidr") {
|
||||
if (isset($result[$key]) && $result[$key] != '') {
|
||||
$cidr_array = explode("/", str_replace("\\", "/", $result[$key]));
|
||||
if (filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
|
||||
if (isset($cidr_array[1]) && is_numeric($cidr_array[1])) {
|
||||
//valid IPv4 address and cidr notation
|
||||
//$result[$key] = $result[$key];
|
||||
}
|
||||
else {
|
||||
//valid IPv4 address add the missing cidr notation
|
||||
$result[$key] = $result[$key].'/32';
|
||||
}
|
||||
}
|
||||
elseif(filter_var($cidr_array[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
|
||||
//valid IPv6 address
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//build the data array
|
||||
if (!empty($table_name)) {
|
||||
$array[$table_name][$row_id]['access_control_node_uuid'] = uuid();
|
||||
$array[$table_name][$row_id]['access_control_uuid'] = $_GET['id'];
|
||||
$array[$table_name][$row_id][$field_name] = $result[$key];
|
||||
}
|
||||
if (is_array($array[$parent][$row_id])) { $y++; }
|
||||
}
|
||||
|
||||
//debug information
|
||||
//view_array($field_count);
|
||||
|
||||
//process a chunk of the array
|
||||
if ($row_id === 1000) {
|
||||
//save to the data
|
||||
$database = new database;
|
||||
$database->app_name = 'access_controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array);
|
||||
|
||||
//clear the array
|
||||
unset($array);
|
||||
|
||||
//set the row id back to 0
|
||||
$row_id = 0;
|
||||
}
|
||||
|
||||
} //if ($from_row <= $row_id)
|
||||
$row_number++;
|
||||
$row_id++;
|
||||
} //end while
|
||||
fclose($handle);
|
||||
|
||||
//debug information
|
||||
//view_array($array);
|
||||
|
||||
//save to the data
|
||||
if (!empty($array)) {
|
||||
$database = new database;
|
||||
$database->app_name = 'access_controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
}
|
||||
|
||||
//send the redirect header
|
||||
header("Location: access_control_edit.php?id=".$_GET['id']);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include the header
|
||||
$document['title'] = $text['label-import'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show content
|
||||
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['label-import']."</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'access_control_edit.php?id='.$_GET['id']]);
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$_SESSION['theme']['button_icon_upload'],'id'=>'btn_save']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo $text['description-import']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-import_data']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <textarea name='data' id='data' class='formfld' style='width: 100%; min-height: 150px;' wrap='off'></textarea>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-import_data']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-from_row']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='from_row'>\n";
|
||||
$i=2;
|
||||
while($i<=99) {
|
||||
$selected = ($i == $from_row) ? "selected" : null;
|
||||
echo " <option value='$i' ".$selected.">$i</option>\n";
|
||||
$i++;
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-from_row']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-import_delimiter']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' style='width:40px;' name='data_delimiter'>\n";
|
||||
echo " <option value=','>,</option>\n";
|
||||
echo " <option value='|'>|</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-import_delimiter']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-import_enclosure']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' style='width:40px;' name='data_enclosure'>\n";
|
||||
echo " <option value='\"'>\"</option>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-import_enclosure']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-import_file_upload']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input name='ulfile' type='file' class='formfld fileinput' id='ulfile'>\n";
|
||||
echo "<br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<input name='type' type='hidden' value='csv'>\n";
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2020
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -42,15 +41,21 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//define variable
|
||||
$search = '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get the http post data
|
||||
if (is_array($_POST['access_controls'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
if (!empty($_POST['access_controls'])) {
|
||||
$action = $_POST['action'] ?? '';
|
||||
$search = $_POST['search'] ?? '';
|
||||
$access_controls = $_POST['access_controls'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($access_controls) && @sizeof($access_controls) != 0) {
|
||||
if (!empty($action) && !empty($access_controls) && count($access_controls) > 0) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
@@ -61,8 +66,9 @@
|
||||
}
|
||||
|
||||
//prepare the array
|
||||
foreach($access_controls as $row) {
|
||||
$array['access_controls'][$x]['checked'] = $row['checked'];
|
||||
$x = 0;
|
||||
foreach ($access_controls as $row) {
|
||||
$array['access_controls'][$x]['checked'] = $row['checked'] ?? null;
|
||||
$array['access_controls'][$x]['access_control_uuid'] = $row['access_control_uuid'];
|
||||
$x++;
|
||||
}
|
||||
@@ -92,13 +98,13 @@
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
header('Location: access_controls.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
header('Location: access_controls.php'.(!empty($search) ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search
|
||||
if (isset($_GET["search"])) {
|
||||
@@ -109,7 +115,7 @@
|
||||
//get the count
|
||||
$sql = "select count(access_control_uuid) ";
|
||||
$sql .= "from v_access_controls ";
|
||||
if (isset($_GET["search"])) {
|
||||
if (!empty($search)) {
|
||||
$sql .= "where (";
|
||||
$sql .= " lower(access_control_name) like :search ";
|
||||
$sql .= " or lower(access_control_default) like :search ";
|
||||
@@ -117,7 +123,7 @@
|
||||
$sql .= ") ";
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//get the list
|
||||
$sql = "select ";
|
||||
@@ -126,7 +132,7 @@
|
||||
$sql .= "access_control_default, ";
|
||||
$sql .= "access_control_description ";
|
||||
$sql .= "from v_access_controls ";
|
||||
if (isset($_GET["search"])) {
|
||||
if (!empty($search)) {
|
||||
$sql .= "where (";
|
||||
$sql .= " lower(access_control_name) like :search ";
|
||||
$sql .= " or lower(access_control_default) like :search ";
|
||||
@@ -134,9 +140,8 @@
|
||||
$sql .= ") ";
|
||||
}
|
||||
$sql .= order_by($order_by, $order, 'access_control_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$access_controls = $database->select($sql, $parameters, 'all');
|
||||
$access_controls = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -151,6 +156,7 @@
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-access_controls']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'type'=>'button','id'=>'button_reload','link'=>'access_controls_reload.php'.(!empty($search) ? '?search='.urlencode($search) : null),'style'=>'margin-right: 15px;']);
|
||||
if (permission_exists('access_control_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','name'=>'btn_add','link'=>'access_control_edit.php']);
|
||||
}
|
||||
@@ -164,9 +170,6 @@
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search']);
|
||||
//echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'access_controls.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($paging_controls_mini != '') {
|
||||
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
|
||||
}
|
||||
echo " </form>\n";
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
@@ -190,18 +193,18 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($access_controls ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($access_controls) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
echo th_order_by('access_control_name', $text['label-access_control_name'], $order_by, $order);
|
||||
echo th_order_by('access_control_default', $text['label-access_control_default'], $order_by, $order);
|
||||
echo " <th class='hide-sm-dn'>".$text['label-access_control_description']."</th>\n";
|
||||
if (permission_exists('access_control_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('access_control_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($access_controls) && @sizeof($access_controls) != 0) {
|
||||
if (!empty($access_controls) && count($access_controls) > 0) {
|
||||
$x = 0;
|
||||
foreach ($access_controls as $row) {
|
||||
if (permission_exists('access_control_edit')) {
|
||||
@@ -224,7 +227,7 @@
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['access_control_default'])."</td>\n";
|
||||
echo " <td class='description overflow hide-sm-dn'>".escape($row['access_control_description'])."</td>\n";
|
||||
if (permission_exists('access_control_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('access_control_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>\n";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
@@ -237,7 +240,6 @@
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('access_control_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//set the variables
|
||||
$search = $_REQUEST['search'] ?? '';
|
||||
|
||||
//create event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
//run the command
|
||||
$result = rtrim(event_socket_request($fp, 'api reloadacl'));
|
||||
|
||||
//add message
|
||||
message::add($result, 'alert');
|
||||
|
||||
//close the connection
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
//redirect
|
||||
$search = preg_replace('#[^a-zA-Z0-9_\-\.]# ', '', $search);
|
||||
$location = 'access_controls.php'.($search != '' ? "?search=".urlencode($search) : null);
|
||||
|
||||
header("Location: ".$location);
|
||||
|
||||
?>
|
||||
@@ -84,6 +84,30 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_access_control_nodes";
|
||||
@@ -111,12 +135,32 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the IP CIDR range.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "node_domain";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the domain.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "node_description";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2016 - 2022
|
||||
Portions created by the Initial Developer are Copyright (C) 2016 - 2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -32,10 +32,12 @@
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, null, 'column');
|
||||
if ($num_rows == 0) {
|
||||
|
||||
//set the directory
|
||||
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
|
||||
$xml_file = $xml_dir."/acl.conf.xml";
|
||||
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/resources/templates/conf/autoload_configs/acl.conf';
|
||||
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/switch/resources/conf/autoload_configs/acl.conf';
|
||||
|
||||
//load the xml and save it into an array
|
||||
if (file_exists($xml_file)) {
|
||||
$xml_string = file_get_contents($xml_file);
|
||||
@@ -46,13 +48,13 @@
|
||||
else {
|
||||
$xml_string = "<configuration name=\"acl.conf\" description=\"Network Lists\">\n";
|
||||
$xml_string .= " <network-lists>\n";
|
||||
$xml_string .= " <list name=\"rfc1918\" default=\"allow\">\n";
|
||||
$xml_string .= " <list name=\"rfc1918\" default=\"deny\">\n";
|
||||
$xml_string .= " <node type=\"allow\" cidr=\"10.0.0.0/8\"/>\n";
|
||||
$xml_string .= " <node type=\"allow\" cidr=\"172.16.0.0/12\"/>\n";
|
||||
$xml_string .= " <node type=\"allow\" cidr=\"192.168.0.0/16\"/>\n";
|
||||
$xml_string .= " </list>\n";
|
||||
$xml_string .= " <list name=\"domains\" default=\"deny\">\n";
|
||||
$xml_string .= " <node type=\"allow\" domain=\"".$_SESSION['domain_name']."\"/>\n";
|
||||
$xml_string .= " <list name=\"providers\" default=\"deny\">\n";
|
||||
//$xml_string .= " <node type=\"allow\" domain=\"".$_SESSION['domain_name']."\"/>\n";
|
||||
$xml_string .= " </list>\n";
|
||||
$xml_string .= " </network-lists>\n";
|
||||
$xml_string .= "</configuration>\n";
|
||||
@@ -62,12 +64,13 @@
|
||||
$conf_array = json_decode($json, true);
|
||||
|
||||
//process the array
|
||||
foreach($conf_array['network-lists']['list'] as $list) {
|
||||
//get the attributes
|
||||
if (is_array($conf_array['network-lists']['list'])) {
|
||||
foreach($conf_array['network-lists']['list'] as $list) {
|
||||
//get the attributes
|
||||
$access_control_name = $list['@attributes']['name'];
|
||||
$access_control_default = $list['@attributes']['default'];
|
||||
|
||||
//insert the name, description
|
||||
//insert the name, description
|
||||
$access_control_uuid = uuid();
|
||||
$array['access_controls'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_controls'][0]['access_control_name'] = $access_control_name;
|
||||
@@ -84,42 +87,40 @@
|
||||
|
||||
$p->delete('access_control_add', 'temp');
|
||||
|
||||
//normalize the array - needed because the array is inconsistent when there is only one row vs multiple
|
||||
if (strlen($list['node']['@attributes']['type']) > 0) {
|
||||
//normalize the array - needed because the array is inconsistent when there is only one row vs multiple
|
||||
if (!empty($list['node']['@attributes']['type'])) {
|
||||
$list['node'][]['@attributes'] = $list['node']['@attributes'];
|
||||
unset($list['node']['@attributes']);
|
||||
}
|
||||
|
||||
//add the nodes
|
||||
foreach ($list['node'] as $row) {
|
||||
//get the name and value pair
|
||||
$node_type = $row['@attributes']['type'];
|
||||
$node_cidr = $row['@attributes']['cidr'];
|
||||
$node_domain = $row['@attributes']['domain'];
|
||||
$node_description = $row['@attributes']['description'];
|
||||
//replace $${domain}
|
||||
if (strlen($node_domain) > 0) {
|
||||
$node_domain = str_replace("\$\${domain}", $domain_name, $node_domain);
|
||||
//add the nodes
|
||||
if (is_array($list['node'])) {
|
||||
foreach ($list['node'] as $row) {
|
||||
//get the name and value pair
|
||||
$node_type = $row['@attributes']['type'];
|
||||
$node_cidr = $row['@attributes']['cidr'];
|
||||
$node_description = $row['@attributes']['description'];
|
||||
|
||||
//add the profile settings into the database
|
||||
$access_control_node_uuid = uuid();
|
||||
$array['access_control_nodes'][0]['access_control_node_uuid'] = $access_control_node_uuid;
|
||||
$array['access_control_nodes'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_control_nodes'][0]['node_type'] = $node_type;
|
||||
$array['access_control_nodes'][0]['node_cidr'] = $node_cidr;
|
||||
$array['access_control_nodes'][0]['node_description'] = $node_description;
|
||||
|
||||
$p = new permissions;
|
||||
$p->add('access_control_node_add', 'temp');
|
||||
|
||||
$database = new database;
|
||||
$database->app_name = 'access_controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array, false);
|
||||
unset($array);
|
||||
|
||||
$p->delete('access_control_node_add', 'temp');
|
||||
}
|
||||
//add the profile settings into the database
|
||||
$access_control_node_uuid = uuid();
|
||||
$array['access_control_nodes'][0]['access_control_node_uuid'] = $access_control_node_uuid;
|
||||
$array['access_control_nodes'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_control_nodes'][0]['node_type'] = $node_type;
|
||||
$array['access_control_nodes'][0]['node_cidr'] = $node_cidr;
|
||||
$array['access_control_nodes'][0]['node_domain'] = $node_domain;
|
||||
$array['access_control_nodes'][0]['node_description'] = $node_description;
|
||||
|
||||
$p = new permissions;
|
||||
$p->add('access_control_node_add', 'temp');
|
||||
|
||||
$database = new database;
|
||||
$database->app_name = 'access_controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$database->save($array, false);
|
||||
unset($array);
|
||||
|
||||
$p->delete('access_control_node_add', 'temp');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +131,66 @@
|
||||
}
|
||||
unset($sql, $num_rows);
|
||||
|
||||
//rename domains access control to providers
|
||||
$sql = "select count(*) from v_access_controls ";
|
||||
$sql .= "where access_control_name = 'domains' ";
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, null, 'column');
|
||||
if ($num_rows > 0) {
|
||||
//update the access control name
|
||||
$sql = "update v_access_controls set access_control_name = 'providers' ";
|
||||
$sql .= "where access_control_name = 'domains' ";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
//update the sip profile settings
|
||||
$sql = "update v_sip_profile_settings set sip_profile_setting_value = 'providers' ";
|
||||
$sql .= "where (sip_profile_setting_name = 'apply-inbound-acl' or sip_profile_setting_name = 'apply-register-acl') ";
|
||||
$sql .= "and sip_profile_setting_value = 'domains'; ";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
$cache->delete("configuration:sofia.conf:".gethostname());
|
||||
|
||||
//create the event socket connection
|
||||
if (!$fp) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
}
|
||||
|
||||
//reload the acl
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
|
||||
//rescan each sip profile
|
||||
$sql = "select sip_profile_name from v_sip_profiles ";
|
||||
$sql .= "where sip_profile_enabled = 'true'; ";
|
||||
$database = new database;
|
||||
$sip_profiles = $database->select($sql, null, 'all');
|
||||
if (is_array($sip_profiles)) {
|
||||
foreach ($sip_profiles as $row) {
|
||||
if ($fp) {
|
||||
$command = "sofia profile '".$row['sip_profile_name']."' rescan";
|
||||
//echo $command."\n";
|
||||
$result = event_socket_request($fp, "api ".$command);
|
||||
//echo $result."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//remove orphaned access control nodes
|
||||
$sql = "delete from v_access_control_nodes ";
|
||||
$sql .= "where access_control_uuid not in ( ";
|
||||
$sql .= " select access_control_uuid from v_access_controls ";
|
||||
$sql .= ")";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,435 +1,494 @@
|
||||
<?php
|
||||
#This file was last reorganized on 19th of September 2017 08:54:24 AM UTC
|
||||
|
||||
$text['title-access_controls']['en-us'] = "Access Controls";
|
||||
$text['title-access_controls']['en-gb'] = "Access Controls";
|
||||
$text['title-access_controls']['ar-eg'] = "عناصر التحكم في الوصول";
|
||||
$text['title-access_controls']['de-at'] = " Zugriffskontrolle"; //copied from de-de
|
||||
$text['title-access_controls']['de-ch'] = " Zugriffskontrolle"; //copied from de-de
|
||||
$text['title-access_controls']['de-de'] = " Zugriffskontrolle";
|
||||
$text['title-access_controls']['de-at'] = "Zugriffskontrolle";
|
||||
$text['title-access_controls']['de-ch'] = "Zugriffskontrolle";
|
||||
$text['title-access_controls']['de-de'] = "Zugriffskontrolle";
|
||||
$text['title-access_controls']['es-cl'] = "Controles de acceso";
|
||||
$text['title-access_controls']['es-mx'] = "Controles de acceso"; //copied from es-cl
|
||||
$text['title-access_controls']['fr-ca'] = "Contrôle d'accès"; //copied from fr-fr
|
||||
$text['title-access_controls']['es-mx'] = "Controles de acceso";
|
||||
$text['title-access_controls']['fr-ca'] = "Contrôle d'accès";
|
||||
$text['title-access_controls']['fr-fr'] = "Contrôle d'accès";
|
||||
$text['title-access_controls']['he-il'] = "בקרת גישה";
|
||||
$text['title-access_controls']['it-it'] = "Controllo Accessi";
|
||||
$text['title-access_controls']['nl-nl'] = "Toegangs Controle";
|
||||
$text['title-access_controls']['pl-pl'] = "Kontrola dostępu";
|
||||
$text['title-access_controls']['pt-br'] = "Controles de Acesso"; //copied from pt-pt
|
||||
$text['title-access_controls']['pt-br'] = "Controles de Acesso";
|
||||
$text['title-access_controls']['pt-pt'] = "Controles de Acesso";
|
||||
$text['title-access_controls']['ro-ro'] = "Controale de acces";
|
||||
$text['title-access_controls']['ru-ru'] = "Контроль доступа";
|
||||
$text['title-access_controls']['sv-se'] = "Åtkomstkontroll";
|
||||
$text['title-access_controls']['uk-ua'] = "контроль доступу";
|
||||
$text['title-access_controls']['zh-cn'] = "访问控制";
|
||||
$text['title-access_controls']['ja-jp'] = "アクセス制御";
|
||||
$text['title-access_controls']['ko-kr'] = "액세스 제어";
|
||||
|
||||
$text['title-access_control_nodes']['en-us'] = "Nodes";
|
||||
$text['title-access_control_nodes']['en-gb'] = "Nodes";
|
||||
$text['title-access_control_nodes']['ar-eg'] = "العقد";
|
||||
$text['title-access_control_nodes']['de-at'] = "Knoten"; //copied from de-de
|
||||
$text['title-access_control_nodes']['de-ch'] = "Knoten"; //copied from de-de
|
||||
$text['title-access_control_nodes']['de-at'] = "Knoten";
|
||||
$text['title-access_control_nodes']['de-ch'] = "Knoten";
|
||||
$text['title-access_control_nodes']['de-de'] = "Knoten";
|
||||
$text['title-access_control_nodes']['es-cl'] = "Nodos";
|
||||
$text['title-access_control_nodes']['es-mx'] = "Nodos"; //copied from es-cl
|
||||
$text['title-access_control_nodes']['fr-ca'] = " nœuds"; //copied from fr-fr
|
||||
$text['title-access_control_nodes']['fr-fr'] = " nœuds";
|
||||
$text['title-access_control_nodes']['es-mx'] = "Nodos";
|
||||
$text['title-access_control_nodes']['fr-ca'] = "nœuds";
|
||||
$text['title-access_control_nodes']['fr-fr'] = "nœuds";
|
||||
$text['title-access_control_nodes']['he-il'] = "בלוטות";
|
||||
$text['title-access_control_nodes']['it-it'] = "Nodi";
|
||||
$text['title-access_control_nodes']['nl-nl'] = "Knooppunten";
|
||||
$text['title-access_control_nodes']['pl-pl'] = "węzły";
|
||||
$text['title-access_control_nodes']['pt-br'] = "Nodes";
|
||||
$text['title-access_control_nodes']['pt-pt'] = " Nodes";
|
||||
$text['title-access_control_nodes']['pt-pt'] = "Nodes";
|
||||
$text['title-access_control_nodes']['ro-ro'] = "Noduri";
|
||||
$text['title-access_control_nodes']['ru-ru'] = "Узлы";
|
||||
$text['title-access_control_nodes']['sv-se'] = "Noder";
|
||||
$text['title-access_control_nodes']['uk-ua'] = "вузли";
|
||||
$text['title-access_control_nodes']['zh-cn'] = "节点";
|
||||
$text['title-access_control_nodes']['ja-jp'] = "ノード";
|
||||
$text['title-access_control_nodes']['ko-kr'] = "노드";
|
||||
|
||||
$text['title-access_control_node']['en-us'] = "Node";
|
||||
$text['title-access_control_node']['en-gb'] = "Node";
|
||||
$text['title-access_control_node']['ar-eg'] = "العقدة";
|
||||
$text['title-access_control_node']['de-at'] = "Netzknoten"; //copied from de-de
|
||||
$text['title-access_control_node']['de-ch'] = "Netzknoten"; //copied from de-de
|
||||
$text['title-access_control_node']['de-at'] = "Netzknoten";
|
||||
$text['title-access_control_node']['de-ch'] = "Netzknoten";
|
||||
$text['title-access_control_node']['de-de'] = "Netzknoten";
|
||||
$text['title-access_control_node']['es-cl'] = "Nodo";
|
||||
$text['title-access_control_node']['es-mx'] = "Nodo"; //copied from es-cl
|
||||
$text['title-access_control_node']['fr-ca'] = " noeud"; //copied from fr-fr
|
||||
$text['title-access_control_node']['fr-fr'] = " noeud";
|
||||
$text['title-access_control_node']['es-mx'] = "Nodo";
|
||||
$text['title-access_control_node']['fr-ca'] = "noeud";
|
||||
$text['title-access_control_node']['fr-fr'] = "noeud";
|
||||
$text['title-access_control_node']['he-il'] = "צומת";
|
||||
$text['title-access_control_node']['it-it'] = "Nodo";
|
||||
$text['title-access_control_node']['nl-nl'] = "Knooppunt";
|
||||
$text['title-access_control_node']['pl-pl'] = "węzeł";
|
||||
$text['title-access_control_node']['pt-br'] = "Nó"; //copied from pt-pt
|
||||
$text['title-access_control_node']['pt-br'] = "Nó";
|
||||
$text['title-access_control_node']['pt-pt'] = "Nó";
|
||||
$text['title-access_control_node']['ro-ro'] = "Nod";
|
||||
$text['title-access_control_node']['ru-ru'] = "Узел";
|
||||
$text['title-access_control_node']['sv-se'] = "Nod";
|
||||
$text['title-access_control_node']['uk-ua'] = "вузол";
|
||||
$text['title-access_control_node']['zh-cn'] = "节点";
|
||||
$text['title-access_control_node']['ja-jp'] = "ノード";
|
||||
$text['title-access_control_node']['ko-kr'] = "마디";
|
||||
|
||||
$text['title-access_control']['en-us'] = "Access Control";
|
||||
$text['title-access_control']['en-gb'] = "Access Control";
|
||||
$text['title-access_control']['ar-eg'] = "التحكم في الوصول";
|
||||
$text['title-access_control']['de-at'] = " Zugangskontrolle"; //copied from de-de
|
||||
$text['title-access_control']['de-ch'] = " Zugangskontrolle"; //copied from de-de
|
||||
$text['title-access_control']['de-de'] = " Zugangskontrolle";
|
||||
$text['title-access_control']['de-at'] = "Zugangskontrolle";
|
||||
$text['title-access_control']['de-ch'] = "Zugangskontrolle";
|
||||
$text['title-access_control']['de-de'] = "Zugangskontrolle";
|
||||
$text['title-access_control']['es-cl'] = "Control de acceso";
|
||||
$text['title-access_control']['es-mx'] = "Control de acceso"; //copied from es-cl
|
||||
$text['title-access_control']['fr-ca'] = "Contrôle d'accès"; //copied from fr-fr
|
||||
$text['title-access_control']['es-mx'] = "Control de acceso";
|
||||
$text['title-access_control']['fr-ca'] = "Contrôle d'accès";
|
||||
$text['title-access_control']['fr-fr'] = "Contrôle d'accès";
|
||||
$text['title-access_control']['he-il'] = "בקרת גישה";
|
||||
$text['title-access_control']['it-it'] = "Controllo Accesso";
|
||||
$text['title-access_control']['nl-nl'] = "Toegangs Controle";
|
||||
$text['title-access_control']['pl-pl'] = "Kontrola dostępu";
|
||||
$text['title-access_control']['pt-br'] = "Controle de acesso"; //copied from pt-pt
|
||||
$text['title-access_control']['pt-br'] = "Controle de acesso";
|
||||
$text['title-access_control']['pt-pt'] = "Controle de acesso";
|
||||
$text['title-access_control']['ro-ro'] = "Controlul accesului";
|
||||
$text['title-access_control']['ru-ru'] = "Управление доступом";
|
||||
$text['title-access_control']['sv-se'] = "Åtkomstkontroll";
|
||||
$text['title-access_control']['uk-ua'] = "Управління доступом";
|
||||
$text['title-access_control']['zh-cn'] = "访问控制";
|
||||
$text['title-access_control']['ja-jp'] = "アクセス制御";
|
||||
$text['title-access_control']['ko-kr'] = "액세스 제어";
|
||||
|
||||
$text['title_description-access_controls']['en-us'] = "Access control list can allow or deny ranges of IP addresses.";
|
||||
$text['title_description-access_controls']['en-gb'] = "Access control list can allow or deny ranges of IP addresses.";
|
||||
$text['title_description-access_controls']['ar-eg'] = "قائمة التحكم بالوصول يمكن السماح أو الرفض نطاقات العناوين.";
|
||||
$text['title_description-access_controls']['de-at'] = " Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen."; //copied from de-de
|
||||
$text['title_description-access_controls']['de-ch'] = " Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen."; //copied from de-de
|
||||
$text['title_description-access_controls']['de-de'] = " Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
|
||||
$text['title_description-access_controls']['es-cl'] = " Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
|
||||
$text['title_description-access_controls']['es-mx'] = " Lista de control de acceso puede permitir o denegar los rangos de direcciones IP."; //copied from es-cl
|
||||
$text['title_description-access_controls']['fr-ca'] = " Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP."; //copied from fr-fr
|
||||
$text['title_description-access_controls']['fr-fr'] = " Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
|
||||
$text['title_description-access_controls']['de-at'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
|
||||
$text['title_description-access_controls']['de-ch'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
|
||||
$text['title_description-access_controls']['de-de'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
|
||||
$text['title_description-access_controls']['es-cl'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
|
||||
$text['title_description-access_controls']['es-mx'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
|
||||
$text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
|
||||
$text['title_description-access_controls']['fr-fr'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
|
||||
$text['title_description-access_controls']['he-il'] = " רשימת בקרת גישה יכולה לאפשר או למנוע טווחים של כתובות IP.";
|
||||
$text['title_description-access_controls']['it-it'] = "Le liste per il controllo di accesso permettono o negano l'accesso a range di IP.";
|
||||
$text['title_description-access_controls']['nl-nl'] = "Toegang Controle lijst kan IP adres reeks toestaan of verbieden.";
|
||||
$text['title_description-access_controls']['pl-pl'] = "Lista kontroli dostępu może umożliwić lub zablokować zakresy adresów IP.";
|
||||
$text['title_description-access_controls']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP."; //copied from pt-pt
|
||||
$text['title_description-access_controls']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
|
||||
$text['title_description-access_controls']['pt-pt'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
|
||||
$text['title_description-access_controls']['ro-ro'] = "Lista de control al accesului poate permite sau refuza intervale de adrese IP.";
|
||||
$text['title_description-access_controls']['ru-ru'] = "Контроль доступа может разрешить или запретить диапазоны IP адресов.";
|
||||
$text['title_description-access_controls']['sv-se'] = "Åtkomstkontrollista kan tillåta eller neka intervall av IP-adresser.";
|
||||
$text['title_description-access_controls']['uk-ua'] = "Список контролю доступу може дозволити або заборонити діапазони IP-адрес.";
|
||||
$text['title_description-access_controls']['zh-cn'] = "访问控制列表可以允许或拒绝 IP 地址范围。";
|
||||
$text['title_description-access_controls']['ja-jp'] = "アクセス コントロール リストでは、IP アドレスの範囲を許可または拒否できます。";
|
||||
$text['title_description-access_controls']['ko-kr'] = "액세스 제어 목록은 IP 주소 범위를 허용하거나 거부할 수 있습니다.";
|
||||
|
||||
$text['label-node_type']['en-us'] = "Type";
|
||||
$text['label-node_type']['en-gb'] = "Type";
|
||||
$text['label-node_type']['ar-eg'] = "اكتب";
|
||||
$text['label-node_type']['de-at'] = "Art"; //copied from de-de
|
||||
$text['label-node_type']['de-ch'] = "Art"; //copied from de-de
|
||||
$text['label-node_type']['de-at'] = "Art";
|
||||
$text['label-node_type']['de-ch'] = "Art";
|
||||
$text['label-node_type']['de-de'] = "Art";
|
||||
$text['label-node_type']['es-cl'] = "Escribe";
|
||||
$text['label-node_type']['es-mx'] = "Escribe"; //copied from es-cl
|
||||
$text['label-node_type']['fr-ca'] = "Type"; //copied from fr-fr
|
||||
$text['label-node_type']['es-mx'] = "Escribe";
|
||||
$text['label-node_type']['fr-ca'] = "Type";
|
||||
$text['label-node_type']['fr-fr'] = "Type";
|
||||
$text['label-node_type']['he-il'] = "סוג";
|
||||
$text['label-node_type']['it-it'] = "Tipo";
|
||||
$text['label-node_type']['nl-nl'] = "Type";
|
||||
$text['label-node_type']['pl-pl'] = "typ";
|
||||
$text['label-node_type']['pt-br'] = "Tipo"; //copied from pt-pt
|
||||
$text['label-node_type']['pt-br'] = "Tipo";
|
||||
$text['label-node_type']['pt-pt'] = "Tipo";
|
||||
$text['label-node_type']['ro-ro'] = "Tip";
|
||||
$text['label-node_type']['ru-ru'] = "Тип";
|
||||
$text['label-node_type']['sv-se'] = "Typ";
|
||||
$text['label-node_type']['uk-ua'] = "Тип";
|
||||
$text['label-node_type']['zh-cn'] = "类型";
|
||||
$text['label-node_type']['ja-jp'] = "タイプ";
|
||||
$text['label-node_type']['ko-kr'] = "유형";
|
||||
|
||||
$text['label-node_domain']['en-us'] = "Domain";
|
||||
$text['label-node_domain']['en-gb'] = "Domain";
|
||||
$text['label-node_domain']['ar-eg'] = "مجال";
|
||||
$text['label-node_domain']['de-at'] = " Domäne"; //copied from de-de
|
||||
$text['label-node_domain']['de-ch'] = " Domäne"; //copied from de-de
|
||||
$text['label-node_domain']['de-de'] = " Domäne";
|
||||
$text['label-node_domain']['de-at'] = "Domäne";
|
||||
$text['label-node_domain']['de-ch'] = "Domäne";
|
||||
$text['label-node_domain']['de-de'] = "Domäne";
|
||||
$text['label-node_domain']['es-cl'] = "Dominio";
|
||||
$text['label-node_domain']['es-mx'] = "Dominio"; //copied from es-cl
|
||||
$text['label-node_domain']['fr-ca'] = "Domaine"; //copied from fr-fr
|
||||
$text['label-node_domain']['es-mx'] = "Dominio";
|
||||
$text['label-node_domain']['fr-ca'] = "Domaine";
|
||||
$text['label-node_domain']['fr-fr'] = "Domaine";
|
||||
$text['label-node_domain']['he-il'] = "תחום";
|
||||
$text['label-node_domain']['it-it'] = "Dominio";
|
||||
$text['label-node_domain']['nl-nl'] = "Domein";
|
||||
$text['label-node_domain']['pl-pl'] = "domeny";
|
||||
$text['label-node_domain']['pt-br'] = "Domínio"; //copied from pt-pt
|
||||
$text['label-node_domain']['pt-br'] = "Domínio";
|
||||
$text['label-node_domain']['pt-pt'] = "Domínio";
|
||||
$text['label-node_domain']['ro-ro'] = "Domeniu";
|
||||
$text['label-node_domain']['ru-ru'] = "Домен";
|
||||
$text['label-node_domain']['sv-se'] = "Domän";
|
||||
$text['label-node_domain']['uk-ua'] = "домен";
|
||||
$text['label-node_domain']['zh-cn'] = "领域";
|
||||
$text['label-node_domain']['ja-jp'] = "ドメイン";
|
||||
$text['label-node_domain']['ko-kr'] = "도메인";
|
||||
|
||||
$text['label-node_description']['en-us'] = "Description";
|
||||
$text['label-node_description']['en-gb'] = "Description";
|
||||
$text['label-node_description']['ar-eg'] = "وصف";
|
||||
$text['label-node_description']['de-at'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-node_description']['de-ch'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-node_description']['de-at'] = "Beschreibung";
|
||||
$text['label-node_description']['de-ch'] = "Beschreibung";
|
||||
$text['label-node_description']['de-de'] = "Beschreibung";
|
||||
$text['label-node_description']['es-cl'] = "Descripción";
|
||||
$text['label-node_description']['es-mx'] = "Descripción"; //copied from es-cl
|
||||
$text['label-node_description']['fr-ca'] = "Description"; //copied from fr-fr
|
||||
$text['label-node_description']['es-mx'] = "Descripción";
|
||||
$text['label-node_description']['fr-ca'] = "Description";
|
||||
$text['label-node_description']['fr-fr'] = "Description";
|
||||
$text['label-node_description']['he-il'] = "תיאור";
|
||||
$text['label-node_description']['it-it'] = "Descrizione";
|
||||
$text['label-node_description']['nl-nl'] = "Beschrijving";
|
||||
$text['label-node_description']['pl-pl'] = "opis";
|
||||
$text['label-node_description']['pt-br'] = "Descrição"; //copied from pt-pt
|
||||
$text['label-node_description']['pt-br'] = "Descrição";
|
||||
$text['label-node_description']['pt-pt'] = "Descrição";
|
||||
$text['label-node_description']['ro-ro'] = "Descriere";
|
||||
$text['label-node_description']['ru-ru'] = "Описание";
|
||||
$text['label-node_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-node_description']['uk-ua'] = "опис";
|
||||
$text['label-node_description']['zh-cn'] = "描述";
|
||||
$text['label-node_description']['ja-jp'] = "説明";
|
||||
$text['label-node_description']['ko-kr'] = "설명";
|
||||
|
||||
$text['label-node_cidr']['en-us'] = "CIDR";
|
||||
$text['label-node_cidr']['en-gb'] = "CIDR";
|
||||
$text['label-node_cidr']['ar-eg'] = "CIDR";
|
||||
$text['label-node_cidr']['de-at'] = "CIDR"; //copied from de-de
|
||||
$text['label-node_cidr']['de-ch'] = "CIDR"; //copied from de-de
|
||||
$text['label-node_cidr']['de-at'] = "CIDR";
|
||||
$text['label-node_cidr']['de-ch'] = "CIDR";
|
||||
$text['label-node_cidr']['de-de'] = "CIDR";
|
||||
$text['label-node_cidr']['es-cl'] = "CIDR";
|
||||
$text['label-node_cidr']['es-mx'] = "CIDR"; //copied from es-cl
|
||||
$text['label-node_cidr']['fr-ca'] = "CIDR"; //copied from fr-fr
|
||||
$text['label-node_cidr']['es-mx'] = "CIDR";
|
||||
$text['label-node_cidr']['fr-ca'] = "CIDR";
|
||||
$text['label-node_cidr']['fr-fr'] = "CIDR";
|
||||
$text['label-node_cidr']['he-il'] = "CIDR";
|
||||
$text['label-node_cidr']['it-it'] = "CIDR";
|
||||
$text['label-node_cidr']['nl-nl'] = "CIDR";
|
||||
$text['label-node_cidr']['pl-pl'] = "CIDR";
|
||||
$text['label-node_cidr']['pt-br'] = "CIDR"; //copied from pt-pt
|
||||
$text['label-node_cidr']['pt-br'] = "CIDR";
|
||||
$text['label-node_cidr']['pt-pt'] = "CIDR";
|
||||
$text['label-node_cidr']['ro-ro'] = "CIDR";
|
||||
$text['label-node_cidr']['ru-ru'] = "CIDR";
|
||||
$text['label-node_cidr']['sv-se'] = "CIDR";
|
||||
$text['label-node_cidr']['uk-ua'] = "CIDR";
|
||||
$text['label-node_cidr']['zh-cn'] = "CIDR";
|
||||
$text['label-node_cidr']['ja-jp'] = "CIDR";
|
||||
$text['label-node_cidr']['ko-kr'] = "CIDR";
|
||||
|
||||
$text['label-deny']['en-us'] = "deny";
|
||||
$text['label-deny']['en-gb'] = "deny";
|
||||
$text['label-deny']['ar-eg'] = "تنكر";
|
||||
$text['label-deny']['de-at'] = " verbieten"; //copied from de-de
|
||||
$text['label-deny']['de-ch'] = " verbieten"; //copied from de-de
|
||||
$text['label-deny']['de-de'] = " verbieten";
|
||||
$text['label-deny']['de-at'] = "verbieten";
|
||||
$text['label-deny']['de-ch'] = "verbieten";
|
||||
$text['label-deny']['de-de'] = "verbieten";
|
||||
$text['label-deny']['es-cl'] = "Negar";
|
||||
$text['label-deny']['es-mx'] = "Negar"; //copied from es-cl
|
||||
$text['label-deny']['fr-ca'] = " nier"; //copied from fr-fr
|
||||
$text['label-deny']['fr-fr'] = " nier";
|
||||
$text['label-deny']['es-mx'] = "Negar";
|
||||
$text['label-deny']['fr-ca'] = "nier";
|
||||
$text['label-deny']['fr-fr'] = "nier";
|
||||
$text['label-deny']['he-il'] = "להכחיש";
|
||||
$text['label-deny']['it-it'] = "nega";
|
||||
$text['label-deny']['nl-nl'] = "verbieden";
|
||||
$text['label-deny']['pl-pl'] = "odrzuć";
|
||||
$text['label-deny']['pt-br'] = "negar"; //copied from pt-pt
|
||||
$text['label-deny']['pt-br'] = "negar";
|
||||
$text['label-deny']['pt-pt'] = "negar";
|
||||
$text['label-deny']['ro-ro'] = "Nega";
|
||||
$text['label-deny']['ru-ru'] = "запретить";
|
||||
$text['label-deny']['sv-se'] = "förneka";
|
||||
$text['label-deny']['uk-ua'] = "правда";
|
||||
$text['label-deny']['zh-cn'] = "否定";
|
||||
$text['label-deny']['ja-jp'] = "拒否";
|
||||
$text['label-deny']['ko-kr'] = "부인하다";
|
||||
|
||||
$text['label-allow']['en-us'] = "allow";
|
||||
$text['label-allow']['en-gb'] = "allow";
|
||||
$text['label-allow']['ar-eg'] = "السماح";
|
||||
$text['label-allow']['de-at'] = "erlauben"; //copied from de-de
|
||||
$text['label-allow']['de-ch'] = "erlauben"; //copied from de-de
|
||||
$text['label-allow']['de-at'] = "erlauben";
|
||||
$text['label-allow']['de-ch'] = "erlauben";
|
||||
$text['label-allow']['de-de'] = "erlauben";
|
||||
$text['label-allow']['es-cl'] = "Permitir";
|
||||
$text['label-allow']['es-mx'] = "Permitir"; //copied from es-cl
|
||||
$text['label-allow']['fr-ca'] = " permettre"; //copied from fr-fr
|
||||
$text['label-allow']['fr-fr'] = " permettre";
|
||||
$text['label-allow']['es-mx'] = "Permitir";
|
||||
$text['label-allow']['fr-ca'] = "permettre";
|
||||
$text['label-allow']['fr-fr'] = "permettre";
|
||||
$text['label-allow']['he-il'] = "לאפשר";
|
||||
$text['label-allow']['it-it'] = "permetti";
|
||||
$text['label-allow']['nl-nl'] = "toestaan";
|
||||
$text['label-allow']['pl-pl'] = "zezwól";
|
||||
$text['label-allow']['pt-br'] = "permitir"; //copied from pt-pt
|
||||
$text['label-allow']['pt-br'] = "permitir";
|
||||
$text['label-allow']['pt-pt'] = "permitir";
|
||||
$text['label-allow']['ro-ro'] = "Permite";
|
||||
$text['label-allow']['ru-ru'] = "разрешить";
|
||||
$text['label-allow']['sv-se'] = "tillåta";
|
||||
$text['label-allow']['uk-ua'] = "дозволяти";
|
||||
$text['label-allow']['zh-cn'] = "允许";
|
||||
$text['label-allow']['ja-jp'] = "許可する";
|
||||
$text['label-allow']['ko-kr'] = "허용하다";
|
||||
|
||||
$text['label-access_control_name']['en-us'] = "Name";
|
||||
$text['label-access_control_name']['en-gb'] = "Name";
|
||||
$text['label-access_control_name']['ar-eg'] = "اسم";
|
||||
$text['label-access_control_name']['de-at'] = "Name"; //copied from de-de
|
||||
$text['label-access_control_name']['de-ch'] = "Name"; //copied from de-de
|
||||
$text['label-access_control_name']['de-at'] = "Name";
|
||||
$text['label-access_control_name']['de-ch'] = "Name";
|
||||
$text['label-access_control_name']['de-de'] = "Name";
|
||||
$text['label-access_control_name']['es-cl'] = "Nombre";
|
||||
$text['label-access_control_name']['es-mx'] = "Nombre"; //copied from es-cl
|
||||
$text['label-access_control_name']['fr-ca'] = "Nom"; //copied from fr-fr
|
||||
$text['label-access_control_name']['es-mx'] = "Nombre";
|
||||
$text['label-access_control_name']['fr-ca'] = "Nom";
|
||||
$text['label-access_control_name']['fr-fr'] = "Nom";
|
||||
$text['label-access_control_name']['he-il'] = "שם";
|
||||
$text['label-access_control_name']['it-it'] = "Nome";
|
||||
$text['label-access_control_name']['nl-nl'] = "Naam";
|
||||
$text['label-access_control_name']['pl-pl'] = " Imię";
|
||||
$text['label-access_control_name']['pt-br'] = "Nome"; //copied from pt-pt
|
||||
$text['label-access_control_name']['pl-pl'] = "Imię";
|
||||
$text['label-access_control_name']['pt-br'] = "Nome";
|
||||
$text['label-access_control_name']['pt-pt'] = "Nome";
|
||||
$text['label-access_control_name']['ro-ro'] = "Nume";
|
||||
$text['label-access_control_name']['ru-ru'] = "Имя";
|
||||
$text['label-access_control_name']['sv-se'] = "namn";
|
||||
$text['label-access_control_name']['uk-ua'] = "ім'я";
|
||||
$text['label-access_control_name']['zh-cn'] = "姓名";
|
||||
$text['label-access_control_name']['ja-jp'] = "名前";
|
||||
$text['label-access_control_name']['ko-kr'] = "이름";
|
||||
|
||||
$text['label-access_control_default']['en-us'] = "Default";
|
||||
$text['label-access_control_default']['en-gb'] = "Default";
|
||||
$text['label-access_control_default']['ar-eg'] = "افتراضي";
|
||||
$text['label-access_control_default']['de-at'] = "Standard"; //copied from de-de
|
||||
$text['label-access_control_default']['de-ch'] = "Standard"; //copied from de-de
|
||||
$text['label-access_control_default']['de-at'] = "Standard";
|
||||
$text['label-access_control_default']['de-ch'] = "Standard";
|
||||
$text['label-access_control_default']['de-de'] = "Standard";
|
||||
$text['label-access_control_default']['es-cl'] = "Defecto";
|
||||
$text['label-access_control_default']['es-mx'] = "Defecto"; //copied from es-cl
|
||||
$text['label-access_control_default']['fr-ca'] = "Par défaut"; //copied from fr-fr
|
||||
$text['label-access_control_default']['es-mx'] = "Defecto";
|
||||
$text['label-access_control_default']['fr-ca'] = "Par défaut";
|
||||
$text['label-access_control_default']['fr-fr'] = "Par défaut";
|
||||
$text['label-access_control_default']['he-il'] = " ברירת מחדל";
|
||||
$text['label-access_control_default']['he-il'] = "ברירת מחדל";
|
||||
$text['label-access_control_default']['it-it'] = "Predefinito";
|
||||
$text['label-access_control_default']['nl-nl'] = "Standaard";
|
||||
$text['label-access_control_default']['pl-pl'] = "Domyślnie";
|
||||
$text['label-access_control_default']['pt-br'] = "Padrão"; //copied from pt-pt
|
||||
$text['label-access_control_default']['pt-br'] = "Padrão";
|
||||
$text['label-access_control_default']['pt-pt'] = "Padrão";
|
||||
$text['label-access_control_default']['ro-ro'] = "Implicit";
|
||||
$text['label-access_control_default']['ru-ru'] = "По умолчанию";
|
||||
$text['label-access_control_default']['sv-se'] = "Standard";
|
||||
$text['label-access_control_default']['uk-ua'] = "дефолт";
|
||||
$text['label-access_control_default']['zh-cn'] = "默认";
|
||||
$text['label-access_control_default']['ja-jp'] = "デフォルト";
|
||||
$text['label-access_control_default']['ko-kr'] = "기본";
|
||||
|
||||
$text['label-access_control_nodes']['en-us'] = "Nodes";
|
||||
$text['label-access_control_nodes']['en-gb'] = "Nodes";
|
||||
$text['label-access_control_nodes']['ar-eg'] = "العقد";
|
||||
$text['label-access_control_nodes']['de-at'] = "Knoten"; //copied from de-de
|
||||
$text['label-access_control_nodes']['de-ch'] = "Knoten"; //copied from de-de
|
||||
$text['label-access_control_nodes']['de-at'] = "Knoten";
|
||||
$text['label-access_control_nodes']['de-ch'] = "Knoten";
|
||||
$text['label-access_control_nodes']['de-de'] = "Knoten";
|
||||
$text['label-access_control_nodes']['es-cl'] = "Nodos";
|
||||
$text['label-access_control_nodes']['es-mx'] = "Nodos"; //copied from es-cl
|
||||
$text['label-access_control_nodes']['fr-ca'] = " nœuds"; //copied from fr-fr
|
||||
$text['label-access_control_nodes']['fr-fr'] = " nœuds";
|
||||
$text['label-access_control_nodes']['es-mx'] = "Nodos";
|
||||
$text['label-access_control_nodes']['fr-ca'] = "nœuds";
|
||||
$text['label-access_control_nodes']['fr-fr'] = "nœuds";
|
||||
$text['label-access_control_nodes']['he-il'] = "בלוטות";
|
||||
$text['label-access_control_nodes']['it-it'] = "Nodi";
|
||||
$text['label-access_control_nodes']['nl-nl'] = "Knooppunten";
|
||||
$text['label-access_control_nodes']['pl-pl'] = "węzły";
|
||||
$text['label-access_control_nodes']['pt-br'] = "Nodes";
|
||||
$text['label-access_control_nodes']['pt-pt'] = " Nodes";
|
||||
$text['label-access_control_nodes']['pt-pt'] = "Nodes";
|
||||
$text['label-access_control_nodes']['ro-ro'] = "Noduri";
|
||||
$text['label-access_control_nodes']['ru-ru'] = "Узлы";
|
||||
$text['label-access_control_nodes']['sv-se'] = "Noder";
|
||||
$text['label-access_control_nodes']['uk-ua'] = "вузли";
|
||||
$text['label-access_control_nodes']['zh-cn'] = "节点";
|
||||
$text['label-access_control_nodes']['ja-jp'] = "ノード";
|
||||
$text['label-access_control_nodes']['ko-kr'] = "노드";
|
||||
|
||||
$text['label-access_control_description']['en-us'] = "Description";
|
||||
$text['label-access_control_description']['en-gb'] = "Description";
|
||||
$text['label-access_control_description']['ar-eg'] = "وصف";
|
||||
$text['label-access_control_description']['de-at'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-access_control_description']['de-ch'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-access_control_description']['de-at'] = "Beschreibung";
|
||||
$text['label-access_control_description']['de-ch'] = "Beschreibung";
|
||||
$text['label-access_control_description']['de-de'] = "Beschreibung";
|
||||
$text['label-access_control_description']['es-cl'] = "Descripción";
|
||||
$text['label-access_control_description']['es-mx'] = "Descripción"; //copied from es-cl
|
||||
$text['label-access_control_description']['fr-ca'] = "Description"; //copied from fr-fr
|
||||
$text['label-access_control_description']['es-mx'] = "Descripción";
|
||||
$text['label-access_control_description']['fr-ca'] = "Description";
|
||||
$text['label-access_control_description']['fr-fr'] = "Description";
|
||||
$text['label-access_control_description']['he-il'] = "תיאור";
|
||||
$text['label-access_control_description']['it-it'] = "Descrizione";
|
||||
$text['label-access_control_description']['nl-nl'] = "Omschrijving";
|
||||
$text['label-access_control_description']['pl-pl'] = "opis";
|
||||
$text['label-access_control_description']['pt-br'] = "Descrição"; //copied from pt-pt
|
||||
$text['label-access_control_description']['pt-br'] = "Descrição";
|
||||
$text['label-access_control_description']['pt-pt'] = "Descrição";
|
||||
$text['label-access_control_description']['ro-ro'] = "Descriere";
|
||||
$text['label-access_control_description']['ru-ru'] = "Описание";
|
||||
$text['label-access_control_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-access_control_description']['uk-ua'] = "опис";
|
||||
$text['label-access_control_description']['zh-cn'] = "描述";
|
||||
$text['label-access_control_description']['ja-jp'] = "説明";
|
||||
$text['label-access_control_description']['ko-kr'] = "설명";
|
||||
|
||||
$text['description-node_type']['en-us'] = "Select the type.";
|
||||
$text['description-node_type']['en-gb'] = "Select the type.";
|
||||
$text['description-node_type']['ar-eg'] = "حدد نوع.";
|
||||
$text['description-node_type']['de-at'] = " Wählen Sie den Typ."; //copied from de-de
|
||||
$text['description-node_type']['de-ch'] = " Wählen Sie den Typ."; //copied from de-de
|
||||
$text['description-node_type']['de-de'] = " Wählen Sie den Typ.";
|
||||
$text['description-node_type']['de-at'] = "Wählen Sie den Typ.";
|
||||
$text['description-node_type']['de-ch'] = "Wählen Sie den Typ.";
|
||||
$text['description-node_type']['de-de'] = "Wählen Sie den Typ.";
|
||||
$text['description-node_type']['es-cl'] = "Seleccione el tipo.";
|
||||
$text['description-node_type']['es-mx'] = "Seleccione el tipo."; //copied from es-cl
|
||||
$text['description-node_type']['fr-ca'] = " Sélectionnez le type"; //copied from fr-fr
|
||||
$text['description-node_type']['fr-fr'] = " Sélectionnez le type";
|
||||
$text['description-node_type']['he-il'] = " בחר את הסוג.";
|
||||
$text['description-node_type']['es-mx'] = "Seleccione el tipo.";
|
||||
$text['description-node_type']['fr-ca'] = "Sélectionnez le type";
|
||||
$text['description-node_type']['fr-fr'] = "Sélectionnez le type";
|
||||
$text['description-node_type']['he-il'] = "בחר את הסוג.";
|
||||
$text['description-node_type']['it-it'] = "Seleziona il tipo.";
|
||||
$text['description-node_type']['nl-nl'] = "Selecteer het type.";
|
||||
$text['description-node_type']['pl-pl'] = "Wybierz rodzaj.";
|
||||
$text['description-node_type']['pt-br'] = "Selecione o tipo."; //copied from pt-pt
|
||||
$text['description-node_type']['pt-br'] = "Selecione o tipo.";
|
||||
$text['description-node_type']['pt-pt'] = "Selecione o tipo.";
|
||||
$text['description-node_type']['ro-ro'] = "Selectați tipul.";
|
||||
$text['description-node_type']['ru-ru'] = "Выберите тип.";
|
||||
$text['description-node_type']['sv-se'] = "Välj typ.";
|
||||
$text['description-node_type']['uk-ua'] = "Виберіть тип.";
|
||||
$text['description-node_type']['zh-cn'] = "选择类型。";
|
||||
$text['description-node_type']['ja-jp'] = "タイプを選択してください。";
|
||||
$text['description-node_type']['ko-kr'] = "유형을 선택합니다.";
|
||||
|
||||
$text['description-node_domain']['en-us'] = "Enter the domain name.";
|
||||
$text['description-node_domain']['en-gb'] = "Enter the domain name.";
|
||||
$text['description-node_domain']['ar-eg'] = "أدخل اسم المجال.";
|
||||
$text['description-node_domain']['de-at'] = "Geben Sie den Domain-Namen."; //copied from de-de
|
||||
$text['description-node_domain']['de-ch'] = "Geben Sie den Domain-Namen."; //copied from de-de
|
||||
$text['description-node_domain']['de-at'] = "Geben Sie den Domain-Namen.";
|
||||
$text['description-node_domain']['de-ch'] = "Geben Sie den Domain-Namen.";
|
||||
$text['description-node_domain']['de-de'] = "Geben Sie den Domain-Namen.";
|
||||
$text['description-node_domain']['es-cl'] = "Introduzca el nombre de dominio.";
|
||||
$text['description-node_domain']['es-mx'] = "Introduzca el nombre de dominio."; //copied from es-cl
|
||||
$text['description-node_domain']['fr-ca'] = "Entrez le nom de domaine."; //copied from fr-fr
|
||||
$text['description-node_domain']['es-mx'] = "Introduzca el nombre de dominio.";
|
||||
$text['description-node_domain']['fr-ca'] = "Entrez le nom de domaine.";
|
||||
$text['description-node_domain']['fr-fr'] = "Entrez le nom de domaine.";
|
||||
$text['description-node_domain']['he-il'] = " הזן את שם הדומיין.";
|
||||
$text['description-node_domain']['it-it'] = "Inserisci il dominio.";
|
||||
$text['description-node_domain']['nl-nl'] = "Voer de domeinnaam in.";
|
||||
$text['description-node_domain']['pl-pl'] = " Wprowadź nazwę domeny.";
|
||||
$text['description-node_domain']['pt-br'] = "Digite o nome de domínio."; //copied from pt-pt
|
||||
$text['description-node_domain']['pl-pl'] = "Wprowadź nazwę domeny.";
|
||||
$text['description-node_domain']['pt-br'] = "Digite o nome de domínio.";
|
||||
$text['description-node_domain']['pt-pt'] = "Digite o nome de domínio.";
|
||||
$text['description-node_domain']['ro-ro'] = "Introduceți numele de domeniu.";
|
||||
$text['description-node_domain']['ru-ru'] = "Введите имя домена.";
|
||||
$text['description-node_domain']['sv-se'] = "Ange domännamnet.";
|
||||
$text['description-node_domain']['uk-ua'] = "Введіть ім'я домену.";
|
||||
$text['description-node_domain']['zh-cn'] = "输入域名。";
|
||||
$text['description-node_domain']['ja-jp'] = "ドメイン名を入力します。";
|
||||
$text['description-node_domain']['ko-kr'] = "도메인 이름을 입력합니다.";
|
||||
|
||||
$text['description-node_description']['en-us'] = "Enter the description.";
|
||||
$text['description-node_description']['en-gb'] = "Enter the description.";
|
||||
$text['description-node_description']['ar-eg'] = "أدخل الوصف.";
|
||||
$text['description-node_description']['de-at'] = "Geben Sie die Beschreibung ein."; //copied from de-de
|
||||
$text['description-node_description']['de-ch'] = "Geben Sie die Beschreibung ein."; //copied from de-de
|
||||
$text['description-node_description']['de-at'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-node_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-node_description']['de-de'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-node_description']['es-cl'] = " Introduzca la descripción.";
|
||||
$text['description-node_description']['es-mx'] = " Introduzca la descripción."; //copied from es-cl
|
||||
$text['description-node_description']['fr-ca'] = "Entrez la description."; //copied from fr-fr
|
||||
$text['description-node_description']['es-cl'] = "Introduzca la descripción.";
|
||||
$text['description-node_description']['es-mx'] = "Introduzca la descripción.";
|
||||
$text['description-node_description']['fr-ca'] = "Entrez la description.";
|
||||
$text['description-node_description']['fr-fr'] = "Entrez la description.";
|
||||
$text['description-node_description']['he-il'] = " הזן את התיאור.";
|
||||
$text['description-node_description']['it-it'] = "Inserisci la descrizione.";
|
||||
$text['description-node_description']['nl-nl'] = "Voer de beschrijving in.";
|
||||
$text['description-node_description']['pl-pl'] = " Wprowadź opis.";
|
||||
$text['description-node_description']['pl-pl'] = "Wprowadź opis.";
|
||||
$text['description-node_description']['pt-br'] = "Digite a descrição.";
|
||||
$text['description-node_description']['pt-pt'] = " Digite a descrição.";
|
||||
$text['description-node_description']['pt-pt'] = "Digite a descrição.";
|
||||
$text['description-node_description']['ro-ro'] = "Introduceți descrierea.";
|
||||
$text['description-node_description']['ru-ru'] = "Введите описание.";
|
||||
$text['description-node_description']['sv-se'] = "Ange beskrivningen.";
|
||||
$text['description-node_description']['uk-ua'] = "Введіть опис.";
|
||||
$text['description-node_description']['zh-cn'] = "输入说明。";
|
||||
$text['description-node_description']['ja-jp'] = "説明を入力します。";
|
||||
$text['description-node_description']['ko-kr'] = "설명을 입력합니다.";
|
||||
|
||||
$text['description-node_cidr']['en-us'] = "Enter the IP CIDR range.";
|
||||
$text['description-node_cidr']['en-gb'] = "Enter the IP CIDR range.";
|
||||
$text['description-node_cidr']['ar-eg'] = "أدخل نطاق IP CIDR.";
|
||||
$text['description-node_cidr']['de-at'] = " Geben Sie die IP CIDR-Bereich an."; //copied from de-de
|
||||
$text['description-node_cidr']['de-ch'] = " Geben Sie die IP CIDR-Bereich an."; //copied from de-de
|
||||
$text['description-node_cidr']['de-de'] = " Geben Sie die IP CIDR-Bereich an.";
|
||||
$text['description-node_cidr']['es-cl'] = " Introduzca el rango de direcciones IP CIDR.";
|
||||
$text['description-node_cidr']['es-mx'] = " Introduzca el rango de direcciones IP CIDR."; //copied from es-cl
|
||||
$text['description-node_cidr']['fr-ca'] = "Entrez la plage IP CIDR."; //copied from fr-fr
|
||||
$text['description-node_cidr']['de-at'] = "Geben Sie die IP CIDR-Bereich an.";
|
||||
$text['description-node_cidr']['de-ch'] = "Geben Sie die IP CIDR-Bereich an.";
|
||||
$text['description-node_cidr']['de-de'] = "Geben Sie die IP CIDR-Bereich an.";
|
||||
$text['description-node_cidr']['es-cl'] = "Introduzca el rango de direcciones IP CIDR.";
|
||||
$text['description-node_cidr']['es-mx'] = "Introduzca el rango de direcciones IP CIDR.";
|
||||
$text['description-node_cidr']['fr-ca'] = "Entrez la plage IP CIDR.";
|
||||
$text['description-node_cidr']['fr-fr'] = "Entrez la plage IP CIDR.";
|
||||
$text['description-node_cidr']['he-il'] = " הזן את טווח ה- IP CIDR.";
|
||||
$text['description-node_cidr']['it-it'] = "Inserisci il range IP CIDR.";
|
||||
$text['description-node_cidr']['nl-nl'] = "Voer het IP CIDR reeks in.";
|
||||
$text['description-node_cidr']['pl-pl'] = "Wprowadź zakres IP CIDR.";
|
||||
$text['description-node_cidr']['pt-br'] = "Digite o intervalo IP CIDR."; //copied from pt-pt
|
||||
$text['description-node_cidr']['pt-br'] = "Digite o intervalo IP CIDR.";
|
||||
$text['description-node_cidr']['pt-pt'] = "Digite o intervalo IP CIDR.";
|
||||
$text['description-node_cidr']['ro-ro'] = "Introduceți intervalul de IP CIDR.";
|
||||
$text['description-node_cidr']['ru-ru'] = "Введите диапазон IP CIDR.";
|
||||
$text['description-node_cidr']['sv-se'] = "Ange IP CIDR sortimentet.";
|
||||
$text['description-node_cidr']['uk-ua'] = "Введіть діапазон IP-CIDR.";
|
||||
$text['description-node_cidr']['zh-cn'] = "输入 IP CIDR 范围。";
|
||||
$text['description-node_cidr']['ja-jp'] = "IP CIDR 範囲を入力します。";
|
||||
$text['description-node_cidr']['ko-kr'] = "IP CIDR 범위를 입력합니다.";
|
||||
|
||||
$text['description-access_control_name']['en-us'] = "Enter the name.";
|
||||
$text['description-access_control_name']['en-gb'] = "Enter the name.";
|
||||
$text['description-access_control_name']['ar-eg'] = "أدخل اسم.";
|
||||
$text['description-access_control_name']['de-at'] = "Namen eingeben."; //copied from de-de
|
||||
$text['description-access_control_name']['de-ch'] = "Namen eingeben."; //copied from de-de
|
||||
$text['description-access_control_name']['de-at'] = "Namen eingeben.";
|
||||
$text['description-access_control_name']['de-ch'] = "Namen eingeben.";
|
||||
$text['description-access_control_name']['de-de'] = "Namen eingeben.";
|
||||
$text['description-access_control_name']['es-cl'] = " Introduzca el nombre.";
|
||||
$text['description-access_control_name']['es-mx'] = " Introduzca el nombre."; //copied from es-cl
|
||||
$text['description-access_control_name']['fr-ca'] = "Entrez le nom."; //copied from fr-fr
|
||||
$text['description-access_control_name']['es-cl'] = "Introduzca el nombre.";
|
||||
$text['description-access_control_name']['es-mx'] = "Introduzca el nombre.";
|
||||
$text['description-access_control_name']['fr-ca'] = "Entrez le nom.";
|
||||
$text['description-access_control_name']['fr-fr'] = "Entrez le nom.";
|
||||
$text['description-access_control_name']['he-il'] = " הזן את השם.";
|
||||
$text['description-access_control_name']['it-it'] = "Inserisci il nome.";
|
||||
$text['description-access_control_name']['nl-nl'] = "Voer de naam in.";
|
||||
$text['description-access_control_name']['pl-pl'] = " Wpisz nazwę.";
|
||||
$text['description-access_control_name']['pt-br'] = "Digite o nome."; //copied from pt-pt
|
||||
$text['description-access_control_name']['pl-pl'] = "Wpisz nazwę.";
|
||||
$text['description-access_control_name']['pt-br'] = "Digite o nome.";
|
||||
$text['description-access_control_name']['pt-pt'] = "Digite o nome.";
|
||||
$text['description-access_control_name']['ro-ro'] = "Introduceți numele.";
|
||||
$text['description-access_control_name']['ru-ru'] = "Введите имя.";
|
||||
$text['description-access_control_name']['sv-se'] = "Ange namnet.";
|
||||
$text['description-access_control_name']['uk-ua'] = "Введіть ім'я.";
|
||||
$text['description-access_control_name']['zh-cn'] = "输入名称。";
|
||||
$text['description-access_control_name']['ja-jp'] = "名前を入力します。";
|
||||
$text['description-access_control_name']['ko-kr'] = "이름을 입력하세요.";
|
||||
|
||||
$text['description-access_control_description']['en-us'] = "Enter the description";
|
||||
$text['description-access_control_description']['en-gb'] = "Enter the description";
|
||||
$text['description-access_control_description']['ar-eg'] = "دخل وصف";
|
||||
$text['description-access_control_description']['de-at'] = "Beschreibung eingeben."; //copied from de-de
|
||||
$text['description-access_control_description']['de-ch'] = "Beschreibung eingeben."; //copied from de-de
|
||||
$text['description-access_control_description']['de-at'] = "Beschreibung eingeben.";
|
||||
$text['description-access_control_description']['de-ch'] = "Beschreibung eingeben.";
|
||||
$text['description-access_control_description']['de-de'] = "Beschreibung eingeben.";
|
||||
$text['description-access_control_description']['es-cl'] = "Introduzca la descripción";
|
||||
$text['description-access_control_description']['es-mx'] = "Introduzca la descripción"; //copied from es-cl
|
||||
$text['description-access_control_description']['fr-ca'] = "Entrez la description."; //copied from fr-fr
|
||||
$text['description-access_control_description']['es-mx'] = "Introduzca la descripción";
|
||||
$text['description-access_control_description']['fr-ca'] = "Entrez la description.";
|
||||
$text['description-access_control_description']['fr-fr'] = "Entrez la description.";
|
||||
$text['description-access_control_description']['he-il'] = " הזן את התיאור";
|
||||
$text['description-access_control_description']['it-it'] = "Inserisci la descrizione";
|
||||
@@ -441,26 +500,32 @@ $text['description-access_control_description']['ro-ro'] = "Introduceți descrie
|
||||
$text['description-access_control_description']['ru-ru'] = "Введите описание";
|
||||
$text['description-access_control_description']['sv-se'] = "Ange en beskrivning";
|
||||
$text['description-access_control_description']['uk-ua'] = "Введіть опис";
|
||||
$text['description-access_control_description']['zh-cn'] = "输入描述";
|
||||
$text['description-access_control_description']['ja-jp'] = "説明を入力してください";
|
||||
$text['description-access_control_description']['ko-kr'] = "설명을 입력하세요";
|
||||
|
||||
$text['description-access_control_default']['en-us'] = "Select the default type.";
|
||||
$text['description-access_control_default']['en-gb'] = "Select the default type.";
|
||||
$text['description-access_control_default']['ar-eg'] = "حدد نوع الافتراضي.";
|
||||
$text['description-access_control_default']['de-at'] = " Wählen Sie den Standardtyp."; //copied from de-de
|
||||
$text['description-access_control_default']['de-ch'] = " Wählen Sie den Standardtyp."; //copied from de-de
|
||||
$text['description-access_control_default']['de-de'] = " Wählen Sie den Standardtyp.";
|
||||
$text['description-access_control_default']['de-at'] = "Wählen Sie den Standardtyp.";
|
||||
$text['description-access_control_default']['de-ch'] = "Wählen Sie den Standardtyp.";
|
||||
$text['description-access_control_default']['de-de'] = "Wählen Sie den Standardtyp.";
|
||||
$text['description-access_control_default']['es-cl'] = "Seleccione el tipo de defecto.";
|
||||
$text['description-access_control_default']['es-mx'] = "Seleccione el tipo de defecto."; //copied from es-cl
|
||||
$text['description-access_control_default']['fr-ca'] = "Sélectionnez le type de défaut"; //copied from fr-fr
|
||||
$text['description-access_control_default']['es-mx'] = "Seleccione el tipo de defecto.";
|
||||
$text['description-access_control_default']['fr-ca'] = "Sélectionnez le type de défaut";
|
||||
$text['description-access_control_default']['fr-fr'] = "Sélectionnez le type de défaut";
|
||||
$text['description-access_control_default']['he-il'] = " בחר את סוג ברירת המחדל.";
|
||||
$text['description-access_control_default']['it-it'] = "Scegli il tipo di default.";
|
||||
$text['description-access_control_default']['nl-nl'] = "Selecteer het standaard type.";
|
||||
$text['description-access_control_default']['pl-pl'] = "Wybierz typ domyślny.";
|
||||
$text['description-access_control_default']['pt-br'] = "Selecione o tipo de padrão."; //copied from pt-pt
|
||||
$text['description-access_control_default']['pt-br'] = "Selecione o tipo de padrão.";
|
||||
$text['description-access_control_default']['pt-pt'] = "Selecione o tipo de padrão.";
|
||||
$text['description-access_control_default']['ro-ro'] = "Selectați tipul implicit.";
|
||||
$text['description-access_control_default']['ru-ru'] = "Выберите тип по умолчанию.";
|
||||
$text['description-access_control_default']['sv-se'] = "Välj standardtypen.";
|
||||
$text['description-access_control_default']['uk-ua'] = "Вибір типу за замовчуванням.";
|
||||
$text['description-access_control_default']['zh-cn'] = "选择默认类型。";
|
||||
$text['description-access_control_default']['ja-jp'] = "デフォルトのタイプを選択します。";
|
||||
$text['description-access_control_default']['ko-kr'] = "기본 유형을 선택합니다.";
|
||||
|
||||
?>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Access Controls";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Access Controls";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "عناصر التحكم في الوصول";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = " Zugriffskontrolle";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = " Zugriffskontrolle";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Zugriffskontrolle";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Zugriffskontrollen";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Zugriffskontrolle";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Controles de acceso";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Controles de acceso";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Contrôles d'accès";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Contrôles d'accès";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "בקרת גישה";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Controlli Accesso";
|
||||
@@ -21,10 +21,16 @@
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Контроль доступа";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "контроль доступу";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Åtkomstkontroll";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "出入控制";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "アクセス制御";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "액세스 제어";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "bd47c972-5498-4541-b44a-d4bbfac69496";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/access_controls/access_controls.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -30,16 +30,6 @@ if (!class_exists('access_controls')) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,36 +1,38 @@
|
||||
<?php
|
||||
#This file was last reorganized on 19th of September 2017 08:54:24 AM UTC
|
||||
|
||||
$text['title-operator_panel']['en-us'] = "Operator Panel";
|
||||
$text['title-operator_panel']['en-gb'] = "Operator Panel";
|
||||
$text['title-operator_panel']['ar-eg'] = "";
|
||||
$text['title-operator_panel']['de-at'] = "Bedienfeld"; //copied from de-de
|
||||
$text['title-operator_panel']['de-ch'] = "Bedienfeld"; //copied from de-de
|
||||
$text['title-operator_panel']['ar-eg'] = "لوحة المشغل";
|
||||
$text['title-operator_panel']['de-at'] = "Bedienfeld";
|
||||
$text['title-operator_panel']['de-ch'] = "Bedienfeld";
|
||||
$text['title-operator_panel']['de-de'] = "Bedienfeld";
|
||||
$text['title-operator_panel']['es-cl'] = "Panel de Operador";
|
||||
$text['title-operator_panel']['es-mx'] = "Panel de Operador"; //copied from es-cl
|
||||
$text['title-operator_panel']['fr-ca'] = "Operator Panel"; //copied from fr-fr
|
||||
$text['title-operator_panel']['fr-fr'] = "Operator Panel";
|
||||
$text['title-operator_panel']['es-mx'] = "Panel de Operador";
|
||||
$text['title-operator_panel']['fr-ca'] = "Panneau de commande";
|
||||
$text['title-operator_panel']['fr-fr'] = "Panneau de commande";
|
||||
$text['title-operator_panel']['he-il'] = "לוח מפעיל";
|
||||
$text['title-operator_panel']['it-it'] = "Pannello Operatore";
|
||||
$text['title-operator_panel']['nl-nl'] = "Operator paneel";
|
||||
$text['title-operator_panel']['pl-pl'] = "Panel operatora";
|
||||
$text['title-operator_panel']['pt-br'] = "Painel do operador";
|
||||
$text['title-operator_panel']['pt-pt'] = "Painel do Operador";
|
||||
$text['title-operator_panel']['ro-ro'] = "";
|
||||
$text['title-operator_panel']['ro-ro'] = "Panoul operator";
|
||||
$text['title-operator_panel']['ru-ru'] = "Панель Оператора";
|
||||
$text['title-operator_panel']['sv-se'] = "Telefonist Panel";
|
||||
$text['title-operator_panel']['uk-ua'] = "Панель оператора";
|
||||
$text['title-operator_panel']['uk-ua'] = "Оператори";
|
||||
$text['title-operator_panel']['zh-cn'] = "操作面板";
|
||||
$text['title-operator_panel']['ja-jp'] = "オペレーターパネル";
|
||||
$text['title-operator_panel']['ko-kr'] = "운영자 패널";
|
||||
|
||||
$text['label-status_on_demand']['en-us'] = "On Demand";
|
||||
$text['label-status_on_demand']['en-gb'] = "On Demand";
|
||||
$text['label-status_on_demand']['ar-eg'] = "";
|
||||
$text['label-status_on_demand']['de-at'] = "Bei Bedarf"; //copied from de-de
|
||||
$text['label-status_on_demand']['de-ch'] = "Bei Bedarf"; //copied from de-de
|
||||
$text['label-status_on_demand']['ar-eg'] = "على الطلب";
|
||||
$text['label-status_on_demand']['de-at'] = "Bei Bedarf";
|
||||
$text['label-status_on_demand']['de-ch'] = "Bei Bedarf";
|
||||
$text['label-status_on_demand']['de-de'] = "Bei Bedarf";
|
||||
$text['label-status_on_demand']['es-cl'] = "A Pedido";
|
||||
$text['label-status_on_demand']['es-mx'] = "A Pedido"; //copied from es-cl
|
||||
$text['label-status_on_demand']['fr-ca'] = "Sur Demande"; //copied from fr-fr
|
||||
$text['label-status_on_demand']['es-mx'] = "A Pedido";
|
||||
$text['label-status_on_demand']['fr-ca'] = "Sur Demande";
|
||||
$text['label-status_on_demand']['fr-fr'] = "Sur Demande";
|
||||
$text['label-status_on_demand']['he-il'] = "על פי דרישה";
|
||||
$text['label-status_on_demand']['it-it'] = "Su Richiesta";
|
||||
@@ -38,20 +40,23 @@ $text['label-status_on_demand']['nl-nl'] = "Op Aanvraag";
|
||||
$text['label-status_on_demand']['pl-pl'] = "Na żądanie";
|
||||
$text['label-status_on_demand']['pt-br'] = "A pedido";
|
||||
$text['label-status_on_demand']['pt-pt'] = "A Pedido";
|
||||
$text['label-status_on_demand']['ro-ro'] = "";
|
||||
$text['label-status_on_demand']['ro-ro'] = "La cerere";
|
||||
$text['label-status_on_demand']['ru-ru'] = "По требованию";
|
||||
$text['label-status_on_demand']['sv-se'] = "På Begäran";
|
||||
$text['label-status_on_demand']['uk-ua'] = "Ðа вимогу";
|
||||
$text['label-status_on_demand']['uk-ua'] = "На Демі";
|
||||
$text['label-status_on_demand']['zh-cn'] = "一经请求";
|
||||
$text['label-status_on_demand']['ja-jp'] = "オンデマンド";
|
||||
$text['label-status_on_demand']['ko-kr'] = "주문형";
|
||||
|
||||
$text['label-status_on_break']['en-us'] = "On Break";
|
||||
$text['label-status_on_break']['en-gb'] = "On Break";
|
||||
$text['label-status_on_break']['ar-eg'] = "";
|
||||
$text['label-status_on_break']['de-at'] = "In Pause"; //copied from de-de
|
||||
$text['label-status_on_break']['de-ch'] = "In Pause"; //copied from de-de
|
||||
$text['label-status_on_break']['ar-eg'] = "في استراحة";
|
||||
$text['label-status_on_break']['de-at'] = "In Pause";
|
||||
$text['label-status_on_break']['de-ch'] = "In Pause";
|
||||
$text['label-status_on_break']['de-de'] = "In Pause";
|
||||
$text['label-status_on_break']['es-cl'] = "En Pausa";
|
||||
$text['label-status_on_break']['es-mx'] = "En Pausa"; //copied from es-cl
|
||||
$text['label-status_on_break']['fr-ca'] = "En Pause"; //copied from fr-fr
|
||||
$text['label-status_on_break']['es-mx'] = "En Pausa";
|
||||
$text['label-status_on_break']['fr-ca'] = "En Pause";
|
||||
$text['label-status_on_break']['fr-fr'] = "En Pause";
|
||||
$text['label-status_on_break']['he-il'] = "בהפסקה";
|
||||
$text['label-status_on_break']['it-it'] = "In Pausa";
|
||||
@@ -59,62 +64,71 @@ $text['label-status_on_break']['nl-nl'] = "In de wacht";
|
||||
$text['label-status_on_break']['pl-pl'] = "Na przerwie";
|
||||
$text['label-status_on_break']['pt-br'] = "Em pausa";
|
||||
$text['label-status_on_break']['pt-pt'] = "Em Pausa";
|
||||
$text['label-status_on_break']['ro-ro'] = "";
|
||||
$text['label-status_on_break']['ro-ro'] = "In pauza";
|
||||
$text['label-status_on_break']['ru-ru'] = "Пауза";
|
||||
$text['label-status_on_break']['sv-se'] = "På Rast";
|
||||
$text['label-status_on_break']['uk-ua'] = "Ðа перерві";
|
||||
$text['label-status_on_break']['uk-ua'] = "Прорив";
|
||||
$text['label-status_on_break']['zh-cn'] = "休息时";
|
||||
$text['label-status_on_break']['ja-jp'] = "休んで";
|
||||
$text['label-status_on_break']['ko-kr'] = "쉬는 중";
|
||||
|
||||
$text['label-status_logged_out_or_unknown']['en-us'] = "Logged Out / Unknown";
|
||||
$text['label-status_logged_out_or_unknown']['en-gb'] = "Logged Out / Unknown";
|
||||
$text['label-status_logged_out_or_unknown']['ar-eg'] = "";
|
||||
$text['label-status_logged_out_or_unknown']['de-at'] = "Abgemeldet / Unbekannt"; //copied from de-de
|
||||
$text['label-status_logged_out_or_unknown']['de-ch'] = "Abgemeldet / Unbekannt"; //copied from de-de
|
||||
$text['label-status_logged_out_or_unknown']['ar-eg'] = "تم تسجيل الخروج / غير معروف";
|
||||
$text['label-status_logged_out_or_unknown']['de-at'] = "Abgemeldet / Unbekannt";
|
||||
$text['label-status_logged_out_or_unknown']['de-ch'] = "Abgemeldet / Unbekannt";
|
||||
$text['label-status_logged_out_or_unknown']['de-de'] = "Abgemeldet / Unbekannt";
|
||||
$text['label-status_logged_out_or_unknown']['es-cl'] = "Desconectado / Desconocido";
|
||||
$text['label-status_logged_out_or_unknown']['es-mx'] = "Desconectado / Desconocido"; //copied from es-cl
|
||||
$text['label-status_logged_out_or_unknown']['fr-ca'] = "Déconnexion / Unknown"; //copied from fr-fr
|
||||
$text['label-status_logged_out_or_unknown']['es-mx'] = "Desconectado / Desconocido";
|
||||
$text['label-status_logged_out_or_unknown']['fr-ca'] = "Déconnexion / Unknown";
|
||||
$text['label-status_logged_out_or_unknown']['fr-fr'] = "Déconnexion / Unknown";
|
||||
$text['label-status_logged_out_or_unknown']['he-il'] = "";
|
||||
$text['label-status_logged_out_or_unknown']['he-il'] = "מנותק / לא ידוע";
|
||||
$text['label-status_logged_out_or_unknown']['it-it'] = "Sloggato/Sconosciuto";
|
||||
$text['label-status_logged_out_or_unknown']['nl-nl'] = "Afgelogged / Onbekend";
|
||||
$text['label-status_logged_out_or_unknown']['pl-pl'] = "Wylogowany / Nieznany";
|
||||
$text['label-status_logged_out_or_unknown']['pt-br'] = "Desligar / Desconhecido";
|
||||
$text['label-status_logged_out_or_unknown']['pt-pt'] = "Desligado / Unknown";
|
||||
$text['label-status_logged_out_or_unknown']['ro-ro'] = "";
|
||||
$text['label-status_logged_out_or_unknown']['ro-ro'] = "Deconectat/Necunoscut";
|
||||
$text['label-status_logged_out_or_unknown']['ru-ru'] = "Вышел из системы / Неизвестен";
|
||||
$text['label-status_logged_out_or_unknown']['sv-se'] = "Utloggad / Okänd";
|
||||
$text['label-status_logged_out_or_unknown']['uk-ua'] = "Вийшов/невідомо";
|
||||
$text['label-status_logged_out_or_unknown']['uk-ua'] = "Увійти / Невідомо";
|
||||
$text['label-status_logged_out_or_unknown']['zh-cn'] = "注销/未知";
|
||||
$text['label-status_logged_out_or_unknown']['ja-jp'] = "ログアウト/不明";
|
||||
$text['label-status_logged_out_or_unknown']['ko-kr'] = "로그아웃됨/알 수 없음";
|
||||
|
||||
$text['label-status_logged_out']['en-us'] = "Logged Out";
|
||||
$text['label-status_logged_out']['en-gb'] = "Logged Out";
|
||||
$text['label-status_logged_out']['ar-eg'] = "";
|
||||
$text['label-status_logged_out']['de-at'] = "Abgemeldet"; //copied from de-de
|
||||
$text['label-status_logged_out']['de-ch'] = "Abgemeldet"; //copied from de-de
|
||||
$text['label-status_logged_out']['ar-eg'] = "تسجيل الخروج";
|
||||
$text['label-status_logged_out']['de-at'] = "Abgemeldet";
|
||||
$text['label-status_logged_out']['de-ch'] = "Abgemeldet";
|
||||
$text['label-status_logged_out']['de-de'] = "Abgemeldet";
|
||||
$text['label-status_logged_out']['es-cl'] = "Desconectado";
|
||||
$text['label-status_logged_out']['es-mx'] = "Desconectado"; //copied from es-cl
|
||||
$text['label-status_logged_out']['fr-ca'] = "Déconnexion"; //copied from fr-fr
|
||||
$text['label-status_logged_out']['es-mx'] = "Desconectado";
|
||||
$text['label-status_logged_out']['fr-ca'] = "Déconnexion";
|
||||
$text['label-status_logged_out']['fr-fr'] = "Déconnexion";
|
||||
$text['label-status_logged_out']['he-il'] = "";
|
||||
$text['label-status_logged_out']['he-il'] = "התנתק";
|
||||
$text['label-status_logged_out']['it-it'] = "Sloggato";
|
||||
$text['label-status_logged_out']['nl-nl'] = "Afgelogged";
|
||||
$text['label-status_logged_out']['pl-pl'] = "Wylogowany";
|
||||
$text['label-status_logged_out']['pt-br'] = "Desligado"; //copied from pt-pt
|
||||
$text['label-status_logged_out']['pt-br'] = "Desligado";
|
||||
$text['label-status_logged_out']['pt-pt'] = "Desligado";
|
||||
$text['label-status_logged_out']['ro-ro'] = "";
|
||||
$text['label-status_logged_out']['ro-ro'] = "Delogat";
|
||||
$text['label-status_logged_out']['ru-ru'] = "Вышел из системы";
|
||||
$text['label-status_logged_out']['sv-se'] = "Utloggad";
|
||||
$text['label-status_logged_out']['uk-ua'] = "Вийшов";
|
||||
$text['label-status_logged_out']['uk-ua'] = "Увійти";
|
||||
$text['label-status_logged_out']['zh-cn'] = "登出";
|
||||
$text['label-status_logged_out']['ja-jp'] = "ログアウトしました";
|
||||
$text['label-status_logged_out']['ko-kr'] = "로그아웃됨";
|
||||
|
||||
$text['label-status_do_not_disturb']['en-us'] = "Do Not Disturb";
|
||||
$text['label-status_do_not_disturb']['en-gb'] = "Do Not Disturb";
|
||||
$text['label-status_do_not_disturb']['ar-eg'] = "";
|
||||
$text['label-status_do_not_disturb']['de-at'] = "Bitte nicht Stören"; //copied from de-de
|
||||
$text['label-status_do_not_disturb']['de-ch'] = "Bitte nicht Stören"; //copied from de-de
|
||||
$text['label-status_do_not_disturb']['ar-eg'] = "لا تخل";
|
||||
$text['label-status_do_not_disturb']['de-at'] = "Bitte nicht Stören";
|
||||
$text['label-status_do_not_disturb']['de-ch'] = "Bitte nicht Stören";
|
||||
$text['label-status_do_not_disturb']['de-de'] = "Bitte nicht Stören";
|
||||
$text['label-status_do_not_disturb']['es-cl'] = "No Molestar";
|
||||
$text['label-status_do_not_disturb']['es-mx'] = "No Molestar"; //copied from es-cl
|
||||
$text['label-status_do_not_disturb']['fr-ca'] = "Ne pas Déranger"; //copied from fr-fr
|
||||
$text['label-status_do_not_disturb']['es-mx'] = "No Molestar";
|
||||
$text['label-status_do_not_disturb']['fr-ca'] = "Ne pas Déranger";
|
||||
$text['label-status_do_not_disturb']['fr-fr'] = "Ne pas Déranger";
|
||||
$text['label-status_do_not_disturb']['he-il'] = "נא לא להפריע";
|
||||
$text['label-status_do_not_disturb']['it-it'] = "Non Disturbare";
|
||||
@@ -122,62 +136,71 @@ $text['label-status_do_not_disturb']['nl-nl'] = "Niet Storen";
|
||||
$text['label-status_do_not_disturb']['pl-pl'] = "Nie przeszkadzać (DND)";
|
||||
$text['label-status_do_not_disturb']['pt-br'] = "Não perturbe";
|
||||
$text['label-status_do_not_disturb']['pt-pt'] = "Não perturbe (DND)";
|
||||
$text['label-status_do_not_disturb']['ro-ro'] = "";
|
||||
$text['label-status_do_not_disturb']['ro-ro'] = "Nu deranjați";
|
||||
$text['label-status_do_not_disturb']['ru-ru'] = "Просьба не беспокоить";
|
||||
$text['label-status_do_not_disturb']['sv-se'] = "Stör Ej";
|
||||
$text['label-status_do_not_disturb']['uk-ua'] = "Ðе турбувати";
|
||||
$text['label-status_do_not_disturb']['uk-ua'] = "Не турбувати";
|
||||
$text['label-status_do_not_disturb']['zh-cn'] = "请勿打扰";
|
||||
$text['label-status_do_not_disturb']['ja-jp'] = "邪魔しないでください";
|
||||
$text['label-status_do_not_disturb']['ko-kr'] = "방해하지 마";
|
||||
|
||||
$text['label-status_available_on_demand']['en-us'] = "Available (On Demand)";
|
||||
$text['label-status_available_on_demand']['en-gb'] = "Available (On Demand)";
|
||||
$text['label-status_available_on_demand']['ar-eg'] = "";
|
||||
$text['label-status_available_on_demand']['de-at'] = "Verfügbar (Bei Bedarf)"; //copied from de-de
|
||||
$text['label-status_available_on_demand']['de-ch'] = "Verfügbar (Bei Bedarf)"; //copied from de-de
|
||||
$text['label-status_available_on_demand']['ar-eg'] = "متاح (عند الطلب)";
|
||||
$text['label-status_available_on_demand']['de-at'] = "Verfügbar (Bei Bedarf)";
|
||||
$text['label-status_available_on_demand']['de-ch'] = "Verfügbar (Bei Bedarf)";
|
||||
$text['label-status_available_on_demand']['de-de'] = "Verfügbar (Bei Bedarf)";
|
||||
$text['label-status_available_on_demand']['es-cl'] = "Disponible (A Pedido)";
|
||||
$text['label-status_available_on_demand']['es-mx'] = "Disponible (A Pedido)"; //copied from es-cl
|
||||
$text['label-status_available_on_demand']['fr-ca'] = "Disponible (sur demande)"; //copied from fr-fr
|
||||
$text['label-status_available_on_demand']['es-mx'] = "Disponible (A Pedido)";
|
||||
$text['label-status_available_on_demand']['fr-ca'] = "Disponible (sur demande)";
|
||||
$text['label-status_available_on_demand']['fr-fr'] = "Disponible (sur demande)";
|
||||
$text['label-status_available_on_demand']['he-il'] = "";
|
||||
$text['label-status_available_on_demand']['he-il'] = "זמין (לפי דרישה)";
|
||||
$text['label-status_available_on_demand']['it-it'] = "Disponibile (Su Richiesta)";
|
||||
$text['label-status_available_on_demand']['nl-nl'] = "Beschikbaar (Op Aaanvraag)";
|
||||
$text['label-status_available_on_demand']['pl-pl'] = "Dostępny (na żądanie)";
|
||||
$text['label-status_available_on_demand']['pt-br'] = "Disponivel (A pedido)";
|
||||
$text['label-status_available_on_demand']['pt-pt'] = "Disponível (A Pedido)";
|
||||
$text['label-status_available_on_demand']['ro-ro'] = "";
|
||||
$text['label-status_available_on_demand']['ro-ro'] = "Disponibil (la cerere)";
|
||||
$text['label-status_available_on_demand']['ru-ru'] = "Доступен (по требованию)";
|
||||
$text['label-status_available_on_demand']['sv-se'] = "Tillgänglig (På Begäran)";
|
||||
$text['label-status_available_on_demand']['uk-ua'] = "ДоÑтупний (на вимогу)";
|
||||
$text['label-status_available_on_demand']['uk-ua'] = "Доступний (на вимогу)";
|
||||
$text['label-status_available_on_demand']['zh-cn'] = "可用(按需)";
|
||||
$text['label-status_available_on_demand']['ja-jp'] = "あり(オンデマンド)";
|
||||
$text['label-status_available_on_demand']['ko-kr'] = "사용 가능(주문형)";
|
||||
|
||||
$text['label-status_available']['en-us'] = "Available";
|
||||
$text['label-status_available']['en-gb'] = "Available";
|
||||
$text['label-status_available']['ar-eg'] = "";
|
||||
$text['label-status_available']['de-at'] = "Verfügbar"; //copied from de-de
|
||||
$text['label-status_available']['de-ch'] = "Verfügbar"; //copied from de-de
|
||||
$text['label-status_available']['ar-eg'] = "متاح";
|
||||
$text['label-status_available']['de-at'] = "Verfügbar";
|
||||
$text['label-status_available']['de-ch'] = "Verfügbar";
|
||||
$text['label-status_available']['de-de'] = "Verfügbar";
|
||||
$text['label-status_available']['es-cl'] = "Disponible";
|
||||
$text['label-status_available']['es-mx'] = "Disponible"; //copied from es-cl
|
||||
$text['label-status_available']['fr-ca'] = "Disponible"; //copied from fr-fr
|
||||
$text['label-status_available']['es-mx'] = "Disponible";
|
||||
$text['label-status_available']['fr-ca'] = "Disponible";
|
||||
$text['label-status_available']['fr-fr'] = "Disponible";
|
||||
$text['label-status_available']['he-il'] = "זמין";
|
||||
$text['label-status_available']['it-it'] = "Disponibile";
|
||||
$text['label-status_available']['nl-nl'] = "Beschikbaar";
|
||||
$text['label-status_available']['pl-pl'] = "Dostępny";
|
||||
$text['label-status_available']['pt-br'] = "DisponÃvel";
|
||||
$text['label-status_available']['pt-br'] = "Disponível";
|
||||
$text['label-status_available']['pt-pt'] = "Disponível";
|
||||
$text['label-status_available']['ro-ro'] = "";
|
||||
$text['label-status_available']['ro-ro'] = "Disponibil";
|
||||
$text['label-status_available']['ru-ru'] = "Доступен";
|
||||
$text['label-status_available']['sv-se'] = "Tillgänglig";
|
||||
$text['label-status_available']['uk-ua'] = "ДоÑтупний";
|
||||
$text['label-status_available']['uk-ua'] = "В наявності";
|
||||
$text['label-status_available']['zh-cn'] = "可用的";
|
||||
$text['label-status_available']['ja-jp'] = "利用可能";
|
||||
$text['label-status_available']['ko-kr'] = "사용 가능";
|
||||
|
||||
$text['label-refresh_pause']['en-us'] = "Pause Refresh";
|
||||
$text['label-refresh_pause']['en-gb'] = "Pause Refresh";
|
||||
$text['label-refresh_pause']['ar-eg'] = "";
|
||||
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren"; //copied from de-de
|
||||
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren"; //copied from de-de
|
||||
$text['label-refresh_pause']['ar-eg'] = "وقفة التحديث";
|
||||
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren";
|
||||
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren";
|
||||
$text['label-refresh_pause']['de-de'] = "Seite neu laden deaktivieren";
|
||||
$text['label-refresh_pause']['es-cl'] = "Actualizar Pausa";
|
||||
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa"; //copied from es-cl
|
||||
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser"; //copied from fr-fr
|
||||
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa";
|
||||
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser";
|
||||
$text['label-refresh_pause']['fr-fr'] = "Pause Actualiser";
|
||||
$text['label-refresh_pause']['he-il'] = "עצור רענון";
|
||||
$text['label-refresh_pause']['it-it'] = "Interrompi";
|
||||
@@ -185,20 +208,23 @@ $text['label-refresh_pause']['nl-nl'] = "Stop verversen";
|
||||
$text['label-refresh_pause']['pl-pl'] = "Pauzuj odświeżanie";
|
||||
$text['label-refresh_pause']['pt-br'] = "Pausar atualização";
|
||||
$text['label-refresh_pause']['pt-pt'] = "Pausa Atualizar";
|
||||
$text['label-refresh_pause']['ro-ro'] = "";
|
||||
$text['label-refresh_pause']['ro-ro'] = "Întrerupeți reîmprospătarea";
|
||||
$text['label-refresh_pause']['ru-ru'] = "Приостановить обновление";
|
||||
$text['label-refresh_pause']['sv-se'] = "Paus Uppdatera";
|
||||
$text['label-refresh_pause']['uk-ua'] = "Припинити оновленнÑ";
|
||||
$text['label-refresh_pause']['uk-ua'] = "Пауза Refresh";
|
||||
$text['label-refresh_pause']['zh-cn'] = "暂停刷新";
|
||||
$text['label-refresh_pause']['ja-jp'] = "リフレッシュを一時停止";
|
||||
$text['label-refresh_pause']['ko-kr'] = "새로고침 일시중지";
|
||||
|
||||
$text['label-refresh_enable']['en-us'] = "Enable Refresh";
|
||||
$text['label-refresh_enable']['en-gb'] = "Enable Refresh";
|
||||
$text['label-refresh_enable']['ar-eg'] = "";
|
||||
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren"; //copied from de-de
|
||||
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren"; //copied from de-de
|
||||
$text['label-refresh_enable']['ar-eg'] = "تمكين التحديث";
|
||||
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren";
|
||||
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren";
|
||||
$text['label-refresh_enable']['de-de'] = "Seite neu laden aktivieren";
|
||||
$text['label-refresh_enable']['es-cl'] = "Activar Actualizar";
|
||||
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar"; //copied from es-cl
|
||||
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser"; //copied from fr-fr
|
||||
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar";
|
||||
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser";
|
||||
$text['label-refresh_enable']['fr-fr'] = "Activer Actualiser";
|
||||
$text['label-refresh_enable']['he-il'] = "אפשר רענון";
|
||||
$text['label-refresh_enable']['it-it'] = "Abilita Aggiornamento";
|
||||
@@ -206,20 +232,23 @@ $text['label-refresh_enable']['nl-nl'] = "Start verversen";
|
||||
$text['label-refresh_enable']['pl-pl'] = "Włącz odświeżanie";
|
||||
$text['label-refresh_enable']['pt-br'] = "Habilitar atualização";
|
||||
$text['label-refresh_enable']['pt-pt'] = "Habilitar Atualização";
|
||||
$text['label-refresh_enable']['ro-ro'] = "";
|
||||
$text['label-refresh_enable']['ro-ro'] = "Activați Reîmprospătare";
|
||||
$text['label-refresh_enable']['ru-ru'] = "Включить обновление";
|
||||
$text['label-refresh_enable']['sv-se'] = "Aktivera Uppdatering";
|
||||
$text['label-refresh_enable']['uk-ua'] = "Включити оновленнÑ";
|
||||
$text['label-refresh_enable']['uk-ua'] = "Увімкнути Refresh";
|
||||
$text['label-refresh_enable']['zh-cn'] = "启用刷新";
|
||||
$text['label-refresh_enable']['ja-jp'] = "リフレッシュを有効にする";
|
||||
$text['label-refresh_enable']['ko-kr'] = "새로 고침 활성화";
|
||||
|
||||
$text['label-recording']['en-us'] = "Recording";
|
||||
$text['label-recording']['en-gb'] = "Recording";
|
||||
$text['label-recording']['ar-eg'] = "";
|
||||
$text['label-recording']['de-at'] = "Aufnahme"; //copied from de-de
|
||||
$text['label-recording']['de-ch'] = "Aufnahme"; //copied from de-de
|
||||
$text['label-recording']['ar-eg'] = "تسجيل";
|
||||
$text['label-recording']['de-at'] = "Aufnahme";
|
||||
$text['label-recording']['de-ch'] = "Aufnahme";
|
||||
$text['label-recording']['de-de'] = "Aufnahme";
|
||||
$text['label-recording']['es-cl'] = "Grabación de Llamadas";
|
||||
$text['label-recording']['es-mx'] = "Grabación de Llamadas"; //copied from es-cl
|
||||
$text['label-recording']['fr-ca'] = "Enregistrement de L'appel"; //copied from fr-fr
|
||||
$text['label-recording']['es-mx'] = "Grabación de Llamadas";
|
||||
$text['label-recording']['fr-ca'] = "Enregistrement de L'appel";
|
||||
$text['label-recording']['fr-fr'] = "Enregistrement de L'appel";
|
||||
$text['label-recording']['he-il'] = "מקליט";
|
||||
$text['label-recording']['it-it'] = "Registrazione";
|
||||
@@ -227,41 +256,47 @@ $text['label-recording']['nl-nl'] = "Opnemend";
|
||||
$text['label-recording']['pl-pl'] = "Nagrywanie";
|
||||
$text['label-recording']['pt-br'] = "Gravação de chamadas";
|
||||
$text['label-recording']['pt-pt'] = "Gravação de Chamadas";
|
||||
$text['label-recording']['ro-ro'] = "";
|
||||
$text['label-recording']['ro-ro'] = "Înregistrare";
|
||||
$text['label-recording']['ru-ru'] = "Запись";
|
||||
$text['label-recording']['sv-se'] = "Inspelning";
|
||||
$text['label-recording']['uk-ua'] = "ЗапиÑ";
|
||||
$text['label-recording']['uk-ua'] = "Запис";
|
||||
$text['label-recording']['zh-cn'] = "记录";
|
||||
$text['label-recording']['ja-jp'] = "録音";
|
||||
$text['label-recording']['ko-kr'] = "녹음";
|
||||
|
||||
$text['label-record']['en-us'] = "Record";
|
||||
$text['label-record']['en-gb'] = "Record";
|
||||
$text['label-record']['ar-eg'] = "";
|
||||
$text['label-record']['de-at'] = "Aufnehmen"; //copied from de-de
|
||||
$text['label-record']['de-ch'] = "Aufnehmen"; //copied from de-de
|
||||
$text['label-record']['ar-eg'] = "سِجِلّ";
|
||||
$text['label-record']['de-at'] = "Aufnehmen";
|
||||
$text['label-record']['de-ch'] = "Aufnehmen";
|
||||
$text['label-record']['de-de'] = "Aufnehmen";
|
||||
$text['label-record']['es-cl'] = "Registro";
|
||||
$text['label-record']['es-mx'] = "Registro"; //copied from es-cl
|
||||
$text['label-record']['fr-ca'] = "Enregistrer"; //copied from fr-fr
|
||||
$text['label-record']['es-mx'] = "Registro";
|
||||
$text['label-record']['fr-ca'] = "Enregistrer";
|
||||
$text['label-record']['fr-fr'] = "Enregistrer";
|
||||
$text['label-record']['he-il'] = "הקלטה";
|
||||
$text['label-record']['it-it'] = "Registrazione";
|
||||
$text['label-record']['nl-nl'] = "Opnemen";
|
||||
$text['label-record']['pl-pl'] = "Nagrywanie";
|
||||
$text['label-record']['pt-br'] = "Registro"; //copied from pt-pt
|
||||
$text['label-record']['pt-br'] = "Registro";
|
||||
$text['label-record']['pt-pt'] = "Registro";
|
||||
$text['label-record']['ro-ro'] = "";
|
||||
$text['label-record']['ro-ro'] = "Record";
|
||||
$text['label-record']['ru-ru'] = "Воспроизведение";
|
||||
$text['label-record']['sv-se'] = "Spela In";
|
||||
$text['label-record']['uk-ua'] = "ЗапиÑ";
|
||||
$text['label-record']['uk-ua'] = "Запис";
|
||||
$text['label-record']['zh-cn'] = "记录";
|
||||
$text['label-record']['ja-jp'] = "記録";
|
||||
$text['label-record']['ko-kr'] = "기록";
|
||||
|
||||
$text['label-other_extensions']['en-us'] = "Other Extensions";
|
||||
$text['label-other_extensions']['en-gb'] = "Other Extensions";
|
||||
$text['label-other_extensions']['ar-eg'] = "";
|
||||
$text['label-other_extensions']['de-at'] = "Andere Nebenstellen"; //copied from de-de
|
||||
$text['label-other_extensions']['de-ch'] = "Andere Nebenstellen"; //copied from de-de
|
||||
$text['label-other_extensions']['ar-eg'] = "ملحقات أخرى";
|
||||
$text['label-other_extensions']['de-at'] = "Andere Nebenstellen";
|
||||
$text['label-other_extensions']['de-ch'] = "Andere Nebenstellen";
|
||||
$text['label-other_extensions']['de-de'] = "Andere Nebenstellen";
|
||||
$text['label-other_extensions']['es-cl'] = "Otras Extensiones";
|
||||
$text['label-other_extensions']['es-mx'] = "Otras Extensiones"; //copied from es-cl
|
||||
$text['label-other_extensions']['fr-ca'] = "Autres Extensions"; //copied from fr-fr
|
||||
$text['label-other_extensions']['es-mx'] = "Otras Extensiones";
|
||||
$text['label-other_extensions']['fr-ca'] = "Autres Extensions";
|
||||
$text['label-other_extensions']['fr-fr'] = "Autres Extensions";
|
||||
$text['label-other_extensions']['he-il'] = "שלוחות אחרות";
|
||||
$text['label-other_extensions']['it-it'] = "Altri Interni";
|
||||
@@ -269,20 +304,23 @@ $text['label-other_extensions']['nl-nl'] = "Andere toestellen";
|
||||
$text['label-other_extensions']['pl-pl'] = "Inne numery wewnętrzne";
|
||||
$text['label-other_extensions']['pt-br'] = "Outras extensões";
|
||||
$text['label-other_extensions']['pt-pt'] = "Outros Extensions";
|
||||
$text['label-other_extensions']['ro-ro'] = "";
|
||||
$text['label-other_extensions']['ro-ro'] = "Alte extensii";
|
||||
$text['label-other_extensions']['ru-ru'] = "Другие внутренние номера";
|
||||
$text['label-other_extensions']['sv-se'] = "Annan Anknytning";
|
||||
$text['label-other_extensions']['uk-ua'] = "Інші розширеннÑ";
|
||||
$text['label-other_extensions']['uk-ua'] = "Інші розширення";
|
||||
$text['label-other_extensions']['zh-cn'] = "其他扩展";
|
||||
$text['label-other_extensions']['ja-jp'] = "その他の拡張子";
|
||||
$text['label-other_extensions']['ko-kr'] = "기타 확장";
|
||||
|
||||
$text['label-no_extensions_found']['en-us'] = "No extensions found.";
|
||||
$text['label-no_extensions_found']['en-gb'] = "No extensions found.";
|
||||
$text['label-no_extensions_found']['ar-eg'] = "";
|
||||
$text['label-no_extensions_found']['de-at'] = "Keine Nebenstellen gefunden."; //copied from de-de
|
||||
$text['label-no_extensions_found']['de-ch'] = "Keine Nebenstellen gefunden."; //copied from de-de
|
||||
$text['label-no_extensions_found']['ar-eg'] = "لم يتم العثور على ملحقات.";
|
||||
$text['label-no_extensions_found']['de-at'] = "Keine Nebenstellen gefunden.";
|
||||
$text['label-no_extensions_found']['de-ch'] = "Keine Nebenstellen gefunden.";
|
||||
$text['label-no_extensions_found']['de-de'] = "Keine Nebenstellen gefunden.";
|
||||
$text['label-no_extensions_found']['es-cl'] = "No hay extensiones encontrados.";
|
||||
$text['label-no_extensions_found']['es-mx'] = "No hay extensiones encontrados."; //copied from es-cl
|
||||
$text['label-no_extensions_found']['fr-ca'] = "Aucun extensions trouvés."; //copied from fr-fr
|
||||
$text['label-no_extensions_found']['es-mx'] = "No hay extensiones encontrados.";
|
||||
$text['label-no_extensions_found']['fr-ca'] = "Aucun extensions trouvés.";
|
||||
$text['label-no_extensions_found']['fr-fr'] = "Aucun extensions trouvés.";
|
||||
$text['label-no_extensions_found']['he-il'] = "לא נמצאו שלוחות";
|
||||
$text['label-no_extensions_found']['it-it'] = "Nessun interno trovato.";
|
||||
@@ -290,20 +328,23 @@ $text['label-no_extensions_found']['nl-nl'] = "Geen toestellen gevonden.";
|
||||
$text['label-no_extensions_found']['pl-pl'] = "Nie znaleziono numerów wewnętrznych";
|
||||
$text['label-no_extensions_found']['pt-br'] = "Não foi encontrada nenhuma extensão";
|
||||
$text['label-no_extensions_found']['pt-pt'] = "Sem extensões encontrado.";
|
||||
$text['label-no_extensions_found']['ro-ro'] = "";
|
||||
$text['label-no_extensions_found']['ro-ro'] = "Nu s-au găsit extensii.";
|
||||
$text['label-no_extensions_found']['ru-ru'] = "Внутренних номеров не найдено.";
|
||||
$text['label-no_extensions_found']['sv-se'] = "Ingen anknytning funnen.";
|
||||
$text['label-no_extensions_found']['uk-ua'] = "Ðе знайдено розширень";
|
||||
$text['label-no_extensions_found']['uk-ua'] = "Не знайдено розширення.";
|
||||
$text['label-no_extensions_found']['zh-cn'] = "未找到扩展。";
|
||||
$text['label-no_extensions_found']['ja-jp'] = "拡張子が見つかりません。";
|
||||
$text['label-no_extensions_found']['ko-kr'] = "확장 프로그램이 없습니다.";
|
||||
|
||||
$text['label-hangup']['en-us'] = "Hangup";
|
||||
$text['label-hangup']['en-gb'] = "Hangup";
|
||||
$text['label-hangup']['ar-eg'] = "";
|
||||
$text['label-hangup']['de-at'] = "Abwürgen"; //copied from de-de
|
||||
$text['label-hangup']['de-ch'] = "Abwürgen"; //copied from de-de
|
||||
$text['label-hangup']['ar-eg'] = "تشبث";
|
||||
$text['label-hangup']['de-at'] = "Abwürgen";
|
||||
$text['label-hangup']['de-ch'] = "Abwürgen";
|
||||
$text['label-hangup']['de-de'] = "Abwürgen";
|
||||
$text['label-hangup']['es-cl'] = "Finalizar Llamada";
|
||||
$text['label-hangup']['es-mx'] = "Finalizar Llamada"; //copied from es-cl
|
||||
$text['label-hangup']['fr-ca'] = "Tuer Appel"; //copied from fr-fr
|
||||
$text['label-hangup']['es-mx'] = "Finalizar Llamada";
|
||||
$text['label-hangup']['fr-ca'] = "Tuer Appel";
|
||||
$text['label-hangup']['fr-fr'] = "Tuer Appel";
|
||||
$text['label-hangup']['he-il'] = "הפסק";
|
||||
$text['label-hangup']['it-it'] = "Abbatti";
|
||||
@@ -311,62 +352,71 @@ $text['label-hangup']['nl-nl'] = "Ophangen";
|
||||
$text['label-hangup']['pl-pl'] = "Rozłączenie się";
|
||||
$text['label-hangup']['pt-br'] = "Chamada final";
|
||||
$text['label-hangup']['pt-pt'] = "Chamada Final";
|
||||
$text['label-hangup']['ro-ro'] = "";
|
||||
$text['label-hangup']['ro-ro'] = "Rezistă";
|
||||
$text['label-hangup']['ru-ru'] = "Убить";
|
||||
$text['label-hangup']['sv-se'] = "Lägg På";
|
||||
$text['label-hangup']['uk-ua'] = "вбити";
|
||||
$text['label-hangup']['zh-cn'] = "不挂断";
|
||||
$text['label-hangup']['ja-jp'] = "ちょっとまって";
|
||||
$text['label-hangup']['ko-kr'] = "잠깐만";
|
||||
|
||||
$text['label-eavesdrop']['en-us'] = "Eavesdrop";
|
||||
$text['label-eavesdrop']['en-gb'] = "Eavesdrop";
|
||||
$text['label-eavesdrop']['ar-eg'] = "";
|
||||
$text['label-eavesdrop']['de-at'] = "Mithören"; //copied from de-de
|
||||
$text['label-eavesdrop']['de-ch'] = "Mithören"; //copied from de-de
|
||||
$text['label-eavesdrop']['ar-eg'] = "التنصت";
|
||||
$text['label-eavesdrop']['de-at'] = "Mithören";
|
||||
$text['label-eavesdrop']['de-ch'] = "Mithören";
|
||||
$text['label-eavesdrop']['de-de'] = "Mithören";
|
||||
$text['label-eavesdrop']['es-cl'] = "Escuchar";
|
||||
$text['label-eavesdrop']['es-mx'] = "Escuchar"; //copied from es-cl
|
||||
$text['label-eavesdrop']['fr-ca'] = "Espionner"; //copied from fr-fr
|
||||
$text['label-eavesdrop']['es-mx'] = "Escuchar";
|
||||
$text['label-eavesdrop']['fr-ca'] = "Espionner";
|
||||
$text['label-eavesdrop']['fr-fr'] = "Espionner";
|
||||
$text['label-eavesdrop']['he-il'] = "";
|
||||
$text['label-eavesdrop']['he-il'] = "לְצוֹתֵת";
|
||||
$text['label-eavesdrop']['it-it'] = "Ascolta";
|
||||
$text['label-eavesdrop']['nl-nl'] = "Afluisteren";
|
||||
$text['label-eavesdrop']['pl-pl'] = "Podsłuchiwanie";
|
||||
$text['label-eavesdrop']['pt-br'] = "Investigar";
|
||||
$text['label-eavesdrop']['pt-pt'] = "Bisbilhotar";
|
||||
$text['label-eavesdrop']['ro-ro'] = "";
|
||||
$text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
|
||||
$text['label-eavesdrop']['ru-ru'] = "Подслушивать";
|
||||
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
|
||||
$text['label-eavesdrop']['uk-ua'] = "підслуховувати";
|
||||
$text['label-eavesdrop']['zh-cn'] = "窃听";
|
||||
$text['label-eavesdrop']['ja-jp'] = "盗聴";
|
||||
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
|
||||
|
||||
$text['label-call_group']['en-us'] = "Call Group";
|
||||
$text['label-call_group']['en-gb'] = "Call Group";
|
||||
$text['label-call_group']['ar-eg'] = "";
|
||||
$text['label-call_group']['de-at'] = "Rufgruppe"; //copied from de-de
|
||||
$text['label-call_group']['de-ch'] = "Rufgruppe"; //copied from de-de
|
||||
$text['label-call_group']['ar-eg'] = "مجموعة الاتصال";
|
||||
$text['label-call_group']['de-at'] = "Rufgruppe";
|
||||
$text['label-call_group']['de-ch'] = "Rufgruppe";
|
||||
$text['label-call_group']['de-de'] = "Rufgruppe";
|
||||
$text['label-call_group']['es-cl'] = "Llamar a Grupo";
|
||||
$text['label-call_group']['es-mx'] = "Llamar a Grupo"; //copied from es-cl
|
||||
$text['label-call_group']['fr-ca'] = "Groupe d'appel"; //copied from fr-fr
|
||||
$text['label-call_group']['es-mx'] = "Llamar a Grupo";
|
||||
$text['label-call_group']['fr-ca'] = "Groupe d'appel";
|
||||
$text['label-call_group']['fr-fr'] = "Groupe d'appel";
|
||||
$text['label-call_group']['he-il'] = "קבוצת חיוג";
|
||||
$text['label-call_group']['it-it'] = "Gruppo di Chiamata";
|
||||
$text['label-call_group']['nl-nl'] = "Oproep Groep";
|
||||
$text['label-call_group']['pl-pl'] = "Grupa odbiorców rozmowy";
|
||||
$text['label-call_group']['pt-br'] = "Grupo"; //copied from pt-pt
|
||||
$text['label-call_group']['pt-br'] = "Grupo";
|
||||
$text['label-call_group']['pt-pt'] = "Grupo";
|
||||
$text['label-call_group']['ro-ro'] = "";
|
||||
$text['label-call_group']['ro-ro'] = "Grup de apeluri";
|
||||
$text['label-call_group']['ru-ru'] = "Группы вызова";
|
||||
$text['label-call_group']['sv-se'] = "Ring Grupp";
|
||||
$text['label-call_group']['uk-ua'] = "груповий виклик";
|
||||
$text['label-call_group']['zh-cn'] = "呼叫组";
|
||||
$text['label-call_group']['ja-jp'] = "通話グループ";
|
||||
$text['label-call_group']['ko-kr'] = "통화 그룹";
|
||||
|
||||
$text['label-call_direction']['en-us'] = "Call Direction";
|
||||
$text['label-call_direction']['en-gb'] = "Call Direction";
|
||||
$text['label-call_direction']['ar-eg'] = "";
|
||||
$text['label-call_direction']['de-at'] = "Anruf Richtung"; //copied from de-de
|
||||
$text['label-call_direction']['de-ch'] = "Anruf Richtung"; //copied from de-de
|
||||
$text['label-call_direction']['ar-eg'] = "اتجاه الاتصال";
|
||||
$text['label-call_direction']['de-at'] = "Anruf Richtung";
|
||||
$text['label-call_direction']['de-ch'] = "Anruf Richtung";
|
||||
$text['label-call_direction']['de-de'] = "Anruf Richtung";
|
||||
$text['label-call_direction']['es-cl'] = "Dirección de la llamada";
|
||||
$text['label-call_direction']['es-mx'] = "Dirección de la llamada"; //copied from es-cl
|
||||
$text['label-call_direction']['fr-ca'] = "Sens de l'appel"; //copied from fr-fr
|
||||
$text['label-call_direction']['es-mx'] = "Dirección de la llamada";
|
||||
$text['label-call_direction']['fr-ca'] = "Sens de l'appel";
|
||||
$text['label-call_direction']['fr-fr'] = "Sens de l'appel";
|
||||
$text['label-call_direction']['he-il'] = "כיוון שיחה";
|
||||
$text['label-call_direction']['it-it'] = "Direzione Chiamata";
|
||||
@@ -374,51 +424,84 @@ $text['label-call_direction']['nl-nl'] = "Oproep richting";
|
||||
$text['label-call_direction']['pl-pl'] = "Kierunek rozmowy";
|
||||
$text['label-call_direction']['pt-br'] = "Direção da chamada";
|
||||
$text['label-call_direction']['pt-pt'] = "Direção da chamada";
|
||||
$text['label-call_direction']['ro-ro'] = "";
|
||||
$text['label-call_direction']['ro-ro'] = "Direcția de apel";
|
||||
$text['label-call_direction']['ru-ru'] = "Направление вызова";
|
||||
$text['label-call_direction']['sv-se'] = "Samtals Riktning";
|
||||
$text['label-call_direction']['uk-ua'] = "напрямок виклику";
|
||||
$text['label-call_direction']['zh-cn'] = "呼叫方向";
|
||||
$text['label-call_direction']['ja-jp'] = "通話方向";
|
||||
$text['label-call_direction']['ko-kr'] = "통화 방향";
|
||||
|
||||
$text['label-filter']['en-us'] = "Filter...";
|
||||
$text['label-filter']['en-gb'] = "Filter...";
|
||||
$text['label-filter']['ar-eg'] = "فيلم";
|
||||
$text['label-filter']['de-at'] = "Filter...";
|
||||
$text['label-filter']['de-ch'] = "Filter...";
|
||||
$text['label-filter']['de-de'] = "Filter...";
|
||||
$text['label-filter']['es-cl'] = "Filtro...";
|
||||
$text['label-filter']['es-mx'] = "Filtro...";
|
||||
$text['label-filter']['fr-ca'] = "Filtre...";
|
||||
$text['label-filter']['fr-fr'] = "Filtre...";
|
||||
$text['label-filter']['he-il'] = "Filter...";
|
||||
$text['label-filter']['it-it'] = "Filtro...";
|
||||
$text['label-filter']['nl-nl'] = "Filter...";
|
||||
$text['label-filter']['pl-pl'] = "Filter...";
|
||||
$text['label-filter']['pt-br'] = "Filtro...";
|
||||
$text['label-filter']['pt-pt'] = "Filtro...";
|
||||
$text['label-filter']['ro-ro'] = "Filtru...";
|
||||
$text['label-filter']['ru-ru'] = "Фильтр";
|
||||
$text['label-filter']['sv-se'] = "Filter...";
|
||||
$text['label-filter']['uk-ua'] = "Фільтри";
|
||||
$text['label-filter']['zh-cn'] = "筛选";
|
||||
$text['label-filter']['ja-jp'] = "フィルター";
|
||||
$text['label-filter']['ko-kr'] = "필터";
|
||||
|
||||
$text['description-eavesdrop_destination']['en-us'] = "Select the Eavesdrop Destination";
|
||||
$text['description-eavesdrop_destination']['en-gb'] = "Select the Eavesdrop Destination";
|
||||
$text['description-eavesdrop_destination']['ar-eg'] = "";
|
||||
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören"; //copied from de-de
|
||||
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören"; //copied from de-de
|
||||
$text['description-eavesdrop_destination']['ar-eg'] = "حدد وجهة Eavesdrop";
|
||||
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören";
|
||||
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören";
|
||||
$text['description-eavesdrop_destination']['de-de'] = "Wählen Sie ein Ziel zum Mithören";
|
||||
$text['description-eavesdrop_destination']['es-cl'] = "Seleccione el Eavesdrop Destino";
|
||||
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino"; //copied from es-cl
|
||||
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage"; //copied from fr-fr
|
||||
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino";
|
||||
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage";
|
||||
$text['description-eavesdrop_destination']['fr-fr'] = "Sélectionnez la destination d'espionnage";
|
||||
$text['description-eavesdrop_destination']['he-il'] = "";
|
||||
$text['description-eavesdrop_destination']['he-il'] = "בחר ביעד האזנת סתר";
|
||||
$text['description-eavesdrop_destination']['it-it'] = "Seleziona la Destinazione d'Ascolto";
|
||||
$text['description-eavesdrop_destination']['nl-nl'] = "Kies afluister bestemming";
|
||||
$text['description-eavesdrop_destination']['pl-pl'] = "Wybierz destynację podsłuchiwanych rozmów";
|
||||
$text['description-eavesdrop_destination']['pt-br'] = "Selecione o eavesdrop de destino";
|
||||
$text['description-eavesdrop_destination']['pt-pt'] = "Selecione o Eavesdrop Destino";
|
||||
$text['description-eavesdrop_destination']['ro-ro'] = "";
|
||||
$text['description-eavesdrop_destination']['ro-ro'] = "Selectați Destinația Eavesdrop";
|
||||
$text['description-eavesdrop_destination']['ru-ru'] = "Выберите подслушивание пункта назначения";
|
||||
$text['description-eavesdrop_destination']['sv-se'] = "Välj Medlyssning Destination";
|
||||
$text['description-eavesdrop_destination']['uk-ua'] = "Виберіть пункт призначення підслуховувати";
|
||||
$text['description-eavesdrop_destination']['zh-cn'] = "选择窃听目的地";
|
||||
$text['description-eavesdrop_destination']['ja-jp'] = "盗聴先を選択";
|
||||
$text['description-eavesdrop_destination']['ko-kr'] = "도청 대상 선택";
|
||||
|
||||
$text['button-all']['en-us'] = "All";
|
||||
$text['button-all']['en-gb'] = "All";
|
||||
$text['button-all']['ar-eg'] = "";
|
||||
$text['button-all']['de-at'] = "Alle"; //copied from de-de
|
||||
$text['button-all']['de-ch'] = "Alle"; //copied from de-de
|
||||
$text['button-all']['ar-eg'] = "الجميع";
|
||||
$text['button-all']['de-at'] = "Alle";
|
||||
$text['button-all']['de-ch'] = "Alle";
|
||||
$text['button-all']['de-de'] = "Alle";
|
||||
$text['button-all']['es-cl'] = "Todos";
|
||||
$text['button-all']['es-mx'] = "Todos"; //copied from es-cl
|
||||
$text['button-all']['fr-ca'] = "Tous"; //copied from fr-fr
|
||||
$text['button-all']['es-mx'] = "Todos";
|
||||
$text['button-all']['fr-ca'] = "Tous";
|
||||
$text['button-all']['fr-fr'] = "Tous";
|
||||
$text['button-all']['he-il'] = "הכל";
|
||||
$text['button-all']['it-it'] = "Tutti";
|
||||
$text['button-all']['nl-nl'] = "Alle";
|
||||
$text['button-all']['pl-pl'] = "Wszyscy";
|
||||
$text['button-all']['pt-br'] = "Tudo"; //copied from pt-pt
|
||||
$text['button-all']['pt-br'] = "Tudo";
|
||||
$text['button-all']['pt-pt'] = "Tudo";
|
||||
$text['button-all']['ro-ro'] = "";
|
||||
$text['button-all']['ro-ro'] = "Toate";
|
||||
$text['button-all']['ru-ru'] = "Все";
|
||||
$text['button-all']['sv-se'] = "Alla";
|
||||
$text['button-all']['uk-ua'] = "Ð’ÑÑ–";
|
||||
$text['button-all']['uk-ua'] = "Всі";
|
||||
$text['button-all']['zh-cn'] = "全部";
|
||||
$text['button-all']['ja-jp'] = "全て";
|
||||
$text['button-all']['ko-kr'] = "모두";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -3,28 +3,35 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Operator Panel";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Operator Panel";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "لوحة المشغل";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Bedienfeld";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Bedienfeld";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Bedienfeld";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Panel del operador";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Panel del operador";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Panneau de commande";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Panneau Operateur";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "לוח מפעיל";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Pannello Operatore";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Bedienings paneel";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Panel operatora";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Painel do operador";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Painel operador";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Panoul operator";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Панель оператора";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Telefonist Panel";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Панель оператора";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "操作面板";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "オペレータ パネル";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "운영자 패널";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "dd3d173a-5d51-4231-ab22-b18c5b712bb2";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/basic_operator_panel/index.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -182,8 +181,8 @@
|
||||
}
|
||||
|
||||
//output suggestions, if any
|
||||
if (sizeof($suggestions) > 0) {
|
||||
$resp .= "[\n";
|
||||
if (!empty($suggestions) && is_array($suggestions) && @sizeof($suggestions) > 0) {
|
||||
$resp = "[\n";
|
||||
$resp .= implode(",\n", $suggestions)."\n";
|
||||
$resp .= "]";
|
||||
|
||||
@@ -192,4 +191,4 @@
|
||||
if (isset($_GET['debug'])) { echo "</pre>"; }
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -2,7 +2,7 @@
|
||||
/* $Id$ */
|
||||
/*
|
||||
v_exec.php
|
||||
Copyright (C) 2008-2019 Mark J Crane
|
||||
Copyright (C) 2008-2023 Mark J Crane
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -27,9 +27,8 @@
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -52,16 +51,16 @@
|
||||
//process the requests
|
||||
if (count($_GET) > 0) {
|
||||
//set the variables
|
||||
$switch_cmd = trim($_GET["cmd"]);
|
||||
$action = trim($_GET["action"]);
|
||||
$data = trim($_GET["data"]);
|
||||
$direction = trim($_GET["direction"]);
|
||||
$switch_cmd = trim($_GET["cmd"] ?? '');
|
||||
$action = trim($_GET["action"] ?? '');
|
||||
$data = trim($_GET["data"] ?? '');
|
||||
$direction = trim($_GET["direction"] ?? '');
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//allow specific commands
|
||||
if (strlen($switch_cmd) > 0) {
|
||||
if (!empty($switch_cmd)) {
|
||||
$api_cmd = '';
|
||||
$uuid_pattern = '/[^-A-Fa-f0-9]/';
|
||||
$num_pattern = '/[^-A-Za-z0-9()*#]/';
|
||||
@@ -70,14 +69,17 @@ if (count($_GET) > 0) {
|
||||
$source = preg_replace($num_pattern,'',$_GET['source']);
|
||||
$destination = preg_replace($num_pattern,'',$_GET['destination']);
|
||||
$api_cmd = 'bgapi originate {sip_auto_answer=true,origination_caller_id_number=' . $source . ',sip_h_Call-Info=_undef_}user/' . $source . '@' . $_SESSION['domain_name'] . ' ' . $destination . ' XML ' . trim($_SESSION['user_context']);
|
||||
} elseif ($switch_cmd == 'uuid_record') {
|
||||
}
|
||||
else if ($switch_cmd == 'uuid_record') {
|
||||
$uuid = preg_replace($uuid_pattern,'',$_GET['uuid']);
|
||||
$api_cmd = 'uuid_record ' . $uuid . ' start ' . $_SESSION['switch']['recordings']['dir'] . '/' . $_SESSION['domain_name'] . '/archive/' . date('Y/M/d') . '/' . $uuid . '.wav';
|
||||
} elseif ($switch_cmd == 'uuid_transfer') {
|
||||
}
|
||||
else if ($switch_cmd == 'uuid_transfer') {
|
||||
$uuid = preg_replace($uuid_pattern,'',$_GET['uuid']);
|
||||
$destination = preg_replace($num_pattern,'',$_GET['destination']);
|
||||
$api_cmd = 'uuid_transfer ' . $uuid . ' ' . $destination . ' XML ' . trim($_SESSION['user_context']);
|
||||
} elseif ($switch_cmd == 'uuid_eavesdrop') {
|
||||
}
|
||||
else if ($switch_cmd == 'uuid_eavesdrop') {
|
||||
$chan_uuid = preg_replace($uuid_pattern,'',$_GET['chan_uuid']);
|
||||
$ext = preg_replace($num_pattern,'',$_GET['ext']);
|
||||
$destination = preg_replace($num_pattern,'',$_GET['destination']);
|
||||
@@ -86,10 +88,12 @@ if (count($_GET) > 0) {
|
||||
$text = $language->get();
|
||||
|
||||
$api_cmd = 'bgapi originate {origination_caller_id_name=' . $text['label-eavesdrop'] . ',origination_caller_id_number=' . $ext . '}user/' . $destination . '@' . $_SESSION['domain_name'] . ' &eavesdrop(' . $chan_uuid . ')';
|
||||
} elseif ($switch_cmd == 'uuid_kill') {
|
||||
}
|
||||
else if ($switch_cmd == 'uuid_kill') {
|
||||
$call_id = preg_replace($uuid_pattern,'',$_GET['call_id']);
|
||||
$api_cmd = 'uuid_kill ' . $call_id;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
echo 'access denied';
|
||||
return;
|
||||
}
|
||||
@@ -121,4 +125,4 @@ if (count($_GET) > 0) {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -112,7 +111,7 @@
|
||||
//update do not disturb
|
||||
if ($user_status == "Do Not Disturb") {
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
foreach ($_SESSION['user']['extension'] as $row) {
|
||||
//build the array
|
||||
$array['extensions'][$x]['extension_uuid'] = $row['extension_uuid'];
|
||||
$array['extensions'][$x]['dial_string'] = '!USER_BUSY';
|
||||
@@ -120,8 +119,10 @@
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
if(strlen($number_alias) > 0){
|
||||
if (!empty($row['extension'])) {
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
if (!empty($number_alias)) {
|
||||
$cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
|
||||
@@ -139,8 +140,10 @@
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
if(strlen($number_alias) > 0){
|
||||
if (!empty($row['extension'])) {
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
if (!empty($number_alias)) {
|
||||
$cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
|
||||
@@ -165,8 +168,10 @@
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$extension."@".$this->domain_name);
|
||||
if(strlen($number_alias) > 0){
|
||||
if (!empty($extension)) {
|
||||
$cache->delete("directory:".$extension."@".$this->domain_name);
|
||||
}
|
||||
if (!empty($number_alias)) {
|
||||
$cache->delete("directory:".$number_alias."@".$this->domain_name);
|
||||
}
|
||||
}
|
||||
@@ -267,8 +272,7 @@ unset($refresh_default);
|
||||
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
|
||||
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
|
||||
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
|
||||
url += '&extension_filter=' + ((document.getElementById('extension_filter')) ? document.getElementById('extension_filter').value : '');
|
||||
url += '&name_filter=' + ((document.getElementById('name_filter')) ? document.getElementById('name_filter').value : '');
|
||||
url += '&filter=' + ((document.getElementById('search')) ? document.getElementById('search').value : '');
|
||||
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
|
||||
if (document.getElementById('sort1'))
|
||||
if (document.getElementById('sort1').value == '1') url += '&sort';
|
||||
@@ -356,8 +360,7 @@ unset($refresh_default);
|
||||
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
|
||||
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
|
||||
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
|
||||
url += '&extension_filter=' + ((document.getElementById('extension_filter')) ? document.getElementById('extension_filter').value : '');
|
||||
url += '&name_filter=' + ((document.getElementById('name_filter')) ? document.getElementById('name_filter').value : '');
|
||||
url += '&filter=' + ((document.getElementById('search')) ? document.getElementById('search').value : '');
|
||||
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
|
||||
if (document.getElementById('sort1'))
|
||||
if (document.getElementById('sort1').value == '1') url += '&sort';
|
||||
|
||||
@@ -44,16 +44,6 @@ if (!class_exists('basic_operator_panel')) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the call activity
|
||||
*/
|
||||
@@ -67,7 +57,6 @@ if (!class_exists('basic_operator_panel')) {
|
||||
$sql .= "e.extension, ";
|
||||
$sql .= "e.number_alias, ";
|
||||
$sql .= "e.effective_caller_id_name, ";
|
||||
$sql .= "lower(e.effective_caller_id_name) as filter_name, ";
|
||||
$sql .= "e.effective_caller_id_number, ";
|
||||
$sql .= "e.call_group, ";
|
||||
$sql .= "e.description, ";
|
||||
@@ -108,7 +97,7 @@ if (!class_exists('basic_operator_panel')) {
|
||||
if (isset($extensions)) {
|
||||
foreach($extensions as &$row) {
|
||||
$user = $row['extension'];
|
||||
if (strlen($row['number_alias']) >0 ) {
|
||||
if (!empty($row['number_alias'])) {
|
||||
$user = $row['number_alias'];
|
||||
}
|
||||
|
||||
@@ -156,7 +145,7 @@ if (!class_exists('basic_operator_panel')) {
|
||||
$presence_id = $field['presence_id'];
|
||||
$presence = explode("@", $presence_id);
|
||||
$presence_id = $presence[0];
|
||||
$presence_domain = $presence[1];
|
||||
$presence_domain = $presence[1] ?? '';
|
||||
if ($user == $presence_id) {
|
||||
if ($presence_domain == $_SESSION['domain_name']) {
|
||||
$found = true;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -93,5 +93,28 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the description.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
|
||||
+254
-243
@@ -1,257 +1,268 @@
|
||||
<?php
|
||||
|
||||
//Bridges
|
||||
$text['title-bridges']['en-us'] = 'Bridges';
|
||||
$text['title-bridges']['en-gb'] = 'Bridges';
|
||||
$text['title-bridges']['ar-eg'] = '';
|
||||
$text['title-bridges']['de-at'] = '';
|
||||
$text['title-bridges']['de-ch'] = '';
|
||||
$text['title-bridges']['de-de'] = '';
|
||||
$text['title-bridges']['es-cl'] = '';
|
||||
$text['title-bridges']['es-mx'] = '';
|
||||
$text['title-bridges']['fr-ca'] = 'Ponts';
|
||||
$text['title-bridges']['fr-fr'] = 'Ponts';
|
||||
$text['title-bridges']['he-il'] = '';
|
||||
$text['title-bridges']['it-it'] = '';
|
||||
$text['title-bridges']['nl-nl'] = 'Bruggen';
|
||||
$text['title-bridges']['pl-pl'] = 'Mostki';
|
||||
$text['title-bridges']['pt-br'] = '';
|
||||
$text['title-bridges']['pt-pt'] = '';
|
||||
$text['title-bridges']['ro-ro'] = '';
|
||||
$text['title-bridges']['ru-ru'] = '';
|
||||
$text['title-bridges']['sv-se'] = '';
|
||||
$text['title-bridges']['uk-ua'] = '';
|
||||
$text['title-bridges']['en-us'] = "Bridges";
|
||||
$text['title-bridges']['en-gb'] = "Bridges";
|
||||
$text['title-bridges']['ar-eg'] = "الجسور";
|
||||
$text['title-bridges']['de-at'] = "Brücken";
|
||||
$text['title-bridges']['de-ch'] = "Brücken";
|
||||
$text['title-bridges']['de-de'] = "Brücken";
|
||||
$text['title-bridges']['es-cl'] = "Puentes";
|
||||
$text['title-bridges']['es-mx'] = "Puentes";
|
||||
$text['title-bridges']['fr-ca'] = "Ponts";
|
||||
$text['title-bridges']['fr-fr'] = "Ponts";
|
||||
$text['title-bridges']['he-il'] = "גשרים";
|
||||
$text['title-bridges']['it-it'] = "Ponti";
|
||||
$text['title-bridges']['nl-nl'] = "Bruggen";
|
||||
$text['title-bridges']['pl-pl'] = "Mostki";
|
||||
$text['title-bridges']['pt-br'] = "pontes";
|
||||
$text['title-bridges']['pt-pt'] = "pontes";
|
||||
$text['title-bridges']['ro-ro'] = "Poduri";
|
||||
$text['title-bridges']['ru-ru'] = "Мосты";
|
||||
$text['title-bridges']['sv-se'] = "Broar";
|
||||
$text['title-bridges']['uk-ua'] = "Мости";
|
||||
$text['title-bridges']['zh-cn'] = "桥梁";
|
||||
$text['title-bridges']['ja-jp'] = "橋";
|
||||
$text['title-bridges']['ko-kr'] = "교량";
|
||||
|
||||
$text['title-bridge']['en-us'] = 'Bridge';
|
||||
$text['title-bridge']['en-gb'] = 'Bridge';
|
||||
$text['title-bridge']['ar-eg'] = '';
|
||||
$text['title-bridge']['de-at'] = '';
|
||||
$text['title-bridge']['de-ch'] = '';
|
||||
$text['title-bridge']['de-de'] = '';
|
||||
$text['title-bridge']['es-cl'] = '';
|
||||
$text['title-bridge']['es-mx'] = '';
|
||||
$text['title-bridge']['fr-ca'] = 'Pont';
|
||||
$text['title-bridge']['fr-fr'] = 'Pont';
|
||||
$text['title-bridge']['he-il'] = '';
|
||||
$text['title-bridge']['it-it'] = '';
|
||||
$text['title-bridge']['nl-nl'] = 'Brug';
|
||||
$text['title-bridge']['pl-pl'] = 'Mostek';
|
||||
$text['title-bridge']['pt-br'] = '';
|
||||
$text['title-bridge']['pt-pt'] = '';
|
||||
$text['title-bridge']['ro-ro'] = '';
|
||||
$text['title-bridge']['ru-ru'] = '';
|
||||
$text['title-bridge']['sv-se'] = '';
|
||||
$text['title-bridge']['uk-ua'] = '';
|
||||
$text['title-bridge']['en-us'] = "Bridge";
|
||||
$text['title-bridge']['en-gb'] = "Bridge";
|
||||
$text['title-bridge']['ar-eg'] = "كوبري";
|
||||
$text['title-bridge']['de-at'] = "Brücke";
|
||||
$text['title-bridge']['de-ch'] = "Brücke";
|
||||
$text['title-bridge']['de-de'] = "Brücke";
|
||||
$text['title-bridge']['es-cl'] = "Puente";
|
||||
$text['title-bridge']['es-mx'] = "Puente";
|
||||
$text['title-bridge']['fr-ca'] = "Pont";
|
||||
$text['title-bridge']['fr-fr'] = "Pont";
|
||||
$text['title-bridge']['he-il'] = "לְגַשֵׁר";
|
||||
$text['title-bridge']['it-it'] = "Ponte";
|
||||
$text['title-bridge']['nl-nl'] = "Brug";
|
||||
$text['title-bridge']['pl-pl'] = "Mostek";
|
||||
$text['title-bridge']['pt-br'] = "Ponte";
|
||||
$text['title-bridge']['pt-pt'] = "Ponte";
|
||||
$text['title-bridge']['ro-ro'] = "Pod";
|
||||
$text['title-bridge']['ru-ru'] = "Мост";
|
||||
$text['title-bridge']['sv-se'] = "Bro";
|
||||
$text['title-bridge']['uk-ua'] = "Міст";
|
||||
$text['title-bridge']['zh-cn'] = "桥";
|
||||
$text['title-bridge']['ja-jp'] = "橋";
|
||||
$text['title-bridge']['ko-kr'] = "다리";
|
||||
|
||||
$text['title_description-bridge']['en-us'] = 'Add bridge statements to destination select list.';
|
||||
$text['title_description-bridge']['en-gb'] = 'Add bridge statements to destination select list.';
|
||||
$text['title_description-bridge']['ar-eg'] = '';
|
||||
$text['title_description-bridge']['de-at'] = '';
|
||||
$text['title_description-bridge']['de-ch'] = '';
|
||||
$text['title_description-bridge']['de-de'] = '';
|
||||
$text['title_description-bridge']['es-cl'] = '';
|
||||
$text['title_description-bridge']['es-mx'] = '';
|
||||
$text['title_description-bridge']['fr-ca'] = 'Ajouter des déclarations de pont à la liste de sélection';
|
||||
$text['title_description-bridge']['fr-fr'] = 'Ajouter des déclarations de pont à la liste de sélection';
|
||||
$text['title_description-bridge']['he-il'] = '';
|
||||
$text['title_description-bridge']['it-it'] = '';
|
||||
$text['title_description-bridge']['nl-nl'] = 'Voeg brug opdrachten toe aan bestemmings lijst.';
|
||||
$text['title_description-bridge']['pl-pl'] = 'Dodaj wyrażenia mostkowania do listy wyboru destynacji.';
|
||||
$text['title_description-bridge']['pt-br'] = '';
|
||||
$text['title_description-bridge']['pt-pt'] = '';
|
||||
$text['title_description-bridge']['ro-ro'] = '';
|
||||
$text['title_description-bridge']['ru-ru'] = '';
|
||||
$text['title_description-bridge']['sv-se'] = '';
|
||||
$text['title_description-bridge']['uk-ua'] = '';
|
||||
$text['title_description-bridge']['en-us'] = "Add bridge statements to destination select list.";
|
||||
$text['title_description-bridge']['en-gb'] = "Add bridge statements to destination select list.";
|
||||
$text['title_description-bridge']['ar-eg'] = "إضافة عبارات الجسر إلى قائمة تحديد الوجهة.";
|
||||
$text['title_description-bridge']['de-at'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
|
||||
$text['title_description-bridge']['de-ch'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
|
||||
$text['title_description-bridge']['de-de'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
|
||||
$text['title_description-bridge']['es-cl'] = "Agregue declaraciones de puente a la lista de selección de destino.";
|
||||
$text['title_description-bridge']['es-mx'] = "Agregue declaraciones de puente a la lista de selección de destino.";
|
||||
$text['title_description-bridge']['fr-ca'] = "Ajouter des déclarations de pont à la liste de sélection";
|
||||
$text['title_description-bridge']['fr-fr'] = "Ajouter des déclarations de pont à la liste de sélection";
|
||||
$text['title_description-bridge']['he-il'] = "הוסף הצהרות גשר לרשימת בחירת היעד.";
|
||||
$text['title_description-bridge']['it-it'] = "Aggiungi istruzioni bridge allelenco di selezione della destinazione.";
|
||||
$text['title_description-bridge']['nl-nl'] = "Voeg bridge opdrachten toe aan bestemmings lijst.";
|
||||
$text['title_description-bridge']['pl-pl'] = "Dodaj wyrażenia mostkowania do listy wyboru destynacji.";
|
||||
$text['title_description-bridge']['pt-br'] = "Adicione instruções de ponte à lista de seleção de destino.";
|
||||
$text['title_description-bridge']['pt-pt'] = "Adicione instruções de ponte à lista de seleção de destino.";
|
||||
$text['title_description-bridge']['ro-ro'] = "Adăugați declarații bridge la lista de selectare a destinației.";
|
||||
$text['title_description-bridge']['ru-ru'] = "Добавьте операторы моста в список выбора места назначения.";
|
||||
$text['title_description-bridge']['sv-se'] = "Lägg till bryggsatser till destinationsvallistan.";
|
||||
$text['title_description-bridge']['uk-ua'] = "Додайте оператори моста до списку вибору призначення.";
|
||||
$text['title_description-bridge']['zh-cn'] = "将桥接语句添加到目标选择列表。";
|
||||
$text['title_description-bridge']['ja-jp'] = "宛先選択リストにブリッジ ステートメントを追加します。";
|
||||
$text['title_description-bridge']['ko-kr'] = "대상 선택 목록에 브리지 문을 추가합니다.";
|
||||
|
||||
$text['label-bridge_name']['en-us'] = 'Name';
|
||||
$text['label-bridge_name']['en-gb'] = 'Name';
|
||||
$text['label-bridge_name']['ar-eg'] = '';
|
||||
$text['label-bridge_name']['de-at'] = '';
|
||||
$text['label-bridge_name']['de-ch'] = '';
|
||||
$text['label-bridge_name']['de-de'] = '';
|
||||
$text['label-bridge_name']['es-cl'] = '';
|
||||
$text['label-bridge_name']['es-mx'] = '';
|
||||
$text['label-bridge_name']['fr-ca'] = 'Nom';
|
||||
$text['label-bridge_name']['fr-fr'] = 'Nom';
|
||||
$text['label-bridge_name']['he-il'] = '';
|
||||
$text['label-bridge_name']['it-it'] = '';
|
||||
$text['label-bridge_name']['nl-nl'] = 'Naam';
|
||||
$text['label-bridge_name']['pl-pl'] = 'Nazwa';
|
||||
$text['label-bridge_name']['pt-br'] = '';
|
||||
$text['label-bridge_name']['pt-pt'] = '';
|
||||
$text['label-bridge_name']['ro-ro'] = '';
|
||||
$text['label-bridge_name']['ru-ru'] = '';
|
||||
$text['label-bridge_name']['sv-se'] = '';
|
||||
$text['label-bridge_name']['uk-ua'] = '';
|
||||
$text['label-bridge_name']['en-us'] = "Name";
|
||||
$text['label-bridge_name']['en-gb'] = "Name";
|
||||
$text['label-bridge_name']['ar-eg'] = "اسم";
|
||||
$text['label-bridge_name']['de-at'] = "Name";
|
||||
$text['label-bridge_name']['de-ch'] = "Name";
|
||||
$text['label-bridge_name']['de-de'] = "Name";
|
||||
$text['label-bridge_name']['es-cl'] = "Nombre";
|
||||
$text['label-bridge_name']['es-mx'] = "Nombre";
|
||||
$text['label-bridge_name']['fr-ca'] = "Nom";
|
||||
$text['label-bridge_name']['fr-fr'] = "Nom";
|
||||
$text['label-bridge_name']['he-il'] = "שֵׁם";
|
||||
$text['label-bridge_name']['it-it'] = "Nome";
|
||||
$text['label-bridge_name']['nl-nl'] = "Naam";
|
||||
$text['label-bridge_name']['pl-pl'] = "Nazwa";
|
||||
$text['label-bridge_name']['pt-br'] = "Nome";
|
||||
$text['label-bridge_name']['pt-pt'] = "Nome";
|
||||
$text['label-bridge_name']['ro-ro'] = "Nume";
|
||||
$text['label-bridge_name']['ru-ru'] = "Имя";
|
||||
$text['label-bridge_name']['sv-se'] = "namn";
|
||||
$text['label-bridge_name']['uk-ua'] = "Імя";
|
||||
$text['label-bridge_name']['zh-cn'] = "姓名";
|
||||
$text['label-bridge_name']['ja-jp'] = "名前";
|
||||
$text['label-bridge_name']['ko-kr'] = "이름";
|
||||
|
||||
$text['description-bridge_name']['en-us'] = 'Enter the name.';
|
||||
$text['description-bridge_name']['en-gb'] = 'Enter the name.';
|
||||
$text['description-bridge_name']['ar-eg'] = '';
|
||||
$text['description-bridge_name']['de-at'] = '';
|
||||
$text['description-bridge_name']['de-ch'] = '';
|
||||
$text['description-bridge_name']['de-de'] = '';
|
||||
$text['description-bridge_name']['es-cl'] = '';
|
||||
$text['description-bridge_name']['es-mx'] = '';
|
||||
$text['description-bridge_name']['fr-ca'] = 'Entrez le nom';
|
||||
$text['description-bridge_name']['fr-fr'] = 'Entrez le nom';
|
||||
$text['description-bridge_name']['he-il'] = '';
|
||||
$text['description-bridge_name']['it-it'] = '';
|
||||
$text['description-bridge_name']['nl-nl'] = 'Voer naam in.';
|
||||
$text['description-bridge_name']['pl-pl'] = 'Wprowadź nazwę.';
|
||||
$text['description-bridge_name']['pt-br'] = '';
|
||||
$text['description-bridge_name']['pt-pt'] = '';
|
||||
$text['description-bridge_name']['ro-ro'] = '';
|
||||
$text['description-bridge_name']['ru-ru'] = '';
|
||||
$text['description-bridge_name']['sv-se'] = '';
|
||||
$text['description-bridge_name']['uk-ua'] = '';
|
||||
$text['description-bridge_name']['en-us'] = "Enter the name.";
|
||||
$text['description-bridge_name']['en-gb'] = "Enter the name.";
|
||||
$text['description-bridge_name']['ar-eg'] = "أدخل الاسم.";
|
||||
$text['description-bridge_name']['de-at'] = "Geben Sie den Namen ein.";
|
||||
$text['description-bridge_name']['de-ch'] = "Geben Sie den Namen ein.";
|
||||
$text['description-bridge_name']['de-de'] = "Geben Sie den Namen ein.";
|
||||
$text['description-bridge_name']['es-cl'] = "Introduzca el nombre.";
|
||||
$text['description-bridge_name']['es-mx'] = "Introduzca el nombre.";
|
||||
$text['description-bridge_name']['fr-ca'] = "Entrez le nom";
|
||||
$text['description-bridge_name']['fr-fr'] = "Entrez le nom";
|
||||
$text['description-bridge_name']['he-il'] = "הזן את השם.";
|
||||
$text['description-bridge_name']['it-it'] = "Inserisci il nome.";
|
||||
$text['description-bridge_name']['nl-nl'] = "Voer naam in.";
|
||||
$text['description-bridge_name']['pl-pl'] = "Wprowadź nazwę.";
|
||||
$text['description-bridge_name']['pt-br'] = "Digite o nome.";
|
||||
$text['description-bridge_name']['pt-pt'] = "Digite o nome.";
|
||||
$text['description-bridge_name']['ro-ro'] = "Introduceți numele.";
|
||||
$text['description-bridge_name']['ru-ru'] = "Введите имя.";
|
||||
$text['description-bridge_name']['sv-se'] = "Ange namnet.";
|
||||
$text['description-bridge_name']['uk-ua'] = "Введіть назву.";
|
||||
$text['description-bridge_name']['zh-cn'] = "输入名称。";
|
||||
$text['description-bridge_name']['ja-jp'] = "名前を入力します。";
|
||||
$text['description-bridge_name']['ko-kr'] = "이름을 입력하세요.";
|
||||
|
||||
$text['label-bridge_destination']['en-us'] = 'Destination';
|
||||
$text['label-bridge_destination']['en-gb'] = 'Destination';
|
||||
$text['label-bridge_destination']['ar-eg'] = '';
|
||||
$text['label-bridge_destination']['de-at'] = '';
|
||||
$text['label-bridge_destination']['de-ch'] = '';
|
||||
$text['label-bridge_destination']['de-de'] = '';
|
||||
$text['label-bridge_destination']['es-cl'] = '';
|
||||
$text['label-bridge_destination']['es-mx'] = '';
|
||||
$text['label-bridge_destination']['fr-ca'] = 'Destination';
|
||||
$text['label-bridge_destination']['fr-fr'] = 'Destination';
|
||||
$text['label-bridge_destination']['he-il'] = '';
|
||||
$text['label-bridge_destination']['it-it'] = '';
|
||||
$text['label-bridge_destination']['nl-nl'] = 'Bestemming';
|
||||
$text['label-bridge_destination']['pl-pl'] = 'Destynacja';
|
||||
$text['label-bridge_destination']['pt-br'] = '';
|
||||
$text['label-bridge_destination']['pt-pt'] = '';
|
||||
$text['label-bridge_destination']['ro-ro'] = '';
|
||||
$text['label-bridge_destination']['ru-ru'] = '';
|
||||
$text['label-bridge_destination']['sv-se'] = '';
|
||||
$text['label-bridge_destination']['uk-ua'] = '';
|
||||
$text['label-bridge_destination']['en-us'] = "Destination";
|
||||
$text['label-bridge_destination']['en-gb'] = "Destination";
|
||||
$text['label-bridge_destination']['ar-eg'] = "وجهة";
|
||||
$text['label-bridge_destination']['de-at'] = "Ziel";
|
||||
$text['label-bridge_destination']['de-ch'] = "Ziel";
|
||||
$text['label-bridge_destination']['de-de'] = "Ziel";
|
||||
$text['label-bridge_destination']['es-cl'] = "Destino";
|
||||
$text['label-bridge_destination']['es-mx'] = "Destino";
|
||||
$text['label-bridge_destination']['fr-ca'] = "Destination";
|
||||
$text['label-bridge_destination']['fr-fr'] = "Destination";
|
||||
$text['label-bridge_destination']['he-il'] = "יַעַד";
|
||||
$text['label-bridge_destination']['it-it'] = "Destinazione";
|
||||
$text['label-bridge_destination']['nl-nl'] = "Bestemming";
|
||||
$text['label-bridge_destination']['pl-pl'] = "Destynacja";
|
||||
$text['label-bridge_destination']['pt-br'] = "Destino";
|
||||
$text['label-bridge_destination']['pt-pt'] = "Destino";
|
||||
$text['label-bridge_destination']['ro-ro'] = "Destinaţie";
|
||||
$text['label-bridge_destination']['ru-ru'] = "Место назначения";
|
||||
$text['label-bridge_destination']['sv-se'] = "Destination";
|
||||
$text['label-bridge_destination']['uk-ua'] = "Пункт призначення";
|
||||
$text['label-bridge_destination']['zh-cn'] = "目的地";
|
||||
$text['label-bridge_destination']['ja-jp'] = "行き先";
|
||||
$text['label-bridge_destination']['ko-kr'] = "목적지";
|
||||
|
||||
$text['description-bridge_destination']['en-us'] = 'Enter the destination.';
|
||||
$text['description-bridge_destination']['en-gb'] = 'Enter the destination.';
|
||||
$text['description-bridge_destination']['ar-eg'] = '';
|
||||
$text['description-bridge_destination']['de-at'] = '';
|
||||
$text['description-bridge_destination']['de-ch'] = '';
|
||||
$text['description-bridge_destination']['de-de'] = '';
|
||||
$text['description-bridge_destination']['es-cl'] = '';
|
||||
$text['description-bridge_destination']['es-mx'] = '';
|
||||
$text['description-bridge_destination']['fr-ca'] = 'Entrer la destination';
|
||||
$text['description-bridge_destination']['fr-fr'] = 'Entrer la destination';
|
||||
$text['description-bridge_destination']['he-il'] = '';
|
||||
$text['description-bridge_destination']['it-it'] = '';
|
||||
$text['description-bridge_destination']['nl-nl'] = 'Voer de bestemming in.';
|
||||
$text['description-bridge_destination']['pl-pl'] = 'Wprowadź destynację.';
|
||||
$text['description-bridge_destination']['pt-br'] = '';
|
||||
$text['description-bridge_destination']['pt-pt'] = '';
|
||||
$text['description-bridge_destination']['ro-ro'] = '';
|
||||
$text['description-bridge_destination']['ru-ru'] = '';
|
||||
$text['description-bridge_destination']['sv-se'] = '';
|
||||
$text['description-bridge_destination']['uk-ua'] = '';
|
||||
$text['description-bridge_destination']['en-us'] = "Enter the destination.";
|
||||
$text['description-bridge_destination']['en-gb'] = "Enter the destination.";
|
||||
$text['description-bridge_destination']['ar-eg'] = "أدخل الوجهة.";
|
||||
$text['description-bridge_destination']['de-at'] = "Geben Sie das Ziel ein.";
|
||||
$text['description-bridge_destination']['de-ch'] = "Geben Sie das Ziel ein.";
|
||||
$text['description-bridge_destination']['de-de'] = "Geben Sie das Ziel ein.";
|
||||
$text['description-bridge_destination']['es-cl'] = "Introduce el destino.";
|
||||
$text['description-bridge_destination']['es-mx'] = "Introduce el destino.";
|
||||
$text['description-bridge_destination']['fr-ca'] = "Entrer la destination";
|
||||
$text['description-bridge_destination']['fr-fr'] = "Entrer la destination";
|
||||
$text['description-bridge_destination']['he-il'] = "הזן את היעד.";
|
||||
$text['description-bridge_destination']['it-it'] = "Inserisci la destinazione.";
|
||||
$text['description-bridge_destination']['nl-nl'] = "Voer de bestemming in.";
|
||||
$text['description-bridge_destination']['pl-pl'] = "Wprowadź destynację.";
|
||||
$text['description-bridge_destination']['pt-br'] = "Insira o destino.";
|
||||
$text['description-bridge_destination']['pt-pt'] = "Insira o destino.";
|
||||
$text['description-bridge_destination']['ro-ro'] = "Introduceți destinația.";
|
||||
$text['description-bridge_destination']['ru-ru'] = "Введите пункт назначения.";
|
||||
$text['description-bridge_destination']['sv-se'] = "Ange destinationen.";
|
||||
$text['description-bridge_destination']['uk-ua'] = "Введіть пункт призначення.";
|
||||
$text['description-bridge_destination']['zh-cn'] = "输入目的地。";
|
||||
$text['description-bridge_destination']['ja-jp'] = "目的地を入力します。";
|
||||
$text['description-bridge_destination']['ko-kr'] = "목적지를 입력하세요.";
|
||||
|
||||
$text['label-bridge_enabled']['en-us'] = 'Enabled';
|
||||
$text['label-bridge_enabled']['en-gb'] = 'Enabled';
|
||||
$text['label-bridge_enabled']['ar-eg'] = '';
|
||||
$text['label-bridge_enabled']['de-at'] = '';
|
||||
$text['label-bridge_enabled']['de-ch'] = '';
|
||||
$text['label-bridge_enabled']['de-de'] = '';
|
||||
$text['label-bridge_enabled']['es-cl'] = '';
|
||||
$text['label-bridge_enabled']['es-mx'] = '';
|
||||
$text['label-bridge_enabled']['fr-ca'] = 'Activé';
|
||||
$text['label-bridge_enabled']['fr-fr'] = 'Activé';
|
||||
$text['label-bridge_enabled']['he-il'] = '';
|
||||
$text['label-bridge_enabled']['it-it'] = '';
|
||||
$text['label-bridge_enabled']['nl-nl'] = 'Geactiveerd';
|
||||
$text['label-bridge_enabled']['pl-pl'] = 'Aktywny';
|
||||
$text['label-bridge_enabled']['pt-br'] = '';
|
||||
$text['label-bridge_enabled']['pt-pt'] = '';
|
||||
$text['label-bridge_enabled']['ro-ro'] = '';
|
||||
$text['label-bridge_enabled']['ru-ru'] = '';
|
||||
$text['label-bridge_enabled']['sv-se'] = '';
|
||||
$text['label-bridge_enabled']['uk-ua'] = '';
|
||||
$text['label-bridge_enabled']['en-us'] = "Enabled";
|
||||
$text['label-bridge_enabled']['en-gb'] = "Enabled";
|
||||
$text['label-bridge_enabled']['ar-eg'] = "ممكن";
|
||||
$text['label-bridge_enabled']['de-at'] = "Ermöglicht";
|
||||
$text['label-bridge_enabled']['de-ch'] = "Ermöglicht";
|
||||
$text['label-bridge_enabled']['de-de'] = "Ermöglicht";
|
||||
$text['label-bridge_enabled']['es-cl'] = "Activada";
|
||||
$text['label-bridge_enabled']['es-mx'] = "Activada";
|
||||
$text['label-bridge_enabled']['fr-ca'] = "Activé";
|
||||
$text['label-bridge_enabled']['fr-fr'] = "Activé";
|
||||
$text['label-bridge_enabled']['he-il'] = "מופעל";
|
||||
$text['label-bridge_enabled']['it-it'] = "Abilitato";
|
||||
$text['label-bridge_enabled']['nl-nl'] = "Geactiveerd";
|
||||
$text['label-bridge_enabled']['pl-pl'] = "Aktywny";
|
||||
$text['label-bridge_enabled']['pt-br'] = "Habilitado";
|
||||
$text['label-bridge_enabled']['pt-pt'] = "Habilitado";
|
||||
$text['label-bridge_enabled']['ro-ro'] = "Activat";
|
||||
$text['label-bridge_enabled']['ru-ru'] = "Включено";
|
||||
$text['label-bridge_enabled']['sv-se'] = "Aktiverad";
|
||||
$text['label-bridge_enabled']['uk-ua'] = "Увімкнено";
|
||||
$text['label-bridge_enabled']['zh-cn'] = "启用";
|
||||
$text['label-bridge_enabled']['ja-jp'] = "有効";
|
||||
$text['label-bridge_enabled']['ko-kr'] = "사용";
|
||||
|
||||
$text['description-bridge_enabled']['en-us'] = 'Select to enable or disable.';
|
||||
$text['description-bridge_enabled']['en-gb'] = 'Select to enable or disable.';
|
||||
$text['description-bridge_enabled']['ar-eg'] = '';
|
||||
$text['description-bridge_enabled']['de-at'] = '';
|
||||
$text['description-bridge_enabled']['de-ch'] = '';
|
||||
$text['description-bridge_enabled']['de-de'] = '';
|
||||
$text['description-bridge_enabled']['es-cl'] = '';
|
||||
$text['description-bridge_enabled']['es-mx'] = '';
|
||||
$text['description-bridge_enabled']['fr-ca'] = 'Sélectionnez pour activer ou désactiver';
|
||||
$text['description-bridge_enabled']['fr-fr'] = 'Sélectionnez pour activer ou désactiver';
|
||||
$text['description-bridge_enabled']['he-il'] = '';
|
||||
$text['description-bridge_enabled']['it-it'] = '';
|
||||
$text['description-bridge_enabled']['nl-nl'] = 'Kies aktiveer/deactiveer.';
|
||||
$text['description-bridge_enabled']['pl-pl'] = 'Wybierz czy aktywować lub dezaktywować.';
|
||||
$text['description-bridge_enabled']['pt-br'] = '';
|
||||
$text['description-bridge_enabled']['pt-pt'] = '';
|
||||
$text['description-bridge_enabled']['ro-ro'] = '';
|
||||
$text['description-bridge_enabled']['ru-ru'] = '';
|
||||
$text['description-bridge_enabled']['sv-se'] = '';
|
||||
$text['description-bridge_enabled']['uk-ua'] = '';
|
||||
$text['description-bridge_enabled']['en-us'] = "Select to enable or disable.";
|
||||
$text['description-bridge_enabled']['en-gb'] = "Select to enable or disable.";
|
||||
$text['description-bridge_enabled']['ar-eg'] = "حدد للتمكين أو التعطيل.";
|
||||
$text['description-bridge_enabled']['de-at'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
|
||||
$text['description-bridge_enabled']['de-ch'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
|
||||
$text['description-bridge_enabled']['de-de'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
|
||||
$text['description-bridge_enabled']['es-cl'] = "Seleccione para habilitar o deshabilitar.";
|
||||
$text['description-bridge_enabled']['es-mx'] = "Seleccione para habilitar o deshabilitar.";
|
||||
$text['description-bridge_enabled']['fr-ca'] = "Sélectionnez pour activer ou désactiver";
|
||||
$text['description-bridge_enabled']['fr-fr'] = "Sélectionnez pour activer ou désactiver";
|
||||
$text['description-bridge_enabled']['he-il'] = "בחר כדי להפעיל או להשבית.";
|
||||
$text['description-bridge_enabled']['it-it'] = "Selezionare per abilitare o disabilitare.";
|
||||
$text['description-bridge_enabled']['nl-nl'] = "Kies aktiveer/deactiveer.";
|
||||
$text['description-bridge_enabled']['pl-pl'] = "Wybierz czy aktywować lub dezaktywować.";
|
||||
$text['description-bridge_enabled']['pt-br'] = "Selecione para habilitar ou desabilitar.";
|
||||
$text['description-bridge_enabled']['pt-pt'] = "Selecione para habilitar ou desabilitar.";
|
||||
$text['description-bridge_enabled']['ro-ro'] = "Selectați pentru a activa sau dezactiva.";
|
||||
$text['description-bridge_enabled']['ru-ru'] = "Выберите, чтобы включить или отключить.";
|
||||
$text['description-bridge_enabled']['sv-se'] = "Välj för att aktivera eller inaktivera.";
|
||||
$text['description-bridge_enabled']['uk-ua'] = "Виберіть, щоб увімкнути або вимкнути.";
|
||||
$text['description-bridge_enabled']['zh-cn'] = "选择启用或禁用。";
|
||||
$text['description-bridge_enabled']['ja-jp'] = "有効または無効を選択します。";
|
||||
$text['description-bridge_enabled']['ko-kr'] = "활성화 또는 비활성화를 선택합니다.";
|
||||
|
||||
$text['label-bridge_description']['en-us'] = 'Description';
|
||||
$text['label-bridge_description']['en-gb'] = 'Description';
|
||||
$text['label-bridge_description']['ar-eg'] = '';
|
||||
$text['label-bridge_description']['de-at'] = '';
|
||||
$text['label-bridge_description']['de-ch'] = '';
|
||||
$text['label-bridge_description']['de-de'] = '';
|
||||
$text['label-bridge_description']['es-cl'] = '';
|
||||
$text['label-bridge_description']['es-mx'] = '';
|
||||
$text['label-bridge_description']['fr-ca'] = 'La description';
|
||||
$text['label-bridge_description']['fr-fr'] = 'La description';
|
||||
$text['label-bridge_description']['he-il'] = '';
|
||||
$text['label-bridge_description']['it-it'] = '';
|
||||
$text['label-bridge_description']['nl-nl'] = 'Omschrijving';
|
||||
$text['label-bridge_description']['pl-pl'] = 'Opis';
|
||||
$text['label-bridge_description']['pt-br'] = '';
|
||||
$text['label-bridge_description']['pt-pt'] = '';
|
||||
$text['label-bridge_description']['ro-ro'] = '';
|
||||
$text['label-bridge_description']['ru-ru'] = '';
|
||||
$text['label-bridge_description']['sv-se'] = '';
|
||||
$text['label-bridge_description']['uk-ua'] = '';
|
||||
$text['label-bridge_description']['en-us'] = "Description";
|
||||
$text['label-bridge_description']['en-gb'] = "Description";
|
||||
$text['label-bridge_description']['ar-eg'] = "وصف";
|
||||
$text['label-bridge_description']['de-at'] = "Beschreibung";
|
||||
$text['label-bridge_description']['de-ch'] = "Beschreibung";
|
||||
$text['label-bridge_description']['de-de'] = "Beschreibung";
|
||||
$text['label-bridge_description']['es-cl'] = "Descripción";
|
||||
$text['label-bridge_description']['es-mx'] = "Descripción";
|
||||
$text['label-bridge_description']['fr-ca'] = "Description";
|
||||
$text['label-bridge_description']['fr-fr'] = "Description";
|
||||
$text['label-bridge_description']['he-il'] = "תיאור";
|
||||
$text['label-bridge_description']['it-it'] = "Descrizione";
|
||||
$text['label-bridge_description']['nl-nl'] = "Omschrijving";
|
||||
$text['label-bridge_description']['pl-pl'] = "Opis";
|
||||
$text['label-bridge_description']['pt-br'] = "Descrição";
|
||||
$text['label-bridge_description']['pt-pt'] = "Descripção";
|
||||
$text['label-bridge_description']['ro-ro'] = "Descriere";
|
||||
$text['label-bridge_description']['ru-ru'] = "Описание";
|
||||
$text['label-bridge_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-bridge_description']['uk-ua'] = "Опис";
|
||||
$text['label-bridge_description']['tr-tr'] = "Açıklama";
|
||||
$text['label-bridge_description']['zh-cn'] = "描述";
|
||||
$text['label-bridge_description']['ja-jp'] = "説明";
|
||||
$text['label-bridge_description']['ko-kr'] = "설명";
|
||||
|
||||
$text['description-bridge_description']['en-us'] = 'Enter the description. ';
|
||||
$text['description-bridge_description']['en-gb'] = 'Enter the description. ';
|
||||
$text['description-bridge_description']['ar-eg'] = '';
|
||||
$text['description-bridge_description']['de-at'] = '';
|
||||
$text['description-bridge_description']['de-ch'] = '';
|
||||
$text['description-bridge_description']['de-de'] = '';
|
||||
$text['description-bridge_description']['es-cl'] = '';
|
||||
$text['description-bridge_description']['es-mx'] = '';
|
||||
$text['description-bridge_description']['fr-ca'] = 'Entrez la description';
|
||||
$text['description-bridge_description']['fr-fr'] = 'Entrez la description';
|
||||
$text['description-bridge_description']['he-il'] = '';
|
||||
$text['description-bridge_description']['it-it'] = '';
|
||||
$text['description-bridge_description']['nl-nl'] = 'Voer omschrijving in.';
|
||||
$text['description-bridge_description']['pl-pl'] = 'Wprowadź opis.';
|
||||
$text['description-bridge_description']['pt-br'] = '';
|
||||
$text['description-bridge_description']['pt-pt'] = '';
|
||||
$text['description-bridge_description']['ro-ro'] = '';
|
||||
$text['description-bridge_description']['ru-ru'] = '';
|
||||
$text['description-bridge_description']['sv-se'] = '';
|
||||
$text['description-bridge_description']['uk-ua'] = '';
|
||||
|
||||
$text['label-bridge_description']['en-us'] = "Description";
|
||||
$text['label-bridge_description']['en-gb'] = "Description";
|
||||
$text['label-bridge_description']['ar-eg'] = "";
|
||||
$text['label-bridge_description']['de-at'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-bridge_description']['de-ch'] = "Beschreibung"; //copied from de-de
|
||||
$text['label-bridge_description']['de-de'] = "Beschreibung";
|
||||
$text['label-bridge_description']['es-cl'] = "Descripción";
|
||||
$text['label-bridge_description']['es-mx'] = "Descripción"; //copied from es-cl
|
||||
$text['label-bridge_description']['fr-ca'] = "Description"; //copied from fr-fr
|
||||
$text['label-bridge_description']['fr-fr'] = "Description";
|
||||
$text['label-bridge_description']['he-il'] = "";
|
||||
$text['label-bridge_description']['it-it'] = "Descrizione";
|
||||
$text['label-bridge_description']['nl-nl'] = "Omschrijving";
|
||||
$text['label-bridge_description']['pl-pl'] = "Opis";
|
||||
$text['label-bridge_description']['pt-br'] = "Descrição";
|
||||
$text['label-bridge_description']['pt-pt'] = "Descripção";
|
||||
$text['label-bridge_description']['ro-ro'] = "";
|
||||
$text['label-bridge_description']['ru-ru'] = "Описание";
|
||||
$text['label-bridge_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-bridge_description']['uk-ua'] = "Опис";
|
||||
$text['label-bridge_description']['tr-tr'] = "Açıklama";
|
||||
$text['description-bridge_description']['en-us'] = "Enter the description. ";
|
||||
$text['description-bridge_description']['en-gb'] = "Enter the description. ";
|
||||
$text['description-bridge_description']['ar-eg'] = "أدخل الوصف.";
|
||||
$text['description-bridge_description']['de-at'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-bridge_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-bridge_description']['de-de'] = "Geben Sie die Beschreibung ein.";
|
||||
$text['description-bridge_description']['es-cl'] = "Introduce la descripción.";
|
||||
$text['description-bridge_description']['es-mx'] = "Introduce la descripción.";
|
||||
$text['description-bridge_description']['fr-ca'] = "Entrez la description";
|
||||
$text['description-bridge_description']['fr-fr'] = "Entrez la description";
|
||||
$text['description-bridge_description']['he-il'] = "הזן את התיאור.";
|
||||
$text['description-bridge_description']['it-it'] = "Inserisci la descrizione.";
|
||||
$text['description-bridge_description']['nl-nl'] = "Voer omschrijving in.";
|
||||
$text['description-bridge_description']['pl-pl'] = "Wprowadź opis.";
|
||||
$text['description-bridge_description']['pt-br'] = "Digite a descrição.";
|
||||
$text['description-bridge_description']['pt-pt'] = "Digite a descrição.";
|
||||
$text['description-bridge_description']['ro-ro'] = "Introduceți descrierea.";
|
||||
$text['description-bridge_description']['ru-ru'] = "Введите описание.";
|
||||
$text['description-bridge_description']['sv-se'] = "Ange beskrivningen.";
|
||||
$text['description-bridge_description']['uk-ua'] = "Введіть опис.";
|
||||
$text['description-bridge_description']['zh-cn'] = "输入说明。";
|
||||
$text['description-bridge_description']['ja-jp'] = "説明を入力します。";
|
||||
$text['description-bridge_description']['ko-kr'] = "설명을 입력합니다.";
|
||||
|
||||
?>
|
||||
|
||||
+32
-17
@@ -1,21 +1,36 @@
|
||||
<?php
|
||||
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = 'Bridges';
|
||||
$apps[$x]['menu'][0]['title']['en-gb'] = 'Bridges';
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = '';
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = '';
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = '';
|
||||
$apps[$x]['menu'][0]['title']['nl-nl'] = 'Bruggen';
|
||||
$apps[$x]['menu'][0]['title']['pl'] = 'Mostkowania';
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = '';
|
||||
$apps[$x]['menu'][0]['title']['uk'] = '';
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = '';
|
||||
$apps[$x]['menu'][0]['uuid'] = '345f0aad-8321-4a8b-9f08-c4730297660c';
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = 'fd29e39c-c936-f5fc-8e2b-611681b266b5';
|
||||
$apps[$x]['menu'][0]['category'] = 'internal';
|
||||
$apps[$x]['menu'][0]['path'] = '/app/bridges/bridges.php';
|
||||
$apps[$x]['menu'][0]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['menu'][0]['groups'][] = 'admin';
|
||||
//$apps[$x]['menu'][0]['groups'][] = 'user';
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Bridges";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Bridges";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "الجسور";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Brücken";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Brücken";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Brücken";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Puentes";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Puentes";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Ponts";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Ponts";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "גשרים";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Ponti";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Bridges";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Mostkowania";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "pontes";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "pontes";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Poduri";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Мосты";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Broar";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Міста";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "桥梁";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "ブリッジ";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "교량";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "345f0aad-8321-4a8b-9f08-c4730297660c";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/bridges/bridges.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
+35
-28
@@ -21,9 +21,8 @@
|
||||
the Initial Developer. All Rights Reserved.
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -37,7 +36,7 @@
|
||||
$text = $language->get();
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$bridge_uuid = $_REQUEST["id"];
|
||||
$id = $_REQUEST["id"];
|
||||
@@ -46,17 +45,24 @@
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//set the defaults
|
||||
$bridge_uuid = '';
|
||||
$bridge_name = '';
|
||||
$bridge_destination = '';
|
||||
$bridge_enabled = '';
|
||||
$bridge_description = '';
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
$bridge_uuid = $_POST["bridge_uuid"];
|
||||
if (!empty($_POST)) {
|
||||
$bridge_uuid = $_POST["bridge_uuid"] ?? null;
|
||||
$bridge_name = $_POST["bridge_name"];
|
||||
$bridge_destination = $_POST["bridge_destination"];
|
||||
$bridge_enabled = $_POST["bridge_enabled"];
|
||||
$bridge_enabled = $_POST["bridge_enabled"] ?? 'false';
|
||||
$bridge_description = $_POST["bridge_description"];
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//delete the bridge
|
||||
if (permission_exists('bridge_delete')) {
|
||||
@@ -88,10 +94,10 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
if (strlen($bridge_name) == 0) { $msg .= $text['message-required']." ".$text['label-bridge_name']."<br>\n"; }
|
||||
if (strlen($bridge_destination) == 0) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
|
||||
if (strlen($bridge_enabled) == 0) { $msg .= $text['message-required']." ".$text['label-bridge_enabled']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (empty($bridge_name)) { $msg .= $text['message-required']." ".$text['label-bridge_name']."<br>\n"; }
|
||||
if (empty($bridge_destination)) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
|
||||
if (empty($bridge_enabled)) { $msg .= $text['message-required']." ".$text['label-bridge_enabled']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -105,7 +111,7 @@
|
||||
}
|
||||
|
||||
//add the bridge_uuid
|
||||
if (strlen($bridge_uuid) == 0) {
|
||||
if (empty($bridge_uuid)) {
|
||||
$bridge_uuid = uuid();
|
||||
}
|
||||
|
||||
@@ -143,14 +149,14 @@
|
||||
}
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && is_array($_GET) && (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true")) {
|
||||
$bridge_uuid = $_GET["id"];
|
||||
$sql = "select * from v_bridges ";
|
||||
$sql .= "where bridge_uuid = :bridge_uuid ";
|
||||
$parameters['bridge_uuid'] = $bridge_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
$row = $database->select($sql, $parameters ?? null, 'row');
|
||||
if (!empty($row)) {
|
||||
$bridge_name = $row["bridge_name"];
|
||||
$bridge_destination = $row["bridge_destination"];
|
||||
$bridge_enabled = $row["bridge_enabled"];
|
||||
@@ -159,6 +165,9 @@
|
||||
unset($sql, $parameters, $row);
|
||||
}
|
||||
|
||||
//set the defaults
|
||||
if (empty($bridge_enabled)) { $bridge_enabled = 'true'; }
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
@@ -215,20 +224,18 @@
|
||||
echo " ".$text['label-bridge_enabled']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <select class='formfld' name='bridge_enabled'>\n";
|
||||
if ($bridge_enabled == "true") {
|
||||
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
|
||||
if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') {
|
||||
echo " <label class='switch'>\n";
|
||||
echo " <input type='checkbox' id='bridge_enabled' name='bridge_enabled' value='true' ".(!empty($bridge_enabled) && $bridge_enabled == 'true' ? "checked='checked'" : null).">\n";
|
||||
echo " <span class='slider'></span>\n";
|
||||
echo " </label>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='true'>".$text['label-true']."</option>\n";
|
||||
echo " <select class='formfld' id='bridge_enabled' name='bridge_enabled'>\n";
|
||||
echo " <option value='true' ".($bridge_enabled == 'true' ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " <option value='false' ".($bridge_enabled == 'false' ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
|
||||
echo " </select>\n";
|
||||
}
|
||||
if ($bridge_enabled == "false") {
|
||||
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='false'>".$text['label-false']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-bridge_enabled']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -258,4 +265,4 @@
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
+28
-22
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,15 +42,22 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$search = $_GET["search"] ?? '';
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get the http post data
|
||||
if (is_array($_POST['bridges'])) {
|
||||
if (!empty($_POST['bridges'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$bridges = $_POST['bridges'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($bridges) && @sizeof($bridges) != 0) {
|
||||
if (!empty($action) && !empty($bridges)) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('bridge_add')) {
|
||||
@@ -73,16 +79,16 @@
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: bridges.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
header('Location: bridges.php'.(!empty($search) ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search string
|
||||
if (isset($_GET["search"])) {
|
||||
if (!empty($search)) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
$sql_search = " (";
|
||||
$sql_search .= " lower(bridge_name) like :search ";
|
||||
@@ -95,7 +101,7 @@
|
||||
|
||||
//get the count
|
||||
$sql = "select count(bridge_uuid) from v_bridges ";
|
||||
if ($_GET['show'] == "all" && permission_exists('bridge_all')) {
|
||||
if (!empty($show) && $show == "all" && permission_exists('bridge_all')) {
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "where ".$sql_search;
|
||||
}
|
||||
@@ -108,13 +114,13 @@
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = $search ? "&search=".$search : null;
|
||||
$param = ($_GET['show'] == 'all' && permission_exists('bridge_all')) ? "&show=all" : null;
|
||||
$page = is_numeric($_GET['page']) ? $_GET['page'] : 0;
|
||||
$param = !empty($search) ? "&search=".$search : null;
|
||||
$param = (isset($_GET['show']) && $_GET['show'] == 'all' && permission_exists('bridge_all')) ? "&show=all" : null;
|
||||
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0;
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
@@ -124,7 +130,7 @@
|
||||
$sql .= order_by($order_by, $order, 'bridge_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$bridges = $database->select($sql, $parameters, 'all');
|
||||
$bridges = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -153,7 +159,7 @@
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('bridge_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if (isset($show) && $show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>\n";
|
||||
}
|
||||
else {
|
||||
@@ -192,22 +198,22 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($bridges ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(empty($bridges) ? "style='visibility: hidden;'" : null).">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == 'all' && permission_exists('bridge_all')) {
|
||||
if (!empty($show) && $show == 'all' && permission_exists('bridge_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
|
||||
}
|
||||
echo th_order_by('bridge_name', $text['label-bridge_name'], $order_by, $order);
|
||||
echo th_order_by('bridge_destination', $text['label-bridge_destination'], $order_by, $order);
|
||||
echo th_order_by('bridge_enabled', $text['label-bridge_enabled'], $order_by, $order, null, "class='center'");
|
||||
echo " <th class='hide-sm-dn'>".$text['label-bridge_description']."</th>\n";
|
||||
if (permission_exists('bridge_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($bridges) && @sizeof($bridges) != 0) {
|
||||
if (!empty($bridges)) {
|
||||
$x = 0;
|
||||
foreach ($bridges as $row) {
|
||||
if (permission_exists('bridge_edit')) {
|
||||
@@ -220,7 +226,7 @@
|
||||
echo " <input type='hidden' name='bridges[$x][uuid]' value='".escape($row['bridge_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == 'all' && permission_exists('bridge_all')) {
|
||||
if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('bridge_all')) {
|
||||
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
|
||||
}
|
||||
echo " <td>\n";
|
||||
@@ -242,7 +248,7 @@
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td class='description overflow hide-sm-dn'>".escape($row['bridge_description'])."</td>\n";
|
||||
if (permission_exists('bridge_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>\n";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -57,16 +57,6 @@ if (!class_exists('bridges')) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
@@ -90,7 +80,7 @@ if (!class_exists('bridges')) {
|
||||
|
||||
//build the delete array
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
|
||||
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
@@ -142,7 +132,7 @@ if (!class_exists('bridges')) {
|
||||
|
||||
//get current toggle state
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -216,7 +206,7 @@ if (!class_exists('bridges')) {
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -166,5 +166,29 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the description.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
|
||||
+499
-344
File diff suppressed because it is too large
Load Diff
@@ -5,12 +5,12 @@
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Block";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "حظر المكالمات";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Sperrlisten";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Einloggen";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Sperrlisten";
|
||||
$apps[$x]['menu'][$y]['title']['el-gr'] = "Λίστα απορρίψεων";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Bloqueo de llamadas";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Block";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Call Block";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Liste Noire";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "חסימת מספר";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Blocco Chiamate";
|
||||
@@ -22,12 +22,18 @@
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Черный список";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Blockera Samtal";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Блокування дзвінків";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "呼叫块";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コール ブロック";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "통화 차단";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "29295c90-b1b9-440b-9c7E-c8363c6e8975";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_block/call_block.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "user";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -27,9 +27,8 @@
|
||||
All of it has been rewritten over years.
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -42,15 +41,22 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$search = $_GET["search"] ?? '';
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_blocks'])) {
|
||||
if (!empty($_POST['call_blocks'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_blocks = $_POST['call_blocks'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_blocks) && @sizeof($call_blocks) != 0) {
|
||||
if (!empty($action) && !empty($call_blocks)) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_block_add')) {
|
||||
@@ -77,33 +83,26 @@
|
||||
}
|
||||
|
||||
//get variables used to control the order
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$sql_search = " (";
|
||||
$sql_search .= "lower(call_block_name) like :search ";
|
||||
$sql_search .= "or call_block_country_code like :search ";
|
||||
$sql_search .= "or lower(call_block_number) like :search ";
|
||||
$sql_search .= "or lower(call_block_description) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
if (!empty($_GET["search"])) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) from view_call_block ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
if ($show == "all" && permission_exists('call_block_all')) {
|
||||
//$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
else {
|
||||
$sql .= "and (domain_uuid = :domain_uuid) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (!permission_exists('call_block_all') && is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension'])) {
|
||||
$sql .= "and extension_uuid in (";
|
||||
$x = 0;
|
||||
foreach ($_SESSION['user']['extension'] as $field) {
|
||||
@@ -114,21 +113,29 @@
|
||||
}
|
||||
$sql .= ") ";
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(call_block_name) like :search ";
|
||||
$sql .= " or lower(call_block_direction) like :search ";
|
||||
$sql .= " or lower(call_block_number) like :search ";
|
||||
$sql .= " or lower(call_block_app) like :search ";
|
||||
$sql .= " or lower(call_block_data) like :search ";
|
||||
$sql .= " or lower(call_block_description) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
unset($parameters);
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".$search;
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
if ($show == "all" && permission_exists('call_block_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
@@ -136,15 +143,15 @@
|
||||
//get the list
|
||||
$sql = "select * from view_call_block ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
if ($show == "all" && permission_exists('call_block_all')) {
|
||||
//$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
else {
|
||||
$sql .= "and (domain_uuid = :domain_uuid) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (!permission_exists('call_block_all') && is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
$sql .= "and extension_uuid in (";
|
||||
$x = 0;
|
||||
foreach ($_SESSION['user']['extension'] as $field) {
|
||||
@@ -155,13 +162,21 @@
|
||||
}
|
||||
$sql .= ") ";
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(call_block_name) like :search ";
|
||||
$sql .= " or lower(call_block_direction) like :search ";
|
||||
$sql .= " or lower(call_block_number) like :search ";
|
||||
$sql .= " or lower(call_block_app) like :search ";
|
||||
$sql .= " or lower(call_block_data) like :search ";
|
||||
$sql .= " or lower(call_block_description) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$sql .= order_by($order_by, $order, ['call_block_country_code','call_block_number']);
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$result = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -189,18 +204,18 @@
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_forward_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if (permission_exists('call_block_all')) {
|
||||
if ($show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type).'&show=all'.($search != '' ? "&search=".urlencode($search) : null)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type ?? '').'&show=all'.($search != '' ? "&search=".urlencode($search ?? '') : null)]);
|
||||
}
|
||||
}
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search']);
|
||||
//echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_block.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($paging_controls_mini != '') {
|
||||
if (!empty($paging_controls_mini)) {
|
||||
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>";
|
||||
}
|
||||
echo " </form>\n";
|
||||
@@ -229,10 +244,10 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($result ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($result) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == 'all' && permission_exists('domain_all')) {
|
||||
if ($show == 'all' && permission_exists('domain_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
|
||||
}
|
||||
echo th_order_by('call_block_direction', $text['label-direction'], $order_by, $order, null, "style='width: 1%;' class='center'");
|
||||
@@ -245,12 +260,12 @@
|
||||
echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
|
||||
echo th_order_by('date_added', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
|
||||
echo "<th class='hide-md-dn pct-20'>".$text['label-description']."</th>\n";
|
||||
if (permission_exists('call_block_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
if (!empty($result)) {
|
||||
$x = 0;
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('call_block_edit')) {
|
||||
@@ -263,7 +278,7 @@
|
||||
echo " <input type='hidden' name='call_blocks[".$x."][uuid]' value='".escape($row['call_block_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == 'all' && permission_exists('domain_all')) {
|
||||
if (!empty($show) && $show == 'all' && permission_exists('domain_all')) {
|
||||
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
|
||||
}
|
||||
echo " <td class='center'>";
|
||||
@@ -273,7 +288,7 @@
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td class='center'>";
|
||||
if (strlen($row['extension']) == 0) {
|
||||
if (empty($row['extension'])) {
|
||||
echo $text['label-all'];
|
||||
}
|
||||
else {
|
||||
@@ -308,9 +323,9 @@
|
||||
echo $text['label-'.$row['call_block_enabled']];
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td class='no-wrap'>".date('j M Y', $row['date_added'])." <span class='hide-sm-dn'>".date(($_SESSION['domain']['time_format']['text'] == '12h' ? 'h:i:s a' : 'H:i:s'), $row['date_added'])."</span></td>\n";
|
||||
echo " <td class='no-wrap'>".date('j M Y', $row['date_added'])." <span class='hide-sm-dn'>".date((!empty($_SESSION['domain']['time_format']['text']) == '12h' ? 'h:i:s a' : 'H:i:s'), $row['date_added'])."</span></td>\n";
|
||||
echo " <td class='description overflow hide-md-dn'>".escape($row['call_block_description'])."</td>\n";
|
||||
if (permission_exists('call_block_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -27,9 +27,8 @@
|
||||
Original version of Call Block was written by Gerrit Visser <gerrit308@gmail.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -41,8 +40,14 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the defaults
|
||||
$call_block_name = '';
|
||||
$call_block_country_code = '';
|
||||
$call_block_number = '';
|
||||
$call_block_description = '';
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_block_uuid = $_REQUEST["id"];
|
||||
}
|
||||
@@ -50,26 +55,37 @@
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//get order and order by and sanitize the values
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (count($_POST) > 0) {
|
||||
if (!empty($_POST)) {
|
||||
//get the variables from the http post
|
||||
$call_block_direction = $_POST["call_block_direction"];
|
||||
$extension_uuid = $_POST["extension_uuid"];
|
||||
$call_block_name = $_POST["call_block_name"];
|
||||
$call_block_country_code = $_POST["call_block_country_code"];
|
||||
$call_block_number = $_POST["call_block_number"];
|
||||
$call_block_enabled = $_POST["call_block_enabled"];
|
||||
$call_block_description = $_POST["call_block_description"];
|
||||
|
||||
$call_block_name = $_POST["call_block_name"] ?? null;
|
||||
$call_block_country_code = $_POST["call_block_country_code"] ?? null;
|
||||
$call_block_number = $_POST["call_block_number"] ?? null;
|
||||
$call_block_enabled = $_POST["call_block_enabled"] ?? 'false';
|
||||
$call_block_description = $_POST["call_block_description"] ?? null;
|
||||
|
||||
//get the call block app and data
|
||||
$action_array = explode(':', $_POST["call_block_action"]);
|
||||
$call_block_app = $action_array[0];
|
||||
$call_block_data = $action_array[1];
|
||||
$call_block_data = $action_array[1] ?? null;
|
||||
|
||||
//sanitize the data
|
||||
$extension_uuid = preg_replace("#[^a-fA-F0-9./]#", "", $extension_uuid);
|
||||
$call_block_country_code = preg_replace('#[^0-9./]#', '', $call_block_country_code ?? '');
|
||||
$call_block_number = preg_replace('#[^0-9./]#', '', $call_block_number ?? '');
|
||||
}
|
||||
|
||||
//handle the http post
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//handle action
|
||||
if ($_POST['action'] != '') {
|
||||
if (!empty($_POST['action'])) {
|
||||
switch ($_POST['action']) {
|
||||
case 'delete':
|
||||
if (permission_exists('call_block_delete') && is_uuid($call_block_uuid)) {
|
||||
@@ -82,8 +98,8 @@
|
||||
}
|
||||
break;
|
||||
case 'add':
|
||||
$xml_cdrs = $_POST['xml_cdrs'];
|
||||
if (permission_exists('call_block_add') && is_array($xml_cdrs) && @sizeof($xml_cdrs) != 0) {
|
||||
$xml_cdrs = $_POST['xml_cdrs'] ?? null;
|
||||
if (!empty($xml_cdrs) && permission_exists('call_block_add')) {
|
||||
$obj = new call_block;
|
||||
$obj->call_block_direction = $call_block_direction;
|
||||
$obj->extension_uuid = $extension_uuid;
|
||||
@@ -108,10 +124,10 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
//if (strlen($call_block_name) == 0) { $msg .= $text['label-provide-name']."<br>\n"; }
|
||||
//if (strlen($call_block_number) == 0) { $msg .= $text['label-provide-number']."<br>\n"; }
|
||||
if (strlen($call_block_enabled) == 0) { $msg .= $text['label-provide-enabled']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//if (empty($call_block_name)) { $msg .= $text['label-provide-name']."<br>\n"; }
|
||||
//if (empty($call_block_number)) { $msg .= $text['label-provide-number']."<br>\n"; }
|
||||
if (empty($call_block_enabled)) { $msg .= $text['label-provide-enabled']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -125,7 +141,7 @@
|
||||
}
|
||||
|
||||
//add or update the database
|
||||
if (is_array($_POST) && sizeof($_POST) != 0 && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//ensure call block is enabled in the dialplan
|
||||
if ($action == "add" || $action == "update") {
|
||||
@@ -137,7 +153,7 @@
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters);
|
||||
|
||||
if (is_array($rows) && sizeof($rows) != 0) {
|
||||
if (!empty($rows)) {
|
||||
foreach ($rows as $index => $row) {
|
||||
$array['dialplans'][$index]['dialplan_uuid'] = $row['dialplan_uuid'];
|
||||
$array['dialplans'][$index]['dialplan_enabled'] = 'true';
|
||||
@@ -164,7 +180,7 @@
|
||||
$array['call_block'][0]['call_block_uuid'] = uuid();
|
||||
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
|
||||
if (is_uuid($extension_uuid)) {
|
||||
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
|
||||
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
|
||||
}
|
||||
$array['call_block'][0]['call_block_name'] = $call_block_name;
|
||||
@@ -198,7 +214,7 @@
|
||||
$parameters['call_block_uuid'] = $call_block_uuid;
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters);
|
||||
if (is_array($result) && sizeof($result) != 0) {
|
||||
if (!empty($result)) {
|
||||
//set the domain_name
|
||||
$domain_name = $result[0]["domain_name"];
|
||||
|
||||
@@ -211,7 +227,7 @@
|
||||
$array['call_block'][0]['call_block_uuid'] = $call_block_uuid;
|
||||
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
|
||||
if (is_uuid($extension_uuid)) {
|
||||
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
|
||||
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
|
||||
}
|
||||
$array['call_block'][0]['call_block_name'] = $call_block_name;
|
||||
@@ -238,7 +254,7 @@
|
||||
}
|
||||
|
||||
//pre-populate the form
|
||||
if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && empty($_POST["persistformvar"])) {
|
||||
$call_block_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_block ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -247,7 +263,7 @@
|
||||
$parameters['call_block_uuid'] = $call_block_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$call_block_direction = $row["call_block_direction"];
|
||||
$extension_uuid = $row["extension_uuid"];
|
||||
$call_block_name = $row["call_block_name"];
|
||||
@@ -261,6 +277,9 @@
|
||||
unset($sql, $parameters, $row);
|
||||
}
|
||||
|
||||
//set the defaults
|
||||
if (empty($call_block_enabled)) { $call_block_enabled = 'true'; }
|
||||
|
||||
//get the extensions
|
||||
if (permission_exists('call_block_all') || permission_exists('call_block_extension')) {
|
||||
$sql = "select extension_uuid, extension, number_alias, user_context, description from v_extensions ";
|
||||
@@ -356,7 +375,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='call_block_direction'>\n";
|
||||
echo " <option value='inbound'>".$text['label-inbound']."</option>\n";
|
||||
echo " <option value='outbound' ".($call_block_direction == "outbound" ? "selected" : null).">".$text['label-outbound']."</option>\n";
|
||||
echo " <option value='outbound' ".(!empty($call_block_direction) && $call_block_direction == "outbound" ? "selected" : null).">".$text['label-outbound']."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-direction']."\n";
|
||||
@@ -372,9 +391,9 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='extension_uuid'>\n";
|
||||
echo " <option value=''>".$text['label-all']."</option>\n";
|
||||
if (is_array($extensions) && sizeof($extensions) != 0) {
|
||||
if (!empty($extensions)) {
|
||||
foreach ($extensions as $row) {
|
||||
$selected = $extension_uuid == $row['extension_uuid'] ? "selected='selected'" : null;
|
||||
$selected = !empty($extension_uuid) && $extension_uuid == $row['extension_uuid'] ? "selected='selected'" : null;
|
||||
echo " <option value='".urlencode($row["extension_uuid"])."' ".$selected.">".escape($row['extension'])." ".escape($row['description'])."</option>\n";
|
||||
}
|
||||
}
|
||||
@@ -440,7 +459,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo " <option value='hold'>".$text['label-hold']."</option>\n";
|
||||
}
|
||||
if (permission_exists('call_block_extension')) {
|
||||
if (is_array($extensions) && sizeof($extensions) != 0) {
|
||||
if (!empty($extensions)) {
|
||||
echo " <optgroup label='".$text['label-extension']."'>\n";
|
||||
foreach ($extensions as &$row) {
|
||||
$selected = ($call_block_app == 'extension' && $call_block_data == $row['extension']) ? "selected='selected'" : null;
|
||||
@@ -450,7 +469,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
}
|
||||
}
|
||||
if (permission_exists('call_block_ivr')) {
|
||||
if (is_array($ivrs) && sizeof($ivrs) != 0) {
|
||||
if (!empty($ivrs)) {
|
||||
echo " <optgroup label='".$text['label-ivr_menus']."'>\n";
|
||||
foreach ($ivrs as &$row) {
|
||||
$selected = ($call_block_app == 'ivr' && $call_block_data == $row['ivr_menu_extension']) ? "selected='selected'" : null;
|
||||
@@ -460,7 +479,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
}
|
||||
}
|
||||
if (permission_exists('call_block_ring_group')) {
|
||||
if (is_array($ring_groups) && sizeof($ring_groups) != 0) {
|
||||
if (!empty($ring_groups)) {
|
||||
echo " <optgroup label='".$text['label-ring_groups']."'>\n";
|
||||
foreach ($ring_groups as &$row) {
|
||||
$selected = ($call_block_app == 'ring_group' && $call_block_data == $row['ring_group_extension']) ? "selected='selected'" : null;
|
||||
@@ -470,7 +489,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
}
|
||||
}
|
||||
if (permission_exists('call_block_voicemail')) {
|
||||
if (is_array($voicemails) && sizeof($voicemails) != 0) {
|
||||
if (!empty($voicemails)) {
|
||||
echo " <optgroup label='".$text['label-voicemail']."'>\n";
|
||||
foreach ($voicemails as &$row) {
|
||||
$selected = ($call_block_app == 'voicemail' && $call_block_data == $row['voicemail_id']) ? "selected='selected'" : null;
|
||||
@@ -493,10 +512,18 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo " ".$text['label-enabled']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='call_block_enabled'>\n";
|
||||
echo " <option value='true' ".(($call_block_enabled == "true") ? "selected" : null).">".$text['label-true']."</option>\n";
|
||||
echo " <option value='false' ".(($call_block_enabled == "false") ? "selected" : null).">".$text['label-false']."</option>\n";
|
||||
echo " </select>\n";
|
||||
if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') {
|
||||
echo " <label class='switch'>\n";
|
||||
echo " <input type='checkbox' id='call_block_enabled' name='call_block_enabled' value='true' ".($call_block_enabled == 'true' ? "checked='checked'" : null).">\n";
|
||||
echo " <span class='slider'></span>\n";
|
||||
echo " </label>\n";
|
||||
}
|
||||
else {
|
||||
echo " <select class='formfld' id='call_block_enabled' name='call_block_enabled'>\n";
|
||||
echo " <option value='true' ".($call_block_enabled == 'true' ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " <option value='false' ".($call_block_enabled == 'false' ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
|
||||
echo " </select>\n";
|
||||
}
|
||||
echo "<br />\n";
|
||||
echo $text['description-enable']."\n";
|
||||
echo "\n";
|
||||
@@ -525,21 +552,21 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo "</form>";
|
||||
|
||||
//get recent calls from the db (if not editing an existing call block record)
|
||||
if (!is_uuid($_REQUEST["id"])) {
|
||||
if (empty($_REQUEST["id"])) {
|
||||
|
||||
//without block all permission, limit to assigned extension(s)
|
||||
if (!permission_exists('call_block_all') && is_array($_SESSION['user']['extension'])) {
|
||||
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension'])) {
|
||||
foreach ($_SESSION['user']['extension'] as $assigned_extension) {
|
||||
$assigned_extensions[$assigned_extension['extension_uuid']] = $assigned_extension['user'];
|
||||
}
|
||||
if (is_array($assigned_extensions) && sizeof($assigned_extensions) != 0) {
|
||||
if (!empty($assigned_extensions)) {
|
||||
$x = 0;
|
||||
foreach ($assigned_extensions as $assigned_extension_uuid => $assigned_extension) {
|
||||
$sql_where_array[] = "extension_uuid = :extension_uuid_".$x;
|
||||
$parameters['extension_uuid_'.$x] = $assigned_extension_uuid;
|
||||
$x++;
|
||||
}
|
||||
if (is_array($sql_where_array) && sizeof($sql_where_array) != 0) {
|
||||
if (!empty($sql_where_array)) {
|
||||
$sql_where .= "and (".implode(' or ', $sql_where_array).") ";
|
||||
}
|
||||
unset($sql_where_array);
|
||||
@@ -550,7 +577,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
$sql = "select caller_id_name, caller_id_number, caller_destination, start_epoch, direction, hangup_cause, duration, billsec, xml_cdr_uuid ";
|
||||
$sql .= "from v_xml_cdr where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and direction <> 'local' ";
|
||||
$sql .= $sql_where;
|
||||
$sql .= $sql_where ?? null;
|
||||
$sql .= "order by start_stamp desc ";
|
||||
$sql .= limit_offset($_SESSION['call_block']['recent_call_limit']['text']);
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
@@ -578,9 +605,9 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo "<select class='formfld' style='".$select_margin."' name='extension_uuid'>\n";
|
||||
echo " <option value='' disabled='disabled'>".$text['label-extension']."</option>\n";
|
||||
echo " <option value='' selected='selected'>".$text['label-all']."</option>\n";
|
||||
if (is_array($extensions) && sizeof($extensions) != 0) {
|
||||
if (!empty($extensions)) {
|
||||
foreach ($extensions as $row) {
|
||||
$selected = $extension_uuid == $row['extension_uuid'] ? "selected='selected'" : null;
|
||||
$selected = !empty($extension_uuid) && $extension_uuid == $row['extension_uuid'] ? "selected='selected'" : null;
|
||||
echo " <option value='".urlencode($row["extension_uuid"])."' ".$selected.">".escape($row['extension'])." ".escape($row['description'])."</option>\n";
|
||||
}
|
||||
}
|
||||
@@ -602,7 +629,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo "<table class='list' id='list_".$direction."' ".($direction == 'outbound' ? "style='display: none;'" : null).">\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all_".$direction."' name='checkbox_all' onclick=\"list_all_toggle('".$direction."');\" ".($result ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all_".$direction."' name='checkbox_all' onclick=\"list_all_toggle('".$direction."');\" ".(empty($result) ? "style='visibility: hidden;'" : null).">\n";
|
||||
echo " </th>\n";
|
||||
echo "<th style='width: 1%;'> </th>\n";
|
||||
echo th_order_by('caller_id_name', $text['label-name'], $order_by, $order);
|
||||
@@ -612,19 +639,19 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo th_order_by('duration', $text['label-duration'], $order_by, $order, null, "class='right hide-sm-dn'");
|
||||
echo "</tr>";
|
||||
|
||||
if (is_array($result) && @sizeof($result) != 0) {
|
||||
if (!empty($result)) {
|
||||
foreach ($result as $x => $row) {
|
||||
if ($row['direction'] == $direction) {
|
||||
$list_row_onclick_uncheck = "if (!this.checked) { document.getElementById('checkbox_all_".$direction."').checked = false; }";
|
||||
$list_row_onclick_toggle = "onclick=\"document.getElementById('checkbox_".$x."').checked = document.getElementById('checkbox_".$x."').checked ? false : true; ".$list_row_onclick_uncheck."\"";
|
||||
if (strlen($row['caller_id_number']) >= 7) {
|
||||
if ($_SESSION['domain']['time_format']['text'] == '24h') {
|
||||
if (!empty($_SESSION['domain']['time_format']['text']) && $_SESSION['domain']['time_format']['text'] == '24h') {
|
||||
$tmp_start_epoch = date('j M Y', $row['start_epoch'])." <span class='hide-sm-dn'>".date('H:i:s', $row['start_epoch']).'</span>';
|
||||
}
|
||||
else {
|
||||
$tmp_start_epoch = date('j M Y', $row['start_epoch'])." <span class='hide-sm-dn'>".date('h:i:s a', $row['start_epoch']).'</span>';
|
||||
}
|
||||
echo "<tr class='list-row row_".$row['direction']."' href='".$list_row_url."'>\n";
|
||||
echo "<tr class='list-row row_".$row['direction']."' href=''>\n";
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' class='checkbox_".$row['direction']."' name='xml_cdrs[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"".$list_row_onclick_uncheck."\">\n";
|
||||
echo " <input type='hidden' name='xml_cdrs[$x][uuid]' value='".escape($row['xml_cdr_uuid'])."' />\n";
|
||||
@@ -635,6 +662,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_outbound_failed.png") &&
|
||||
file_exists($_SERVER["DOCUMENT_ROOT"]."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_outbound_answered.png")
|
||||
) {
|
||||
$title_mod = null;
|
||||
echo " <td class='center' ".$list_row_onclick_toggle.">";
|
||||
switch ($row['direction']) {
|
||||
case "inbound":
|
||||
@@ -692,7 +720,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
||||
echo " document.getElementById('list_' + direction_other).style.display='none';\n";
|
||||
|
||||
echo " //uncheck all checkboxes\n";
|
||||
echo " var checkboxes = document.querySelectorAll(\"input[type='checkbox']\")\n";
|
||||
echo " var checkboxes = document.querySelectorAll(\"input[type='checkbox']:not(#call_block_enabled)\")\n";
|
||||
echo " if (checkboxes.length > 0) {\n";
|
||||
echo " for (var i = 0; i < checkboxes.length; ++i) {\n";
|
||||
echo " checkboxes[i].checked = false;\n";
|
||||
|
||||
@@ -45,16 +45,6 @@ if (!class_exists('call_block')) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
@@ -78,7 +68,7 @@ if (!class_exists('call_block')) {
|
||||
|
||||
//filter out unchecked, build where clause for below
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -154,7 +144,7 @@ if (!class_exists('call_block')) {
|
||||
|
||||
//get current toggle state
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -230,7 +220,7 @@ if (!class_exists('call_block')) {
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -301,7 +291,7 @@ if (!class_exists('call_block')) {
|
||||
|
||||
//filter checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -311,7 +301,7 @@ if (!class_exists('call_block')) {
|
||||
$sql = "select caller_id_name, caller_id_number, caller_destination from v_xml_cdr ";
|
||||
$sql .= "where xml_cdr_uuid in (".implode(', ', $uuids).") ";
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
$rows = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
@@ -329,11 +319,17 @@ if (!class_exists('call_block')) {
|
||||
}
|
||||
if ($this->call_block_direction == 'inbound') {
|
||||
//remove e.164 and country code
|
||||
$call_block_number = str_replace("+".trim($_SESSION['domain']['country_code']['numeric']), "", trim($row["caller_id_number"]));
|
||||
|
||||
if (trim($row["caller_id_number"])[0] == "+") {
|
||||
//format e.164
|
||||
$call_block_number = str_replace("+".trim($_SESSION['domain']['country_code']['numeric']), "", trim($row["caller_id_number"]));
|
||||
}
|
||||
else {
|
||||
//remove the country code if its the first in the string
|
||||
$call_block_number = ltrim(trim($row["caller_id_number"]), $_SESSION['domain']['country_code']['numeric'] ?? '');
|
||||
}
|
||||
//build the array
|
||||
$array['call_block'][$x]['call_block_country_code'] = trim($_SESSION['domain']['country_code']['numeric']);
|
||||
$array['call_block'][$x]['call_block_name'] = trim($row["caller_id_name"]);
|
||||
$array['call_block'][$x]['call_block_country_code'] = trim($_SESSION['domain']['country_code']['numeric'] ?? '');
|
||||
$array['call_block'][$x]['call_block_name'] = '';
|
||||
$array['call_block'][$x]['call_block_number'] = $call_block_number;
|
||||
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
|
||||
}
|
||||
@@ -360,7 +356,7 @@ if (!class_exists('call_block')) {
|
||||
$call_block_number = str_replace("+".trim($_SESSION['domain']['country_code']['numeric']), "", trim($row["caller_id_number"]));
|
||||
|
||||
//build the array
|
||||
$array['call_block'][$x]['call_block_name'] = trim($row["caller_id_name"]);
|
||||
$array['call_block'][$x]['call_block_name'] = '';
|
||||
$array['call_block'][$x]['call_block_number'] = $call_block_number;
|
||||
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -5,7 +5,7 @@
|
||||
$apps[$x]['uuid'] = "efc11f6b-ed73-9955-4d4d-3a1bed75a056";
|
||||
$apps[$x]['category'] = "Switch";;
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['version'] = "1.1";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "Schedule to immediately make multiple calls to the extension, an IVR Menu, Conference Room, or any other number.";
|
||||
@@ -44,10 +44,24 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_delete";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_send";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_start_time";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_accountcode";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_timeout";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
@@ -64,7 +78,7 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_phone_number_list";
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_phone_numbers";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
@@ -72,18 +86,7 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "broadcast_toll_allow";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_delete";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_send";
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_toll_allow";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
|
||||
@@ -191,4 +194,27 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
?>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,29 +3,35 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "اتصل بالإذاعة";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Rundrufe";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Rundrufe";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Rundrufe";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Llamada Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Téléphone";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Campagne d'Appels";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "שידור שיחה";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Chiamate Multiple";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Omroep";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Rozsyłanie rozmów";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Chamada em broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Chamada em Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Apel Broadcast";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Массовые вызовы";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Samtalsdistribution";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Трансляція дзвінка";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "电话广播";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コールブロードキャスト";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "통화 브로드캐스트";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "50153bbf-78c5-b49e-7bd9-4b3e4b1134e6";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_broadcast/call_broadcast.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_broadcast/call_broadcast.php";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2020
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,15 +42,22 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$search = $_GET["search"] ?? '';
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_broadcasts'])) {
|
||||
if (!empty($_POST['call_broadcasts'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_broadcasts = $_POST['call_broadcasts'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_broadcasts) && @sizeof($call_broadcasts) != 0) {
|
||||
if (!empty($action) && is_array($call_broadcasts)) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_broadcast_add')) {
|
||||
@@ -72,53 +78,75 @@
|
||||
}
|
||||
|
||||
//get the http get variables and set them to php variables
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$sql_search = " (";
|
||||
$sql_search .= " lower(broadcast_name) like :search ";
|
||||
$sql_search .= " or lower(broadcast_description) like :search ";
|
||||
$sql_search .= " or lower(broadcast_caller_id_name) like :search ";
|
||||
$sql_search .= " or lower(broadcast_caller_id_number) like :search ";
|
||||
$sql_search .= " or lower(broadcast_phone_numbers) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
if (!empty($search)) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
}
|
||||
|
||||
//get the count
|
||||
$sql = "select count(*) from v_call_broadcasts ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] != "all" || !permission_exists('call_broadcast_all')) {
|
||||
if ($show != "all" || !permission_exists('call_broadcast_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(broadcast_name) like :search ";
|
||||
$sql .= " or lower(broadcast_description) like :search ";
|
||||
$sql .= " or lower(broadcast_caller_id_name) like :search ";
|
||||
$sql .= " or lower(broadcast_caller_id_number) like :search ";
|
||||
$sql .= " or lower(broadcast_phone_numbers) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//prepare the paging
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($_GET['show'] == "all" && permission_exists('call_broadcast_all')) {
|
||||
$param = '';
|
||||
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
if (!empty($search)) {
|
||||
$param .= "&search=".urlencode($search);
|
||||
}
|
||||
if ($show == "all" && permission_exists('call_broadcast_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param ?? null, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param ?? null, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the call broadcasts
|
||||
$sql = str_replace('count(*)','*', $sql);
|
||||
$sql .= order_by($order_by, $order);
|
||||
$sql = "select call_broadcast_uuid, domain_uuid, broadcast_name, ";
|
||||
$sql .= "broadcast_description, broadcast_start_time, broadcast_timeout, ";
|
||||
$sql .= "broadcast_concurrent_limit, recording_uuid, broadcast_caller_id_name, ";
|
||||
$sql .= "broadcast_caller_id_number, broadcast_destination_type, broadcast_phone_numbers, ";
|
||||
$sql .= "broadcast_avmd, broadcast_destination_data, broadcast_accountcode, broadcast_toll_allow ";
|
||||
$sql .= "from v_call_broadcasts ";
|
||||
$sql .= "where true ";
|
||||
if ($show != "all" || !permission_exists('call_broadcast_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(broadcast_name) like :search ";
|
||||
$sql .= " or lower(broadcast_description) like :search ";
|
||||
$sql .= " or lower(broadcast_caller_id_name) like :search ";
|
||||
$sql .= " or lower(broadcast_caller_id_number) like :search ";
|
||||
$sql .= " or lower(broadcast_phone_numbers) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$sql .= order_by($order_by, $order, 'broadcast_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$result = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -144,11 +172,11 @@
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_broadcast_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if ($show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type).'&show=all'.($search != '' ? "&search=".urlencode($search) : null)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type ?? '').'&show=all'.(!empty($search) ? "&search=".urlencode($search ?? '') : null)]);
|
||||
}
|
||||
}
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
|
||||
@@ -180,21 +208,22 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($result ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($result) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_broadcast_all')) {
|
||||
if ($show == "all" && permission_exists('call_broadcast_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo th_order_by('broadcast_name', $text['label-name'], $order_by, $order);
|
||||
echo th_order_by('broadcast_concurrent_limit', $text['label-concurrent-limit'], $order_by, $order);
|
||||
echo th_order_by('broadcast_start_time', $text['label-start_time'], $order_by, $order);
|
||||
echo th_order_by('broadcast_description', $text['label-description'], $order_by, $order);
|
||||
if (permission_exists('call_broadcast_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result) && @sizeof($result) != 0) {
|
||||
if (!empty($result)) {
|
||||
$x = 0;
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
@@ -207,8 +236,8 @@
|
||||
echo " <input type='hidden' name='call_broadcasts[$x][uuid]' value='".escape($row['call_broadcast_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_broadcast_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
if ($show == "all" && permission_exists('call_broadcast_all')) {
|
||||
if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
@@ -218,15 +247,21 @@
|
||||
}
|
||||
echo " <td>";
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
echo "<a href='".$list_row_url."'>".escape($row['broadcast_name'])."</a>";
|
||||
echo "<a href='".$list_row_url."'>".escape($row['broadcast_name'] ?? '')."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($row['broadcast_name']);
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['broadcast_concurrent_limit'])."</td>\n";
|
||||
//determine start date and time
|
||||
$broadcast_start_reference = !empty($row['update_date']) ?: !empty($row['insert_date']);
|
||||
if ($row['broadcast_start_time'] && $broadcast_start_reference) {
|
||||
$broadcast_start_time = date('Y-m-d H:i', strtotime($broadcast_start_reference) + $row['broadcast_start_time']);
|
||||
}
|
||||
echo " <td>".escape($broadcast_start_time ?? '')."</td>\n";
|
||||
echo " <td class='description overflow hide-xs'>".escape($row['broadcast_description'])."</td>\n";
|
||||
if (permission_exists('call_broadcast_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -44,13 +43,25 @@
|
||||
$text = $language->get();
|
||||
|
||||
//set the action with add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_broadcast_uuid = $_REQUEST["id"];
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//set the defaults
|
||||
$broadcast_name = '';
|
||||
$broadcast_start_time = '';
|
||||
$broadcast_timeout = '';
|
||||
$broadcast_concurrent_limit = '';
|
||||
$broadcast_caller_id_name = '';
|
||||
$broadcast_caller_id_number = '';
|
||||
$broadcast_accountcode = '';
|
||||
$broadcast_destination_data = '';
|
||||
$broadcast_description = '';
|
||||
$broadcast_toll_allow = '';
|
||||
|
||||
//function to Upload CSV/TXT file
|
||||
function upload_file($sql, $broadcast_phone_numbers) {
|
||||
@@ -69,7 +80,7 @@
|
||||
$separator = $getData[0];
|
||||
$separator .= (isset($getData[1]) && $getData[1] != '')? '|'.$getData[1] : '';
|
||||
$separator .= (isset($getData[2]) && $getData[2] != '')? ','.$getData[2] : '';
|
||||
$separator .= '\n';
|
||||
$separator .= PHP_EOL;
|
||||
$upload_csv .= $separator;
|
||||
}
|
||||
fclose($file);
|
||||
@@ -91,14 +102,14 @@
|
||||
}
|
||||
|
||||
//get the http post variables and set them to php variables
|
||||
if (count($_POST)>0) {
|
||||
if (!empty($_POST)) {
|
||||
$broadcast_name = $_POST["broadcast_name"];
|
||||
$broadcast_start_time = $_POST["broadcast_start_time"];
|
||||
$broadcast_timeout = $_POST["broadcast_timeout"];
|
||||
$broadcast_concurrent_limit = $_POST["broadcast_concurrent_limit"];
|
||||
$broadcast_caller_id_name = $_POST["broadcast_caller_id_name"];
|
||||
$broadcast_caller_id_number = $_POST["broadcast_caller_id_number"];
|
||||
$broadcast_destination_type = $_POST["broadcast_destination_type"];
|
||||
//$broadcast_destination_type = $_POST["broadcast_destination_type"];
|
||||
$broadcast_phone_numbers = $_POST["broadcast_phone_numbers"];
|
||||
$broadcast_avmd = $_POST["broadcast_avmd"];
|
||||
$broadcast_destination_data = $_POST["broadcast_destination_data"];
|
||||
@@ -125,11 +136,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//delete the call broadcast
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
if ($_POST['action'] == 'delete' && is_uuid($call_broadcast_uuid)) {
|
||||
if (!empty($_POST['action']) && $_POST['action'] == 'delete' && is_uuid($call_broadcast_uuid)) {
|
||||
//prepare
|
||||
$call_broadcasts[0]['checked'] = 'true';
|
||||
$call_broadcasts[0]['uuid'] = $call_broadcast_uuid;
|
||||
@@ -156,18 +167,18 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
|
||||
//check for all required data
|
||||
if (strlen($broadcast_name) == 0) { $msg .= "".$text['confirm-name']."<br>\n"; }
|
||||
//if (strlen($broadcast_description) == 0) { $msg .= "Please provide: Description<br>\n"; }
|
||||
//if (strlen($broadcast_timeout) == 0) { $msg .= "Please provide: Timeout<br>\n"; }
|
||||
//if (strlen($broadcast_concurrent_limit) == 0) { $msg .= "Please provide: Concurrent Limit<br>\n"; }
|
||||
//if (strlen($recording_uuid) == 0) { $msg .= "Please provide: Recording<br>\n"; }
|
||||
//if (strlen($broadcast_caller_id_name) == 0) { $msg .= "Please provide: Caller ID Name<br>\n"; }
|
||||
//if (strlen($broadcast_caller_id_number) == 0) { $msg .= "Please provide: Caller ID Number<br>\n"; }
|
||||
//if (strlen($broadcast_destination_type) == 0) { $msg .= "Please provide: Type<br>\n"; }
|
||||
//if (strlen($broadcast_phone_numbers) == 0) { $msg .= "Please provide: Phone Number List<br>\n"; }
|
||||
//if (strlen($broadcast_avmd) == 0) { $msg .= "Please provide: Voicemail Detection<br>\n"; }
|
||||
//if (strlen($broadcast_destination_data) == 0) { $msg .= "Please provide: Destination<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (empty($broadcast_name)) { $msg .= "".$text['confirm-name']."<br>\n"; }
|
||||
//if (empty($broadcast_description)) { $msg .= "Please provide: Description<br>\n"; }
|
||||
//if (empty($broadcast_timeout)) { $msg .= "Please provide: Timeout<br>\n"; }
|
||||
//if (empty($broadcast_concurrent_limit)) { $msg .= "Please provide: Concurrent Limit<br>\n"; }
|
||||
//if (empty($recording_uuid)) { $msg .= "Please provide: Recording<br>\n"; }
|
||||
//if (empty($broadcast_caller_id_name)) { $msg .= "Please provide: Caller ID Name<br>\n"; }
|
||||
//if (empty($broadcast_caller_id_number)) { $msg .= "Please provide: Caller ID Number<br>\n"; }
|
||||
//if (empty($broadcast_destination_type)) { $msg .= "Please provide: Type<br>\n"; }
|
||||
//if (empty($broadcast_phone_numbers)) { $msg .= "Please provide: Phone Number List<br>\n"; }
|
||||
//if (empty($broadcast_avmd)) { $msg .= "Please provide: Voicemail Detection<br>\n"; }
|
||||
//if (empty($broadcast_destination_data)) { $msg .= "Please provide: Destination<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -181,7 +192,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
|
||||
//add or update the database
|
||||
if ($_POST["persistformvar"] != "true") {
|
||||
if (empty($_POST["persistformvar"])) {
|
||||
|
||||
//prep insert
|
||||
if ($action == "add" && permission_exists('call_broadcast_add')) {
|
||||
@@ -209,10 +220,10 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
|
||||
//execute
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
if (!empty($array)) {
|
||||
|
||||
//add file selection and download sample
|
||||
$file_res = upload_file($sql, $broadcast_phone_numbers);
|
||||
$file_res = upload_file($sql ?? '', $broadcast_phone_numbers);
|
||||
if ($file_res['code'] != true) {
|
||||
$_SESSION["message_mood"] = "negative";
|
||||
$_SESSION["message"] = $text['file-error'];
|
||||
@@ -221,21 +232,39 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
$broadcast_phone_numbers = $file_res['sql'];
|
||||
|
||||
//common array items
|
||||
//build the database array
|
||||
$array['call_broadcasts'][0]['domain_uuid'] = $domain_uuid;
|
||||
$array['call_broadcasts'][0]['broadcast_name'] = $broadcast_name;
|
||||
$array['call_broadcasts'][0]['broadcast_start_time'] = $broadcast_start_time;
|
||||
$array['call_broadcasts'][0]['broadcast_timeout'] = strlen($broadcast_timeout) != 0 ? $broadcast_timeout : null;
|
||||
$array['call_broadcasts'][0]['broadcast_concurrent_limit'] = strlen($broadcast_concurrent_limit) != 0 ? $broadcast_concurrent_limit : null;
|
||||
$array['call_broadcasts'][0]['broadcast_caller_id_name'] = $broadcast_caller_id_name;
|
||||
$array['call_broadcasts'][0]['broadcast_caller_id_number'] = $broadcast_caller_id_number;
|
||||
$array['call_broadcasts'][0]['broadcast_destination_type'] = $broadcast_destination_type;
|
||||
$array['call_broadcasts'][0]['broadcast_phone_numbers'] = $broadcast_phone_numbers;
|
||||
$array['call_broadcasts'][0]['broadcast_avmd'] = $broadcast_avmd;
|
||||
$array['call_broadcasts'][0]['broadcast_destination_data'] = $broadcast_destination_data;
|
||||
$array['call_broadcasts'][0]['broadcast_accountcode'] = $broadcast_accountcode;
|
||||
if (permission_exists('call_broadcast_start_time')) {
|
||||
$array['call_broadcasts'][0]['broadcast_start_time'] = strtotime($broadcast_start_time) - strtotime('now') >= 0 ? strtotime($broadcast_start_time) - strtotime('now') : null;
|
||||
}
|
||||
if (permission_exists('call_broadcast_accountcode')) {
|
||||
$array['call_broadcasts'][0]['broadcast_accountcode'] = $broadcast_accountcode;
|
||||
}
|
||||
if (permission_exists('call_broadcast_timeout')) {
|
||||
$array['call_broadcasts'][0]['broadcast_timeout'] = strlen($broadcast_timeout) != 0 ? $broadcast_timeout : null;
|
||||
}
|
||||
if (permission_exists('call_broadcast_concurrent_limit')) {
|
||||
$array['call_broadcasts'][0]['broadcast_concurrent_limit'] = strlen($broadcast_concurrent_limit) != 0 ? $broadcast_concurrent_limit : null;
|
||||
}
|
||||
if (permission_exists("call_broadcast_caller_id")) {
|
||||
$array['call_broadcasts'][0]['broadcast_caller_id_name'] = $broadcast_caller_id_name;
|
||||
$array['call_broadcasts'][0]['broadcast_caller_id_number'] = $broadcast_caller_id_number;
|
||||
}
|
||||
if (permission_exists('call_broadcast_destination_number')) {
|
||||
$array['call_broadcasts'][0]['broadcast_destination_data'] = $broadcast_destination_data;
|
||||
}
|
||||
//$array['call_broadcasts'][0]['broadcast_destination_type'] = $broadcast_destination_type;
|
||||
if (permission_exists('call_broadcast_phone_numbers')) {
|
||||
$array['call_broadcasts'][0]['broadcast_phone_numbers'] = $broadcast_phone_numbers;
|
||||
}
|
||||
if (permission_exists('call_broadcast_voicemail_detection')) { //broadcast_avmd
|
||||
$array['call_broadcasts'][0]['broadcast_avmd'] = $broadcast_avmd;
|
||||
}
|
||||
if (permission_exists('call_broadcast_toll_allow')) {
|
||||
$array['call_broadcasts'][0]['broadcast_toll_allow'] = $broadcast_toll_allow;
|
||||
}
|
||||
$array['call_broadcasts'][0]['broadcast_description'] = $broadcast_description;
|
||||
$array['call_broadcasts'][0]['broadcast_toll_allow'] = $broadcast_toll_allow;
|
||||
|
||||
//execute
|
||||
$database = new database;
|
||||
@@ -254,7 +283,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
|
||||
//pre-populate the form
|
||||
if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && empty($_POST["persistformvar"])) {
|
||||
$call_broadcast_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -263,20 +292,29 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
$parameters['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$broadcast_name = $row["broadcast_name"];
|
||||
$broadcast_start_time = $row["broadcast_start_time"];
|
||||
$broadcast_timeout = $row["broadcast_timeout"];
|
||||
$broadcast_concurrent_limit = $row["broadcast_concurrent_limit"];
|
||||
$broadcast_caller_id_name = $row["broadcast_caller_id_name"];
|
||||
$broadcast_caller_id_number = $row["broadcast_caller_id_number"];
|
||||
$broadcast_destination_type = $row["broadcast_destination_type"];
|
||||
//$broadcast_destination_type = $row["broadcast_destination_type"];
|
||||
$broadcast_phone_numbers = $row["broadcast_phone_numbers"];
|
||||
$broadcast_avmd = $row["broadcast_avmd"];
|
||||
$broadcast_destination_data = $row["broadcast_destination_data"];
|
||||
$broadcast_accountcode = $row["broadcast_accountcode"];
|
||||
$broadcast_description = $row["broadcast_description"];
|
||||
$broadcast_toll_allow = $row["broadcast_toll_allow"];
|
||||
$insert_date = $row["insert_date"];
|
||||
$update_date = $row["update_date"];
|
||||
|
||||
//determine start date and time based on insert or update date and 'start time' delay (in seconds)
|
||||
$broadcast_start_reference = $update_date ?: $insert_date;
|
||||
if ($broadcast_start_time && $broadcast_start_reference) {
|
||||
$broadcast_start_time = date('Y-m-d H:i', strtotime($broadcast_start_reference) + $broadcast_start_time);
|
||||
}
|
||||
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
}
|
||||
@@ -330,15 +368,15 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-start_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_start_time' value=\"".escape($broadcast_start_time)."\">\n";
|
||||
echo "<td class='vtable' align='left' style='position: relative;'>\n";
|
||||
echo " <input class='formfld datetimepicker-future' type='text' id='broadcast_start_time' name='broadcast_start_time' value=\"".escape($broadcast_start_time)."\" data-toggle='datetimepicker' data-target='#broadcast_start_time' onblur=\"$(this).datetimepicker('hide');\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-start_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
if (if_group("superadmin")){
|
||||
if (permission_exists('call_broadcast_accountcode')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-accountcode']."\n";
|
||||
@@ -364,6 +402,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
if (permission_exists('call_broadcast_concurrent_limit')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
@@ -390,7 +429,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//$parameters['domain_uuid'] = $domain_uuid;
|
||||
//$database = new database;
|
||||
//$rows = $database->select($sql, $parameters, 'all');
|
||||
//if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
//if (!empty($rows)) {
|
||||
// foreach ($rows as $row) {
|
||||
// if ($recording_uuid == $row['recording_uuid']) {
|
||||
// echo " <option value='".$row['recording_uuid']."' selected='yes'>".escape($row['recordingname'])."</option>\n";
|
||||
@@ -431,7 +470,8 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
/*
|
||||
|
||||
/*
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Type\n";
|
||||
@@ -457,7 +497,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "transfer (external number): 12081231234 XML default <br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
*/
|
||||
*/
|
||||
|
||||
if (permission_exists('call_broadcast_destination_number')) {
|
||||
echo "<tr>\n";
|
||||
@@ -471,14 +511,14 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
if (permission_exists('call_broadcast_phone_number_list')) {
|
||||
if (permission_exists('call_broadcast_phone_numbers')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-phone']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
|
||||
echo " <textarea class='formfld' style='width: 300px; height: 200px;' type='text' name='broadcast_phone_numbers' placeholder=\"".$text['label-list_example']."\">".str_replace('\n', "\n", $broadcast_phone_numbers)."</textarea>";
|
||||
echo " <textarea class='formfld' style='width: 300px; height: 200px;' type='text' name='broadcast_phone_numbers' placeholder=\"".$text['label-list_example']."\">".str_replace('\n', "\n", $broadcast_phone_numbers ?? '')."</textarea>";
|
||||
echo "<br><br>";
|
||||
echo " <input type='file' name='broadcast_phone_numbers_file' accept='.csv,.txt' style=\"display:inline-block;\"><a href='sample.csv' download><i class='fas fa-cloud-download-alt' style='margin-right: 5px;'></i>".$text['label-sample_file']."</a>";
|
||||
echo "<br /><br />";
|
||||
@@ -494,16 +534,15 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='broadcast_avmd'>\n";
|
||||
echo " <option value='false' ".(($broadcast_avmd == "false") ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
|
||||
echo " <option value='true' ".(($broadcast_avmd == "true") ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " <option value='false'>".$text['option-false']."</option>\n";
|
||||
echo " <option value='true' ".(!empty($broadcast_avmd) && $broadcast_avmd == "true" ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-avmd']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
if (permission_exists('broadcast_toll_allow')) {
|
||||
if (permission_exists('call_broadcast_toll_allow')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-broadcast_toll_allow']."\n";
|
||||
@@ -515,7 +554,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-description']."\n";
|
||||
@@ -537,164 +576,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
echo "</form>";
|
||||
|
||||
/*
|
||||
if ($action == "update") {
|
||||
|
||||
echo "<table width='100%' border='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='50%' nowrap><b>Call Broadcast</b></td>\n";
|
||||
echo "<td width='50%' align='right'> </td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
echo "<form method='get' name='frm' action='call_broadcast_send.php'>\n";
|
||||
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Category\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <select name='user_category' class='formfld'>\n";
|
||||
echo " <option></option>\n";
|
||||
$sql = "";
|
||||
$sql .= "select distinct user_category as user_category from v_users ";
|
||||
//$sql .= "where domain_uuid = :domain_uuid ";
|
||||
//$parameters['domain_uuid'] = $domain_uuid;
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, null, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $row) {
|
||||
if ($user_category == $row['user_category']) {
|
||||
echo " <option value='".escape($row['user_category'])."' selected='yes'>".escape($row['user_category'])."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".escape($row['user_category'])."'>".escape($row['user_category'])."</option>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Group\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <select name='group_name' class='formfld'>\n";
|
||||
echo " <option></option>\n";
|
||||
$sql = "";
|
||||
$sql .= "select * from v_groups ";
|
||||
//$sql .= "where domain_uuid = :domain_uuid ";
|
||||
//$parameters['domain_uuid'] = $domain_uuid;
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, null, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $row) {
|
||||
if ($recording_uuid == $row['group_name']) {
|
||||
echo " <option value='".escape($row['group_name'])."' selected='yes'>".escape($row['group_name'])."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".escape($row['group_name'])."'>".escape($row['group_name'])."</option>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Gateway\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <select name='gateway' class='formfld'>\n";
|
||||
echo " <option></option>\n";
|
||||
$sql = "";
|
||||
$sql .= "select * from v_gateways ";
|
||||
//$sql .= "where domain_uuid = :domain_uuid ";
|
||||
//$parameters['domain_uuid'] = $domain_uuid;
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, null, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $row) {
|
||||
if ($gateway == $row['gateway']) {
|
||||
echo " <option value='".escape($row['gateway'])."' selected='yes'>".escape($row['gateway'])."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".escape($row['gateway'])."'>".escape($row['gateway'])."</option>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
echo " <option value='loopback'>loopback</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
//echo "zzz.<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Phone Type\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select name='phonetype1' class='formfld'>\n";
|
||||
echo " <option></option>\n";
|
||||
echo " <option value='phone1'>phone1</option>\n";
|
||||
echo " <option value='phone2'>phone2</option>\n";
|
||||
echo " <option value='cell'>cell</option>\n";
|
||||
//echo " <option value='zzz'>cell</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Phone Type\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select name='phonetype2' class='formfld'>\n";
|
||||
echo " <option></option>\n";
|
||||
echo " <option value='phone1'>phone1</option>\n";
|
||||
echo " <option value='phone2'>phone2</option>\n";
|
||||
echo " <option value='cell'>cell</option>\n";
|
||||
//echo " <option value='zzz'>cell</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
echo " <input type='hidden' name='call_broadcast_uuid' value='".escape($call_broadcast_uuid)."'>\n";
|
||||
echo " <input type='submit' name='submit' class='btn' value='Send Broadcast'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
|
||||
echo "</table>";
|
||||
echo "</form>";
|
||||
}
|
||||
*/
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//chec permissions
|
||||
@@ -44,7 +43,7 @@
|
||||
$text = $language->get();
|
||||
|
||||
//set the max execution time to 1 hour
|
||||
ini_set(max_execution_time,3600);
|
||||
ini_set('max_execution_time',3600);
|
||||
|
||||
//define the asynchronous command function
|
||||
function cmd_async($cmd) {
|
||||
@@ -65,12 +64,12 @@
|
||||
}
|
||||
|
||||
//get the http get values and set as php variables
|
||||
$group_name = $_GET["group_name"];
|
||||
$call_broadcast_uuid = $_GET["id"];
|
||||
$user_category = $_GET["user_category"];
|
||||
$gateway = $_GET["gateway"];
|
||||
$phonetype1 = $_GET["phonetype1"];
|
||||
$phonetype2 = $_GET["phonetype2"];
|
||||
$group_name = $_GET["group_name"] ?? '';
|
||||
$call_broadcast_uuid = $_GET["id"] ?? '';
|
||||
$user_category = $_GET["user_category"] ?? '';
|
||||
$gateway = $_GET["gateway"] ?? '';
|
||||
$phonetype1 = $_GET["phonetype1"] ?? '';
|
||||
$phonetype2 = $_GET["phonetype2"] ?? '';
|
||||
|
||||
//get the call broadcast details from the database
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
@@ -80,12 +79,12 @@
|
||||
$parameters['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$broadcast_name = $row["broadcast_name"];
|
||||
$broadcast_start_time = $row["broadcast_start_time"];
|
||||
$broadcast_timeout = $row["broadcast_timeout"];
|
||||
$broadcast_concurrent_limit = $row["broadcast_concurrent_limit"];
|
||||
$recordingid = $row["recordingid"];
|
||||
$recordingid = $row["recordingid"] ?? '';
|
||||
$broadcast_caller_id_name = $row["broadcast_caller_id_name"];
|
||||
$broadcast_caller_id_number = $row["broadcast_caller_id_number"];
|
||||
$broadcast_destination_type = $row["broadcast_destination_type"];
|
||||
@@ -94,7 +93,7 @@
|
||||
$broadcast_avmd = $row["broadcast_avmd"];
|
||||
$broadcast_accountcode = $row["broadcast_accountcode"];
|
||||
$broadcast_description = $row["broadcast_description"];
|
||||
//if (strlen($row["broadcast_destination_data"]) == 0) {
|
||||
//if (empty($row["broadcast_destination_data"])) {
|
||||
// $broadcast_destination_application = '';
|
||||
// $broadcast_destination_data = '';
|
||||
//}
|
||||
@@ -107,13 +106,13 @@
|
||||
unset($sql, $parameters, $row);
|
||||
|
||||
//set the defaults
|
||||
if (strlen($broadcast_caller_id_name) == 0) {
|
||||
if (empty($broadcast_caller_id_name)) {
|
||||
$broadcast_caller_id_name = "anonymous";
|
||||
}
|
||||
if (strlen($broadcast_caller_id_number) == 0) {
|
||||
if (empty($broadcast_caller_id_number)) {
|
||||
$broadcast_caller_id_number = "0000000000";
|
||||
}
|
||||
if (strlen($broadcast_accountcode) == 0) {
|
||||
if (empty($broadcast_accountcode)) {
|
||||
$broadcast_accountcode = $_SESSION['domain_name'];;
|
||||
}
|
||||
if (isset($broadcast_start_time) && is_numeric($broadcast_start_time)) {
|
||||
@@ -154,7 +153,7 @@
|
||||
require_once "resources/header.php";
|
||||
|
||||
//send the call broadcast
|
||||
if (strlen($broadcast_phone_numbers) > 0) {
|
||||
if (!empty($broadcast_phone_numbers)) {
|
||||
$broadcast_phone_number_array = explode ("\n", $broadcast_phone_numbers);
|
||||
$count = 1;
|
||||
foreach ($broadcast_phone_number_array as $tmp_value) {
|
||||
@@ -207,7 +206,7 @@
|
||||
//cmd_async($_SESSION['switch']['bin']['dir']."/fs_cli -x \"".$cmd."\";");
|
||||
|
||||
//spread the calls out so that they are scheduled with different times
|
||||
if (strlen($broadcast_concurrent_limit) > 0 && strlen($broadcast_timeout) > 0) {
|
||||
if (strlen($broadcast_concurrent_limit) > 0 && !empty($broadcast_timeout)) {
|
||||
if ($broadcast_concurrent_limit == $count) {
|
||||
$sched_seconds = $sched_seconds + $broadcast_timeout;
|
||||
$count=0;
|
||||
|
||||
@@ -23,8 +23,9 @@
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_broadcast_send')) {
|
||||
//access granted
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* call broadcast class
|
||||
*
|
||||
@@ -33,16 +58,6 @@ if (!class_exists('call_broadcast')) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
@@ -66,7 +81,7 @@ if (!class_exists('call_broadcast')) {
|
||||
|
||||
//build the delete array
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
|
||||
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
@@ -113,7 +128,7 @@ if (!class_exists('call_broadcast')) {
|
||||
|
||||
//get checked records
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,29 +3,35 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Active Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Active Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "مركز الاتصال النشط";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Aktive Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Active Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Aktive Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Centro de Llamada Activo";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Active Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Centre d'Appels Active";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'Appel Actif";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "מרכז קריאה פעיל";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Call Center Attivi";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Actieve Call-Center";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Aktieve Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Aktywność w Call Center ";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Call Center ativos";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Centro de Chamadas Activo";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Centru de apeluri activ";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Активные Колл-центры";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Aktivt Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Центр активного виклику";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "主动呼叫中心";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "アクティブコールセンター";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "활성 콜 센터";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_center_active/call_center_queue.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -44,7 +43,7 @@
|
||||
|
||||
//get the queue_name and set it as a variable
|
||||
$queue_name = $_GET['queue_name'];
|
||||
$name = $_GET['name'];
|
||||
$name = $_GET['name'] ?? null;
|
||||
|
||||
//get a new session array
|
||||
unset($_SESSION['queues']);
|
||||
@@ -114,7 +113,7 @@
|
||||
var url = 'call_center_active_inc.php?queue_name=<?php echo escape($queue_name); ?>&name=<?php echo urlencode(escape($name)); ?>';
|
||||
new loadXmlHttp(url, 'ajax_response');
|
||||
<?php
|
||||
if (strlen($_SESSION["ajax_refresh_rate"]) == 0) { $_SESSION["ajax_refresh_rate"] = "1777"; }
|
||||
if (empty($_SESSION["ajax_refresh_rate"])) { $_SESSION["ajax_refresh_rate"] = "1777"; }
|
||||
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$_SESSION["ajax_refresh_rate"].");";
|
||||
?>
|
||||
}
|
||||
|
||||
@@ -25,9 +25,8 @@
|
||||
James Rose <james.o.rose@gmail.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -47,7 +46,7 @@
|
||||
$queue_uuid = $_GET['queue_name'];
|
||||
|
||||
//get the queues from the database
|
||||
if (!is_array($_SESSION['queues'])) {
|
||||
if (empty($_SESSION['queues']) || !is_array($_SESSION['queues'])) {
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by queue_name asc ";
|
||||
@@ -144,7 +143,7 @@
|
||||
$agent_result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agents from the database
|
||||
if (!is_array($_SESSION['agents'])) {
|
||||
if (empty($_SESSION['agents']) || !is_array($_SESSION['agents'])) {
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by agent_name asc ";
|
||||
@@ -158,8 +157,8 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo "<th>".$text['label-name']."</th>\n";
|
||||
echo "<th>".$text['label-extension']."</th>\n";
|
||||
echo "<th>".$text['label-status']."</th>\n";
|
||||
echo "<th>".$text['label-state']."</th>\n";
|
||||
echo "<th title=\"".$text['description-status']."\">".$text['label-status']."</th>\n";
|
||||
echo "<th title=\"".$text['description-state']."\">".$text['label-state']."</th>\n";
|
||||
echo "<th>".$text['label-status_change']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-missed']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-answered']."</th>\n";
|
||||
@@ -261,7 +260,7 @@
|
||||
}
|
||||
else {
|
||||
//$orig_call="{origination_caller_id_name=c2c-".urlencode(escape($name)).",origination_caller_id_number=".escape($agent_extension)."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26bridge(user/".escape($agent_extension)."@".$_SESSION['domain_name'].")";
|
||||
echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-call'],'onclick'=>"if (confirm('".$text['message-confirm']."')) { send_command('call_center_exec.php?command=bridge&extension=".urlencode($agent_extension)."&caller_id_name=".urlencode($name)."'); } else { this.blur(); return false; }"]);
|
||||
echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-call'],'onclick'=>"if (confirm('".$text['message-confirm']."')) { send_command('call_center_exec.php?command=bridge&extension=".urlencode($agent_extension)."&caller_id_name=".urlencode($name ?? '')."'); } else { this.blur(); return false; }"]);
|
||||
}
|
||||
echo "</td>";
|
||||
}
|
||||
@@ -319,7 +318,7 @@
|
||||
echo "<th>".$text['label-name']."</th>\n";
|
||||
echo "<th>".$text['label-number']."</th>\n";
|
||||
echo "<th>".$text['label-status']."</th>\n";
|
||||
if ((if_group("admin") || if_group("superadmin"))) {
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
echo "<th>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "<th>".$text['label-agent']."</th>\n";
|
||||
@@ -328,7 +327,7 @@
|
||||
if (is_array($result)) {
|
||||
foreach ($result as $row) {
|
||||
$queue = $row['queue'];
|
||||
$system = $row['system'];
|
||||
$system = $row['system'] ?? null;
|
||||
$uuid = $row['uuid'];
|
||||
$session_uuid = $row['session_uuid'];
|
||||
$caller_number = $row['cid_number'];
|
||||
@@ -367,11 +366,12 @@
|
||||
echo "<td>".escape($caller_name)." </td>\n";
|
||||
echo "<td>".escape($caller_number)." </td>\n";
|
||||
echo "<td>".escape($state)."</td>\n";
|
||||
if (if_group("admin") || if_group("superadmin")) {
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
echo "<td>";
|
||||
if ($state != "Abandoned") {
|
||||
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".escape($q_caller_number)."}user/".escape($_SESSION['user']['extension'][0]['user'])."@".escape($_SESSION['domain_name'])." %26eavesdrop(".escape($session_uuid).")";
|
||||
$orig_command = "{origination_caller_id_name=eavesdrop,origination_caller_id_number=".escape($q_caller_number ?? '')."}user/".escape($_SESSION['user']['extension'][0]['user'] ?? '')."@".escape($_SESSION['domain_name'])." %26eavesdrop(".escape($session_uuid).")";
|
||||
echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-eavesdrop'],'onclick'=>"if (confirm('".$text['message-confirm']."')) { send_command('call_center_exec.php?command=eavesdrop&caller_id_number=".urlencode($caller_number)."&uuid=".urlencode($session_uuid)."'); } else { this.blur(); return false; }"]);
|
||||
echo button::create(['type'=>'button','class'=>'link','label'=>$text['label-transfer'],'style'=>'margin-left: 15px;','onclick'=>"if (confirm('".$text['message-confirm']."')) { send_command('call_center_exec.php?command=uuid_pickup&uuid=".urlencode($session_uuid)."'); } else { this.blur(); return false; }"]);
|
||||
}
|
||||
else {
|
||||
echo " ";
|
||||
|
||||
@@ -27,13 +27,12 @@
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
@@ -78,6 +77,9 @@
|
||||
case "uuid_transfer":
|
||||
$switch_command = "uuid_transfer ".$uuid." -bleg ".$_SESSION['user']['extension'][0]['user']." XML ".$_SESSION['domain_name'];
|
||||
break;
|
||||
case "uuid_pickup":
|
||||
$switch_command = "uuid_transfer ".$uuid." ".$_SESSION['user']['extension'][0]['user']." XML ".$_SESSION['domain_name'];
|
||||
break;
|
||||
case "bridge":
|
||||
$switch_command = "originate {origination_caller_id_name=".$caller_id_name.",origination_caller_id_number=".$caller_id_number."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." bridge(user/".$extension."@".$_SESSION['domain_name'].")";
|
||||
break;
|
||||
@@ -130,7 +132,7 @@
|
||||
}
|
||||
|
||||
//fs cmd
|
||||
if (strlen($switch_cmd) > 0) {
|
||||
if (!empty($switch_cmd)) {
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
//ensure the connection exists
|
||||
|
||||
@@ -17,15 +17,14 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,12 +42,12 @@
|
||||
$text = $language->get();
|
||||
|
||||
//get the variables
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? null;
|
||||
$order = $_GET["order"] ?? null;
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$search = strtolower($_GET["search"] ?? '');
|
||||
if (!empty($search)) {
|
||||
$sql_search = " (";
|
||||
$sql_search .= "lower(queue_name) like :search ";
|
||||
$sql_search .= "or lower(queue_description) like :search ";
|
||||
@@ -69,7 +68,7 @@
|
||||
//paging the records
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".$search;
|
||||
$page = is_numeric($_GET['page']) ? $_GET['page'] : 0;
|
||||
$page = !empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 0;
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -144,6 +144,9 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_email_address";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
//default settings
|
||||
$y = 0;
|
||||
@@ -280,6 +283,30 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "agent_record";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_queues";
|
||||
@@ -424,10 +451,39 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_email_address";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_description";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_tiers";
|
||||
@@ -496,5 +552,29 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "tier_position";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2021
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2022
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -35,7 +35,7 @@ if ($domains_processed == 1) {
|
||||
$sql .= "and (t.call_center_queue_uuid is null or t.call_center_agent_uuid is null) ";
|
||||
$database = new database;
|
||||
$tiers = $database->select($sql, null, 'all');
|
||||
if (is_array($tiers) && @sizeof($tiers) != 0) {
|
||||
if (!empty($tiers)) {
|
||||
foreach ($tiers as $index => &$row) {
|
||||
if ($row['call_center_queue_uuid'] == null && $row['queue_uuid'] != null) {
|
||||
$array['call_center_tiers'][$index]['call_center_queue_uuid'] = $row['queue_uuid'];
|
||||
@@ -43,12 +43,12 @@ if ($domains_processed == 1) {
|
||||
if ($row['call_center_agent_uuid'] == null && $row['agent_uuid'] != null) {
|
||||
$array['call_center_tiers'][$index]['call_center_agent_uuid'] = $row['agent_uuid'];
|
||||
}
|
||||
if (is_array($array['call_center_tiers'][$index]) && @sizeof($array['call_center_tiers'][$index]) != 0) {
|
||||
if (!empty($array['call_center_tiers'][$index])) {
|
||||
$array['call_center_tiers'][$index]['call_center_tier_uuid'] = $row['call_center_tier_uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
if (!empty($array)) {
|
||||
$p = new permissions;
|
||||
$p->add('call_center_tier_edit', 'temp');
|
||||
|
||||
@@ -65,19 +65,21 @@ if ($domains_processed == 1) {
|
||||
unset($sql);
|
||||
|
||||
//update all callcenter dialplans to have the @domain in the queue name
|
||||
$sql = "select q.domain_uuid, d.domain_name, q.call_center_queue_uuid, q.dialplan_uuid, ";
|
||||
/*
|
||||
$sql = "select q.domain_uuid, d.domain_name, q.call_center_queue_uuid, q.dialplan_uuid, dp.dialplan_xml, ";
|
||||
$sql .= "q.queue_name, q.queue_extension, q.queue_timeout_action, q.queue_cid_prefix, q.queue_cc_exit_keys, ";
|
||||
$sql .= "q.queue_description, q.queue_time_base_score_sec, q.queue_greeting ";
|
||||
$sql .= "from v_call_center_queues as q, v_domains as d ";
|
||||
$sql .= "from v_call_center_queues as q, v_dialplans as dp, v_domains as d ";
|
||||
$sql .= "where q.domain_uuid = d.domain_uuid ";
|
||||
$sql .= "and (q.dialplan_uuid = dp.dialplan_uuid or q.dialplan_uuid is null) ";
|
||||
$database = new database;
|
||||
$call_center_queues = $database->select($sql, null, 'all');
|
||||
$id = 0;
|
||||
if (is_array($call_center_queues)) {
|
||||
if (!empty($call_center_queues)) {
|
||||
foreach ($call_center_queues as $row) {
|
||||
|
||||
//get the application and data
|
||||
$action_array = explode(":",$row['queue_timeout_action']);
|
||||
$action_array = explode(":",$row['queue_timeout_action'] ?? '');
|
||||
$queue_timeout_app = $action_array[0];
|
||||
unset($action_array[0]);
|
||||
$queue_timeout_data = implode($action_array);
|
||||
@@ -85,7 +87,7 @@ if ($domains_processed == 1) {
|
||||
//add the recording path if needed
|
||||
if ($row['queue_greeting'] != '') {
|
||||
if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
|
||||
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$row['queue_greeting'];
|
||||
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'];
|
||||
}
|
||||
else {
|
||||
$queue_greeting_path = trim($row['queue_greeting']);
|
||||
@@ -93,59 +95,61 @@ if ($domains_processed == 1) {
|
||||
}
|
||||
|
||||
//build the xml dialplan
|
||||
$dialplan_xml = "<extension name=\"".$row["queue_name"]."\" continue=\"\" uuid=\"".$row["dialplan_uuid"]."\">\n";
|
||||
$dialplan_xml = "<extension name=\"".xml::sanitize($row["queue_name"])."\" continue=\"\" uuid=\"".xml::sanitize($row["dialplan_uuid"])."\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^([^#]+#)(.*)\$\" break=\"never\">\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"caller_id_name=\$2\"/>\n";
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".$row["queue_extension"]."$\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^(callcenter\+)?".xml::sanitize($row["queue_extension"])."$\">\n";
|
||||
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
|
||||
if (is_uuid($row['call_center_queue_uuid'])) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_center_queue_uuid=".$row['call_center_queue_uuid']."\"/>\n";
|
||||
if (!empty($row['call_center_queue_uuid']) && is_uuid($row['call_center_queue_uuid'])) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_center_queue_uuid=".xml::sanitize($row['call_center_queue_uuid'])."\"/>\n";
|
||||
}
|
||||
if (is_numeric($queue_extension)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"queue_extension=".$row['queue_extension']."\"/>\n";
|
||||
if (is_numeric($row['queue_extension'])) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"queue_extension=".xml::sanitize($row['queue_extension'])."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_export_vars=call_center_queue_uuid\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_export_vars=\${cc_export_vars},call_center_queue_uuid,sip_h_Alert-Info\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"hangup_after_bridge=true\"/>\n";
|
||||
if ($row['queue_time_base_score_sec'] != '') {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_base_score=".$row['queue_time_base_score_sec']."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_base_score=".xml::sanitize($row['queue_time_base_score_sec'])."\"/>\n";
|
||||
}
|
||||
if ($row['queue_greeting_path'] != '') {
|
||||
$greeting_array = explode(':', $row['queue_greeting_path']);
|
||||
if (!empty($row['queue_greeting'])) {
|
||||
$greeting_array = explode(':', $row['queue_greeting']);
|
||||
if (count($greeting_array) == 1) {
|
||||
$dialplan_xml .= " <action application=\"playback\" data=\"".$row['queue_greeting_path']."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"playback\" data=\"".xml::sanitize($queue_greeting_path)."\"/>\n";
|
||||
}
|
||||
else {
|
||||
if ($greeting_array[0] == 'say' || $greeting_array[0] == 'tone_stream' || $greeting_array[0] == 'phrase') {
|
||||
$dialplan_xml .= " <action application=\"".$greeting_array[0]."\" data=\"".$greeting_array[1]."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"".xml::sanitize($greeting_array[0])."\" data=\"".xml::sanitize($greeting_array[1])."\"/>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (strlen($row['queue_cid_prefix']) > 0) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"effective_caller_id_name=".$row['queue_cid_prefix']."#\${caller_id_name}\"/>\n";
|
||||
if (!empty($row['queue_cid_prefix'])) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"effective_caller_id_name=".xml::sanitize($row['queue_cid_prefix'])."#\${caller_id_name}\"/>\n";
|
||||
}
|
||||
if (strlen($row['queue_cc_exit_keys']) > 0) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".$row['queue_cc_exit_keys']."\"/>\n";
|
||||
if (!empty($row['queue_cc_exit_keys'])) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".xml::sanitize($row['queue_cc_exit_keys'])."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"callcenter\" data=\"".$row['queue_extension']."@".$row['domain_name']."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"callcenter\" data=\"".xml::sanitize($row['queue_extension'])."@".xml::sanitize($row['domain_name'])."\"/>\n";
|
||||
//if ($destination->valid($queue_timeout_app.':'.$queue_timeout_data)) {
|
||||
$dialplan_xml .= " <action application=\"".$queue_timeout_app."\" data=\"".$queue_timeout_data."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"".xml::sanitize($queue_timeout_app)."\" data=\"".xml::sanitize($queue_timeout_data)."\"/>\n";
|
||||
//}
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= "</extension>\n";
|
||||
$dialplan_xml .= "</extension>";
|
||||
|
||||
//build the dialplan array
|
||||
$array['dialplans'][$id]["domain_uuid"] = $row["domain_uuid"];
|
||||
$array['dialplans'][$id]["dialplan_uuid"] = $row["dialplan_uuid"];
|
||||
$array['dialplans'][$id]["dialplan_name"] = $row["queue_name"];
|
||||
$array['dialplans'][$id]["dialplan_number"] = $row["queue_extension"];
|
||||
$array['dialplans'][$id]["dialplan_context"] = $row['domain_name'];
|
||||
$array['dialplans'][$id]["dialplan_continue"] = "false";
|
||||
$array['dialplans'][$id]["dialplan_xml"] = $dialplan_xml;
|
||||
$array['dialplans'][$id]["dialplan_order"] = "230";
|
||||
$array['dialplans'][$id]["dialplan_enabled"] = "true";
|
||||
$array['dialplans'][$id]["dialplan_description"] = $row["queue_description"];
|
||||
$array['dialplans'][$id]["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
|
||||
if (md5($row["dialplan_xml"]) != md5($dialplan_xml)) {
|
||||
$array['dialplans'][$id]["domain_uuid"] = $row["domain_uuid"];
|
||||
$array['dialplans'][$id]["dialplan_uuid"] = $row["dialplan_uuid"];
|
||||
$array['dialplans'][$id]["dialplan_name"] = $row["queue_name"];
|
||||
$array['dialplans'][$id]["dialplan_number"] = $row["queue_extension"];
|
||||
$array['dialplans'][$id]["dialplan_context"] = $row['domain_name'];
|
||||
$array['dialplans'][$id]["dialplan_continue"] = "false";
|
||||
$array['dialplans'][$id]["dialplan_xml"] = $dialplan_xml;
|
||||
$array['dialplans'][$id]["dialplan_order"] = "230";
|
||||
$array['dialplans'][$id]["dialplan_enabled"] = "true";
|
||||
$array['dialplans'][$id]["dialplan_description"] = $row["queue_description"];
|
||||
$array['dialplans'][$id]["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
|
||||
}
|
||||
|
||||
//increment the array id
|
||||
$id++;
|
||||
@@ -154,8 +158,8 @@ if ($domains_processed == 1) {
|
||||
}
|
||||
unset ($prep_statement);
|
||||
|
||||
//save the array to the database
|
||||
if (is_array($array)) {
|
||||
//save the array to the database
|
||||
if (!empty($array)) {
|
||||
//add the dialplan permission
|
||||
$p = new permissions;
|
||||
$p->add("dialplan_add", "temp");
|
||||
@@ -172,6 +176,7 @@ if ($domains_processed == 1) {
|
||||
$p->delete("dialplan_add", "temp");
|
||||
$p->delete("dialplan_edit", "temp");
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
+1658
-1153
File diff suppressed because it is too large
Load Diff
@@ -3,56 +3,67 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Centers";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Centers";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "مراكز الاتصال";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call Centers";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Centro de Llamadas";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Centers";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Centre d' appels";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'appel";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Centers";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato Agenti";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Call-Centers";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Call Center ";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Centro de Chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Centre de apeluri";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Колл-центр";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Кол-центр";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "呼叫中心";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コールセンター";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "콜센터";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "6c072b29-5b6c-49fc-008e-95e24c77de99";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_centers/call_center_queues.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Agent Status";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Agent Status";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "الوكيل";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Agenten Status";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Status";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Agenten Status";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Estado de Agente";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Agente Status";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Agent Status";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "État de l'agent";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "מצב הסוכן";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato dell'agente";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Agent status";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Status agenta";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Estado do agente";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Estado do Agente";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Statutul agentului";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Статус агента";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Agent Status";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Статус оператора";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "代理状态";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "エージェントステータス";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "에이전트 상태";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "597c483a-51a9-f95a-8d54-ea7d87ada2b8";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_centers/call_center_agent_status.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2020
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -43,15 +42,20 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the defaults
|
||||
$agent_id = '';
|
||||
$agent_name = '';
|
||||
$agent_password = '';
|
||||
|
||||
//check for duplicates
|
||||
if ($_GET["check"] == 'duplicate') {
|
||||
if (!empty($_GET["check"]) && $_GET["check"] == 'duplicate') {
|
||||
//agent id
|
||||
if ($_GET["agent_id"] != '') {
|
||||
if (!empty($_GET["agent_id"])) {
|
||||
$sql = "select agent_name ";
|
||||
$sql .= "from v_call_center_agents ";
|
||||
$sql .= "where agent_id = :agent_id ";
|
||||
$sql .= "and domain_uuid = :domain_uuid ";
|
||||
if (is_uuid($_GET["agent_uuid"])) {
|
||||
if (!empty($_GET["agent_uuid"]) && is_uuid($_GET["agent_uuid"])) {
|
||||
$sql .= " and call_center_agent_uuid <> :call_center_agent_uuid ";
|
||||
$parameters['call_center_agent_uuid'] = $_GET["agent_uuid"];
|
||||
}
|
||||
@@ -59,7 +63,7 @@
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0 && $row['agent_name'] != '') {
|
||||
if (!empty($row) && !empty($row['agent_name'])) {
|
||||
echo $text['message-duplicate_agent_id'].(if_group("superadmin") ? ": ".$row["agent_name"] : null);
|
||||
}
|
||||
unset($sql, $parameters);
|
||||
@@ -69,7 +73,7 @@
|
||||
}
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_center_agent_uuid = $_REQUEST["id"];
|
||||
}
|
||||
@@ -78,8 +82,8 @@
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
$call_center_agent_uuid = $_POST["call_center_agent_uuid"];
|
||||
if (!empty($_POST)) {
|
||||
$call_center_agent_uuid = $_POST["call_center_agent_uuid"] ?? null;
|
||||
$user_uuid = $_POST["user_uuid"];
|
||||
$agent_name = $_POST["agent_name"];
|
||||
$agent_type = $_POST["agent_type"];
|
||||
@@ -98,7 +102,7 @@
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
@@ -110,23 +114,18 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
//if (strlen($call_center_agent_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-call_center_agent_uuid']."<br>\n"; }
|
||||
//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
|
||||
//if (strlen($user_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-user_uuid']."<br>\n"; }
|
||||
if (strlen($agent_name) == 0) { $msg .= $text['message-required']." ".$text['label-agent_name']."<br>\n"; }
|
||||
if (strlen($agent_type) == 0) { $msg .= $text['message-required']." ".$text['label-agent_type']."<br>\n"; }
|
||||
if (strlen($agent_call_timeout) == 0) { $msg .= $text['message-required']." ".$text['label-agent_call_timeout']."<br>\n"; }
|
||||
//if (strlen($agent_id) == 0) { $msg .= $text['message-required']." ".$text['label-agent_id']."<br>\n"; }
|
||||
//if (strlen($agent_password) == 0) { $msg .= $text['message-required']." ".$text['label-agent_password']."<br>\n"; }
|
||||
//if (strlen($agent_status) == 0) { $msg .= $text['message-required']." ".$text['label-agent_status']."<br>\n"; }
|
||||
if (strlen($agent_contact) == 0) { $msg .= $text['message-required']." ".$text['label-agent_contact']."<br>\n"; }
|
||||
if (strlen($agent_no_answer_delay_time) == 0) { $msg .= $text['message-required']." ".$text['label-agent_no_answer_delay_time']."<br>\n"; }
|
||||
if (strlen($agent_max_no_answer) == 0) { $msg .= $text['message-required']." ".$text['label-agent_max_no_answer']."<br>\n"; }
|
||||
if (strlen($agent_wrap_up_time) == 0) { $msg .= $text['message-required']." ".$text['label-agent_wrap_up_time']."<br>\n"; }
|
||||
if (strlen($agent_reject_delay_time) == 0) { $msg .= $text['message-required']." ".$text['label-agent_reject_delay_time']."<br>\n"; }
|
||||
if (strlen($agent_busy_delay_time) == 0) { $msg .= $text['message-required']." ".$text['label-agent_busy_delay_time']."<br>\n"; }
|
||||
//if (strlen($agent_logout) == 0) { $msg .= $text['message-required']." ".$text['label-agent_logout']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//if (empty($call_center_agent_uuid)) { $msg .= $text['message-required']." ".$text['label-call_center_agent_uuid']."<br>\n"; }
|
||||
//if (empty($domain_uuid)) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
|
||||
//if (empty($user_uuid)) { $msg .= $text['message-required']." ".$text['label-user_uuid']."<br>\n"; }
|
||||
if (empty($agent_name)) { $msg .= $text['message-required']." ".$text['label-agent_name']."<br>\n"; }
|
||||
if (empty($agent_type)) { $msg .= $text['message-required']." ".$text['label-agent_type']."<br>\n"; }
|
||||
if (empty($agent_call_timeout)) { $msg .= $text['message-required']." ".$text['label-agent_call_timeout']."<br>\n"; }
|
||||
//if (empty($agent_id)) { $msg .= $text['message-required']." ".$text['label-agent_id']."<br>\n"; }
|
||||
//if (empty($agent_password)) { $msg .= $text['message-required']." ".$text['label-agent_password']."<br>\n"; }
|
||||
//if (empty($agent_status)) { $msg .= $text['message-required']." ".$text['label-agent_status']."<br>\n"; }
|
||||
if (empty($agent_contact)) { $msg .= $text['message-required']." ".$text['label-agent_contact']."<br>\n"; }
|
||||
//if (empty($agent_logout)) { $msg .= $text['message-required']." ".$text['label-agent_logout']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -139,8 +138,16 @@
|
||||
return;
|
||||
}
|
||||
|
||||
//set default values
|
||||
if (empty($agent_call_timeout)) { $agent_call_timeout = "20"; }
|
||||
if (empty($agent_max_no_answer)) { $agent_max_no_answer = "0"; }
|
||||
if (empty($agent_wrap_up_time)) { $agent_wrap_up_time = "10"; }
|
||||
if (empty($agent_no_answer_delay_time)) { $agent_no_answer_delay_time = "30"; }
|
||||
if (empty($agent_reject_delay_time)) { $agent_reject_delay_time = "90"; }
|
||||
if (empty($agent_busy_delay_time)) { $agent_busy_delay_time = "90"; }
|
||||
|
||||
//add the call_center_agent_uuid
|
||||
if (strlen($call_center_agent_uuid) == 0) {
|
||||
if (empty($call_center_agent_uuid)) {
|
||||
$call_center_agent_uuid = uuid();
|
||||
}
|
||||
|
||||
@@ -159,6 +166,9 @@
|
||||
$agent_contact = str_replace("@", "/", $agent_contact);
|
||||
}
|
||||
|
||||
//freeswitch expands the contact string, so we need to sanitize it.
|
||||
$agent_contact = str_replace('$', '', $agent_contact);
|
||||
|
||||
//prepare the array
|
||||
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_center_agents'][0]['call_center_agent_uuid'] = $call_center_agent_uuid;
|
||||
@@ -272,13 +282,13 @@
|
||||
header("Location: call_center_agents.php");
|
||||
return;
|
||||
}
|
||||
} //(is_array($_POST) && strlen($_POST["persistformvar"]) == 0)
|
||||
} //(is_array($_POST) && empty($_POST["persistformvar"]))
|
||||
|
||||
//initialize the destinations object
|
||||
$destination = new destinations;
|
||||
|
||||
//pre-populate the form
|
||||
if (is_uuid($_GET["id"]) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET["id"]) && is_uuid($_GET["id"]) && empty($_POST["persistformvar"])) {
|
||||
$call_center_agent_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -287,7 +297,7 @@
|
||||
$parameters['call_center_agent_uuid'] = $call_center_agent_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$call_center_agent_uuid = $row["call_center_agent_uuid"];
|
||||
$user_uuid = $row["user_uuid"];
|
||||
$agent_name = $row["agent_name"];
|
||||
@@ -309,13 +319,13 @@
|
||||
}
|
||||
|
||||
//set default values
|
||||
if (strlen($agent_type) == 0) { $agent_type = "callback"; }
|
||||
if (strlen($agent_call_timeout) == 0) { $agent_call_timeout = "20"; }
|
||||
if (strlen($agent_max_no_answer) == 0) { $agent_max_no_answer = "0"; }
|
||||
if (strlen($agent_wrap_up_time) == 0) { $agent_wrap_up_time = "10"; }
|
||||
if (strlen($agent_no_answer_delay_time) == 0) { $agent_no_answer_delay_time = "30"; }
|
||||
if (strlen($agent_reject_delay_time) == 0) { $agent_reject_delay_time = "90"; }
|
||||
if (strlen($agent_busy_delay_time) == 0) { $agent_busy_delay_time = "90"; }
|
||||
if (empty($agent_type)) { $agent_type = "callback"; }
|
||||
if (empty($agent_call_timeout)) { $agent_call_timeout = "20"; }
|
||||
if (empty($agent_max_no_answer)) { $agent_max_no_answer = "0"; }
|
||||
if (empty($agent_wrap_up_time)) { $agent_wrap_up_time = "10"; }
|
||||
if (empty($agent_no_answer_delay_time)) { $agent_no_answer_delay_time = "30"; }
|
||||
if (empty($agent_reject_delay_time)) { $agent_reject_delay_time = "90"; }
|
||||
if (empty($agent_busy_delay_time)) { $agent_busy_delay_time = "90"; }
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
@@ -346,7 +356,7 @@
|
||||
function check_duplicates() {
|
||||
//check agent id
|
||||
var agent_id = document.getElementById('agent_id').value;
|
||||
$("#duplicate_agent_id_response").load("call_center_agent_edit.php?check=duplicate&agent_id="+agent_id+"&agent_uuid=<?php echo escape($call_center_agent_uuid); ?>", function() {
|
||||
$("#duplicate_agent_id_response").load("call_center_agent_edit.php?check=duplicate&agent_id="+agent_id+"&agent_uuid=<?php echo escape($call_center_agent_uuid ?? ''); ?>", function() {
|
||||
var duplicate_agent_id = false;
|
||||
if ($("#duplicate_agent_id_response").html() != '') {
|
||||
$('#agent_id').addClass('formfld_highlight_bad');
|
||||
@@ -440,18 +450,13 @@
|
||||
echo " <td class='vtable' align='left'>";
|
||||
echo " <select name=\"user_uuid\" class='formfld' style='width: auto;'>\n";
|
||||
echo " <option value=\"\"></option>\n";
|
||||
foreach($users as $field) {
|
||||
if ($user_uuid == $field['user_uuid']) {
|
||||
echo " <option value='".escape($field['user_uuid'])."' selected='selected'>".escape($field['username'])."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".escape($field['user_uuid'])."' $selected>".escape($field['username'])."</option>\n";
|
||||
}
|
||||
foreach ($users as $field) {
|
||||
echo " <option value='".escape($field['user_uuid'])."' ".(!empty($user_uuid) && $user_uuid == $field['user_uuid'] ? "selected='selected'" : null).">".escape($field['username'])."</option>\n";
|
||||
}
|
||||
echo " </select>";
|
||||
unset($users);
|
||||
echo " <br>\n";
|
||||
echo " ".$text['description-users']."\n";
|
||||
echo " ".!empty($text['description-users'])."\n";
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
|
||||
@@ -483,7 +488,7 @@
|
||||
echo " ".$text['label-contact']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo $destination->select('user_contact', 'agent_contact', $agent_contact);
|
||||
echo $destination->select('user_contact', 'agent_contact', ($agent_contact ?? null));
|
||||
echo "<br />\n";
|
||||
echo $text['description-contact']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -495,31 +500,11 @@
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='agent_status'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($agent_status == "Logged Out") {
|
||||
echo " <option value='Logged Out' SELECTED >".$text['option-logged_out']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='Logged Out'>".$text['option-logged_out']."</option>\n";
|
||||
}
|
||||
if ($agent_status == "Available") {
|
||||
echo " <option value='Available' SELECTED >".$text['option-available']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='Available'>".$text['option-available']."</option>\n";
|
||||
}
|
||||
if ($agent_status == "Available (On Demand)") {
|
||||
echo " <option value='Available (On Demand)' SELECTED >".$text['option-available_on_demand']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='Available (On Demand)'>".$text['option-available_on_demand']."</option>\n";
|
||||
}
|
||||
if ($agent_status == "On Break") {
|
||||
echo " <option value='On Break' SELECTED >".$text['option-on_break']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='On Break'>".$text['option-on_break']."</option>\n";
|
||||
}
|
||||
echo " <option value=''></option>\n";
|
||||
echo " <option value='Logged Out' ".(!empty($agent_status) && $agent_status == "Logged Out" ? "selected='selected'" : null).">".$text['option-logged_out']."</option>\n";
|
||||
echo " <option value='Available' ".(!empty($agent_status) && $agent_status == "Available" ? "selected='selected'" : null).">".$text['option-available']."</option>\n";
|
||||
echo " <option value='Available (On Demand)' ".(!empty($agent_status) && $agent_status == "Available (On Demand)" ? "selected='selected'" : null).">".$text['option-available_on_demand']."</option>\n";
|
||||
echo " <option value='On Break' ".(!empty($agent_status) && $agent_status == "On Break" ? "selected='selected'" : null).">".$text['option-on_break']."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-status']."\n";
|
||||
@@ -587,8 +572,8 @@
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='agent_record'>\n";
|
||||
echo " <option value='true' ".($agent_record == "true" ? "selected='selected'" : '')." >".$text['option-true']."</option>\n";
|
||||
echo " <option value='false' ".($agent_record != "true" ? "selected='selected'" : '').">".$text['option-false']."</option>\n";
|
||||
echo " <option value='true'>".$text['option-true']."</option>\n";
|
||||
echo " <option value='false' ".(!empty($agent_record) && $agent_record != "true" ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-record_template']."\n";
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -49,7 +48,7 @@
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$tiers = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($tiers) && count($tiers) == 0) {
|
||||
if (empty($tiers)) {
|
||||
$per_queue_login = true;
|
||||
}
|
||||
else {
|
||||
@@ -94,7 +93,7 @@
|
||||
|
||||
//add the status to the call_center_queues array
|
||||
$x = 0;
|
||||
if (is_array($call_center_queues)) {
|
||||
if (!empty($call_center_queues)) {
|
||||
foreach ($call_center_queues as $queue) {
|
||||
//set the queue id
|
||||
$queue_id = $queue['queue_extension'].'@'.$queue['domain_name'];
|
||||
@@ -110,7 +109,7 @@
|
||||
|
||||
//get the agent status from mod_callcenter and update the agent status in the agents array
|
||||
$x = 0;
|
||||
if (is_array($agents)) {
|
||||
if (!empty($agents)) {
|
||||
foreach ($agents as $row) {
|
||||
//add the domain name
|
||||
$domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
@@ -118,14 +117,14 @@
|
||||
|
||||
//update the queue status
|
||||
$i = 0;
|
||||
if (is_array($call_center_queues)) {
|
||||
if (!empty($call_center_queues)) {
|
||||
foreach ($call_center_queues as $queue) {
|
||||
$agents[$x]['queues'][$i]['agent_name'] = $row['agent_name'];
|
||||
$agents[$x]['queues'][$i]['queue_name'] = $queue['queue_name'];
|
||||
$agents[$x]['queues'][$i]['call_center_agent_uuid'] = $row['call_center_agent_uuid'];
|
||||
$agents[$x]['queues'][$i]['call_center_queue_uuid'] = $queue['call_center_queue_uuid'];
|
||||
$agents[$x]['queues'][$i]['queue_status'] = 'Logged Out';
|
||||
if (is_array($queue['queue_list'])) {
|
||||
if (!empty($queue['queue_list'])) {
|
||||
foreach ($queue['queue_list'] as $queue_list) {
|
||||
if ($row['call_center_agent_uuid'] == $queue_list['name']) {
|
||||
$agents[$x]['queues'][$i]['queue_status'] = 'Available';
|
||||
@@ -137,7 +136,7 @@
|
||||
}
|
||||
|
||||
//update the agent status
|
||||
if (is_array($agent_list)) {
|
||||
if (!empty($agent_list)) {
|
||||
foreach ($agent_list as $r) {
|
||||
if ($r['name'] == $row['call_center_agent_uuid']) {
|
||||
$agents[$x]['agent_status'] = $r['status'];
|
||||
@@ -151,7 +150,7 @@
|
||||
}
|
||||
|
||||
//remove rows from the http post array where the status has not changed
|
||||
if (is_array($_POST['agents']) && !$per_queue_login) {
|
||||
if (!empty($_POST['agents']) && !$per_queue_login) {
|
||||
foreach($_POST['agents'] as $key => $row) {
|
||||
foreach($agents as $k => $field) {
|
||||
if ($field['agent_name'] === $row['agent_name'] && $field['agent_status'] === $row['agent_status']) {
|
||||
@@ -162,14 +161,14 @@
|
||||
}
|
||||
|
||||
//use the http post array to change the status
|
||||
if (is_array($_POST['agents'])) {
|
||||
if (!empty($_POST['agents'])) {
|
||||
foreach($_POST['agents'] as $row) {
|
||||
if (isset($row['agent_status'])) {
|
||||
if (!empty($row['agent_status'])) {
|
||||
//agent set status
|
||||
if ($fp) {
|
||||
//set the user_status
|
||||
if (!isset($row['queue_name'])) {
|
||||
$array['users'][0]['user_uuid'] = $row['user_uuid'];
|
||||
$array['users'][0]['user_uuid'] = $row['user_uuid'] ?? null;
|
||||
$array['users'][0]['user_status'] = $row['agent_status'];
|
||||
$array['users'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
|
||||
@@ -225,7 +224,7 @@
|
||||
|
||||
//get the queue_id
|
||||
if (isset($row['queue_uuid']) && is_uuid($row['queue_uuid'])) {
|
||||
if (is_array($call_center_queues)) {
|
||||
if (!empty($call_center_queues)) {
|
||||
foreach ($call_center_queues as $queue) {
|
||||
if ($queue['call_center_queue_uuid'] == $row['queue_uuid']) {
|
||||
$queue_id = $queue['queue_extension'].'@'.$queue['domain_name'];
|
||||
@@ -288,11 +287,15 @@
|
||||
} //foreach
|
||||
|
||||
//send a message
|
||||
message::add($text['confirm-add']);
|
||||
message::add($text['message-status_set']);
|
||||
header("Location: call_center_agent_status.php");
|
||||
return;
|
||||
} //post
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//includes the header
|
||||
$document['title'] = $text['title-call_center_agent_status'];
|
||||
require_once "resources/header.php";
|
||||
@@ -329,7 +332,7 @@
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
if (is_array($_POST['agents']) && !$per_queue_login) {
|
||||
if (!empty($_POST['agents']) && !$per_queue_login) {
|
||||
echo $text['description-call_center_agent_status']."\n";
|
||||
echo "<br /><br />\n";
|
||||
}
|
||||
@@ -348,7 +351,7 @@
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($agents) && @sizeof($agents) != 0) {
|
||||
if (!empty($agents)) {
|
||||
$x = 0;
|
||||
foreach ($agents as $row) {
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
@@ -369,14 +372,14 @@
|
||||
|
||||
if ($per_queue_login) {
|
||||
$html .= " <td class='description'>";
|
||||
if (is_array($row['queues'])) {
|
||||
if (!empty($row['queues'])) {
|
||||
$html .= " <table class='list' >\n";
|
||||
$html .= " <tr>\n";
|
||||
$html .= " <th>".$text['label-queue']."</th>\n";
|
||||
$html .= " <th>".$text['label-status']."</th>\n";
|
||||
$html .= " <th>".$text['label-options']."</th>\n";
|
||||
$html .= " </tr>\n";
|
||||
if (is_array($row['queues'])) {
|
||||
if (!empty($row['queues'])) {
|
||||
foreach ($row['queues'] as $queue) {
|
||||
$x++;
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2018
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,15 +42,18 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_center_agents'])) {
|
||||
if (!empty($_POST['call_center_agents'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_center_agents = $_POST['call_center_agents'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_center_agents) && @sizeof($call_center_agents) != 0) {
|
||||
if (!empty($action) && !empty($call_center_agents)) {
|
||||
switch ($action) {
|
||||
case 'delete':
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
@@ -66,50 +68,64 @@
|
||||
}
|
||||
|
||||
//get http variables and set them to php variables
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$sql_search = " (";
|
||||
$sql_search .= "lower(agent_name) like :search ";
|
||||
$sql_search .= "or lower(agent_id) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
//add the search and show variables
|
||||
$search = $_GET["search"] ?? '';
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//get total call center agent count from the database
|
||||
$sql = "select count(*) from v_call_center_agents ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] != "all" || !permission_exists('call_center_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
$sql .= "where true ";
|
||||
}
|
||||
else {
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(agent_name) like :search ";
|
||||
$sql .= " or lower(agent_id) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.strtolower($search).'%';
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
$page = !empty($_GET['page']) ? $_GET['page'] : 0;
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(*)', '*', $sql);
|
||||
$sql = "select * ";
|
||||
$sql .= "from v_call_center_agents ";
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
$sql .= "where true ";
|
||||
}
|
||||
else {
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(agent_name) like :search ";
|
||||
$sql .= " or lower(agent_id) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.strtolower($search).'%';
|
||||
}
|
||||
$sql .= order_by($order_by, $order, 'agent_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$result = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -139,7 +155,7 @@
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>";
|
||||
if (permission_exists('call_center_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if (!empty($_GET['show']) && $_GET['show'] == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
@@ -172,10 +188,10 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($result ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($result) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
//echo th_order_by('domain_uuid', 'domain_uuid', $order_by, $order);
|
||||
@@ -189,12 +205,12 @@
|
||||
//echo th_order_by('agent_wrap_up_time', $text['label-wrap_up_time'], $order_by, $order);
|
||||
//echo th_order_by('agent_reject_delay_time', $text['label-reject_delay_time'], $order_by, $order);
|
||||
//echo th_order_by('agent_busy_delay_time', $text['label-busy_delay_time'], $order_by, $order);
|
||||
if (permission_exists('call_center_agent_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
if (!empty($result)) {
|
||||
$x = 0;
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
@@ -207,8 +223,8 @@
|
||||
echo " <input type='hidden' name='call_center_agents[$x][uuid]' value='".escape($row['call_center_agent_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
@@ -236,7 +252,7 @@
|
||||
$sql .= "where gateway_uuid = :gateway_uuid ";
|
||||
$parameters['gateway_uuid'] = $bridge_statement[2];
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$result = $database->select($sql, $parameters ?? null, 'all');
|
||||
if (count($result) > 0) {
|
||||
$gateway_name = $result[0]['gateway'];
|
||||
$agent_contact = str_replace($bridge_statement[2], $gateway_name, $agent_contact);
|
||||
@@ -249,7 +265,7 @@
|
||||
//echo " <td>".$row[agent_wrap_up_time]."</td>\n";
|
||||
//echo " <td>".$row[agent_reject_delay_time]."</td>\n";
|
||||
//echo " <td>".$row[agent_busy_delay_time]."</td>\n";
|
||||
if (permission_exists('call_center_agent_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2021
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -43,8 +42,18 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the defaults
|
||||
$queue_name = '';
|
||||
$queue_extension = '';
|
||||
$queue_time_base_score_sec = '';
|
||||
$queue_cid_prefix = '';
|
||||
$queue_announce_frequency = '';
|
||||
$queue_cc_exit_keys = '';
|
||||
$queue_description = '';
|
||||
$queue_timeout_action = '';
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_center_queue_uuid = $_REQUEST["id"];
|
||||
}
|
||||
@@ -57,7 +66,7 @@
|
||||
|
||||
//get total call center queues count from the database, check limit, if defined
|
||||
if ($action == 'add') {
|
||||
if ($_SESSION['limit']['call_center_queues']['numeric'] != '') {
|
||||
if (!empty($_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
$sql = "select count(*) from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
@@ -74,10 +83,10 @@
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
if (!empty($_POST)) {
|
||||
//get the post variables a run a security chack on them
|
||||
//$domain_uuid = $_POST["domain_uuid"];
|
||||
$dialplan_uuid = $_POST["dialplan_uuid"];
|
||||
$dialplan_uuid = $_POST["dialplan_uuid"] ?? null;
|
||||
$queue_name = $_POST["queue_name"];
|
||||
$queue_extension = $_POST["queue_extension"];
|
||||
$queue_greeting = $_POST["queue_greeting"];
|
||||
@@ -94,16 +103,17 @@
|
||||
$queue_tier_rule_wait_second = $_POST["queue_tier_rule_wait_second"];
|
||||
$queue_tier_rule_wait_multiply_level = $_POST["queue_tier_rule_wait_multiply_level"];
|
||||
$queue_tier_rule_no_agent_no_wait = $_POST["queue_tier_rule_no_agent_no_wait"];
|
||||
$queue_timeout_action = $_POST["queue_timeout_action"];
|
||||
$queue_timeout_action = $_POST["queue_timeout_action"] ?? null;
|
||||
$queue_discard_abandoned_after = $_POST["queue_discard_abandoned_after"];
|
||||
$queue_abandoned_resume_allowed = $_POST["queue_abandoned_resume_allowed"];
|
||||
$queue_cid_prefix = $_POST["queue_cid_prefix"];
|
||||
$queue_outbound_caller_id_name = $_POST["queue_outbound_caller_id_name"];
|
||||
$queue_outbound_caller_id_number = $_POST["queue_outbound_caller_id_number"];
|
||||
$queue_announce_position = $_POST["queue_announce_position"];
|
||||
$queue_outbound_caller_id_name = $_POST["queue_outbound_caller_id_name"] ?? null;
|
||||
$queue_outbound_caller_id_number = $_POST["queue_outbound_caller_id_number"] ?? null;
|
||||
$queue_announce_position = $_POST["queue_announce_position"] ?? null;
|
||||
$queue_announce_sound = $_POST["queue_announce_sound"];
|
||||
$queue_announce_frequency = $_POST["queue_announce_frequency"];
|
||||
$queue_cc_exit_keys = $_POST["queue_cc_exit_keys"];
|
||||
$queue_email_address = $_POST["queue_email_address"] ?? null;
|
||||
$queue_description = $_POST["queue_description"];
|
||||
|
||||
//remove invalid characters
|
||||
@@ -115,7 +125,7 @@
|
||||
}
|
||||
|
||||
//delete the tier (agent from the queue)
|
||||
if ($_REQUEST["a"] == "delete" && is_uuid($_REQUEST["id"]) && permission_exists("call_center_tier_delete")) {
|
||||
if (!empty($_REQUEST["a"]) && $_REQUEST["a"] == "delete" && is_uuid($_REQUEST["id"]) && permission_exists("call_center_tier_delete")) {
|
||||
//set the variables
|
||||
$call_center_queue_uuid = $_REQUEST["id"];
|
||||
$call_center_tier_uuid = $_REQUEST["call_center_tier_uuid"];
|
||||
@@ -132,7 +142,7 @@
|
||||
$tiers = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
if (is_array($tiers) && sizeof($tiers) != 0) {
|
||||
if (!empty($tiers)) {
|
||||
foreach ($tiers as &$row) {
|
||||
$call_center_agent_uuid = $row["call_center_agent_uuid"];
|
||||
$call_center_queue_uuid = $row["call_center_queue_uuid"];
|
||||
@@ -153,7 +163,7 @@
|
||||
}
|
||||
|
||||
//delete the tier from the database
|
||||
if (strlen($call_center_tier_uuid) > 0) {
|
||||
if (!empty($call_center_tier_uuid)) {
|
||||
$array['call_center_tiers'][0]['call_center_tier_uuid'] = $call_center_tier_uuid;
|
||||
$array['call_center_tiers'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
|
||||
@@ -171,7 +181,7 @@
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//get the uuid from the POST
|
||||
if ($action == "update") {
|
||||
@@ -188,27 +198,27 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']."domain_uuid<br>\n"; }
|
||||
if (strlen($queue_name) == 0) { $msg .= $text['message-required'].$text['label-queue_name']."<br>\n"; }
|
||||
if (strlen($queue_extension) == 0) { $msg .= $text['message-required'].$text['label-extension']."<br>\n"; }
|
||||
if (strlen($queue_strategy) == 0) { $msg .= $text['message-required'].$text['label-strategy']."<br>\n"; }
|
||||
//if (strlen($queue_moh_sound) == 0) { $msg .= $text['message-required'].$text['label-music_on_hold']."<br>\n"; }
|
||||
//if (strlen($queue_record_template) == 0) { $msg .= $text['message-required'].$text['label-record_template']."<br>\n"; }
|
||||
//if (strlen($queue_time_base_score) == 0) { $msg .= $text['message-required'].$text['label-time_base_score']."<br>\n"; }
|
||||
//if (strlen($queue_time_base_score_sec) == 0) { $msg .= $text['message-required'].$text['label-time_base_score_sec']."<br>\n"; }
|
||||
//if (strlen($queue_max_wait_time) == 0) { $msg .= $text['message-required'].$text['label-max_wait_time']."<br>\n"; }
|
||||
//if (strlen($queue_max_wait_time_with_no_agent) == 0) { $msg .= $text['message-required'].$text['label-max_wait_time_with_no_agent']."<br>\n"; }
|
||||
//if (strlen($queue_max_wait_time_with_no_agent_time_reached) == 0) { $msg .= $text['message-required'].$text['label-max_wait_time_with_no_agent_time_reached']."<br>\n"; }
|
||||
//if (strlen($queue_tier_rules_apply) == 0) { $msg .= $text['message-required'].$text['label-tier_rules_apply']."<br>\n"; }
|
||||
//if (strlen($queue_tier_rule_wait_second) == 0) { $msg .= $text['message-required'].$text['label-tier_rule_wait_second']."<br>\n"; }
|
||||
//if (strlen($queue_tier_rule_wait_multiply_level) == 0) { $msg .= $text['message-required'].$text['label-tier_rule_wait_multiply_level']."<br>\n"; }
|
||||
//if (strlen($queue_tier_rule_no_agent_no_wait) == 0) { $msg .= $text['message-required'].$text['label-tier_rule_no_agent_no_wait']."<br>\n"; }
|
||||
//if (strlen($queue_timeout_action) == 0) { $msg .= $text['message-required'].$text['label-timeout_action']."<br>\n"; }
|
||||
//if (strlen($queue_discard_abandoned_after) == 0) { $msg .= $text['message-required'].$text['label-discard_abandoned_after']."<br>\n"; }
|
||||
//if (strlen($queue_abandoned_resume_allowed) == 0) { $msg .= $text['message-required'].$text['label-abandoned_resume_allowed']."<br>\n"; }
|
||||
//if (strlen($queue_cid_prefix) == 0) { $msg .= $text['message-required'].$text['label-caller_id_name_prefix']."<br>\n"; }
|
||||
//if (strlen($queue_description) == 0) { $msg .= $text['message-required'].$text['label-description']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//if (empty($domain_uuid)) { $msg .= $text['message-required']."domain_uuid<br>\n"; }
|
||||
if (empty($queue_name)) { $msg .= $text['message-required'].$text['label-queue_name']."<br>\n"; }
|
||||
if (empty($queue_extension)) { $msg .= $text['message-required'].$text['label-extension']."<br>\n"; }
|
||||
if (empty($queue_strategy)) { $msg .= $text['message-required'].$text['label-strategy']."<br>\n"; }
|
||||
//if (empty($queue_moh_sound)) { $msg .= $text['message-required'].$text['label-music_on_hold']."<br>\n"; }
|
||||
//if (empty($queue_record_template)) { $msg .= $text['message-required'].$text['label-record_template']."<br>\n"; }
|
||||
//if (empty($queue_time_base_score)) { $msg .= $text['message-required'].$text['label-time_base_score']."<br>\n"; }
|
||||
//if (empty($queue_time_base_score_sec)) { $msg .= $text['message-required'].$text['label-time_base_score_sec']."<br>\n"; }
|
||||
//if (empty($queue_max_wait_time)) { $msg .= $text['message-required'].$text['label-max_wait_time']."<br>\n"; }
|
||||
//if (empty($queue_max_wait_time_with_no_agent)) { $msg .= $text['message-required'].$text['label-max_wait_time_with_no_agent']."<br>\n"; }
|
||||
//if (empty($queue_max_wait_time_with_no_agent_time_reached)) { $msg .= $text['message-required'].$text['label-max_wait_time_with_no_agent_time_reached']."<br>\n"; }
|
||||
//if (empty($queue_tier_rules_apply)) { $msg .= $text['message-required'].$text['label-tier_rules_apply']."<br>\n"; }
|
||||
//if (empty($queue_tier_rule_wait_second)) { $msg .= $text['message-required'].$text['label-tier_rule_wait_second']."<br>\n"; }
|
||||
//if (empty($queue_tier_rule_wait_multiply_level)) { $msg .= $text['message-required'].$text['label-tier_rule_wait_multiply_level']."<br>\n"; }
|
||||
//if (empty($queue_tier_rule_no_agent_no_wait)) { $msg .= $text['message-required'].$text['label-tier_rule_no_agent_no_wait']."<br>\n"; }
|
||||
//if (empty($queue_timeout_action)) { $msg .= $text['message-required'].$text['label-timeout_action']."<br>\n"; }
|
||||
//if (empty($queue_discard_abandoned_after)) { $msg .= $text['message-required'].$text['label-discard_abandoned_after']."<br>\n"; }
|
||||
//if (empty($queue_abandoned_resume_allowed)) { $msg .= $text['message-required'].$text['label-abandoned_resume_allowed']."<br>\n"; }
|
||||
//if (empty($queue_cid_prefix)) { $msg .= $text['message-required'].$text['label-caller_id_name_prefix']."<br>\n"; }
|
||||
//if (empty($queue_description)) { $msg .= $text['message-required'].$text['label-description']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -225,27 +235,27 @@
|
||||
$_POST["domain_uuid"] = $_SESSION["domain_uuid"];
|
||||
|
||||
//add the call_center_queue_uuid
|
||||
if (strlen($_POST["call_center_queue_uuid"]) == 0) {
|
||||
if (empty($_POST["call_center_queue_uuid"])) {
|
||||
$call_center_queue_uuid = uuid();
|
||||
$_POST["call_center_queue_uuid"] = $call_center_queue_uuid;
|
||||
}
|
||||
|
||||
//add the dialplan_uuid
|
||||
if (strlen($_POST["dialplan_uuid"]) == 0) {
|
||||
if (empty($_POST["dialplan_uuid"])) {
|
||||
$dialplan_uuid = uuid();
|
||||
$_POST["dialplan_uuid"] = $dialplan_uuid;
|
||||
}
|
||||
|
||||
//update the call centier tiers array
|
||||
$x = 0;
|
||||
if (is_array($_POST["call_center_tiers"]) && @sizeof($_POST["call_center_tiers"]) != 0) {
|
||||
if (!empty($_POST["call_center_tiers"])) {
|
||||
foreach ($_POST["call_center_tiers"] as $row) {
|
||||
//add the domain_uuid
|
||||
if (strlen($row["domain_uuid"]) == 0) {
|
||||
if (empty($row["domain_uuid"])) {
|
||||
$_POST["call_center_tiers"][$x]["domain_uuid"] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
//unset ring_group_destination_uuid if the field has no value
|
||||
if (strlen($row["call_center_agent_uuid"]) == 0) {
|
||||
if (empty($row["call_center_agent_uuid"])) {
|
||||
unset($_POST["call_center_tiers"][$x]);
|
||||
}
|
||||
//increment the row
|
||||
@@ -260,7 +270,7 @@
|
||||
$queue_timeout_data = implode($action_array);
|
||||
|
||||
//add the recording path if needed
|
||||
if ($queue_greeting != '') {
|
||||
if (!empty($queue_greeting)) {
|
||||
if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting)) {
|
||||
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting;
|
||||
}
|
||||
@@ -298,16 +308,21 @@
|
||||
$array['call_center_queues'][0]['queue_outbound_caller_id_number'] = $queue_outbound_caller_id_number;
|
||||
}
|
||||
$array['call_center_queues'][0]['queue_announce_position'] = $queue_announce_position;
|
||||
$array['call_center_queues'][0]['queue_announce_sound'] = $queue_announce_sound;
|
||||
if (permission_exists('call_center_announce_sound')) {
|
||||
$array['call_center_queues'][0]['queue_announce_sound'] = $queue_announce_sound;
|
||||
}
|
||||
$array['call_center_queues'][0]['queue_announce_frequency'] = $queue_announce_frequency;
|
||||
$array['call_center_queues'][0]['queue_cc_exit_keys'] = $queue_cc_exit_keys;
|
||||
if (permission_exists('call_center_email_address')) {
|
||||
$array['call_center_queues'][0]['queue_email_address'] = $queue_email_address;
|
||||
}
|
||||
$array['call_center_queues'][0]['queue_description'] = $queue_description;
|
||||
$array['call_center_queues'][0]['call_center_queue_uuid'] = $call_center_queue_uuid;
|
||||
$array['call_center_queues'][0]['dialplan_uuid'] = $dialplan_uuid;
|
||||
$array['call_center_queues'][0]['domain_uuid'] = $domain_uuid;
|
||||
|
||||
$y = 0;
|
||||
if (is_array($_POST["call_center_tiers"]) && @sizeof($_POST["call_center_tiers"]) != 0) {
|
||||
if (!empty($_POST["call_center_tiers"])) {
|
||||
foreach ($_POST["call_center_tiers"] as $row) {
|
||||
if (is_uuid($row['call_center_tier_uuid'])) {
|
||||
$call_center_tier_uuid = $row['call_center_tier_uuid'];
|
||||
@@ -315,7 +330,7 @@
|
||||
else {
|
||||
$call_center_tier_uuid = uuid();
|
||||
}
|
||||
if (strlen($row['call_center_agent_uuid']) > 0) {
|
||||
if (!empty($row['call_center_agent_uuid'])) {
|
||||
$array["call_center_queues"][0]["call_center_tiers"][$y]["call_center_tier_uuid"] = $call_center_tier_uuid;
|
||||
$array['call_center_queues'][0]["call_center_tiers"][$y]["call_center_agent_uuid"] = $row['call_center_agent_uuid'];
|
||||
$array['call_center_queues'][0]["call_center_tiers"][$y]["tier_level"] = $row['tier_level'];
|
||||
@@ -326,44 +341,53 @@
|
||||
}
|
||||
}
|
||||
|
||||
//add definable export variables can be set in default settings
|
||||
$export_variables = 'call_center_queue_uuid,sip_h_Alert-Info';
|
||||
if (!empty($_SESSION['call_center']['export_vars'])) {
|
||||
foreach ($_SESSION['call_center']['export_vars'] as $export_variable) {
|
||||
$export_variables .= ','.$export_variable;
|
||||
}
|
||||
}
|
||||
|
||||
//build the xml dialplan
|
||||
$dialplan_xml = "<extension name=\"".$queue_name."\" continue=\"\" uuid=\"".$dialplan_uuid."\">\n";
|
||||
$dialplan_xml = "<extension name=\"".xml::sanitize($queue_name)."\" continue=\"\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^([^#]+#)(.*)\$\" break=\"never\">\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"caller_id_name=\$2\"/>\n";
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^(callcenter\+)?".$queue_extension."$\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^(callcenter\+)?".xml::sanitize($queue_extension)."$\">\n";
|
||||
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
|
||||
if (is_uuid($call_center_queue_uuid)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_center_queue_uuid=".$call_center_queue_uuid."\"/>\n";
|
||||
if (!empty($call_center_queue_uuid) && is_uuid($call_center_queue_uuid)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_center_queue_uuid=".xml::sanitize($call_center_queue_uuid)."\"/>\n";
|
||||
}
|
||||
if (is_numeric($queue_extension)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"queue_extension=".$queue_extension."\"/>\n";
|
||||
if (!empty($queue_extension) && is_numeric($queue_extension)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"queue_extension=".xml::sanitize($queue_extension)."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_export_vars=call_center_queue_uuid\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_export_vars=\${cc_export_vars},".$export_variables."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"hangup_after_bridge=true\"/>\n";
|
||||
if ($queue_time_base_score_sec != '') {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_base_score=".$queue_time_base_score_sec."\"/>\n";
|
||||
if (!empty($queue_time_base_score_sec)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_base_score=".xml::sanitize($queue_time_base_score_sec)."\"/>\n";
|
||||
}
|
||||
if ($queue_greeting_path != '') {
|
||||
if (!empty($queue_greeting_path)) {
|
||||
$dialplan_xml .= " <action application=\"sleep\" data=\"1000\"/>\n";
|
||||
$greeting_array = explode(':', $queue_greeting_path);
|
||||
if (count($greeting_array) == 1) {
|
||||
$dialplan_xml .= " <action application=\"playback\" data=\"".$queue_greeting_path."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"playback\" data=\"".xml::sanitize($queue_greeting_path)."\"/>\n";
|
||||
}
|
||||
else {
|
||||
if ($greeting_array[0] == 'say' || $greeting_array[0] == 'tone_stream' || $greeting_array[0] == 'phrase') {
|
||||
$dialplan_xml .= " <action application=\"".$greeting_array[0]."\" data=\"".$greeting_array[1]."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"".xml::sanitize($greeting_array[0])."\" data=\"".xml::sanitize($greeting_array[1])."\"/>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (strlen($queue_cid_prefix) > 0) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"effective_caller_id_name=".$queue_cid_prefix."#\${caller_id_name}\"/>\n";
|
||||
if (!empty($queue_cid_prefix)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"effective_caller_id_name=".xml::sanitize($queue_cid_prefix)."#\${caller_id_name}\"/>\n";
|
||||
}
|
||||
if (strlen($queue_cc_exit_keys) > 0) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".$queue_cc_exit_keys."\"/>\n";
|
||||
if (!empty($queue_cc_exit_keys)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".xml::sanitize($queue_cc_exit_keys)."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"callcenter\" data=\"".$queue_extension."@".$_SESSION["domain_name"]."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"callcenter\" data=\"".xml::sanitize($queue_extension)."@".$_SESSION["domain_name"]."\"/>\n";
|
||||
if ($destination->valid($queue_timeout_app.':'.$queue_timeout_data)) {
|
||||
$dialplan_xml .= " <action application=\"".$queue_timeout_app."\" data=\"".$queue_timeout_data."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"".xml::sanitize($queue_timeout_app)."\" data=\"".xml::sanitize($queue_timeout_data)."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= "</extension>\n";
|
||||
@@ -427,11 +451,11 @@
|
||||
remove_config_from_cache('configuration:callcenter.conf');
|
||||
|
||||
//add agent/tier to queue
|
||||
$agent_name = $_POST["agent_name"];
|
||||
$tier_level = $_POST["tier_level"];
|
||||
$tier_position = $_POST["tier_position"];
|
||||
$agent_name = $_POST["agent_name"] ?? null;
|
||||
$tier_level = $_POST["tier_level"] ?? null;
|
||||
$tier_position = $_POST["tier_position"] ?? null;
|
||||
|
||||
if ($agent_name != '') {
|
||||
if (!empty($agent_name)) {
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
//add the agent using event socket
|
||||
@@ -476,10 +500,10 @@
|
||||
}
|
||||
return;
|
||||
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
} //(count($_POST)>0 && empty($_POST["persistformvar"]))
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && is_uuid($_GET["id"]) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && is_uuid($_GET["id"]) && empty($_POST["persistformvar"])) {
|
||||
$call_center_queue_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -490,7 +514,7 @@
|
||||
$call_center_queues = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
if (is_array($call_center_queues)) {
|
||||
if (!empty($call_center_queues)) {
|
||||
foreach ($call_center_queues as &$row) {
|
||||
$queue_name = $row["queue_name"];
|
||||
$dialplan_uuid = $row["dialplan_uuid"];
|
||||
@@ -519,6 +543,7 @@
|
||||
$queue_announce_sound = $row["queue_announce_sound"];
|
||||
$queue_announce_frequency = $row["queue_announce_frequency"];
|
||||
$queue_cc_exit_keys = $row["queue_cc_exit_keys"];
|
||||
$queue_email_address = $row["queue_email_address"];
|
||||
$queue_description = $row["queue_description"];
|
||||
}
|
||||
}
|
||||
@@ -532,14 +557,14 @@
|
||||
$sql .= "and t.domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by tier_level asc, tier_position asc, a.agent_name asc";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
|
||||
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid ?? null;
|
||||
$database = new database;
|
||||
$tiers = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//add an empty row to the tiers array
|
||||
if (count($tiers) == 0) {
|
||||
$rows = $_SESSION['call_center']['agent_add_rows']['numeric'];
|
||||
$rows = $_SESSION['call_center']['agent_add_rows']['numeric'] ?? null;
|
||||
$id = 0;
|
||||
}
|
||||
if (count($tiers) > 0) {
|
||||
@@ -549,7 +574,7 @@
|
||||
for ($x = 0; $x < $rows; $x++) {
|
||||
$tiers[$id]['call_center_tier_uuid'] = uuid();
|
||||
$tiers[$id]['call_center_agent_uuid'] = '';
|
||||
$tiers[$id]['call_center_queue_uuid'] = $call_center_queue_uuid;
|
||||
$tiers[$id]['call_center_queue_uuid'] = $call_center_queue_uuid ?? null;
|
||||
$tiers[$id]['tier_level'] = '';
|
||||
$tiers[$id]['tier_position'] = '';
|
||||
$tiers[$id]['agent_name'] = '';
|
||||
@@ -570,19 +595,19 @@
|
||||
$sounds = $sounds->get();
|
||||
|
||||
//set default values
|
||||
if (strlen($queue_strategy) == 0) { $queue_strategy = "longest-idle-agent"; }
|
||||
if (strlen($queue_moh_sound) == 0) { $queue_moh_sound = "\$\${hold_music}"; }
|
||||
if (strlen($queue_time_base_score) == 0) { $queue_time_base_score = "system"; }
|
||||
if (strlen($queue_time_base_score) == 0) { $queue_time_base_score = ""; }
|
||||
if (strlen($queue_max_wait_time) == 0) { $queue_max_wait_time = "0"; }
|
||||
if (strlen($queue_max_wait_time_with_no_agent) == 0) { $queue_max_wait_time_with_no_agent = "90"; }
|
||||
if (strlen($queue_max_wait_time_with_no_agent_time_reached) == 0) { $queue_max_wait_time_with_no_agent_time_reached = "30"; }
|
||||
if (strlen($queue_tier_rules_apply) == 0) { $queue_tier_rules_apply = "false"; }
|
||||
if (strlen($queue_tier_rule_wait_second) == 0) { $queue_tier_rule_wait_second = "30"; }
|
||||
if (strlen($queue_tier_rule_wait_multiply_level) == 0) { $queue_tier_rule_wait_multiply_level = "true"; }
|
||||
if (strlen($queue_tier_rule_no_agent_no_wait) == 0) { $queue_tier_rule_no_agent_no_wait = "true"; }
|
||||
if (strlen($queue_discard_abandoned_after) == 0) { $queue_discard_abandoned_after = "900"; }
|
||||
if (strlen($queue_abandoned_resume_allowed) == 0) { $queue_abandoned_resume_allowed = "false"; }
|
||||
if (empty($queue_strategy)) { $queue_strategy = "longest-idle-agent"; }
|
||||
if (empty($queue_moh_sound)) { $queue_moh_sound = "\$\${hold_music}"; }
|
||||
if (empty($queue_time_base_score)) { $queue_time_base_score = "system"; }
|
||||
if (empty($queue_time_base_score)) { $queue_time_base_score = ""; }
|
||||
if (empty($queue_max_wait_time)) { $queue_max_wait_time = "0"; }
|
||||
if (empty($queue_max_wait_time_with_no_agent)) { $queue_max_wait_time_with_no_agent = "90"; }
|
||||
if (empty($queue_max_wait_time_with_no_agent_time_reached)) { $queue_max_wait_time_with_no_agent_time_reached = "30"; }
|
||||
if (empty($queue_tier_rules_apply)) { $queue_tier_rules_apply = "false"; }
|
||||
if (empty($queue_tier_rule_wait_second)) { $queue_tier_rule_wait_second = "30"; }
|
||||
if (empty($queue_tier_rule_wait_multiply_level)) { $queue_tier_rule_wait_multiply_level = "true"; }
|
||||
if (empty($queue_tier_rule_no_agent_no_wait)) { $queue_tier_rule_no_agent_no_wait = "true"; }
|
||||
if (empty($queue_discard_abandoned_after)) { $queue_discard_abandoned_after = "900"; }
|
||||
if (empty($queue_abandoned_resume_allowed)) { $queue_abandoned_resume_allowed = "false"; }
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
@@ -615,7 +640,7 @@
|
||||
require_once "resources/header.php";
|
||||
|
||||
//only allow a uuid
|
||||
if (!is_uuid($call_center_queue_uuid)) {
|
||||
if (empty($call_center_queue_uuid)) {
|
||||
$call_center_queue_uuid = null;
|
||||
}
|
||||
|
||||
@@ -671,9 +696,9 @@
|
||||
if (permission_exists('call_center_wallboard')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-wallboard'],'icon'=>'th','link'=>PROJECT_PATH.'/app/call_center_wallboard/call_center_wallboard.php?queue_name='.urlencode($call_center_queue_uuid)]);
|
||||
}
|
||||
echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'link'=>'cmd.php?cmd=unload&id='.urlencode($call_center_queue_uuid)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'link'=>'cmd.php?cmd=load&id='.urlencode($call_center_queue_uuid)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-restart'],'icon'=>'sync-alt','link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]);
|
||||
//echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'link'=>'cmd.php?cmd=unload&id='.urlencode($call_center_queue_uuid)]);
|
||||
//echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'link'=>'cmd.php?cmd=load&id='.urlencode($call_center_queue_uuid)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'style'=>'margin-right: 15px;','link'=>PROJECT_PATH.'/app/call_center_active/call_center_active.php?queue_name='.urlencode($call_center_queue_uuid)]);
|
||||
}
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
|
||||
@@ -715,7 +740,7 @@
|
||||
echo "<optgroup label=".$text['label-'.$key].">\n";
|
||||
$selected = false;
|
||||
foreach($value as $row) {
|
||||
if ($queue_greeting == $row["value"]) {
|
||||
if (!empty($queue_greeting) && $queue_greeting == $row["value"]) {
|
||||
$selected = true;
|
||||
echo " <option value='".escape($row["value"])."' selected='selected'>".escape($row["name"])."</option>\n";
|
||||
}
|
||||
@@ -725,12 +750,6 @@
|
||||
}
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
if (if_group("superadmin")) {
|
||||
if (!$selected && strlen($queue_greeting) > 0) {
|
||||
echo " <option value='".escape($queue_greeting)."' selected='selected'>".escape($queue_greeting)."</option>\n";
|
||||
}
|
||||
unset($selected);
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-greeting']."\n";
|
||||
@@ -804,7 +823,7 @@
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (permission_exists('call_center_tier_view') && is_array($agents) && count($agents) > 0) {
|
||||
if (permission_exists('call_center_tier_view') && !empty($agents) && is_array($agents)) {
|
||||
echo "<tr>";
|
||||
echo " <td class='vncell' valign='top'>".$text['label-agents']."</td>";
|
||||
echo " <td class='vtable' align='left'>";
|
||||
@@ -820,7 +839,7 @@
|
||||
foreach($tiers as $field) {
|
||||
echo " <tr>\n";
|
||||
echo " <td class=''>";
|
||||
if (strlen($field['call_center_tier_uuid']) > 0) {
|
||||
if (!empty($field['call_center_tier_uuid'])) {
|
||||
echo " <input name='call_center_tiers[".$x."][call_center_tier_uuid]' type='hidden' value=\"".escape($field['call_center_tier_uuid'])."\">\n";
|
||||
}
|
||||
echo " <select name=\"call_center_tiers[$x][call_center_agent_uuid]\" class=\"formfld\" style=\"width: 200px\">\n";
|
||||
@@ -876,7 +895,7 @@
|
||||
}
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-music_on_hold']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
@@ -896,13 +915,13 @@
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}";
|
||||
echo " <select class='formfld' name='queue_record_template'>\n";
|
||||
if (strlen($queue_record_template) > 0) {
|
||||
if (!empty($queue_record_template)) {
|
||||
echo " <option value='".escape($queue_record_template)."' selected='selected' >".$text['option-true']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".escape($record_template)."'>".$text['option-true']."</option>\n";
|
||||
}
|
||||
if (strlen($queue_record_template) == 0) {
|
||||
if (empty($queue_record_template)) {
|
||||
echo " <option value='' selected='selected' >".$text['option-false']."</option>\n";
|
||||
}
|
||||
else {
|
||||
@@ -1128,7 +1147,7 @@
|
||||
echo " ".$text['label-outbound_caller_id_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_outbound_caller_id_name' maxlength='255' value='".escape($queue_outbound_caller_id_name)."'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_outbound_caller_id_name' maxlength='255' value='".escape($queue_outbound_caller_id_name ?? '')."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-outbound_caller_id_name']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -1141,7 +1160,7 @@
|
||||
echo " ".$text['label-outbound_caller_id_number']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_outbound_caller_id_number' maxlength='255' value='".escape($queue_outbound_caller_id_number)."'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_outbound_caller_id_number' maxlength='255' value='".escape($queue_outbound_caller_id_number ?? '')."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-outbound_caller_id_number']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -1155,21 +1174,11 @@
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='queue_announce_position'>\n";
|
||||
if ($queue_announce_position == "false") {
|
||||
echo " <option value='false' selected='selected' >".$text['option-false']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='false'>".$text['option-false']."</option>\n";
|
||||
}
|
||||
if ($queue_announce_position == "true") {
|
||||
echo " <option value='true' selected='selected' >".$text['option-true']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='true'>".$text['option-true']."</option>\n";
|
||||
}
|
||||
echo " <option value='false'>".$text['option-false']."</option>\n";
|
||||
echo " <option value='true' ".(!empty($queue_announce_position) && $queue_announce_position == "true" ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-queue_announce_position']."\n";
|
||||
echo ($text['description-queue_announce_position'] ?? '')."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
@@ -1191,8 +1200,8 @@
|
||||
$script .= " tb.name=obj.name;\n";
|
||||
$script .= " tb.className='formfld';\n";
|
||||
$script .= " tb.setAttribute('id', '".$destination_id."');\n";
|
||||
$script .= " tb.setAttribute('style', '".$select_style."');\n";
|
||||
if ($on_change != '') {
|
||||
$script .= " tb.setAttribute('style', '".!empty($select_style)."');\n";
|
||||
if (!empty($on_change)) {
|
||||
$script .= " tb.setAttribute('onchange', \"".$on_change."\");\n";
|
||||
$script .= " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
|
||||
}
|
||||
@@ -1216,7 +1225,7 @@
|
||||
$script .= " obj[0].parentNode.removeChild(obj[1]);\n";
|
||||
$script .= " obj[0].parentNode.removeChild(obj[2]);\n";
|
||||
$script .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
|
||||
if ($on_change != '') {
|
||||
if (!empty($on_change)) {
|
||||
$script .= " ".$on_change.";\n";
|
||||
}
|
||||
$script .= "}\n";
|
||||
@@ -1229,16 +1238,16 @@
|
||||
|
||||
//recordings
|
||||
$tmp_selected = false;
|
||||
if (is_array($recordings)) {
|
||||
if (!empty($recordings)) {
|
||||
echo "<optgroup label='Recordings'>\n";
|
||||
foreach ($recordings as &$row) {
|
||||
$recording_name = $row["recording_name"];
|
||||
$recording_filename = $row["recording_filename"];
|
||||
if ($queue_announce_sound == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && strlen($queue_announce_sound) > 0) {
|
||||
if (!empty($queue_announce_sound) && $queue_announce_sound == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename) {
|
||||
$tmp_selected = true;
|
||||
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
|
||||
}
|
||||
else if ($queue_announce_sound == $recording_filename && strlen($queue_announce_sound) > 0) {
|
||||
else if (!empty($queue_announce_sound) && $queue_announce_sound == $recording_filename) {
|
||||
$tmp_selected = true;
|
||||
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
|
||||
}
|
||||
@@ -1249,7 +1258,7 @@
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
|
||||
if (!$tmp_selected && strlen($queue_announce_sound) > 0) {
|
||||
if (!$tmp_selected && !empty($queue_announce_sound)) {
|
||||
echo "<optgroup label='Selected'>\n";
|
||||
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$queue_announce_sound)) {
|
||||
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
|
||||
@@ -1292,13 +1301,26 @@
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-exit_keys']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_cc_exit_keys' value='".escape($queue_cc_exit_keys)."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-exit_keys']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_cc_exit_keys' value='".escape($queue_cc_exit_keys)."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-exit_keys']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (permission_exists('call_center_email_address')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-queue_email_address']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='queue_email_address' maxlength='255' value='".escape($queue_email_address ?? '')."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-queue_email_address']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
|
||||
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,15 +42,21 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_center_queues'])) {
|
||||
if (!empty($_POST['call_center_queues']) && is_array($_POST['call_center_queues'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_center_queues = $_POST['call_center_queues'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
if (!empty($action) && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_center_queue_add')) {
|
||||
@@ -72,12 +77,12 @@
|
||||
}
|
||||
|
||||
//get http variables and set as php variables
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$search = strtolower($_GET["search"] ?? '');
|
||||
if (!empty($search)) {
|
||||
$sql_search = " (";
|
||||
$sql_search .= "lower(queue_name) like :search ";
|
||||
$sql_search .= "or lower(queue_description) like :search ";
|
||||
@@ -88,34 +93,34 @@
|
||||
//get total call center queues count from the database
|
||||
$sql = "select count(*) from v_call_center_queues ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] != "all" || !permission_exists('call_center_all')) {
|
||||
if ($show != "all" || !permission_exists('call_center_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
if (!empty($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(*)', '*', $sql);
|
||||
$sql = str_replace('count(*)', '*', $sql ?? '');
|
||||
$sql .= order_by($order_by, $order, 'queue_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$result = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -140,21 +145,21 @@
|
||||
echo button::create(['type'=>'button','label'=>$text['button-wallboard'],'icon'=>'th','link'=>PROJECT_PATH.'/app/call_center_wallboard/call_center_wallboard.php']);
|
||||
}
|
||||
$margin_left = permission_exists('call_center_agent_view') || permission_exists('call_center_wallboard') ? 'margin-left: 15px;' : null;
|
||||
if (permission_exists('call_center_queue_add') && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric']) || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
if (permission_exists('call_center_queue_add') && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric'] ?? '') || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','style'=>$margin_left,'link'=>'call_center_queue_edit.php']);
|
||||
unset($margin_left);
|
||||
}
|
||||
if (permission_exists('call_center_queue_add') && $result && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric']) || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none; '.$margin_left,'onclick'=>"modal_open('modal-copy','btn_copy');"]);
|
||||
if (permission_exists('call_center_queue_add') && $result && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric'] ?? '') || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none; '.!empty($margin_left),'onclick'=>"modal_open('modal-copy','btn_copy');"]);
|
||||
unset($margin_left);
|
||||
}
|
||||
if (permission_exists('call_center_queue_delete') && $result) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; '.$margin_left,'onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; '.!empty($margin_left),'onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
unset($margin_left);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_center_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if ($show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
@@ -172,7 +177,7 @@
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
if (permission_exists('call_center_queue_add') && $result && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric']) || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
if (permission_exists('call_center_queue_add') && $result && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric'] ?? '') || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('copy'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
if (permission_exists('call_center_queue_delete') && $result) {
|
||||
@@ -190,10 +195,10 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($result ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($result) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order);
|
||||
@@ -212,12 +217,12 @@
|
||||
//echo th_order_by('queue_abandoned_resume_allowed', $text['label-abandoned_resume_allowed'], $order_by, $order);
|
||||
//echo th_order_by('queue_tier_rule_wait_multiply_level', $text['label-tier_rule_wait_multiply_level'], $order_by, $order);
|
||||
echo th_order_by('queue_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
|
||||
if (permission_exists('call_center_queue_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
if (!empty($result)) {
|
||||
$x = 0;
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('call_center_queue_edit')) {
|
||||
@@ -230,8 +235,8 @@
|
||||
echo " <input type='hidden' name='call_center_queues[$x][uuid]' value='".escape($row['call_center_queue_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
if ($show == "all" && permission_exists('call_center_all')) {
|
||||
if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
@@ -262,7 +267,7 @@
|
||||
//echo " <td>".escape($row[queue_abandoned_resume_allowed])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rule_wait_multiply_level])." </td>\n";
|
||||
echo " <td class='description overflow hide-sm-dn'>".escape($row['queue_description'])."</td>\n";
|
||||
if (permission_exists('call_center_queue_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -42,7 +41,7 @@
|
||||
$cmd = $_GET['cmd'];
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && is_uuid($_GET["id"]) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && is_array($_GET) && is_uuid($_GET["id"]) && (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true")) {
|
||||
$call_center_queue_uuid = $_GET["id"];
|
||||
$sql = "select queue_extension from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -86,4 +85,4 @@
|
||||
$_SESSION["message"] = $response;
|
||||
header("Location: call_center_queues.php?savemsg=".urlencode($response));
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Copyright (C) 2015 - 2021
|
||||
Copyright (C) 2015 - 2023
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -62,16 +62,6 @@
|
||||
$this->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a dialplan for call center
|
||||
* @var string $domain_uuid the multi-tenant id
|
||||
@@ -156,7 +146,7 @@
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
|
||||
if (strlen($this->queue_cid_prefix) > 0) {
|
||||
if (!empty($this->queue_cid_prefix)) {
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
|
||||
@@ -166,7 +156,7 @@
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_greeting) > 0) {
|
||||
if (!empty($this->queue_greeting)) {
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "sleep";
|
||||
@@ -176,7 +166,7 @@
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_greeting) > 0) {
|
||||
if (!empty($this->queue_greeting)) {
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "playback";
|
||||
@@ -186,7 +176,7 @@
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_cc_exit_keys) > 0) {
|
||||
if (!empty($this->queue_cc_exit_keys)) {
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
|
||||
@@ -204,7 +194,7 @@
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
|
||||
if (strlen($this->queue_timeout_action) > 0) {
|
||||
if (!empty($this->queue_timeout_action)) {
|
||||
$action_array = explode(":",$this->queue_timeout_action);
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
@@ -304,8 +294,8 @@
|
||||
|
||||
//filter out unchecked, build where clause for below
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,7 +303,7 @@
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select ".$this->uuid_prefix."uuid as uuid, dialplan_uuid, queue_name, queue_extension from v_".$this->table." ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
|
||||
$sql .= "and ".$this->uuid_prefix."uuid in ('".implode("','", $uuids)."') ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
@@ -353,7 +343,7 @@
|
||||
//delete the queue in the switch
|
||||
if ($fp) {
|
||||
foreach ($uuids as $uuid) {
|
||||
$cmd = "api callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION["domin_name"];
|
||||
$cmd = "api callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION["domain_name"];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
@@ -427,7 +417,7 @@
|
||||
|
||||
//filter out unchecked
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
@@ -513,8 +503,8 @@
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -523,7 +513,7 @@
|
||||
|
||||
//primary table
|
||||
$sql = "select * from v_".$this->table." ";
|
||||
$sql .= "where ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
|
||||
$sql .= "where ".$this->uuid_prefix."uuid in ('".implode("','", $uuids)."') ";
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
@@ -637,4 +627,4 @@ $c->queue_cc_exit_keys = "";
|
||||
$c->dialplan();
|
||||
*/
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 4) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -46,20 +45,24 @@
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//connect to the database
|
||||
if (!isset($database)) {
|
||||
$database = new database;
|
||||
}
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//get the http post values and set them as php variables
|
||||
if (count($_POST) > 0) {
|
||||
foreach ($_POST['agents'] as $row) {
|
||||
if (strlen($row['agent_status']) > 0) {
|
||||
if (!empty($row['agent_status'])) {
|
||||
//agent set status
|
||||
if ($fp) {
|
||||
// update the database
|
||||
$array['call_center_agents'][0]['call_center_agent_uuid'] = $row['id'];
|
||||
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
|
||||
$array['call_center_agents'][0]['agent_status'] = $row['agent_status'];
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers_dashboard';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array);
|
||||
@@ -100,7 +103,6 @@
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by queue_extension asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$call_center_queues = $database->select($sql, $parameters, 'all');
|
||||
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
|
||||
unset($sql, $parameters);
|
||||
@@ -111,7 +113,6 @@
|
||||
$sql .= "and domain_uuid = :domain_uuid";
|
||||
$parameters['user_uuid'] = $_SESSION['user_uuid'];
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$agents = $database->select($sql, $parameters, 'all');
|
||||
if (count($agents) > 0) {
|
||||
$agent = $agents[0];
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
//check the permission
|
||||
if (defined('STDIN')) {
|
||||
require_once dirname(__DIR__, 4) . "/resources/require.php";
|
||||
}
|
||||
else {
|
||||
exit;
|
||||
}
|
||||
|
||||
//increase limits
|
||||
set_time_limit(300);
|
||||
ini_set('max_execution_time',300); //5 minutes
|
||||
ini_set('memory_limit', '256M');
|
||||
|
||||
//save the arguments to variables
|
||||
$script_name = $argv[0];
|
||||
if (!empty($argv[1])) {
|
||||
parse_str($argv[1], $_GET);
|
||||
}
|
||||
|
||||
//get the primary key
|
||||
if (Is_array($_GET)) {
|
||||
$hostname = urldecode($_GET['hostname']);
|
||||
$debug = $_GET['debug'];
|
||||
$sleep_seconds = $_GET['sleep'];
|
||||
}
|
||||
else {
|
||||
//invalid uuid
|
||||
exit;
|
||||
}
|
||||
|
||||
//connect to event socket
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config agent list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$agent_list = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agents from the database
|
||||
$sql = "select a.*, d.domain_name \n";
|
||||
$sql .= "from v_call_center_agents as a, v_domains as d \n";
|
||||
$sql .= "where a.domain_uuid = d.domain_uuid \n";
|
||||
$sql .= "order by agent_name asc \n";
|
||||
//echo $sql;
|
||||
$database = new database;
|
||||
$agents = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//view_array($results);
|
||||
foreach($agents as $row) {
|
||||
|
||||
//update the agent status
|
||||
if (is_array($agent_list)) {
|
||||
foreach ($agent_list as $r) {
|
||||
if ($r['name'] == $row['call_center_agent_uuid']) {
|
||||
$agent_status = $r['status'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//answer_state options: confirmed, early, and terminated
|
||||
if ($agent_status == 'Available') {
|
||||
$answer_state = 'confirmed';
|
||||
}
|
||||
else {
|
||||
$answer_state = 'terminated';
|
||||
}
|
||||
|
||||
//build the event
|
||||
if ($fp) {
|
||||
$event = "sendevent PRESENCE_IN\n";
|
||||
$event .= "proto: agent\n";
|
||||
$event .= "from: ".$row['agent_name']."@".$row['domain_name']."\n";
|
||||
$event .= "login: ".$row['agent_name']."@".$row['domain_name']."\n";
|
||||
$event .= "status: Active (1 waiting)\n";
|
||||
$event .= "rpid: unknown\n";
|
||||
$event .= "event_type: presence\n";
|
||||
$event .= "alt_event_type: dialog\n";
|
||||
$event .= "event_count: 1\n";
|
||||
$event .= "unique-id: ".uuid()."\n";
|
||||
$event .= "Presence-Call-Direction: outbound\n";
|
||||
$event .= "answer-state: ".$answer_state."\n";
|
||||
|
||||
$event = "sendevent PRESENCE_IN\n";
|
||||
$event .= "proto: agent\n";
|
||||
$event .= "from: ".$row['agent_id']."@".$row['domain_name']."\n";
|
||||
$event .= "login: ".$row['agent_id']."@".$row['domain_name']."\n";
|
||||
$event .= "status: Active (1 waiting)\n";
|
||||
$event .= "rpid: unknown\n";
|
||||
$event .= "event_type: presence\n";
|
||||
$event .= "alt_event_type: dialog\n";
|
||||
$event .= "event_count: 1\n";
|
||||
$event .= "unique-id: ".uuid()."\n";
|
||||
$event .= "Presence-Call-Direction: outbound\n";
|
||||
$event .= "answer-state: ".$answer_state."\n";
|
||||
}
|
||||
|
||||
//send message to the console
|
||||
if (isset($debug)) {
|
||||
echo "\n";
|
||||
echo "[presence][call_center] agent+".$row['agent_name']."@".$row['domain_name']." agent_status ".$agent_status." answer_state ".$answer_state."\n";
|
||||
}
|
||||
|
||||
//send the event
|
||||
$result = event_socket_request($fp, $event);
|
||||
if (isset($debug)) {
|
||||
print_r($result, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//close event socket connection
|
||||
fclose($fp);
|
||||
|
||||
/*
|
||||
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_centers/resources/jobs/call_center_agents.php
|
||||
*/
|
||||
|
||||
?>
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -197,5 +197,29 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
|
||||
+384
-280
File diff suppressed because it is too large
Load Diff
@@ -3,29 +3,35 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Flows";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Flows";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "اتصل بالتدفقات";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Anruf Steuerung";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call Flows";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Anruf Steuerung";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Flujo de Llamada";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Flows";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Circulation d'Appel";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "cinématiques d'Appel";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Flows";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Deviatori di Chiamata";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep besturing";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Przepływ rozmów";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Fluxo de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Fluxos de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Fluxuri de apeluri";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Переключатель вызовов";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Samtalsflöden";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Потоки дзвінків";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "通话流程";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コールフロー";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "통화 흐름";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "b0939384-7055-44e8-8b4c-9f72293e1878";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_flows/call_flows.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Lewis Hallam <lewishallam80@gmail.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
|
||||
//check permissions
|
||||
require_once "resources/check_auth.php";
|
||||
@@ -43,8 +42,20 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the defaults
|
||||
$call_flow_sound = '';
|
||||
$call_flow_alternate_sound = '';
|
||||
$call_flow_name = '';
|
||||
$call_flow_extension = '';
|
||||
$call_flow_feature_code = '';
|
||||
$call_flow_pin_number = '';
|
||||
$call_flow_label = '';
|
||||
$call_flow_alternate_label = '';
|
||||
$call_flow_description = '';
|
||||
$call_flow_status = '';
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_flow_uuid = $_REQUEST["id"];
|
||||
}
|
||||
@@ -56,11 +67,11 @@
|
||||
$destination = new destinations;
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
if (!empty($_POST)) {
|
||||
|
||||
//set the variables from the http values
|
||||
$call_flow_uuid = $_POST["call_flow_uuid"];
|
||||
$dialplan_uuid = $_POST["dialplan_uuid"];
|
||||
$call_flow_uuid = $_POST["call_flow_uuid"] ?? null;
|
||||
$dialplan_uuid = $_POST["dialplan_uuid"] ?? null;
|
||||
$call_flow_name = $_POST["call_flow_name"];
|
||||
$call_flow_extension = $_POST["call_flow_extension"];
|
||||
$call_flow_feature_code = $_POST["call_flow_feature_code"];
|
||||
@@ -73,7 +84,7 @@
|
||||
$call_flow_alternate_sound = $_POST["call_flow_alternate_sound"];
|
||||
$call_flow_alternate_destination = $_POST["call_flow_alternate_destination"];
|
||||
$call_flow_context = $_POST["call_flow_context"];
|
||||
$call_flow_enabled = $_POST["call_flow_enabled"];
|
||||
$call_flow_enabled = $_POST["call_flow_enabled"] ?? 'false';
|
||||
$call_flow_description = $_POST["call_flow_description"];
|
||||
|
||||
//seperate the action and the param
|
||||
@@ -88,7 +99,7 @@
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//get the uuid from the POST
|
||||
if ($action == "update") {
|
||||
@@ -105,25 +116,25 @@
|
||||
|
||||
//check for all required data
|
||||
$msg = '';
|
||||
//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
|
||||
//if (strlen($call_flow_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_uuid']."<br>\n"; }
|
||||
//if (strlen($dialplan_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-dialplan_uuid']."<br>\n"; }
|
||||
//if (strlen($call_flow_name) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_name']."<br>\n"; }
|
||||
if (strlen($call_flow_extension) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_extension']."<br>\n"; }
|
||||
if (strlen($call_flow_feature_code) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
|
||||
//if (strlen($call_flow_context) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_context']."<br>\n"; }
|
||||
//if (strlen($call_flow_status) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_status']."<br>\n"; }
|
||||
//if (strlen($call_flow_pin_number) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_pin_number']."<br>\n"; }
|
||||
//if (strlen($call_flow_label) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_label']."<br>\n"; }
|
||||
//if (strlen($call_flow_sound) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_sound']."<br>\n"; }
|
||||
if (strlen($call_flow_app) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_app']."<br>\n"; }
|
||||
if (strlen($call_flow_data) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_data']."<br>\n"; }
|
||||
//if (strlen($call_flow_alternate_label) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_label']."<br>\n"; }
|
||||
//if (strlen($call_flow_alternate_sound) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_sound']."<br>\n"; }
|
||||
//if (strlen($call_flow_alternate_app) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_app']."<br>\n"; }
|
||||
//if (strlen($call_flow_alternate_data) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_data']."<br>\n"; }
|
||||
//if (strlen($call_flow_description) == 0) { $msg .= $text['message-required']." ".$text['label-call_flow_description']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//if (empty($domain_uuid)) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
|
||||
//if (empty($call_flow_uuid)) { $msg .= $text['message-required']." ".$text['label-call_flow_uuid']."<br>\n"; }
|
||||
//if (empty($dialplan_uuid)) { $msg .= $text['message-required']." ".$text['label-dialplan_uuid']."<br>\n"; }
|
||||
//if (empty($call_flow_name)) { $msg .= $text['message-required']." ".$text['label-call_flow_name']."<br>\n"; }
|
||||
if (empty($call_flow_extension)) { $msg .= $text['message-required']." ".$text['label-call_flow_extension']."<br>\n"; }
|
||||
if (empty($call_flow_feature_code)) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
|
||||
//if (empty($call_flow_context)) { $msg .= $text['message-required']." ".$text['label-call_flow_context']."<br>\n"; }
|
||||
//if (empty($call_flow_status)) { $msg .= $text['message-required']." ".$text['label-call_flow_status']."<br>\n"; }
|
||||
//if (empty($call_flow_pin_number)) { $msg .= $text['message-required']." ".$text['label-call_flow_pin_number']."<br>\n"; }
|
||||
//if (empty($call_flow_label)) { $msg .= $text['message-required']." ".$text['label-call_flow_label']."<br>\n"; }
|
||||
//if (empty($call_flow_sound)) { $msg .= $text['message-required']." ".$text['label-call_flow_sound']."<br>\n"; }
|
||||
if (empty($call_flow_app)) { $msg .= $text['message-required']." ".($text['label-call_flow_app'] ?? '')."<br>\n"; }
|
||||
if (empty($call_flow_data)) { $msg .= $text['message-required']." ".($text['label-call_flow_data'] ?? '')."<br>\n"; }
|
||||
//if (empty($call_flow_alternate_label)) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_label']."<br>\n"; }
|
||||
//if (empty($call_flow_alternate_sound)) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_sound']."<br>\n"; }
|
||||
//if (empty($call_flow_alternate_app)) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_app']."<br>\n"; }
|
||||
//if (empty($call_flow_alternate_data)) { $msg .= $text['message-required']." ".$text['label-call_flow_alternate_data']."<br>\n"; }
|
||||
//if (empty($call_flow_description)) { $msg .= $text['message-required']." ".$text['label-call_flow_description']."<br>\n"; }
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -137,12 +148,12 @@
|
||||
}
|
||||
|
||||
//add the call_flow_uuid
|
||||
if (!is_uuid($call_flow_uuid)) {
|
||||
if (empty($call_flow_uuid)) {
|
||||
$call_flow_uuid = uuid();
|
||||
}
|
||||
|
||||
//add the dialplan_uuid
|
||||
if (!is_uuid($dialplan_uuid)) {
|
||||
if (empty($dialplan_uuid)) {
|
||||
$dialplan_uuid = uuid();
|
||||
}
|
||||
|
||||
@@ -169,16 +180,16 @@
|
||||
$destination_feature = str_replace("+", "\+", $destination_feature);
|
||||
|
||||
//build the xml dialplan
|
||||
$dialplan_xml = "<extension name=\"".$call_flow_name."\" continue=\"\" uuid=\"".$dialplan_uuid."\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".$destination_feature."$\" break=\"on-true\">\n";
|
||||
$dialplan_xml = "<extension name=\"".xml::sanitize($call_flow_name)."\" continue=\"\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_feature)."$\" break=\"on-true\">\n";
|
||||
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"sleep\" data=\"200\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"feature_code=true\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".$call_flow_uuid."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".$destination_extension."$\">\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".$call_flow_uuid."\"/>\n";
|
||||
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_extension)."$\">\n";
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
|
||||
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
|
||||
$dialplan_xml .= " </condition>\n";
|
||||
$dialplan_xml .= "</extension>\n";
|
||||
@@ -232,7 +243,7 @@
|
||||
$database = new database;
|
||||
$database->app_name = 'call_flows';
|
||||
$database->app_uuid = 'b1b70f85-6b42-429b-8c5a-60c8b02b7d14';
|
||||
if (strlen($call_flow_uuid) > 0) {
|
||||
if (!empty($call_flow_uuid)) {
|
||||
$database->uuid($call_flow_uuid);
|
||||
}
|
||||
$database->save($array);
|
||||
@@ -242,6 +253,31 @@
|
||||
$p->delete("dialplan_add", "temp");
|
||||
$p->delete("dialplan_edit", "temp");
|
||||
|
||||
// Update subscribed endpoints
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
//send the event
|
||||
$event = "sendevent PRESENCE_IN\n";
|
||||
$event .= "proto: flow\n";
|
||||
$event .= "event_type: presence\n";
|
||||
$event .= "alt_event_type: dialog\n";
|
||||
$event .= "Presence-Call-Direction: outbound\n";
|
||||
$event .= "state: Active (1 waiting)\n";
|
||||
$event .= "from: flow+".$call_flow_feature_code."@".$_SESSION['domain_name']."\n";
|
||||
$event .= "login: flow+".$call_flow_feature_code."@".$_SESSION['domain_name']."\n";
|
||||
$event .= "unique-id: ".$call_flow_uuid."\n";
|
||||
if ($call_flow_status == "true") {
|
||||
$event .= "answer-state: confirmed\n";
|
||||
} else {
|
||||
$event .= "answer-state: terminated\n";
|
||||
}
|
||||
|
||||
event_socket_request($fp, $event);
|
||||
//echo $event."<br />";
|
||||
fclose($fp);
|
||||
|
||||
}
|
||||
|
||||
//debug info
|
||||
//echo "<pre>";
|
||||
//print_r($message);
|
||||
@@ -271,10 +307,10 @@
|
||||
header("Location: call_flows.php");
|
||||
return;
|
||||
}
|
||||
} //(is_array($_POST) && strlen($_POST["persistformvar"]) == 0)
|
||||
} //(is_array($_POST) && empty($_POST["persistformvar"]))
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && $_POST["persistformvar"] != "true") {
|
||||
if (!empty($_GET) && empty($_POST["persistformvar"])) {
|
||||
$call_flow_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_flows ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -324,10 +360,13 @@
|
||||
}
|
||||
|
||||
//set the context for users that are not in the superadmin group
|
||||
if (strlen($call_flow_context) == 0) {
|
||||
if (empty($call_flow_context)) {
|
||||
$call_flow_context = $_SESSION['domain_name'];
|
||||
}
|
||||
|
||||
//set the defaults
|
||||
if (empty($call_flow_enabled)) { $call_flow_enabled = 'true'; }
|
||||
|
||||
//get the recordings
|
||||
$sql = "select recording_name, recording_filename from v_recordings ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
@@ -389,16 +428,16 @@
|
||||
}
|
||||
//recordings
|
||||
$tmp_selected = false;
|
||||
if (count($recordings) > 0) {
|
||||
if (!empty($recordings)) {
|
||||
echo "<optgroup label=".$text['recordings'].">\n";
|
||||
foreach ($recordings as &$row) {
|
||||
$recording_name = $row["recording_name"];
|
||||
$recording_filename = $row["recording_filename"];
|
||||
if ($var == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && strlen($var) > 0) {
|
||||
if ($var == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && !empty($var)) {
|
||||
$tmp_selected = true;
|
||||
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
|
||||
}
|
||||
else if ($var == $recording_filename && strlen($var) > 0) {
|
||||
else if ($var == $recording_filename && !empty($var)) {
|
||||
$tmp_selected = true;
|
||||
echo " <option value='".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
|
||||
}
|
||||
@@ -414,7 +453,7 @@
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
unset($parameters, $sql);
|
||||
if (is_array($result)) {
|
||||
if (!empty($result)) {
|
||||
echo "<optgroup label='Phrases'>\n";
|
||||
foreach ($result as &$row) {
|
||||
if ($var == "phrase:".$row["phrase_uuid"]) {
|
||||
@@ -431,10 +470,10 @@
|
||||
if ($load_sound) {
|
||||
$file = new file;
|
||||
$sound_files = $file->sounds();
|
||||
if (is_array($sound_files)) {
|
||||
if (!empty($sound_files)) {
|
||||
echo "<optgroup label=".$text["sounds"].">\n";
|
||||
foreach ($sound_files as $value) {
|
||||
if (strlen($value) > 0) {
|
||||
if (!empty($value)) {
|
||||
if (substr($var, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
|
||||
$var = substr($var, 71);
|
||||
}
|
||||
@@ -452,7 +491,7 @@
|
||||
}
|
||||
//select
|
||||
if (if_group("superadmin")) {
|
||||
if (!$tmp_selected && strlen($var) > 0) {
|
||||
if (!$tmp_selected && !empty($var)) {
|
||||
echo "<optgroup label='Selected'>\n";
|
||||
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$var)) {
|
||||
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($var)."' selected='selected'>".escape($var)."</option>\n";
|
||||
@@ -537,7 +576,7 @@
|
||||
echo " <select class='formfld' name='call_flow_status'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($call_flow_status == "true") {
|
||||
if (strlen($call_flow_label) > 0) {
|
||||
if (!empty($call_flow_label)) {
|
||||
echo " <option value='true' selected='selected'>".escape($call_flow_label)."</option>\n";
|
||||
}
|
||||
else {
|
||||
@@ -545,7 +584,7 @@
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strlen($call_flow_label) > 0) {
|
||||
if (!empty($call_flow_label)) {
|
||||
echo " <option value='true'>".escape($call_flow_label)."</option>\n";
|
||||
}
|
||||
else {
|
||||
@@ -553,7 +592,7 @@
|
||||
}
|
||||
}
|
||||
if ($call_flow_status == "false") {
|
||||
if (strlen($call_flow_alternate_label) > 0) {
|
||||
if (!empty($call_flow_alternate_label)) {
|
||||
echo " <option value='false' selected='selected'>".escape($call_flow_alternate_label)."</option>\n";
|
||||
}
|
||||
else {
|
||||
@@ -561,7 +600,7 @@
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strlen($call_flow_alternate_label) > 0) {
|
||||
if (!empty($call_flow_alternate_label)) {
|
||||
echo " <option value='false'>".escape($call_flow_alternate_label)."</option>\n";
|
||||
}
|
||||
else {
|
||||
@@ -592,7 +631,7 @@
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='call_flow_label' maxlength='255' value=\"".escape($call_flow_label)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-call_flow_label']."\n";
|
||||
echo !empty($text['description-call_flow_label'])."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
@@ -616,9 +655,9 @@
|
||||
echo " ".$text['label-call_flow_destination']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
$select_value = '';
|
||||
//set the selected value
|
||||
if (strlen($call_flow_app.$call_flow_data) > 0) {
|
||||
$select_value = '';
|
||||
if (!empty($call_flow_app) && !empty($call_flow_data)) {
|
||||
$select_value = $call_flow_app.':'.$call_flow_data;
|
||||
}
|
||||
//show the destination list
|
||||
@@ -661,7 +700,7 @@
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
$select_value = '';
|
||||
if (strlen($call_flow_alternate_app.$call_flow_alternate_data) > 0) {
|
||||
if (!empty($call_flow_alternate_app) && !empty($call_flow_alternate_data)) {
|
||||
$select_value = $call_flow_alternate_app.':'.$call_flow_alternate_data;
|
||||
}
|
||||
echo $destination->select('dialplan', 'call_flow_alternate_destination', $select_value);
|
||||
@@ -689,21 +728,18 @@
|
||||
echo " ".$text['label-enabled']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width=\"70%\" class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='call_flow_enabled'>\n";
|
||||
if ($call_flow_enabled == "true") {
|
||||
echo " <option value='true' selected='selected'>".$text['option-true']."</option>\n";
|
||||
if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') {
|
||||
echo " <label class='switch'>\n";
|
||||
echo " <input type='checkbox' id='call_flow_enabled' name='call_flow_enabled' value='true' ".($call_flow_enabled == 'true' ? "checked='checked'" : null).">\n";
|
||||
echo " <span class='slider'></span>\n";
|
||||
echo " </label>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='true'>".$text['option-true']."</option>\n";
|
||||
echo " <select class='formfld' id='call_flow_enabled' name='call_flow_enabled'>\n";
|
||||
echo " <option value='true' ".($call_flow_enabled == 'true' ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
|
||||
echo " <option value='false' ".($call_flow_enabled == 'false' ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
|
||||
echo " </select>\n";
|
||||
}
|
||||
if ($call_flow_enabled == "false") {
|
||||
echo " <option value='false' selected='selected'>".$text['option-false']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='false'>".$text['option-false']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-call_flow_description']."\n";
|
||||
@@ -711,7 +747,7 @@
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='call_flow_description' maxlength='255' value=\"".escape($call_flow_description)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-call_flow_description']."\n";
|
||||
echo !empty($text['description-call_flow_description'])."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2020
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/paging.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
@@ -43,16 +42,24 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//set from session variables
|
||||
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
|
||||
|
||||
//get search
|
||||
$search = $_REQUEST['search'] ?? null;
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_flows'])) {
|
||||
if (!empty($_POST['call_flows'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_flows = $_POST['call_flows'];
|
||||
$toggle_field = $_POST['toggle_field'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_flows) && @sizeof($call_flows) != 0) {
|
||||
if (!empty($action) && !empty($call_flows)) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_flow_add')) {
|
||||
@@ -80,12 +87,12 @@
|
||||
}
|
||||
|
||||
//get variables used to control the order
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$search = strtolower($search ?? '');
|
||||
if (!empty($search)) {
|
||||
$sql_search = "and (";
|
||||
$sql_search .= "lower(call_flow_name) like :search ";
|
||||
$sql_search .= "or lower(call_flow_extension) like :search ";
|
||||
@@ -102,32 +109,32 @@
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) from v_call_flows ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] != "all" || !permission_exists('call_flow_all')) {
|
||||
if ($show != "all" || !permission_exists('call_flow_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
$sql .= $sql_search;
|
||||
$sql .= $sql_search ?? '';
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($_GET['show'] == "all" && permission_exists('call_flow_all')) {
|
||||
if ($show == "all" && permission_exists('call_flow_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(*)', '*', $sql);
|
||||
$sql = str_replace('count(*)', '*', $sql ?? '');
|
||||
$sql .= order_by($order_by, $order, 'call_flow_name', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$call_flows = $database->select($sql, $parameters, 'all');
|
||||
$call_flows = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
@@ -171,7 +178,7 @@
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_flow_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
if ($show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
@@ -211,10 +218,10 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($call_flows ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(!empty($call_flows) ?: "style='visibility: hidden;'").">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_flow_all')) {
|
||||
if ($show == "all" && permission_exists('call_flow_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo th_order_by('call_flow_name', $text['label-call_flow_name'], $order_by, $order);
|
||||
@@ -226,12 +233,12 @@
|
||||
}
|
||||
echo th_order_by('call_flow_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
|
||||
echo th_order_by('call_flow_description', $text['label-call_flow_description'], $order_by, $order, null, "class='hide-sm-dn'");
|
||||
if (permission_exists('call_flow_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($call_flows)) {
|
||||
if (!empty($call_flows)) {
|
||||
$x = 0;
|
||||
foreach ($call_flows as $row) {
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
@@ -244,8 +251,8 @@
|
||||
echo " <input type='hidden' name='call_flows[$x][uuid]' value='".escape($row['call_flow_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_flow_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
if ($show == "all" && permission_exists('call_flow_all')) {
|
||||
if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
@@ -278,7 +285,7 @@
|
||||
echo escape($row['call_flow_enabled']);
|
||||
}
|
||||
echo " <td class='description overflow hide-sm-dn'>".escape($row['call_flow_description'])." </td>\n";
|
||||
if (permission_exists('call_flow_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -60,16 +60,6 @@ if (!class_exists('call_flows')) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
@@ -197,17 +187,20 @@ if (!class_exists('call_flows')) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select ".$this->uuid_prefix."uuid as uuid, ".$this->toggle_field." as toggle, dialplan_uuid, call_flow_context from v_".$this->table." ";
|
||||
|
||||
if (!empty($uuids)) {
|
||||
$sql = "select ".$this->uuid_prefix."uuid as uuid, ".$this->toggle_field." as toggle, ";
|
||||
$sql .= "dialplan_uuid, call_flow_feature_code, call_flow_context from v_".$this->table." ";
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
if (!empty($rows)) {
|
||||
foreach ($rows as $row) {
|
||||
$call_flows[$row['uuid']]['state'] = $row['toggle'];
|
||||
$call_flows[$row['uuid']]['dialplan_uuid'] = $row['dialplan_uuid'];
|
||||
$call_flows[$row['uuid']]['call_flow_feature_code'] = $row['call_flow_feature_code'];
|
||||
$call_flow_contexts[] = $row['call_flow_context'];
|
||||
}
|
||||
}
|
||||
@@ -263,7 +256,37 @@ if (!class_exists('call_flows')) {
|
||||
//set message
|
||||
message::add($text['message-toggle']);
|
||||
}
|
||||
unset($records, $call_flows);
|
||||
unset($records);
|
||||
|
||||
//toggle the presence
|
||||
if ($this->toggle_field != 'call_flow_enabled') {
|
||||
foreach($call_flows as $uuid => $row) {
|
||||
//prepare the event
|
||||
$cmd = "sendevent PRESENCE_IN\n";
|
||||
$cmd .= "proto: flow\n";
|
||||
$cmd .= "login: ".$row['call_flow_feature_code']."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "from: ".$row['call_flow_feature_code']."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "status: Active (1 waiting)\n";
|
||||
$cmd .= "rpid: unknown\n";
|
||||
$cmd .= "event_type: presence\n";
|
||||
$cmd .= "alt_event_type: dialog\n";
|
||||
$cmd .= "event_count: 1\n";
|
||||
$cmd .= "unique-id: ".uuid()."\n";
|
||||
$cmd .= "Presence-Call-Direction: outbound\n";
|
||||
if ($call_flow['state'] == 'true') {
|
||||
$cmd .= "answer-state: confirmed\n";
|
||||
}
|
||||
else {
|
||||
$cmd .= "answer-state: terminated\n";
|
||||
}
|
||||
|
||||
//send the event
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$switch_result = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
unset($call_flows);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -80,5 +80,53 @@
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_order'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the default Follow Me Timeout value.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ed901e23-1abb-454c-b0d3-e986efed9f56";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_call_forward";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#2a9df4";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b65593fa-fe16-4380-936c-16d0d2e9bf48";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_follow_me";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#03c04a";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c21c0ab6-5d23-4079-ba4d-439547f81978";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_do_not_disturb";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#ea4c46";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d5dc5bcb-65ff-46a6-9d1a-c83b19c3782e";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_color_active";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#d4d4d4";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "add25bdb-c0a5-44e7-adf0-87dea41955e7";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_border_color";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "rgba(0,0,0,0)";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3b2384d4-be62-44a1-96dc-27bb470f9473";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dashboard";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_forward_chart_border_width";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
|
||||
?>
|
||||
|
||||
+517
-355
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Forward";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Forward";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "نداء إلى الأمام";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Rufumleitung";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Rufumleitung";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Rufumleitung";
|
||||
@@ -11,23 +11,28 @@
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Reenvio de Llamadas";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Renvoi d'appel";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Renvoi d'appel";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "העבר שיחה";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Inoltro";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep doorsturen";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Przekierowanie";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Encaminhamento de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Encaminhamento de Chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Redirectionare apel";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Переадресация";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Vidarekoppling";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Переадресація";
|
||||
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "呼叫转移";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コールフォワード";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "착신 전환";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "4e4df00b-aafb-45a8-82c1-cdabc921889c";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_forward/call_forward.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "user";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
+131
-124
@@ -1,40 +1,42 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
The Original Code is FusionPBX
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2021
|
||||
the Initial Developer. All Rights Reserved.
|
||||
The Original Code is FusionPBX
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2021
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//set default
|
||||
$is_included = false;
|
||||
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
@@ -43,15 +45,13 @@
|
||||
$language = new text;
|
||||
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_forward');
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['extensions'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$extensions = $_POST['extensions'];
|
||||
}
|
||||
//get posted data and set defaults
|
||||
$action = $_POST['action'] ?? '';
|
||||
$search = $_POST['search'] ?? '';
|
||||
$extensions = $_POST['extensions'] ?? [];
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($extensions) && @sizeof($extensions) != 0) {
|
||||
if (!empty($action) && count($extensions) > 0) {
|
||||
switch ($action) {
|
||||
case 'toggle_call_forward':
|
||||
if (permission_exists('call_forward')) {
|
||||
@@ -73,145 +73,154 @@
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_forward.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
header('Location: call_forward.php' . ($search != '' ? '?search=' . urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//get the search
|
||||
$search = strtolower($_GET["search"]);
|
||||
$search = strtolower($_GET["search"] ?? '');
|
||||
|
||||
//set the show variable
|
||||
$show = $_GET['show'] ?? '';
|
||||
|
||||
//define select count query
|
||||
$sql = "select count(*) from v_extensions ";
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
if ($show === "all" && permission_exists('call_forward_all')) {
|
||||
$sql .= "where true ";
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (strlen($search) > 0) {
|
||||
if (!empty($search)) {
|
||||
$sql .= "and ( ";
|
||||
$sql .= "extension like :search ";
|
||||
$sql .= "or lower(description) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
$parameters['search'] = '%' . $search . '%';
|
||||
}
|
||||
$sql .= "and enabled = 'true' ";
|
||||
if (!permission_exists('extension_edit')) {
|
||||
if (is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
if (!empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
$sql .= "and (";
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
if ($x > 0) { $sql .= "or "; }
|
||||
$sql .= "extension = '".$row['user']."' ";
|
||||
foreach ($_SESSION['user']['extension'] as $row) {
|
||||
if ($x > 0) {
|
||||
$sql .= "or ";
|
||||
}
|
||||
$sql .= "extension = '" . $row['user'] . "' ";
|
||||
$x++;
|
||||
}
|
||||
$sql .= ")";
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
//used to hide any results when a user has not been assigned an extension
|
||||
$sql .= "and extension = 'disabled' ";
|
||||
}
|
||||
}
|
||||
$sql .= $sql_search;
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
unset($parameters);
|
||||
|
||||
//prepare the paging
|
||||
if ($is_included) {
|
||||
$rows_per_page = 10;
|
||||
$rows_per_page = !empty($_SESSION['domain']['paging']['numeric']) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
|
||||
if ($search) {
|
||||
$params[] = "search=" . $search;
|
||||
}
|
||||
else {
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
if ($order_by) {
|
||||
$params[] = "order_by=" . $order_by;
|
||||
}
|
||||
$params[] = "app_uuid=".$app_uuid;
|
||||
if ($search) { $params[] = "search=".$search; }
|
||||
if ($order_by) { $params[] = "order_by=".$order_by; }
|
||||
if ($order) { $params[] = "order=".$order; }
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
$params[] .= "show=all";
|
||||
if ($order) {
|
||||
$params[] = "order=" . $order;
|
||||
}
|
||||
$param = $params ? implode('&', $params) : null;
|
||||
if ($show == "all" && permission_exists('call_forward_all')) {
|
||||
$params[] = "show=all";
|
||||
}
|
||||
$param = !empty($params) ? implode('&', $params) : '';
|
||||
unset($params);
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) {
|
||||
$page = 0;
|
||||
$_GET['page'] = 0;
|
||||
}
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = "select * from v_extensions ";
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
if ($show == "all" && permission_exists('call_forward_all')) {
|
||||
$sql .= "where true ";
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (strlen($search) > 0) {
|
||||
if (!empty($search)) {
|
||||
$sql .= "and ( ";
|
||||
$sql .= "extension like :search ";
|
||||
$sql .= "or lower(description) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
$parameters['search'] = '%' . $search . '%';
|
||||
}
|
||||
$sql .= "and enabled = 'true' ";
|
||||
if (!permission_exists('extension_edit')) {
|
||||
if (is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
if (!empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
$sql .= "and (";
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
if ($x > 0) { $sql .= "or "; }
|
||||
$sql .= "extension = '".$row['user']."' ";
|
||||
foreach ($_SESSION['user']['extension'] as $row) {
|
||||
if ($x > 0) {
|
||||
$sql .= "or ";
|
||||
}
|
||||
$sql .= "extension = '" . $row['user'] . "' ";
|
||||
$x++;
|
||||
}
|
||||
$sql .= ")";
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
//used to hide any results when a user has not been assigned an extension
|
||||
$sql .= "and extension = 'disabled' ";
|
||||
}
|
||||
}
|
||||
$sql .= $sql_search;
|
||||
$sql .= order_by($order_by, $order, 'extension', 'asc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$extensions = $database->select($sql, $parameters, 'all');
|
||||
$extensions = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($parameters);
|
||||
|
||||
//if there are no extensions then set to empty array
|
||||
if($extensions === false) {
|
||||
$extensions = [];
|
||||
}
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include header
|
||||
if (!$is_included) {
|
||||
$document['title'] = $text['title-call_forward'];
|
||||
$document['title'] = $text['title-call_forward'];
|
||||
}
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
if ($is_included) {
|
||||
echo "<div class='action_bar sub'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_forward']."</b></div>\n";
|
||||
echo " <div class='heading'><b>" . $text['header-call_forward'] . "</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if ($num_rows > 10) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-view_all'],'icon'=>'project-diagram','collapse'=>false,'link'=>PROJECT_PATH.'/app/call_forward/call_forward.php']);
|
||||
echo button::create(['type' => 'button', 'label' => $text['button-view_all'], 'icon' => 'project-diagram', 'collapse' => false, 'link' => PROJECT_PATH . '/app/call_forward/call_forward.php']);
|
||||
}
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_forward']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='heading'><b>" . $text['header-call_forward'] . " (" . $num_rows . ")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
|
||||
if ($extensions) {
|
||||
if (count($extensions) > 0) {
|
||||
if (permission_exists('call_forward')) {
|
||||
echo button::create(['type' => 'button', 'label' => $text['label-call_forward'], 'icon' => $_SESSION['theme']['button_icon_toggle'], 'collapse' => false, 'name' => 'btn_toggle_cfwd', 'onclick' => "list_action_set('toggle_call_forward'); modal_open('modal-toggle','btn_toggle');"]);
|
||||
}
|
||||
@@ -222,87 +231,87 @@
|
||||
echo button::create(['type' => 'button', 'label' => $text['label-dnd'], 'icon' => $_SESSION['theme']['button_icon_toggle'], 'collapse' => false, 'name' => 'btn_toggle_dnd', 'onclick' => "list_action_set('toggle_do_not_disturb'); modal_open('modal-toggle','btn_toggle');"]);
|
||||
}
|
||||
}
|
||||
if ($_GET['show'] !== 'all' && permission_exists('call_forward_all')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?show=all'.($params ? '&'.implode('&', $params) : null)]);
|
||||
if ($show !== 'all' && permission_exists('call_forward_all')) {
|
||||
echo button::create(['type' => 'button', 'label' => $text['button-show_all'], 'icon' => $_SESSION['theme']['button_icon_all'], 'link' => '?show=all' . $param]);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if ($_GET['show'] == 'all' && permission_exists('call_forward_all')) {
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if ($show == 'all' && permission_exists('call_forward_all')) {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search']);
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"" . escape($search) . "\" placeholder=\"" . $text['label-search'] . "\" onkeydown=''>";
|
||||
echo button::create(['label' => $text['button-search'], 'icon' => $_SESSION['theme']['button_icon_search'], 'type' => 'submit', 'id' => 'btn_search']);
|
||||
//echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_forward.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($paging_controls_mini != '') {
|
||||
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>";
|
||||
if (!empty($paging_controls_mini)) {
|
||||
echo "<span style='margin-left: 15px;'>" . $paging_controls_mini . "</span>";
|
||||
}
|
||||
echo " </form>\n";
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
if ($extensions) {
|
||||
echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_form_submit('form_list');"])]);
|
||||
if (count($extensions) > 0) {
|
||||
echo modal::create(['id' => 'modal-toggle', 'type' => 'toggle', 'actions' => button::create(['type' => 'button', 'label' => $text['button-continue'], 'icon' => 'check', 'id' => 'btn_toggle', 'style' => 'float: right; margin-left: 15px;', 'collapse' => 'never', 'onclick' => "modal_close(); list_form_submit('form_list');"])]);
|
||||
}
|
||||
|
||||
echo $text['description-call_routing']."\n";
|
||||
echo $text['description-call_routing'] . "\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
if ($_GET['show'] == 'all' && permission_exists('call_forward_all')) {
|
||||
if ($show == 'all' && permission_exists('call_forward_all')) {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
echo "<input type='hidden' name='search' value=\"" . escape($search) . "\">\n";
|
||||
}
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (!$is_included) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle();' ".($extensions ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle();' " . (empty($extensions) ?: "style='visibility: hidden;'") . ">\n";
|
||||
echo " </th>\n";
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
echo "<th>".$text['label-domain']."</th>\n";
|
||||
if ($show == "all" && permission_exists('call_forward_all')) {
|
||||
echo "<th>" . $text['label-domain'] . "</th>\n";
|
||||
}
|
||||
}
|
||||
echo " <th>".$text['label-extension']."</th>\n";
|
||||
echo " <th>" . $text['label-extension'] . "</th>\n";
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " <th>".$text['label-call_forward']."</th>\n";
|
||||
echo " <th>" . $text['label-call_forward'] . "</th>\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
echo " <th>".$text['label-follow_me']."</th>\n";
|
||||
echo " <th>" . $text['label-follow_me'] . "</th>\n";
|
||||
}
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " <th>".$text['label-dnd']."</th>\n";
|
||||
echo " <th>" . $text['label-dnd'] . "</th>\n";
|
||||
}
|
||||
echo " <th class='".($is_included ? 'hide-md-dn' : 'hide-sm-dn')."'>".$text['label-description']."</th>\n";
|
||||
if ($_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
echo " <th class='" . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . $text['label-description'] . "</th>\n";
|
||||
$list_row_edit_button = $_SESSION['theme']['list_row_edit_button']['boolean'] ?? 'false';
|
||||
if ( $list_row_edit_button === 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($extensions)) {
|
||||
if (!empty($extensions)) {
|
||||
$x = 0;
|
||||
foreach($extensions as $row) {
|
||||
$list_row_url = PROJECT_PATH."/app/call_forward/call_forward_edit.php?id=".$row['extension_uuid']."&return_url=".urlencode($_SERVER['REQUEST_URI']);
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
foreach ($extensions as $row) {
|
||||
$list_row_url = PROJECT_PATH . "/app/call_forward/call_forward_edit.php?id=" . $row['extension_uuid'] . "&return_url=" . urlencode($_SERVER['REQUEST_URI']);
|
||||
echo "<tr class='list-row' href='" . $list_row_url . "'>\n";
|
||||
if (!$is_included && $extensions) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='extensions[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
echo " <input type='hidden' name='extensions[$x][uuid]' value='".escape($row['extension_uuid'])."' />\n";
|
||||
echo " <input type='checkbox' name='extensions[$x][checked]' id='checkbox_" . $x . "' value='true' onclick=\"if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
echo " <input type='hidden' name='extensions[$x][uuid]' value='" . escape($row['extension_uuid']) . "' />\n";
|
||||
echo " </td>\n";
|
||||
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
if ($show == "all" && permission_exists('call_forward_all')) {
|
||||
if (!empty($_SESSION['domains'][$row['domain_uuid']]['domain_name'])) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
echo " <td>" . escape($domain) . "</td>\n";
|
||||
}
|
||||
}
|
||||
echo " <td><a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['extension'])."</a></td>\n";
|
||||
echo " <td><a href='" . $list_row_url . "' title=\"" . $text['button-edit'] . "\">" . escape($row['extension']) . "</a></td>\n";
|
||||
if (permission_exists('call_forward')) {
|
||||
//-- inline toggle -----------------
|
||||
//$button_label = $row['forward_all_enabled'] == 'true' ? ($row['forward_all_destination'] != '' ? escape(format_phone($row['forward_all_destination'])) : '('.$text['label-invalid'].')') : null;
|
||||
@@ -345,7 +354,6 @@
|
||||
//}
|
||||
//unset($button_label);
|
||||
//----------------------------------
|
||||
|
||||
//get destination count
|
||||
$follow_me_destination_count = 0;
|
||||
if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) {
|
||||
@@ -355,11 +363,11 @@
|
||||
$parameters['follow_me_uuid'] = $row['follow_me_uuid'];
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$follow_me_destination_count = $database->select($sql, $parameters, 'column');
|
||||
$follow_me_destination_count = $database->select($sql, $parameters ?? null, 'column');
|
||||
unset($sql, $parameters);
|
||||
}
|
||||
echo " <td>\n";
|
||||
echo $follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : ' ';
|
||||
echo $follow_me_destination_count ? $text['label-enabled'] . ' (' . $follow_me_destination_count . ')' : ' ';
|
||||
echo " </td>\n";
|
||||
}
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
@@ -379,10 +387,10 @@
|
||||
echo $row['do_not_disturb'] == 'true' ? $text['label-enabled'] : ' ';
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo " <td class='description overflow ".($is_included ? 'hide-md-dn' : 'hide-sm-dn')."'>".escape($row['description'])." </td>\n";
|
||||
if ($_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
echo " <td class='description overflow " . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . escape($row['description']) . " </td>\n";
|
||||
if ($list_row_edit_button === 'true') {
|
||||
echo " <td class='action-button'>";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
|
||||
echo button::create(['type' => 'button', 'title' => $text['button-edit'], 'icon' => $_SESSION['theme']['button_icon_edit'], 'link' => $list_row_url]);
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
@@ -395,13 +403,12 @@
|
||||
|
||||
if (!$is_included) {
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
echo "<div align='center'>" . $paging_controls . "</div>\n";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
echo "<input type='hidden' name='" . $token['name'] . "' value='" . $token['hash'] . "'>\n";
|
||||
|
||||
echo "</form>\n";
|
||||
|
||||
require_once "resources/footer.php";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2021
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2022
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -25,9 +25,8 @@
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -45,7 +44,7 @@
|
||||
|
||||
//define the destination_select function
|
||||
function destination_select($select_name, $select_value, $select_default) {
|
||||
if (strlen($select_value) == 0) { $select_value = $select_default; }
|
||||
if (empty($select_value)) { $select_value = $select_default; }
|
||||
echo " <select class='formfld' style='width: 55px;' name='$select_name'>\n";
|
||||
$i = 0;
|
||||
while($i <= 100) {
|
||||
@@ -83,7 +82,7 @@
|
||||
$parameters['extension_uuid'] = $extension_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$extension = $row["extension"];
|
||||
$number_alias = $row["number_alias"];
|
||||
$accountcode = $row["accountcode"];
|
||||
@@ -91,7 +90,7 @@
|
||||
$effective_caller_id_number = $row["effective_caller_id_number"];
|
||||
$outbound_caller_id_name = $row["outbound_caller_id_name"];
|
||||
$outbound_caller_id_number = $row["outbound_caller_id_number"];
|
||||
$do_not_disturb = $row["do_not_disturb"] != '' ? $row["do_not_disturb"] : 'false';
|
||||
$do_not_disturb = !empty($row["do_not_disturb"]) ? $row["do_not_disturb"] : 'false';
|
||||
$forward_all_destination = $row["forward_all_destination"];
|
||||
$forward_all_enabled = $row["forward_all_enabled"];
|
||||
$forward_busy_destination = $row["forward_busy_destination"];
|
||||
@@ -109,10 +108,10 @@
|
||||
unset($sql, $parameters, $row);
|
||||
|
||||
//process post vars
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (!empty($_POST) && empty($_POST["persistformvar"])) {
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (count($_POST) > 0) {
|
||||
if (!empty($_POST)) {
|
||||
$forward_all_enabled = $_POST["forward_all_enabled"];
|
||||
$forward_all_destination = $_POST["forward_all_destination"];
|
||||
$forward_busy_enabled = $_POST["forward_busy_enabled"];
|
||||
@@ -122,8 +121,8 @@
|
||||
$forward_user_not_registered_enabled = $_POST["forward_user_not_registered_enabled"];
|
||||
$forward_user_not_registered_destination = $_POST["forward_user_not_registered_destination"];
|
||||
|
||||
$cid_name_prefix = $_POST["cid_name_prefix"];
|
||||
$cid_number_prefix = $_POST["cid_number_prefix"];
|
||||
$cid_name_prefix = $_POST["cid_name_prefix"] ?? '';
|
||||
$cid_number_prefix = $_POST["cid_number_prefix"] ?? '';
|
||||
$follow_me_enabled = $_POST["follow_me_enabled"];
|
||||
$follow_me_ignore_busy = $_POST["follow_me_ignore_busy"];
|
||||
|
||||
@@ -135,7 +134,7 @@
|
||||
$destinations[$n]['delay'] = $field['delay'];
|
||||
$destinations[$n]['prompt'] = $field['prompt'];
|
||||
$destinations[$n]['timeout'] = $field['timeout'];
|
||||
if ($field['destination'] != '') {
|
||||
if (!empty($field['destination'])) {
|
||||
$destination_found = true;
|
||||
}
|
||||
$n++;
|
||||
@@ -152,8 +151,8 @@
|
||||
}
|
||||
|
||||
//check for all required data
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
$document['title'] = $text['title-call_routing'];
|
||||
if (!empty($msg) && empty($_POST["persistformvar"])) {
|
||||
$document['title'] = $text['title-call_forward'];
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
@@ -231,7 +230,7 @@
|
||||
$d = 0;
|
||||
$destination_found = false;
|
||||
foreach ($destinations as $field) {
|
||||
if ($field['destination'] != '') {
|
||||
if (!empty($field['destination'])) {
|
||||
//sanitize the destination
|
||||
$field['destination'] = preg_replace('#[^\*0-9]#', '', $field['destination']);
|
||||
|
||||
@@ -259,22 +258,21 @@
|
||||
|
||||
//save the data
|
||||
$database = new database;
|
||||
$database->app_name = 'call_routing';
|
||||
$database->app_name = 'call_forward';
|
||||
$database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
//$message = $database->message;
|
||||
|
||||
//remove the temporary permission
|
||||
$p->delete("extension_edit", "temp");
|
||||
|
||||
//delete empty destination records
|
||||
if (is_array($follow_me_delete_uuids) && sizeof($follow_me_delete_uuids) > 0) {
|
||||
if (!empty($follow_me_delete_uuids)) {
|
||||
foreach ($follow_me_delete_uuids as $follow_me_delete_uuid) {
|
||||
$array['follow_me_destinations'][]['follow_me_destination_uuid'] = $follow_me_delete_uuid;
|
||||
}
|
||||
$database = new database;
|
||||
$database->app_name = 'call_routing';
|
||||
$database->app_name = 'call_forward';
|
||||
$database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
@@ -348,7 +346,7 @@
|
||||
*/
|
||||
|
||||
//send feature event notify to the phone
|
||||
if ($_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
$ring_count = ceil($call_timeout / 6);
|
||||
$feature_event_notify = new feature_event_notify;
|
||||
$feature_event_notify->domain_name = $_SESSION['domain_name'];
|
||||
@@ -383,8 +381,55 @@
|
||||
unset($feature_event_notify);
|
||||
}
|
||||
|
||||
//send presence event
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
if ($dnd_enabled == 'true') {
|
||||
//build the event
|
||||
$cmd = "sendevent PRESENCE_IN\n";
|
||||
$cmd .= "proto: sip\n";
|
||||
$cmd .= "login: ".$extension."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "from: ".$extension."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "status: Active (1 waiting)\n";
|
||||
$cmd .= "rpid: unknown\n";
|
||||
$cmd .= "event_type: presence\n";
|
||||
$cmd .= "alt_event_type: dialog\n";
|
||||
$cmd .= "event_count: 1\n";
|
||||
$cmd .= "unique-id: ".uuid()."\n";
|
||||
$cmd .= "Presence-Call-Direction: outbound\n";
|
||||
$cmd .= "answer-state: confirmed\n";
|
||||
|
||||
//send the event
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$switch_result = event_socket_request($fp, $cmd);
|
||||
unset($fp);
|
||||
}
|
||||
else {
|
||||
$presence = new presence;
|
||||
if (!$presence->active($extension."@".$_SESSION['domain_name'])) {
|
||||
//build the event
|
||||
$cmd = "sendevent PRESENCE_IN\n";
|
||||
$cmd .= "proto: sip\n";
|
||||
$cmd .= "login: ".$extension."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "from: ".$extension."@".$_SESSION['domain_name']."\n";
|
||||
$cmd .= "status: Active (1 waiting)\n";
|
||||
$cmd .= "rpid: unknown\n";
|
||||
$cmd .= "event_type: presence\n";
|
||||
$cmd .= "alt_event_type: dialog\n";
|
||||
$cmd .= "event_count: 1\n";
|
||||
$cmd .= "unique-id: ".uuid()."\n";
|
||||
$cmd .= "Presence-Call-Direction: outbound\n";
|
||||
$cmd .= "answer-state: terminated\n";
|
||||
|
||||
//send the event
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$switch_result = event_socket_request($fp, $cmd);
|
||||
unset($fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
if (is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
require_once "app/extensions/resources/classes/extension.php";
|
||||
$ext = new extension;
|
||||
$ext->xml();
|
||||
@@ -394,7 +439,7 @@
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$extension."@".$_SESSION['domain_name']);
|
||||
if (strlen($number_alias) > 0) {
|
||||
if (!empty($number_alias)) {
|
||||
$cache->delete("directory:".$number_alias."@".$_SESSION['domain_name']);
|
||||
}
|
||||
|
||||
@@ -403,11 +448,11 @@
|
||||
}
|
||||
|
||||
//show the header
|
||||
$document['title'] = $text['title-call_routing'];
|
||||
$document['title'] = $text['title-call_forward'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//pre-populate the form
|
||||
if (is_uuid($follow_me_uuid)) {
|
||||
if (!empty($follow_me_uuid) && is_uuid($follow_me_uuid)) {
|
||||
$sql = "select * from v_follow_me ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and follow_me_uuid = :follow_me_uuid ";
|
||||
@@ -417,7 +462,7 @@
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
unset($sql, $parameters);
|
||||
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
if (!empty($row)) {
|
||||
$cid_name_prefix = $row["cid_name_prefix"];
|
||||
$cid_number_prefix = $row["cid_number_prefix"];
|
||||
$follow_me_enabled = $row["follow_me_enabled"];
|
||||
@@ -442,6 +487,15 @@
|
||||
unset($sql, $parameters, $result, $row);
|
||||
}
|
||||
}
|
||||
|
||||
//add the pre-defined follow me destinations
|
||||
for ($n = 0; $n <= (((!empty($_SESSION['follow_me']['max_destinations']['numeric'])) ? $_SESSION['follow_me']['max_destinations']['numeric'] : 5) - 1); $n++) {
|
||||
if (empty($destinations[$n]['uuid'])) { $destinations[$n]['uuid'] = null; }
|
||||
if (empty($destinations[$n]['destination'])) { $destinations[$n]['destination'] = null; }
|
||||
if (empty($destinations[$n]['delay'])) { $destinations[$n]['delay'] = null; }
|
||||
if (empty($destinations[$n]['prompt'])) { $destinations[$n]['prompt'] = null; }
|
||||
if (empty($destinations[$n]['timeout'])) { $destinations[$n]['timeout'] = 30; }
|
||||
}
|
||||
|
||||
//get the extensions array - used with autocomplete
|
||||
$sql = "select * from v_extensions ";
|
||||
@@ -453,36 +507,35 @@
|
||||
unset($sql, $parameters, $row);
|
||||
|
||||
//set the default
|
||||
if (!isset($dnd_enabled)) {
|
||||
if (empty($dnd_enabled)) {
|
||||
//set the value from the database
|
||||
$dnd_enabled = $do_not_disturb;
|
||||
}
|
||||
|
||||
//prepare the autocomplete
|
||||
if($_SESSION['follow_me']['follow_me_autocomplete']['boolean'] == 'true') {
|
||||
|
||||
echo "<link rel=\"stylesheet\" href=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.css\" />\n";
|
||||
echo "<script src=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.js\"></script>\n";
|
||||
echo "<script type=\"text/javascript\">\n";
|
||||
echo "\$(function() {\n";
|
||||
echo " var extensions = [\n";
|
||||
foreach ($extensions as &$row) {
|
||||
if (strlen($number_alias) == 0) {
|
||||
echo " \"".escape($row["extension"])."\",\n";
|
||||
if(!empty($_SESSION['follow_me']['follow_me_autocomplete']['boolean']) && $_SESSION['follow_me']['follow_me_autocomplete']['boolean'] == 'true') {
|
||||
echo "<link rel=\"stylesheet\" href=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.css\" />\n";
|
||||
echo "<script src=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.js\"></script>\n";
|
||||
echo "<script type=\"text/javascript\">\n";
|
||||
echo "\$(function() {\n";
|
||||
echo " var extensions = [\n";
|
||||
foreach ($extensions as &$row) {
|
||||
if (empty($number_alias)) {
|
||||
echo " \"".escape($row["extension"])."\",\n";
|
||||
}
|
||||
else {
|
||||
echo " \"".escape($row["number_alias"])."\",\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo " \"".escape($row["number_alias"])."\",\n";
|
||||
echo " ];\n";
|
||||
for ($n = 0; $n <= (((!empty($_SESSION['follow_me']['max_destinations']['numeric'])) ? $_SESSION['follow_me']['max_destinations']['numeric'] : 5) - 1); $n++) {
|
||||
echo " \$(\"#destination_".$n."\").autocomplete({\n";
|
||||
echo " source: extensions\n";
|
||||
echo " });\n";
|
||||
}
|
||||
}
|
||||
echo " ];\n";
|
||||
for ($n = 0; $n <= ((($_SESSION['follow_me']['max_destinations']['numeric'] != '') ? $_SESSION['follow_me']['max_destinations']['numeric'] : 5) - 1); $n++) {
|
||||
echo " \$(\"#destination_".$n."\").autocomplete({\n";
|
||||
echo " source: extensions\n";
|
||||
echo " });\n";
|
||||
}
|
||||
|
||||
echo "});\n";
|
||||
echo "</script>\n";
|
||||
|
||||
echo "});\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
|
||||
//create token
|
||||
@@ -511,10 +564,10 @@
|
||||
echo " <strong>".$text['label-call_forward']."</strong>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
$on_click .= "$('#tr_follow_me_settings').slideUp('fast'); ";
|
||||
$on_click = "$('#tr_follow_me_settings').slideUp('fast'); ";
|
||||
$on_click .= "document.getElementById('dnd_disabled').checked=true; ";
|
||||
$on_click .= "document.getElementById('forward_all_destination').focus(); ";
|
||||
$on_click2 .= "(document.getElementById('follow_me_enabled').checked) ? $('#tr_follow_me_settings').slideDown('fast') : '' ";
|
||||
$on_click2 = "(document.getElementById('follow_me_enabled').checked) ? $('#tr_follow_me_settings').slideDown('fast') : '' ";
|
||||
echo " <label for='forward_all_disabled'><input type='radio' name='forward_all_enabled' id='forward_all_disabled' onclick=\"$on_click2\" value='false' ".(($forward_all_enabled == "false" || $forward_all_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
|
||||
echo " <label for='forward_all_enabled'><input type='radio' name='forward_all_enabled' id='forward_all_enabled' onclick=\"$on_click\" value='true' ".(($forward_all_enabled == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
|
||||
unset($on_click);
|
||||
@@ -580,14 +633,14 @@
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
$on_click = "document.getElementById('forward_all_disabled').checked=true; ";
|
||||
$on_click .= "document.getElementById('dnd_disabled').checked=true; ";
|
||||
echo " <label for='follow_me_disabled'><input type='radio' name='follow_me_enabled' id='follow_me_disabled' onclick=\"$('#tr_follow_me_settings').slideUp('fast');\" value='false' ".(($follow_me_enabled == "false" || $follow_me_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
|
||||
echo " <label for='follow_me_enabled'><input type='radio' name='follow_me_enabled' id='follow_me_enabled' onclick=\"$('#tr_follow_me_settings').slideDown('fast'); $on_click\" value='true' ".(($follow_me_enabled == "true") ? "checked='checked'" : null)."/> ".$text['label-enabled']."</label> \n";
|
||||
echo " <label for='follow_me_disabled'><input type='radio' name='follow_me_enabled' id='follow_me_disabled' onclick=\"$('#tr_follow_me_settings').slideUp('fast');\" value='false' ".((!empty($follow_me_enabled) && $follow_me_enabled == "false" || empty($follow_me_enabled)) ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
|
||||
echo " <label for='follow_me_enabled'><input type='radio' name='follow_me_enabled' id='follow_me_enabled' onclick=\"$('#tr_follow_me_settings').slideDown('fast'); $on_click\" value='true' ".((!empty($follow_me_enabled) && $follow_me_enabled == "true") ? "checked='checked'" : null)."/> ".$text['label-enabled']."</label> \n";
|
||||
unset($on_click);
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
if ($follow_me_enabled == "true" && $dnd_enabled != "true" && $forward_all_enabled != "true") { $style = ''; } else { $style = 'display: none;'; }
|
||||
if (!empty($follow_me_enabled) && $follow_me_enabled == "true" && $dnd_enabled != "true" && $forward_all_enabled != "true") { $style = ''; } else { $style = 'display: none;'; }
|
||||
echo "<div id='tr_follow_me_settings' style='$style'>\n";
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
@@ -608,21 +661,22 @@
|
||||
echo " </tr>\n";
|
||||
|
||||
//output destinations
|
||||
for ($n = 0; $n <= ((($_SESSION['follow_me']['max_destinations']['numeric'] != '') ? $_SESSION['follow_me']['max_destinations']['numeric'] : 5) - 1); $n++) {
|
||||
echo " <input type='hidden' name='destinations[".$n."][uuid]' value='".(($destinations[$n]['uuid'] != '') ? $destinations[$n]['uuid'] : uuid())."'>\n";
|
||||
$on_click = "";
|
||||
foreach ($destinations as $n => $destination) {
|
||||
echo " <input type='hidden' name='destinations[".$n."][uuid]' value='".((!empty($destination['uuid'])) ? $destination['uuid'] : uuid())."'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td><input class='formfld' style='min-width: 135px;' type='text' name='destinations[".$n."][destination]' id='destination_".$n."' maxlength='255' value=\"".escape($destinations[$n]['destination'])."\"></td>\n";
|
||||
echo " <td><input class='formfld' style='min-width: 135px;' type='text' name='destinations[".$n."][destination]' id='destination_".$n."' maxlength='255' value=\"".escape($destination['destination'])."\"></td>\n";
|
||||
echo " <td>\n";
|
||||
destination_select('destinations['.$n.'][delay]', $destinations[$n]['delay'], '0');
|
||||
destination_select('destinations['.$n.'][delay]', $destination['delay'], '0');
|
||||
echo " </td>\n";
|
||||
echo " <td>\n";
|
||||
destination_select('destinations['.$n.'][timeout]', $destinations[$n]['timeout'], (($_SESSION['follow_me']['timeout']['numeric'] != '') ? $_SESSION['follow_me']['timeout']['numeric'] : 30));
|
||||
destination_select('destinations['.$n.'][timeout]', $destination['timeout'], ((!empty($_SESSION['follow_me']['timeout']['numeric'])) ? $_SESSION['follow_me']['timeout']['numeric'] : 30));
|
||||
echo " </td>\n";
|
||||
if (permission_exists('follow_me_prompt')) {
|
||||
echo " <td>\n";
|
||||
echo " <select class='formfld' style='width: 90px;' name='destinations[".$n."][prompt]'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
echo " <option value='1' ".(($destinations[$n]['prompt'])?"selected='selected'":null).">".$text['label-destination_prompt_confirm']."</option>\n";
|
||||
echo " <option value='1' ".(($destination['prompt']) ? "selected='selected'" : null).">".$text['label-destination_prompt_confirm']."</option>\n";
|
||||
//echo " <option value='2'>".$text['label-destination_prompt_announce]."</option>\n";
|
||||
echo " </select>\n";
|
||||
echo " </td>\n";
|
||||
@@ -640,8 +694,8 @@
|
||||
echo $text['label-ignore_busy'];
|
||||
echo " </td>\n";
|
||||
echo " <td class='vtable' align='left'>\n";
|
||||
echo " <label for='follow_me_ignore_busy_false'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_false' value='false' onclick=\"\" ".(($follow_me_ignore_busy == "false" || $follow_me_ignore_busy == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
|
||||
echo " <label for='follow_me_ignore_busy_true'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_true' value='true' onclick=\"$on_click\" ".(($follow_me_ignore_busy == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
|
||||
echo " <label for='follow_me_ignore_busy_false'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_false' value='false' onclick=\"\" ".(empty($follow_me_ignore_busy) || $follow_me_ignore_busy == "false" ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
|
||||
echo " <label for='follow_me_ignore_busy_true'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_true' value='true' onclick=\"".$on_click."\" ".(!empty($follow_me_ignore_busy) && $follow_me_ignore_busy == "true" ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
|
||||
echo " <br />\n";
|
||||
echo $text['description-ignore_busy']."\n";
|
||||
echo " </td>\n";
|
||||
@@ -696,7 +750,7 @@
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
if ($action == "update") {
|
||||
if (!empty($action) && $action == "update") {
|
||||
echo "<input type='hidden' name='id' value='".escape($extension_uuid)."'>\n";
|
||||
}
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
@@ -1,279 +1,277 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
The Original Code is FusionPBX
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Copyright (C) 2010 - 2016
|
||||
All Rights Reserved.
|
||||
The Original Code is FusionPBX
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
Errol Samuels <voiptology@gmail.com>
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Copyright (C) 2010 - 2023
|
||||
All Rights Reserved.
|
||||
|
||||
*/
|
||||
include "root.php";
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
Errol Samuels <voiptology@gmail.com>
|
||||
|
||||
*/
|
||||
|
||||
//define the call_forward class
|
||||
class call_forward {
|
||||
|
||||
// set class constants
|
||||
const APP_NAME = 'calls';
|
||||
const APP_UUID = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
const PERMISSION = 'call_forward';
|
||||
const LIST_PAGE = 'calls.php';
|
||||
const TABLE = 'extensions';
|
||||
const UUID_PREFIX = 'extension_';
|
||||
const TOGGLE_FIELD = 'forward_all_enabled';
|
||||
const TOGGLE_VALUES = ['true', 'false'];
|
||||
|
||||
public $debug;
|
||||
public $domain_uuid;
|
||||
public $domain_name;
|
||||
public $extension_uuid;
|
||||
private $extension;
|
||||
private $number_alias;
|
||||
public $forward_all_destination;
|
||||
public $forward_all_enabled;
|
||||
private $toll_allow;
|
||||
public $accountcode;
|
||||
public $outbound_caller_id_name;
|
||||
public $outbound_caller_id_number;
|
||||
|
||||
public function set() {
|
||||
//determine whether to update the dial string
|
||||
$sql = "select * from v_extensions ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and extension_uuid = :extension_uuid ";
|
||||
$parameters['domain_uuid'] = $this->domain_uuid;
|
||||
$parameters['extension_uuid'] = $this->extension_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
$this->extension = $row["extension"];
|
||||
$this->number_alias = $row["number_alias"];
|
||||
$this->accountcode = $row["accountcode"];
|
||||
$this->toll_allow = $row["toll_allow"];
|
||||
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
|
||||
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
|
||||
//build extension update array
|
||||
$array['extensions'][0]['extension_uuid'] = $this->extension_uuid;
|
||||
$array['extensions'][0]['forward_all_destination'] = strlen($this->forward_all_destination) != 0 ? $this->forward_all_destination : null;
|
||||
if (strlen($this->forward_all_destination) == 0 || $this->forward_all_enabled == "false") {
|
||||
$array['extensions'][0]['forward_all_enabled'] = 'false';
|
||||
}
|
||||
else {
|
||||
$array['extensions'][0]['forward_all_enabled'] = 'true';
|
||||
}
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('extension_add', 'temp');
|
||||
|
||||
//execute update
|
||||
$database = new database;
|
||||
$database->app_name = 'calls';
|
||||
$database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('extension_add', 'temp');
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$this->extension."@".$this->domain_name);
|
||||
if(strlen($this->number_alias) > 0){
|
||||
$cache->delete("directory:".$this->number_alias."@".$this->domain_name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
private $toggle_field;
|
||||
private $toggle_values;
|
||||
private $extension;
|
||||
private $number_alias;
|
||||
private $toll_allow;
|
||||
|
||||
/**
|
||||
* toggle records
|
||||
*/
|
||||
public function toggle($records) {
|
||||
public function set() {
|
||||
//create the database connection
|
||||
$database = new database;
|
||||
|
||||
//assign private variables
|
||||
$this->app_name = 'calls';
|
||||
$this->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
$this->permission = 'call_forward';
|
||||
$this->list_page = 'calls.php';
|
||||
$this->table = 'extensions';
|
||||
$this->uuid_prefix = 'extension_';
|
||||
$this->toggle_field = 'forward_all_enabled';
|
||||
$this->toggle_values = ['true','false'];
|
||||
|
||||
if (permission_exists($this->permission)) {
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: '.$this->list_page);
|
||||
exit;
|
||||
}
|
||||
|
||||
//toggle the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get current toggle state
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select ".$this->uuid_prefix."uuid as uuid, extension, number_alias, ";
|
||||
$sql .= "call_timeout, do_not_disturb, ";
|
||||
$sql .= "forward_all_enabled, forward_all_destination, ";
|
||||
$sql .= "forward_busy_enabled, forward_busy_destination, ";
|
||||
$sql .= "forward_no_answer_enabled, forward_no_answer_destination, ";
|
||||
$sql .= $this->toggle_field." as toggle, follow_me_uuid ";
|
||||
$sql .= "from v_".$this->table." ";
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $row) {
|
||||
$extensions[$row['uuid']]['extension'] = $row['extension'];
|
||||
$extensions[$row['uuid']]['number_alias'] = $row['number_alias'];
|
||||
$extensions[$row['uuid']]['call_timeout'] = $row['call_timeout'];
|
||||
$extensions[$row['uuid']]['do_not_disturb'] = $row['do_not_disturb'];
|
||||
$extensions[$row['uuid']]['forward_all_enabled'] = $row['forward_all_enabled'];
|
||||
$extensions[$row['uuid']]['forward_all_destination'] = $row['forward_all_destination'];
|
||||
$extensions[$row['uuid']]['forward_busy_enabled'] = $row['forward_busy_enabled'];
|
||||
$extensions[$row['uuid']]['forward_busy_destination'] = $row['forward_busy_destination'];
|
||||
$extensions[$row['uuid']]['forward_no_answer_enabled'] = $row['forward_no_answer_enabled'];
|
||||
$extensions[$row['uuid']]['forward_no_answer_destination'] = $row['forward_no_answer_destination'];
|
||||
$extensions[$row['uuid']]['state'] = $row['toggle'];
|
||||
$extensions[$row['uuid']]['follow_me_uuid'] = $row['follow_me_uuid'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build update array
|
||||
$x = 0;
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
|
||||
//check destination
|
||||
$destination_exists = $extension['forward_all_destination'] != '' ? true : false;
|
||||
|
||||
//determine new state
|
||||
$new_state = $extension['state'] == $this->toggle_values[1] && $destination_exists ? $this->toggle_values[0] : $this->toggle_values[1];
|
||||
|
||||
//toggle feature
|
||||
if ($new_state != $extension['state']) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid;
|
||||
$array[$this->table][$x][$this->toggle_field] = $new_state;
|
||||
}
|
||||
|
||||
//disable other features
|
||||
if ($new_state == $this->toggle_values[0]) { //true
|
||||
$array[$this->table][$x]['do_not_disturb'] = $this->toggle_values[1]; //false
|
||||
$array[$this->table][$x]['follow_me_enabled'] = $this->toggle_values[1]; //false
|
||||
if (is_uuid($extension['follow_me_uuid'])) {
|
||||
$array['follow_me'][$x]['follow_me_uuid'] = $extension['follow_me_uuid'];
|
||||
$array['follow_me'][$x]['follow_me_enabled'] = $this->toggle_values[1]; //false
|
||||
}
|
||||
}
|
||||
|
||||
//increment counter
|
||||
$x++;
|
||||
|
||||
}
|
||||
|
||||
//save the changes
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('extension_edit', 'temp');
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('extension_edit', 'temp');
|
||||
|
||||
//send feature event notify to the phone
|
||||
if ($_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$feature_event_notify = new feature_event_notify;
|
||||
$feature_event_notify->domain_name = $_SESSION['domain_name'];
|
||||
$feature_event_notify->extension = $extension['extension'];
|
||||
$feature_event_notify->do_not_disturb = $extension['do_not_disturb'];
|
||||
$feature_event_notify->ring_count = ceil($extension['call_timeout'] / 6);
|
||||
$feature_event_notify->forward_all_enabled = $extension['forward_all_enabled'];
|
||||
$feature_event_notify->forward_busy_enabled = $extension['forward_busy_enabled'];
|
||||
$feature_event_notify->forward_no_answer_enabled = $extension['forward_no_answer_enabled'];
|
||||
//workarounds: send 0 as freeswitch doesn't send NOTIFY when destination values are nil
|
||||
$feature_event_notify->forward_all_destination = $extension['forward_all_destination'] != '' ? $extension['forward_all_destination'] : '0';
|
||||
$feature_event_notify->forward_busy_destination = $extension['forward_busy_destination'] != '' ? $extension['forward_busy_destination'] : '0';
|
||||
$feature_event_notify->forward_no_answer_destination = $extension['forward_no_answer_destination'] != '' ? $extension['forward_no_answer_destination'] : '0';
|
||||
$feature_event_notify->send_notify();
|
||||
unset($feature_event_notify);
|
||||
}
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
if (is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
require_once "app/extensions/resources/classes/extension.php";
|
||||
$ext = new extension;
|
||||
$ext->xml();
|
||||
unset($ext);
|
||||
}
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$cache->delete("directory:".$extension['extension']."@".$_SESSION['domain_name']);
|
||||
if ($extension['number_alias'] != '') {
|
||||
$cache->delete("directory:".$extension['number_alias']."@".$_SESSION['domain_name']);
|
||||
}
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-toggle']);
|
||||
|
||||
}
|
||||
unset($records, $extensions, $extension);
|
||||
}
|
||||
//determine whether to update the dial string
|
||||
$sql = "select * from v_extensions ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and extension_uuid = :extension_uuid ";
|
||||
$parameters['domain_uuid'] = $this->domain_uuid;
|
||||
$parameters['extension_uuid'] = $this->extension_uuid;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
$this->extension = $row["extension"];
|
||||
$this->number_alias = $row["number_alias"];
|
||||
$this->accountcode = $row["accountcode"];
|
||||
$this->toll_allow = $row["toll_allow"];
|
||||
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
|
||||
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
|
||||
//build extension update array
|
||||
$array['extensions'][0]['extension_uuid'] = $this->extension_uuid;
|
||||
$array['extensions'][0]['forward_all_destination'] = strlen($this->forward_all_destination) != 0 ? $this->forward_all_destination : null;
|
||||
if (empty($this->forward_all_destination) || $this->forward_all_enabled == "false") {
|
||||
$array['extensions'][0]['forward_all_enabled'] = 'false';
|
||||
} else {
|
||||
$array['extensions'][0]['forward_all_enabled'] = 'true';
|
||||
}
|
||||
|
||||
} //function
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('extension_add', 'temp');
|
||||
|
||||
}// class
|
||||
//execute update
|
||||
$database->app_name = 'calls';
|
||||
$database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('extension_add', 'temp');
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:" . $this->extension . "@" . $this->domain_name);
|
||||
if (!empty($this->number_alias)) {
|
||||
$cache->delete("directory:" . $this->number_alias . "@" . $this->domain_name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle an array of call_forward records
|
||||
* @param array $records array of records to toggle
|
||||
*/
|
||||
public function toggle(array $records) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'], 'negative');
|
||||
header('Location: ' . self::LIST_PAGE);
|
||||
exit;
|
||||
}
|
||||
|
||||
//validate there are records to process
|
||||
if (count($records) < 1) return;
|
||||
|
||||
//check we have permission for this action
|
||||
if (permission_exists(self::PERMISSION)) {
|
||||
|
||||
//create the database connection
|
||||
$database = new database;
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
|
||||
// initialize an empty array
|
||||
$uuids = [];
|
||||
$extensions = [];
|
||||
|
||||
//get current toggle state
|
||||
foreach ($records as $x => $record) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'" . $record['uuid'] . "'";
|
||||
}
|
||||
}
|
||||
|
||||
//toggle the checked records
|
||||
if (count($uuids) > 0) {
|
||||
$sql = "select " . self::UUID_PREFIX . "uuid as uuid, extension, number_alias, ";
|
||||
$sql .= "call_timeout, do_not_disturb, ";
|
||||
$sql .= "forward_all_enabled, forward_all_destination, ";
|
||||
$sql .= "forward_busy_enabled, forward_busy_destination, ";
|
||||
$sql .= "forward_no_answer_enabled, forward_no_answer_destination, ";
|
||||
$sql .= self::TOGGLE_FIELD . " as toggle, follow_me_uuid ";
|
||||
$sql .= "from v_" . self::TABLE . " ";
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$sql .= "and " . self::UUID_PREFIX . "uuid in (" . implode(', ', $uuids) . ") ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$rows = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $row) {
|
||||
$extensions[$row['uuid']]['extension'] = $row['extension'];
|
||||
$extensions[$row['uuid']]['number_alias'] = $row['number_alias'];
|
||||
$extensions[$row['uuid']]['call_timeout'] = $row['call_timeout'];
|
||||
$extensions[$row['uuid']]['do_not_disturb'] = $row['do_not_disturb'];
|
||||
$extensions[$row['uuid']]['forward_all_enabled'] = $row['forward_all_enabled'];
|
||||
$extensions[$row['uuid']]['forward_all_destination'] = $row['forward_all_destination'];
|
||||
$extensions[$row['uuid']]['forward_busy_enabled'] = $row['forward_busy_enabled'];
|
||||
$extensions[$row['uuid']]['forward_busy_destination'] = $row['forward_busy_destination'];
|
||||
$extensions[$row['uuid']]['forward_no_answer_enabled'] = $row['forward_no_answer_enabled'];
|
||||
$extensions[$row['uuid']]['forward_no_answer_destination'] = $row['forward_no_answer_destination'];
|
||||
$extensions[$row['uuid']]['state'] = $row['toggle'];
|
||||
$extensions[$row['uuid']]['follow_me_uuid'] = $row['follow_me_uuid'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build update array
|
||||
$x = 0;
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
|
||||
//check destination
|
||||
$destination_exists = $extension['forward_all_destination'] != '' ? true : false;
|
||||
|
||||
//determine new state
|
||||
$new_state = $extension['state'] == self::TOGGLE_VALUES[1] && $destination_exists ? self::TOGGLE_VALUES[0] : self::TOGGLE_VALUES[1];
|
||||
|
||||
//toggle feature
|
||||
if ($new_state != $extension['state']) {
|
||||
$array[self::TABLE][$x][self::UUID_PREFIX . 'uuid'] = $uuid;
|
||||
$array[self::TABLE][$x][self::TOGGLE_FIELD] = $new_state;
|
||||
}
|
||||
|
||||
//disable other features
|
||||
if ($new_state == self::TOGGLE_VALUES[0]) { //true
|
||||
$array[self::TABLE][$x]['do_not_disturb'] = self::TOGGLE_VALUES[1]; //false
|
||||
$array[self::TABLE][$x]['follow_me_enabled'] = self::TOGGLE_VALUES[1]; //false
|
||||
if (is_uuid($extension['follow_me_uuid'])) {
|
||||
$array['follow_me'][$x]['follow_me_uuid'] = $extension['follow_me_uuid'];
|
||||
$array['follow_me'][$x]['follow_me_enabled'] = self::TOGGLE_VALUES[1]; //false
|
||||
}
|
||||
}
|
||||
|
||||
//increment counter
|
||||
$x++;
|
||||
}
|
||||
|
||||
//save the changes
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('extension_edit', 'temp');
|
||||
|
||||
//save the array
|
||||
$database->app_name = self::APP_NAME;
|
||||
$database->app_uuid = self::APP_UUID;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('extension_edit', 'temp');
|
||||
|
||||
//send feature event notify to the phone
|
||||
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$feature_event_notify = new feature_event_notify;
|
||||
$feature_event_notify->domain_name = $_SESSION['domain_name'];
|
||||
$feature_event_notify->extension = $extension['extension'];
|
||||
$feature_event_notify->do_not_disturb = $extension['do_not_disturb'];
|
||||
$feature_event_notify->ring_count = ceil($extension['call_timeout'] / 6);
|
||||
$feature_event_notify->forward_all_enabled = $extension['forward_all_enabled'];
|
||||
$feature_event_notify->forward_busy_enabled = $extension['forward_busy_enabled'];
|
||||
$feature_event_notify->forward_no_answer_enabled = $extension['forward_no_answer_enabled'];
|
||||
//workarounds: send 0 as freeswitch doesn't send NOTIFY when destination values are nil
|
||||
$feature_event_notify->forward_all_destination = $extension['forward_all_destination'] != '' ? $extension['forward_all_destination'] : '0';
|
||||
$feature_event_notify->forward_busy_destination = $extension['forward_busy_destination'] != '' ? $extension['forward_busy_destination'] : '0';
|
||||
$feature_event_notify->forward_no_answer_destination = $extension['forward_no_answer_destination'] != '' ? $extension['forward_no_answer_destination'] : '0';
|
||||
$feature_event_notify->send_notify();
|
||||
unset($feature_event_notify);
|
||||
}
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
require_once "app/extensions/resources/classes/extension.php";
|
||||
$ext = new extension;
|
||||
$ext->xml();
|
||||
unset($ext);
|
||||
}
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$cache->delete("directory:" . $extension['extension'] . "@" . $_SESSION['domain_name']);
|
||||
if ($extension['number_alias'] != '') {
|
||||
$cache->delete("directory:" . $extension['number_alias'] . "@" . $_SESSION['domain_name']);
|
||||
}
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-toggle']);
|
||||
}
|
||||
unset($records, $extensions, $extension);
|
||||
}
|
||||
}
|
||||
|
||||
//function
|
||||
}
|
||||
|
||||
// class
|
||||
?>
|
||||
|
||||
@@ -17,13 +17,12 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Copyright (C) 2010 - 2016
|
||||
Copyright (C) 2010 - 2023
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
|
||||
//define the dnd class
|
||||
class do_not_disturb {
|
||||
@@ -80,8 +79,8 @@ include "root.php";
|
||||
if (is_uuid($this->extension_uuid)) {
|
||||
$this->extension_uuid = $row["extension_uuid"];
|
||||
}
|
||||
if (strlen($this->extension) == 0) {
|
||||
if (strlen($row["number_alias"]) == 0) {
|
||||
if (empty($this->extension)) {
|
||||
if (empty($row["number_alias"])) {
|
||||
$this->extension = $row["extension"];
|
||||
}
|
||||
else {
|
||||
@@ -112,7 +111,7 @@ include "root.php";
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$this->extension."@".$this->domain_name);
|
||||
if(strlen($this->number_alias) > 0){
|
||||
if(!empty($this->number_alias)){
|
||||
$cache->delete("directory:".$this->number_alias."@".$this->domain_name);
|
||||
}
|
||||
|
||||
@@ -164,7 +163,7 @@ include "root.php";
|
||||
|
||||
//get current toggle state
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -241,7 +240,7 @@ include "root.php";
|
||||
$p->delete('extension_edit', 'temp');
|
||||
|
||||
//send feature event notify to the phone
|
||||
if ($_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$feature_event_notify = new feature_event_notify;
|
||||
$feature_event_notify->domain_name = $_SESSION['domain_name'];
|
||||
@@ -261,7 +260,7 @@ include "root.php";
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
if (is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
require_once "app/extensions/resources/classes/extension.php";
|
||||
$ext = new extension;
|
||||
$ext->xml();
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
KonradSC <konrd@yahoo.com>
|
||||
*/
|
||||
include "root.php";
|
||||
|
||||
//define the feature_event_notify class
|
||||
class feature_event_notify {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Copyright (C) 2010 - 2019
|
||||
Copyright (C) 2010 - 2023
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -27,7 +27,6 @@
|
||||
Riccardo Granchi <riccardo.granchi@nems.it>
|
||||
Errol Samuels <voiptology@gmail.com>
|
||||
*/
|
||||
include "root.php";
|
||||
|
||||
//define the follow me class
|
||||
class follow_me {
|
||||
@@ -85,7 +84,7 @@ include "root.php";
|
||||
$array['follow_me'][0]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
$array['follow_me'][0]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me'][0]['cid_name_prefix'] = $this->cid_name_prefix;
|
||||
if (strlen($this->cid_number_prefix) > 0) {
|
||||
if (!empty($this->cid_number_prefix)) {
|
||||
$array['follow_me'][0]['cid_number_prefix'] = $this->cid_number_prefix;
|
||||
}
|
||||
|
||||
@@ -149,7 +148,7 @@ include "root.php";
|
||||
|
||||
//build follow me destinations insert array
|
||||
$x = 0;
|
||||
if (strlen($this->destination_data_1) > 0) {
|
||||
if (!empty($this->destination_data_1)) {
|
||||
$array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
|
||||
$array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
@@ -161,7 +160,7 @@ include "root.php";
|
||||
$this->destination_order++;
|
||||
$x++;
|
||||
}
|
||||
if (strlen($this->destination_data_2) > 0) {
|
||||
if (!empty($this->destination_data_2)) {
|
||||
$array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
|
||||
$array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
@@ -173,7 +172,7 @@ include "root.php";
|
||||
$this->destination_order++;
|
||||
$x++;
|
||||
}
|
||||
if (strlen($this->destination_data_3) > 0) {
|
||||
if (!empty($this->destination_data_3)) {
|
||||
$array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
|
||||
$array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
@@ -185,7 +184,7 @@ include "root.php";
|
||||
$this->destination_order++;
|
||||
$x++;
|
||||
}
|
||||
if (strlen($this->destination_data_4) > 0) {
|
||||
if (!empty($this->destination_data_4)) {
|
||||
$array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
|
||||
$array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
@@ -197,7 +196,7 @@ include "root.php";
|
||||
$this->destination_order++;
|
||||
$x++;
|
||||
}
|
||||
if (strlen($this->destination_data_5) > 0) {
|
||||
if (!empty($this->destination_data_5)) {
|
||||
$array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
|
||||
$array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
|
||||
@@ -308,7 +307,7 @@ include "root.php";
|
||||
|
||||
//get current toggle state
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
@@ -354,7 +353,7 @@ include "root.php";
|
||||
$extension['state'] == $this->toggle_values[1] //false becoming true
|
||||
&& is_uuid($extension['follow_me_uuid'])
|
||||
) {
|
||||
$sql .= "select count(*) from v_follow_me_destinations where follow_me_uuid = :follow_me_uuid";
|
||||
$sql = "select count(*) from v_follow_me_destinations where follow_me_uuid = :follow_me_uuid";
|
||||
$parameters['follow_me_uuid'] = $extension['follow_me_uuid'];
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
@@ -406,7 +405,7 @@ include "root.php";
|
||||
$p->delete('follow_me_edit', 'temp');
|
||||
|
||||
//send feature event notify to the phone
|
||||
if ($_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
|
||||
foreach ($extensions as $uuid => $extension) {
|
||||
$feature_event_notify = new feature_event_notify;
|
||||
$feature_event_notify->domain_name = $_SESSION['domain_name'];
|
||||
@@ -426,7 +425,7 @@ include "root.php";
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
if (is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
|
||||
require_once "app/extensions/resources/classes/extension.php";
|
||||
$ext = new extension;
|
||||
$ext->xml();
|
||||
|
||||
@@ -1,35 +1,10 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2021
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
//require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 4) . "/resources/require.php";
|
||||
|
||||
//check permissions
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
|
||||
//access granted
|
||||
}
|
||||
@@ -38,14 +13,224 @@
|
||||
exit;
|
||||
}
|
||||
|
||||
//connect to the database
|
||||
if (!isset($database)) {
|
||||
$database = new database;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_forward');
|
||||
|
||||
//set a variable for the included code to know its included
|
||||
$is_included = true;
|
||||
//set the row style
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//include the call forward
|
||||
require_once "app/call_forward/call_forward.php";
|
||||
//get data
|
||||
$sql = "
|
||||
select
|
||||
extension_uuid,
|
||||
extension,
|
||||
forward_all_enabled,
|
||||
forward_all_destination,
|
||||
follow_me_enabled,
|
||||
follow_me_uuid,
|
||||
do_not_disturb
|
||||
from
|
||||
v_extensions ";
|
||||
if (!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('call_forward_all')) {
|
||||
$sql .= "where true ";
|
||||
}
|
||||
else {
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
$sql .= "and enabled = 'true' ";
|
||||
if (!permission_exists('extension_edit')) {
|
||||
if (is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
|
||||
$sql .= "and (";
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
if ($x > 0) { $sql .= "or "; }
|
||||
$sql .= "extension = '".$row['user']."' ";
|
||||
$x++;
|
||||
}
|
||||
$sql .= ")";
|
||||
}
|
||||
else {
|
||||
//used to hide any results when a user has not been assigned an extension
|
||||
$sql .= "and extension = 'disabled' ";
|
||||
}
|
||||
}
|
||||
$sql .= order_by($order_by ?? null, $order ?? null, 'extension', 'asc');
|
||||
$database = new database;
|
||||
$extensions = $database->select($sql, $parameters, 'all');
|
||||
unset($parameters);
|
||||
|
||||
?>
|
||||
//determine keys and stats
|
||||
unset($stats);
|
||||
|
||||
//set defaults
|
||||
$stats['dnd'] = $stats['follow_me'] = $stats['call_forward'] = $stats['active'] = 0;
|
||||
|
||||
$show_stat = false;
|
||||
if (is_array($extensions) && @sizeof($extensions) != 0) {
|
||||
foreach ($extensions as $row) {
|
||||
if (permission_exists('call_forward')) {
|
||||
$stats['call_forward'] += $row['forward_all_enabled'] == 'true' && $row['forward_all_destination'] ? 1 : 0;
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
$stats['follow_me'] += $row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid']) ? 1 : 0;
|
||||
}
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
$stats['dnd'] += $row['do_not_disturb'] == 'true' ? 1 : 0;
|
||||
}
|
||||
}
|
||||
$stats['active'] = @sizeof($extensions) - $stats['call_forward'] - $stats['follow_me'] - $stats['dnd'];
|
||||
}
|
||||
if (is_array($stats) && @sizeof($stats) != 0) {
|
||||
$show_stat = true;
|
||||
}
|
||||
|
||||
//begin widget
|
||||
echo "<div class='hud_box'>\n";
|
||||
|
||||
//doughnut chart
|
||||
echo "<div style='display: flex; flex-wrap: wrap; justify-content: center; padding-bottom: 20px;' onclick=\"$('#hud_call_forward_details').slideToggle('fast');\">\n";
|
||||
echo " <div style='width: 275px; height: 175px;'><canvas id='call_forward_chart'></canvas></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo "<script>\n";
|
||||
echo " const call_forward_chart = new Chart(\n";
|
||||
echo " document.getElementById('call_forward_chart').getContext('2d'),\n";
|
||||
echo " {\n";
|
||||
echo " type: 'doughnut',\n";
|
||||
echo " data: {\n";
|
||||
echo " labels: [\n";
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " '".$text['label-dnd'].": ".$stats['dnd']."',\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
echo " '".$text['label-follow_me'].": ".$stats['follow_me']."',\n";
|
||||
}
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " '".$text['label-call_forward'].": ".$stats['call_forward']."',\n";
|
||||
}
|
||||
echo " '".$text['label-active'].": ".$stats['active']."',\n";
|
||||
echo " ],\n";
|
||||
echo " datasets: [{\n";
|
||||
echo " data: [\n";
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " '".$stats['dnd']."',\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
echo " '".$stats['follow_me']."',\n";
|
||||
}
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " '".$stats['call_forward']."',\n";
|
||||
}
|
||||
echo " '".$stats['active']."',\n";
|
||||
echo " 0.00001,\n";
|
||||
echo " ],\n";
|
||||
echo " backgroundColor: [\n";
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " '".$_SESSION['dashboard']['call_forward_chart_color_do_not_disturb']['text']."',\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
echo " '".$_SESSION['dashboard']['call_forward_chart_color_follow_me']['text']."',\n";
|
||||
}
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " '".$_SESSION['dashboard']['call_forward_chart_color_call_forward']['text']."',\n";
|
||||
}
|
||||
echo " '".$_SESSION['dashboard']['call_forward_chart_color_active']['text']."',\n";
|
||||
echo " '".$_SESSION['dashboard']['call_forward_chart_color_active']['text']."',\n";
|
||||
echo " ],\n";
|
||||
echo " borderColor: '".$_SESSION['dashboard']['call_forward_chart_border_color']['text']."',\n";
|
||||
echo " borderWidth: '".$_SESSION['dashboard']['call_forward_chart_border_width']['text']."',\n";
|
||||
echo " cutout: chart_cutout,\n";
|
||||
echo " }]\n";
|
||||
echo " },\n";
|
||||
echo " options: {\n";
|
||||
echo " responsive: true,\n";
|
||||
echo " maintainAspectRatio: false,\n";
|
||||
echo " plugins: {\n";
|
||||
echo " chart_counter: {\n";
|
||||
echo " chart_text: '".$stats['call_forward']."'\n";
|
||||
echo " },\n";
|
||||
echo " legend: {\n";
|
||||
echo " position: 'right',\n";
|
||||
echo " reverse: true,\n";
|
||||
echo " labels: {\n";
|
||||
echo " usePointStyle: true,\n";
|
||||
echo " pointStyle: 'rect'\n";
|
||||
echo " }\n";
|
||||
echo " },\n";
|
||||
echo " title: {\n";
|
||||
echo " display: true,\n";
|
||||
echo " text: '".$text['header-call_forward']."'\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
echo " },\n";
|
||||
echo " plugins: [chart_counter],\n";
|
||||
echo " }\n";
|
||||
echo " );\n";
|
||||
echo "</script>\n";
|
||||
|
||||
//details
|
||||
echo "<div class='hud_details hud_box' id='hud_call_forward_details'>";
|
||||
echo "<table class='tr_hover' width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo "<tr style='position: -webkit-sticky; position: sticky; z-index: 5; top: 0;'>\n";
|
||||
echo "<th class='hud_heading'>".$text['label-extension']."</th>\n";
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-call_forward']."</th>\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-follow_me']."</th>\n";
|
||||
}
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " <th class='hud_heading' style='text-align: center;'>".$text['label-dnd']."</th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
// data
|
||||
if (is_array($extensions) && @sizeof($extensions) != 0) {
|
||||
foreach ($extensions as $row) {
|
||||
$tr_link = PROJECT_PATH."/app/call_forward/call_forward_edit.php?id=".$row['extension_uuid'];
|
||||
echo "<tr href='".$tr_link."'>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]." hud_text'><a href='".$tr_link."' title=\"".$text['button-edit']."\">".escape($row['extension'])."</a></td>\n";
|
||||
if (permission_exists('call_forward')) {
|
||||
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['forward_all_enabled'] == 'true' ? escape(format_phone($row['forward_all_destination'])) : ' ')."</td>\n";
|
||||
}
|
||||
if (permission_exists('follow_me')) {
|
||||
//get destination count
|
||||
$follow_me_destination_count = 0;
|
||||
if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) {
|
||||
$sql = "select count(*) from v_follow_me_destinations ";
|
||||
$sql .= "where follow_me_uuid = :follow_me_uuid ";
|
||||
$sql .= "and domain_uuid = :domain_uuid ";
|
||||
$parameters['follow_me_uuid'] = $row['follow_me_uuid'];
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$follow_me_destination_count = $database->select($sql, $parameters, 'column');
|
||||
unset($sql, $parameters);
|
||||
}
|
||||
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : ' ')."</td>\n";
|
||||
}
|
||||
if (permission_exists('do_not_disturb')) {
|
||||
echo " <td valign='top' class='".$row_style[$c]." hud_text' style='text-align: center;'>".($row['do_not_disturb'] == 'true' ? $text['label-enabled'] : ' ')."</td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
$c = ($c) ? 0 : 1;
|
||||
}
|
||||
unset($extensions);
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
echo "</div>";
|
||||
//$n++;
|
||||
|
||||
echo "<span class='hud_expander' onclick=\"$('#hud_call_forward_details').slideToggle('fast');\"><span class='fas fa-ellipsis-h'></span></span>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
?>
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
$x++;
|
||||
$array['dashboard'][$x]['dashboard_uuid'] = 'ba60799a-1c40-44a8-80ef-c2be4f4692fb';
|
||||
$array['dashboard'][$x]['dashboard_name'] = 'Call Forward';
|
||||
$array['dashboard'][$x]['dashboard_path'] = 'app/call_forward/resources/dashboard/call_forward.php';
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
//check the permission
|
||||
if (defined('STDIN')) {
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 4) . "/resources/require.php";
|
||||
}
|
||||
else {
|
||||
exit;
|
||||
}
|
||||
|
||||
//increase limits
|
||||
set_time_limit(0);
|
||||
//ini_set('max_execution_time',1800); //30 minutes
|
||||
//ini_set('memory_limit', '512M');
|
||||
|
||||
//save the arguments to variables
|
||||
$script_name = $argv[0];
|
||||
if (!empty($argv[1])) {
|
||||
parse_str($argv[1], $_GET);
|
||||
}
|
||||
|
||||
//get the primary key
|
||||
if (Is_array($_GET)) {
|
||||
$hostname = urldecode($_GET['hostname']);
|
||||
$debug = $_GET['debug'];
|
||||
$sleep_seconds = $_GET['sleep'];
|
||||
}
|
||||
else {
|
||||
//invalid uuid
|
||||
exit;
|
||||
}
|
||||
|
||||
//connect to event socket
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//get the list
|
||||
$sql = "select domain_name, extension, user_context, do_not_disturb, description ";
|
||||
$sql .= "from v_extensions as e, v_domains as d ";
|
||||
$sql .= "where do_not_disturb = 'true' ";
|
||||
$sql .= "and e.domain_uuid = d.domain_uuid ";
|
||||
$sql .= "and enabled = 'true' ";
|
||||
$database = new database;
|
||||
$results = $database->select($sql, $parameters, 'all');
|
||||
unset($parameters);
|
||||
|
||||
//view_array($results);
|
||||
foreach($results as $row) {
|
||||
|
||||
//build the event
|
||||
$cmd = "sendevent PRESENCE_IN\n";
|
||||
$cmd .= "proto: sip\n";
|
||||
$cmd .= "login: ".$row['extension']."@".$row['domain_name']."\n";
|
||||
$cmd .= "from: ".$row['extension']."@".$row['domain_name']."\n";
|
||||
$cmd .= "status: Active (1 waiting)\n";
|
||||
$cmd .= "rpid: unknown\n";
|
||||
$cmd .= "event_type: presence\n";
|
||||
$cmd .= "alt_event_type: dialog\n";
|
||||
$cmd .= "event_count: 1\n";
|
||||
$cmd .= "unique-id: ".uuid()."\n";
|
||||
$cmd .= "Presence-Call-Direction: outbound\n";
|
||||
$cmd .= "answer-state: confirmed\n";
|
||||
//$cmd .= "answer-state: early\n";
|
||||
//$cmd .= "answer-state: terminated\n";
|
||||
|
||||
//send message to the console
|
||||
if (isset($debug)) {
|
||||
echo "\n";
|
||||
echo "[presence] dnd ".$row['extension']."@".$row['domain_name']."\n";
|
||||
}
|
||||
|
||||
//send the event
|
||||
$result = event_socket_request($fp, $cmd);
|
||||
if (isset($debug)) {
|
||||
print_r($result, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_forward/resources/jobs/dnd.php
|
||||
*/
|
||||
|
||||
?>
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -5,7 +5,7 @@
|
||||
$apps[$x]['uuid'] = '56165644-598d-4ed8-be01-d960bcb8ffed';
|
||||
$apps[$x]['category'] = '';
|
||||
$apps[$x]['subcategory'] = '';
|
||||
$apps[$x]['version'] = '';
|
||||
$apps[$x]['version'] = '1.1';
|
||||
$apps[$x]['license'] = 'Mozilla Public License 1.1';
|
||||
$apps[$x]['url'] = 'http://www.fusionpbx.com';
|
||||
$apps[$x]['description']['en-us'] = 'Call Recordings';
|
||||
@@ -35,56 +35,4 @@
|
||||
$apps[$x]['permissions'][$y]['name'] = 'call_recording_download';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
|
||||
//Call Recordings
|
||||
$y = 2;
|
||||
$apps[$x]['db'][$y]['table']['name'] = 'v_call_recordings';
|
||||
$apps[$x]['db'][$y]['table']['parent'] = '';
|
||||
$z = 0;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'char(36)';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = 'primary';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'domain_uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'char(36)';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = 'foreign';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = 'v_domains';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'domain_uuid';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_name';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_path';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_length';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_direction';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_description';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_recording_base64';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
|
||||
$z++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2022
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//create the user view combines username, organization, contact first and last name
|
||||
$database = new database;
|
||||
$database->execute("DROP VIEW view_call_recordings;", null);
|
||||
$sql = "CREATE VIEW view_call_recordings AS ( \n";
|
||||
$sql .= " select domain_uuid, xml_cdr_uuid as call_recording_uuid, \n";
|
||||
$sql .= " caller_id_name, caller_id_number, caller_destination, destination_number, \n";
|
||||
$sql .= " record_name as call_recording_name, record_path as call_recording_path, \n";
|
||||
$sql .= " duration as call_recording_length, start_stamp as call_recording_date, direction as call_direction \n";
|
||||
$sql .= " from v_xml_cdr \n";
|
||||
$sql .= " where record_name is not null \n";
|
||||
$sql .= " and record_path is not null \n";
|
||||
$sql .= " order by start_stamp desc \n";
|
||||
$sql .= "); \n";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -2,129 +2,243 @@
|
||||
|
||||
$text['title-call_recordings']['en-us'] = "Call Recordings";
|
||||
$text['title-call_recordings']['en-gb'] = "Call Recordings";
|
||||
$text['title-call_recordings']['ar-eg'] = "";
|
||||
$text['title-call_recordings']['de-at'] = "";
|
||||
$text['title-call_recordings']['de-ch'] = "";
|
||||
$text['title-call_recordings']['de-de'] = "";
|
||||
$text['title-call_recordings']['es-cl'] = "";
|
||||
$text['title-call_recordings']['es-mx'] = "";
|
||||
$text['title-call_recordings']['ar-eg'] = "تسجيلات المكالمات";
|
||||
$text['title-call_recordings']['de-at'] = "Anrufaufzeichnungen";
|
||||
$text['title-call_recordings']['de-ch'] = "Anrufaufzeichnungen";
|
||||
$text['title-call_recordings']['de-de'] = "Anrufaufzeichnungen";
|
||||
$text['title-call_recordings']['es-cl'] = "Grabaciones de llamadas";
|
||||
$text['title-call_recordings']['es-mx'] = "Grabaciones de llamadas";
|
||||
$text['title-call_recordings']['fr-ca'] = "Enregistrements d'appels";
|
||||
$text['title-call_recordings']['fr-fr'] = "Enregistrements d'appels";
|
||||
$text['title-call_recordings']['he-il'] = "";
|
||||
$text['title-call_recordings']['it-it'] = "";
|
||||
$text['title-call_recordings']['he-il'] = "הקלטות שיחות";
|
||||
$text['title-call_recordings']['it-it'] = "Grabaciones de llamadas";
|
||||
$text['title-call_recordings']['nl-nl'] = "Gespreksopnamen";
|
||||
$text['title-call_recordings']['pl-pl'] = "Nagrania Rozmów";
|
||||
$text['title-call_recordings']['pt-br'] = "";
|
||||
$text['title-call_recordings']['pt-pt'] = "";
|
||||
$text['title-call_recordings']['ro-ro'] = "";
|
||||
$text['title-call_recordings']['pt-br'] = "Gravações de chamadas";
|
||||
$text['title-call_recordings']['pt-pt'] = "Gravações de chamadas";
|
||||
$text['title-call_recordings']['ro-ro'] = "Înregistrări de apeluri";
|
||||
$text['title-call_recordings']['ru-ru'] = "Записи разговоров";
|
||||
$text['title-call_recordings']['sv-se'] = "";
|
||||
$text['title-call_recordings']['uk-ua'] = "";
|
||||
$text['title-call_recordings']['sv-se'] = "Samtalsinspelningar";
|
||||
$text['title-call_recordings']['uk-ua'] = "Записи дзвінків";
|
||||
$text['title-call_recordings']['zh-cn'] = "通话录音";
|
||||
$text['title-call_recordings']['ja-jp'] = "通話録音";
|
||||
$text['title-call_recordings']['ko-kr'] = "통화 녹음";
|
||||
|
||||
$text['title-call_recording']['en-us'] = "Call Recording";
|
||||
$text['title-call_recording']['en-gb'] = "Call Recording";
|
||||
$text['title-call_recording']['ar-eg'] = "";
|
||||
$text['title-call_recording']['de-at'] = "";
|
||||
$text['title-call_recording']['de-ch'] = "";
|
||||
$text['title-call_recording']['de-de'] = "";
|
||||
$text['title-call_recording']['es-cl'] = "";
|
||||
$text['title-call_recording']['es-mx'] = "";
|
||||
$text['title-call_recording']['ar-eg'] = "تسجيل المكالمات";
|
||||
$text['title-call_recording']['de-at'] = "Anrufaufzeichnung";
|
||||
$text['title-call_recording']['de-ch'] = "Anrufaufzeichnung";
|
||||
$text['title-call_recording']['de-de'] = "Anrufaufzeichnung";
|
||||
$text['title-call_recording']['es-cl'] = "Grabacion de llamada";
|
||||
$text['title-call_recording']['es-mx'] = "Grabacion de llamada";
|
||||
$text['title-call_recording']['fr-ca'] = "Enregistrement d'appel";
|
||||
$text['title-call_recording']['fr-fr'] = "Enregistrement d'appel";
|
||||
$text['title-call_recording']['he-il'] = "";
|
||||
$text['title-call_recording']['it-it'] = "";
|
||||
$text['title-call_recording']['he-il'] = "הקלטת שיחה";
|
||||
$text['title-call_recording']['it-it'] = "Registrazione delle chiamate";
|
||||
$text['title-call_recording']['nl-nl'] = "Gespreksopname";
|
||||
$text['title-call_recording']['pl-pl'] = "";
|
||||
$text['title-call_recording']['pt-br'] = "";
|
||||
$text['title-call_recording']['pt-pt'] = "";
|
||||
$text['title-call_recording']['ro-ro'] = "";
|
||||
$text['title-call_recording']['pl-pl'] = "Nagranie rozmowy";
|
||||
$text['title-call_recording']['pt-br'] = "Gravação de chamadas";
|
||||
$text['title-call_recording']['pt-pt'] = "Gravação de chamadas";
|
||||
$text['title-call_recording']['ro-ro'] = "Înregistrare apel";
|
||||
$text['title-call_recording']['ru-ru'] = "Запись разговора";
|
||||
$text['title-call_recording']['sv-se'] = "";
|
||||
$text['title-call_recording']['uk-ua'] = "";
|
||||
$text['title-call_recording']['sv-se'] = "Samtalsinspelning";
|
||||
$text['title-call_recording']['uk-ua'] = "Запис дзвінків";
|
||||
$text['title-call_recording']['zh-cn'] = "通话录音";
|
||||
$text['title-call_recording']['ja-jp'] = "通話録音";
|
||||
$text['title-call_recording']['ko-kr'] = "통화 녹음";
|
||||
|
||||
$text['title_description-call_recordings']['en-us'] = "Shows the call recordings with name, length, date and time, and call direction.";
|
||||
$text['title_description-call_recordings']['en-gb'] = "Shows the call recordings with name, length, date and time, and call direction.";
|
||||
$text['title_description-call_recordings']['ar-eg'] = "";
|
||||
$text['title_description-call_recordings']['de-at'] = "";
|
||||
$text['title_description-call_recordings']['de-ch'] = "";
|
||||
$text['title_description-call_recordings']['de-de'] = "";
|
||||
$text['title_description-call_recordings']['es-cl'] = "";
|
||||
$text['title_description-call_recordings']['es-mx'] = "";
|
||||
$text['title_description-call_recordings']['ar-eg'] = "يظهر تسجيلات المكالمة بالاسم والطول والتاريخ والوقت واتجاه المكالمة.";
|
||||
$text['title_description-call_recordings']['de-at'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
|
||||
$text['title_description-call_recordings']['de-ch'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
|
||||
$text['title_description-call_recordings']['de-de'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
|
||||
$text['title_description-call_recordings']['es-cl'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
|
||||
$text['title_description-call_recordings']['es-mx'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
|
||||
$text['title_description-call_recordings']['fr-ca'] = "Affiche les enregistrements d'appel avec nom, durée, date et heure, et direction de l'appel";
|
||||
$text['title_description-call_recordings']['fr-fr'] = "Affiche les enregistrements d'appel avec nom, durée, date et heure, et direction de l'appel";
|
||||
$text['title_description-call_recordings']['he-il'] = "";
|
||||
$text['title_description-call_recordings']['it-it'] = "";
|
||||
$text['title_description-call_recordings']['he-il'] = "מציג את הקלטות השיחה עם שם, אורך, תאריך ושעה וכיוון השיחה.";
|
||||
$text['title_description-call_recordings']['it-it'] = "Mostra le registrazioni delle chiamate con nome, durata, data e ora e direzione della chiamata.";
|
||||
$text['title_description-call_recordings']['nl-nl'] = "Toont de gespreksopnamen met naam, lengte, datum/tijd en oproep richting.";
|
||||
$text['title_description-call_recordings']['pl-pl'] = "Wyświetla nagrania połączeń wraz z nazwą, długością, datą i godziną oraz kierunkiem połączenia.";
|
||||
$text['title_description-call_recordings']['pt-br'] = "";
|
||||
$text['title_description-call_recordings']['pt-pt'] = "";
|
||||
$text['title_description-call_recordings']['ro-ro'] = "";
|
||||
$text['title_description-call_recordings']['pt-br'] = "Mostra as gravações de chamadas com nome, duração, data e hora e direção da chamada.";
|
||||
$text['title_description-call_recordings']['pt-pt'] = "Mostra as gravações de chamadas com nome, duração, data e hora e direção da chamada.";
|
||||
$text['title_description-call_recordings']['ro-ro'] = "Afișează înregistrările apelurilor cu nume, lungime, dată și oră și direcția apelului.";
|
||||
$text['title_description-call_recordings']['ru-ru'] = "Показывает доступные записи разговоров с именем, датой, временем и направлением вызова.";
|
||||
$text['title_description-call_recordings']['sv-se'] = "";
|
||||
$text['title_description-call_recordings']['uk-ua'] = "";
|
||||
$text['title_description-call_recordings']['sv-se'] = "Visar samtalsinspelningarna med namn, längd, datum och tid samt samtalsriktning.";
|
||||
$text['title_description-call_recordings']['uk-ua'] = "Показує записи дзвінків із назвою, тривалістю, датою та часом, а також напрямком дзвінка.";
|
||||
$text['title_description-call_recordings']['zh-cn'] = "显示带有名称、长度、日期和时间以及呼叫方向的通话录音。";
|
||||
$text['title_description-call_recordings']['ja-jp'] = "通話録音を名前、長さ、日付と時刻、通話方向とともに表示します。";
|
||||
$text['title_description-call_recordings']['ko-kr'] = "이름, 길이, 날짜 및 시간, 통화 방향과 함께 통화 녹음을 표시합니다.";
|
||||
|
||||
$text['label-call_recording_name']['en-us'] = "Name";
|
||||
$text['label-call_recording_name']['en-gb'] = "Name";
|
||||
$text['label-call_recording_name']['ar-eg'] = "";
|
||||
$text['label-call_recording_name']['de-at'] = "";
|
||||
$text['label-call_recording_name']['de-ch'] = "";
|
||||
$text['label-call_recording_name']['de-de'] = "";
|
||||
$text['label-call_recording_name']['es-cl'] = "";
|
||||
$text['label-call_recording_name']['es-mx'] = "";
|
||||
$text['label-call_recording_name']['ar-eg'] = "اسم";
|
||||
$text['label-call_recording_name']['de-at'] = "Name";
|
||||
$text['label-call_recording_name']['de-ch'] = "Name";
|
||||
$text['label-call_recording_name']['de-de'] = "Name";
|
||||
$text['label-call_recording_name']['es-cl'] = "Nombre";
|
||||
$text['label-call_recording_name']['es-mx'] = "Nombre";
|
||||
$text['label-call_recording_name']['fr-ca'] = "Nom";
|
||||
$text['label-call_recording_name']['fr-fr'] = "Nom";
|
||||
$text['label-call_recording_name']['he-il'] = "";
|
||||
$text['label-call_recording_name']['it-it'] = "";
|
||||
$text['label-call_recording_name']['he-il'] = "שֵׁם";
|
||||
$text['label-call_recording_name']['it-it'] = "Nome";
|
||||
$text['label-call_recording_name']['nl-nl'] = "Naam";
|
||||
$text['label-call_recording_name']['pl-pl'] = "Nazwa";
|
||||
$text['label-call_recording_name']['pt-br'] = "";
|
||||
$text['label-call_recording_name']['pt-pt'] = "";
|
||||
$text['label-call_recording_name']['ro-ro'] = "";
|
||||
$text['label-call_recording_name']['pt-br'] = "Nome";
|
||||
$text['label-call_recording_name']['pt-pt'] = "Nome";
|
||||
$text['label-call_recording_name']['ro-ro'] = "Nume";
|
||||
$text['label-call_recording_name']['ru-ru'] = "Имя";
|
||||
$text['label-call_recording_name']['sv-se'] = "";
|
||||
$text['label-call_recording_name']['uk-ua'] = "";
|
||||
$text['label-call_recording_name']['sv-se'] = "namn";
|
||||
$text['label-call_recording_name']['uk-ua'] = "Ім'я";
|
||||
$text['label-call_recording_name']['zh-cn'] = "姓名";
|
||||
$text['label-call_recording_name']['ja-jp'] = "名前";
|
||||
$text['label-call_recording_name']['ko-kr'] = "이름";
|
||||
|
||||
$text['description-call_recording_name']['en-us'] = "";
|
||||
$text['description-call_recording_name']['en-gb'] = "";
|
||||
$text['description-call_recording_name']['ar-eg'] = "";
|
||||
$text['description-call_recording_name']['de-at'] = "";
|
||||
$text['description-call_recording_name']['de-ch'] = "";
|
||||
$text['description-call_recording_name']['de-de'] = "";
|
||||
$text['description-call_recording_name']['es-cl'] = "";
|
||||
$text['description-call_recording_name']['es-mx'] = "";
|
||||
$text['description-call_recording_name']['fr-ca'] = "";
|
||||
$text['description-call_recording_name']['fr-fr'] = "";
|
||||
$text['description-call_recording_name']['he-il'] = "";
|
||||
$text['description-call_recording_name']['it-it'] = "";
|
||||
$text['label-caller_id_name']['en-us'] = "Caller Name";
|
||||
$text['label-caller_id_name']['en-gb'] = "Caller Name";
|
||||
$text['label-caller_id_name']['ar-eg'] = "اسم المتصل";
|
||||
$text['label-caller_id_name']['de-at'] = "Anrufer Name";
|
||||
$text['label-caller_id_name']['de-ch'] = "Anrufer Name";
|
||||
$text['label-caller_id_name']['de-de'] = "Anrufer Name";
|
||||
$text['label-caller_id_name']['es-cl'] = "Nombre CID";
|
||||
$text['label-caller_id_name']['es-mx'] = "Nombre CID";
|
||||
$text['label-caller_id_name']['fr-ca'] = "Nom de l'Appelant";
|
||||
$text['label-caller_id_name']['fr-fr'] = "Nom de l'Appelant";
|
||||
$text['label-caller_id_name']['he-il'] = "שם המתקשר";
|
||||
$text['label-caller_id_name']['it-it'] = "Nome CID";
|
||||
$text['label-caller_id_name']['nl-nl'] = "Naam beller";
|
||||
$text['label-caller_id_name']['pl-pl'] = "Prezentacja nazwy dzwoniącego";
|
||||
$text['label-caller_id_name']['pt-br'] = "Nome CID";
|
||||
$text['label-caller_id_name']['pt-pt'] = "Nome CID";
|
||||
$text['label-caller_id_name']['ro-ro'] = "Numele apelantului";
|
||||
$text['label-caller_id_name']['ru-ru'] = "CID Имя";
|
||||
$text['label-caller_id_name']['sv-se'] = "CID Namn";
|
||||
$text['label-caller_id_name']['uk-ua'] = "CID Ім’я";
|
||||
$text['label-caller_id_name']['zh-cn'] = "来电者姓名";
|
||||
$text['label-caller_id_name']['ja-jp'] = "発信者名";
|
||||
$text['label-caller_id_name']['ko-kr'] = "발신자 이름";
|
||||
|
||||
$text['label-caller_id_number']['en-us'] = "Caller Number";
|
||||
$text['label-caller_id_number']['en-gb'] = "Caller Number";
|
||||
$text['label-caller_id_number']['ar-eg'] = "رقم المتصل";
|
||||
$text['label-caller_id_number']['de-at'] = "Anrufer Nummer";
|
||||
$text['label-caller_id_number']['de-ch'] = "Anrufer Nummer";
|
||||
$text['label-caller_id_number']['de-de'] = "Anrufer Nummer";
|
||||
$text['label-caller_id_number']['es-cl'] = "Número CID";
|
||||
$text['label-caller_id_number']['es-mx'] = "Número CID";
|
||||
$text['label-caller_id_number']['fr-ca'] = "Numéro de l'Appelant";
|
||||
$text['label-caller_id_number']['fr-fr'] = "Numéro de l'Appelant";
|
||||
$text['label-caller_id_number']['he-il'] = "מספר מתקשר";
|
||||
$text['label-caller_id_number']['it-it'] = "Numero CID";
|
||||
$text['label-caller_id_number']['nl-nl'] = "Beller nummer";
|
||||
$text['label-caller_id_number']['pl-pl'] = "Prezentacja numeru dzwoniącego";
|
||||
$text['label-caller_id_number']['pt-br'] = "Número CID";
|
||||
$text['label-caller_id_number']['pt-pt'] = "Número CID";
|
||||
$text['label-caller_id_number']['ro-ro'] = "Numărul apelantului";
|
||||
$text['label-caller_id_number']['ru-ru'] = "CID номера";
|
||||
$text['label-caller_id_number']['sv-se'] = "CID, Nummer";
|
||||
$text['label-caller_id_number']['uk-ua'] = "CID Номер";
|
||||
$text['label-caller_id_number']['zh-cn'] = "来电号码";
|
||||
$text['label-caller_id_number']['ja-jp'] = "発信者番号";
|
||||
$text['label-caller_id_number']['ko-kr'] = "발신자 번호";
|
||||
|
||||
$text['label-caller_destination']['en-us'] = "Caller Destination";
|
||||
$text['label-caller_destination']['en-gb'] = "Caller Destination";
|
||||
$text['label-caller_destination']['ar-eg'] = "وجهة المتصل";
|
||||
$text['label-caller_destination']['de-at'] = "Rufziel";
|
||||
$text['label-caller_destination']['de-ch'] = "Rufziel";
|
||||
$text['label-caller_destination']['de-de'] = "Rufziel";
|
||||
$text['label-caller_destination']['es-cl'] = "Destino de la persona que llama";
|
||||
$text['label-caller_destination']['es-mx'] = "Destino de la persona que llama";
|
||||
$text['label-caller_destination']['fr-ca'] = "Destination de l'appelant";
|
||||
$text['label-caller_destination']['fr-fr'] = "Destination de l'appelant";
|
||||
$text['label-caller_destination']['he-il'] = "Destino de la persona que llama";
|
||||
$text['label-caller_destination']['it-it'] = "Destinazione del chiamante";
|
||||
$text['label-caller_destination']['nl-nl'] = "Bestemming van de beller";
|
||||
$text['label-caller_destination']['pl-pl'] = "Miejsce docelowe dzwoniącego";
|
||||
$text['label-caller_destination']['pt-br'] = "Destino do chamador";
|
||||
$text['label-caller_destination']['pt-pt'] = "Destino do chamador";
|
||||
$text['label-caller_destination']['ro-ro'] = "Destinația apelantului";
|
||||
$text['label-caller_destination']['ru-ru'] = "Вызывающий абонент";
|
||||
$text['label-caller_destination']['sv-se'] = "Uppringarens destination";
|
||||
$text['label-caller_destination']['uk-ua'] = "Пункт призначення абонента";
|
||||
$text['label-caller_destination']['zh-cn'] = "来电目的地";
|
||||
$text['label-caller_destination']['ja-jp'] = "発信者の宛先";
|
||||
$text['label-caller_destination']['ko-kr'] = "발신자 목적지";
|
||||
|
||||
$text['label-destination_number']['en-us'] = "Destination";
|
||||
$text['label-destination_number']['en-gb'] = "Destination";
|
||||
$text['label-destination_number']['ar-eg'] = "وجهة";
|
||||
$text['label-destination_number']['de-at'] = "Ziel";
|
||||
$text['label-destination_number']['de-ch'] = "Ziel";
|
||||
$text['label-destination_number']['de-de'] = "Ziel";
|
||||
$text['label-destination_number']['es-cl'] = "Destino";
|
||||
$text['label-destination_number']['es-mx'] = "Destino";
|
||||
$text['label-destination_number']['fr-ca'] = "Destination";
|
||||
$text['label-destination_number']['fr-fr'] = "Destination";
|
||||
$text['label-destination_number']['he-il'] = "יַעַד";
|
||||
$text['label-destination_number']['it-it'] = "Destinazione";
|
||||
$text['label-destination_number']['nl-nl'] = "Bestemming";
|
||||
$text['label-destination_number']['pl-pl'] = "Miejsce docelowe";
|
||||
$text['label-destination_number']['pt-br'] = "Destino";
|
||||
$text['label-destination_number']['pt-pt'] = "Destino";
|
||||
$text['label-destination_number']['ro-ro'] = "Destinaţie";
|
||||
$text['label-destination_number']['ru-ru'] = "Место назначения";
|
||||
$text['label-destination_number']['sv-se'] = "Destination";
|
||||
$text['label-destination_number']['uk-ua'] = "Пункт призначення";
|
||||
$text['label-destination_number']['zh-cn'] = "目的地";
|
||||
$text['label-destination_number']['ja-jp'] = "行き先";
|
||||
$text['label-destination_number']['ko-kr'] = "목적지";
|
||||
|
||||
$text['description-call_recording_name']['en-us'] = "Call Recording Name";
|
||||
$text['description-call_recording_name']['en-gb'] = "Call Recording Name";
|
||||
$text['description-call_recording_name']['ar-eg'] = "اسم تسجيل المكالمات";
|
||||
$text['description-call_recording_name']['de-at'] = "Name der Anrufaufzeichnung";
|
||||
$text['description-call_recording_name']['de-ch'] = "Name der Anrufaufzeichnung";
|
||||
$text['description-call_recording_name']['de-de'] = "Name der Anrufaufzeichnung";
|
||||
$text['description-call_recording_name']['es-cl'] = "Nombre de grabación de llamada";
|
||||
$text['description-call_recording_name']['es-mx'] = "Nombre de grabación de llamada";
|
||||
$text['description-call_recording_name']['fr-ca'] = "Nom de l'enregistrement d'appel";
|
||||
$text['description-call_recording_name']['fr-fr'] = "Nom de l'enregistrement d'appel";
|
||||
$text['description-call_recording_name']['he-il'] = "שם הקלטת שיחה";
|
||||
$text['description-call_recording_name']['it-it'] = "Nome della registrazione della chiamata";
|
||||
$text['description-call_recording_name']['nl-nl'] = "Gespreksopname naam";
|
||||
$text['description-call_recording_name']['pl-pl'] = "";
|
||||
$text['description-call_recording_name']['pt-br'] = "";
|
||||
$text['description-call_recording_name']['pt-pt'] = "";
|
||||
$text['description-call_recording_name']['ro-ro'] = "";
|
||||
$text['description-call_recording_name']['ru-ru'] = "";
|
||||
$text['description-call_recording_name']['sv-se'] = "";
|
||||
$text['description-call_recording_name']['uk-ua'] = "";
|
||||
$text['description-call_recording_name']['pl-pl'] = "Nazwa nagrania rozmowy";
|
||||
$text['description-call_recording_name']['pt-br'] = "Nome da gravação de chamada";
|
||||
$text['description-call_recording_name']['pt-pt'] = "Nome da gravação de chamada";
|
||||
$text['description-call_recording_name']['ro-ro'] = "Numele înregistrării apelului";
|
||||
$text['description-call_recording_name']['ru-ru'] = "Имя записи звонка";
|
||||
$text['description-call_recording_name']['sv-se'] = "Namn på samtalsinspelning";
|
||||
$text['description-call_recording_name']['uk-ua'] = "Назва запису виклику";
|
||||
$text['description-call_recording_name']['zh-cn'] = "通话录音名称";
|
||||
$text['description-call_recording_name']['ja-jp'] = "通話録音名";
|
||||
$text['description-call_recording_name']['ko-kr'] = "통화 녹음 이름";
|
||||
|
||||
$text['label-call_recording_path']['en-us'] = "Path";
|
||||
$text['label-call_recording_path']['en-gb'] = "Path";
|
||||
$text['label-call_recording_path']['ar-eg'] = "";
|
||||
$text['label-call_recording_path']['de-at'] = "";
|
||||
$text['label-call_recording_path']['de-ch'] = "";
|
||||
$text['label-call_recording_path']['de-de'] = "";
|
||||
$text['label-call_recording_path']['es-cl'] = "";
|
||||
$text['label-call_recording_path']['es-mx'] = "";
|
||||
$text['label-call_recording_path']['ar-eg'] = "طريق";
|
||||
$text['label-call_recording_path']['de-at'] = "Weg";
|
||||
$text['label-call_recording_path']['de-ch'] = "Weg";
|
||||
$text['label-call_recording_path']['de-de'] = "Weg";
|
||||
$text['label-call_recording_path']['es-cl'] = "Camino";
|
||||
$text['label-call_recording_path']['es-mx'] = "Camino";
|
||||
$text['label-call_recording_path']['fr-ca'] = "Chemin";
|
||||
$text['label-call_recording_path']['fr-fr'] = "Chemin";
|
||||
$text['label-call_recording_path']['he-il'] = "";
|
||||
$text['label-call_recording_path']['it-it'] = "";
|
||||
$text['label-call_recording_path']['he-il'] = "נָתִיב";
|
||||
$text['label-call_recording_path']['it-it'] = "Sentiero";
|
||||
$text['label-call_recording_path']['nl-nl'] = "Pad";
|
||||
$text['label-call_recording_path']['pl-pl'] = "Scieżka";
|
||||
$text['label-call_recording_path']['pt-br'] = "";
|
||||
$text['label-call_recording_path']['pt-pt'] = "";
|
||||
$text['label-call_recording_path']['ro-ro'] = "";
|
||||
$text['label-call_recording_path']['pt-br'] = "Caminho";
|
||||
$text['label-call_recording_path']['pt-pt'] = "Caminho";
|
||||
$text['label-call_recording_path']['ro-ro'] = "cale";
|
||||
$text['label-call_recording_path']['ru-ru'] = "Путь";
|
||||
$text['label-call_recording_path']['sv-se'] = "";
|
||||
$text['label-call_recording_path']['uk-ua'] = "";
|
||||
$text['label-call_recording_path']['sv-se'] = "Väg";
|
||||
$text['label-call_recording_path']['uk-ua'] = "шлях";
|
||||
$text['label-call_recording_path']['zh-cn'] = "小路";
|
||||
$text['label-call_recording_path']['ja-jp'] = "道";
|
||||
$text['label-call_recording_path']['ko-kr'] = "길";
|
||||
|
||||
$text['description-call_recording_path']['en-us'] = "";
|
||||
$text['description-call_recording_path']['en-gb'] = "";
|
||||
@@ -146,111 +260,129 @@ $text['description-call_recording_path']['ro-ro'] = "";
|
||||
$text['description-call_recording_path']['ru-ru'] = "";
|
||||
$text['description-call_recording_path']['sv-se'] = "";
|
||||
$text['description-call_recording_path']['uk-ua'] = "";
|
||||
$text['description-call_recording_path']['zh-cn'] = "";
|
||||
$text['description-call_recording_path']['ja-jp'] = "";
|
||||
$text['description-call_recording_path']['ko-kr'] = "";
|
||||
|
||||
$text['label-call_recording_length']['en-us'] = "Length";
|
||||
$text['label-call_recording_length']['en-gb'] = "Length";
|
||||
$text['label-call_recording_length']['ar-eg'] = "";
|
||||
$text['label-call_recording_length']['de-at'] = "";
|
||||
$text['label-call_recording_length']['de-ch'] = "";
|
||||
$text['label-call_recording_length']['de-de'] = "";
|
||||
$text['label-call_recording_length']['es-cl'] = "";
|
||||
$text['label-call_recording_length']['es-mx'] = "";
|
||||
$text['label-call_recording_length']['ar-eg'] = "طول";
|
||||
$text['label-call_recording_length']['de-at'] = "Länge";
|
||||
$text['label-call_recording_length']['de-ch'] = "Länge";
|
||||
$text['label-call_recording_length']['de-de'] = "Länge";
|
||||
$text['label-call_recording_length']['es-cl'] = "Longitud";
|
||||
$text['label-call_recording_length']['es-mx'] = "Longitud";
|
||||
$text['label-call_recording_length']['fr-ca'] = "Longueur";
|
||||
$text['label-call_recording_length']['fr-fr'] = "Longueur";
|
||||
$text['label-call_recording_length']['he-il'] = "";
|
||||
$text['label-call_recording_length']['it-it'] = "";
|
||||
$text['label-call_recording_length']['he-il'] = "אורך";
|
||||
$text['label-call_recording_length']['it-it'] = "Lunghezza";
|
||||
$text['label-call_recording_length']['nl-nl'] = "Lengte";
|
||||
$text['label-call_recording_length']['pl-pl'] = "Długość";
|
||||
$text['label-call_recording_length']['pt-br'] = "";
|
||||
$text['label-call_recording_length']['pt-pt'] = "";
|
||||
$text['label-call_recording_length']['ro-ro'] = "";
|
||||
$text['label-call_recording_length']['pt-br'] = "Comprimento";
|
||||
$text['label-call_recording_length']['pt-pt'] = "Comprimento";
|
||||
$text['label-call_recording_length']['ro-ro'] = "Lungime";
|
||||
$text['label-call_recording_length']['ru-ru'] = "Длительность";
|
||||
$text['label-call_recording_length']['sv-se'] = "";
|
||||
$text['label-call_recording_length']['uk-ua'] = "";
|
||||
$text['label-call_recording_length']['sv-se'] = "Längd";
|
||||
$text['label-call_recording_length']['uk-ua'] = "Довжина";
|
||||
$text['label-call_recording_length']['zh-cn'] = "长度";
|
||||
$text['label-call_recording_length']['ja-jp'] = "長さ";
|
||||
$text['label-call_recording_length']['ko-kr'] = "길이";
|
||||
|
||||
$text['description-call_recording_length']['en-us'] = "";
|
||||
$text['description-call_recording_length']['en-gb'] = "";
|
||||
$text['description-call_recording_length']['ar-eg'] = "";
|
||||
$text['description-call_recording_length']['de-at'] = "";
|
||||
$text['description-call_recording_length']['de-ch'] = "";
|
||||
$text['description-call_recording_length']['de-de'] = "";
|
||||
$text['description-call_recording_length']['es-cl'] = "";
|
||||
$text['description-call_recording_length']['es-mx'] = "";
|
||||
$text['description-call_recording_length']['fr-ca'] = "";
|
||||
$text['description-call_recording_length']['fr-fr'] = "";
|
||||
$text['description-call_recording_length']['he-il'] = "";
|
||||
$text['description-call_recording_length']['it-it'] = "";
|
||||
$text['description-call_recording_length']['en-us'] = "Call Recording Duration";
|
||||
$text['description-call_recording_length']['en-gb'] = "Call Recording Duration";
|
||||
$text['description-call_recording_length']['ar-eg'] = "مدة تسجيل المكالمات";
|
||||
$text['description-call_recording_length']['de-at'] = "Anrufaufzeichnungsdauer";
|
||||
$text['description-call_recording_length']['de-ch'] = "Anrufaufzeichnungsdauer";
|
||||
$text['description-call_recording_length']['de-de'] = "Anrufaufzeichnungsdauer";
|
||||
$text['description-call_recording_length']['es-cl'] = "Duración de la grabación de llamadas";
|
||||
$text['description-call_recording_length']['es-mx'] = "Duración de la grabación de llamadas";
|
||||
$text['description-call_recording_length']['fr-ca'] = "Durée d'enregistrement des appels";
|
||||
$text['description-call_recording_length']['fr-fr'] = "Durée d'enregistrement des appels";
|
||||
$text['description-call_recording_length']['he-il'] = "משך הקלטת השיחה";
|
||||
$text['description-call_recording_length']['it-it'] = "Durata della registrazione delle chiamate";
|
||||
$text['description-call_recording_length']['nl-nl'] = "Gespreksopname duur";
|
||||
$text['description-call_recording_length']['pl-pl'] = "";
|
||||
$text['description-call_recording_length']['pt-br'] = "";
|
||||
$text['description-call_recording_length']['pt-pt'] = "";
|
||||
$text['description-call_recording_length']['ro-ro'] = "";
|
||||
$text['description-call_recording_length']['ru-ru'] = "";
|
||||
$text['description-call_recording_length']['sv-se'] = "";
|
||||
$text['description-call_recording_length']['uk-ua'] = "";
|
||||
$text['description-call_recording_length']['pl-pl'] = "Czas nagrywania rozmowy";
|
||||
$text['description-call_recording_length']['pt-br'] = "Durata înregistrării apelului";
|
||||
$text['description-call_recording_length']['pt-pt'] = "Durata înregistrării apelului";
|
||||
$text['description-call_recording_length']['ro-ro'] = "Durata înregistrării apelului";
|
||||
$text['description-call_recording_length']['ru-ru'] = "Продолжительность записи разговора";
|
||||
$text['description-call_recording_length']['sv-se'] = "Samtalsinspelningslängd";
|
||||
$text['description-call_recording_length']['uk-ua'] = "Тривалість запису розмови";
|
||||
$text['description-call_recording_length']['zh-cn'] = "通话录音时长";
|
||||
$text['description-call_recording_length']['ja-jp'] = "通話録音時間";
|
||||
$text['description-call_recording_length']['ko-kr'] = "통화 녹음 시간";
|
||||
|
||||
$text['label-call_recording_date']['en-us'] = "Date";
|
||||
$text['label-call_recording_date']['en-gb'] = "Date";
|
||||
$text['label-call_recording_date']['ar-eg'] = "";
|
||||
$text['label-call_recording_date']['de-at'] = "";
|
||||
$text['label-call_recording_date']['de-ch'] = "";
|
||||
$text['label-call_recording_date']['de-de'] = "";
|
||||
$text['label-call_recording_date']['es-cl'] = "";
|
||||
$text['label-call_recording_date']['es-mx'] = "";
|
||||
$text['label-call_recording_date']['ar-eg'] = "تاريخ";
|
||||
$text['label-call_recording_date']['de-at'] = "Datum";
|
||||
$text['label-call_recording_date']['de-ch'] = "Datum";
|
||||
$text['label-call_recording_date']['de-de'] = "Datum";
|
||||
$text['label-call_recording_date']['es-cl'] = "Fecha";
|
||||
$text['label-call_recording_date']['es-mx'] = "Fecha";
|
||||
$text['label-call_recording_date']['fr-ca'] = "Date";
|
||||
$text['label-call_recording_date']['fr-fr'] = "Date";
|
||||
$text['label-call_recording_date']['he-il'] = "";
|
||||
$text['label-call_recording_date']['it-it'] = "";
|
||||
$text['label-call_recording_date']['he-il'] = "תַאֲרִיך";
|
||||
$text['label-call_recording_date']['it-it'] = "תַאֲרִיך";
|
||||
$text['label-call_recording_date']['nl-nl'] = "Datum";
|
||||
$text['label-call_recording_date']['pl-pl'] = "Data";
|
||||
$text['label-call_recording_date']['pt-br'] = "";
|
||||
$text['label-call_recording_date']['pt-pt'] = "";
|
||||
$text['label-call_recording_date']['ro-ro'] = "";
|
||||
$text['label-call_recording_date']['pt-br'] = "Data";
|
||||
$text['label-call_recording_date']['pt-pt'] = "Data";
|
||||
$text['label-call_recording_date']['ro-ro'] = "Data";
|
||||
$text['label-call_recording_date']['ru-ru'] = "Дата";
|
||||
$text['label-call_recording_date']['sv-se'] = "";
|
||||
$text['label-call_recording_date']['uk-ua'] = "";
|
||||
$text['label-call_recording_date']['sv-se'] = "Datum";
|
||||
$text['label-call_recording_date']['uk-ua'] = "Дата";
|
||||
$text['label-call_recording_date']['zh-cn'] = "日期";
|
||||
$text['label-call_recording_date']['ja-jp'] = "日にち";
|
||||
$text['label-call_recording_date']['ko-kr'] = "날짜";
|
||||
|
||||
$text['description-call_recording_date']['en-us'] = "";
|
||||
$text['description-call_recording_date']['en-gb'] = "";
|
||||
$text['description-call_recording_date']['ar-eg'] = "";
|
||||
$text['description-call_recording_date']['de-at'] = "";
|
||||
$text['description-call_recording_date']['de-ch'] = "";
|
||||
$text['description-call_recording_date']['de-de'] = "";
|
||||
$text['description-call_recording_date']['es-cl'] = "";
|
||||
$text['description-call_recording_date']['es-mx'] = "";
|
||||
$text['description-call_recording_date']['fr-ca'] = "";
|
||||
$text['description-call_recording_date']['fr-fr'] = "";
|
||||
$text['description-call_recording_date']['he-il'] = "";
|
||||
$text['description-call_recording_date']['it-it'] = "";
|
||||
$text['description-call_recording_date']['en-us'] = "Call Recording Date";
|
||||
$text['description-call_recording_date']['en-gb'] = "Call Recording Date";
|
||||
$text['description-call_recording_date']['ar-eg'] = "تاريخ تسجيل المكالمة";
|
||||
$text['description-call_recording_date']['de-at'] = "Anrufaufzeichnungsdatum";
|
||||
$text['description-call_recording_date']['de-ch'] = "Anrufaufzeichnungsdatum";
|
||||
$text['description-call_recording_date']['de-de'] = "Anrufaufzeichnungsdatum";
|
||||
$text['description-call_recording_date']['es-cl'] = "Fecha de grabación de llamadas";
|
||||
$text['description-call_recording_date']['es-mx'] = "Fecha de grabación de llamadas";
|
||||
$text['description-call_recording_date']['fr-ca'] = "Date d'enregistrement de l'appel";
|
||||
$text['description-call_recording_date']['fr-fr'] = "Date d'enregistrement de l'appel";
|
||||
$text['description-call_recording_date']['he-il'] = "תאריך הקלטת שיחה";
|
||||
$text['description-call_recording_date']['it-it'] = "Data di registrazione della chiamata";
|
||||
$text['description-call_recording_date']['nl-nl'] = "Gespreksopname datum";
|
||||
$text['description-call_recording_date']['pl-pl'] = "";
|
||||
$text['description-call_recording_date']['pt-br'] = "";
|
||||
$text['description-call_recording_date']['pt-pt'] = "";
|
||||
$text['description-call_recording_date']['ro-ro'] = "";
|
||||
$text['description-call_recording_date']['ru-ru'] = "";
|
||||
$text['description-call_recording_date']['sv-se'] = "";
|
||||
$text['description-call_recording_date']['uk-ua'] = "";
|
||||
$text['description-call_recording_date']['pl-pl'] = "Data nagrania rozmowy";
|
||||
$text['description-call_recording_date']['pt-br'] = "Data de gravação da chamada";
|
||||
$text['description-call_recording_date']['pt-pt'] = "Data de gravação da chamada";
|
||||
$text['description-call_recording_date']['ro-ro'] = "Data înregistrării apelului";
|
||||
$text['description-call_recording_date']['ru-ru'] = "Дата записи звонка";
|
||||
$text['description-call_recording_date']['sv-se'] = "Samtalsinspelningsdatum";
|
||||
$text['description-call_recording_date']['uk-ua'] = "Дата запису дзвінка";
|
||||
$text['description-call_recording_date']['zh-cn'] = "通话录音日期";
|
||||
$text['description-call_recording_date']['ja-jp'] = "通話録音日";
|
||||
$text['description-call_recording_date']['ko-kr'] = "통화 녹음 날짜";
|
||||
|
||||
$text['label-call_direction']['en-us'] = "Direction";
|
||||
$text['label-call_direction']['en-gb'] = "Direction";
|
||||
$text['label-call_direction']['ar-eg'] = "";
|
||||
$text['label-call_direction']['de-at'] = "";
|
||||
$text['label-call_direction']['de-ch'] = "";
|
||||
$text['label-call_direction']['de-de'] = "";
|
||||
$text['label-call_direction']['es-cl'] = "";
|
||||
$text['label-call_direction']['es-mx'] = "";
|
||||
$text['label-call_direction']['ar-eg'] = "اتجاه";
|
||||
$text['label-call_direction']['de-at'] = "Richtung";
|
||||
$text['label-call_direction']['de-ch'] = "Richtung";
|
||||
$text['label-call_direction']['de-de'] = "Richtung";
|
||||
$text['label-call_direction']['es-cl'] = "Dirección";
|
||||
$text['label-call_direction']['es-mx'] = "Dirección";
|
||||
$text['label-call_direction']['fr-ca'] = "Direction";
|
||||
$text['label-call_direction']['fr-fr'] = "Direction";
|
||||
$text['label-call_direction']['he-il'] = "";
|
||||
$text['label-call_direction']['it-it'] = "";
|
||||
$text['label-call_direction']['he-il'] = "כיוון";
|
||||
$text['label-call_direction']['it-it'] = "Direzione";
|
||||
$text['label-call_direction']['nl-nl'] = "Richting";
|
||||
$text['label-call_direction']['pl-pl'] = "Kierunek";
|
||||
$text['label-call_direction']['pt-br'] = "";
|
||||
$text['label-call_direction']['pt-pt'] = "";
|
||||
$text['label-call_direction']['ro-ro'] = "";
|
||||
$text['label-call_direction']['pt-br'] = "Direção";
|
||||
$text['label-call_direction']['pt-pt'] = "Direção";
|
||||
$text['label-call_direction']['ro-ro'] = "Direcţie";
|
||||
$text['label-call_direction']['ru-ru'] = "Направление";
|
||||
$text['label-call_direction']['sv-se'] = "";
|
||||
$text['label-call_direction']['uk-ua'] = "";
|
||||
$text['label-call_direction']['sv-se'] = "Riktning";
|
||||
$text['label-call_direction']['uk-ua'] = "Напрямок";
|
||||
$text['label-call_direction']['zh-cn'] = "方向";
|
||||
$text['label-call_direction']['ja-jp'] = "方向";
|
||||
$text['label-call_direction']['ko-kr'] = "방향";
|
||||
|
||||
$text['description-call_direction']['en-us'] = "";
|
||||
$text['description-call_direction']['en-gb'] = "";
|
||||
@@ -272,27 +404,33 @@ $text['description-call_direction']['ro-ro'] = "";
|
||||
$text['description-call_direction']['ru-ru'] = "";
|
||||
$text['description-call_direction']['sv-se'] = "";
|
||||
$text['description-call_direction']['uk-ua'] = "";
|
||||
$text['description-call_direction']['zh-cn'] = "";
|
||||
$text['description-call_direction']['ja-jp'] = "";
|
||||
$text['description-call_direction']['ko-kr'] = "";
|
||||
|
||||
$text['label-call_recording_description']['en-us'] = "Description";
|
||||
$text['label-call_recording_description']['en-gb'] = "Description";
|
||||
$text['label-call_recording_description']['ar-eg'] = "";
|
||||
$text['label-call_recording_description']['de-at'] = "";
|
||||
$text['label-call_recording_description']['de-ch'] = "";
|
||||
$text['label-call_recording_description']['de-de'] = "";
|
||||
$text['label-call_recording_description']['es-cl'] = "";
|
||||
$text['label-call_recording_description']['es-mx'] = "";
|
||||
$text['label-call_recording_description']['ar-eg'] = "وصف";
|
||||
$text['label-call_recording_description']['de-at'] = "Beschreibung";
|
||||
$text['label-call_recording_description']['de-ch'] = "Beschreibung";
|
||||
$text['label-call_recording_description']['de-de'] = "Beschreibung";
|
||||
$text['label-call_recording_description']['es-cl'] = "Descripción";
|
||||
$text['label-call_recording_description']['es-mx'] = "Descripción";
|
||||
$text['label-call_recording_description']['fr-ca'] = "Description";
|
||||
$text['label-call_recording_description']['fr-fr'] = "Description";
|
||||
$text['label-call_recording_description']['he-il'] = "";
|
||||
$text['label-call_recording_description']['it-it'] = "";
|
||||
$text['label-call_recording_description']['he-il'] = "תיאור";
|
||||
$text['label-call_recording_description']['it-it'] = "Descrizione";
|
||||
$text['label-call_recording_description']['nl-nl'] = "Omschrijving";
|
||||
$text['label-call_recording_description']['pl-pl'] = "Opis";
|
||||
$text['label-call_recording_description']['pt-br'] = "";
|
||||
$text['label-call_recording_description']['pt-pt'] = "";
|
||||
$text['label-call_recording_description']['ro-ro'] = "";
|
||||
$text['label-call_recording_description']['pt-br'] = "Descrição";
|
||||
$text['label-call_recording_description']['pt-pt'] = "Descrição";
|
||||
$text['label-call_recording_description']['ro-ro'] = "Descriere";
|
||||
$text['label-call_recording_description']['ru-ru'] = "Описание";
|
||||
$text['label-call_recording_description']['sv-se'] = "";
|
||||
$text['label-call_recording_description']['uk-ua'] = "";
|
||||
$text['label-call_recording_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-call_recording_description']['uk-ua'] = "опис";
|
||||
$text['label-call_recording_description']['zh-cn'] = "描述";
|
||||
$text['label-call_recording_description']['ja-jp'] = "説明";
|
||||
$text['label-call_recording_description']['ko-kr'] = "설명";
|
||||
|
||||
$text['description-call_recording_description']['en-us'] = "";
|
||||
$text['description-call_recording_description']['en-gb'] = "";
|
||||
@@ -314,110 +452,128 @@ $text['description-call_recording_description']['ro-ro'] = "";
|
||||
$text['description-call_recording_description']['ru-ru'] = "";
|
||||
$text['description-call_recording_description']['sv-se'] = "";
|
||||
$text['description-call_recording_description']['uk-ua'] = "";
|
||||
$text['description-call_recording_description']['zh-cn'] = "";
|
||||
$text['description-call_recording_description']['ja-jp'] = "";
|
||||
$text['description-call_recording_description']['ko-kr'] = "";
|
||||
|
||||
$text['label-call_recording_base64']['en-us'] = "Base64";
|
||||
$text['label-call_recording_base64']['en-gb'] = "Base64";
|
||||
$text['label-call_recording_base64']['ar-eg'] = "";
|
||||
$text['label-call_recording_base64']['de-at'] = "";
|
||||
$text['label-call_recording_base64']['de-ch'] = "";
|
||||
$text['label-call_recording_base64']['de-de'] = "";
|
||||
$text['label-call_recording_base64']['es-cl'] = "";
|
||||
$text['label-call_recording_base64']['es-mx'] = "";
|
||||
$text['label-call_recording_base64']['ar-eg'] = "قاعدة64";
|
||||
$text['label-call_recording_base64']['de-at'] = "Base64";
|
||||
$text['label-call_recording_base64']['de-ch'] = "Base64";
|
||||
$text['label-call_recording_base64']['de-de'] = "Base64";
|
||||
$text['label-call_recording_base64']['es-cl'] = "Base64";
|
||||
$text['label-call_recording_base64']['es-mx'] = "Base64";
|
||||
$text['label-call_recording_base64']['fr-ca'] = "Base64";
|
||||
$text['label-call_recording_base64']['fr-fr'] = "Base64";
|
||||
$text['label-call_recording_base64']['he-il'] = "";
|
||||
$text['label-call_recording_base64']['it-it'] = "";
|
||||
$text['label-call_recording_base64']['he-il'] = "64בסיס";
|
||||
$text['label-call_recording_base64']['it-it'] = "Base64";
|
||||
$text['label-call_recording_base64']['nl-nl'] = "Base64";
|
||||
$text['label-call_recording_base64']['pl-pl'] = "Base64";
|
||||
$text['label-call_recording_base64']['pt-br'] = "";
|
||||
$text['label-call_recording_base64']['pt-pt'] = "";
|
||||
$text['label-call_recording_base64']['ro-ro'] = "";
|
||||
$text['label-call_recording_base64']['ru-ru'] = "";
|
||||
$text['label-call_recording_base64']['sv-se'] = "";
|
||||
$text['label-call_recording_base64']['uk-ua'] = "";
|
||||
$text['label-call_recording_base64']['pt-br'] = "Base64";
|
||||
$text['label-call_recording_base64']['pt-pt'] = "Base64";
|
||||
$text['label-call_recording_base64']['ro-ro'] = "Base64";
|
||||
$text['label-call_recording_base64']['ru-ru'] = "Base64";
|
||||
$text['label-call_recording_base64']['sv-se'] = "Base64";
|
||||
$text['label-call_recording_base64']['uk-ua'] = "Base64";
|
||||
$text['label-call_recording_base64']['zh-cn'] = "基地64";
|
||||
$text['label-call_recording_base64']['ja-jp'] = "ベース64";
|
||||
$text['label-call_recording_base64']['ko-kr'] = "베이스64";
|
||||
|
||||
$text['description-call_recording_base64']['en-us'] = "";
|
||||
$text['description-call_recording_base64']['en-gb'] = "";
|
||||
$text['description-call_recording_base64']['ar-eg'] = "";
|
||||
$text['description-call_recording_base64']['de-at'] = "";
|
||||
$text['description-call_recording_base64']['de-ch'] = "";
|
||||
$text['description-call_recording_base64']['de-de'] = "";
|
||||
$text['description-call_recording_base64']['es-cl'] = "";
|
||||
$text['description-call_recording_base64']['es-mx'] = "";
|
||||
$text['description-call_recording_base64']['fr-ca'] = "";
|
||||
$text['description-call_recording_base64']['fr-fr'] = "";
|
||||
$text['description-call_recording_base64']['he-il'] = "";
|
||||
$text['description-call_recording_base64']['it-it'] = "";
|
||||
$text['description-call_recording_base64']['en-us'] = "Base64";
|
||||
$text['description-call_recording_base64']['en-gb'] = "Base64";
|
||||
$text['description-call_recording_base64']['ar-eg'] = "قاعدة64";
|
||||
$text['description-call_recording_base64']['de-at'] = "Base64";
|
||||
$text['description-call_recording_base64']['de-ch'] = "Base64";
|
||||
$text['description-call_recording_base64']['de-de'] = "Base64";
|
||||
$text['description-call_recording_base64']['es-cl'] = "Base64";
|
||||
$text['description-call_recording_base64']['es-mx'] = "Base64";
|
||||
$text['description-call_recording_base64']['fr-ca'] = "Base64";
|
||||
$text['description-call_recording_base64']['fr-fr'] = "Base64";
|
||||
$text['description-call_recording_base64']['he-il'] = "בסיס 64";
|
||||
$text['description-call_recording_base64']['it-it'] = "Base64";
|
||||
$text['description-call_recording_base64']['nl-nl'] = "Base64";
|
||||
$text['description-call_recording_base64']['pl-pl'] = "";
|
||||
$text['description-call_recording_base64']['pt-br'] = "";
|
||||
$text['description-call_recording_base64']['pt-pt'] = "";
|
||||
$text['description-call_recording_base64']['ro-ro'] = "";
|
||||
$text['description-call_recording_base64']['ru-ru'] = "";
|
||||
$text['description-call_recording_base64']['sv-se'] = "";
|
||||
$text['description-call_recording_base64']['uk-ua'] = "";
|
||||
$text['description-call_recording_base64']['pl-pl'] = "Base64";
|
||||
$text['description-call_recording_base64']['pt-br'] = "Base64";
|
||||
$text['description-call_recording_base64']['pt-pt'] = "Base64";
|
||||
$text['description-call_recording_base64']['ro-ro'] = "Base64";
|
||||
$text['description-call_recording_base64']['ru-ru'] = "База64";
|
||||
$text['description-call_recording_base64']['sv-se'] = "Base64";
|
||||
$text['description-call_recording_base64']['uk-ua'] = "База64";
|
||||
$text['description-call_recording_base64']['zh-cn'] = "基地64";
|
||||
$text['description-call_recording_base64']['ja-jp'] = "ベース64";
|
||||
$text['description-call_recording_base64']['ko-kr'] = "베이스64";
|
||||
|
||||
$text['label-inbound']['en-us'] = "Inbound";
|
||||
$text['label-inbound']['en-gb'] = "Inbound";
|
||||
$text['label-inbound']['ar-eg'] = "Inbound";
|
||||
$text['label-inbound']['de-at'] = "Inbound";
|
||||
$text['label-inbound']['de-ch'] = "Inbound";
|
||||
$text['label-inbound']['de-de'] = "Inbound";
|
||||
$text['label-inbound']['es-cl'] = "Inbound";
|
||||
$text['label-inbound']['es-mx'] = "Inbound";
|
||||
$text['label-inbound']['fr-ca'] = "Inbound";
|
||||
$text['label-inbound']['fr-fr'] = "Inbound";
|
||||
$text['label-inbound']['he-il'] = "Inbound";
|
||||
$text['label-inbound']['it-it'] = "Inbound";
|
||||
$text['label-inbound']['ar-eg'] = "واردة";
|
||||
$text['label-inbound']['de-at'] = "Eingehende";
|
||||
$text['label-inbound']['de-ch'] = "Eingehende";
|
||||
$text['label-inbound']['de-de'] = "Eingehende";
|
||||
$text['label-inbound']['es-cl'] = "Entrante";
|
||||
$text['label-inbound']['es-mx'] = "Entrante";
|
||||
$text['label-inbound']['fr-ca'] = "Entrant";
|
||||
$text['label-inbound']['fr-fr'] = "Entrant";
|
||||
$text['label-inbound']['he-il'] = "נכנסת";
|
||||
$text['label-inbound']['it-it'] = "In entrata";
|
||||
$text['label-inbound']['nl-nl'] = "Inkomend";
|
||||
$text['label-inbound']['pl-pl'] = "Przychodzący";
|
||||
$text['label-inbound']['pt-br'] = "Inbound";
|
||||
$text['label-inbound']['pt-pt'] = "Inbound";
|
||||
$text['label-inbound']['ro-ro'] = "Inbound";
|
||||
$text['label-inbound']['ru-ru'] = "Inbound";
|
||||
$text['label-inbound']['sv-se'] = "Inbound";
|
||||
$text['label-inbound']['uk-ua'] = "Inbound";
|
||||
$text['label-inbound']['pt-br'] = "Entrada";
|
||||
$text['label-inbound']['pt-pt'] = "Entrada";
|
||||
$text['label-inbound']['ro-ro'] = "Intrare";
|
||||
$text['label-inbound']['ru-ru'] = "Входящий";
|
||||
$text['label-inbound']['sv-se'] = "Inkommande";
|
||||
$text['label-inbound']['uk-ua'] = "Вхідний";
|
||||
$text['label-inbound']['zh-cn'] = "入境";
|
||||
$text['label-inbound']['ja-jp'] = "インバウンド";
|
||||
$text['label-inbound']['ko-kr'] = "인바운드";
|
||||
|
||||
$text['label-outbound']['en-us'] = "Outbound";
|
||||
$text['label-outbound']['en-gb'] = "Outbound";
|
||||
$text['label-outbound']['ar-eg'] = "Outbound";
|
||||
$text['label-outbound']['de-at'] = "Outbound";
|
||||
$text['label-outbound']['de-ch'] = "Outbound";
|
||||
$text['label-outbound']['de-de'] = "Outbound";
|
||||
$text['label-outbound']['es-cl'] = "Outbound";
|
||||
$text['label-outbound']['es-mx'] = "Outbound";
|
||||
$text['label-outbound']['fr-ca'] = "Outbound";
|
||||
$text['label-outbound']['fr-fr'] = "Outbound";
|
||||
$text['label-outbound']['he-il'] = "Outbound";
|
||||
$text['label-outbound']['it-it'] = "Outbound";
|
||||
$text['label-outbound']['ar-eg'] = "الصادرة";
|
||||
$text['label-outbound']['de-at'] = "Ausgehend";
|
||||
$text['label-outbound']['de-ch'] = "Ausgehend";
|
||||
$text['label-outbound']['de-de'] = "Ausgehend";
|
||||
$text['label-outbound']['es-cl'] = "Saliente";
|
||||
$text['label-outbound']['es-mx'] = "Saliente";
|
||||
$text['label-outbound']['fr-ca'] = "Sortant";
|
||||
$text['label-outbound']['fr-fr'] = "Sortant";
|
||||
$text['label-outbound']['he-il'] = "יוצא";
|
||||
$text['label-outbound']['it-it'] = "In uscita";
|
||||
$text['label-outbound']['nl-nl'] = "Uitgaand";
|
||||
$text['label-outbound']['pl-pl'] = "Wychodzący";
|
||||
$text['label-outbound']['pt-br'] = "Outbound";
|
||||
$text['label-outbound']['pt-pt'] = "Outbound";
|
||||
$text['label-outbound']['pt-br'] = "Saída";
|
||||
$text['label-outbound']['pt-pt'] = "Saída";
|
||||
$text['label-outbound']['ro-ro'] = "Outbound";
|
||||
$text['label-outbound']['ru-ru'] = "Outbound";
|
||||
$text['label-outbound']['sv-se'] = "Outbound";
|
||||
$text['label-outbound']['uk-ua'] = "Outbound";
|
||||
$text['label-outbound']['ru-ru'] = "Исходящий";
|
||||
$text['label-outbound']['sv-se'] = "Utgående";
|
||||
$text['label-outbound']['uk-ua'] = "Вихідний";
|
||||
$text['label-outbound']['zh-cn'] = "出站";
|
||||
$text['label-outbound']['ja-jp'] = "アウトバウンド";
|
||||
$text['label-outbound']['ko-kr'] = "배 밖으로";
|
||||
|
||||
$text['label-local']['en-us'] = "Local";
|
||||
$text['label-local']['en-gb'] = "Local";
|
||||
$text['label-local']['ar-eg'] = "Local";
|
||||
$text['label-local']['de-at'] = "Local";
|
||||
$text['label-local']['de-ch'] = "Local";
|
||||
$text['label-local']['de-de'] = "Local";
|
||||
$text['label-local']['ar-eg'] = "محلي";
|
||||
$text['label-local']['de-at'] = "Lokal";
|
||||
$text['label-local']['de-ch'] = "Lokal";
|
||||
$text['label-local']['de-de'] = "Lokal";
|
||||
$text['label-local']['es-cl'] = "Local";
|
||||
$text['label-local']['es-mx'] = "Local";
|
||||
$text['label-local']['fr-ca'] = "Local";
|
||||
$text['label-local']['fr-fr'] = "Local";
|
||||
$text['label-local']['he-il'] = "Local";
|
||||
$text['label-local']['it-it'] = "Local";
|
||||
$text['label-local']['he-il'] = "מְקוֹמִי";
|
||||
$text['label-local']['it-it'] = "Locale";
|
||||
$text['label-local']['nl-nl'] = "Lokaal";
|
||||
$text['label-local']['pl-pl'] = "Lokalny";
|
||||
$text['label-local']['pt-br'] = "Local";
|
||||
$text['label-local']['pt-pt'] = "Local";
|
||||
$text['label-local']['ro-ro'] = "Local";
|
||||
$text['label-local']['ru-ru'] = "Local";
|
||||
$text['label-local']['sv-se'] = "Local";
|
||||
$text['label-local']['uk-ua'] = "Local";
|
||||
$text['label-local']['ru-ru'] = "Местный";
|
||||
$text['label-local']['sv-se'] = "Lokal";
|
||||
$text['label-local']['uk-ua'] = "Місцевий";
|
||||
$text['label-local']['zh-cn'] = "当地的";
|
||||
$text['label-local']['ja-jp'] = "地元";
|
||||
$text['label-local']['ko-kr'] = "현지의";
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,19 +1,37 @@
|
||||
<?php
|
||||
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = 'Call Recordings';
|
||||
$apps[$x]['menu'][0]['title']['en-gb'] = 'Call Recordings';
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = '';
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = '';
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = '';
|
||||
$apps[$x]['menu'][0]['title']['nl-nl'] = 'Gespreksopnamen';
|
||||
$apps[$x]['menu'][0]['title']['pl'] = 'Nagrania Rozmów';
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = '';
|
||||
$apps[$x]['menu'][0]['title']['uk'] = '';
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = '';
|
||||
$apps[$x]['menu'][0]['uuid'] = 'd5b7bd0e-5e56-4d87-b2d5-7d7b2f7307ef';
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = 'fd29e39c-c936-f5fc-8e2b-611681b266b5';
|
||||
$apps[$x]['menu'][0]['category'] = 'internal';
|
||||
$apps[$x]['menu'][0]['path'] = '/app/call_recordings/call_recordings.php';
|
||||
$apps[$x]['menu'][0]['groups'][] = 'superadmin';
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Recordings";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Recordings";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "تسجيلات المكالمات";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Anrufaufnahmen";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Anrufaufnahmen";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Anrufaufnahmen";
|
||||
$apps[$x]['menu'][$y]['title']['el-gr'] = "Ηχογραφήσεις κλήσεων";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Grabación de llamadas";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Grabación de llamadas";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Enregistrements d'appels";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Enregistrements d'appels";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "הקלטות שיחות";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Registrazioni delle chiamate";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Gespreksopnamen";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Nagrania Rozmów";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Gravações de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Gravações de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Înregistrări de apeluri";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Записи звонков";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Samtalsinspelningar";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Запис дзвінків";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "通话录音";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "コール録音";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "통화 녹음";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "d5b7bd0e-5e56-4d87-b2d5-7d7b2f7307ef";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_recordings/call_recordings.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
@@ -43,15 +42,19 @@
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set additional variables
|
||||
$search = $_GET["search"] ?? '';
|
||||
$show = $_GET["show"] ?? '';
|
||||
|
||||
//get the http post data
|
||||
if (is_array($_POST['call_recordings'])) {
|
||||
if (!empty($_POST['call_recordings']) && is_array($_POST['call_recordings'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_recordings = $_POST['call_recordings'];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_recordings) && @sizeof($call_recordings) != 0) {
|
||||
if (!empty($action) && is_array($call_recordings) && @sizeof($call_recordings) != 0) {
|
||||
switch ($action) {
|
||||
case 'delete':
|
||||
if (permission_exists('call_recording_delete')) {
|
||||
@@ -67,52 +70,95 @@
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
$order_by = $_GET["order_by"] ?? '';
|
||||
$order = $_GET["order"] ?? '';
|
||||
|
||||
//add the search string
|
||||
if (isset($_GET["search"])) {
|
||||
if (!empty($search)) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
$sql_search = "and (";
|
||||
$sql_search .= " lower(call_recording_name) like :search ";
|
||||
$sql_search .= " or lower(call_recording_path) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
|
||||
//set the time zone
|
||||
if (!empty($_SESSION['domain']['time_zone']['name'])) {
|
||||
$time_zone = $_SESSION['domain']['time_zone']['name'];
|
||||
}
|
||||
else {
|
||||
$time_zone = date_default_timezone_get();
|
||||
}
|
||||
$parameters['time_zone'] = $time_zone;
|
||||
|
||||
//get the count
|
||||
$sql = "select count(call_recording_uuid) from v_call_recordings ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['show'] != "all" || !permission_exists('call_recording_all')) {
|
||||
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= $sql_search;
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
//$sql = "select count(*) ";
|
||||
//$sql .= "from view_call_recordings ";
|
||||
//$sql .= "where true ";
|
||||
//if ($_GET['show'] != "all" || !permission_exists('call_recording_all')) {
|
||||
// $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
// $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
//}
|
||||
//if (isset($search)) {
|
||||
// $sql .= "and (";
|
||||
// $sql .= " lower(call_recording_name) like :search ";
|
||||
// $sql .= " or lower(call_recording_path) like :search ";
|
||||
// $sql .= ") ";
|
||||
// $parameters['search'] = '%'.$search.'%';
|
||||
//}
|
||||
//$database = new database;
|
||||
//$num_rows = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($_GET['show'] == "all" && permission_exists('call_recording_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
|
||||
//prepare some of the paging values
|
||||
$rows_per_page = (!empty($_SESSION['domain']['paging']['numeric'])) ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$page = $_GET['page'] ?? '';
|
||||
if (empty($page)) { $page = 0; $_GET['page'] = 0; }
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(call_recording_uuid)', '*', $sql);
|
||||
$sql .= order_by($order_by, $order, 'call_recording_date', 'desc');
|
||||
$sql = "select r.domain_uuid, d.domain_name, r.call_recording_uuid, r.call_direction, ";
|
||||
$sql .= "r.call_recording_name, r.call_recording_path, r.call_recording_length, ";
|
||||
$sql .= "r.caller_id_name, r.caller_id_number, r.caller_destination, r.destination_number, ";
|
||||
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'DD Mon YYYY') as call_recording_date_formatted, \n";
|
||||
$sql .= "to_char(timezone(:time_zone, r.call_recording_date), 'HH12:MI:SS am') as call_recording_time_formatted \n";
|
||||
$sql .= "from view_call_recordings as r, v_domains as d ";
|
||||
//$sql .= "from v_call_recordings as r, v_domains as d ";
|
||||
$sql .= "where true ";
|
||||
if ($show != "all" || !permission_exists('call_recording_all')) {
|
||||
$sql .= "and (r.domain_uuid = :domain_uuid or r.domain_uuid is null) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
$sql .= "and r.domain_uuid = d.domain_uuid ";
|
||||
if (!empty($search)) {
|
||||
$sql .= "and (";
|
||||
$sql .= " lower(r.call_direction) like :search ";
|
||||
$sql .= " or lower(r.caller_id_name) like :search ";
|
||||
$sql .= " or lower(r.caller_id_number) like :search ";
|
||||
$sql .= " or lower(r.caller_destination) like :search ";
|
||||
$sql .= " or lower(r.destination_number) like :search ";
|
||||
$sql .= " or lower(r.call_recording_name) like :search ";
|
||||
$sql .= " or lower(r.call_recording_path) like :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$sql .= order_by($order_by, $order, 'r.call_recording_date', 'desc');
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$call_recordings = $database->select($sql, $parameters, 'all');
|
||||
$call_recordings = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//count the results
|
||||
$result_count = is_array($call_recordings) ? sizeof($call_recordings) : 0;
|
||||
|
||||
//limit the number of results
|
||||
if (!empty($_SESSION['cdr']['limit']['numeric']) && $_SESSION['cdr']['limit']['numeric'] > 0) {
|
||||
$num_rows = $_SESSION['cdr']['limit']['numeric'];
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$param = "&search=".urlencode($search);
|
||||
if ($show == "all" && permission_exists('call_recording_all')) {
|
||||
$param .= "&show=all";
|
||||
}
|
||||
list($paging_controls_mini, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, true, $result_count); //top
|
||||
list($paging_controls, $rows_per_page) = paging($num_rows ?? null, $param, $rows_per_page, false, $result_count); //bottom
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
@@ -123,7 +169,7 @@
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call_recordings']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call_recordings']." </b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (permission_exists('call_recording_download_add') && $call_recordings) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'collapse'=>'hide-xs','onclick'=>"list_action_set('download'); list_form_submit('form_list');"]);
|
||||
@@ -132,10 +178,18 @@
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-left: 15px;','collapse'=>'hide-xs','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=''>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','collapse'=>'hide-xs']);
|
||||
//echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_recordings.php','style'=>($search == '' ? 'display: none;' : null),'collapse'=>'hide-xs']);
|
||||
if ($paging_controls_mini != '') {
|
||||
if (permission_exists('call_recording_all')) {
|
||||
if ($show == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
}
|
||||
else {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type='.urlencode($destination_type ?? '').'&show=all'.(!empty($search) ? "&search=".urlencode($search) : null)]);
|
||||
}
|
||||
}
|
||||
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown=\"$('#btn_reset').hide(); $('#btn_search').show();\">";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>(!empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
|
||||
echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_recordings.php','style'=>(empty($search) ? 'display: none;' : null),'collapse'=>'hide-xs']);
|
||||
if (!empty($paging_controls_mini)) {
|
||||
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
|
||||
}
|
||||
echo " </form>\n";
|
||||
@@ -156,24 +210,31 @@
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
$col_count = 4;
|
||||
$col_count = 8;
|
||||
if ($show == "all" && permission_exists('call_recording_all')) {
|
||||
$col_count++;
|
||||
}
|
||||
if (permission_exists('call_recording_delete')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".($call_recordings ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle(); checkbox_on_change(this);' ".(empty($call_recordings) ? "style='visibility: hidden;'" : null).">\n";
|
||||
echo " </th>\n";
|
||||
$col_count++;
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_recording_all')) {
|
||||
if ($show == "all" && permission_exists('call_recording_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo th_order_by('call_recording_name', $text['label-call_recording_name'], $order_by, $order, null, "class='pct-40'");
|
||||
echo th_order_by('caller_id_name', $text['label-caller_id_name'], $order_by, $order, null, "class='hide-sm-dn shrink'");
|
||||
echo th_order_by('caller_id_number', $text['label-caller_id_number'], $order_by, $order, null, "class='pct-10'");
|
||||
echo th_order_by('caller_destination', $text['label-caller_destination'], $order_by, $order, null, "class='hide-sm-dn shrink'");
|
||||
echo th_order_by('destination_number', $text['label-destination_number'], $order_by, $order, null, "class='hide-sm-dn shrink'");
|
||||
echo th_order_by('call_recording_name', $text['label-call_recording_name'], $order_by, $order, null, "class='pct-40 hide-sm-dn'");
|
||||
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
|
||||
echo "<th class='shrink center'>".$text['label-recording']."</th>\n";
|
||||
$col_count++;
|
||||
}
|
||||
echo th_order_by('call_recording_length', $text['label-call_recording_length'], $order_by, $order, null, "class='right'");
|
||||
echo th_order_by('call_recording_date', $text['label-call_recording_date'], $order_by, $order);
|
||||
echo th_order_by('call_direction', $text['label-call_direction'], $order_by, $order);
|
||||
echo th_order_by('call_recording_length', $text['label-call_recording_length'], $order_by, $order, null, "class='right hide-sm-dn shrink'");
|
||||
echo th_order_by('call_recording_date', $text['label-call_recording_date'], $order_by, $order, null, "class='center'");
|
||||
echo th_order_by('call_direction', $text['label-call_direction'], $order_by, $order, null, "class='hide-sm-dn shrink'");
|
||||
if (permission_exists('xml_cdr_details')) {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
@@ -182,6 +243,9 @@
|
||||
if (is_array($call_recordings) && @sizeof($call_recordings) != 0) {
|
||||
$x = 0;
|
||||
foreach ($call_recordings as $row) {
|
||||
//add padding to the call recording length
|
||||
$call_recording_length_padding = (!empty($row['call_recording_length'])) ? str_pad($row['call_recording_length'], 2, '0', STR_PAD_LEFT) : '';
|
||||
|
||||
//playback progress bar
|
||||
if (permission_exists('call_recording_play')) {
|
||||
echo "<tr class='list-row' id='recording_progress_bar_".escape($row['call_recording_uuid'])."' style='display: none;'><td class='playback_progress_bar_background' style='padding: 0; border: none;' colspan='".$col_count."'><span class='playback_progress_bar' id='recording_progress_".escape($row['call_recording_uuid'])."'></span></td>".(permission_exists('xml_cdr_details') ? "<td class='action-button' style='border-bottom: none !important;'></td>" : null)."</tr>\n";
|
||||
@@ -197,16 +261,14 @@
|
||||
echo " <input type='hidden' name='call_recordings[$x][uuid]' value='".escape($row['call_recording_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_recording_all')) {
|
||||
if (strlen($_SESSION['domains'][$row['domain_uuid']]['domain_name']) > 0) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
if ($show == "all" && permission_exists('call_recording_all')) {
|
||||
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['domain_name'])."</td>\n";
|
||||
}
|
||||
echo " <td class='overflow'>".escape($row['call_recording_name'])."</td>\n";
|
||||
echo " <td class='hide-sm-dn shrink'>".escape($row['caller_id_name'])."</td>\n";
|
||||
echo " <td class='overflow'>".escape($row['caller_id_number'])."</td>\n";
|
||||
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['caller_destination'])."</td>\n";
|
||||
echo " <td class='overflow hide-sm-dn shrink'>".escape($row['destination_number'])."</td>\n";
|
||||
echo " <td class='hide-sm-dn nowrap'>".escape($row['call_recording_name'])."</td>\n";
|
||||
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
|
||||
echo " <td class='middle button center no-link no-wrap'>";
|
||||
if (file_exists($row['call_recording_path'].'/'.$row['call_recording_name'])) {
|
||||
@@ -226,10 +288,9 @@
|
||||
}
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo " <td class='right'>".($row['call_recording_length'] <= 59 ? '0:' : null).escape(str_pad($row['call_recording_length'], 2, '0', STR_PAD_LEFT))."</td>\n";
|
||||
$call_recording_date = explode(' ', $row['call_recording_date']);
|
||||
echo " <td class='no-wrap'>".escape($call_recording_date['0'])." <span class='hide-sm-dn'>".escape($call_recording_date[1])."</span></td>\n";
|
||||
echo " <td>".($row['call_direction'] != '' ? escape($text['label-'.$row['call_direction']]) : null)."</td>\n";
|
||||
echo " <td class='right overflow hide-sm-dn shrink'>".($row['call_recording_length'] <= 59 ? '0:' : null).escape($call_recording_length_padding)."</td>\n";
|
||||
echo " <td class='center no-wrap'>".escape($row['call_recording_date_formatted'])." <span class='hide-sm-dn'>".escape($row['call_recording_time_formatted'])."</span></td>\n";
|
||||
echo " <td class='left hide-sm-dn shrink'>".($row['call_direction'] != '' ? escape($text['label-'.$row['call_direction']]) : null)."</td>\n";
|
||||
if (permission_exists('xml_cdr_details')) {
|
||||
echo " <td class='action-button'>\n";
|
||||
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>PROJECT_PATH.'/app/xml_cdr/xml_cdr_details.php?id='.urlencode($row['call_recording_uuid'])]);
|
||||
|
||||
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permisions
|
||||
|
||||
@@ -1,4 +1,28 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* call_recordings class
|
||||
@@ -33,16 +57,6 @@ if (!class_exists('call_recordings')) {
|
||||
$this->location = 'call_recordings.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* called when there are no references to a particular object
|
||||
* unset the variables used in the class
|
||||
*/
|
||||
public function __destruct() {
|
||||
foreach ($this as $key => $value) {
|
||||
unset($this->$key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete rows from the database
|
||||
*/
|
||||
@@ -67,10 +81,10 @@ if (!class_exists('call_recordings')) {
|
||||
$x = 0;
|
||||
foreach ($records as $record) {
|
||||
//add to the array
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
if (!empty($record['checked']) && $record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
//get the information to delete
|
||||
$sql = "select call_recording_name, call_recording_path ";
|
||||
$sql .= "from v_call_recordings ";
|
||||
$sql .= "from view_call_recordings ";
|
||||
$sql .= "where call_recording_uuid = :call_recording_uuid ";
|
||||
$parameters['call_recording_uuid'] = $record['uuid'];
|
||||
$database = new database;
|
||||
@@ -81,7 +95,10 @@ if (!class_exists('call_recordings')) {
|
||||
unlink($field['call_recording_path'].'/'.$field['call_recording_name']);
|
||||
}
|
||||
//build call recording delete array
|
||||
$array[$this->table][$x][$this->name.'_uuid'] = $record['uuid'];
|
||||
$array['xml_cdr'][$x]['xml_cdr_uuid'] = $record['uuid'];
|
||||
$array['xml_cdr'][$x]['record_path'] = null;
|
||||
$array['xml_cdr'][$x]['record_name'] = null;
|
||||
$array['xml_cdr'][$x]['record_length'] = null;
|
||||
//increment the id
|
||||
$x++;
|
||||
}
|
||||
@@ -91,15 +108,25 @@ if (!class_exists('call_recordings')) {
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
//execute delete
|
||||
|
||||
//add temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('xml_cdr_edit', 'temp');
|
||||
|
||||
//remove record_path, record_name and record_length
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
$database->app_name = 'xml_cdr';
|
||||
$database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
|
||||
$database->save($array, false);
|
||||
$message = $database->message;
|
||||
unset($array);
|
||||
|
||||
//remove the temporary permissions
|
||||
$p->delete('xml_cdr_edit', 'temp');
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
@@ -114,8 +141,11 @@ if (!class_exists('call_recordings')) {
|
||||
|
||||
//get call recording from database
|
||||
if (is_uuid($this->recording_uuid)) {
|
||||
$sql = "select call_recording_name, call_recording_path, call_recording_base64 ";
|
||||
$sql .= "from v_call_recordings ";
|
||||
$sql = "select call_recording_name, call_recording_path ";
|
||||
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
|
||||
$sql = ", call_recording_base64 ";
|
||||
}
|
||||
$sql .= "from view_call_recordings ";
|
||||
$sql .= "where call_recording_uuid = :call_recording_uuid ";
|
||||
$parameters['call_recording_uuid'] = $this->recording_uuid;
|
||||
$database = new database;
|
||||
@@ -123,26 +153,19 @@ if (!class_exists('call_recordings')) {
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
$call_recording_name = $row['call_recording_name'];
|
||||
$call_recording_path = $row['call_recording_path'];
|
||||
if ($_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
|
||||
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
|
||||
file_put_contents($path.'/'.$call_recording_name, base64_decode($row['call_recording_base64']));
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
}
|
||||
|
||||
//set the path for the directory
|
||||
$default_path = $_SESSION['switch']['call_recordings']['dir']."/".$_SESSION['domain_name'];
|
||||
|
||||
//build full path
|
||||
$full_recording_path = $call_recording_path.'/'.$call_recording_name;
|
||||
|
||||
//download the file
|
||||
if (file_exists($full_recording_path)) {
|
||||
//content-range
|
||||
if (isset($_SERVER['HTTP_RANGE']) && !$this->binary) {
|
||||
$this->range_download($full_recording_path);
|
||||
}
|
||||
ob_clean();
|
||||
if ($full_recording_path != '/' && file_exists($full_recording_path)) {
|
||||
ob_clean();
|
||||
$fd = fopen($full_recording_path, "rb");
|
||||
if ($this->binary) {
|
||||
header("Content-Type: application/force-download");
|
||||
@@ -164,12 +187,18 @@ if (!class_exists('call_recordings')) {
|
||||
if ($this->binary) {
|
||||
header("Content-Length: ".filesize($full_recording_path));
|
||||
}
|
||||
ob_clean();
|
||||
fpassthru($fd);
|
||||
ob_clean();
|
||||
|
||||
//content-range
|
||||
if (isset($_SERVER['HTTP_RANGE']) && !$this->binary) {
|
||||
$this->range_download($full_recording_path);
|
||||
}
|
||||
|
||||
fpassthru($fd);
|
||||
}
|
||||
|
||||
//if base64, remove temp recording file
|
||||
if ($_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
|
||||
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
|
||||
@unlink($full_recording_path);
|
||||
}
|
||||
}
|
||||
@@ -198,7 +227,7 @@ if (!class_exists('call_recordings')) {
|
||||
* (mediatype = mimetype)
|
||||
* as well as a boundry header to indicate the various chunks of data.
|
||||
*/
|
||||
header("Accept-Ranges: 0-$length");
|
||||
header("Accept-Ranges: 0-".$length);
|
||||
// header('Accept-Ranges: bytes');
|
||||
// multipart/byteranges
|
||||
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
|
||||
@@ -221,7 +250,7 @@ if (!class_exists('call_recordings')) {
|
||||
// If the range starts with an '-' we start from the beginning
|
||||
// If not, we forward the file pointer
|
||||
// And make sure to get the end byte if spesified
|
||||
if ($range0 == '-') {
|
||||
if ($range[0] == '-') {
|
||||
// The n-number of the last bytes is requested
|
||||
$c_start = $size - substr($range, 1);
|
||||
}
|
||||
@@ -272,4 +301,4 @@ if (!class_exists('call_recordings')) {
|
||||
} //class
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
+356
-249
File diff suppressed because it is too large
Load Diff
@@ -3,13 +3,13 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Active Calls";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Active Calls";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "الدعوات النشطة";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Aktive Gespräche";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Aktive Anrufe";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Aktive Gespräche";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Llamadas Activas";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Llamadas activas";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Appels actifs";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Appels en cours";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "שיחות פעילות";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Chiamate Attive";
|
||||
@@ -17,15 +17,21 @@
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Aktywne połączenia";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Chamadas ativas";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Chamadas Activas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Apeluri active";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Активные вызовы";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Aktiva samtal";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Активні дзвінки";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "主动通话";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "アクティブ コール";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "활성 통화";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "eba3d07f-dd5c-6b7b-6880-493b44113ade";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/calls_active/calls_active.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,16 +17,15 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -43,7 +42,7 @@
|
||||
$text = $language->get();
|
||||
|
||||
//get the HTTP values and set as variables
|
||||
$show = trim($_REQUEST["show"]);
|
||||
$show = trim($_REQUEST["show"] ?? '');
|
||||
if ($show != "all") { $show = ''; }
|
||||
|
||||
//show the header
|
||||
@@ -53,7 +52,7 @@
|
||||
//load gateways into a session variable
|
||||
$sql = "select gateway_uuid, domain_uuid, gateway from v_gateways where enabled = 'true' ";
|
||||
$database = new database;
|
||||
$gateways = $database->select($sql, $parameters, 'all');
|
||||
$gateways = $database->select($sql, $parameters ?? null, 'all');
|
||||
foreach ($gateways as $row) {
|
||||
$_SESSION['gateways'][$row['gateway_uuid']] = $row['gateway'];
|
||||
}
|
||||
|
||||
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -43,7 +42,7 @@
|
||||
$text = $language->get();
|
||||
|
||||
//get the HTTP values and set as variables
|
||||
$show = trim($_REQUEST["show"]);
|
||||
$show = trim($_REQUEST["show"] ?? '');
|
||||
if ($show != "all") { $show = ''; }
|
||||
|
||||
//include theme config for button images
|
||||
@@ -66,7 +65,7 @@
|
||||
if (isset($results["rows"])) {
|
||||
foreach ($results["rows"] as &$row) {
|
||||
//get the domain
|
||||
if (strlen($row['context']) > 0 && $row['context'] != "public" && $row['context'] != "default") {
|
||||
if (!empty($row['context']) && $row['context'] != "public" && $row['context'] != "default") {
|
||||
if (substr_count($row['context'], '@') > 0) {
|
||||
$context_array = explode('@', $row['context']);
|
||||
$row['domain_name'] = $context_array[1];
|
||||
@@ -153,7 +152,7 @@
|
||||
echo "<tr class='list-header'>\n";
|
||||
if (permission_exists('call_active_hangup')) {
|
||||
echo " <th class='checkbox'>\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".($rows ?: "style='visibility: hidden;'").">\n";
|
||||
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n";
|
||||
echo " </th>\n";
|
||||
}
|
||||
echo " <th>".$text['label-profile']."</th>\n";
|
||||
@@ -224,7 +223,7 @@
|
||||
echo " <td>".escape($cid_name)." </td>\n";
|
||||
echo " <td>".escape($cid_num)." </td>\n";
|
||||
echo " <td>".escape($dest)." </td>\n";
|
||||
echo " <td>".(strlen($application) > 0 ? escape($application).":".escape($application_data) : null)." </td>\n";
|
||||
echo " <td>".(!empty($application) ? escape($application).":".escape($application_data) : null)." </td>\n";
|
||||
echo " <td>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)." </td>\n";
|
||||
echo " <td>".escape($secure)." </td>\n";
|
||||
if (permission_exists('call_active_hangup')) {
|
||||
|
||||
@@ -24,9 +24,8 @@
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
//includes files
|
||||
require_once dirname(__DIR__, 2) . "/resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
@@ -67,7 +66,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_uuid($_REQUEST['uuid'])) {
|
||||
if (!empty($_REQUEST['uuid']) && is_uuid($_REQUEST['uuid'])) {
|
||||
$calls[] = $_REQUEST['uuid'];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
FusionPBX
|
||||
Version: MPL 1.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is FusionPBX
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
// make sure the PATH_SEPARATOR is defined
|
||||
umask(2);
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if (strpos($_ENV["OS"], "Win") !== false) {
|
||||
define("PATH_SEPARATOR", ";");
|
||||
} else {
|
||||
define("PATH_SEPARATOR", ":");
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
|
||||
if(PHP_SAPI == 'cli'){
|
||||
chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
|
||||
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
|
||||
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
|
||||
if (file_exists('/project_root.php')) {
|
||||
$path = '/';
|
||||
} else {
|
||||
$i = 1;
|
||||
$path = '';
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = $path;
|
||||
}else{
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
}
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
// try to detect if a project path is being used
|
||||
if (!defined('PROJECT_PATH')) {
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
|
||||
define('PROJECT_PATH', '/fusionpbx');
|
||||
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
|
||||
define('PROJECT_PATH', '');
|
||||
} else {
|
||||
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
|
||||
$i = 1;
|
||||
$path = $_SERVER["DOCUMENT_ROOT"];
|
||||
while ($i < count($dirs)) {
|
||||
$path .= '/' . $dirs[$i];
|
||||
if (file_exists($path. '/project_root.php')) {
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if(!file_exists($path. '/project_root.php')){
|
||||
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
|
||||
}
|
||||
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
|
||||
define('PROJECT_PATH', $project_path);
|
||||
}
|
||||
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = "Cisco";
|
||||
$apps[$x]['uuid'] = "eb30ac3a-1f11-4c72-9878-9572baf3ed6d";
|
||||
$apps[$x]['category'] = "Vendor";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "";
|
||||
$apps[$x]['description']['en-gb'] = "";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['es-cl'] = "";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "";
|
||||
$apps[$x]['description']['ro-ro'] = "";
|
||||
$apps[$x]['description']['ru-ru'] = "";
|
||||
$apps[$x]['description']['sv-se'] = "";
|
||||
$apps[$x]['description']['uk-ua'] = "";
|
||||
|
||||
//default settings
|
||||
$y=0;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "da21eec7-699b-4a8b-a5e5-30ce118aaf8c";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_time_zone";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "GMT-07:00";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a6529f0e-9d8b-43b9-b487-db42b9b6be25";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_time_format";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "12hr";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "12hr,24hr";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "58c764a9-4f71-4cd2-a44a-1ab52990b97f";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_date_format";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "day/month";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "94d7d463-770e-48d9-8ba7-6009a54be413";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_provision_url";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA Provision URL";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9c9886a0-92f6-4dd7-8c1b-d04f240d9a9b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_back_light_timer";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "30 s";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7c7fb3c1-3796-4c5f-b090-2aec955e023b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_handle_via_rport";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "Yes";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8311d0c9-73ae-4d49-9036-e2f649586b5b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_insert_via_rport";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "Yes";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "72de5cdf-31f8-4d4b-b94b-468be0aa7a3d";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_dial_plan";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "(park+*xxxx|*xxxxxxx|*xxxxxx|*xxxxx|*xxxx|*xxx|*xx*|*x|**xxxxx|**xxxx|**xxx|**xx|[3469]11|0|00|[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.)";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "564c50ee-4403-4e26-a30b-637f661db389";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_call_waiting";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "Yes";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Call Waiting Yes=enabled No=disable";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "05176dde-763e-4983-b8d2-93f6bf984805";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_feature_key_sync";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "No";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Feature Key Sync Yes=enabled No=disable";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "2ce5d7a2-2a72-423f-adb4-777b1f0f8586";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_dual_registration";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "No";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Dual Registration Yes=enabled No=disable";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "6f815035-9b80-4007-8cc6-ac151727e5fb";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_register_when_failover";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "No";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Auto register when failover Yes=enabled No=disable";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7f93d499-13e8-4938-ba1f-01eafff43354";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_secure_call_setting";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "No";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA secure call No or Yes";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "e8efadd1-8753-42b3-92d8-d2b40f111c63";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_resync_time";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA resync at 0300 every night at 3:00 am. Default disabled.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "753ed706-a5b0-47c1-a466-5ed35c4d27da";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_upgrade_enable";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA upgrade firmware enable Yes or No Default No.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c142a1aa-957f-441e-9b05-366d10929b72";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_vlan_enable";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "No";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA vlan enable. Options: Yes or No Default No.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3d3ffb11-9ade-4725-a02e-926dd483a2bf";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_vlan_id";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA VLAN ID. Options 0 to 4094.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "78637de4-ec12-4d41-8c65-39afe50d2b02";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_vlan_pc_id";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA PC VLAN ID. Options 0 to 4094.";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
+405
-310
File diff suppressed because it is too large
Load Diff
@@ -3,27 +3,33 @@
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Click to Call";
|
||||
$apps[$x]['menu'][$y]['title']['en-gb'] = "Click to Call";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ar-eg'] = "اضغط للاتصال";
|
||||
$apps[$x]['menu'][$y]['title']['de-at'] = "Click to Call";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "Klicken Sie auf Anruf";
|
||||
$apps[$x]['menu'][$y]['title']['de-de'] = "Click to Call";
|
||||
$apps[$x]['menu'][$y]['title']['es-cl'] = "Pulse para Llamar";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "Haga clic para llamar";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Cliquez pour appeler";
|
||||
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Cliquez pour Appeller";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "לחצו על Call";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Clicca e Chiama";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Klik voor oproep";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Click to Call";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Clique para ligar";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Clicar para Chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Fă clic pentru a apela";
|
||||
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Вызов по клику";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Klicka för att ringa";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Натисніть, щоб викликати";
|
||||
$apps[$x]['menu'][$y]['title']['zh-cn'] = "点击通话";
|
||||
$apps[$x]['menu'][$y]['title']['ja-jp'] = "電話するにはクリック";
|
||||
$apps[$x]['menu'][$y]['title']['ko-kr'] = "클릭 투 콜";
|
||||
$apps[$x]['menu'][$y]['uuid'] = "f862556f-9ddd-2697-fdf4-bed08ec63aa5";
|
||||
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][$y]['category'] = "internal";
|
||||
$apps[$x]['menu'][$y]['icon'] = "";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/click_to_call/click_to_call.php";
|
||||
$apps[$x]['menu'][$y]['order'] = "";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user