Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
793d386a96 | ||
|
|
4aabbab6d0 | ||
|
|
2e6f90fb80 | ||
|
|
91911a10ca | ||
|
|
bdebe75d78 | ||
|
|
74804cea64 | ||
|
|
47921ff596 | ||
|
|
8d3a286050 | ||
|
|
8eacfbcb40 | ||
|
|
c1d57a7c1e | ||
|
|
c80a1b850e | ||
|
|
2de8ac119d | ||
|
|
504d89dd90 | ||
|
|
08c4618ec2 | ||
|
|
ed0f02a9e0 | ||
|
|
7917c7cc8b | ||
|
|
22ac756b16 | ||
|
|
26a810459b | ||
|
|
0adcd1c0d8 | ||
|
|
a4d324ac46 | ||
|
|
1f2695c38a | ||
|
|
772474faae | ||
|
|
1e6d8bfa26 | ||
|
|
39d44acd1e | ||
|
|
1756b6064f | ||
|
|
6b665af51c | ||
|
|
c40cde7360 | ||
|
|
fe904dfc1c | ||
|
|
5752f732b0 | ||
|
|
e9663820cc | ||
|
|
83195efcab | ||
|
|
54bba850a8 | ||
|
|
2c013795c1 | ||
|
|
fe45b3c036 | ||
|
|
65f0ddd438 | ||
|
|
a4b609c746 | ||
|
|
f50c2a4d46 | ||
|
|
46bbc28220 | ||
|
|
a85e7eb70a | ||
|
|
0b11ab57de | ||
|
|
09c4dd79d0 | ||
|
|
966f9b9c52 | ||
|
|
d9af79d844 | ||
|
|
288b3097a5 | ||
|
|
3f9bef47ee | ||
|
|
b2c4ff8008 | ||
|
|
efa6cef940 | ||
|
|
080e89243c | ||
|
|
c4374178a4 | ||
|
|
0237697634 | ||
|
|
24bd0274f7 | ||
|
|
3301b4605c | ||
|
|
5f67be647d | ||
|
|
d5592672f0 | ||
|
|
27a72bfa59 | ||
|
|
72d489ec65 | ||
|
|
47c8fb090d | ||
|
|
1af143963b | ||
|
|
b44cacd07a | ||
|
|
47e6c57259 | ||
|
|
e5f311e2fa | ||
|
|
5d140effd1 | ||
|
|
ce9e2cc4d1 | ||
|
|
b439b7953f | ||
|
|
76dfa895dd | ||
|
|
81003e35d8 | ||
|
|
c4fc2f3deb | ||
|
|
42d9548fac | ||
|
|
c117b071e6 | ||
|
|
9087c09182 | ||
|
|
601c532013 | ||
|
|
9f4287a9b4 | ||
|
|
978bec7cbd | ||
|
|
558c82d386 | ||
|
|
49e27b3637 | ||
|
|
c57b949503 | ||
|
|
b960fa00e6 | ||
|
|
4639001ca3 | ||
|
|
c19b6cc7ee | ||
|
|
3e16e69adb | ||
|
|
1615de1358 | ||
|
|
2a2dd209df | ||
|
|
1a29486bcc | ||
|
|
559aa61fbd | ||
|
|
f1e8e1c366 | ||
|
|
1d6c6463e7 | ||
|
|
bec13ef258 | ||
|
|
cd21e26893 | ||
|
|
983365ad41 | ||
|
|
9d83f9f153 | ||
|
|
01ce7bdb88 | ||
|
|
d8b2ec5271 | ||
|
|
703b61636a | ||
|
|
b5cacea373 | ||
|
|
f1e082bc03 | ||
|
|
47c09b99c6 | ||
|
|
16b73d63d8 | ||
|
|
bf8a24d5ee | ||
|
|
3e91d872f4 | ||
|
|
d030b52f6d | ||
|
|
07e884d494 | ||
|
|
e19f459cd8 | ||
|
|
e9b93fd426 | ||
|
|
6a767846e6 | ||
|
|
ce93da056b | ||
|
|
3857b04be0 | ||
|
|
1238d109c6 | ||
|
|
fac705c1a8 | ||
|
|
5d457205f6 | ||
|
|
bf96d4afc1 | ||
|
|
4366aa083a | ||
|
|
b97ae86283 | ||
|
|
bfa72cc78a | ||
|
|
630d9e020c | ||
|
|
785136eca9 | ||
|
|
181ab435a8 | ||
|
|
ef24c2178e | ||
|
|
d590df4b61 | ||
|
|
8319533034 | ||
|
|
c4bd1a0e72 | ||
|
|
cb31af2fc5 | ||
|
|
b04e958d5b | ||
|
|
15ca076e09 | ||
|
|
51169dd358 | ||
|
|
88f4348be2 | ||
|
|
c128c0fc71 | ||
|
|
a3a1d4a1dd | ||
|
|
2f6994a9ce | ||
|
|
5c8a6dd7fe | ||
|
|
7878b0efa8 | ||
|
|
12f9560595 | ||
|
|
394df070af | ||
|
|
8c65a4dafd | ||
|
|
64e70ed2d9 | ||
|
|
f1c43c3ea8 | ||
|
|
a59f0377c3 | ||
|
|
1ee7961a90 | ||
|
|
2b89eaedc8 | ||
|
|
ac09ce2a02 | ||
|
|
c2ddc91a4f | ||
|
|
73d62546a4 | ||
|
|
c8f87ac7e2 | ||
|
|
84a97b52fa | ||
|
|
3ee1fb0513 | ||
|
|
30a33d84b7 | ||
|
|
ed49b0fd51 | ||
|
|
fead5df810 | ||
|
|
a1fdd5c220 | ||
|
|
66aa2ee0a0 | ||
|
|
3725a83df2 | ||
|
|
905c68bfad | ||
|
|
82cd26486b | ||
|
|
a181b9f779 | ||
|
|
b4f1222565 | ||
|
|
851f6bb9f6 | ||
|
|
173e9ca691 | ||
|
|
b2595d4713 | ||
|
|
22b8649fa3 | ||
|
|
85c971eec8 | ||
|
|
85d3c1346d | ||
|
|
2b98c86050 | ||
|
|
b9183fddde | ||
|
|
8a0a149a1d | ||
|
|
5af837466d | ||
|
|
ac734e6140 | ||
|
|
9506d9c655 | ||
|
|
3f4a674364 | ||
|
|
565395c44f | ||
|
|
e255e7eb0c | ||
|
|
e6ff9576ce | ||
|
|
82a61ed614 | ||
|
|
63e35e2278 | ||
|
|
a0bf30e2c6 | ||
|
|
089f270957 | ||
|
|
19d05b3aed | ||
|
|
6f28a7123b | ||
|
|
9e24112904 | ||
|
|
d8c9c3910f | ||
|
|
09886a63a7 | ||
|
|
d676c5ee17 | ||
|
|
32b782d3f0 | ||
|
|
3da348fff0 | ||
|
|
3692c1deb8 | ||
|
|
3473c580d6 | ||
|
|
26fe054581 | ||
|
|
953462f400 | ||
|
|
c556498dae | ||
|
|
57808740ef | ||
|
|
a214b57f81 | ||
|
|
4a55588898 | ||
|
|
b8f9b423c7 | ||
|
|
6f9eb6ab29 | ||
|
|
4fc2bbaa9f | ||
|
|
4b30e652b4 | ||
|
|
b689e726a4 | ||
|
|
45a15a3f83 | ||
|
|
11cb15fc88 | ||
|
|
861e545541 | ||
|
|
59e4f6b91f | ||
|
|
1423dd953b | ||
|
|
ed186836e2 | ||
|
|
6bf0404e5d | ||
|
|
064f73aa70 | ||
|
|
8e989c7fb6 | ||
|
|
5ebee5d19e | ||
|
|
5c14e56dbe | ||
|
|
f2bca9ce5f | ||
|
|
aed3b4f9d8 | ||
|
|
72037fc19e | ||
|
|
61f5e77cfb | ||
|
|
78541b67ce | ||
|
|
8fbbbda5a4 | ||
|
|
262737828c | ||
|
|
3a805e1870 | ||
|
|
243dffe949 | ||
|
|
acec54be57 | ||
|
|
3c394e8fc3 | ||
|
|
4f0a57ac7d | ||
|
|
a6d8f7068c | ||
|
|
63c6031da6 | ||
|
|
f0d90fd1e0 | ||
|
|
a6440ac0aa | ||
|
|
55b04e9d4d | ||
|
|
b92448366d | ||
|
|
c5a1139342 | ||
|
|
ec532e8d12 | ||
|
|
c0a6c121f2 | ||
|
|
d140e264ef | ||
|
|
db84e4d8ec | ||
|
|
62a11caa62 | ||
|
|
358ff5844b | ||
|
|
ad3145ba19 | ||
|
|
2838d29a89 | ||
|
|
02664f02a7 | ||
|
|
f52f7999a0 | ||
|
|
fec3b0f14c | ||
|
|
1d5bb75f2d | ||
|
|
3e8284c36e | ||
|
|
86a961e46b | ||
|
|
60706b6278 | ||
|
|
a46295a4f2 | ||
|
|
44245e760f | ||
|
|
c4ded231f9 | ||
|
|
e522fbf8ae | ||
|
|
76f4a4e1ee | ||
|
|
410cb1a268 | ||
|
|
41f052901f | ||
|
|
8b3c4ca914 | ||
|
|
00bc718f2b | ||
|
|
e63ca5f0f5 | ||
|
|
8d7832768b | ||
|
|
4dfc24d1bd | ||
|
|
948b9a73de | ||
|
|
f4ef721edc | ||
|
|
39ff3bee5a | ||
|
|
911036c6ae | ||
|
|
73f2c21674 | ||
|
|
e7051129ac | ||
|
|
0f9f7850ee | ||
|
|
902f8f9019 | ||
|
|
dddefb7b42 | ||
|
|
0cff228558 | ||
|
|
130394ff01 | ||
|
|
90d91c8b5a | ||
|
|
cdc4b670d2 | ||
|
|
5059613a40 | ||
|
|
526b6e6b7f | ||
|
|
f04798654a | ||
|
|
0825eba324 | ||
|
|
e97ab47c98 | ||
|
|
a7eb1f12d0 | ||
|
|
c4f1221015 | ||
|
|
cafc371c88 | ||
|
|
f994329edb | ||
|
|
21f02c4042 | ||
|
|
2788d69ded | ||
|
|
b6c93351eb | ||
|
|
8356f9ffe3 | ||
|
|
2448a092b0 | ||
|
|
fb9a2bc9b6 | ||
|
|
0480048950 | ||
|
|
4681c145b4 | ||
|
|
f438ccef0f | ||
|
|
fd027f91e7 | ||
|
|
b22d8a78f7 | ||
|
|
96189ed7a4 | ||
|
|
0da20b3f4e | ||
|
|
683ba25ec8 | ||
|
|
c44bf38f7e | ||
|
|
639c051288 | ||
|
|
d4333c2a75 | ||
|
|
31dd57bffe | ||
|
|
42a06f13f5 | ||
|
|
b1556926eb | ||
|
|
fc3974f557 | ||
|
|
88ef7714b5 | ||
|
|
8e527ff817 | ||
|
|
f2bbf183fa | ||
|
|
1dede161c4 | ||
|
|
6091bd005f | ||
|
|
63705169bb | ||
|
|
242e26c746 | ||
|
|
f01988c84d | ||
|
|
fbb6576901 | ||
|
|
ad34763c8d | ||
|
|
1510c1c631 | ||
|
|
209fa831a7 | ||
|
|
574c63a83a | ||
|
|
517eab93c0 | ||
|
|
e8d45ff480 | ||
|
|
e2afcf857d | ||
|
|
536a2fd827 | ||
|
|
93e788399a | ||
|
|
9bb10da76d | ||
|
|
ab25689fef | ||
|
|
c703ec09a2 | ||
|
|
a9bc524330 | ||
|
|
dbee568624 | ||
|
|
2f9dd5f1e0 | ||
|
|
140af2ffa2 | ||
|
|
611b308d9e | ||
|
|
5a58a9c3d4 | ||
|
|
72191ac270 | ||
|
|
50eca991c2 | ||
|
|
b825f35fee | ||
|
|
6252e5bfb0 | ||
|
|
7cec657e76 | ||
|
|
0bcea327b9 | ||
|
|
64772fa2bb | ||
|
|
9e6b33267b | ||
|
|
cbb81d43f4 | ||
|
|
36537afe27 | ||
|
|
7f1602df48 | ||
|
|
c296880fff | ||
|
|
6654507706 | ||
|
|
b64c850a9a | ||
|
|
5bc0ccd7ed | ||
|
|
9f787925dc | ||
|
|
83daf1ed73 | ||
|
|
f80bc84639 | ||
|
|
5a168e3779 | ||
|
|
bf15ad6e8b | ||
|
|
5992912abe | ||
|
|
6ed42f4a9c | ||
|
|
fb87aac5db | ||
|
|
c33995d84b | ||
|
|
83e4bbc1d1 | ||
|
|
8d71798eeb | ||
|
|
7cdddbf5d0 | ||
|
|
2b69ac00d7 | ||
|
|
076f842993 | ||
|
|
b316de986f | ||
|
|
e51c6a925b | ||
|
|
3de401da03 | ||
|
|
ec9bf926a5 | ||
|
|
e5d7debabe | ||
|
|
16280cb10c | ||
|
|
655b056492 | ||
|
|
167599cf62 | ||
|
|
57e23c331b | ||
|
|
c2157600b2 | ||
|
|
9b3aecda15 | ||
|
|
08b0bcf050 | ||
|
|
f76c3944c4 | ||
|
|
09ea679bdb | ||
|
|
4ec6c893c1 | ||
|
|
e49a437967 | ||
|
|
2536d8a9de | ||
|
|
b9d1395b14 | ||
|
|
7b5b36ffa0 | ||
|
|
227faa2489 | ||
|
|
8f2c82bbac | ||
|
|
d060fd8b70 | ||
|
|
c65187284a | ||
|
|
6a22c5d919 | ||
|
|
da40f90cc1 | ||
|
|
4a85e9e33a | ||
|
|
adae336c01 | ||
|
|
e969555a46 | ||
|
|
a761e12bec | ||
|
|
0bd5391e34 | ||
|
|
4c45d7d457 | ||
|
|
dd3f6bc784 | ||
|
|
c380e29913 | ||
|
|
47f37420c8 | ||
|
|
d14507fdf8 | ||
|
|
9b9d174d8c | ||
|
|
909a8f4984 | ||
|
|
f16a6270cc | ||
|
|
9de9ba1391 | ||
|
|
49ea23507c | ||
|
|
9827c55863 | ||
|
|
1a2ae8b3eb | ||
|
|
4b9099b050 | ||
|
|
4a937c83f1 | ||
|
|
8a5c09b0ee | ||
|
|
ba7d32cb4f | ||
|
|
be8aba2e39 | ||
|
|
05f3ed8e4a | ||
|
|
afb1ffe027 | ||
|
|
46df72f8af | ||
|
|
410c9d6596 | ||
|
|
a9177255b6 | ||
|
|
0ca48f2f8a | ||
|
|
7416f617d2 | ||
|
|
84f524dd27 | ||
|
|
cd1ac8dc14 | ||
|
|
6a31f2de45 | ||
|
|
0ee195fd6b | ||
|
|
a3933aa1fd | ||
|
|
c036329ca7 | ||
|
|
0e27f79edf | ||
|
|
4a67abb23a | ||
|
|
fce5968566 | ||
|
|
8850cf2f6c | ||
|
|
f6a4a5daaa | ||
|
|
551aba5941 | ||
|
|
1bc20de00b | ||
|
|
b37a63ed7e | ||
|
|
314e16f823 | ||
|
|
02cabe3a61 | ||
|
|
34c6da3330 | ||
|
|
0dcfa6be77 | ||
|
|
f28fdbb13d | ||
|
|
9686d68182 | ||
|
|
33df3bbe6f | ||
|
|
38f7850c30 | ||
|
|
b6704f99fe | ||
|
|
f25837ca19 | ||
|
|
c6c30841f9 | ||
|
|
68a8a9b02f | ||
|
|
71bc24631b | ||
|
|
c31bdc26f9 | ||
|
|
a3ec7b5661 | ||
|
|
31107b6aed | ||
|
|
3cba7737bc | ||
|
|
c140141ac7 | ||
|
|
23f0d8ed1b | ||
|
|
bc7e7f1551 | ||
|
|
3a173b4f3c | ||
|
|
09c2587256 | ||
|
|
7ab6015847 | ||
|
|
4ad1038f10 | ||
|
|
4c7005f7c6 | ||
|
|
0abb5b9584 | ||
|
|
019db17698 | ||
|
|
2e34662735 | ||
|
|
196a99b70a | ||
|
|
6e87e5ca86 | ||
|
|
7aacf2578c | ||
|
|
2e51a38216 | ||
|
|
e7703ad3b7 | ||
|
|
f2403e5efa | ||
|
|
b446035547 | ||
|
|
28c4f7ea50 | ||
|
|
a9107f4edf | ||
|
|
a438c8134b | ||
|
|
b2a4a112f4 | ||
|
|
9d2a16a4f7 | ||
|
|
e00f3ce583 | ||
|
|
4a52fac56e | ||
|
|
0eecb60280 | ||
|
|
7860fe106d | ||
|
|
3dd4f7b831 | ||
|
|
fba18b1c6b | ||
|
|
a3b256b4d9 | ||
|
|
5b1cf8f58b | ||
|
|
eb6f163d5a | ||
|
|
a45e970c99 | ||
|
|
d799c3f609 | ||
|
|
f43a47fe1f | ||
|
|
a23688b4bb | ||
|
|
3388ceebc0 | ||
|
|
e3909eaca6 | ||
|
|
5d77aa75bc | ||
|
|
f2623e23f3 | ||
|
|
933563a43b | ||
|
|
53ebdd2ea5 | ||
|
|
5534adc647 | ||
|
|
90dc4ff6cf | ||
|
|
a99552f484 | ||
|
|
461872c726 | ||
|
|
3ec1066e92 | ||
|
|
9b200a70d3 | ||
|
|
4406875476 | ||
|
|
3d00560648 | ||
|
|
95e965b108 | ||
|
|
771ebbdc1a | ||
|
|
b48f216946 | ||
|
|
a04f13c89e | ||
|
|
b946f39e97 | ||
|
|
1fbd2a332b | ||
|
|
7c03d2955a | ||
|
|
ffa7603990 | ||
|
|
9f98aea211 | ||
|
|
736e4591f0 | ||
|
|
497296c8a1 | ||
|
|
b1a33cf477 | ||
|
|
da8bd3f010 | ||
|
|
c889363820 | ||
|
|
8cda7312cd | ||
|
|
7f9e98e988 | ||
|
|
7b6837bbf7 | ||
|
|
b701652c78 | ||
|
|
2b7fa564de | ||
|
|
45590912eb | ||
|
|
e71c720670 | ||
|
|
53b884b431 | ||
|
|
5bc8ea29f2 | ||
|
|
81af7c19e7 | ||
|
|
0da91562e8 | ||
|
|
45081453d3 | ||
|
|
f76a5a4514 | ||
|
|
96d4e0cea1 | ||
|
|
cbd41428c8 | ||
|
|
e5421c26c0 | ||
|
|
6675610f05 | ||
|
|
4d13fce118 | ||
|
|
2969469e08 | ||
|
|
96e5c7ec74 | ||
|
|
29dfbbd66e | ||
|
|
973cd566c9 | ||
|
|
f79c9925f0 | ||
|
|
18b23608ae | ||
|
|
37e57d1caa | ||
|
|
61baff0ad6 | ||
|
|
7d8566d595 | ||
|
|
da7e958808 | ||
|
|
0a5d4588e4 | ||
|
|
e972d383d1 | ||
|
|
9b2cac9d34 | ||
|
|
28508d1557 | ||
|
|
827701409b | ||
|
|
664c9f5f1d | ||
|
|
f1650b9bf0 | ||
|
|
d048a0e9ac | ||
|
|
e755290b00 | ||
|
|
ab403f5f3c | ||
|
|
94452846fe | ||
|
|
ec179ff1fe | ||
|
|
919d038be0 | ||
|
|
c5509ec012 | ||
|
|
0dde5e15ea | ||
|
|
83fa4d4659 | ||
|
|
791bb2c687 | ||
|
|
9bd72fd1ae | ||
|
|
8a593c8ae5 | ||
|
|
ffebf944f9 | ||
|
|
6f396ca5c6 | ||
|
|
489479ecdd | ||
|
|
56b9a3092a | ||
|
|
09702ed59f | ||
|
|
2aa37f94ce | ||
|
|
59b7e3078b | ||
|
|
144ac08ca9 | ||
|
|
b38be32c9c | ||
|
|
1f3c104435 | ||
|
|
5462ce7a78 | ||
|
|
4eed12a418 | ||
|
|
957a9d42c7 | ||
|
|
cad0b090b6 | ||
|
|
06e4d78e5d | ||
|
|
ffa08fda46 | ||
|
|
461a276266 | ||
|
|
7c5cf78350 | ||
|
|
4d2b8ba5f2 | ||
|
|
f80e2c5d3c | ||
|
|
5b0e78f656 | ||
|
|
0dbfe88608 | ||
|
|
78c526c4ab | ||
|
|
3d0e258f30 | ||
|
|
b9ab9596d3 | ||
|
|
f7db70d77c | ||
|
|
b66bee911c | ||
|
|
ab4d1840b4 | ||
|
|
7ec16e4dda | ||
|
|
3b221ca1ae | ||
|
|
1f3c88820f | ||
|
|
177127198d | ||
|
|
f4a7c91afe | ||
|
|
aa76b79148 | ||
|
|
aa5c833c79 | ||
|
|
2eb043173c | ||
|
|
1429f978f0 | ||
|
|
7b494f0fce | ||
|
|
65d8359590 | ||
|
|
3a77c5dfe2 | ||
|
|
36a1a36cea | ||
|
|
3b9c777d77 | ||
|
|
8fe9a0432d | ||
|
|
46541d4f8b | ||
|
|
47f5588c45 | ||
|
|
c017ee74d2 | ||
|
|
0003bb1d82 | ||
|
|
03e4777832 | ||
|
|
0985d0a840 | ||
|
|
6d863601de | ||
|
|
751a9f342b | ||
|
|
942060d2de | ||
|
|
17d57f35ad | ||
|
|
da9379db93 | ||
|
|
52160cab54 | ||
|
|
33248f605f | ||
|
|
aa51218465 | ||
|
|
eabe0581b2 | ||
|
|
95dd5922ff | ||
|
|
6a0885e535 | ||
|
|
0db6b50e5b | ||
|
|
8920457dbd | ||
|
|
896ed317dc | ||
|
|
fe49648190 | ||
|
|
d07e89d9fb | ||
|
|
2d2eac5cbc | ||
|
|
998b6e6197 | ||
|
|
7cf0150765 | ||
|
|
3ef85d9645 | ||
|
|
704d2ebf1c | ||
|
|
b790f34278 | ||
|
|
94a00a7fd5 | ||
|
|
5179ddcee9 | ||
|
|
e34569f1fc | ||
|
|
a6f9ac0214 | ||
|
|
9a0b99bbd5 | ||
|
|
ef05dbc888 | ||
|
|
2521f8bd1c | ||
|
|
e1a00cc934 | ||
|
|
1f646ccd14 | ||
|
|
d52692d691 | ||
|
|
fc29210cb2 | ||
|
|
5182ca7491 | ||
|
|
d08dbebc11 | ||
|
|
7b56d073e2 | ||
|
|
168d9309cb | ||
|
|
7ba8ca8f84 | ||
|
|
96f3dc488f | ||
|
|
17897ac69a | ||
|
|
10253ab34e | ||
|
|
8231e6bfde | ||
|
|
48f7524e35 | ||
|
|
978bea9caf | ||
|
|
cd5706eeb5 | ||
|
|
93dffec059 | ||
|
|
949b2ec3fe | ||
|
|
25715dd290 | ||
|
|
4477b452db | ||
|
|
06ff9915b3 | ||
|
|
4fc7450338 | ||
|
|
eba670b844 | ||
|
|
f595801a31 | ||
|
|
1fe85e41a0 | ||
|
|
24f4fa8f49 | ||
|
|
289942b159 | ||
|
|
3b00f8f7b5 | ||
|
|
8348ade285 | ||
|
|
0f4a14d69e | ||
|
|
c1976beb4a | ||
|
|
aebdfbf062 | ||
|
|
ce90112969 | ||
|
|
aaaff650c0 | ||
|
|
6f2cde7523 | ||
|
|
a3883ec8ae | ||
|
|
255bfc79f0 | ||
|
|
9dcfdbb71b | ||
|
|
fbcb44df20 | ||
|
|
f056630e29 | ||
|
|
59bb7d04c7 | ||
|
|
e869a9a70e | ||
|
|
b99f5b7b07 | ||
|
|
c1c6837c0a | ||
|
|
09a5f153b6 | ||
|
|
45bf2e5fd6 | ||
|
|
16ea47f58f | ||
|
|
b17c8061c8 | ||
|
|
8fad7af1b3 | ||
|
|
a92e5f5afd | ||
|
|
be2ff2b651 | ||
|
|
122fe66d60 | ||
|
|
e26f1fefa5 | ||
|
|
b133528e36 | ||
|
|
0625548f5d | ||
|
|
0bb39ae49f | ||
|
|
0bc9f24d09 | ||
|
|
648cab35bf | ||
|
|
76f15d42d2 | ||
|
|
415e4f4fc0 | ||
|
|
ffa30aaf89 | ||
|
|
660f14ed6b | ||
|
|
a4f18db6c2 | ||
|
|
5ff5a93ece | ||
|
|
f78be9df5b | ||
|
|
92b311ef2b | ||
|
|
a73ada0cd3 | ||
|
|
9f90e93d2f | ||
|
|
55dbe3c885 | ||
|
|
bbe24cc75f | ||
|
|
9437791df4 | ||
|
|
d328141419 | ||
|
|
1631962f83 | ||
|
|
d5c2a2653b | ||
|
|
36e9a69163 | ||
|
|
d4f3db618d | ||
|
|
ca2673fd74 | ||
|
|
623af0c156 | ||
|
|
47055cc9c3 | ||
|
|
deaaf0c4eb | ||
|
|
572d83a828 | ||
|
|
dd8f9e9dd9 | ||
|
|
33658f1dd9 | ||
|
|
485ecc57a8 | ||
|
|
a38af349e0 | ||
|
|
37d0141687 | ||
|
|
323d3de4b1 | ||
|
|
0fa4f2047d | ||
|
|
2900fdeeba | ||
|
|
33f0e22ac3 | ||
|
|
42769cb631 | ||
|
|
7dcac4655c | ||
|
|
83bca7cdbf | ||
|
|
b2da37a067 | ||
|
|
582843dc70 | ||
|
|
97e4a0ead4 | ||
|
|
f052e8533b | ||
|
|
f79c83ee29 | ||
|
|
6167c6f773 | ||
|
|
d6636aee17 | ||
|
|
9e5f9b9556 | ||
|
|
1eb713230b | ||
|
|
8ca1d1a910 | ||
|
|
fb1ace1d07 | ||
|
|
cd91c1e7d9 | ||
|
|
1747103a66 | ||
|
|
54938ab56a | ||
|
|
8afee33689 | ||
|
|
689d5d39ab | ||
|
|
81fdeb8453 | ||
|
|
69e3bca4ad | ||
|
|
d0c86f1f58 | ||
|
|
7671d78b2d | ||
|
|
ece8529927 | ||
|
|
3f9650d873 | ||
|
|
c3795a851e | ||
|
|
1721732288 | ||
|
|
1a5eb79043 | ||
|
|
23fad6a07c | ||
|
|
fcadaae178 | ||
|
|
f534bb9396 | ||
|
|
0a66bab25e | ||
|
|
cc5b2fac66 | ||
|
|
fb0737167a | ||
|
|
ab1ebf581b | ||
|
|
1265011c1d | ||
|
|
f734e4983c | ||
|
|
f6d197b8ea | ||
|
|
f3b14c28ab | ||
|
|
deba11aa4f | ||
|
|
5352d2fbb2 | ||
|
|
b194261635 | ||
|
|
3bac48cebb | ||
|
|
5fe09e3e02 | ||
|
|
62bba24350 | ||
|
|
6d249d0b61 | ||
|
|
bf0a2b728d | ||
|
|
0a8ef439ab | ||
|
|
919a7e2bd2 | ||
|
|
23c27f1347 | ||
|
|
001fdb1327 | ||
|
|
23db4c67a1 | ||
|
|
2cb1b40093 | ||
|
|
8d734bb3fe | ||
|
|
f768825085 | ||
|
|
a58479f825 | ||
|
|
defd4d10d6 | ||
|
|
ce6be3f778 | ||
|
|
20ec80d46c | ||
|
|
17c68d7e2b | ||
|
|
8c00436e80 | ||
|
|
b46e215be2 | ||
|
|
dc41325a8a | ||
|
|
513e23403a | ||
|
|
e6eb36ff51 | ||
|
|
b1cef30022 | ||
|
|
807ae5317c | ||
|
|
17cbd9d289 | ||
|
|
fe627204c1 | ||
|
|
b52e420662 | ||
|
|
fb7ded71ce | ||
|
|
7fffc5ca9d | ||
|
|
4764516894 | ||
|
|
5077ee1179 | ||
|
|
00873011cd | ||
|
|
67d19535ee | ||
|
|
3b117a3d0d | ||
|
|
44295deab6 | ||
|
|
6f14a0b6d5 | ||
|
|
63f55e076d | ||
|
|
3c36351762 | ||
|
|
7f8e7d98ca | ||
|
|
3111110909 | ||
|
|
5912dae9f0 | ||
|
|
82c28cb9e1 | ||
|
|
bde561a950 | ||
|
|
9ccc2ce97c | ||
|
|
f9580111da | ||
|
|
975dbb41ab | ||
|
|
88295a53d7 | ||
|
|
30bb3e211d | ||
|
|
8604ce0870 | ||
|
|
7afde6e4a9 | ||
|
|
4865768a59 | ||
|
|
608329dfb9 | ||
|
|
8e4d2092ee | ||
|
|
2fb45fe1d2 | ||
|
|
8616a5b03f | ||
|
|
d69df4ba65 | ||
|
|
e263d520b7 | ||
|
|
1fb31f0f63 | ||
|
|
dc4cb7dfd3 | ||
|
|
15820cf1aa | ||
|
|
49044ff0f4 | ||
|
|
127adbf7a5 | ||
|
|
b166a21f5e | ||
|
|
1d84b28715 | ||
|
|
8760d75c04 | ||
|
|
58d5c5a913 | ||
|
|
5d7d72d958 | ||
|
|
86b356e4bf | ||
|
|
9b05f29c6f | ||
|
|
a9da1c3add | ||
|
|
41acf3c968 | ||
|
|
fbbd475ad6 | ||
|
|
30fe8156fd | ||
|
|
347577af4f | ||
|
|
80e4849bc0 | ||
|
|
972117d298 | ||
|
|
8df3e822de | ||
|
|
2f3c7bab3b | ||
|
|
da1bd47284 | ||
|
|
04206891cc | ||
|
|
db7f701d01 | ||
|
|
6734ee23c9 | ||
|
|
d8144b48ff | ||
|
|
9e6e1ee6e2 | ||
|
|
bc1e5374b0 | ||
|
|
f87aea5211 | ||
|
|
ed4ee38b4c | ||
|
|
3bf77b3716 | ||
|
|
ee92e7fadc | ||
|
|
66af9472f9 | ||
|
|
d986adf0f8 | ||
|
|
fac5c85cf2 | ||
|
|
bf7f1d6d6a | ||
|
|
73c6cec61c | ||
|
|
95344623ce | ||
|
|
b82de6cd1f | ||
|
|
cb68c028bf | ||
|
|
85d98d49cd | ||
|
|
3b46b8ff67 | ||
|
|
6f983669da | ||
|
|
83ee064db6 | ||
|
|
87a30dcd97 | ||
|
|
15ece0d43e | ||
|
|
880cfd5069 | ||
|
|
85d84b11d0 | ||
|
|
6025abd8e9 | ||
|
|
e1ca972a8e | ||
|
|
116c6f05d2 | ||
|
|
f50824fb41 | ||
|
|
ff5746bba5 | ||
|
|
e575f492d5 | ||
|
|
fcb53fd7f9 | ||
|
|
0e67783602 | ||
|
|
16480d62dd | ||
|
|
6d13f8a872 | ||
|
|
be4de11ed2 | ||
|
|
f742c22359 | ||
|
|
48499a0e2b | ||
|
|
81c213f8d8 | ||
|
|
4e29b11b7c | ||
|
|
6680e41956 | ||
|
|
060af354eb | ||
|
|
46a66f9771 | ||
|
|
cbf7ed1c1a | ||
|
|
014191f047 | ||
|
|
268aaee702 | ||
|
|
621f5036e5 | ||
|
|
5657a688cb | ||
|
|
747b45f9a0 | ||
|
|
3e35981e18 | ||
|
|
7bdb0e5402 | ||
|
|
a0fb7210c7 | ||
|
|
76c3acd122 | ||
|
|
51ec4a9466 | ||
|
|
d82708ddac | ||
|
|
77fbe94767 | ||
|
|
03181426b5 | ||
|
|
eabfe79a1a | ||
|
|
6ec0de14ad | ||
|
|
5730130b8e | ||
|
|
70ba072c6f | ||
|
|
e43e7d14a2 | ||
|
|
c30234e953 | ||
|
|
96fac87d4e | ||
|
|
ee3f09be15 | ||
|
|
2305e71eb3 | ||
|
|
1c5e9196d6 | ||
|
|
4385aac2dd | ||
|
|
4e60342c7c | ||
|
|
b5dde45892 | ||
|
|
9e28e6a8b5 | ||
|
|
176163f24a | ||
|
|
1c394b0a89 | ||
|
|
f982637c2b | ||
|
|
0e0311e271 | ||
|
|
fe2c8ed41f | ||
|
|
0d9c51f753 | ||
|
|
d84fe69cbf | ||
|
|
0e7e9c9ff4 | ||
|
|
c8ad51b6a0 | ||
|
|
2e247d8182 | ||
|
|
2b2a9afd2f | ||
|
|
535f62a1e1 | ||
|
|
71dc6eb570 | ||
|
|
85d590ac81 | ||
|
|
edbc99405d | ||
|
|
8ba2167261 | ||
|
|
eb32faf725 | ||
|
|
ce09537c21 | ||
|
|
ac2c7146b7 | ||
|
|
b2e729dcf2 | ||
|
|
5546858298 | ||
|
|
d5ddddefd5 | ||
|
|
39e31960c1 | ||
|
|
92c7eaaea6 | ||
|
|
b41803b0f6 | ||
|
|
66588cc513 | ||
|
|
0e2378068b | ||
|
|
266f9e1063 | ||
|
|
8448a2f504 | ||
|
|
ee2f31d4e9 | ||
|
|
f5990a29a4 | ||
|
|
ced14d93dd | ||
|
|
b3443bec1c | ||
|
|
44b67c820d | ||
|
|
fca19e3c5f | ||
|
|
82d6d1808e | ||
|
|
61f1e00d32 | ||
|
|
ee331f8643 | ||
|
|
b56318dcbf | ||
|
|
a81d340c11 | ||
|
|
812a0618e9 | ||
|
|
676f025076 | ||
|
|
449b8edce5 | ||
|
|
5f84ec7824 | ||
|
|
fc90260e05 | ||
|
|
006af7d74d | ||
|
|
700f27d89f | ||
|
|
d9ab12eb5c | ||
|
|
a423291096 | ||
|
|
05033b14d2 | ||
|
|
a051c70ad1 | ||
|
|
94163c7537 | ||
|
|
3cd71946f2 | ||
|
|
245c43ddb5 | ||
|
|
f5d1ff8928 | ||
|
|
8f224fee80 | ||
|
|
3406ff62b4 | ||
|
|
2cecd0643b | ||
|
|
81b1056bfa | ||
|
|
a1055b60a3 | ||
|
|
4642a6e4a5 | ||
|
|
f77fc97ed2 | ||
|
|
d3a624fc33 | ||
|
|
dcbab015ab | ||
|
|
96900f5e33 | ||
|
|
fc4fc69878 | ||
|
|
a21846b195 | ||
|
|
788697e8d3 | ||
|
|
fe180d7075 | ||
|
|
8fa504becd | ||
|
|
55b74bfd72 | ||
|
|
d5ac3009a5 | ||
|
|
98305d23e9 | ||
|
|
86cc3fe196 | ||
|
|
1b0c8ccc98 | ||
|
|
37e3355237 | ||
|
|
872a7bf19e | ||
|
|
eaaa7d0258 | ||
|
|
426df6e524 | ||
|
|
525e1df6a9 | ||
|
|
b004a901d7 | ||
|
|
2a4f9f6a10 | ||
|
|
8170e5188c | ||
|
|
8e24025518 | ||
|
|
5176bd53db | ||
|
|
dfb361531d | ||
|
|
e485944001 | ||
|
|
03e9d0a632 | ||
|
|
867f245cc2 | ||
|
|
e8dad06afc | ||
|
|
f035560027 | ||
|
|
1fbb5febbf | ||
|
|
1c4a197b7c | ||
|
|
419a9555cf | ||
|
|
4cd8ac2ea8 | ||
|
|
53c6a1784d | ||
|
|
5b9e7deeb2 | ||
|
|
1818add6ac | ||
|
|
2551d5559a | ||
|
|
ae730b412e | ||
|
|
1b066c81c5 | ||
|
|
68886ebf82 | ||
|
|
dcbe8b9abf | ||
|
|
dd7dc99163 | ||
|
|
7d83237154 | ||
|
|
3bb60ce71b | ||
|
|
1c7932a4e6 | ||
|
|
f734a88530 | ||
|
|
571a0cd2d8 | ||
|
|
6c6e98743f | ||
|
|
eba17b6b88 | ||
|
|
3dd2ec4a2e | ||
|
|
b8eeb44fca | ||
|
|
ad82d7fe49 | ||
|
|
8712b69e0a | ||
|
|
105b75dc7b | ||
|
|
78e4a3471f | ||
|
|
930306ab32 | ||
|
|
3647421bf1 | ||
|
|
d42d8f4da4 | ||
|
|
7f75b4f415 | ||
|
|
561c292ec0 | ||
|
|
0e3085cead | ||
|
|
9a1b836f6d | ||
|
|
cbb39328f5 | ||
|
|
a3a623aa35 | ||
|
|
eb7a47917f | ||
|
|
15510460e1 | ||
|
|
93d22dce39 | ||
|
|
bf8247d332 | ||
|
|
7887e4ddd3 | ||
|
|
7f961d03dc | ||
|
|
c5ba922679 | ||
|
|
a040769c9a | ||
|
|
bf64ee1c09 | ||
|
|
475997d6f9 | ||
|
|
6b6f749e51 | ||
|
|
e5d29fed34 | ||
|
|
39cd7742ef | ||
|
|
10896c10ac | ||
|
|
fbd0d4fd8d | ||
|
|
17bad08d5e | ||
|
|
6bd812b9f4 | ||
|
|
ea54d1b618 | ||
|
|
336f83d02a | ||
|
|
7b38c69206 | ||
|
|
091adf9f70 | ||
|
|
506e4929fa | ||
|
|
57d22b4604 | ||
|
|
ae3b61ff2b | ||
|
|
91fe322c00 | ||
|
|
80fddb7fd4 | ||
|
|
eb3618e9f7 | ||
|
|
44f7e38a09 | ||
|
|
18fefa3682 | ||
|
|
d8751d1e62 | ||
|
|
485c91a1cc | ||
|
|
2b0396063a | ||
|
|
45637ba48a | ||
|
|
14212325f4 | ||
|
|
6de949d074 | ||
|
|
dbd9fbc07b | ||
|
|
256e424b3e | ||
|
|
151d2db735 | ||
|
|
0f0b40e6aa | ||
|
|
257b986318 | ||
|
|
69d4caeed6 | ||
|
|
cc8677bbc8 | ||
|
|
e6a687e785 | ||
|
|
13b71977ef | ||
|
|
0aa0966789 | ||
|
|
4fe67c39c5 | ||
|
|
5e39fa64e6 | ||
|
|
eeedadb499 | ||
|
|
0bc858bffa | ||
|
|
d7f46b4fdb | ||
|
|
557a1d6e6d | ||
|
|
163c8a1e8c | ||
|
|
475f2d4a3d | ||
|
|
22fcdc5f5a | ||
|
|
5a4b509206 | ||
|
|
6b36561cef | ||
|
|
14961a5a30 | ||
|
|
c0769586b7 | ||
|
|
0bb3b0529f | ||
|
|
499299b09c | ||
|
|
926d688237 | ||
|
|
cc96241171 | ||
|
|
8c33d8d493 | ||
|
|
1f3c2a92e4 | ||
|
|
d42d185917 | ||
|
|
8d4efb0683 | ||
|
|
fe0575faa6 | ||
|
|
bc8095a624 | ||
|
|
84596b7107 | ||
|
|
2f5fe5055f | ||
|
|
b412709734 | ||
|
|
ae042687a3 | ||
|
|
ef3ddebe99 | ||
|
|
15fe7a8500 | ||
|
|
6c09689499 | ||
|
|
06c829fc0b | ||
|
|
a1ed5c5d54 | ||
|
|
124aa45f02 | ||
|
|
af9da4d8ab | ||
|
|
9926d69bcb | ||
|
|
6d901034ad | ||
|
|
fe90df7ce5 | ||
|
|
c770dd389c | ||
|
|
d9ff915ec2 | ||
|
|
37e5339fd3 | ||
|
|
3c475f1e1f | ||
|
|
8a895958e8 | ||
|
|
384afc98fa | ||
|
|
5fefdd595b | ||
|
|
187ca5ee25 | ||
|
|
742289f6cd | ||
|
|
3a910469d9 | ||
|
|
f207c81655 | ||
|
|
3176e6197f | ||
|
|
6ae84db42d | ||
|
|
56872c05a2 | ||
|
|
226651280e | ||
|
|
0fb50b5559 | ||
|
|
0d59e882e4 | ||
|
|
e4a74c8d26 | ||
|
|
7aac4451c7 | ||
|
|
b98a475d80 | ||
|
|
4a04ff4cc0 | ||
|
|
0c741a9016 | ||
|
|
b17af46313 | ||
|
|
12ca6e7498 | ||
|
|
c65851ff39 | ||
|
|
1e989c23f0 | ||
|
|
dc3682df3e | ||
|
|
4ac2d8adfc | ||
|
|
bb27d3bf5d | ||
|
|
22ea16bdb0 | ||
|
|
0d769dbf75 | ||
|
|
3fb65b68fa | ||
|
|
5ee1d567bf | ||
|
|
46f12b3fb3 | ||
|
|
79512bd009 | ||
|
|
4d672a63e8 | ||
|
|
3cb5e94d0f | ||
|
|
04b0ffccc1 | ||
|
|
99af5bc728 | ||
|
|
1a2d0c88f6 | ||
|
|
ea947db1e8 | ||
|
|
3fbcd188cd | ||
|
|
e4e1fb7912 | ||
|
|
f3f1fd11bf | ||
|
|
0b4f178fcd | ||
|
|
659adc8731 | ||
|
|
56770f3b31 | ||
|
|
9b94049314 | ||
|
|
58d1830fda | ||
|
|
3dc9c26b72 | ||
|
|
789cdd480b | ||
|
|
e2e1a24dca | ||
|
|
76b908dcd2 | ||
|
|
da886099a7 | ||
|
|
d1684a3511 | ||
|
|
5929762e9c | ||
|
|
fde1aff5ba | ||
|
|
230be9198f | ||
|
|
0ff0aa11ae | ||
|
|
557742c385 | ||
|
|
0ce69b3009 | ||
|
|
d199d58487 | ||
|
|
472c6936fc | ||
|
|
3f775412fd | ||
|
|
f119831044 | ||
|
|
035fd71e45 | ||
|
|
852986a231 | ||
|
|
474e63f939 | ||
|
|
4e2ec883b1 | ||
|
|
03220c9754 | ||
|
|
fbb48feb0d | ||
|
|
2346af5e4b | ||
|
|
a3ecd317d4 | ||
|
|
23f87feb57 | ||
|
|
ee4890b01f | ||
|
|
9f11255e80 | ||
|
|
6244a12b64 | ||
|
|
7a3e20f926 | ||
|
|
07a167248a | ||
|
|
6c1bf58baf | ||
|
|
573159519b | ||
|
|
350749623b | ||
|
|
f4c24f77ad | ||
|
|
7bbac16e9e | ||
|
|
2de87d1b49 | ||
|
|
332bf6116f | ||
|
|
a6a0581116 | ||
|
|
b68953e384 | ||
|
|
44107c5d30 | ||
|
|
ce3b932116 | ||
|
|
dd07ee6a45 | ||
|
|
91bfa85bac | ||
|
|
618626e97a | ||
|
|
783ecc762a | ||
|
|
2d62405e7e | ||
|
|
8d1f9fe7d4 | ||
|
|
f34bda3f45 | ||
|
|
93b22c2ec7 | ||
|
|
d636119e23 | ||
|
|
2d9c6769f6 | ||
|
|
595745ce30 | ||
|
|
c506c56efc | ||
|
|
f00f426aba | ||
|
|
f223d1ec96 | ||
|
|
9c968daaa0 | ||
|
|
1a1dcd43aa | ||
|
|
d29de219c5 | ||
|
|
cc4a4ab8d2 | ||
|
|
5a8ba17b57 | ||
|
|
dd51a8237b | ||
|
|
bb1886ad63 | ||
|
|
0688fcca37 | ||
|
|
db523f4f68 | ||
|
|
c39447e510 | ||
|
|
60a128265c | ||
|
|
a131772df8 | ||
|
|
07f8b1e9c4 | ||
|
|
7ddc15972e | ||
|
|
64c3580302 | ||
|
|
8d6146fa7a | ||
|
|
a82143e6b6 | ||
|
|
6c9f3e41f8 | ||
|
|
76f6f7b1d4 | ||
|
|
f57a194d91 | ||
|
|
3a1c749f8f | ||
|
|
058dcb0f0e | ||
|
|
0595bd9556 | ||
|
|
0f725276d6 | ||
|
|
8a28d55936 | ||
|
|
3744bb9eb0 | ||
|
|
90b55b3d54 | ||
|
|
9cb0c180d8 | ||
|
|
b74adefc32 | ||
|
|
06660dbf5a | ||
|
|
33e0f047c5 | ||
|
|
c5d18e41be | ||
|
|
86582905c0 | ||
|
|
3164693197 | ||
|
|
cec874e932 | ||
|
|
449daffbef | ||
|
|
7889e26cfa | ||
|
|
86b55ee887 | ||
|
|
01cf058e00 | ||
|
|
a6bea0aa6f | ||
|
|
4eb984f3d8 | ||
|
|
d573aa8b0b | ||
|
|
b9bb32f4bd | ||
|
|
55bf6740eb | ||
|
|
b3751de936 | ||
|
|
250d7f5898 | ||
|
|
b6d94b46e0 | ||
|
|
af20b81b0e | ||
|
|
ae62c8600c | ||
|
|
1b1738ed3f | ||
|
|
630177eb55 | ||
|
|
ddca77629e | ||
|
|
6d98ffc320 | ||
|
|
cfc13830c9 | ||
|
|
bc4c165d6e | ||
|
|
091a8aeaa9 | ||
|
|
f5c7e7038b | ||
|
|
cef63582d0 | ||
|
|
bc479c6053 | ||
|
|
16e6e0aa08 | ||
|
|
5aac3aa44d | ||
|
|
36589ca987 | ||
|
|
4d09350319 | ||
|
|
3b0954fe0c | ||
|
|
a5155d6bad | ||
|
|
230c469c01 | ||
|
|
87242ccaf3 | ||
|
|
3fa422fb86 | ||
|
|
48aa4d5ac3 | ||
|
|
175fcf7624 | ||
|
|
39be364de4 | ||
|
|
02d0c5f2ad | ||
|
|
64a793bdfd | ||
|
|
ffb0c71a8e | ||
|
|
4438c2cc70 | ||
|
|
affb15ba13 | ||
|
|
ce959b8fc5 | ||
|
|
57b8e4e71e | ||
|
|
2616a95007 | ||
|
|
2a837f5ce1 | ||
|
|
e24a1d91bc | ||
|
|
ab84c00798 | ||
|
|
82c6f9b20c | ||
|
|
a050975da4 | ||
|
|
39fae5ee50 | ||
|
|
79ca28c0f4 | ||
|
|
da943b2975 | ||
|
|
9787e03878 | ||
|
|
cd364e46ce | ||
|
|
5741eb92c5 | ||
|
|
26d23ad06b | ||
|
|
b7c79aff95 | ||
|
|
cdabd17e88 | ||
|
|
34a570ac73 | ||
|
|
4b25ab2587 | ||
|
|
287106e66a | ||
|
|
0dfc2baafb | ||
|
|
95ad819b31 | ||
|
|
778ea05932 | ||
|
|
ed511a229f | ||
|
|
515ae0f0ae | ||
|
|
8525e3abd7 | ||
|
|
92cf19395c | ||
|
|
1286906b28 | ||
|
|
da1e6ecb61 | ||
|
|
e0a6ac107a | ||
|
|
210fc09b2b | ||
|
|
0a5498581c | ||
|
|
84878056f9 | ||
|
|
e4953136b4 | ||
|
|
1bb578c8e7 | ||
|
|
ab9a4f5ef9 | ||
|
|
8e730e96dc | ||
|
|
314bb4ff20 | ||
|
|
4c3a023bf7 | ||
|
|
ff28327335 | ||
|
|
7b0f504426 | ||
|
|
8a8f399b7b | ||
|
|
f81c65edc1 | ||
|
|
e682d95e3f | ||
|
|
8a8f1dffba | ||
|
|
81acdcea05 | ||
|
|
90d0760335 | ||
|
|
8fa3f0b9f7 | ||
|
|
5cdd2561d2 | ||
|
|
9cb7a97857 | ||
|
|
bf215c6499 | ||
|
|
8d72b9d70c | ||
|
|
dfd68d123a | ||
|
|
f8b93f774c | ||
|
|
77590a299f | ||
|
|
cb21c76c99 | ||
|
|
b698a14908 | ||
|
|
2c2d129790 | ||
|
|
b135de42f0 | ||
|
|
fb4fd4d471 | ||
|
|
8c824eee1b | ||
|
|
f74fa00d89 | ||
|
|
7c37ecd4a2 | ||
|
|
b9e6aeef00 | ||
|
|
22b85f7d92 | ||
|
|
5ac03c3df5 | ||
|
|
c166ef396f | ||
|
|
08732be364 | ||
|
|
46b1c5fa95 | ||
|
|
4f5139aecf | ||
|
|
3c8ae91400 | ||
|
|
4503a7d7bb | ||
|
|
42ba9a8598 | ||
|
|
31fffb21f2 | ||
|
|
0dbe87a1cc | ||
|
|
4f4237bb7e | ||
|
|
f64b010c28 | ||
|
|
bed960fd04 | ||
|
|
d4f2c57455 | ||
|
|
2495e9e935 | ||
|
|
13c62fa880 | ||
|
|
e34a149a81 | ||
|
|
901117fab7 | ||
|
|
6dc43cc200 | ||
|
|
941ddd23eb | ||
|
|
8c1639ab31 | ||
|
|
071da3a969 | ||
|
|
bd6f243190 | ||
|
|
bbd8c183ef | ||
|
|
402b9f5845 | ||
|
|
e8cc2b8e6e | ||
|
|
cd1f1d6919 | ||
|
|
8ca42bd67c | ||
|
|
f31db4fec8 | ||
|
|
6a459dd3b4 | ||
|
|
c3f0a450c2 | ||
|
|
3ec3f8ca2e | ||
|
|
4245225599 | ||
|
|
cbe9e9f619 | ||
|
|
fb02f54a6a | ||
|
|
d7180a79f3 | ||
|
|
221142554f | ||
|
|
c72fbc50d9 | ||
|
|
d9ce24a7a2 | ||
|
|
8c526c2b76 | ||
|
|
c188fe13e1 | ||
|
|
a8f019afb2 | ||
|
|
57ce284b68 | ||
|
|
25dd27db2f | ||
|
|
db64db6f50 | ||
|
|
d0378e3006 | ||
|
|
dc0427f8f0 | ||
|
|
13a754f3f9 | ||
|
|
939ec6af1b | ||
|
|
c6a4352d2a | ||
|
|
1fc85bb959 | ||
|
|
fdf08899ab | ||
|
|
264a19c165 | ||
|
|
202b30a2c1 | ||
|
|
07158bf041 | ||
|
|
41c5adde54 | ||
|
|
3f226c4203 | ||
|
|
2ca6548e3f | ||
|
|
ba7b2b3a2c | ||
|
|
5b2fc71997 | ||
|
|
390a5d4724 | ||
|
|
3daa03d2a5 | ||
|
|
285504c976 | ||
|
|
6534872d28 | ||
|
|
daad4f0ca3 | ||
|
|
394c03faa9 | ||
|
|
3f603e664f | ||
|
|
c35a348347 | ||
|
|
a2daf9a3a3 | ||
|
|
4a2d99d3a2 | ||
|
|
bd597ab23e | ||
|
|
1f201eaca6 | ||
|
|
8add692a43 | ||
|
|
5b45bde211 | ||
|
|
ff2bdfcdf6 | ||
|
|
63315f7eb9 | ||
|
|
d71c37cdf2 | ||
|
|
f1963c6b6c | ||
|
|
7da3244285 | ||
|
|
729d14ae2d | ||
|
|
8ab78eb8c2 | ||
|
|
e4d104e060 | ||
|
|
1889130274 | ||
|
|
68a43489c8 | ||
|
|
90844598d6 | ||
|
|
13ca3b306b | ||
|
|
a8d0972d41 | ||
|
|
17b8c3ac69 | ||
|
|
1e732b9467 | ||
|
|
00c6b78950 | ||
|
|
397f1e6ad3 | ||
|
|
e791130124 | ||
|
|
49e09f21f8 | ||
|
|
22b3619da6 | ||
|
|
7453c6a978 | ||
|
|
a04ef0929a | ||
|
|
c37897b45a | ||
|
|
9aacbb4d73 | ||
|
|
f9d854bc94 | ||
|
|
9a8945d374 | ||
|
|
0d166590dd | ||
|
|
d3c504fe4e | ||
|
|
78146515d9 | ||
|
|
7836ed1211 | ||
|
|
1eac4b3608 | ||
|
|
19734f0e3f | ||
|
|
d28f86f783 | ||
|
|
8cbfc0b9d4 | ||
|
|
b206469822 | ||
|
|
1b404b2556 | ||
|
|
4e6637dfda | ||
|
|
a8a2631381 | ||
|
|
8aee2dca59 | ||
|
|
2c9cebfdb2 | ||
|
|
02f8e6366d | ||
|
|
b36cbfb320 | ||
|
|
eea6801c55 | ||
|
|
768bdf21b2 | ||
|
|
8b7429f38c | ||
|
|
d083708258 | ||
|
|
cebf871783 | ||
|
|
98987576ce | ||
|
|
6338b038e0 | ||
|
|
a86b83be7a | ||
|
|
3a25204bd9 | ||
|
|
587dcd0a2e | ||
|
|
ef97f0d7ad | ||
|
|
2ff71010e5 | ||
|
|
eb142de87e | ||
|
|
5366c9e21b | ||
|
|
78b7da1ca5 | ||
|
|
14133e6df4 | ||
|
|
d0651aef25 | ||
|
|
e2ffc6aaf0 | ||
|
|
aee3e84216 | ||
|
|
353be9755d | ||
|
|
d7c8d5879c | ||
|
|
e9b96b8843 | ||
|
|
11b0a36a35 | ||
|
|
56812e0aa5 | ||
|
|
6667c59282 | ||
|
|
b4c6906520 | ||
|
|
76c09322da | ||
|
|
b041144193 | ||
|
|
7cf9b846bd | ||
|
|
22f04d0556 | ||
|
|
a6e1bfec09 | ||
|
|
9be7b90b69 | ||
|
|
91a6791c4e | ||
|
|
a527ac7964 | ||
|
|
cc2b15d47e | ||
|
|
4bc95b13e7 | ||
|
|
543c7a8868 | ||
|
|
f7e0f56109 | ||
|
|
b6a9d9c28d | ||
|
|
14fa909cd2 | ||
|
|
46ebdd2fce | ||
|
|
b006d8c28c | ||
|
|
2cbf1c7a14 | ||
|
|
8dfa1dac95 | ||
|
|
b6ce52c620 | ||
|
|
54ee7fd1a4 | ||
|
|
c972415613 | ||
|
|
5ebf8e137b | ||
|
|
62f03fc5b1 | ||
|
|
791054bf8e | ||
|
|
9aa46765bc | ||
|
|
fc980bf20e | ||
|
|
91b6e4e194 | ||
|
|
50dcfc3fae | ||
|
|
1392e00d7b | ||
|
|
71bfd161b3 | ||
|
|
fb4a561149 | ||
|
|
7508c06034 | ||
|
|
f79e1f0b2e | ||
|
|
73cf21ca46 | ||
|
|
3e0003abcf | ||
|
|
22aae7955b | ||
|
|
fe4d4c64a4 | ||
|
|
0265989a2d | ||
|
|
024f536037 | ||
|
|
aeba29f371 | ||
|
|
2f965c06bf | ||
|
|
f4bda82934 | ||
|
|
9c32392394 | ||
|
|
06bd8c0ab1 | ||
|
|
1f482e0834 | ||
|
|
982d7a5b93 | ||
|
|
ce440b917a | ||
|
|
254c92be1d | ||
|
|
5fc3ebfe9a | ||
|
|
dde2ff4e06 | ||
|
|
177b5105c3 | ||
|
|
5ab03d30ad | ||
|
|
53719264fb | ||
|
|
1b35155b52 | ||
|
|
693b741b23 | ||
|
|
a4a6d9a7f0 | ||
|
|
be3e3cad2e | ||
|
|
88a9e83d37 | ||
|
|
759621255a | ||
|
|
949ffdfb51 | ||
|
|
7d5f648f10 | ||
|
|
a55b5b9c4e | ||
|
|
344c9e5768 | ||
|
|
bb2c58a6fa | ||
|
|
9e844f0ebd | ||
|
|
a5caaea666 | ||
|
|
76d0db0fb1 | ||
|
|
4ba2fd43d4 | ||
|
|
0a1962c637 | ||
|
|
71c0a33143 | ||
|
|
0665e83aa4 | ||
|
|
c67fb2c877 | ||
|
|
fe7a2987a6 | ||
|
|
f1558cd1c5 | ||
|
|
d5e3e8aef4 | ||
|
|
7c5377eb61 | ||
|
|
3fcb51608e | ||
|
|
a74d0c90dc | ||
|
|
4e6d29924f | ||
|
|
77af438abb | ||
|
|
d6d893e4c0 | ||
|
|
2e95192a3b | ||
|
|
59a6738559 | ||
|
|
ce5d133d88 | ||
|
|
5b44ff82db | ||
|
|
9cf7ba063d | ||
|
|
7265388ca1 | ||
|
|
1c6a6b15ec | ||
|
|
e56e600230 | ||
|
|
e1650e035e | ||
|
|
3a3a4ec8f0 | ||
|
|
a556222bb0 | ||
|
|
3105febebf | ||
|
|
0dd92eb4e7 | ||
|
|
a0032d5a3b | ||
|
|
3d0b913e8f | ||
|
|
b60b2be4c3 | ||
|
|
4257f3c81b | ||
|
|
8f15b3c254 | ||
|
|
f25835e98c | ||
|
|
877b49877f | ||
|
|
c26f99110c | ||
|
|
d393fb7b8a | ||
|
|
d15bf10ed8 | ||
|
|
265622afc4 | ||
|
|
bfcdd28e9d | ||
|
|
c32a09a2e2 | ||
|
|
3c3df6dadc | ||
|
|
bd155fbe2b | ||
|
|
1f90b6a98c | ||
|
|
425fda689d | ||
|
|
265f1fa07e | ||
|
|
201b6768d0 | ||
|
|
cc1d6afb6e | ||
|
|
25a97fbb77 | ||
|
|
85e74daf7b | ||
|
|
544caf0ff1 | ||
|
|
178090e55f | ||
|
|
aecb14abbe | ||
|
|
587afdfab5 | ||
|
|
8d665a3c0f | ||
|
|
75dc5d6278 | ||
|
|
f9ae84631c | ||
|
|
3725ad27e0 | ||
|
|
24be63aa3b | ||
|
|
c95731d37a | ||
|
|
b090067352 | ||
|
|
8862002a79 | ||
|
|
73069cac7f | ||
|
|
e3685a3314 | ||
|
|
3188cecce6 | ||
|
|
8e8bb0b1cc | ||
|
|
a1bb2a9549 | ||
|
|
866709a715 | ||
|
|
ca9c4cef02 | ||
|
|
2b5a8f3a2d | ||
|
|
ceaef7bdb2 | ||
|
|
045178855c | ||
|
|
a2b5cd59e1 | ||
|
|
4f0d0eb688 | ||
|
|
fea9194c5c | ||
|
|
3a822733c0 | ||
|
|
6359e09942 | ||
|
|
05479cfa91 | ||
|
|
bd01f31851 | ||
|
|
7000e201f6 | ||
|
|
4070aa19cf | ||
|
|
253205199e | ||
|
|
29d01ee57a | ||
|
|
d3c7e2728f | ||
|
|
e65ef600c5 | ||
|
|
930acb5fdb | ||
|
|
abd9921b1d | ||
|
|
5f2bbf15df | ||
|
|
c03889add5 | ||
|
|
f571ab36a8 | ||
|
|
d40c939b4d | ||
|
|
e7e6db5743 | ||
|
|
c3adfafeed | ||
|
|
226ac77c37 | ||
|
|
9d02e8fe16 | ||
|
|
907c1b7445 | ||
|
|
e33bdcd119 | ||
|
|
2a38d563db | ||
|
|
d691c90cb4 | ||
|
|
0d214a4bdd | ||
|
|
72058f2962 | ||
|
|
3d131cc514 | ||
|
|
2accf75870 | ||
|
|
f5d579eb21 | ||
|
|
1380052688 | ||
|
|
1f073c1027 | ||
|
|
811ecd9bd8 | ||
|
|
4f071c013d | ||
|
|
f6f4a596ea | ||
|
|
f5a00b4230 | ||
|
|
ff3a748f57 | ||
|
|
6ef129e44d | ||
|
|
27c760ef3c | ||
|
|
a5643cf97b | ||
|
|
6e3656cdfd | ||
|
|
ae13d5b618 | ||
|
|
bbc598a054 | ||
|
|
f6e9d52830 | ||
|
|
cba59236ee | ||
|
|
28eb38d0ad | ||
|
|
3e421a3d34 | ||
|
|
ca66aa8214 | ||
|
|
52907729d2 | ||
|
|
ac11bfc168 | ||
|
|
93c316dfa6 | ||
|
|
b69cb3182a | ||
|
|
29c29d4ea8 | ||
|
|
44e621d94d | ||
|
|
2ce4740246 | ||
|
|
25bd70eec9 | ||
|
|
1cb519e989 | ||
|
|
97f97e023a | ||
|
|
4bc6a78161 | ||
|
|
fa4260057d | ||
|
|
4497a37280 | ||
|
|
1c412d5ae7 | ||
|
|
6c8482674f | ||
|
|
6745907aaa | ||
|
|
4caca92df9 | ||
|
|
0ffb39c682 | ||
|
|
fbb1b5a04b | ||
|
|
48d7a56e4a | ||
|
|
5fe7287c7b | ||
|
|
322fb0627d | ||
|
|
b11eb26f3e | ||
|
|
a9cf2ce762 | ||
|
|
5f9701d263 | ||
|
|
ba8a1de67b | ||
|
|
f9a760359a | ||
|
|
bbaeacd063 | ||
|
|
031ffb0444 | ||
|
|
bdb42e0ff5 | ||
|
|
3ab99664fe | ||
|
|
d52de4b4d8 | ||
|
|
bfe852b3e6 | ||
|
|
3b9daf63fb | ||
|
|
c00d056fc2 | ||
|
|
865e9668d3 | ||
|
|
3654d64a96 | ||
|
|
d092413956 | ||
|
|
846e06eb95 | ||
|
|
a63258b283 | ||
|
|
f9269016f9 | ||
|
|
a23b6c541a | ||
|
|
a1c10a012b | ||
|
|
abc1106ee0 | ||
|
|
9de4d96298 | ||
|
|
b83a9a5c63 | ||
|
|
9566dce374 | ||
|
|
615aae2e65 | ||
|
|
301e734b23 | ||
|
|
63d90bf8ba | ||
|
|
23fa592eb5 | ||
|
|
0ebde731cd | ||
|
|
b22eb25460 | ||
|
|
3f9644bef0 | ||
|
|
67eb77262d | ||
|
|
5200a38820 | ||
|
|
a2b2ccdfac | ||
|
|
0bc1c23deb | ||
|
|
8ed3f00b84 | ||
|
|
870cade69b | ||
|
|
348f74a146 | ||
|
|
64f4e29900 | ||
|
|
8c978595a9 | ||
|
|
e73ee91237 | ||
|
|
65d290e6de | ||
|
|
57c71488b3 | ||
|
|
6c6cd6903e | ||
|
|
e1b9886d87 | ||
|
|
26c378e263 | ||
|
|
eccf7ec85d | ||
|
|
4dfb7a824e | ||
|
|
9129890be3 | ||
|
|
b0c8b22833 | ||
|
|
4c4ac5a7c3 | ||
|
|
63fc2e132b | ||
|
|
6e6c58ad08 | ||
|
|
c4136913d6 | ||
|
|
9d2b040978 | ||
|
|
f322d8a88f | ||
|
|
8781180730 | ||
|
|
292bed896e | ||
|
|
8f0d192cc1 | ||
|
|
3b5a84c3cc | ||
|
|
73c325b6e9 | ||
|
|
2b4fb544e5 | ||
|
|
a62b4feaed | ||
|
|
31c5a38f77 | ||
|
|
6d1e4033a9 | ||
|
|
b64b6055a6 | ||
|
|
d9e56efc3f | ||
|
|
b0c2d11fb1 | ||
|
|
b38e47cea7 | ||
|
|
42b038f824 | ||
|
|
1b63f7ba9f | ||
|
|
f25723a3e7 | ||
|
|
e38e931446 | ||
|
|
d9f8952dac | ||
|
|
9cdcf5b7ef | ||
|
|
49fdce0bd7 | ||
|
|
64c34744e6 | ||
|
|
c49328a09c | ||
|
|
14d0d5129a | ||
|
|
d4e3d9a7b5 | ||
|
|
bc5c15667b | ||
|
|
490bdfe2ba | ||
|
|
fd1bab39f3 | ||
|
|
c0b3ef759b | ||
|
|
097956f8fd | ||
|
|
068e8e1b99 | ||
|
|
dc03a9c201 | ||
|
|
d1470462de | ||
|
|
307d793ea4 | ||
|
|
689adca734 | ||
|
|
b48a672a67 | ||
|
|
dbf2f9df4e | ||
|
|
46430c52c8 | ||
|
|
2e9d4e9655 | ||
|
|
0170b9e9ba | ||
|
|
c630123df3 | ||
|
|
e89ffc0cff | ||
|
|
e16716408b | ||
|
|
31e3765a76 | ||
|
|
4adc3fc657 | ||
|
|
9ce9be52a6 | ||
|
|
62626d2a7c | ||
|
|
e4a447f2b8 | ||
|
|
707d0c4841 | ||
|
|
7453036367 | ||
|
|
7d091e3bc1 | ||
|
|
c7dff4a4a4 | ||
|
|
33f8c20d97 | ||
|
|
7ab90efaa1 | ||
|
|
b9dab31212 | ||
|
|
ccd6585c6b | ||
|
|
7e0d68aec0 | ||
|
|
5bb2bea640 | ||
|
|
0c523370da | ||
|
|
8ded50c67e | ||
|
|
b3ef3894f8 | ||
|
|
c0209959a8 | ||
|
|
d848e9c11a | ||
|
|
a4a23fd659 | ||
|
|
2074f2de0c | ||
|
|
95fdfc4f40 | ||
|
|
827a0aa9e6 | ||
|
|
5b4ae6734d | ||
|
|
c9a5e7c2f5 | ||
|
|
f9fdb28a6f | ||
|
|
a11f2e9ef9 | ||
|
|
b25c22ab67 | ||
|
|
078f321738 | ||
|
|
559ccd52c3 | ||
|
|
50cfe6a201 | ||
|
|
0c43687567 | ||
|
|
128745b3cb | ||
|
|
5440e82df6 | ||
|
|
52241db9a7 | ||
|
|
24cbf15374 | ||
|
|
f9514ecfb0 | ||
|
|
92c2da7f11 | ||
|
|
e9fb5fbf02 | ||
|
|
7e3a9d4510 | ||
|
|
710928dcf9 | ||
|
|
3307ded353 | ||
|
|
50315a40e3 | ||
|
|
99a1957ccd | ||
|
|
2464b0e99b | ||
|
|
a7feeab3d8 | ||
|
|
6768ffbdac | ||
|
|
93dee1d17c | ||
|
|
1a8376ec45 | ||
|
|
315211ce89 | ||
|
|
8a6a3e6622 | ||
|
|
447b038ae1 | ||
|
|
5b91184867 | ||
|
|
2c555502d2 | ||
|
|
193f34a687 | ||
|
|
564b42a988 | ||
|
|
0bc5a4870c | ||
|
|
d7f189d07f | ||
|
|
ae0adf4454 | ||
|
|
15c4f9651e | ||
|
|
cab5295199 | ||
|
|
bd8ad478c8 | ||
|
|
f7c4ddc429 | ||
|
|
5583edac52 | ||
|
|
2008f1d8db | ||
|
|
c8cf795c10 | ||
|
|
9e04993152 | ||
|
|
02b59494a6 | ||
|
|
055b8cd436 | ||
|
|
7e6236abf9 | ||
|
|
966b6d8cde | ||
|
|
6debbb3eee | ||
|
|
4f06e08538 | ||
|
|
e41a7a481e | ||
|
|
7d53de8400 | ||
|
|
9d9cd291b8 | ||
|
|
18a171444f | ||
|
|
ed667578ac | ||
|
|
8980931b6e | ||
|
|
f1297a303c | ||
|
|
044ba54ab4 | ||
|
|
5896a21faa | ||
|
|
8880822311 | ||
|
|
0d4c1cb129 | ||
|
|
c04b3d4707 | ||
|
|
dc35c9607b | ||
|
|
a34188276e | ||
|
|
7b0c11b1f7 | ||
|
|
76e972ef30 | ||
|
|
e0bdd93196 | ||
|
|
e0fa00b160 | ||
|
|
dcf602bd54 | ||
|
|
5cc1c96d74 | ||
|
|
98b25b54ff | ||
|
|
377bd69939 | ||
|
|
e17723f47d | ||
|
|
1cafcad180 | ||
|
|
c08c961c5b | ||
|
|
b0aaa54a22 | ||
|
|
5d41b746fc | ||
|
|
ceb002499c | ||
|
|
c6c05f468d | ||
|
|
929d0b0530 | ||
|
|
dfedc3bdb6 | ||
|
|
e3db9ffb35 | ||
|
|
3d4a237799 | ||
|
|
d3e337d232 | ||
|
|
2327d51886 | ||
|
|
b4cc3da829 | ||
|
|
097552d571 | ||
|
|
49481d8e6b | ||
|
|
5fb6c7607b | ||
|
|
9b9d056bba | ||
|
|
5c966a6087 | ||
|
|
83296c81bf | ||
|
|
14db33a351 | ||
|
|
5651e4f317 | ||
|
|
1d598f8d00 | ||
|
|
854f5de9ad | ||
|
|
588a9f5aac | ||
|
|
2d3ec2e9e7 | ||
|
|
07e986d022 | ||
|
|
a100447b3d | ||
|
|
e962705677 | ||
|
|
87b428c435 | ||
|
|
8a7c25dff0 | ||
|
|
fe19a0e610 | ||
|
|
817903dfec | ||
|
|
5102186372 | ||
|
|
3757bf4357 | ||
|
|
25bc7ebc78 | ||
|
|
67df8684e8 | ||
|
|
2ff4bd21a4 | ||
|
|
9dcf8aa2a8 | ||
|
|
0e49a135c6 | ||
|
|
5228789d75 | ||
|
|
62bd78e97c | ||
|
|
9fdd07b1bb | ||
|
|
a05f476396 | ||
|
|
62f8d8ba02 | ||
|
|
6f00d29260 | ||
|
|
551c96d2bd | ||
|
|
267364788b | ||
|
|
5562152995 | ||
|
|
00b6de500f | ||
|
|
75f7543d0b | ||
|
|
3701af88b8 | ||
|
|
9d52142e1d | ||
|
|
fed6914774 | ||
|
|
e785dfd499 | ||
|
|
ef6a37a66a | ||
|
|
4c3d699858 | ||
|
|
ea00f9baa3 | ||
|
|
2a3be99035 | ||
|
|
9789fc2858 | ||
|
|
a3eabd0589 | ||
|
|
2f2cfe222f | ||
|
|
30c216e9d7 | ||
|
|
24ebc8aeac | ||
|
|
48688e986e | ||
|
|
0e3cdd0c31 | ||
|
|
80faf2357c | ||
|
|
e4c5528a55 | ||
|
|
e9feec7825 | ||
|
|
3b3c99cdee | ||
|
|
cdc8971d41 | ||
|
|
d4a712cd71 | ||
|
|
db9ed99dcf | ||
|
|
c7cac6c6a4 | ||
|
|
da5662b1f6 | ||
|
|
1613d19c3b | ||
|
|
09ff31ae5a | ||
|
|
3c536c1e56 | ||
|
|
c961b4ab82 | ||
|
|
314da0b559 | ||
|
|
a74cd36793 | ||
|
|
7acad86def | ||
|
|
a104ae3ecc | ||
|
|
453009734c | ||
|
|
8c27431854 | ||
|
|
09862a3085 | ||
|
|
658b5b85c4 | ||
|
|
4f61b256c9 | ||
|
|
b1ce33cefc | ||
|
|
fc93dab5ea | ||
|
|
6f3a3c20f7 | ||
|
|
6fa02b0cfd | ||
|
|
1dc516524a | ||
|
|
133e709e2b | ||
|
|
a8b11e0e33 | ||
|
|
0a7bcb4e68 | ||
|
|
117507a951 | ||
|
|
e746c0cf0b | ||
|
|
a84d81fa9b | ||
|
|
a75cc0fccd | ||
|
|
b0c0cbbd92 | ||
|
|
bad4ecaf4f | ||
|
|
bb3f23d939 | ||
|
|
bd2810e619 | ||
|
|
5f788ae6fe | ||
|
|
c7434ddfa9 | ||
|
|
eaad2f3226 | ||
|
|
e25008ab51 | ||
|
|
a7cccbf443 | ||
|
|
dac1fff99b | ||
|
|
f5979f2c09 | ||
|
|
4cddee4fae | ||
|
|
e025e4036d | ||
|
|
9e599e2370 | ||
|
|
3c7535515f | ||
|
|
f21c251a4e | ||
|
|
05f4be636d | ||
|
|
87ecf36366 | ||
|
|
c897034165 | ||
|
|
cee09a674f | ||
|
|
618b8441ce | ||
|
|
30a6dcf361 | ||
|
|
95fb28454a | ||
|
|
a65f9b5f38 | ||
|
|
eff69a72bc | ||
|
|
536d5ae24d | ||
|
|
2ef8b18ae0 | ||
|
|
60990a9e27 | ||
|
|
fb1bc360a9 | ||
|
|
22fda854d2 | ||
|
|
40523af169 | ||
|
|
2f763f8a78 | ||
|
|
f48db7cf45 | ||
|
|
b8001adfd8 | ||
|
|
f824937a9f | ||
|
|
d0a1b862d1 | ||
|
|
681a72367f | ||
|
|
0721212366 | ||
|
|
fa21e32f44 | ||
|
|
205792242e | ||
|
|
9d2b1a0033 | ||
|
|
ae1c715d4e | ||
|
|
780d15a895 | ||
|
|
b379375529 | ||
|
|
9825db2573 | ||
|
|
7500574d5a | ||
|
|
008744dc9f | ||
|
|
bce4b41cd8 | ||
|
|
b4b47852bc | ||
|
|
53b3427a6b | ||
|
|
a5626ea2dd | ||
|
|
8748359fc5 | ||
|
|
40ac982b7e | ||
|
|
a1e1c6ff09 | ||
|
|
5de5699da8 | ||
|
|
7df0bd628d | ||
|
|
aca28e7efb | ||
|
|
49a8e9d4ff | ||
|
|
2fca642782 | ||
|
|
1ed22da0df | ||
|
|
8bbe4615c6 | ||
|
|
82e71755f4 | ||
|
|
c6c408ab8e | ||
|
|
8965dbcda8 | ||
|
|
053ce37dfa | ||
|
|
32c9294312 | ||
|
|
478e015e1d | ||
|
|
50ee05df62 | ||
|
|
7e60c1c19c | ||
|
|
4034401e14 | ||
|
|
d79b45663e | ||
|
|
667023311a | ||
|
|
2e809f0570 | ||
|
|
2fad16af2e | ||
|
|
97f3d676a7 | ||
|
|
9db3ca8a8f | ||
|
|
57377e790a | ||
|
|
efcc7ef86a | ||
|
|
cb557f34aa | ||
|
|
53dd7f31b1 | ||
|
|
d9f26f8cd7 | ||
|
|
c42890d4f1 | ||
|
|
8b1c6feabb | ||
|
|
b7b2d22884 | ||
|
|
58e5030eb9 | ||
|
|
18ce69121b | ||
|
|
aa89557ea7 | ||
|
|
605547d18f | ||
|
|
aca76ce8e0 | ||
|
|
e89d28495a | ||
|
|
cfb833aa25 | ||
|
|
afcd21de5a | ||
|
|
e67aa0c638 | ||
|
|
5b8414066f | ||
|
|
c5dfccfe5a | ||
|
|
7f683bba1f | ||
|
|
07e263bce2 | ||
|
|
dbc31f2dc3 | ||
|
|
24ab15b621 | ||
|
|
515ef676d5 | ||
|
|
ee2175c23a | ||
|
|
743bb3b410 | ||
|
|
d2decc727a | ||
|
|
6fb0434fd3 | ||
|
|
d8ed0c3db3 | ||
|
|
0c9e632607 | ||
|
|
1a42551cc0 | ||
|
|
9f9603d4a8 | ||
|
|
40d2135191 | ||
|
|
ff4570cdba | ||
|
|
d3a46b58cf | ||
|
|
c99f436ac8 | ||
|
|
4fc4b6a239 | ||
|
|
7337fba360 | ||
|
|
33eb19e9ae | ||
|
|
6a28c418e3 | ||
|
|
090d3cacb2 | ||
|
|
38f97e2012 | ||
|
|
502ac356d0 | ||
|
|
30370d41ca | ||
|
|
b9c957cea3 | ||
|
|
d8967892fd | ||
|
|
722e235909 | ||
|
|
8d052b636b | ||
|
|
f19755d481 | ||
|
|
38241060e7 | ||
|
|
30e20766ab | ||
|
|
a724d97f9a | ||
|
|
efd4c0e239 | ||
|
|
73105d432e | ||
|
|
6dd90e41ad | ||
|
|
3df8a0c267 | ||
|
|
9c39f39561 | ||
|
|
fe478c3831 | ||
|
|
061b07e863 | ||
|
|
89b6a466aa | ||
|
|
06b35fe083 | ||
|
|
88e4af8969 | ||
|
|
a365df4d86 | ||
|
|
68189986ba | ||
|
|
ac3f12d96d | ||
|
|
b84aaab4ca | ||
|
|
44d661e92e | ||
|
|
0ff20506fd | ||
|
|
6628bb087f | ||
|
|
f0e1d9a59b | ||
|
|
2f0571053f | ||
|
|
13f89f6850 | ||
|
|
596f68bd34 | ||
|
|
6727d0841d | ||
|
|
9fc843babb | ||
|
|
39eddf4b0a | ||
|
|
4cc005cf55 | ||
|
|
32df475415 | ||
|
|
9f74a8dd5b | ||
|
|
e478b34887 | ||
|
|
aa7cb1987c | ||
|
|
026b25464c | ||
|
|
91645a6833 | ||
|
|
6674d22a4c | ||
|
|
513a5768d6 | ||
|
|
1fa6771ba1 | ||
|
|
196eb3a55b | ||
|
|
4d00203e79 | ||
|
|
3f59cff54e | ||
|
|
50d024e33e | ||
|
|
48c6645688 | ||
|
|
1546661013 | ||
|
|
7d6334a750 | ||
|
|
6af80a602a | ||
|
|
05657b1dfb | ||
|
|
3e7b00b630 | ||
|
|
e47f4b2f56 | ||
|
|
8625762d64 | ||
|
|
797b0307dc | ||
|
|
463bc4f7c7 | ||
|
|
5c15c43560 | ||
|
|
d15883a3ec | ||
|
|
a91f7ae504 | ||
|
|
7a01104700 | ||
|
|
3215aa7eb9 | ||
|
|
611edd0cf1 | ||
|
|
4793ab0311 | ||
|
|
6663b2b3a1 | ||
|
|
bcb25c49e9 | ||
|
|
189a5ee5f1 | ||
|
|
7e695edb57 | ||
|
|
ca3f246e37 | ||
|
|
fb0df1b1b8 | ||
|
|
1a628deefe | ||
|
|
ad83bc17a9 | ||
|
|
b963af88e9 | ||
|
|
b2d577e9a0 | ||
|
|
c67af11f1f | ||
|
|
6bd8e327b5 | ||
|
|
ebcc853173 | ||
|
|
7cd3ba9ac3 | ||
|
|
09e5da60a8 | ||
|
|
7f36b2d6d2 | ||
|
|
a8f2d03cd6 | ||
|
|
0012ef5ef2 | ||
|
|
e6a28510a7 | ||
|
|
562d469ae5 | ||
|
|
752ad07d8a | ||
|
|
3412d12f79 | ||
|
|
bf6306705a | ||
|
|
1c20d24653 | ||
|
|
cf1a250b38 | ||
|
|
8084161dd5 | ||
|
|
5a0017c5be | ||
|
|
d7ca2bddd2 | ||
|
|
08ec3bb249 | ||
|
|
c38f98c5f0 | ||
|
|
50fd28d271 | ||
|
|
a695d35ca2 | ||
|
|
814dca1839 | ||
|
|
e179a475f2 | ||
|
|
eb8b71db66 | ||
|
|
ec1ba51eb9 | ||
|
|
8e7b388b44 | ||
|
|
a117993264 | ||
|
|
fd918a10b8 | ||
|
|
3f0f7ab1a5 | ||
|
|
926d170960 | ||
|
|
5c73a105a8 | ||
|
|
f2c37a9dbe | ||
|
|
632fd2cb39 | ||
|
|
d5a9796e0f | ||
|
|
9080648f57 | ||
|
|
0b9849c124 | ||
|
|
e979147858 | ||
|
|
93786dd1b9 | ||
|
|
5722ac20b1 | ||
|
|
5b212badfa | ||
|
|
6dc698d0d2 | ||
|
|
74f72a4ba7 | ||
|
|
f8da5edc7e | ||
|
|
2f6ea48001 | ||
|
|
f36d5a9220 | ||
|
|
fef364a3e3 | ||
|
|
8bd2526063 | ||
|
|
bfd7a5959d | ||
|
|
0198a2b34a | ||
|
|
e1f796283b | ||
|
|
d3cf54faf0 | ||
|
|
a5fce3c667 | ||
|
|
1dac552a64 | ||
|
|
c2a6eda65b | ||
|
|
b1bb4f3818 | ||
|
|
c4d3beb59d | ||
|
|
f0af99fd40 | ||
|
|
1dd5a10668 | ||
|
|
0334a5d787 | ||
|
|
c2ebfec5b0 | ||
|
|
9469b84a94 | ||
|
|
78efbfe4d1 | ||
|
|
f833cf3c91 | ||
|
|
59f80f04e4 | ||
|
|
d897e6dbae | ||
|
|
cffb83b87b | ||
|
|
f3d45bf89c | ||
|
|
b1fe4e4f71 | ||
|
|
73493541b8 | ||
|
|
13554c75c0 | ||
|
|
e5a23aabaf | ||
|
|
69bf98f6f7 | ||
|
|
09a4c20efb | ||
|
|
752b72edcd | ||
|
|
aeb72c371a | ||
|
|
ace39f7efc | ||
|
|
e3fcc4a9a4 | ||
|
|
8d2bfeb23e | ||
|
|
0d7e95a1e9 | ||
|
|
0a37951438 | ||
|
|
2ab1c81d98 | ||
|
|
48b860de36 | ||
|
|
cfd0d013aa | ||
|
|
7f670d37b5 | ||
|
|
e4744049b4 | ||
|
|
935a8319c2 | ||
|
|
5f2fd538d1 | ||
|
|
a192ffd900 | ||
|
|
be2c379852 | ||
|
|
66745fde08 | ||
|
|
cbca5f015b | ||
|
|
3c4dbd41e2 | ||
|
|
79d8d44e27 | ||
|
|
299d2081f4 | ||
|
|
4c6b5e6b76 | ||
|
|
1021a5115b | ||
|
|
9798610bfd | ||
|
|
a10c01f350 | ||
|
|
2f127541fc | ||
|
|
4118edd666 | ||
|
|
8f3579f0d1 | ||
|
|
66088be1b5 | ||
|
|
77e6e03533 | ||
|
|
7f36ff3652 | ||
|
|
a2a6363d08 | ||
|
|
ad0a5b9a72 | ||
|
|
1b1a97e5b9 | ||
|
|
8966001e75 | ||
|
|
fe2d95aeed | ||
|
|
8a415bc482 | ||
|
|
17d1e262e3 | ||
|
|
632b16b296 | ||
|
|
b00d56a61a | ||
|
|
7f6ec439bb | ||
|
|
2c1deb911a | ||
|
|
9a6f8a8572 | ||
|
|
2dae4b0d7d | ||
|
|
acd24da012 | ||
|
|
3c603dbc5d | ||
|
|
e2678fd2e2 | ||
|
|
89d1689df5 | ||
|
|
dbfa1a317e | ||
|
|
67d2381ab7 | ||
|
|
e3b8d54a7b | ||
|
|
bd50dfcc38 | ||
|
|
3ad788a364 | ||
|
|
daa128ba00 | ||
|
|
6688443ca9 | ||
|
|
7481c8e79a | ||
|
|
67f77e5555 | ||
|
|
e9ab76c49e | ||
|
|
ceff696cc0 | ||
|
|
0c94547e1c | ||
|
|
b63d791fbd | ||
|
|
eb9342c83d | ||
|
|
e1b27da857 | ||
|
|
34a71a0eb7 | ||
|
|
90d53e5bea | ||
|
|
e7e7a7ff60 | ||
|
|
67d6447207 | ||
|
|
b1dad9e75f | ||
|
|
ab1a992341 | ||
|
|
9ddc1e5968 | ||
|
|
6138594f2c | ||
|
|
59763c0c23 | ||
|
|
a39cbaf094 | ||
|
|
48ba04b0dc | ||
|
|
eeecf770e0 | ||
|
|
1d15d6955e | ||
|
|
c31801816c | ||
|
|
4a4449d2c0 | ||
|
|
b78b021e0d | ||
|
|
5eab7013df | ||
|
|
748bbe5fe1 | ||
|
|
9ac3452530 | ||
|
|
ab061d9767 | ||
|
|
c2e530c67d | ||
|
|
eebd1e49a5 | ||
|
|
8ba0321d0b | ||
|
|
ceb1c150be | ||
|
|
b12c74a074 | ||
|
|
d899cc23cd | ||
|
|
b9643b60ee | ||
|
|
59e112e7ff | ||
|
|
6c54d110c5 | ||
|
|
05f6b02d39 | ||
|
|
833560e57c | ||
|
|
c33aeb97f1 | ||
|
|
4bea3bd16a | ||
|
|
b210e4358a | ||
|
|
37fb8a03b5 | ||
|
|
bfe4163248 | ||
|
|
f541b5bc54 | ||
|
|
03afa17319 | ||
|
|
92f1b8322b | ||
|
|
86cc9c1cc5 | ||
|
|
c65f5ed2a6 | ||
|
|
5d9cfea9c0 | ||
|
|
4fd2f5c72a | ||
|
|
9cd2c50b58 | ||
|
|
c2c3ba4f6a | ||
|
|
1d13544a76 | ||
|
|
ee852070ee | ||
|
|
967736676e | ||
|
|
e0a4666130 | ||
|
|
6a95c242c5 | ||
|
|
fa4d2671a6 | ||
|
|
7be62af9ed | ||
|
|
326263e7cb | ||
|
|
fd2ffcc18f | ||
|
|
ed61ff608f | ||
|
|
b158804583 | ||
|
|
afde98a18d | ||
|
|
abad918df1 | ||
|
|
31525b060c | ||
|
|
83d089e498 | ||
|
|
76ef315b28 | ||
|
|
829b30ed34 | ||
|
|
67a68d24be | ||
|
|
0d47a9cfe0 | ||
|
|
47df07db5b | ||
|
|
fa595c9d04 | ||
|
|
1bc88766ab | ||
|
|
7dd9553707 | ||
|
|
651c590740 | ||
|
|
d648674f65 | ||
|
|
9999b5b9bb | ||
|
|
7463474159 | ||
|
|
1b5e1ef67d | ||
|
|
cc68c60cdb | ||
|
|
509788da94 | ||
|
|
f48b7507eb | ||
|
|
3f2dad1a14 | ||
|
|
38bfa41595 | ||
|
|
6e26ce9eb8 | ||
|
|
a871d6b28c | ||
|
|
b7ed68e03a | ||
|
|
db7f6daba9 | ||
|
|
61e40098c2 | ||
|
|
69a507dec4 | ||
|
|
eaf63becf8 | ||
|
|
06164f42da | ||
|
|
5babc55326 | ||
|
|
d6359a8bec | ||
|
|
5e0eb315f8 | ||
|
|
c56a551d35 | ||
|
|
18cce1c776 | ||
|
|
e81682cc94 | ||
|
|
bff3937e26 | ||
|
|
534b6aab14 | ||
|
|
77dae61c43 | ||
|
|
5237fc7d00 | ||
|
|
e1ca4951d3 | ||
|
|
16efdf2280 | ||
|
|
ff5fd5c1fd | ||
|
|
83b9d40512 | ||
|
|
f0dc0d7183 | ||
|
|
c1d4cfda15 | ||
|
|
5666962c9d | ||
|
|
36e45c9504 | ||
|
|
60a3b37671 | ||
|
|
500b6477cb | ||
|
|
f58202e625 | ||
|
|
3326d2bf50 | ||
|
|
fafb9a76e7 | ||
|
|
208439bce1 | ||
|
|
0c01b3fa92 | ||
|
|
112b8f6ccc | ||
|
|
62fdf9026d | ||
|
|
64110b9bb7 | ||
|
|
ccfbda3e4c | ||
|
|
0cd7afdcbd | ||
|
|
d3a4c09888 | ||
|
|
7142c5e21b | ||
|
|
16e54820a8 | ||
|
|
dcba27e7ac | ||
|
|
08774733f6 | ||
|
|
aa10f9c47b | ||
|
|
ebdcd9fd53 | ||
|
|
ec6687e595 | ||
|
|
e017b1a686 | ||
|
|
59f47e9576 | ||
|
|
1b651f7f2a | ||
|
|
3fb96169dc | ||
|
|
5bd68d6041 | ||
|
|
15ab337ddf | ||
|
|
6e1af41747 | ||
|
|
99662e22a4 | ||
|
|
1f8f2e1b51 | ||
|
|
b01fcaa60a | ||
|
|
fd2b8a33cc | ||
|
|
c576e29c88 | ||
|
|
c4a8cbedfe | ||
|
|
394e40a7e1 | ||
|
|
caecc2616b | ||
|
|
55de548a70 | ||
|
|
566f0a1034 | ||
|
|
e643729f49 | ||
|
|
2343714ad1 | ||
|
|
bb88e4cdc3 | ||
|
|
0410b2741f | ||
|
|
672645b2b4 | ||
|
|
f5a786f5c4 | ||
|
|
64e5634c5b | ||
|
|
c5f4d7d2a0 | ||
|
|
f3b56626e9 | ||
|
|
abf5f72054 | ||
|
|
fa9e9b2ac4 | ||
|
|
e64fef05dd | ||
|
|
680892d5e5 | ||
|
|
4bc72943b8 | ||
|
|
62058af4f6 | ||
|
|
1a08f8446f | ||
|
|
dae33f59c9 | ||
|
|
6a6ed9c03c | ||
|
|
54e918ea75 | ||
|
|
ffe388e5b9 | ||
|
|
6ef0fd0339 | ||
|
|
8234d8c0bb | ||
|
|
012e3e8781 | ||
|
|
8ce4bb165a | ||
|
|
2b99cb286c | ||
|
|
9feccaa075 | ||
|
|
62443e35ab | ||
|
|
ab89e180a9 | ||
|
|
2b2d46a408 | ||
|
|
d479fdfa3e | ||
|
|
fafeedd856 | ||
|
|
44e286c6ad | ||
|
|
05c408d8b4 | ||
|
|
8d1fcff558 | ||
|
|
0a4919aaaa | ||
|
|
79d00cdc21 | ||
|
|
b603f72ddc | ||
|
|
da2619bd53 | ||
|
|
366fba4071 | ||
|
|
03a6dc012b | ||
|
|
360941533a | ||
|
|
f98f7c01b3 | ||
|
|
c6c9b25cc5 | ||
|
|
f8870d204c | ||
|
|
a1010fecce | ||
|
|
5d250eba32 | ||
|
|
a82095d6eb | ||
|
|
2dd2330d9c | ||
|
|
365dcae3ab | ||
|
|
da179fa1c5 | ||
|
|
ca46dfcbee | ||
|
|
22d3edb3f8 | ||
|
|
6a4dd6687d | ||
|
|
72a17a64a8 | ||
|
|
0d141db086 | ||
|
|
f41fb95996 | ||
|
|
a455b33af5 | ||
|
|
4f099ab39f | ||
|
|
223a9bf175 | ||
|
|
3732d8798f | ||
|
|
b1803607c3 | ||
|
|
62c0b3a206 | ||
|
|
f26267cf36 | ||
|
|
cfd6ce9033 | ||
|
|
30154f5e5d | ||
|
|
c292635b67 | ||
|
|
d60c242be5 | ||
|
|
df1e6c8de4 | ||
|
|
11ee2be8f1 | ||
|
|
a9bbdd1f28 | ||
|
|
088bdc9021 | ||
|
|
22e1e9dbb6 | ||
|
|
8bd0d7358f | ||
|
|
a9ff275b7b | ||
|
|
2b8daa14c4 | ||
|
|
ed91efbfab | ||
|
|
136388aac4 | ||
|
|
59b148a298 | ||
|
|
2fc2b13eb0 | ||
|
|
c30bcddcb9 | ||
|
|
923bb2089b | ||
|
|
837081b7a5 | ||
|
|
b791fdf2dd | ||
|
|
3ca4192053 | ||
|
|
d5a1359e7b | ||
|
|
6519d2e260 | ||
|
|
0521819a63 | ||
|
|
5dca695f6e | ||
|
|
e1da2c4471 | ||
|
|
605646cc27 | ||
|
|
3da9544fa9 | ||
|
|
8161104b19 | ||
|
|
53e0394359 | ||
|
|
6c2f428be4 | ||
|
|
a1c6a9f4d5 | ||
|
|
2d4dbf15d8 | ||
|
|
4e4029f2aa | ||
|
|
c98c383c8e | ||
|
|
c6ff5d7f7e | ||
|
|
e1380888e6 | ||
|
|
a1c630afbd | ||
|
|
34bbfa6031 | ||
|
|
ec16d3e4fb | ||
|
|
6f7b005aa0 | ||
|
|
a7dcdb6ca2 | ||
|
|
7ed692a790 | ||
|
|
c469e283e5 | ||
|
|
4e3fc13879 | ||
|
|
60e0417068 | ||
|
|
0a50c67d97 | ||
|
|
e0e3d9c5a3 | ||
|
|
a3b526ce8d | ||
|
|
f6b5bae661 | ||
|
|
38d0614665 | ||
|
|
e1c991d6ea | ||
|
|
506fe7df4e | ||
|
|
8f5f98b090 | ||
|
|
705d7fd295 | ||
|
|
68c735db30 | ||
|
|
f88625e84c | ||
|
|
07ab447a77 | ||
|
|
531e29a06e | ||
|
|
d922db1f7b | ||
|
|
41b55d8433 | ||
|
|
8740e0b29f | ||
|
|
155fb25251 | ||
|
|
3d88853dc0 | ||
|
|
5ebf8c4e93 | ||
|
|
7d42728b58 | ||
|
|
7c715cb7db | ||
|
|
571f5b912b | ||
|
|
9ba46dfc8a | ||
|
|
b95e2e2488 | ||
|
|
84c07b801c | ||
|
|
604517b605 | ||
|
|
0e7b23568f | ||
|
|
abe9cde75e | ||
|
|
af881804d4 | ||
|
|
e588799282 | ||
|
|
4cb64eda4b | ||
|
|
50e289a77c | ||
|
|
841f4ffbf1 | ||
|
|
454681ecab | ||
|
|
0ec8902eb1 | ||
|
|
d2f88742dd | ||
|
|
e92dc64ae9 | ||
|
|
4954a1a441 | ||
|
|
e39158bdce | ||
|
|
cd2faf3521 | ||
|
|
33bb2d850f | ||
|
|
5d199ba3e1 | ||
|
|
40a13c236e | ||
|
|
9b4d78cde3 | ||
|
|
73b71d0c87 | ||
|
|
533f641b91 | ||
|
|
5879a09f46 | ||
|
|
3d9d89c7dd | ||
|
|
b1f95da562 | ||
|
|
286f92aec5 | ||
|
|
fcc6f82571 | ||
|
|
f63b2d0ad9 | ||
|
|
1e84cb0299 | ||
|
|
12351013b8 | ||
|
|
0aaf8f8bf3 | ||
|
|
b00996a440 | ||
|
|
9040a9ca68 | ||
|
|
2aa0bfabbc | ||
|
|
55140990f1 | ||
|
|
2ddfb27d5e | ||
|
|
c279b50669 | ||
|
|
8f5f5d5237 | ||
|
|
e849d747c8 | ||
|
|
cbb18e1ee4 | ||
|
|
500e5ce10d | ||
|
|
460b0853c9 | ||
|
|
d0b82a0487 | ||
|
|
b43c1df078 | ||
|
|
2856c9ef62 | ||
|
|
30acf917a0 | ||
|
|
351ce2a7ba | ||
|
|
bcf105b0c4 | ||
|
|
a2109e5759 | ||
|
|
d88d848f7f | ||
|
|
5aff644a70 | ||
|
|
6f0631b8c4 | ||
|
|
1a9f911009 | ||
|
|
b6c82d641d | ||
|
|
d39862cc41 | ||
|
|
7f9149a8b9 | ||
|
|
14ca5aaf34 | ||
|
|
a6730e470d | ||
|
|
bbea9c2f9e | ||
|
|
6c0ccf6faa | ||
|
|
d602280def | ||
|
|
2d8570408b | ||
|
|
d08c6e270d | ||
|
|
016654d211 | ||
|
|
08bc110afd | ||
|
|
114f0f3e56 | ||
|
|
b89b1f5098 | ||
|
|
8c1d03b362 | ||
|
|
20b93a808a | ||
|
|
5d916bc082 | ||
|
|
17d99a812a | ||
|
|
81073375b7 | ||
|
|
b323d8e8d7 | ||
|
|
d513bcf809 | ||
|
|
74b1d79225 | ||
|
|
884a35694e | ||
|
|
8d6e8c9d86 | ||
|
|
5381f2b74b | ||
|
|
0dddf704c2 | ||
|
|
d41e4fd39f | ||
|
|
c89345a8e9 | ||
|
|
84a81a46e0 | ||
|
|
7d31bf965f | ||
|
|
b534c3bd88 | ||
|
|
dde7c3fac9 | ||
|
|
c7894343d0 | ||
|
|
5d6bc9ce71 | ||
|
|
ff5b516984 | ||
|
|
bede08923d | ||
|
|
830dc5ee58 | ||
|
|
fd35ea4125 | ||
|
|
7b074cbb56 | ||
|
|
d44d9bd817 | ||
|
|
f4603e02ce | ||
|
|
b2449126fb | ||
|
|
bd2e249784 | ||
|
|
191656ff57 | ||
|
|
1b56c4c435 | ||
|
|
b68313ae74 | ||
|
|
450d4ffb8f | ||
|
|
49756dc8ce | ||
|
|
0e5d8ae5fa | ||
|
|
af4fd0479a | ||
|
|
1e6adca178 | ||
|
|
1e1c8a80ce | ||
|
|
0d5b1642e7 | ||
|
|
19480c66d1 | ||
|
|
861ff38d4a | ||
|
|
1bb9a2ac79 | ||
|
|
b67bc02304 | ||
|
|
621c868cc3 | ||
|
|
b5f498ddfe | ||
|
|
ac3a0390ac | ||
|
|
557b319383 | ||
|
|
5f4fb3015e | ||
|
|
c8740bad49 | ||
|
|
a32eded196 | ||
|
|
00621832be | ||
|
|
65e9f8ec1f | ||
|
|
9ece07dd32 | ||
|
|
9923a2a5c9 | ||
|
|
2e0a486f22 | ||
|
|
7b89ea1c5d | ||
|
|
3a36c415c6 | ||
|
|
754918f039 | ||
|
|
1091745af1 | ||
|
|
6940a1fee0 | ||
|
|
4002ad3a64 | ||
|
|
311938dafb | ||
|
|
708dea41d5 | ||
|
|
07032a2a13 | ||
|
|
e939f7f3f2 | ||
|
|
eeed105dff | ||
|
|
b29f9991cd | ||
|
|
fc93a96aff | ||
|
|
10518d5f17 | ||
|
|
80b546406e | ||
|
|
2339334bdc | ||
|
|
1d5987acc4 | ||
|
|
fea8da3922 | ||
|
|
c131d40627 | ||
|
|
1153e97134 | ||
|
|
ad7a165708 | ||
|
|
1ff8b747c7 | ||
|
|
6986a230f9 | ||
|
|
f4f85dbb0e | ||
|
|
44dce0b110 | ||
|
|
77d89fa403 | ||
|
|
0bc807a188 | ||
|
|
9a385be255 | ||
|
|
8f937d194d | ||
|
|
1c9096008a | ||
|
|
72ec67fdd3 | ||
|
|
6050f6a3ce | ||
|
|
daf29a4560 | ||
|
|
e4c196e238 | ||
|
|
7858f89055 | ||
|
|
1800b056fa | ||
|
|
68fd46a818 | ||
|
|
392111d825 | ||
|
|
56b7f7d63b | ||
|
|
4a954451f9 | ||
|
|
11c518aada | ||
|
|
ddb0a77fd8 | ||
|
|
e204a8a180 | ||
|
|
85c4583b3b | ||
|
|
5a4ac81cf3 | ||
|
|
2d99efc796 | ||
|
|
a8d2177a5e | ||
|
|
7f4257883d | ||
|
|
66ae6eb47b | ||
|
|
78c231a646 | ||
|
|
3fc48c2d0c | ||
|
|
c6e5aae050 | ||
|
|
3692128c26 | ||
|
|
47d45a06d7 | ||
|
|
034e2971c5 | ||
|
|
2e148255ab | ||
|
|
4f7c3a03ce | ||
|
|
ad1d964821 | ||
|
|
ef34cab279 | ||
|
|
c23b49f3ad | ||
|
|
81d5ea95e1 | ||
|
|
dcad688f3f | ||
|
|
f6354a5785 | ||
|
|
f7641fe457 | ||
|
|
1b6221768a | ||
|
|
93092bb0e0 | ||
|
|
df3dd784b5 | ||
|
|
1bdf5cbc3d | ||
|
|
450af306cb | ||
|
|
8eb97e7048 | ||
|
|
436cf40595 | ||
|
|
0311bd7320 | ||
|
|
c254ade8f6 | ||
|
|
ff7cb66863 | ||
|
|
4830df1cae | ||
|
|
37c58aa15c | ||
|
|
042ac2356a | ||
|
|
9bcd215306 | ||
|
|
6ec053708f | ||
|
|
6733521ac4 | ||
|
|
c981e783f1 | ||
|
|
1064a22166 | ||
|
|
cbd8e52bd9 | ||
|
|
398696d6b0 | ||
|
|
6f4a84458f | ||
|
|
3eb49d0041 | ||
|
|
e465f25492 | ||
|
|
12c2989581 | ||
|
|
7b5a87b4ba | ||
|
|
1cb1f0feb4 | ||
|
|
984ca4faad | ||
|
|
1c3a261b5c | ||
|
|
c688431748 | ||
|
|
024885b178 | ||
|
|
b430b508ea | ||
|
|
93ea8637b2 | ||
|
|
0f9cf0e79f | ||
|
|
f513b95c6d | ||
|
|
2e14c7e154 | ||
|
|
a6b2dd512d | ||
|
|
12a3426de6 | ||
|
|
864613f199 | ||
|
|
fdfe07a787 | ||
|
|
b4df5264e1 | ||
|
|
d41e849d59 | ||
|
|
abb1097e02 | ||
|
|
60b7f7cb2a | ||
|
|
614e62b306 | ||
|
|
b8f5e54032 | ||
|
|
2c60ccde4c | ||
|
|
0d35f10582 | ||
|
|
50d4731df6 | ||
|
|
ac8d4bd9f1 | ||
|
|
2e086a8f31 | ||
|
|
49a9664487 | ||
|
|
f1e39d497f | ||
|
|
95f64f8d99 | ||
|
|
ecd8616fa1 | ||
|
|
247f625744 | ||
|
|
1fa31bca61 | ||
|
|
d07506fbf6 | ||
|
|
0a3af3791f | ||
|
|
32e3dd5045 | ||
|
|
b68f35d4b6 | ||
|
|
53c79fba0c | ||
|
|
9e2f71b1cf | ||
|
|
52c6e1e735 | ||
|
|
40a3d264e1 | ||
|
|
9e35256a81 | ||
|
|
5101a6495c | ||
|
|
1743f309c8 | ||
|
|
4f5d206812 | ||
|
|
ad176155dd | ||
|
|
7bff7ea25a | ||
|
|
8b5c6d67f8 | ||
|
|
b7dc9d39ac | ||
|
|
6db8a2c8f1 | ||
|
|
5f38d69264 | ||
|
|
298676bf5b | ||
|
|
5b55418197 | ||
|
|
910332318f | ||
|
|
dd6e7542d1 | ||
|
|
0cc3b53f07 | ||
|
|
25807f4e7c | ||
|
|
382b293f8a | ||
|
|
7c586ecd77 | ||
|
|
2b3894f55a | ||
|
|
830ec1bc5a | ||
|
|
9498e274fe | ||
|
|
b5b89224fa | ||
|
|
26028fc49e | ||
|
|
bd5892fc80 | ||
|
|
5b458626b4 | ||
|
|
40729b9247 | ||
|
|
0ec5a4d11f | ||
|
|
2856045f5f | ||
|
|
8c567bdb76 | ||
|
|
29a5301d08 | ||
|
|
6b0492961d | ||
|
|
399b26947f | ||
|
|
b7ec8013a8 | ||
|
|
d09f04272a | ||
|
|
bc266b0c8a | ||
|
|
74e0552a1d | ||
|
|
dc588b5113 | ||
|
|
cb6ecd26bf | ||
|
|
95b60d1817 | ||
|
|
4012d9d9bb | ||
|
|
94014cb935 | ||
|
|
35d0d4eb27 | ||
|
|
aaa7cb702a | ||
|
|
829e08c44c | ||
|
|
403a89a5ca | ||
|
|
4bedac5c92 | ||
|
|
6f186aa5c7 | ||
|
|
addcf3ca8c | ||
|
|
8c3ca87527 | ||
|
|
7c1c559852 | ||
|
|
aff65a0add | ||
|
|
c3cf4a19df | ||
|
|
7e0dd48dc9 | ||
|
|
da06236b72 | ||
|
|
10514b4603 | ||
|
|
e45b5c85a1 | ||
|
|
180cf3e244 | ||
|
|
89865a64a4 | ||
|
|
6c8c9becd8 | ||
|
|
72b80314e2 | ||
|
|
d11ebf2e2d | ||
|
|
8f1f5d4130 | ||
|
|
bf831a7bf5 | ||
|
|
25b6b34f41 | ||
|
|
64b391c145 | ||
|
|
2c234068d4 | ||
|
|
fefc71617e | ||
|
|
b581096c2f | ||
|
|
e932053c14 | ||
|
|
f686dc4de8 | ||
|
|
25f5868a4f | ||
|
|
d359c048f6 | ||
|
|
bd06d75b4a | ||
|
|
eeb1097fd5 | ||
|
|
004ee3e990 | ||
|
|
730a26a13d | ||
|
|
06f5662134 | ||
|
|
116bd38720 | ||
|
|
6ab865958c | ||
|
|
be442661c9 | ||
|
|
1316745483 | ||
|
|
e37e71484f | ||
|
|
7a84d342ec | ||
|
|
31a386b81d | ||
|
|
edea6d0772 | ||
|
|
2c347a2e91 | ||
|
|
975d1bd561 | ||
|
|
e247c7f8a2 | ||
|
|
be8bd9ea24 | ||
|
|
9b48890f2b | ||
|
|
b411597473 | ||
|
|
f4b6e939f8 | ||
|
|
edcaf540b2 | ||
|
|
5c6c87c93a | ||
|
|
a2e534cac2 | ||
|
|
5632a79dff | ||
|
|
0fa3dcba3a | ||
|
|
8d7b646ada | ||
|
|
1479d157ca | ||
|
|
3cf0a25f7d | ||
|
|
7661cf907a | ||
|
|
bcee9b0fef | ||
|
|
04b0b895d4 | ||
|
|
01ae20a0c3 | ||
|
|
978195f8eb | ||
|
|
6304400000 | ||
|
|
bf3687bd68 | ||
|
|
80a1fb3284 | ||
|
|
587849eb38 | ||
|
|
187b52ebef | ||
|
|
60e735d51c | ||
|
|
0e0ba91c09 | ||
|
|
554402fddf | ||
|
|
0a991081bf | ||
|
|
2861c94c58 | ||
|
|
4937c19503 | ||
|
|
07e51b5500 | ||
|
|
fded4c3057 | ||
|
|
8de1e8b28e | ||
|
|
39c78973ed | ||
|
|
95666c93e6 | ||
|
|
bce688667d | ||
|
|
a13703544b | ||
|
|
e820c30b73 | ||
|
|
1a1d6bef06 | ||
|
|
1929894376 | ||
|
|
19c30f3614 | ||
|
|
9709c9f1c4 | ||
|
|
bf69ce48a9 | ||
|
|
4a1b43c818 | ||
|
|
86995075c3 | ||
|
|
748c6baef7 | ||
|
|
f8b504ebf6 | ||
|
|
4dbae6ee5d | ||
|
|
888b9fba15 | ||
|
|
3fbcc7580d | ||
|
|
a93bd4c55d | ||
|
|
c43505cc20 | ||
|
|
ceb4ce58e5 | ||
|
|
763e13abee | ||
|
|
4642de0439 | ||
|
|
ebcfac2af2 | ||
|
|
b6da7f446c | ||
|
|
e8e4c563f2 | ||
|
|
17496d89df | ||
|
|
edd612377f | ||
|
|
97a18e1273 | ||
|
|
3e9e13bc82 | ||
|
|
70650741c3 | ||
|
|
fb2f57aeb2 | ||
|
|
975367a491 | ||
|
|
1f93326188 | ||
|
|
ad697b610e | ||
|
|
a3c935228f | ||
|
|
020178a21b | ||
|
|
287abfe573 | ||
|
|
d92e0211a9 | ||
|
|
857d81b148 | ||
|
|
46a068e660 | ||
|
|
786242e24d | ||
|
|
08c772cde4 | ||
|
|
88ce88cb26 | ||
|
|
ef641b96ee | ||
|
|
b85e1e673c | ||
|
|
a5a56a95a6 | ||
|
|
ea6bdc7285 | ||
|
|
b3d8e3402e | ||
|
|
d4942f5236 | ||
|
|
4db67e3553 | ||
|
|
3149cd2665 | ||
|
|
2ef175f015 | ||
|
|
97b05be66c | ||
|
|
1d20ccd032 | ||
|
|
8ced624a30 | ||
|
|
20145d39d1 | ||
|
|
ca7d7244f3 | ||
|
|
ad17a3e5dc | ||
|
|
2d889a0e8d | ||
|
|
5d01e8f176 | ||
|
|
477f10b0dd | ||
|
|
d9f7333eed | ||
|
|
9f2f19ea16 | ||
|
|
a70942180d | ||
|
|
343e1ed3a5 | ||
|
|
721c5c058e | ||
|
|
ce37b50d54 | ||
|
|
0d20da4410 | ||
|
|
71e20182b6 | ||
|
|
1c27162779 | ||
|
|
96557e673a | ||
|
|
fc126bcea3 | ||
|
|
0652016ad7 | ||
|
|
7e0b913dc1 | ||
|
|
aa69e59b0c | ||
|
|
d69e4983f9 | ||
|
|
171f1adbf2 | ||
|
|
9176d08ba1 | ||
|
|
a8c3cf908a | ||
|
|
fc9bb3b0e6 | ||
|
|
eb8b59ddb6 | ||
|
|
a177f2bc71 | ||
|
|
6b7df75377 | ||
|
|
3c34cebcac | ||
|
|
a4a130092d | ||
|
|
e9d27f5927 | ||
|
|
12a3d26e28 | ||
|
|
fd0bf88d47 | ||
|
|
6a0ca57fdc | ||
|
|
b0c6deb3fd | ||
|
|
74419e9335 | ||
|
|
7b125bbbc5 | ||
|
|
7fcf88cabf | ||
|
|
1a6d4e9740 | ||
|
|
721c5d944b | ||
|
|
b08017bbc3 | ||
|
|
5a1c249134 | ||
|
|
eeb560dbf6 | ||
|
|
9f85e932d3 | ||
|
|
e8dbf586f5 | ||
|
|
836c2be884 | ||
|
|
5e75926f34 | ||
|
|
342a3fc202 | ||
|
|
afa8fe1e98 | ||
|
|
3bfcf41eac | ||
|
|
399a43804d | ||
|
|
cd67df8706 | ||
|
|
33f65c3b93 | ||
|
|
8d6ac2709e | ||
|
|
cc51673863 | ||
|
|
07751e8a4e | ||
|
|
1756c8928b | ||
|
|
dedfa5a8ad | ||
|
|
1b74c8ec05 | ||
|
|
80663a7f52 | ||
|
|
5b2a187bc7 | ||
|
|
b5c09c7934 | ||
|
|
5e794bd6b8 | ||
|
|
89758bce16 | ||
|
|
134f93ae0c | ||
|
|
729261dac6 | ||
|
|
f90de3b6ed | ||
|
|
4ad0806c7f | ||
|
|
3fc22fe724 | ||
|
|
a643c72b62 | ||
|
|
d97804c6b3 | ||
|
|
9419994a60 | ||
|
|
e7386519ce | ||
|
|
e6f87a8d51 | ||
|
|
54076707b0 | ||
|
|
9ac83876d8 | ||
|
|
c923044e1a | ||
|
|
7338cbc9af | ||
|
|
2a7d819f64 | ||
|
|
44766475bf | ||
|
|
f954b37334 | ||
|
|
bdb3d644bf | ||
|
|
c873301912 | ||
|
|
e427602f92 | ||
|
|
500b1bef21 | ||
|
|
37a1a08390 | ||
|
|
99dad4afa8 | ||
|
|
669c1a390a | ||
|
|
336acc33bc | ||
|
|
2997c0a8f1 | ||
|
|
4227ae1199 | ||
|
|
9ea4002831 | ||
|
|
5a41db99c7 | ||
|
|
1a0ec3ad02 | ||
|
|
5f02276930 | ||
|
|
03104413fa | ||
|
|
546a694367 | ||
|
|
8696e82b8c | ||
|
|
202042fa38 | ||
|
|
e3e79f9807 | ||
|
|
baaec45d10 | ||
|
|
32df6f40d9 | ||
|
|
1c2303b01f | ||
|
|
9d523e1708 | ||
|
|
725479e4c0 | ||
|
|
e64b57fa34 | ||
|
|
6743cc2ce1 | ||
|
|
de432c8077 | ||
|
|
29199f2555 | ||
|
|
aaa7d86331 | ||
|
|
a4bdce99ea | ||
|
|
888a9470ce | ||
|
|
fd9c4ffada | ||
|
|
849f2d05e3 | ||
|
|
f642264999 | ||
|
|
c5c8eabf5f | ||
|
|
2d9905cc93 | ||
|
|
f6a035b4f0 | ||
|
|
4dd561150f | ||
|
|
b1755ea39e | ||
|
|
1a766efaf3 | ||
|
|
9893121db5 | ||
|
|
b3070125f3 | ||
|
|
6e9a5eb3d1 | ||
|
|
8a86537b7a | ||
|
|
04a76589ce | ||
|
|
a9f39f7930 | ||
|
|
ad1303db5a | ||
|
|
a66daa3451 | ||
|
|
ab5279ee3c | ||
|
|
ee456b8a16 | ||
|
|
67202ddb6e | ||
|
|
316ac96b7e | ||
|
|
df635df21e | ||
|
|
38c48cf07b | ||
|
|
8ba965ff31 | ||
|
|
31f2d565bf | ||
|
|
55691db77d | ||
|
|
95c2bb17e3 | ||
|
|
6b47cfff03 | ||
|
|
1501d78a1b | ||
|
|
d74c60e5c1 | ||
|
|
72944f1976 | ||
|
|
e0639901fa | ||
|
|
c56b335cfb | ||
|
|
275b387641 | ||
|
|
84024f689c | ||
|
|
b1599f7046 | ||
|
|
eec49f72a4 | ||
|
|
96ff030ad7 | ||
|
|
2ed1eae7da | ||
|
|
e0863cd6b9 | ||
|
|
37cbaf16d0 | ||
|
|
61e5187b1c | ||
|
|
2e177a8fba | ||
|
|
d23f90c66f | ||
|
|
4f618cd5ac | ||
|
|
8dd5aab008 | ||
|
|
4d515633bd | ||
|
|
7a3e612290 | ||
|
|
8018707875 | ||
|
|
6dd5faccc7 | ||
|
|
fd5e7371e8 | ||
|
|
7c37d10f12 | ||
|
|
6cee6669ad | ||
|
|
60782a0eba | ||
|
|
73caa8c1bb | ||
|
|
3e48847069 | ||
|
|
d3feaaa49a | ||
|
|
473f183abd | ||
|
|
4f535d3eb5 | ||
|
|
dd1ed9bd0e | ||
|
|
bcbcbe2ebc | ||
|
|
f435c573b0 | ||
|
|
209dd56b30 | ||
|
|
523a728047 | ||
|
|
7eaecce9d9 | ||
|
|
82ff468297 | ||
|
|
334c6e9d08 | ||
|
|
1e827beeed | ||
|
|
9cc94dc643 | ||
|
|
5d232e0b38 | ||
|
|
be3b695670 | ||
|
|
73a44c4645 | ||
|
|
5833d83ae7 | ||
|
|
9f4365ccfb | ||
|
|
ab54d3d068 | ||
|
|
429e6cc8b1 | ||
|
|
9fdb33e40c | ||
|
|
556e72d7e2 | ||
|
|
e30fc1c1b9 | ||
|
|
31211b0a59 | ||
|
|
7f9deea2f7 | ||
|
|
71d4e1b246 | ||
|
|
dadaa196ac | ||
|
|
fcc40cd91d | ||
|
|
20fbca15d0 | ||
|
|
c2d69d9057 | ||
|
|
63d44912ec | ||
|
|
1451dda549 | ||
|
|
5f89f149d2 | ||
|
|
e24700c02f | ||
|
|
59c772229d | ||
|
|
16afd0cb7b | ||
|
|
29e6e6893b | ||
|
|
b13c2dd1f9 | ||
|
|
5d0e30a632 | ||
|
|
34e0f0f790 | ||
|
|
9555a30608 | ||
|
|
21fc62cd55 | ||
|
|
f51ad7f225 | ||
|
|
39da29301e | ||
|
|
10881ae724 | ||
|
|
5cde63191f | ||
|
|
7bdb8a3140 | ||
|
|
70850538d8 | ||
|
|
8c8d447562 | ||
|
|
964431d735 | ||
|
|
cd993de6e4 | ||
|
|
af8d5523cd | ||
|
|
05ce025546 | ||
|
|
4c6d3fc26a | ||
|
|
c364028d43 | ||
|
|
00e4e9c7ac | ||
|
|
25d9c9d164 | ||
|
|
01f6858091 | ||
|
|
bb76e36387 | ||
|
|
8d81f349f5 | ||
|
|
a76f3c050d | ||
|
|
54934396ad | ||
|
|
24dabf4a1c | ||
|
|
7dbca26bfe | ||
|
|
f4fd32687f | ||
|
|
bf8d154914 | ||
|
|
081ecb1f8a | ||
|
|
2716442697 | ||
|
|
fc66f5b18a | ||
|
|
9452774459 | ||
|
|
7342b145c2 | ||
|
|
5577ecbada | ||
|
|
0529dabd04 | ||
|
|
f104e50c42 | ||
|
|
d0f1a0b4b2 | ||
|
|
a6c3c71441 | ||
|
|
184ec05020 | ||
|
|
efb7a01783 | ||
|
|
a43c8f892d | ||
|
|
0955da65ba | ||
|
|
f0489b418f | ||
|
|
9ce5b02701 | ||
|
|
46d0c45c01 | ||
|
|
bf63091a0e | ||
|
|
5dc2a19220 | ||
|
|
dbc8f7e437 | ||
|
|
18b50e4eec | ||
|
|
c96ad9c168 | ||
|
|
73e55e95b7 | ||
|
|
87c8d71288 | ||
|
|
3f57a83129 | ||
|
|
0ab4dfe1c1 | ||
|
|
20a20c104e | ||
|
|
f07d062c0b | ||
|
|
16ada164ee | ||
|
|
5536838e3d | ||
|
|
ab688a979a | ||
|
|
6d17ac2265 | ||
|
|
2c5a380e0e | ||
|
|
eb4fb5573f | ||
|
|
d3122cd83a | ||
|
|
1ebe3cd1f9 | ||
|
|
0335d952a7 | ||
|
|
5ff597ffc9 | ||
|
|
f6e3222873 | ||
|
|
53bad9d442 | ||
|
|
f09b1a1d97 | ||
|
|
77cc0fd0c3 | ||
|
|
c34a75792a | ||
|
|
187bc9dbeb | ||
|
|
ca26a0ec46 | ||
|
|
ba370c5ce5 | ||
|
|
de88c69b84 | ||
|
|
a57262f8be | ||
|
|
d4b5e926db | ||
|
|
894b7c5a28 | ||
|
|
a4bf9ead8e | ||
|
|
e3fb29f198 | ||
|
|
84a4918a97 | ||
|
|
3e231fa0e1 | ||
|
|
50183182d9 | ||
|
|
b80586f90f | ||
|
|
bd6c848608 | ||
|
|
2f9e2b0143 | ||
|
|
f90ef1026a | ||
|
|
92bca174a6 | ||
|
|
ca2783a285 | ||
|
|
bd07e97064 | ||
|
|
d7523d99a6 | ||
|
|
978d604a47 | ||
|
|
b51f8e478e | ||
|
|
ba2b2d5bf5 | ||
|
|
762b9c8bf7 | ||
|
|
16d5161212 | ||
|
|
bf917a9d3e | ||
|
|
b7e91865f5 | ||
|
|
eba279bab5 | ||
|
|
ef02c7beb0 | ||
|
|
9e0f5a9d6f | ||
|
|
a3a1064763 | ||
|
|
d6c84e63e0 | ||
|
|
4cc92b94f9 | ||
|
|
ab4294ebb0 | ||
|
|
4cfd7e4fa2 | ||
|
|
19af7d8cbc | ||
|
|
5f25e63a9c | ||
|
|
ef0b3b85c0 | ||
|
|
9884903ddb | ||
|
|
1da15f110c | ||
|
|
74fc299694 | ||
|
|
041a375b62 | ||
|
|
bf52a675a0 | ||
|
|
9b0c91491c | ||
|
|
e599bf434c | ||
|
|
3d545fc617 | ||
|
|
b3523f341d | ||
|
|
fceee338dd | ||
|
|
fcf012a28f | ||
|
|
a925e70717 | ||
|
|
d6ddfc70ce | ||
|
|
cb8ac4e3b3 | ||
|
|
b2aa049ca8 | ||
|
|
c8a6f036db | ||
|
|
3c927dcdf2 | ||
|
|
f8eb24d3a0 | ||
|
|
ae96b67d79 | ||
|
|
7c89922109 | ||
|
|
49dce9c104 | ||
|
|
2edafee9d8 | ||
|
|
46eba34e68 | ||
|
|
e8e5fa3c36 | ||
|
|
0d775c50e5 | ||
|
|
8ceffbda86 | ||
|
|
8639161951 | ||
|
|
0e1802c411 | ||
|
|
ecf11d9e8d | ||
|
|
337c16358f | ||
|
|
d5e00c7553 | ||
|
|
ac142ca408 | ||
|
|
fa9eb56acf | ||
|
|
fb59aad228 | ||
|
|
0d4d95a8e1 | ||
|
|
3d2b354beb | ||
|
|
ec5912f6b2 | ||
|
|
307923d6e4 | ||
|
|
73f0d072b4 | ||
|
|
686dc160be | ||
|
|
69b8a6aa4f | ||
|
|
1b7b963da6 | ||
|
|
a22a3258e8 | ||
|
|
850ff7b0db | ||
|
|
43df944353 | ||
|
|
cfc37a8910 | ||
|
|
72dfb07364 | ||
|
|
4141dd437b | ||
|
|
1ef7fb3706 | ||
|
|
18cd29749d | ||
|
|
60f5e5ff1e | ||
|
|
605866bec6 | ||
|
|
e508707bc8 | ||
|
|
d47fda1798 | ||
|
|
0a978c8000 | ||
|
|
0f8c91e577 | ||
|
|
12cbd3abfc | ||
|
|
3df5d3029a | ||
|
|
bd727dd44f | ||
|
|
82807926d8 | ||
|
|
2c354f23d2 | ||
|
|
46d52d0b71 | ||
|
|
f077840883 | ||
|
|
962fc99515 | ||
|
|
385242bf06 | ||
|
|
e311c5a35f | ||
|
|
eab4f0399e | ||
|
|
e0840a22d2 | ||
|
|
6a72593b59 | ||
|
|
01c6d580dd | ||
|
|
f92eb8e28e | ||
|
|
f609811069 | ||
|
|
4f8ee891af | ||
|
|
8750caae30 | ||
|
|
8cae34483c | ||
|
|
01eafc518e | ||
|
|
7ec7dd01ea | ||
|
|
9dd93319bc | ||
|
|
50f7f0f22b | ||
|
|
64c5bf0b29 | ||
|
|
fb03bbba77 | ||
|
|
15610917f0 | ||
|
|
d1b614ea56 | ||
|
|
86b2d9f2f5 | ||
|
|
3286a25fb3 | ||
|
|
3becb42223 | ||
|
|
057e630f25 | ||
|
|
651673af34 | ||
|
|
ca0b5a60b9 | ||
|
|
ea4e824fd5 | ||
|
|
35da60e22f | ||
|
|
9cc32caff6 | ||
|
|
19986a8143 | ||
|
|
02823b0d20 | ||
|
|
cdf54c6267 | ||
|
|
e56ee666cf | ||
|
|
d20779bcc0 | ||
|
|
26f4586791 | ||
|
|
0a08f39ab7 | ||
|
|
35bbb56162 | ||
|
|
94e9304dbb | ||
|
|
e18f601790 | ||
|
|
4b832702e8 | ||
|
|
7417d26a8d | ||
|
|
f878e5a55e | ||
|
|
013e865d3c | ||
|
|
fbe9e5e69a | ||
|
|
8f717cf1e8 | ||
|
|
a32f0fa14e | ||
|
|
1ecf45210f | ||
|
|
e0d07e45ac | ||
|
|
2b7aabe159 | ||
|
|
5dc2d007a5 | ||
|
|
495dda1670 | ||
|
|
54684cf65f | ||
|
|
d8aec93c7a | ||
|
|
78768afaea | ||
|
|
3aafe94b7c | ||
|
|
092bb008a8 | ||
|
|
8626ea8406 | ||
|
|
433c8806a1 | ||
|
|
173956740a | ||
|
|
92c043fafe | ||
|
|
5a6f516b86 | ||
|
|
a451699b27 | ||
|
|
2edc6009b2 | ||
|
|
711fc32a52 | ||
|
|
072a844d3f | ||
|
|
805a33dba0 | ||
|
|
b5cbb3e538 | ||
|
|
37560e56e7 | ||
|
|
60cb664bf1 | ||
|
|
be0afee9e6 | ||
|
|
961ccaffa3 | ||
|
|
c7671fe952 | ||
|
|
de02a2fe88 | ||
|
|
0dd4fdeaf8 | ||
|
|
9add268308 | ||
|
|
d6ecba828b | ||
|
|
a610a5f15e | ||
|
|
8ab9b1c445 | ||
|
|
1f1b73999d | ||
|
|
c7a7f0b7ef | ||
|
|
e7271794da | ||
|
|
73375214cd | ||
|
|
d6f6a3e518 | ||
|
|
a4913b9e9a | ||
|
|
1572ab3b17 | ||
|
|
d90205dc1a | ||
|
|
8775c50afd | ||
|
|
1e795c875f | ||
|
|
dd6840a875 | ||
|
|
83d9ef4a3b | ||
|
|
26742ae7c5 | ||
|
|
e2ecc27d64 | ||
|
|
f6b20aae60 | ||
|
|
cabc71d163 | ||
|
|
c081916609 | ||
|
|
b3b53d6a9f | ||
|
|
854f199523 | ||
|
|
a370bbd4f9 | ||
|
|
90424fb4ac | ||
|
|
cd10dc07ac | ||
|
|
f9eecd23e5 | ||
|
|
e491929a29 | ||
|
|
66d7e5dd75 | ||
|
|
604abc39a1 | ||
|
|
3d36fdb9bd | ||
|
|
3d7c406b8a | ||
|
|
67ec2c49db | ||
|
|
eab5c1ca45 | ||
|
|
c93bc5fc3e | ||
|
|
f846d149d8 | ||
|
|
c05bcaaec1 | ||
|
|
87841bdce2 | ||
|
|
e55589f623 | ||
|
|
540ae1c8f7 | ||
|
|
d1aad16157 | ||
|
|
2bc9fcde25 | ||
|
|
011f359ddd | ||
|
|
84d986e115 | ||
|
|
7953ad63cf | ||
|
|
46fa3a465d | ||
|
|
746cf31373 | ||
|
|
0d0e105a29 | ||
|
|
d872af2666 | ||
|
|
e939b9e0d2 | ||
|
|
4cc4c285f9 | ||
|
|
9c8dfa5439 | ||
|
|
c9c4ec7361 | ||
|
|
2fed568403 | ||
|
|
28d41d3e35 | ||
|
|
beb7331bbf | ||
|
|
fd5999a445 | ||
|
|
f60bfbbb69 | ||
|
|
7b29f575bd | ||
|
|
a34a85be20 | ||
|
|
326c4dfdb2 | ||
|
|
b664fbc4ec | ||
|
|
923828681a | ||
|
|
ac0c8734d3 | ||
|
|
34312fad32 | ||
|
|
9eaa4d4a11 | ||
|
|
1418ca55b3 | ||
|
|
e6cdc034ff | ||
|
|
eacc01c8b4 | ||
|
|
0089ab5e0f | ||
|
|
cb8be9294b | ||
|
|
bece0abd28 | ||
|
|
f453ddb19f | ||
|
|
c4f8a4c9af | ||
|
|
ea34375fdf | ||
|
|
40df388751 | ||
|
|
df643d8e98 | ||
|
|
e8ffa2f12e | ||
|
|
22314bbd3f | ||
|
|
42180ec13b | ||
|
|
9f38a56d68 | ||
|
|
ab929caeb6 | ||
|
|
91d0a5ac63 | ||
|
|
5fe1ebd56e | ||
|
|
7636780212 | ||
|
|
6dc170f5e7 | ||
|
|
11bad68c1d | ||
|
|
b8b995a9e7 | ||
|
|
223505d347 | ||
|
|
4077a4e143 | ||
|
|
ad27dc407d | ||
|
|
3eddead2a0 | ||
|
|
0b2078a009 | ||
|
|
32b8bb803d | ||
|
|
5524737ac3 | ||
|
|
18eb122fee | ||
|
|
16d97275eb | ||
|
|
80c1c9076c | ||
|
|
b895946be8 | ||
|
|
95f86e6723 | ||
|
|
4e578b6bf7 | ||
|
|
5728927af7 | ||
|
|
d1b6caabb7 | ||
|
|
89f7c5f76c | ||
|
|
adf677f63c | ||
|
|
56fe969fe4 | ||
|
|
71ab95deda | ||
|
|
436ffbd82c | ||
|
|
896397caf5 | ||
|
|
c864e21226 | ||
|
|
89c719e3b8 | ||
|
|
1440dd8d0c | ||
|
|
7bc2c4843a | ||
|
|
fcf9ade166 | ||
|
|
a082a84b28 | ||
|
|
b42d2c7122 | ||
|
|
d3d4292c37 | ||
|
|
a1964b2f75 | ||
|
|
dfd52f9478 | ||
|
|
438d4d7007 | ||
|
|
263e893fc1 | ||
|
|
d575121231 | ||
|
|
93adbba412 | ||
|
|
2834e8475d | ||
|
|
08111104f6 | ||
|
|
7e0a93d56c | ||
|
|
13dabc3d3b | ||
|
|
fc7bc1877f | ||
|
|
05335fd1cc | ||
|
|
62015490eb | ||
|
|
76e1e38c3d | ||
|
|
2077b82c0e | ||
|
|
b5f82f6ce4 | ||
|
|
4f4258f110 | ||
|
|
15dd919505 | ||
|
|
17a368b503 | ||
|
|
403cea91eb | ||
|
|
2f486fb1de | ||
|
|
ed8d898ba6 | ||
|
|
329e4afd52 | ||
|
|
94137ca96c | ||
|
|
6206f95440 | ||
|
|
4048df535b | ||
|
|
0ace233dfb | ||
|
|
6da2c3734c | ||
|
|
08090fd1db | ||
|
|
502ff0b6c3 | ||
|
|
08c4ac4ceb | ||
|
|
1a0308d05b | ||
|
|
68df13b365 | ||
|
|
52628c713c | ||
|
|
06f0668d52 | ||
|
|
1d519e3c8a | ||
|
|
cc443e251f | ||
|
|
4afaddd3ca | ||
|
|
52fd8a25ab | ||
|
|
ffffea0710 | ||
|
|
5308383441 | ||
|
|
9de79de256 | ||
|
|
eaec70679d | ||
|
|
a6e289ed5d | ||
|
|
7bce8527db | ||
|
|
c288efc270 | ||
|
|
3f9087435f | ||
|
|
3bb44b58a4 | ||
|
|
e75f8922cb | ||
|
|
9258b8aaf6 | ||
|
|
a6ecd6411b | ||
|
|
a7143e4278 | ||
|
|
d98ecbfcc5 | ||
|
|
6c70561bf2 | ||
|
|
0049d5d7bd | ||
|
|
bcd2602ac2 | ||
|
|
11e506fe46 | ||
|
|
6005ce087f | ||
|
|
1b692179e9 | ||
|
|
cd6a2928b2 | ||
|
|
30972c435d | ||
|
|
cf0922ddb7 | ||
|
|
4d884015db | ||
|
|
9529d73fac | ||
|
|
4a57bc3f99 | ||
|
|
6b245369fa | ||
|
|
2c50b240bf | ||
|
|
5a94de2769 | ||
|
|
aa3ff50c7e | ||
|
|
06cccee647 | ||
|
|
7949e3849e | ||
|
|
0911eb1d16 | ||
|
|
6abe5e3cc6 | ||
|
|
8e551f64f7 | ||
|
|
9e1d856ec4 | ||
|
|
f3bfc8527b | ||
|
|
673739d6e3 | ||
|
|
cd207440a3 | ||
|
|
10b852cdbc | ||
|
|
3723001194 | ||
|
|
e02ac39270 | ||
|
|
fcc76be714 | ||
|
|
cf6bd84be7 | ||
|
|
d55490a532 | ||
|
|
5df0b10ca2 | ||
|
|
bde3e64e4b | ||
|
|
d49fe039a7 | ||
|
|
71177d2723 | ||
|
|
d3b3448c3d | ||
|
|
c8d81c40ba | ||
|
|
d2b20d420b | ||
|
|
35cd4d5081 | ||
|
|
6712ce0c20 | ||
|
|
c7ded21be4 | ||
|
|
e37449ce1e | ||
|
|
567e554cb7 | ||
|
|
c14ca04304 | ||
|
|
646db16bc4 | ||
|
|
9789d60701 | ||
|
|
4cf60228cc | ||
|
|
4c8d3cd049 | ||
|
|
ecb37a1f85 | ||
|
|
128081d9b1 | ||
|
|
857002490e | ||
|
|
6436f0e9a1 | ||
|
|
76b161afe8 | ||
|
|
a6a04c3bb2 | ||
|
|
0976891947 | ||
|
|
a75c5317c8 | ||
|
|
ab367b3061 | ||
|
|
e6dd9256eb | ||
|
|
fcd64a1eaa | ||
|
|
cc34b69e64 | ||
|
|
72abb83ca0 | ||
|
|
9a2cfc9e3f | ||
|
|
29ad53b019 | ||
|
|
0c92a9691e | ||
|
|
3fa4cbb720 | ||
|
|
71998eff7b | ||
|
|
6df44201f3 | ||
|
|
2179b9ebd1 | ||
|
|
9fbab08a53 | ||
|
|
5599b5a076 | ||
|
|
92e1d985e0 | ||
|
|
98009bfd2f | ||
|
|
ece076ed98 | ||
|
|
583f68cff5 | ||
|
|
4a2e4d15cd | ||
|
|
027a28b299 | ||
|
|
a11a32e606 | ||
|
|
66ef3c181a | ||
|
|
2680155022 | ||
|
|
bacc8f5551 | ||
|
|
f00cde21df | ||
|
|
ef2e7aaad7 | ||
|
|
0f197cddbf | ||
|
|
9c2284c12b | ||
|
|
43da265762 | ||
|
|
d08e4725b9 | ||
|
|
234cd80c4b | ||
|
|
df48067467 | ||
|
|
92e048b405 | ||
|
|
d8709267ea | ||
|
|
1e47d48313 | ||
|
|
d534a2b0e7 | ||
|
|
d6bfe478af | ||
|
|
b52c848d2e | ||
|
|
5e82f74005 | ||
|
|
1c17a78b12 | ||
|
|
a038d5f300 | ||
|
|
be11f452bb | ||
|
|
ee7495206a | ||
|
|
c92bfd44b5 | ||
|
|
feaeceea99 | ||
|
|
913c5a35b9 | ||
|
|
6c26d16e58 | ||
|
|
2a3949e206 | ||
|
|
4cada4b382 | ||
|
|
8ab35186bb | ||
|
|
a96ceb5d84 | ||
|
|
189ae6f377 | ||
|
|
9b8d55318f | ||
|
|
456ab6fe24 | ||
|
|
74fb158cc7 | ||
|
|
baebf4377f | ||
|
|
acc4e45791 | ||
|
|
08abe0d708 | ||
|
|
201fa05186 | ||
|
|
2e0a4be627 | ||
|
|
e2e8ffa527 | ||
|
|
1a825be613 | ||
|
|
2a8a08deae | ||
|
|
4b87cc7a86 | ||
|
|
7778956007 | ||
|
|
ab4551a7a9 | ||
|
|
ed4697f805 | ||
|
|
c951615a97 | ||
|
|
92634e8acb | ||
|
|
a5aa905bc8 | ||
|
|
7ecefc5185 | ||
|
|
24d4ab5163 | ||
|
|
3c8c7525f3 | ||
|
|
fb678b5893 | ||
|
|
88b7c36793 | ||
|
|
1c36af7e7e | ||
|
|
b4d8c82055 | ||
|
|
7f4e192a64 | ||
|
|
5e8f39c61d | ||
|
|
97cacc08a1 | ||
|
|
f420efe32d | ||
|
|
f422662176 | ||
|
|
37f4a88535 | ||
|
|
c86845fbf2 | ||
|
|
38caa3d059 | ||
|
|
9e8f02288d | ||
|
|
dcfb4c8cf2 | ||
|
|
7ab8007ec7 | ||
|
|
1e6656b5cd | ||
|
|
928c03f347 | ||
|
|
9b9c0429a6 | ||
|
|
79d8736bca | ||
|
|
979388198a | ||
|
|
5a19ea285b | ||
|
|
564898e01f | ||
|
|
48ac0e4efc | ||
|
|
dfb682d010 | ||
|
|
ec49f3d6b0 | ||
|
|
3d2f72d2d4 | ||
|
|
f2d57875e5 | ||
|
|
36779b6118 | ||
|
|
96749aa89b | ||
|
|
134a16a925 | ||
|
|
6122bf5820 | ||
|
|
7dda6d817a | ||
|
|
aa5c7e83c6 | ||
|
|
34cb4d81e6 | ||
|
|
7e3c3f76fc | ||
|
|
f154e24111 | ||
|
|
1cf5f6e455 | ||
|
|
c4c9973395 | ||
|
|
788cee45a2 | ||
|
|
7031d84594 | ||
|
|
44e31ac1b7 | ||
|
|
a01ef34bb5 | ||
|
|
8cef572e78 | ||
|
|
8ea0b2a95d | ||
|
|
eb468ea63f | ||
|
|
b64bb17073 | ||
|
|
a153858ff3 | ||
|
|
ee96cfe4bd | ||
|
|
9baec9e974 | ||
|
|
18d1f17807 | ||
|
|
a084cd421b | ||
|
|
7141b05e4a | ||
|
|
4b935556a4 | ||
|
|
8cdc4c7748 | ||
|
|
8ac6976f63 | ||
|
|
2f56bc0b56 | ||
|
|
538d634a6f | ||
|
|
6e503468ab | ||
|
|
d1fed3b7f4 | ||
|
|
24a7b5f77d | ||
|
|
8f23f59aa8 | ||
|
|
69ca8d88d5 | ||
|
|
d0d7424447 | ||
|
|
f14500a40a | ||
|
|
c85623f662 | ||
|
|
102d368aac | ||
|
|
31793cf030 | ||
|
|
cccc4dd9d9 | ||
|
|
ee9a3ce840 | ||
|
|
90711f34bc | ||
|
|
d747bc4542 | ||
|
|
cc0f4b1f61 | ||
|
|
3ea3ba1162 | ||
|
|
fb0c3ba57d | ||
|
|
a5b183fd88 | ||
|
|
f49414b477 | ||
|
|
212b9a8d78 | ||
|
|
4fc776ddd4 | ||
|
|
94adaa61a6 | ||
|
|
dd14687991 | ||
|
|
cac9c03279 | ||
|
|
eacb503fab | ||
|
|
9374f6ba4b | ||
|
|
761ed0f891 | ||
|
|
8e94683576 | ||
|
|
4b8a4ca8a1 | ||
|
|
b22db7a3f7 | ||
|
|
fc5714ec3d | ||
|
|
fc6865456e | ||
|
|
74092ed4a6 | ||
|
|
9d8c13f43a | ||
|
|
7005e120c5 | ||
|
|
09bb1a1cc1 | ||
|
|
8266953887 | ||
|
|
a43845a5c8 | ||
|
|
ff19f6d64a | ||
|
|
f3a49c39c1 | ||
|
|
feda5b3fcf | ||
|
|
da3beb71b3 | ||
|
|
e4448fe4d6 | ||
|
|
0ffbda23db | ||
|
|
03f5952c17 | ||
|
|
616bb45333 | ||
|
|
900d581c0d | ||
|
|
9009f98a7e | ||
|
|
4930d592e1 | ||
|
|
0e9c9c5753 | ||
|
|
3e3715ab76 | ||
|
|
cff505e565 | ||
|
|
60e5957c73 | ||
|
|
b045aa2450 | ||
|
|
1b16d3277f | ||
|
|
c1173c4af1 | ||
|
|
8353b032dc | ||
|
|
6cd27652c7 | ||
|
|
11c72f8996 | ||
|
|
fc00dcd20e | ||
|
|
d0458936bd | ||
|
|
9455ba8f78 | ||
|
|
c3b75ffa08 | ||
|
|
939427aa39 | ||
|
|
37c77d22d9 | ||
|
|
e344379ba8 | ||
|
|
2017704bf5 | ||
|
|
ccbb93266d | ||
|
|
0fc7641f61 | ||
|
|
307d82bb1f | ||
|
|
f2a159b735 | ||
|
|
bb30011c2a | ||
|
|
5742787a57 | ||
|
|
c5bc219836 | ||
|
|
16dafaab81 | ||
|
|
2ab5020e50 | ||
|
|
0742e6c64c | ||
|
|
a6f1ac9904 | ||
|
|
7dbb26b988 | ||
|
|
ddeb4dea6e | ||
|
|
5cbff153be | ||
|
|
83705cc4dd | ||
|
|
457d9cd01f | ||
|
|
a5b444d239 | ||
|
|
5b3c531054 | ||
|
|
6171cfa069 | ||
|
|
e21292cf07 | ||
|
|
f21461dc85 | ||
|
|
e12cc0f05e | ||
|
|
648ef006cc | ||
|
|
3ce7d717ca | ||
|
|
db3e007a12 | ||
|
|
439902d3eb | ||
|
|
7c7c475a16 | ||
|
|
8a4ba2566e | ||
|
|
0e2551ed09 | ||
|
|
c62a7ec9f9 | ||
|
|
04d1c667cb | ||
|
|
f19970b92e | ||
|
|
9c896e0e23 | ||
|
|
9324381578 | ||
|
|
b6731071a4 | ||
|
|
75a2b9250e | ||
|
|
c899d4a62d | ||
|
|
1c00040a96 | ||
|
|
baf3907be4 | ||
|
|
d5c71694a2 | ||
|
|
b23cf69a81 | ||
|
|
6929af625b | ||
|
|
7af82a6ece | ||
|
|
1abc8fc935 | ||
|
|
bea0c82e2d | ||
|
|
7ae8685a87 | ||
|
|
8e8149a684 | ||
|
|
c06ccfd33e | ||
|
|
c9748225ea | ||
|
|
41d4ece529 | ||
|
|
2d1ff5dc42 | ||
|
|
14f41e4752 | ||
|
|
eb3059fdc9 | ||
|
|
d74400fc80 | ||
|
|
7e8d8ab717 | ||
|
|
6125670757 | ||
|
|
5abd0f871c | ||
|
|
15323f8f51 | ||
|
|
78f2cbe010 | ||
|
|
09bafd825c | ||
|
|
80dac680ce | ||
|
|
ac2eac17db | ||
|
|
96a4ab0146 | ||
|
|
d558d2da16 | ||
|
|
cbe7849de8 | ||
|
|
2bd04da04b | ||
|
|
05c274e9c5 | ||
|
|
2f3cf8ec05 | ||
|
|
cb165c9128 | ||
|
|
9deaed2fa0 | ||
|
|
363bebafb2 | ||
|
|
c5387fb459 | ||
|
|
59b369e7e9 | ||
|
|
3036f64d4e | ||
|
|
d9e45ea941 | ||
|
|
77b3acd6f0 | ||
|
|
ac71623bfd | ||
|
|
71be36fce3 | ||
|
|
fc4e00380a | ||
|
|
f192adef45 | ||
|
|
875e161526 | ||
|
|
5d1a7374cb | ||
|
|
c1c611adb6 | ||
|
|
d590571c6e | ||
|
|
09747e76dd | ||
|
|
bbfbcf7729 | ||
|
|
409386a9b4 | ||
|
|
6f1d725258 | ||
|
|
d7f68194b9 | ||
|
|
c62a03b6ce | ||
|
|
1d71b3dfde | ||
|
|
ee2eefd2fc | ||
|
|
cfdd1b597d | ||
|
|
fa42fa983d | ||
|
|
a7d817f1b2 | ||
|
|
707ed29702 | ||
|
|
a0498d61ff | ||
|
|
c25139f312 | ||
|
|
9761a3ef0e | ||
|
|
fa280e433a | ||
|
|
832c0e3ca0 | ||
|
|
37f31eb280 | ||
|
|
990835e9bc | ||
|
|
96ad21eddc | ||
|
|
807d71299a | ||
|
|
f07b5a8970 | ||
|
|
db56ab8962 | ||
|
|
1a2e661391 | ||
|
|
f6825bb786 | ||
|
|
d3f4dcc204 | ||
|
|
398e4c6e9a | ||
|
|
c818d78a6d | ||
|
|
b712498d62 | ||
|
|
1e48b1d49a | ||
|
|
bfcdc90db9 | ||
|
|
bba1e4c644 | ||
|
|
f8e5bc9602 | ||
|
|
e711cd0bfc | ||
|
|
9947fe2c31 | ||
|
|
6b7b697d41 | ||
|
|
2a9feb5277 | ||
|
|
ce7fc92eb0 | ||
|
|
dd70941a22 | ||
|
|
c008aacc85 | ||
|
|
6cf3dff26c | ||
|
|
91b96c3a41 | ||
|
|
d01ec750bb | ||
|
|
7153e5b75c | ||
|
|
6317c6ec63 | ||
|
|
d6ece94578 | ||
|
|
80d49d2c77 | ||
|
|
5c11ed0654 | ||
|
|
31b0d87fd2 | ||
|
|
7d9bf27975 | ||
|
|
3e5f32aee8 | ||
|
|
360b45bac6 | ||
|
|
966b16c1cf | ||
|
|
60aed98919 | ||
|
|
0dd2e848b4 | ||
|
|
ce1c49d909 | ||
|
|
54614de30f | ||
|
|
d8b7206eee | ||
|
|
167c632ad1 | ||
|
|
1d675d5b81 | ||
|
|
6cfac578bc | ||
|
|
58e00e580b | ||
|
|
6019c49f41 | ||
|
|
751b1c721c | ||
|
|
6cc270827f | ||
|
|
3156c9e73e | ||
|
|
583b68415d | ||
|
|
313036be9c | ||
|
|
4a18a37617 | ||
|
|
b574877335 | ||
|
|
4d7a3b66cd | ||
|
|
0c9a039a82 | ||
|
|
5038ea893d | ||
|
|
6c0e721db7 | ||
|
|
f6af14551c | ||
|
|
b06d0d9e3f | ||
|
|
f13ffe0c99 | ||
|
|
78c5883e91 | ||
|
|
1df679cbb5 | ||
|
|
059c72dcb6 | ||
|
|
96972c5529 | ||
|
|
cad5927150 | ||
|
|
abb71e45e8 | ||
|
|
f14515827e | ||
|
|
2c4e86821e | ||
|
|
2a7274d50a | ||
|
|
8746d26a82 | ||
|
|
65d94c9f4d | ||
|
|
a8598e9281 | ||
|
|
49f8bbf782 | ||
|
|
f3d5ecccf3 | ||
|
|
5083a3a96e | ||
|
|
58dda416cd | ||
|
|
b78bf21574 | ||
|
|
e1ba85dcea | ||
|
|
a6dc082460 | ||
|
|
13aa6f49ba | ||
|
|
0104470603 | ||
|
|
924eb693e1 | ||
|
|
06d7e8100a | ||
|
|
30672d27a5 | ||
|
|
8c8cd1daea | ||
|
|
104662df74 | ||
|
|
5df5af7e39 | ||
|
|
376b72b24c | ||
|
|
7a5992de1b | ||
|
|
bbbfc2b0a5 | ||
|
|
98ae72f8cf | ||
|
|
b6e029258a | ||
|
|
72e6c2608a | ||
|
|
844fc977c6 | ||
|
|
26ab3b2f22 | ||
|
|
e1e05be45a | ||
|
|
e77fbf2fdd | ||
|
|
ba6e3873a7 | ||
|
|
3ecfacf38d | ||
|
|
f84926ebb5 | ||
|
|
6d6edca0bf | ||
|
|
02028551f9 | ||
|
|
9d3a58c26e | ||
|
|
e8b63afa5a | ||
|
|
d20b26073e | ||
|
|
a4c541aa1b | ||
|
|
9951deb10b | ||
|
|
b8f35ca672 | ||
|
|
a9cbba31ad | ||
|
|
0798935139 | ||
|
|
965f4a8d85 | ||
|
|
8ef2deb62c | ||
|
|
8146fdd653 | ||
|
|
bd6ff6873b | ||
|
|
98018bae27 | ||
|
|
5ec9819ec4 | ||
|
|
8a260c5cfe | ||
|
|
808af30ef7 | ||
|
|
b7d4350c7a | ||
|
|
d5694bdde6 | ||
|
|
53cefe184b | ||
|
|
dd10c5a407 | ||
|
|
33608a7486 | ||
|
|
860d4bb5cc | ||
|
|
05d98abd70 | ||
|
|
5f138a5f52 | ||
|
|
3307967d9c | ||
|
|
d941c849c9 | ||
|
|
f2d5f424ed | ||
|
|
743469a551 | ||
|
|
b4300e2d32 | ||
|
|
3c01f43191 | ||
|
|
1585c1d1cb | ||
|
|
4b4c1cd8dc | ||
|
|
fba6edd55a | ||
|
|
e805aff9d8 | ||
|
|
f624cd1d09 | ||
|
|
4ae6cb0553 | ||
|
|
157f36432e | ||
|
|
ccc9ed36a7 | ||
|
|
7df652778c | ||
|
|
9b94413626 | ||
|
|
45a2f4d420 | ||
|
|
b3d42c8c24 | ||
|
|
675cfb385c | ||
|
|
00e0f9c5b8 | ||
|
|
cc3abcb8df | ||
|
|
674483a7da | ||
|
|
e3458daa71 | ||
|
|
d1456dcb29 | ||
|
|
eb4453d3f4 | ||
|
|
d5d91dfb35 | ||
|
|
ce8c561b26 | ||
|
|
89d5534ff4 | ||
|
|
068e1d2a72 | ||
|
|
590a92c99a | ||
|
|
cad3b941af | ||
|
|
ba4eff5f45 | ||
|
|
b5cabc6af0 | ||
|
|
63e91c29bc | ||
|
|
16da52b189 | ||
|
|
62e5a81d22 | ||
|
|
586215751a | ||
|
|
0a5537b912 | ||
|
|
31655253f1 | ||
|
|
04f3f3ad86 | ||
|
|
04bad20975 | ||
|
|
08f4f92366 | ||
|
|
fa26e5ae55 | ||
|
|
1104c62232 | ||
|
|
6c51cfead1 | ||
|
|
444d88fdc9 | ||
|
|
38f7b8f89b | ||
|
|
9cb3211ea0 | ||
|
|
47bb6e4de9 | ||
|
|
0c9168f853 | ||
|
|
e80aa77efe | ||
|
|
d791cf7c0a | ||
|
|
2f5e198ff9 | ||
|
|
0cb041552e | ||
|
|
9d3753d690 | ||
|
|
3921dc26f0 | ||
|
|
f5ceb2c3a9 | ||
|
|
e657fd7468 | ||
|
|
54ee755134 | ||
|
|
dba0fd3f76 | ||
|
|
2299fe1d1c | ||
|
|
870ec26ca9 | ||
|
|
cb6a601d3c | ||
|
|
12926519b1 | ||
|
|
b85407b1d8 | ||
|
|
1dcec7514c | ||
|
|
e1ee40d3b2 | ||
|
|
0a18758dec | ||
|
|
caf134a6bb | ||
|
|
d37f8e2af2 | ||
|
|
b55e13bbb2 | ||
|
|
93464fcbaa | ||
|
|
14179a3fcd | ||
|
|
4fbd84febf | ||
|
|
d92ba11967 | ||
|
|
eb2a6c9039 | ||
|
|
e092f8ba41 | ||
|
|
7cdb9f92de | ||
|
|
5d28788358 | ||
|
|
0928bd8321 | ||
|
|
2d1c194f35 | ||
|
|
ddf9a5a70f | ||
|
|
16517b8214 | ||
|
|
95f885d0ef | ||
|
|
a1211c9ba2 | ||
|
|
2ba4cf1228 | ||
|
|
202f847cc2 | ||
|
|
949c298027 | ||
|
|
3993ff0c28 | ||
|
|
a956e9ae1d | ||
|
|
7c14342c7e | ||
|
|
e8f455134d | ||
|
|
152934ca17 | ||
|
|
53593466d6 | ||
|
|
9e9ba6d02b | ||
|
|
6406425927 | ||
|
|
8f091c6a3c | ||
|
|
c10023156c | ||
|
|
b6bf970020 | ||
|
|
4fe1d3bf02 | ||
|
|
02d5ef3dcb | ||
|
|
cbd617a01b | ||
|
|
0bfaab669a | ||
|
|
b950838175 | ||
|
|
4910905b1b | ||
|
|
97b813e58a | ||
|
|
9b32ac9d73 | ||
|
|
8a3292a975 | ||
|
|
a64be39334 | ||
|
|
a8e52e0adc | ||
|
|
4a9041ba1d | ||
|
|
b2e44340b6 | ||
|
|
018a20b91f | ||
|
|
3a7c4d3100 | ||
|
|
92dbc493bb | ||
|
|
97f0879742 | ||
|
|
2f45fc2247 | ||
|
|
0c945711d8 | ||
|
|
186585494d | ||
|
|
d73e31a17f | ||
|
|
2be182e4f8 | ||
|
|
50a0e79ba7 | ||
|
|
24e83a3f6c | ||
|
|
8098056fce | ||
|
|
ef25f25e48 | ||
|
|
c961648083 | ||
|
|
2254b8d30a | ||
|
|
3464e732c7 | ||
|
|
f422074c13 | ||
|
|
c071b5551d | ||
|
|
5c99b758da | ||
|
|
48ba0cd4dc | ||
|
|
b054b6bf64 | ||
|
|
0ea8bdef09 | ||
|
|
6c6f07c16d | ||
|
|
d2e53cd125 | ||
|
|
87f639002e | ||
|
|
f6b0243546 | ||
|
|
518d495970 | ||
|
|
1c76d5c51a | ||
|
|
ff0def8eb8 | ||
|
|
db9b95e145 | ||
|
|
1bf42197d4 | ||
|
|
664294518c | ||
|
|
1a6af8b07f | ||
|
|
b7a5ae3526 | ||
|
|
458d3b29c3 | ||
|
|
3ffb0a6c54 | ||
|
|
fe1619b6e0 | ||
|
|
a51583e455 | ||
|
|
925a8337ba | ||
|
|
84cf232360 | ||
|
|
ad8654b5df | ||
|
|
0e63fb9bee | ||
|
|
cb00a45b77 | ||
|
|
0f623f8256 | ||
|
|
ff7b6b33bd | ||
|
|
dd68863afc | ||
|
|
e992af1a96 | ||
|
|
704715e70a | ||
|
|
d2576d583b |
-12
@@ -1,12 +0,0 @@
|
||||
.project
|
||||
.vscode
|
||||
/phpinfo.php
|
||||
resources/config.php
|
||||
secure/mailto.bat
|
||||
secure/*.db
|
||||
secure/*.sqlite
|
||||
.DS_Store
|
||||
|
||||
*.php~
|
||||
|
||||
app/yealink/resources/firmware/*
|
||||
@@ -1,49 +1,26 @@
|
||||
RewriteEngine On
|
||||
RewriteEngine On
|
||||
|
||||
#REST api
|
||||
RewriteRule ^(.*)/api/(.*)$ $1/api/index.php?rewrite_uri=$2 [QSA]
|
||||
|
||||
# $mac or $mac.cfg/xml
|
||||
RewriteRule ^.*([A-Fa-f0-9]{12})(?:\.xml|\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
|
||||
|
||||
# $m:a:c or $m:a:c.cfg/xml
|
||||
RewriteRule ^.*((?:[A-Fa-f0-9]{2}[:-]){5}[A-Fa-f0-9]{2})(?:\.xml|\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
|
||||
|
||||
# kt*-$mac.xml
|
||||
RewriteRule ^kt.*?-([A-Fa-f0-9]{12})\.xml$ app/provision/index.php?mac=$1 [QSA]
|
||||
|
||||
# cfg-$mac.xml
|
||||
RewriteRule ^.*cfg([A-Fa-f0-9]{12})\.xml$ app/provision/index.php?mac=$1 [QSA]
|
||||
RewriteRule ^([A-Fa-f0-9]{12})(\.(xml|cfg))?$ app/provision/index.php?mac=$1 [QSA]
|
||||
RewriteRule ^([A-Fa-f0-9]{2}[:-][A-Fa-f0-9]{2}[:-][A-Fa-f0-9]{2}[:-][A-Fa-f0-9]{2}[:-][A-Fa-f0-9]{2}[:-][A-Fa-f0-9]{2}[:-])(\.(xml|cfg))?$ app/provision/index.php?mac=$1 [QSA]
|
||||
RewriteRule ^(kt.*?-)([A-Fa-f0-9]{12})(\.(xml))$ app/provision/index.php?mac=$2 [QSA]
|
||||
RewriteRule ^(cfg)([A-Fa-f0-9]{12})(\.(xml))$ app/provision/index.php?mac=$2 [QSA]
|
||||
|
||||
#Snom m3
|
||||
RewriteRule ^m3/settings/([A-Fa-f0-9]{12})(?:\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
|
||||
RewriteRule ^(m3/settings/)([A-Fa-f0-9]{12})(\.(cfg))?$ app/provision/index.php?mac=$2 [QSA]
|
||||
|
||||
#Grandstream
|
||||
RewriteRule ^.*/cfg([A-Fa-f0-9]{12})(?:\.xml|\.cfg)?$ app/provision/?mac=$1 [QSA]
|
||||
RewriteRule ^.*/provision/cfg([A-Fa-f0-9]{12})(\.(xml|cfg))?$ app/provision/?mac=$1 [QSA]
|
||||
|
||||
#Yealink and Polycom
|
||||
RewriteRule ^.*/([A-Fa-f0-9]{12})(?:\.xml|\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
|
||||
#Yealink
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})(\.(xml|cfg))?$ app/provision/index.php?mac=$1 [QSA]
|
||||
|
||||
#Polycom
|
||||
RewriteRule ^provision/000000000000.cfg$ app/provision/?mac=$1&file={$mac}.cfg [QSA]
|
||||
RewriteRule ^provision/features.cfg$ app/provision/?mac=$1&file=features.cfg [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-sip.cfg$ app/provision/?mac=$1&file=sip.cfg [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-phone.cfg$ app/provision/?mac=$1 [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-registration.cfg$ app/provision/?mac=$1&file={$mac}-registration.cfg [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-site.cfg$ app/provision/?mac=$1&file=site.cfg [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-web.cfg$ app/provision/?mac=$1&file=web.cfg [QSA]
|
||||
RewriteRule ^provision/([A-Fa-f0-9]{12})-directory.xml$ app/provision/?mac=$1&file=directory.xml [QSA]
|
||||
|
||||
#Escene
|
||||
RewriteRule ^.*/([0-9]{1,11})_Extern.xml$ app/provision/?ext=$1&file={$mac}_extern.xml [QSA]
|
||||
RewriteRule ^.*/([0-9]{1,11})_Phonebook.xml$ app/provision/?ext=$1&file={$mac}_phonebook.xml [QSA]
|
||||
|
||||
#Aastra
|
||||
RewriteRule ^provision/aastra.cfg$ app/provision/index.php?file=aastra.cfg [QSA]
|
||||
RewriteRule ^.*/provision/000000000000.cfg$ app/provison/?mac=$1&file={$mac}.cfg [QSA]
|
||||
RewriteRule ^.*/provision/features.cfg$ app/provision/?mac=$1&file=features.cfg [QSA]
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})-sip.cfg$ app/provision/?mac=$1&file=sip.cfg [QSA]
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})-phone.cfg$ app/provision/?mac=$1 [QSA]
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})-registration.cfg$ app/provision/?mac=$1&file={$mac}-registration.cfg [QSA]
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})-site.cfg$ app/provision/?mac=$1&file=site.cfg [QSA]
|
||||
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})-web.cfg$ app/provision/?mac=$1&file=web.cfg [QSA]
|
||||
|
||||
Options -Indexes
|
||||
|
||||
#PHP settings
|
||||
php_value upload_max_filesize 25M
|
||||
php_value post_max_size 35M
|
||||
php_value memory_limit 512M
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>fusionbpx</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,92 @@
|
||||
What is [FusionPBX](http://fusionpbx.com/)?
|
||||
--------------------------------------
|
||||
[FusionPBX](http://fusionpbx.com/) is a flexible, customizable administration web GUI that takes [FreeSwitch](http://freeswitch.org) and converts it into a single- or multi-tenant gateway or PBX system out of the box.
|
||||
It can be run on any operating system and x86-based hardware of your choice.
|
||||
It provides the functionality your business needs and brings corporate-level phone system features to small, medium, and large businesses. Read more at [FusionPBX](http://fusionpbx.com/).
|
||||
|
||||
In addition to providing all of the usual PBX functionality, FusionPBX allows you to configure:
|
||||
|
||||
- Multi-Tenancy
|
||||
- Unlimited Extensions
|
||||
- Voicemail-to-Email
|
||||
- Music on Hold
|
||||
- Call Parking
|
||||
- Automatic Call Distribution
|
||||
- Interactive Voice Response
|
||||
- Ring Groups
|
||||
- Find Me / Follow Me
|
||||
- Dialplan Features that can be endlessly combined for your preferences
|
||||
- [Many other Features](http://wiki.fusionpbx.com/index.php?title=Features)
|
||||
|
||||
Free Support
|
||||
--------------------------------------
|
||||
We provide several avenues for you to get your system up and running on your own and learn the basics of the system.
|
||||
|
||||
1. [Current Documentation](http://wiki.fusionpbx.com/index.php?title=Main_Page)
|
||||
2. [New Documentation](http://fusionpbx-docs.readthedocs.org/en/latest/) COMING SOON
|
||||
3. [How to Contribute](http://fusionpbx.com) COMING SOON
|
||||
4. [IRC](http://webchat.freenode.net/) in the fusionpbx channel
|
||||
|
||||
Commercial Support
|
||||
--------------------------------------
|
||||
These options support the project and cover any kind of help you might need from architecture, installation, best practices, troubleshooting, custom feature programming, and training.
|
||||
|
||||
1. [Commercial Paid Support](http://fusionpbx.com/support.php)
|
||||
2. [Custom Feature Development](http://fusionpbx.com/support.php)
|
||||
3. [Admin Training](http://fusionpbx.com)
|
||||
4. [Advanced Training](http://fusionpbx.com)
|
||||
5. [Developer Training](http://fusionpbx.com)
|
||||
|
||||
Software Requirements
|
||||
--------------------------------------
|
||||
- [Debian Jessie](http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-netinst.iso) - Recommended
|
||||
This is the distribution recommended by the FreeSwitch team
|
||||
- Fusion will also install on Debian Wheezy, Ubuntu 10.10 LTS and is known to work on FreeBSD
|
||||
- [FusionPBX Installer](http://fusionpbx.com)
|
||||
|
||||
|
||||
Community
|
||||
--------------------------------------
|
||||
We have a pretty thriving community if you know how to get to us:
|
||||
|
||||
- [IRC](http://webchat.freenode.net/) in the fusionpbx channel
|
||||
- [Twitter](http://twitter.com/fusionpbx)
|
||||
- [Website](http://fusionpbx.com)
|
||||
|
||||
Contributing
|
||||
---------------------------------------
|
||||
|
||||
###Requirements
|
||||
It's easy to contribute to FusionPBX the only thing we ask before accepting your pull request is that you sign a Contributor License Agreement.
|
||||
We ask that you sign the Contributor License Agreement for the following reasons:
|
||||
|
||||
1. It protects FusionPBX by you gauranteeing that your contributions are yours to contribute and not the property of an employer or something found on the web.
|
||||
2. It protects you from using code that belongs to others that is subject unfriendly licensing.
|
||||
|
||||
### How to Contribute
|
||||
* [The Quick Way](https://github.com/Fusionpbx/opensource/blob/master/sign-cla.md) - Step by step instructions to contribute to FusionPBX with links to our CLA and how to submit pull requests.
|
||||
* [The FusionPBX Contribution Site](https://github.com/Fusionpbx/opensource) - The full repo with more information for the curious.
|
||||
|
||||
How to Install FusionPBX
|
||||
----------------------------
|
||||
* As root do the following:
|
||||
|
||||
```bash
|
||||
cd /usr/src
|
||||
```
|
||||
```bash
|
||||
apt-get install wget
|
||||
```
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/fusionpbx/fusionpbx-scripts/master/install/ubuntu/install_fusionpbx.sh
|
||||
```
|
||||
```bash
|
||||
chmod 755 install_fusionpbx.sh
|
||||
```
|
||||
```bash
|
||||
./install_fusionpbx.sh install-both user
|
||||
```
|
||||
|
||||
Installation Questions:
|
||||
- During the install it will ask you to press continue after verifying that the command ran successfully. This is usually the case, so you can simply tell it to continue. The install also asks several questions.
|
||||
- Unless you have a reason to choose otherwise, PostgreSQL and Nginx is probably your best path and is recommended by the developers of FusionPBX
|
||||
@@ -1,91 +0,0 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = "Aastra";
|
||||
$apps[$x]['uuid'] = "c3b13bbc-3015-4c09-87e8-416749b29f66";
|
||||
$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'] = "c471163a-12fa-11e8-b642-0ed5f89f718b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_gmt_offset";
|
||||
$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'] = "Aastra timezone offset in minutes (e.g. 300 = GMT-5 = Eastern Standard Time)";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c47117a2-12fa-11e8-b642-0ed5f89f718b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_time_format";
|
||||
$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'] = "Aastra clock format";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c47119aa-12fa-11e8-b642-0ed5f89f718b";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_date_format";
|
||||
$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'] = "Aastra date format";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b31b1423-a04c-4b4a-9c55-a0b3791642c3";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_ptime";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "20";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set Aastra ptime";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8b676397-2cf7-45de-a7ec-f3ceb7d529e3";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_silence_suppression";
|
||||
$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'] = "Enable Aastra codec silence suppression (on / off)";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1455b1b0-68ec-400d-be84-1d1132aea72f";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_zone_minutes";
|
||||
$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'] = "Offset in minutes from GMT, 300 = GMT-5 = Eastern Standard Time, -120 = GMT+2 = Eastern European Time";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c90e804a-d2bb-431a-ace8-5c69e140c539";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "aastra_sip_silence_suppression";
|
||||
$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'] = "Aastra SIP silence suppression - silence suppression: deactivated (0), activated (1); enabled on G.711 with CN(RFC3389) or G.729AB";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
|
||||
//get the id
|
||||
if (count($_GET)>0) {
|
||||
$id = check_str($_GET["id"]);
|
||||
}
|
||||
|
||||
if (strlen($id)>0) {
|
||||
//delete access_control
|
||||
$sql = "delete from v_access_controls ";
|
||||
$sql .= "where access_control_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
$_SESSION['message'] = $text['message-delete'];
|
||||
header('Location: access_controls.php');
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,303 +1,148 @@
|
||||
<?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 - 2020
|
||||
the Initial Developer. All Rights Reserved.
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('access_control_add') || permission_exists('access_control_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_add') || permission_exists('access_control_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (isset($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$access_control_uuid = $_REQUEST["id"];
|
||||
$id = $_REQUEST["id"];
|
||||
$access_control_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST) && @sizeof($_POST) != 0) {
|
||||
$access_control_name = $_POST["access_control_name"];
|
||||
$access_control_default = $_POST["access_control_default"];
|
||||
$access_control_nodes = $_POST["access_control_nodes"];
|
||||
$access_control_description = $_POST["access_control_description"];
|
||||
if (count($_POST)>0) {
|
||||
$access_control_name = check_str($_POST["access_control_name"]);
|
||||
$access_control_default = check_str($_POST["access_control_default"]);
|
||||
$access_control_description = check_str($_POST["access_control_description"]);
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
$msg = '';
|
||||
if ($action == "update") {
|
||||
$access_control_uuid = check_str($_POST["access_control_uuid"]);
|
||||
}
|
||||
|
||||
//check for all required data
|
||||
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_description) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_description']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//add or update the database
|
||||
if ($_POST["persistformvar"] != "true") {
|
||||
if ($action == "add" && permission_exists('access_control_add')) {
|
||||
$sql = "insert into v_access_controls ";
|
||||
$sql .= "(";
|
||||
$sql .= "access_control_uuid, ";
|
||||
$sql .= "access_control_name, ";
|
||||
$sql .= "access_control_default, ";
|
||||
$sql .= "access_control_description ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'".uuid()."', ";
|
||||
$sql .= "'$access_control_name', ";
|
||||
$sql .= "'$access_control_default', ";
|
||||
$sql .= "'$access_control_description' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
$_SESSION['message'] = $text['message-add'];
|
||||
header('Location: access_controls.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//process the http post data by submitted action
|
||||
if ($_POST['action'] != '' && strlen($_POST['action']) > 0) {
|
||||
|
||||
//prepare the array(s)
|
||||
$x = 0;
|
||||
foreach ($_POST['access_control_nodes'] as $row) {
|
||||
if (is_uuid($row['access_control_uuid']) && $row['checked'] === 'true') {
|
||||
$array['access_controls'][$x]['checked'] = $row['checked'];
|
||||
$array['access_controls'][$x]['access_control_nodes'][]['access_control_node_uuid'] = $row['access_control_node_uuid'];
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
//send the array to the database class
|
||||
switch ($_POST['action']) {
|
||||
case 'copy':
|
||||
if (permission_exists('access_control_add')) {
|
||||
$obj = new database;
|
||||
$obj->copy($array);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('access_control_delete')) {
|
||||
$obj = new database;
|
||||
$obj->delete($array);
|
||||
}
|
||||
break;
|
||||
case 'toggle':
|
||||
if (permission_exists('access_control_update')) {
|
||||
$obj = new database;
|
||||
$obj->toggle($array);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//clear the cache, reloadacl and redirect the user
|
||||
if (in_array($_POST['action'], array('copy', 'delete', 'toggle'))) {
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
|
||||
//create the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
header('Location: access_control_edit.php?id='.$id);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//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) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//add the access_control_uuid
|
||||
if (!is_uuid($_POST["access_control_uuid"])) {
|
||||
$access_control_uuid = uuid();
|
||||
}
|
||||
} //if ($action == "add")
|
||||
|
||||
//prepare the array
|
||||
$array['access_controls'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_controls'][0]['access_control_name'] = $access_control_name;
|
||||
$array['access_controls'][0]['access_control_default'] = $access_control_default;
|
||||
$array['access_controls'][0]['access_control_description'] = $access_control_description;
|
||||
$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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($action == "update" && permission_exists('access_control_edit')) {
|
||||
$sql = "update v_access_controls set ";
|
||||
$sql .= "access_control_name = '$access_control_name', ";
|
||||
$sql .= "access_control_default = '$access_control_default', ";
|
||||
$sql .= "access_control_description = '$access_control_description' ";
|
||||
$sql .= "where access_control_uuid = '$access_control_uuid'";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//save the data
|
||||
$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;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
|
||||
//create the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
if (isset($action)) {
|
||||
if ($action == "add") {
|
||||
$_SESSION["message"] = $text['message-add'];
|
||||
}
|
||||
if ($action == "update") {
|
||||
$_SESSION["message"] = $text['message-update'];
|
||||
}
|
||||
//header('Location: access_controls.php');
|
||||
header('Location: access_control_edit.php?id='.urlencode($access_control_uuid));
|
||||
$_SESSION['message'] = $text['message-update'];
|
||||
header('Location: access_controls.php');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
} //if ($action == "update")
|
||||
} //if ($_POST["persistformvar"] != "true")
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && $_POST["persistformvar"] != "true") {
|
||||
if (count($_GET)>0 && $_POST["persistformvar"] != "true") {
|
||||
$access_control_uuid = check_str($_GET["id"]);
|
||||
$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) {
|
||||
$sql .= "where access_control_uuid = '$access_control_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$access_control_name = $row["access_control_name"];
|
||||
$access_control_default = $row["access_control_default"];
|
||||
$access_control_description = $row["access_control_description"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
unset ($prep_statement);
|
||||
}
|
||||
|
||||
//get the child data
|
||||
if (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";
|
||||
$parameters['access_control_uuid'] = $access_control_uuid;
|
||||
$database = new database;
|
||||
$access_control_nodes = $database->select($sql, $parameters, 'all');
|
||||
unset ($sql, $parameters);
|
||||
}
|
||||
|
||||
//add the $access_control_node_uuid
|
||||
if (!is_uuid($access_control_node_uuid)) {
|
||||
$access_control_node_uuid = uuid();
|
||||
}
|
||||
|
||||
//add an empty row
|
||||
if (is_array($access_control_nodes) && @sizeof($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_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
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//show the header
|
||||
$document['title'] = $text['title-access_control'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<form name='frm' id='frm' method='post'>\n";
|
||||
echo "<input class='formfld' type='hidden' name='access_control_uuid' value='".escape($access_control_uuid)."'>\n";
|
||||
echo "<div align='center'>";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing=''>\n";
|
||||
echo "<tr class='border'>\n";
|
||||
echo " <td align=\"left\">\n";
|
||||
echo " <br>";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-access_control']."</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','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-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
|
||||
}
|
||||
if (permission_exists('access_control_node_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; margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
}
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'hide-xs']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo $text['title_description-access_controls']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
if ($action == 'update') {
|
||||
if (permission_exists('access_control_add')) {
|
||||
echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
if (permission_exists('access_control_delete')) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($action == 'update') {
|
||||
if (permission_exists('access_control_add')) {
|
||||
echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
if (permission_exists('access_control_delete')) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
}
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' width='30%' nowrap='nowrap'><b>".$text['title-access_control']."</b></td>\n";
|
||||
echo "<td width='70%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='access_controls.php'\" value='".$text['button-back']."'>";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-access_control_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_name' maxlength='255' value='".escape($access_control_name)."'>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_name' maxlength='255' value=\"$access_control_name\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-access_control_name']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -307,114 +152,57 @@
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-access_control_default']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <select class='formfld' name='access_control_default'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($access_control_default == "allow") {
|
||||
echo " <option value='allow' selected='selected'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='allow'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
if ($access_control_default == "deny") {
|
||||
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='deny'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='access_control_default'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($access_control_default == "allow") {
|
||||
echo " <option value='allow' selected='selected'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='allow'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
if ($access_control_default == "deny") {
|
||||
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='deny'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-access_control_default']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-access_control_nodes']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <table>\n";
|
||||
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";
|
||||
echo " <span id='delete_label_details'>".$text['label-action']."</span>\n";
|
||||
echo " <span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\"></span>\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo " </tr>\n";
|
||||
$x = 0;
|
||||
foreach($access_control_nodes as $row) {
|
||||
echo " <tr>\n";
|
||||
echo " <input type='hidden' name='access_control_nodes[$x][access_control_uuid]' value=\"".escape($row["access_control_uuid"])."\">\n";
|
||||
echo " <input type='hidden' name='access_control_nodes[$x][access_control_node_uuid]' value=\"".escape($row["access_control_node_uuid"])."\">\n";
|
||||
echo " <td class='formfld'>\n";
|
||||
echo " <select class='formfld' name='access_control_nodes[$x][node_type]'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($row['node_type'] == "allow") {
|
||||
echo " <option value='allow' selected='selected'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='allow'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
if ($row['node_type'] == "deny") {
|
||||
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='deny'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo " </td>\n";
|
||||
echo " <td class='formfld'>\n";
|
||||
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')) {
|
||||
if (is_uuid($row['access_control_node_uuid'])) {
|
||||
echo " <td class='vtable' style='text-align: center; padding-bottom: 3px;'>\n";
|
||||
echo " <input type='checkbox' name='access_control_nodes[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
else {
|
||||
echo " <td></td>\n";
|
||||
}
|
||||
}
|
||||
echo " </tr>\n";
|
||||
$x++;
|
||||
}
|
||||
echo " </table>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-node_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-access_control_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_description' maxlength='255' value='".escape($access_control_description)."'>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='access_control_description' maxlength='255' value=\"$access_control_description\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-access_control_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
if ($action == "update") {
|
||||
echo " <input type='hidden' name='access_control_uuid' value='$access_control_uuid'>\n";
|
||||
}
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>";
|
||||
|
||||
if ($action == "update") {
|
||||
require "access_control_nodes.php";
|
||||
}
|
||||
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_node_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
|
||||
//get the id
|
||||
if (count($_GET)>0) {
|
||||
$id = check_str($_GET["id"]);
|
||||
$access_control_uuid = check_str($_GET["access_control_uuid"]);
|
||||
}
|
||||
|
||||
if (strlen($id)>0) {
|
||||
//delete access_control_node
|
||||
$sql = "delete from v_access_control_nodes ";
|
||||
$sql .= "where access_control_node_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
$_SESSION['message'] = $text['message-delete'];
|
||||
header('Location: access_control_node_edit.php?id='.$access_control_uuid);
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,230 @@
|
||||
<?php
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_node_add') || permission_exists('access_control_node_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
|
||||
//action add or update
|
||||
if (isset($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$access_control_node_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//set the parent uuid
|
||||
if (strlen($_GET["access_control_uuid"]) > 0) {
|
||||
$access_control_uuid = check_str($_GET["access_control_uuid"]);
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (count($_POST)>0) {
|
||||
$node_type = check_str($_POST["node_type"]);
|
||||
$node_cidr = check_str($_POST["node_cidr"]);
|
||||
$node_domain = check_str($_POST["node_domain"]);
|
||||
$node_description = check_str($_POST["node_description"]);
|
||||
}
|
||||
|
||||
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
$msg = '';
|
||||
if ($action == "update") {
|
||||
$access_control_node_uuid = check_str($_POST["access_control_node_uuid"]);
|
||||
}
|
||||
|
||||
//check for all required data
|
||||
if (strlen($node_type) == 0) { $msg .= $text['message-required']." ".$text['label-node_type']."<br>\n"; }
|
||||
//if (strlen($node_cidr) == 0) { $msg .= $text['message-required']." ".$text['label-node_cidr']."<br>\n"; }
|
||||
//if (strlen($node_domain) == 0) { $msg .= $text['message-required']." ".$text['label-node_domain']."<br>\n"; }
|
||||
//if (strlen($node_description) == 0) { $msg .= $text['message-required']." ".$text['label-node_description']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//add or update the database
|
||||
if ($_POST["persistformvar"] != "true") {
|
||||
if ($action == "add" && permission_exists('access_control_node_add')) {
|
||||
$sql = "insert into v_access_control_nodes ";
|
||||
$sql .= "(";
|
||||
$sql .= "access_control_node_uuid, ";
|
||||
$sql .= "access_control_uuid, ";
|
||||
$sql .= "node_type, ";
|
||||
$sql .= "node_cidr, ";
|
||||
$sql .= "node_domain, ";
|
||||
$sql .= "node_description ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'".uuid()."', ";
|
||||
$sql .= "'$access_control_uuid', ";
|
||||
$sql .= "'$node_type', ";
|
||||
$sql .= "'$node_cidr', ";
|
||||
$sql .= "'$node_domain', ";
|
||||
$sql .= "'$node_description' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
$_SESSION['message'] = $text['message-add'];
|
||||
header('Location: access_control_edit.php?id='.$access_control_uuid);
|
||||
return;
|
||||
|
||||
} //if ($action == "add")
|
||||
|
||||
if ($action == "update" && permission_exists('access_control_node_edit')) {
|
||||
$sql = "update v_access_control_nodes set ";
|
||||
$sql .= "access_control_uuid = '$access_control_uuid', ";
|
||||
$sql .= "node_type = '$node_type', ";
|
||||
$sql .= "node_cidr = '$node_cidr', ";
|
||||
$sql .= "node_domain = '$node_domain', ";
|
||||
$sql .= "node_description = '$node_description' ";
|
||||
$sql .= "where access_control_node_uuid = '$access_control_node_uuid'";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
$_SESSION['message'] = $text['message-update'];
|
||||
header('Location: access_control_edit.php?id='.$access_control_uuid);
|
||||
return;
|
||||
|
||||
} //if ($action == "update")
|
||||
} //if ($_POST["persistformvar"] != "true")
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
|
||||
//pre-populate the form
|
||||
if (count($_GET)>0 && $_POST["persistformvar"] != "true") {
|
||||
$access_control_node_uuid = check_str($_GET["id"]);
|
||||
$sql = "select * from v_access_control_nodes ";
|
||||
$sql .= "where access_control_node_uuid = '$access_control_node_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$node_type = $row["node_type"];
|
||||
$node_cidr = $row["node_cidr"];
|
||||
$node_domain = $row["node_domain"];
|
||||
$node_description = $row["node_description"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset ($prep_statement);
|
||||
}
|
||||
|
||||
//show the header
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div align='center'>";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing=''>\n";
|
||||
echo "<tr class='border'>\n";
|
||||
echo " <td align=\"left\">\n";
|
||||
echo " <br>";
|
||||
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' width='30%' nowrap='nowrap'><b>".$text['title-access_control_node']."</b></td>\n";
|
||||
echo "<td width='70%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='access_control_edit.php?id=$access_control_uuid'\" value='".$text['button-back']."'>";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-node_type']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='node_type'>\n";
|
||||
echo " <option value=''></option>\n";
|
||||
if ($node_type == "allow") {
|
||||
echo " <option value='allow' selected='selected'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='allow'>".$text['label-allow']."</option>\n";
|
||||
}
|
||||
if ($node_type == "deny") {
|
||||
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='deny'>".$text['label-deny']."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-node_type']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-node_cidr']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='node_cidr' maxlength='255' value=\"$node_cidr\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-node_cidr']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-node_domain']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='node_domain' maxlength='255' value=\"$node_domain\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-node_domain']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-node_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='node_description' maxlength='255' value=\"$node_description\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-node_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
echo " <input type='hidden' name='access_control_uuid' value='$access_control_uuid'>\n";
|
||||
if ($action == "update") {
|
||||
echo " <input type='hidden' name='access_control_node_uuid' value='$access_control_node_uuid'>\n";
|
||||
}
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "</form>";
|
||||
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_node_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//get variables used to control the order
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//additional includes
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//show the content
|
||||
echo "<div align='center'>";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>\n";
|
||||
echo "<tr class='border'>\n";
|
||||
echo " <td align=\"center\">\n";
|
||||
echo " <br />";
|
||||
|
||||
echo "<table width='100%' border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='50%' align='left' nowrap='nowrap'><b>".$text['title-access_control_nodes']."</b></td>\n";
|
||||
echo " <td width='50%' align='right'> </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) as num_rows from v_access_control_nodes ";
|
||||
$sql .= "where access_control_uuid = '$access_control_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] > 0) {
|
||||
$num_rows = $row['num_rows'];
|
||||
}
|
||||
else {
|
||||
$num_rows = '0';
|
||||
}
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = 10;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = "select * from v_access_control_nodes ";
|
||||
$sql .= "where access_control_uuid = '$access_control_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= "limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo th_order_by('node_type', $text['label-node_type'], $order_by, $order);
|
||||
echo th_order_by('node_cidr', $text['label-node_cidr'], $order_by, $order);
|
||||
echo th_order_by('node_domain', $text['label-node_domain'], $order_by, $order);
|
||||
echo th_order_by('node_description', $text['label-node_description'], $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_node_add')) {
|
||||
echo "<a href='access_control_node_edit.php?access_control_uuid=".$_GET['id']."' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
else {
|
||||
echo " \n";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "<tr>\n";
|
||||
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('access_control_node_edit')) {
|
||||
$tr_link = "href='access_control_node_edit.php?access_control_uuid=".$row['access_control_uuid']."&id=".$row['access_control_node_uuid']."'";
|
||||
}
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['node_type']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['node_cidr']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['node_domain']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['node_description']." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_node_edit')) {
|
||||
echo "<a href='access_control_node_edit.php?access_control_uuid=".$row['access_control_uuid']."&id=".$row['access_control_node_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('access_control_node_delete')) {
|
||||
echo "<a href='access_control_node_delete.php?access_control_uuid=".$row['access_control_uuid']."&id=".$row['access_control_node_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='5' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap='nowrap'> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap='nowrap'>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_node_add')) {
|
||||
echo "<a href='access_control_node_edit.php?access_control_uuid=".$_GET['id']."' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
else {
|
||||
echo " ";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br /><br />";
|
||||
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br /><br />";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
@@ -1,249 +1,152 @@
|
||||
<?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 - 2020
|
||||
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";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('access_control_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('access_control_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the http post data
|
||||
if (is_array($_POST['access_controls'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$access_controls = $_POST['access_controls'];
|
||||
require_once "app_languages.php";
|
||||
foreach($text as $key => $value) {
|
||||
$text[$key] = $value[$_SESSION['domain']['language']['code']];
|
||||
}
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($access_controls) && @sizeof($access_controls) != 0) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: access_controls.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//prepare the array
|
||||
foreach($access_controls as $row) {
|
||||
$array['access_controls'][$x]['checked'] = $row['checked'];
|
||||
$array['access_controls'][$x]['access_control_uuid'] = $row['access_control_uuid'];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//prepare the database object
|
||||
$database = new database;
|
||||
$database->app_name = 'access_controls';
|
||||
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
|
||||
//send the array to the database class
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('access_control_add')) {
|
||||
$database->copy($array);
|
||||
}
|
||||
break;
|
||||
case 'toggle':
|
||||
if (permission_exists('access_control_edit')) {
|
||||
$database->toggle($array);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('access_control_delete')) {
|
||||
$database->delete($array);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
header('Location: access_controls.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
//get variables used to control the order
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//add the search
|
||||
if (isset($_GET["search"])) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
|
||||
//get the count
|
||||
$sql = "select count(access_control_uuid) ";
|
||||
$sql .= "from v_access_controls ";
|
||||
if (isset($_GET["search"])) {
|
||||
$sql .= "where (";
|
||||
$sql .= " lower(access_control_name) like :search ";
|
||||
$sql .= " or lower(access_control_default) like :search ";
|
||||
$sql .= " or lower(access_control_description) like :search ";
|
||||
$sql .= ") ";
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//get the list
|
||||
$sql = "select ";
|
||||
$sql .= "access_control_uuid, ";
|
||||
$sql .= "access_control_name, ";
|
||||
$sql .= "access_control_default, ";
|
||||
$sql .= "access_control_description ";
|
||||
$sql .= "from v_access_controls ";
|
||||
if (isset($_GET["search"])) {
|
||||
$sql .= "where (";
|
||||
$sql .= " lower(access_control_name) like :search ";
|
||||
$sql .= " or lower(access_control_default) like :search ";
|
||||
$sql .= " or lower(access_control_description) like :search ";
|
||||
$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');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//additional includes
|
||||
$document['title'] = $text['title-access_controls'];
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//show the content
|
||||
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";
|
||||
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']);
|
||||
}
|
||||
if (permission_exists('access_control_add') && $access_controls) {
|
||||
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');"]);
|
||||
}
|
||||
if (permission_exists('access_control_delete') && $access_controls) {
|
||||
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";
|
||||
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";
|
||||
echo "</div>\n";
|
||||
echo "<div align='center'>";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>\n";
|
||||
echo "<tr class='border'>\n";
|
||||
echo " <td align=\"center\">\n";
|
||||
echo " <br />";
|
||||
|
||||
if (permission_exists('access_control_add') && $access_controls) {
|
||||
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('access_control_delete') && $access_controls) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
echo "<table width='100%' border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='50%' align='left' nowrap='nowrap'><b>".$text['title-access_controls']."</b></td>\n";
|
||||
echo " <td width='50%' align='right'> </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td align='left' colspan='2'>\n";
|
||||
echo " ".$text['description-access_control']."<br /><br />\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
echo $text['title_description-access_controls']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($access_controls) && @sizeof($access_controls) != 0) {
|
||||
$x = 0;
|
||||
foreach ($access_controls as $row) {
|
||||
if (permission_exists('access_control_edit')) {
|
||||
$list_row_url = "access_control_edit.php?id=".urlencode($row['access_control_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='access_controls[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
echo " <input type='hidden' name='access_controls[$x][access_control_uuid]' value='".escape($row['access_control_uuid'])."' />\n";
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo " <td>\n";
|
||||
if (permission_exists('access_control_edit')) {
|
||||
echo " <a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['access_control_name'])."</a>\n";
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) as num_rows from v_access_controls ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] > 0) {
|
||||
$num_rows = $row['num_rows'];
|
||||
}
|
||||
else {
|
||||
echo " ".escape($row['access_control_name']);
|
||||
$num_rows = '0';
|
||||
}
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = 10;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = "select * from v_access_controls ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= "limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\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_order_by('access_control_description', $text['label-access_control_description'], $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_add')) {
|
||||
echo "<a href='access_control_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
else {
|
||||
echo " \n";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "<tr>\n";
|
||||
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
if (permission_exists('access_control_edit')) {
|
||||
$tr_link = "href='access_control_edit.php?id=".$row['access_control_uuid']."'";
|
||||
}
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['access_control_name']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['access_control_default']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['access_control_description']." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_edit')) {
|
||||
echo "<a href='access_control_edit.php?id=".$row['access_control_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('access_control_delete')) {
|
||||
echo "<a href='access_control_delete.php?id=".$row['access_control_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
|
||||
}
|
||||
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') {
|
||||
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";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($access_controls);
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='4' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap='nowrap'> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap='nowrap'>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('access_control_add')) {
|
||||
echo "<a href='access_control_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
else {
|
||||
echo " ";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br /><br />";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>\n";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br /><br />";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,122 +1,122 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = "Access Controls";
|
||||
$apps[$x]['uuid'] = "1416a250-f6e1-4edc-91a6-5c9b883638fd";
|
||||
$apps[$x]['category'] = "";
|
||||
$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'] = "Manage access control lists";
|
||||
$apps[$x]['description']['en-gb'] = "Manage access control lists";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Zugriffssteuerungslisten verwalten";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Zugriffssteuerungslisten verwalten";
|
||||
$apps[$x]['description']['es-cl'] = "";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "Gérer les listes de contrôle d'accès";
|
||||
$apps[$x]['description']['fr-fr'] = "Gérer les listes de contrôle d'accès";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Beheer toegangs controle lijsten";
|
||||
$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'] = "";
|
||||
$apps[$x]['name'] = 'Access Controls';
|
||||
$apps[$x]['uuid'] = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$apps[$x]['category'] = '';
|
||||
$apps[$x]['subcategory'] = '';
|
||||
$apps[$x]['version'] = '';
|
||||
$apps[$x]['license'] = 'Mozilla Public License 1.1';
|
||||
$apps[$x]['url'] = 'http://www.fusionpbx.com';
|
||||
$apps[$x]['description']['en-us'] = '';
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_view";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_view';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'user';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_add";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_add';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_edit";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_edit';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'user';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_delete";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_delete';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_node_view";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_node_view';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'user';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_node_add";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_node_add';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_node_edit";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_node_edit';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'user';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "access_control_node_delete";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = 'access_control_node_delete';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
|
||||
//cache details
|
||||
$apps[$x]['cache']['key'] = "configuration.acl.conf";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_access_controls";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_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";
|
||||
$y = 0; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = 'v_access_controls';
|
||||
//$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'] = 'access_control_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'] = "access_control_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'] = "Enter the name.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'access_control_name';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the name.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_default";
|
||||
$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'] = "Select the default type.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'access_control_default';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Select the default type.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_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'] = "Enter the description";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'access_control_description';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the description';
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_access_control_nodes";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "v_access_controls";
|
||||
$z=0;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_node_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";
|
||||
$y = 1; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = 'v_access_control_nodes';
|
||||
//$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'] = 'access_control_node_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'] = "access_control_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_access_controls";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "access_control_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'access_control_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_access_control';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'access_control_uuid';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "node_type";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the type.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'node_type';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Select the type.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "node_cidr";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the IP CIDR range.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'node_cidr';
|
||||
$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.";
|
||||
$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.";
|
||||
|
||||
?>
|
||||
$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++;
|
||||
?>
|
||||
@@ -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) 2015
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -28,108 +28,94 @@
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//add the access control list to the database
|
||||
$sql = "select count(*) from v_access_controls ";
|
||||
$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';
|
||||
//load the xml and save it into an array
|
||||
if (file_exists($xml_file)) {
|
||||
$sql = "select count(*) as num_rows from v_access_controls ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] == 0) {
|
||||
//find the file
|
||||
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/autoload_configs')) {
|
||||
$xml_file = '/usr/share/examples/fusionpbx/resources/templates/conf/autload_configs/acl.conf.xml';
|
||||
}
|
||||
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/autoload_configs')) {
|
||||
$xml_file = '/usr/local/share/fusionpbx/resources/templates/conf/autoload_configs/acl.conf.xml';
|
||||
}
|
||||
else {
|
||||
$xml_file = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/autoload_configs/acl.conf.xml';
|
||||
}
|
||||
|
||||
//load the xml and save it into an array
|
||||
$xml_string = file_get_contents($xml_file);
|
||||
$xml_object = simplexml_load_string($xml_string);
|
||||
$json = json_encode($xml_object);
|
||||
$conf_array = json_decode($json, true);
|
||||
|
||||
//process the array
|
||||
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
|
||||
$access_control_uuid = uuid();
|
||||
$sql = "insert into v_access_controls ";
|
||||
$sql .= "(";
|
||||
$sql .= "access_control_uuid, ";
|
||||
$sql .= "access_control_name, ";
|
||||
$sql .= "access_control_default ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".$access_control_uuid."', ";
|
||||
$sql .= "'".check_str($access_control_name)."', ";
|
||||
$sql .= "'".check_str($access_control_default)."' ";
|
||||
$sql .= ")";
|
||||
//echo $sql."\n";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//normalize the array - needed because the array is inconsistent when there is only one row vs multiple
|
||||
if (strlen($list['node']['@attributes']['type']) > 0) {
|
||||
$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'];
|
||||
//replace $${domain}
|
||||
if (strlen($node_domain) > 0) {
|
||||
$node_domain = str_replace("\$\${domain}", $domain_name, $node_domain);
|
||||
}
|
||||
//add the profile settings into the database
|
||||
$access_control_node_uuid = uuid();
|
||||
$sql = "insert into v_access_control_nodes ";
|
||||
$sql .= "(";
|
||||
$sql .= "access_control_node_uuid, ";
|
||||
$sql .= "access_control_uuid, ";
|
||||
$sql .= "node_type, ";
|
||||
$sql .= "node_cidr, ";
|
||||
$sql .= "node_domain ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".$access_control_node_uuid."', ";
|
||||
$sql .= "'".$access_control_uuid."', ";
|
||||
$sql .= "'".$node_type."', ";
|
||||
$sql .= "'".$node_cidr."', ";
|
||||
$sql .= "'".$node_domain."' ";
|
||||
$sql .= ")";
|
||||
//echo $sql."\n";
|
||||
$db->exec(check_sql($sql));
|
||||
}
|
||||
}
|
||||
elseif (file_exists($xml_file_alt)) {
|
||||
$xml_string = file_get_contents(xml_file_alt);
|
||||
}
|
||||
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 .= " <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>\n";
|
||||
$xml_string .= " </network-lists>\n";
|
||||
$xml_string .= "</configuration>\n";
|
||||
}
|
||||
$xml_object = simplexml_load_string($xml_string);
|
||||
$json = json_encode($xml_object);
|
||||
$conf_array = json_decode($json, true);
|
||||
|
||||
//process the array
|
||||
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
|
||||
$access_control_uuid = uuid();
|
||||
$array['access_controls'][0]['access_control_uuid'] = $access_control_uuid;
|
||||
$array['access_controls'][0]['access_control_name'] = $access_control_name;
|
||||
$array['access_controls'][0]['access_control_default'] = $access_control_default;
|
||||
|
||||
$p = new permissions;
|
||||
$p->add('access_control_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_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) {
|
||||
$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 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');
|
||||
}
|
||||
}
|
||||
|
||||
//rename the file
|
||||
if (file_exists($xml_dir.'/acl.conf.xml')) {
|
||||
rename($xml_dir.'/acl.conf.xml', $xml_dir.'/acl.conf');
|
||||
}
|
||||
unset($prep_statement);
|
||||
}
|
||||
}
|
||||
unset($sql, $num_rows);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,466 +1,458 @@
|
||||
<?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']['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']['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-pt'] = "Controles de Acesso";
|
||||
$text['title-access_controls']['ro-ro'] = "Controale de acces";
|
||||
$text['title-access_controls']['ru-ru'] = "Контроль доступа";
|
||||
$text['title-access_controls']['fr-fr'] = "Contrôle d'accès";
|
||||
$text['title-access_controls']['pt-br'] = "Controles de Acesso";
|
||||
$text['title-access_controls']['he'] = "בקרת גישה";
|
||||
$text['title-access_controls']['de-at'] = " Zugriffskontrolle";
|
||||
$text['title-access_controls']['pl'] = "Kontrola dostępu";
|
||||
$text['title-access_controls']['ro'] = "Controale de acces";
|
||||
$text['title-access_controls']['uk'] = "контроль доступу";
|
||||
$text['title-access_controls']['sv-se'] = "Åtkomstkontroll";
|
||||
$text['title-access_controls']['uk-ua'] = "контроль доступу";
|
||||
$text['title-access_controls']['ar-eg'] = "عناصر التحكم في الوصول";
|
||||
|
||||
$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-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']['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']['ro-ro'] = "Noduri";
|
||||
$text['title-access_control_nodes']['ru-ru'] = "Узлы";
|
||||
$text['title-access_control_nodes']['fr-fr'] = " nœuds";
|
||||
$text['title-access_control_nodes']['pt-br'] = "Nodes";
|
||||
$text['title-access_control_nodes']['he'] = "בלוטות";
|
||||
$text['title-access_control_nodes']['de-at'] = "Knoten";
|
||||
$text['title-access_control_nodes']['pl'] = "węzły";
|
||||
$text['title-access_control_nodes']['ro'] = "Noduri";
|
||||
$text['title-access_control_nodes']['uk'] = "вузли";
|
||||
$text['title-access_control_nodes']['sv-se'] = "Noder";
|
||||
$text['title-access_control_nodes']['uk-ua'] = "вузли";
|
||||
$text['title-access_control_nodes']['ar-eg'] = "العقد";
|
||||
|
||||
$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-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']['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-pt'] = "Nó";
|
||||
$text['title-access_control_node']['ro-ro'] = "Nod";
|
||||
$text['title-access_control_node']['ru-ru'] = "Узел";
|
||||
$text['title-access_control_node']['fr-fr'] = " noeud";
|
||||
$text['title-access_control_node']['pt-br'] = "Nó";
|
||||
$text['title-access_control_node']['he'] = "צומת";
|
||||
$text['title-access_control_node']['de-at'] = "Netzknoten";
|
||||
$text['title-access_control_node']['pl'] = "węzeł";
|
||||
$text['title-access_control_node']['ro'] = "Nod";
|
||||
$text['title-access_control_node']['uk'] = "вузол";
|
||||
$text['title-access_control_node']['sv-se'] = "Nod";
|
||||
$text['title-access_control_node']['uk-ua'] = "вузол";
|
||||
$text['title-access_control_node']['ar-eg'] = "العقدة";
|
||||
|
||||
$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']['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']['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-pt'] = "Controle de acesso";
|
||||
$text['title-access_control']['ro-ro'] = "Controlul accesului";
|
||||
$text['title-access_control']['ru-ru'] = "Управление доступом";
|
||||
$text['title-access_control']['fr-fr'] = "Contrôle d'accès";
|
||||
$text['title-access_control']['pt-br'] = "Controle de acesso";
|
||||
$text['title-access_control']['he'] = "בקרת גישה";
|
||||
$text['title-access_control']['de-at'] = " Zugangskontrolle";
|
||||
$text['title-access_control']['pl'] = "Kontrola dostępu";
|
||||
$text['title-access_control']['ro'] = "Controlul accesului";
|
||||
$text['title-access_control']['uk'] = "Управління доступом";
|
||||
$text['title-access_control']['sv-se'] = "Åtkomstkontroll";
|
||||
$text['title-access_control']['uk-ua'] = "Управління доступом";
|
||||
$text['title-access_control']['ar-eg'] = "التحكم في الوصول";
|
||||
|
||||
$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']['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-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['message-update']['en-us'] = "Update Completed";
|
||||
$text['message-update']['es-cl'] = "Actualización Completada";
|
||||
$text['message-update']['pt-pt'] = "Actualização Efectuada";
|
||||
$text['message-update']['fr-fr'] = "Mis à jour";
|
||||
$text['message-update']['pt-br'] = "Atualização Efetuada";
|
||||
$text['message-update']['he'] = "עידכון הושלם";
|
||||
$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
|
||||
$text['message-update']['pl'] = "Zaktualizowano poprawnie";
|
||||
$text['message-update']['ro'] = "Actualizare completă";
|
||||
$text['message-update']['uk'] = "Оновлення завершено";
|
||||
$text['message-update']['sv-se'] = "Uppdatering Klar";
|
||||
$text['message-update']['ar-eg'] = "تحديث مكتمل";
|
||||
|
||||
$text['message-required']['en-us'] = "Please provide: ";
|
||||
$text['message-required']['es-cl'] = "Por favor indique:";
|
||||
$text['message-required']['pt-pt'] = "Por favor indique:";
|
||||
$text['message-required']['fr-fr'] = "Merci d'indiquer:";
|
||||
$text['message-required']['pt-br'] = "Por favor Indique:";
|
||||
$text['message-required']['he'] = " אנא ספק";
|
||||
$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
|
||||
$text['message-required']['pl'] = "Wpisz:";
|
||||
$text['message-required']['ro'] = "Vă rugăm să oferiți";
|
||||
$text['message-required']['uk'] = "Будь ласка, вкажіть:";
|
||||
$text['message-required']['sv-se'] = "Var god uppge:";
|
||||
$text['message-required']['ar-eg'] = "يرجى تقديم:";
|
||||
|
||||
$text['message-delete']['en-us'] = "Delete Completed";
|
||||
$text['message-delete']['es-cl'] = "Eliminación Completada";
|
||||
$text['message-delete']['pt-pt'] = "Remoção Efectuada";
|
||||
$text['message-delete']['fr-fr'] = "Supprimé";
|
||||
$text['message-delete']['pt-br'] = "Remoção Efetuada";
|
||||
$text['message-delete']['he'] = "מחיקה הושלמה";
|
||||
$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
|
||||
$text['message-delete']['pl'] = "Usunięto poprawnie";
|
||||
$text['message-delete']['ro'] = "Ștergere completă";
|
||||
$text['message-delete']['uk'] = "Видалено";
|
||||
$text['message-delete']['sv-se'] = "Borttagning Klar";
|
||||
$text['message-delete']['ar-eg'] = "تم المسح";
|
||||
|
||||
$text['message-add']['en-us'] = "Add Completed";
|
||||
$text['message-add']['es-cl'] = "Agregar Completado";
|
||||
$text['message-add']['pt-pt'] = "Adição Efectuada";
|
||||
$text['message-add']['fr-fr'] = "Ajouté";
|
||||
$text['message-add']['pt-br'] = "Criação Efetuada";
|
||||
$text['message-add']['he'] = "הוספה הושלמה";
|
||||
$text['message-add']['de-at'] = "Completed";
|
||||
$text['message-add']['pl'] = "Dodano poprawnie";
|
||||
$text['message-add']['ro'] = "Adăugare completă";
|
||||
$text['message-add']['uk'] = "Додано";
|
||||
$text['message-add']['sv-se'] = "Tillagd";
|
||||
$text['message-add']['ar-eg'] = "تمت الأضافة";
|
||||
|
||||
$text['label-true']['en-us'] = "true";
|
||||
$text['label-true']['es-cl'] = "Verdadero";
|
||||
$text['label-true']['pt-pt'] = "Sim";
|
||||
$text['label-true']['fr-fr'] = "Oui";
|
||||
$text['label-true']['pt-br'] = "Sim";
|
||||
$text['label-true']['he'] = "חיובי";
|
||||
$text['label-true']['de-at'] = "Ein";
|
||||
$text['label-true']['pl'] = "Tak";
|
||||
$text['label-true']['ro'] = "Adevărat";
|
||||
$text['label-true']['uk'] = "Так";
|
||||
$text['label-true']['sv-se'] = "Sann";
|
||||
$text['label-true']['ar-eg'] = "صحيح";
|
||||
|
||||
$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-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']['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-pt'] = "Tipo";
|
||||
$text['label-node_type']['ro-ro'] = "Tip";
|
||||
$text['label-node_type']['ru-ru'] = "Тип";
|
||||
$text['label-node_type']['fr-fr'] = "Type";
|
||||
$text['label-node_type']['pt-br'] = "Tipo";
|
||||
$text['label-node_type']['he'] = "סוג";
|
||||
$text['label-node_type']['de-at'] = "Art";
|
||||
$text['label-node_type']['pl'] = "typ";
|
||||
$text['label-node_type']['ro'] = "Tip";
|
||||
$text['label-node_type']['uk'] = "Тип";
|
||||
$text['label-node_type']['sv-se'] = "Typ";
|
||||
$text['label-node_type']['uk-ua'] = "Тип";
|
||||
$text['label-node_type']['ar-eg'] = "اكتب";
|
||||
|
||||
$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']['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']['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-pt'] = "Domínio";
|
||||
$text['label-node_domain']['ro-ro'] = "Domeniu";
|
||||
$text['label-node_domain']['ru-ru'] = "Домен";
|
||||
$text['label-node_domain']['fr-fr'] = "Domaine";
|
||||
$text['label-node_domain']['pt-br'] = "Domínio";
|
||||
$text['label-node_domain']['he'] = "תחום";
|
||||
$text['label-node_domain']['de-at'] = " Domäne";
|
||||
$text['label-node_domain']['pl'] = "domeny";
|
||||
$text['label-node_domain']['ro'] = "Domeniu";
|
||||
$text['label-node_domain']['uk'] = "домен";
|
||||
$text['label-node_domain']['sv-se'] = "Domän";
|
||||
$text['label-node_domain']['uk-ua'] = "домен";
|
||||
$text['label-node_domain']['ar-eg'] = "مجال";
|
||||
|
||||
$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-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']['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-pt'] = "Descrição";
|
||||
$text['label-node_description']['ro-ro'] = "Descriere";
|
||||
$text['label-node_description']['ru-ru'] = "Описание";
|
||||
$text['label-node_description']['fr-fr'] = "Description";
|
||||
$text['label-node_description']['pt-br'] = "Descrição";
|
||||
$text['label-node_description']['he'] = "תיאור";
|
||||
$text['label-node_description']['de-at'] = "Beschreibung";
|
||||
$text['label-node_description']['pl'] = "opis";
|
||||
$text['label-node_description']['ro'] = "Descriere";
|
||||
$text['label-node_description']['uk'] = "опис";
|
||||
$text['label-node_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-node_description']['uk-ua'] = "опис";
|
||||
$text['label-node_description']['ar-eg'] = "وصف";
|
||||
|
||||
$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-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']['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-pt'] = "CIDR";
|
||||
$text['label-node_cidr']['ro-ro'] = "CIDR";
|
||||
$text['label-node_cidr']['ru-ru'] = "CIDR";
|
||||
$text['label-node_cidr']['fr-fr'] = "CIDR";
|
||||
$text['label-node_cidr']['pt-br'] = "CIDR";
|
||||
$text['label-node_cidr']['he'] = "CIDR";
|
||||
$text['label-node_cidr']['de-at'] = "CIDR";
|
||||
$text['label-node_cidr']['pl'] = "CIDR";
|
||||
$text['label-node_cidr']['ro'] = "CIDR";
|
||||
$text['label-node_cidr']['uk'] = "CIDR";
|
||||
$text['label-node_cidr']['sv-se'] = "CIDR";
|
||||
$text['label-node_cidr']['uk-ua'] = "CIDR";
|
||||
$text['label-node_cidr']['ar-eg'] = "CIDR";
|
||||
|
||||
$text['label-false']['en-us'] = "false";
|
||||
$text['label-false']['es-cl'] = "Falso";
|
||||
$text['label-false']['pt-pt'] = "falso";
|
||||
$text['label-false']['fr-fr'] = "falso";
|
||||
$text['label-false']['pt-br'] = "Não";
|
||||
$text['label-false']['he'] = "לא חוקי";
|
||||
$text['label-false']['de-at'] = "Aus";
|
||||
$text['label-false']['pl'] = "Nie";
|
||||
$text['label-false']['ro'] = "Fals";
|
||||
$text['label-false']['uk'] = "помилковий";
|
||||
$text['label-false']['sv-se'] = "Falsk";
|
||||
$text['label-false']['ar-eg'] = "خاطئة";
|
||||
|
||||
$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']['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']['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-pt'] = "negar";
|
||||
$text['label-deny']['ro-ro'] = "Nega";
|
||||
$text['label-deny']['ru-ru'] = "запретить";
|
||||
$text['label-deny']['fr-fr'] = " nier";
|
||||
$text['label-deny']['pt-br'] = "Negar";
|
||||
$text['label-deny']['he'] = "להכחיש";
|
||||
$text['label-deny']['de-at'] = " leugnen";
|
||||
$text['label-deny']['pl'] = "zaprzeczać";
|
||||
$text['label-deny']['ro'] = "Nega";
|
||||
$text['label-deny']['uk'] = "правда";
|
||||
$text['label-deny']['sv-se'] = "förneka";
|
||||
$text['label-deny']['uk-ua'] = "правда";
|
||||
$text['label-deny']['ar-eg'] = "تنكر";
|
||||
|
||||
$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-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']['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-pt'] = "permitir";
|
||||
$text['label-allow']['ro-ro'] = "Permite";
|
||||
$text['label-allow']['ru-ru'] = "разрешить";
|
||||
$text['label-allow']['fr-fr'] = " permettre";
|
||||
$text['label-allow']['pt-br'] = "permitir";
|
||||
$text['label-allow']['he'] = "לאפשר";
|
||||
$text['label-allow']['de-at'] = "erlauben";
|
||||
$text['label-allow']['pl'] = "dopuszczać";
|
||||
$text['label-allow']['ro'] = "Permite";
|
||||
$text['label-allow']['uk'] = "дозволяти";
|
||||
$text['label-allow']['sv-se'] = "tillåta";
|
||||
$text['label-allow']['uk-ua'] = "дозволяти";
|
||||
$text['label-allow']['ar-eg'] = "السماح";
|
||||
|
||||
$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-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']['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']['pt-pt'] = "Nome";
|
||||
$text['label-access_control_name']['ro-ro'] = "Nume";
|
||||
$text['label-access_control_name']['ru-ru'] = "Имя";
|
||||
$text['label-access_control_name']['fr-fr'] = "Nom";
|
||||
$text['label-access_control_name']['pt-br'] = "Nome";
|
||||
$text['label-access_control_name']['he'] = "שם";
|
||||
$text['label-access_control_name']['de-at'] = "Name";
|
||||
$text['label-access_control_name']['pl'] = " Imię";
|
||||
$text['label-access_control_name']['ro'] = "Nume";
|
||||
$text['label-access_control_name']['uk'] = "ім'я";
|
||||
$text['label-access_control_name']['sv-se'] = "namn";
|
||||
$text['label-access_control_name']['uk-ua'] = "ім'я";
|
||||
|
||||
$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-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']['fr-fr'] = "Par défaut";
|
||||
$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-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_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-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']['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']['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_name']['ar-eg'] = "اسم";
|
||||
|
||||
$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-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']['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-pt'] = "Descrição";
|
||||
$text['label-access_control_description']['ro-ro'] = "Descriere";
|
||||
$text['label-access_control_description']['ru-ru'] = "Описание";
|
||||
$text['label-access_control_description']['fr-fr'] = "Description";
|
||||
$text['label-access_control_description']['pt-br'] = "Descrição";
|
||||
$text['label-access_control_description']['he'] = "תיאור";
|
||||
$text['label-access_control_description']['de-at'] = "Beschreibung";
|
||||
$text['label-access_control_description']['pl'] = "opis";
|
||||
$text['label-access_control_description']['ro'] = "Descriere";
|
||||
$text['label-access_control_description']['uk'] = "опис";
|
||||
$text['label-access_control_description']['sv-se'] = "Beskrivning";
|
||||
$text['label-access_control_description']['uk-ua'] = "опис";
|
||||
$text['label-access_control_description']['ar-eg'] = "وصف";
|
||||
|
||||
$text['label-access_control_default']['en-us'] = "Default";
|
||||
$text['label-access_control_default']['es-cl'] = "Defecto";
|
||||
$text['label-access_control_default']['pt-pt'] = "Padrão";
|
||||
$text['label-access_control_default']['fr-fr'] = "Par défaut";
|
||||
$text['label-access_control_default']['pt-br'] = "Padrão";
|
||||
$text['label-access_control_default']['he'] = " ברירת מחדל";
|
||||
$text['label-access_control_default']['de-at'] = "Standard";
|
||||
$text['label-access_control_default']['pl'] = "Domyślnie";
|
||||
$text['label-access_control_default']['ro'] = "Implicit";
|
||||
$text['label-access_control_default']['uk'] = "дефолт";
|
||||
$text['label-access_control_default']['sv-se'] = "Standard";
|
||||
$text['label-access_control_default']['ar-eg'] = "افتراضي";
|
||||
|
||||
$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']['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']['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-pt'] = "Selecione o tipo.";
|
||||
$text['description-node_type']['ro-ro'] = "Selectați tipul.";
|
||||
$text['description-node_type']['ru-ru'] = "Выберите тип.";
|
||||
$text['description-node_type']['fr-fr'] = " Sélectionnez le type";
|
||||
$text['description-node_type']['pt-br'] = "Selecione o tipo.";
|
||||
$text['description-node_type']['he'] = " בחר את הסוג.";
|
||||
$text['description-node_type']['de-at'] = " Wählen Sie den Typ.";
|
||||
$text['description-node_type']['pl'] = "Wybierz rodzaj.";
|
||||
$text['description-node_type']['ro'] = "Selectați tipul.";
|
||||
$text['description-node_type']['uk'] = "Виберіть тип.";
|
||||
$text['description-node_type']['sv-se'] = "Välj typ.";
|
||||
$text['description-node_type']['uk-ua'] = "Виберіть тип.";
|
||||
$text['description-node_type']['ar-eg'] = "حدد نوع.";
|
||||
|
||||
$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-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']['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']['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']['fr-fr'] = "Entrez le nom de domaine.";
|
||||
$text['description-node_domain']['pt-br'] = "Digite o nome de domínio.";
|
||||
$text['description-node_domain']['he'] = " הזן את שם הדומיין.";
|
||||
$text['description-node_domain']['de-at'] = "Geben Sie den Domain-Namen.";
|
||||
$text['description-node_domain']['pl'] = " Wprowadź nazwę domeny.";
|
||||
$text['description-node_domain']['ro'] = "Introduceți numele de domeniu.";
|
||||
$text['description-node_domain']['uk'] = "Введіть ім'я домену.";
|
||||
$text['description-node_domain']['sv-se'] = "Ange domännamnet.";
|
||||
$text['description-node_domain']['uk-ua'] = "Введіть ім'я домену.";
|
||||
$text['description-node_domain']['ar-eg'] = "أدخل اسم المجال.";
|
||||
|
||||
$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-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']['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']['pt-br'] = "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']['fr-fr'] = "Entrez la description.";
|
||||
$text['description-node_description']['pt-br'] = "Digite a descrição.";
|
||||
$text['description-node_description']['he'] = " הזן את התיאור.";
|
||||
$text['description-node_description']['de-at'] = "Geben Sie die Beschreibung.";
|
||||
$text['description-node_description']['pl'] = " Wprowadź opis.";
|
||||
$text['description-node_description']['ro'] = "Introduceți descrierea.";
|
||||
$text['description-node_description']['uk'] = "Введіть опис.";
|
||||
$text['description-node_description']['sv-se'] = "Ange beskrivningen.";
|
||||
$text['description-node_description']['uk-ua'] = "Введіть опис.";
|
||||
$text['description-node_description']['ar-eg'] = "أدخل الوصف.";
|
||||
|
||||
$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']['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-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']['fr-fr'] = "Entrez la plage IP CIDR.";
|
||||
$text['description-node_cidr']['pt-br'] = "Digite o intervalo IP CIDR.";
|
||||
$text['description-node_cidr']['he'] = " הזן את טווח ה- IP CIDR.";
|
||||
$text['description-node_cidr']['de-at'] = " Geben Sie die IP CIDR-Bereich.";
|
||||
$text['description-node_cidr']['pl'] = "Wprowadź zakres IP CIDR.";
|
||||
$text['description-node_cidr']['ro'] = "Introduceți intervalul de IP CIDR.";
|
||||
$text['description-node_cidr']['uk'] = "Введіть діапазон IP-CIDR.";
|
||||
$text['description-node_cidr']['sv-se'] = "Ange IP CIDR sortimentet.";
|
||||
$text['description-node_cidr']['uk-ua'] = "Введіть діапазон IP-CIDR.";
|
||||
$text['description-node_cidr']['ar-eg'] = "أدخل نطاق IP CIDR.";
|
||||
|
||||
$text['description-access_control_node']['en-us'] = "";
|
||||
$text['description-access_control_node']['es-cl'] = "";
|
||||
$text['description-access_control_node']['pt-pt'] = "";
|
||||
$text['description-access_control_node']['fr-fr'] = "";
|
||||
$text['description-access_control_node']['pt-br'] = "";
|
||||
$text['description-access_control_node']['he'] = "";
|
||||
$text['description-access_control_node']['de-at'] = "";
|
||||
$text['description-access_control_node']['pl'] = "";
|
||||
$text['description-access_control_node']['ro'] = "";
|
||||
$text['description-access_control_node']['uk'] = "";
|
||||
$text['description-access_control_node']['sv-se'] = "";
|
||||
$text['description-access_control_node']['ar-eg'] = "";
|
||||
|
||||
$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-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']['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']['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']['fr-fr'] = "Entrez le nom.";
|
||||
$text['description-access_control_name']['pt-br'] = "Digite o nome.";
|
||||
$text['description-access_control_name']['he'] = " הזן את השם.";
|
||||
$text['description-access_control_name']['de-at'] = "Geben Sie den Namen.";
|
||||
$text['description-access_control_name']['pl'] = " Wpisz nazwę.";
|
||||
$text['description-access_control_name']['ro'] = "Introduceți numele.";
|
||||
$text['description-access_control_name']['uk'] = "Введіть ім'я.";
|
||||
$text['description-access_control_name']['sv-se'] = "Ange namnet.";
|
||||
$text['description-access_control_name']['uk-ua'] = "Введіть ім'я.";
|
||||
$text['description-access_control_name']['ar-eg'] = "أدخل اسم.";
|
||||
|
||||
$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-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']['fr-fr'] = "Entrez la description.";
|
||||
$text['description-access_control_description']['he-il'] = " הזן את התיאור";
|
||||
$text['description-access_control_description']['it-it'] = "Inserisci la descrizione";
|
||||
$text['description-access_control_description']['nl-nl'] = "Voer de omschrijving in.";
|
||||
$text['description-access_control_description']['pl-pl'] = "Wprowadź opis";
|
||||
$text['description-access_control_description']['pt-br'] = "Digite a descrição.";
|
||||
$text['description-access_control_description']['pt-pt'] = "Digite a descrição";
|
||||
$text['description-access_control_description']['ro-ro'] = "Introduceți descrierea";
|
||||
$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']['fr-fr'] = "Entrez la description.";
|
||||
$text['description-access_control_description']['pt-br'] = "Digite a descrição";
|
||||
$text['description-access_control_description']['he'] = " הזן את התיאור";
|
||||
$text['description-access_control_description']['de-at'] = "Geben Sie die Beschreibung";
|
||||
$text['description-access_control_description']['pl'] = "Wprowadź opis";
|
||||
$text['description-access_control_description']['ro'] = "Introduceți descrierea";
|
||||
$text['description-access_control_description']['uk'] = "Введіть опис";
|
||||
$text['description-access_control_description']['sv-se'] = "Skriv en beskrivning";
|
||||
$text['description-access_control_description']['ar-eg'] = "دخل وصف";
|
||||
|
||||
$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']['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']['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-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']['fr-fr'] = "Sélectionnez le type de défaut";
|
||||
$text['description-access_control_default']['pt-br'] = "Selecione o tipo de padrão.";
|
||||
$text['description-access_control_default']['he'] = " בחר את סוג ברירת המחדל.";
|
||||
$text['description-access_control_default']['de-at'] = " Wählen Sie den Standardtyp.";
|
||||
$text['description-access_control_default']['pl'] = "Wybierz typ domyślny.";
|
||||
$text['description-access_control_default']['ro'] = "Selectați tipul implicit.";
|
||||
$text['description-access_control_default']['uk'] = "Вибір типу за замовчуванням.";
|
||||
$text['description-access_control_default']['sv-se'] = "Välj standardtypen.";
|
||||
$text['description-access_control_default']['uk-ua'] = "Вибір типу за замовчуванням.";
|
||||
$text['description-access_control_default']['ar-eg'] = "حدد نوع الافتراضي.";
|
||||
|
||||
?>
|
||||
$text['description-access_control']['en-us'] = "Access control list can allow or deny ranges of IP addresses.";
|
||||
$text['description-access_control']['es-cl'] = " Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
|
||||
$text['description-access_control']['pt-pt'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
|
||||
$text['description-access_control']['fr-fr'] = " Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
|
||||
$text['description-access_control']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
|
||||
$text['description-access_control']['he'] = " רשימת בקרת גישה יכולה לאפשר או למנוע טווחים של כתובות IP.";
|
||||
$text['description-access_control']['de-at'] = " Zugriffssteuerungsliste kann zulassen oder ablehnen Bereiche von IP-Adressen.";
|
||||
$text['description-access_control']['pl'] = "Lista kontroli dostępu może umożliwić lub zablokować zakresy adresów IP.";
|
||||
$text['description-access_control']['ro'] = "Lista de control al accesului poate permite sau refuza intervale de adrese IP.";
|
||||
$text['description-access_control']['uk'] = "Список контролю доступу може дозволити або заборонити діапазони IP-адрес.";
|
||||
$text['description-access_control']['sv-se'] = "Åtkomstkontrollista kan tillåta eller neka intervall av IP-adresser.";
|
||||
$text['description-access_control']['ar-eg'] = "قائمة التحكم بالوصول يمكن السماح أو الرفض نطاقات العناوين.";
|
||||
|
||||
$text['confirm-delete']['en-us'] = "Do you really want to delete this?";
|
||||
$text['confirm-delete']['es-cl'] = "¿Realmente desea eliminar esto?";
|
||||
$text['confirm-delete']['pt-pt'] = "Deseja realmente remover isto?";
|
||||
$text['confirm-delete']['fr-fr'] = "Voulez-vous vraiment supprimer cela?";
|
||||
$text['confirm-delete']['pt-br'] = "Deseja realmente remover isto?";
|
||||
$text['confirm-delete']['he'] = " האם אתה באמת רוצה למחוק את זה?";
|
||||
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
|
||||
$text['confirm-delete']['pl'] = "Czy na pewno chcesz to usunąć?";
|
||||
$text['confirm-delete']['ro'] = "Chiar vrei să ștergeți asta?";
|
||||
$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
|
||||
$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
|
||||
$text['confirm-delete']['ar-eg'] = "هل تريد حقا أن تحذف هذا؟";
|
||||
|
||||
$text['button-view']['en-us'] = "View";
|
||||
$text['button-view']['es-cl'] = "Ver";
|
||||
$text['button-view']['pt-pt'] = "Vista";
|
||||
$text['button-view']['fr-fr'] = "Voir";
|
||||
$text['button-view']['pt-br'] = "Visualizar";
|
||||
$text['button-view']['he'] = " צפה ב";
|
||||
$text['button-view']['de-at'] = "Ansicht";
|
||||
$text['button-view']['pl'] = "Widok";
|
||||
$text['button-view']['ro'] = "Vedere";
|
||||
$text['button-view']['uk'] = "вид";
|
||||
$text['button-view']['sv-se'] = "Visa";
|
||||
$text['button-view']['ar-eg'] = "عرض";
|
||||
|
||||
$text['button-save']['en-us'] = "Save";
|
||||
$text['button-save']['es-cl'] = "Guardar";
|
||||
$text['button-save']['pt-pt'] = "Guardar";
|
||||
$text['button-save']['fr-fr'] = "Sauvegarder";
|
||||
$text['button-save']['pt-br'] = "Salvar";
|
||||
$text['button-save']['he'] = "שמור";
|
||||
$text['button-save']['de-at'] = "Speichern";
|
||||
$text['button-save']['pl'] = "Zachowaj";
|
||||
$text['button-save']['ro'] = "Salvează";
|
||||
$text['button-save']['uk'] = "Зберегти";
|
||||
$text['button-save']['sv-se'] = "Spara";
|
||||
$text['button-save']['ar-eg'] = "حفظ";
|
||||
|
||||
$text['button-edit']['en-us'] = "Edit";
|
||||
$text['button-edit']['es-cl'] = "Editar";
|
||||
$text['button-edit']['pt-pt'] = "Editar";
|
||||
$text['button-edit']['fr-fr'] = "Editer";
|
||||
$text['button-edit']['pt-br'] = "Editar";
|
||||
$text['button-edit']['he'] = " עריכה";
|
||||
$text['button-edit']['de-at'] = "Bearbeiten";
|
||||
$text['button-edit']['pl'] = "Edytuj";
|
||||
$text['button-edit']['ro'] = "edita";
|
||||
$text['button-edit']['uk'] = "Редагувати";
|
||||
$text['button-edit']['sv-se'] = "Editera";
|
||||
$text['button-edit']['ar-eg'] = "تعديل";
|
||||
|
||||
$text['button-delete']['en-us'] = "Delete";
|
||||
$text['button-delete']['es-cl'] = "Eliminar";
|
||||
$text['button-delete']['pt-pt'] = "Remover";
|
||||
$text['button-delete']['fr-fr'] = "Supprimer";
|
||||
$text['button-delete']['pt-br'] = "Remover";
|
||||
$text['button-delete']['he'] = " מחק";
|
||||
$text['button-delete']['de-at'] = "löschen";
|
||||
$text['button-delete']['pl'] = "Usuń";
|
||||
$text['button-delete']['ro'] = "șterge";
|
||||
$text['button-delete']['uk'] = "Видалити";
|
||||
$text['button-delete']['sv-se'] = "Ta Bort";
|
||||
$text['button-delete']['ar-eg'] = "مسح";
|
||||
|
||||
$text['button-back']['en-us'] = "Back";
|
||||
$text['button-back']['es-cl'] = "Volver";
|
||||
$text['button-back']['pt-pt'] = "Voltar";
|
||||
$text['button-back']['fr-fr'] = "Retour";
|
||||
$text['button-back']['pt-br'] = "Voltar";
|
||||
$text['button-back']['he'] = "חזרה";
|
||||
$text['button-back']['de-at'] = "Zurück";
|
||||
$text['button-back']['pl'] = "Wróć";
|
||||
$text['button-back']['ro'] = "Înapoi";
|
||||
$text['button-back']['uk'] = "Назад";
|
||||
$text['button-back']['sv-se'] = "Tillbaka";
|
||||
$text['button-back']['ar-eg'] = "رجوع";
|
||||
|
||||
$text['button-add']['en-us'] = "Add";
|
||||
$text['button-add']['es-cl'] = "Agregar";
|
||||
$text['button-add']['pt-pt'] = "Adicionar";
|
||||
$text['button-add']['fr-fr'] = "Ajouter";
|
||||
$text['button-add']['pt-br'] = "Adicionar";
|
||||
$text['button-add']['he'] = " להוסיף";
|
||||
$text['button-add']['de-at'] = "Hinzufügen";
|
||||
$text['button-add']['pl'] = "Dodaj";
|
||||
$text['button-add']['ro'] = "Adăuga";
|
||||
$text['button-add']['uk'] = "Додати";
|
||||
$text['button-add']['sv-se'] = "Lägg Till";
|
||||
$text['button-add']['ar-eg'] = "اضافة";
|
||||
|
||||
?>
|
||||
@@ -1,30 +1,21 @@
|
||||
<?php
|
||||
|
||||
$y=0;
|
||||
$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']['es-cl'] = "Controles de acceso";
|
||||
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
|
||||
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
|
||||
$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";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Toegangs Controle";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Kontrola dostępu";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Controles de Acesso";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Controles de Acesso";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Controale de acces";
|
||||
$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]['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]['path'] = "/app/access_controls/access_controls.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Access Controls";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Contrôles d'accès";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Controles de Acesso";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "Controles de Acesso";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Controles de acceso";
|
||||
$apps[$x]['menu'][0]['title']['he'] = "בקרת גישה";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = " Zugriffskontrolle";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Kontrola dostępu";
|
||||
$apps[$x]['menu'][0]['title']['ro'] = "Controale de acces";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "контроль доступу";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Åtkomstkontroll";
|
||||
$apps[$x]['menu'][0]['title']['ar-eg'] = "عناصر التحكم في الوصول";
|
||||
$apps[$x]['menu'][0]['uuid'] = "bd47c972-5498-4541-b44a-d4bbfac69496";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/access_controls/access_controls.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,292 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* access controls class
|
||||
*
|
||||
* @method null download
|
||||
*/
|
||||
if (!class_exists('access_controls')) {
|
||||
class access_controls {
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission_prefix;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
|
||||
/**
|
||||
* called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
//assign private variables
|
||||
$this->app_name = 'access_controls';
|
||||
$this->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
|
||||
$this->list_page = 'access_controls.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 records
|
||||
*/
|
||||
public function delete($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'access_control_';
|
||||
$this->table = 'access_controls';
|
||||
$this->uuid_prefix = 'access_control_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//build the delete array
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
|
||||
$array['access_control_nodes'][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('access_control_node_delete', 'temp');
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('access_control_node_delete', 'temp');
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
|
||||
//create the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function delete_nodes($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'access_control_node_';
|
||||
$this->table = 'access_control_nodes';
|
||||
$this->uuid_prefix = 'access_control_node_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate('/app/access_controls/access_control_nodes.php')) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: '.$this->list_page);
|
||||
exit;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//build the delete array
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
|
||||
//create the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* copy records
|
||||
*/
|
||||
public function copy($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'access_control_';
|
||||
$this->table = 'access_controls';
|
||||
$this->uuid_prefix = 'access_control_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//copy the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get checked records
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//create insert array from existing data
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
|
||||
//primary table
|
||||
$sql = "select * from v_".$this->table." ";
|
||||
$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) {
|
||||
$y = 0;
|
||||
foreach ($rows as $x => $row) {
|
||||
$primary_uuid = uuid();
|
||||
|
||||
//copy data
|
||||
$array[$this->table][$x] = $row;
|
||||
|
||||
//overwrite
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid;
|
||||
$array[$this->table][$x]['access_control_description'] = trim($row['access_control_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
//nodes sub table
|
||||
$sql_2 = "select * from v_access_control_nodes where access_control_uuid = :access_control_uuid";
|
||||
$parameters_2['access_control_uuid'] = $row['access_control_uuid'];
|
||||
$database = new database;
|
||||
$rows_2 = $database->select($sql_2, $parameters_2, 'all');
|
||||
if (is_array($rows_2) && @sizeof($rows_2) != 0) {
|
||||
foreach ($rows_2 as $row_2) {
|
||||
|
||||
//copy data
|
||||
$array['access_control_nodes'][$y] = $row_2;
|
||||
|
||||
//overwrite
|
||||
$array['access_control_nodes'][$y]['access_control_node_uuid'] = uuid();
|
||||
$array['access_control_nodes'][$y]['access_control_uuid'] = $primary_uuid;
|
||||
|
||||
//increment
|
||||
$y++;
|
||||
|
||||
}
|
||||
}
|
||||
unset($sql_2, $parameters_2, $rows_2, $row_2);
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//save the changes and set the message
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('access_control_node_add', '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('access_control_node_add', 'temp');
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("configuration:acl.conf");
|
||||
|
||||
//create the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
event_socket_request($fp, "api reloadacl");
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-copy']);
|
||||
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -25,66 +25,26 @@
|
||||
*/
|
||||
|
||||
// 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 ( 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"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// 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"]);
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
$_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"]);
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,342 @@
|
||||
/**
|
||||
* Alternative style for Adminer.
|
||||
*
|
||||
* Klemens Häckel [http://clickdimension.wordpress.com/]
|
||||
*
|
||||
* update 2014-01
|
||||
*
|
||||
* new remaster based on style for WT-NMP 13.12
|
||||
*
|
||||
* Created by Miroslav Pokorný [http://fuch.cz].
|
||||
* Icons by Yusuke Kamiyamane [http://p.yusukekamiyamane.com/] (some of them were modified).
|
||||
* Slightly inspired by themes created by Martin Hořínek and Klemens Häckel.
|
||||
*
|
||||
*/
|
||||
|
||||
/*** Fonts ***/
|
||||
/*
|
||||
* @import url(http://fonts.googleapis.com/css?family=Ubuntu:300&subset=latin,latin-ext);
|
||||
@import url(http://fonts.googleapis.com/css?family=Ubuntu+Mono&subset=latin,latin-ext);
|
||||
*
|
||||
* */
|
||||
|
||||
* {
|
||||
/* font-family: 'Ubuntu', sans-serif */
|
||||
/* font-family: Verdana; font name */
|
||||
font-family: Verdana,Arial,Helvetica,sans-serif;
|
||||
}
|
||||
textarea, pre, code, samp, kbd, var {
|
||||
font-family: 'Ubuntu Mono', Consolas, 'Courier New', monospace
|
||||
}
|
||||
/*** Icons ***/
|
||||
/* Error message */
|
||||
html>/**/body .error {
|
||||
background: #FFEEEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlpJREFUeNqkU8tu2lAQHT8wtlEQcUKUIjVVgaiCVkhIlSq1isSKTdRNuu5P8AX5Alb9g+6zqZR8QNWmC3ZRa1UJIm0hAWpeNthg/OiMechl00UtHXvuvXPOnbn3mPF9H/7n4en1nmGAwy+BAUghTjB8iThY5v1EfMatzhB3Lg4Ib3FzfkPwdUSSKulCIZs6PFSkeFykCi1dL95dXx81rq7e2JZVxbwPf1WwIkuJxOmL4+Ocz/PSzHHgvtEIFhRFkfdzOTmZTu/ULi5OJ6MRrERYemFZKU4UK8VyOTcyTWk4HEKr1YLC+XkAimluPJ1Kz0qlHBuNVoizFsB+Tg7y+ezAMKQRqhuGAaZprkujmOZ0XQcDRfYymay7OKdFCw7Aq61kUtH6/TVpPB5Dp9MJSLfYiue6i555Hna3txXi4PDdSuChx7Kig3278zkYgwGYkwk0m02IRCLA4jy3Usb1qWmKxAlXAA4u2FQ6VuHjbhGcI3IsFgNh47Q5zHXCtzAH+GV0u0Vf02QpZCy1VAq+8Y27ntv2lDjrQ0S1T912u7eF/ck4lheGgpKqQrleD2I5BN2y+sQJC5zd9np1YFlLRldSUhQhCEKwYzRE9jzPas9mN8RZC3hoz4nrVi81TcUFS0KRJM5/yWQCUCwhbCTXxmPV9LwqcYjLkFUZJDzCwXN042OWreQEIftEEJQEx4mUNHTd6Xfb7qu2fdNAcg1d+IMMSNylAB3mDmIX7bWfBzjaA3iKV/dgabT7LsDXbwAfcVsM4TdCQ66zEmBDbfL/+IPJURMyKHK9PwIMAA7iHkoee771AAAAAElFTkSuQmCC") no-repeat 0.8em center;
|
||||
padding-left: 38px;
|
||||
}
|
||||
/* Ok message */
|
||||
html>/**/body .message, html>/**/body #menu p.message {
|
||||
background: #EEFFEE url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnZJREFUeNqkk01PE0EYx/+zu/TNanTbGCjWhrCmlp6MGl94kUQ9eOCC8chHMDG9mHjiE/QjePGOJsR4QQ8Q0UOJHqgVA6kiKQXa0th97+4OM1tq25MHJ/lvdmae3z/PzDMPoZTif4bEP+RVHBAJE5+QBAjm2d9dpsuncbtM66BYAqUVuGzmUtCFWsegb8yFpEAuPZpWUvGkHA1GQzw/zVSv/aztTm9Vfjy22laeLS0PZNCFzwXPLs5mZzISpLBjO1BttbsXGZfHIkn5Umy1uLbYMvx130TwtykSQSGQm746mbE0K6yqKkzTHFC1WoXe1MK3lVuZABnKcaZn4NL5K8PjiqmaYV3XYRjGgOr1OtZn3mJh5Akcox1OxZIKZ3oGDp2MR+Nyq9VCs9mEZVloqS0cHB6gXC7jdfol9vb28GhoFpvFTXiGJ3OmdwcOTQoQQpqmYePhCpQ3N6HbOii76Y17K36IKIqYeDfpV8q0zRBn+jOA67p4rjzFzs4Ovtz/ACp2YEmSfGXfTwFRFhtm4ZLjMz2DNv1d047MZ6UX/vT4+Bgbd/rgVQZf4LXoyCaWyZn+DD5Wj/Yboixi6vvcX9CHPzH4Yg/mMv/oDc70Gyw1d+vbAohBRgmubz7owAUGjw7CnucaVlXf5kzPwKMVV3Py9c/7Jep4BkkRZL8yONU5c1ee7RhqoVHydC/PGb8NeDMRwvogxa73hjAnjIm5QOaMEkhHZPG8FPKfSdMx7S29YZe0ba/s5lHwlvHLhc+eGvByxpjiSJBhTJBpdu4sK9lI56FhH4co4htdQ4UespUjphpjna6B0HdS6R8dzHtRY9IZ650IMACI9kBqNfbjbgAAAABJRU5ErkJggg==") no-repeat scroll 0.8em center; padding-left:38px;
|
||||
}
|
||||
/* Sql */
|
||||
html>/**/body a[href$="sql="] {
|
||||
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARpJREFUeNrE0z9LQlEYx/Fr/gXdJILegSQJEk13yrUxxDFwUhqagyAEF8E34BsIFKlozpqao8K9WVrCJSWu30d+F44SOjj4wId77nPOeTjn3HMjQRB4m8SOt2Fsv0CE8HleYoRdnGEPF8jhB4+4xw0ONLc7R4E7VJBX23JNtJBFSflD9YXjrT3fQhxpfKqqRQEf+MaLxuTVF3e3bo02yjjBrTMojD+9R52+sO3F8KxC13YmeELCHbT0vtBnE6ua1EfDGZRQO7qiQNEK1LiNRzynSKpjCJ+8fY1T5d/VZ+2Y5nQs8YVXPW01+zjGg3JvuFK+q1yoZ3tOaVnJpcOzqOtwzzF28rbaX0zWXbQMBvqc/r83cet/40yAAQCHjz1eQkhXqAAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* DB Dump */
|
||||
html>/**/body #dump {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjpJREFUeNqMU8+LElEc/8w4qeM4urvsCgqpEO7VYu/9YAmkNqiDRNdOQtC5k3QIL127BF78G+rQqegQlBRRhz24S0jWuumOrs74c2be9H2jkuJi+4XPvMe87/f73ufzPk/IZrOYxh1CFOeLOuEVn0izP6PRKFosFl/2ej0MBgNYlo1m06A5g98vQ1VVhEIhhMMh5HL3H3k8Hiw04GFZFjqdDjRNcxs0GjqGIwZFUWHZFkSPiIAiLxxFXHlQAXBocAQ2ASY4fwNKnxQ602LbxXzMU/hSKBRep9PpPcYY+v3+lIpFGvgRDAaJfxiVSuUN5X4+q8FOPp/fmxexcdJFbziG1+dFUFUQJhFv3r6XeZx7yG+g/F8R/5x00BuPIZNwJltD9WAffUNHq9VyeM5Sg2UR/3Fngo3uaRuZBxm6xhzX7grh60oRGbPAzCH6py38qlRgmia0Yw2H2uELWr7OaQszJ5KRduLx+NN5EU3bxPrWOhKXEohejCKgBhY2SG2mnkg8ebIbWxLx5+9jNNtNHOz/wLdP3zEaDLF7dxeRWATbW9t5QRDei7VaDbquwzAMZyZivV4nHKHV0WBYA1zYUJC4nMKYBJ0WP6M93xI+iuVyGdVqlSsvrTQTQVkLovi8iGQy2ZZl+YNt2+4tyGQONRaLBSRJcs3i9XpdCh6fjMCwC9EnQAnKuHrrmuuFUqkk0IkjVKuT27FBiFHHG47jbPKuNE5fAoimwD8QRZGPDp/TepN0ekfrR38FGAASfDL3E+dZ1QAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* DB Import */
|
||||
html>/**/body a[href$="import="] {
|
||||
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ%0AbWFnZVJlYWR5ccllPAAAAnRJREFUeNqMU72PElEQ/%2B1HWHZhgYPjkiMWxoLkaChMzgoJ0JhwlsTK%0AhsKQmFxjT4ImxL/AxOSKS/wPXAs7Q%2BEHqO0VXElAkc89BA7c3ee8PY5w5xVOMjvvzXszb%2BY3vxUK%0AhQJW8pB0F/8nP0gNvpAvPYvFYvfo6Oj1dDrFfD6HZdno9X7T2oHXq0LXdQQCAQSDAZRKj55KkuTG%0AyScnJ0gkEu7GsizU63VMJhOEwxHMZgznCwc%2Bnw7LtiBKIjSfeqUUkSeo1Wprx2AwQCaTgWmOKeES%0AjHxMcC4UF7opvIVCr9e7ZRgGstms6%2Bz3%2B9jfv4ePn%2BoU6KUgtgq2Xb2SQBCEO6enpy83nY7jYDQa%0AIbylo91u42e7Cb/fT/0H0Ww239OVb5d3BQLjMdnbfFOpVJ5zm8vlEIls4/OXr1D9W9AJOL/uQ5BA%0A5EAeloocxFcuBqRvotHoi3w%2B3y0Wi1gul6A9DOMtzmk9MIfoDroYkZ1Mz/DHWlwFcW9vD6lUau2I%0ARCI4Pj6mJDtQNW3duyPYN2PAE2xKOp12J8F50B2ONyZASVZ6fQqX8r1arb5LJpMHHMTZbLZKZBGR%0AvBgSiH0C0bgGoswvr5C/Wy6XDzaZ%2BIsqMOdTyIoIn18lAHXcz%2BcePHtyaND0Gm6CVquFUCjEwWP8%0ANdM01y93aZTmcgpF8yDEAhBlBk1TQI/YoihiPB5DbjQaiMfjUBRFvvm/Yf8wkR6QeJXEHxcDlcih%0Ax2IxTZZllywej8dtQVJUaOdnEBXBbUHTVEiyyJmqdjqdHYqdCPQJk8ZUVc0wxrZtm0bFmEsyriT8%0AA14yWcbXdN6jCj7QeeevAAMALZ84sPgoxOsAAAAASUVORK5CYII%3D%0A") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
|
||||
/* Adminer logo */
|
||||
html>/**/body h1 {
|
||||
background: #eee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAMFBMVEXAwMD/////AAAATmEAAAAA%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5w%2BL8AAAAAXRSTlMAQObYZgAAAAlwSFlz%0AAAALEgAACxIB0t1%2B/AAAAEVJREFUCJljYEAGjIKCAmCGoKKSIFhASFBQEcgFkoJCggyMwsaGQiA1%0AjIaCwoKKQkCGsbGxIEwErJcoBtAcqEWCgiguAADa1AZzThzIfQAAAABJRU5ErkJggg%3D%3D%0A") no-repeat 14px center;
|
||||
box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important;
|
||||
font-size: 1em;
|
||||
padding: 6px 6px 5px 35px;
|
||||
position:fixed;
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
}
|
||||
/* Logout */
|
||||
html>/**/body input[name="logout"], #logout {
|
||||
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqMU01rE1EUPZkMaGI+JEMkXyaNiKINzSJLBSEEaRbRVf6Ai1Jw68K9O3dCN3ZR/AUxC0UCwW4k4KKoGKVioGATg4kNY2aSTDqZifdOmmmKFr1weG/e3HPeue++59i4BTgceAogg3/H6+kUm+YUDdMEaIRICyBkvPeeZVwul5XlIEVBEGyMXz7C8vJ1HHz/ttT49C4/UPqvKG2T0BANcybNZEmSTpCdTqeFPcqp1Wr8X1q5eVtSep3w14/v8yoJCSwwF/kbmedsN5lMotlsol6vo6eMpBurd1OmgawwMQDGnCzLMkajkU3mkTeYUp2hUAjRaBStVgu6rmNC6yKTOex6x2MLPA8EAhBF0RIwyQaL8Oj1emEYBoF4X4SLIOwwiS3yj2KxiG63i06nYzngTRYFZmWZMwcfxgE2sLNRKNi9GgwGKNB3uVxGIpGwHbC4oihQVdWas7AY1/aZkymVSrZALpdDtVpFPB7/w8H+Txnp+1uYvHkyK+EqeiBkgsEgUqmUpVypVBCLxRCJRGaHuCDAF+fFwzvHDvSjQ+REPjCPx2PdBxbgNe7O5KgEjnjkAiT/udkZsMBYPxZgsIv5nMkM6pjVWo65EDvgzYXnbUBWcKLvi2SO/hDw+/3QNM3CXECldfHHIc7vKdh9vJo97QEJ7rP4PD1wp69cuxT2+XxSu922nPQHJEAJ2lsdDzjx1Dd4iNG6PJS2t+trZ1zu/Ep6KUxuJZWqcuA/Yz0O/KIdlSEuazrWqIIsNWT3twADAMZTN2W0KIqPAAAAAElFTkSuQmCC") no-repeat 2px bottom;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
right: 8px;
|
||||
text-indent: 8px;
|
||||
top: 6px;
|
||||
width: 80px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
/* Alter table */
|
||||
html>/**/body a[href*="&create="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAl1JREFUeNqck19IU1Ecx7/3drfrXVpJf6BEx53bjK02UaLIJdQsiOrJJvVaL/UePgS52LvPKdRe68GCQOohg4gYmGTZnEzndNPWXpqbNPfH3T+dc3BrDp888OP8zv2d7+/3+f24h/P5/bcAnMT+VlrQNO3URCAwth/17ZGRB4KmqpxODte+Abqu14wkZqbTvf68E//qPQKq5VVV5ekFuq52cmwfsPz3vcT3ynrte9WnGqoVVEXhVJaAw4e4DotQIp0VWOUBiVRMa+BInPpazSdi/RCoVlAUZReB9quIR45Wdp5ZWsI5u535oUgEF51O5n+emyMEHaDaOgIwAq8IfF9ZYf0ebGrCdDTKem6WJHwJh5lPF9VQLU+zqORy/QzOmM1wyTK2SiX02GzoJRT5YhHnHQ5cIBQiocn5fDi7uGhnLTQSzCeTjEASRczGYqyqidIsLCC3sYHc6io83d3oGR29ziuVSq2FKsHp9nY4CEWxXIarsxNuqxUFQmM/+gfq5ibuDg/j2fY2ptzuqV1DrBJE19cZgWg04mc8zgiMlXn8CI3hZr8HjwMzGBwaQjCRWKYEfCOBra0NXYSiTKo4ySzMLWlk4+PwEvHkuxA8fTIsZC5UK5RLpQONBLFUihHQFQ5PIJ98gSuX+vDq9Ue0Wu+h+UQv+5GoVshmMqLBYECwK7/zh4u1t1XIxPB7+SUTvyWV3Zf9OGbuZzGqoVpOkuWHvMnUsddjueNMeZ4Hpz1Pn7jW3oePhyLpw4n6uFYorNGmJWItxIQ9cqTu3+Ams1sYf/NJn22IKcT+/hNgALjZYbRNSSf5AAAAAElFTkSuQmCC") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Create table */
|
||||
html>/**/body a[href$="&create="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi9JREFUeNqck8trE1EUxr+ZTjKZ+kB31UwtSUiVRFykRsGFKGkEF7qqe5e6FARdtVBc+B+0brTg1pU7dSGIWm2sMebRkDQNTVMSoUWC2qZmHp57kkzTuFB64HK/MzPfub9z517pxtTUNQDHsL+oKZZlHX82PT27H/fE5OQtxTJNyabkyiJg27YzqDAPW8y9eef9QuwIhFc2TVMWH4iIBySex/27OkY65rOd510tPMKrmIYhmVxAwquSDb/SpM62eOVxjVasWZDovdCWo8lsH4bwKoZh7CGwqtu4GzrKeaJQQHR0lPX7bBYXwmHWb1IpIjgB4e0hABPEVCC5ssL9HvB48DGf554PahreptOsRQiPQ2DSx7sEwOmREc6/lEqIBINtGip0PhRiPZ/JQHiYgAv0EWRWV5lAU1V8LhZ51UFBk8vtIWgXaLWcFroEp4aHOc+UyzgTCLBO0n483ZlDspGGbul4EnoE4ZV7N1EQiMivrSFHFKrbja/URmp5GR6ieVddwNnoGAq/ivwbuwRyP0HQ6+V8iYqEfT7cSdzDfP0TBqlIw2wALQvxF1dRCX+bUHaazQGrbw+K6+u8ByKy1MaHSgLeeLvohrEB76XOAuUlXfm+uam6XC48Pvmzc8LVv+7WuWoUqZfJ9gm8LEN+TQdKorniriuNWq3uj0Qe/s/l2b5evTl0UR+q56t17bk+J2+5KuLAazQO0VD+WeG2+wH9vzEMSIuY+X2fnvz4I8AAYtpfN5Cu7WwAAAAASUVORK5CYII=") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Create new database */
|
||||
html>/**/body #content a[href*="&database="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjpJREFUeNqUkr+LE1EQx7/7g93sJptERPFSbCGSJkUKK20CinB4d8UVQWytAqIiWEoKi4CVlYJwWNwfoMVZCIJWFhcuTQiCORFDJN5tNtns5TY/Nm93fW8TNcHTOwdmZ1hm5s18Zrh8Po+ZrFFdwsnkO9Ut5og//4zH46WNjY3njuNgOByCEA/t9iH1fUQiCjRNQzweRyIRR6Fw47YgCFgowIQQAtu20el0wgKG0cdo7CMa1UA8Al7goUaVhVb4fzbKAQE1AedPFVM9eQEaPk0MZsleqPMyP0KlVCq9zmazq77vYzAYzEYhlEEEsViMzp9AvV5/Q2N3jipwsVgsrs5DNMwDOCMXkiwhpkWRoBCvrawv3y3cYhsoHwtx37ThuC4UCm7iJylEQFHl/4H4e3af845lcPQWfm3Aw2PjCb7sNWDl2jdPm/FnxCcQMplMGOt5HqrVaoraNBuh1WrhW+MreoYBx+rB6fawxb1F7moOH5rbg70znafmqR5ERpwJtX9CpEn20MGL4SZ2x7tQeQW2Z0MccCqRgx3aVkVsNptIJpNwXTdYhEiwb1mwXQe1UQ3n1y6ED5nExKX1yzp19fcv30Esl8tIp9OQZVn82zHpQQqNV58hiiKk5Sg+bdaak4hnUEYVlqTQ49BSqZTKAtixSJIUjiDICtTRAe7LdxCNKbi3/QBdrwv/kHB42L9Oc/thAapnLctydV1/xGAGQTDbATgq7AOe5zG54q/4ZZzj2sFHlsNO54cAAwDujTg3Gh40tQAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Privileges */
|
||||
html>/**/body #content a[href*="&privileges="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlNJREFUeNp8U11Ik1EYfr795kynaBBLglbtqiyRSMiMunCCF0FgBP14U5d1JdHFJAKD8rKrEAIjqMlGF/0hTHKLSpi15ZoMjdZgbi23ydzn3PZ93/b1nuFkK7cXHs457/s8z/ee853DybKMckxbVNAowSkUOELLXoJhqxQlfCwW4RcKkAfGpG2NCtXBSUUMtuw1DR3qGeqVtXqjkOUh55LBlW/TPalY0EactwR5R4O8KHe27Tt86fjgyOWvTmvg15LbUShKMHTs7zh5+sI173ubcu13KEzUhbJGUWmQE3Cus/+G2ee2BoMRhx369WFla2Y4lg7Y/QuvgkdPDZgZp1JT1cGmgANNzXvao8n5sEoHM6XM5dqfjdB6d4PKyDi1DfIynxdyOXP/eFdBkpBKxZHhk9BpJOzWyhAEMcc4lZrqLYj47PnkWCySOJ9OYy0WRTwSBJ8IoyDl4fniW2Scmh3QIc7MvrEbE6ur+WMn+kxaXWN7g6SHCCnhdLqXAz6/leMwU7MD5lEo4rF37oNl8tGYq7GlFSq1Bi+fT7m+e/0WVmOcegYsRMIsQc0WSnVpUG/lxH/JVVsQpf9rticT72gYLSfpNqJmB+xWV4BjuSs3b5+l+QOWY+KfsToG9+zAcgTIZkso/a6Jh+OvaX4nswk8dQGTrjoGLF7MAUsrQJpHjq1v3R29yPMY+UHGofgOJ8ZeYxnsMRE0hKar3bBGPfdlGqf6DuI85fSEXeyjlRqu8jlzHMc60hGauww4Y2rD9UAcz3wxzFOObSlN2CDN9nH/FWAAi5Yew8BvpusAAAAASUVORK5CYII=") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Process list */
|
||||
html>/**/body #content a[href*="&processlist="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAj5JREFUeNp0k8FrE0EUxr/ZrNvEWlqITdKqTS/ai6AWTyIWFHsTETx4KF49KR68+Q8IHqwgQr2pBasVBEUFL6KtejBLQRDEoiKShBpzWGya3ZnsjG92Z9co6cCPN/Ptm5n33r5huD8MM3acP3LOqbfWWC6Xw93lewFpVf2BnfmFzYaFUMFQ7nQ6E5zzCW1pPa51triR+B4mFo0dM/NRG0IlDnuFECPtdls5jgPS66S9gUy/XyROEw+NZVr85wAuxG7f91U2m2Wkr0ZqmEbLelkbXCYOewTn+4IgAEUC0q34gPSC68Qj4hpRjtIHijaC1GF7KGUpDENQDUB6VEB1zAF76uvpa0MyTsVF1BEYlIyjkfKvxp75yYZDxGMznzLzKRu/KUknTosLDs/z4hQCk1ohvfF7V/6XiBPEExs+OQrSMwyNnw00m83YxY9/rxphYLso3R+SmbzRbS0ozJFjBQ3ekRk6rI/2ZSgqWke6/r4zunjcbNT2KvFcW8Yu9LnTZ09OSqVQ9Wqoe3WUBooobBumFpBYWnjhkuNBdkP07MQMDlgbX9xP5dzk4Gg9oN7JAuushdCRWLm97EJilr2XH1BTR8l/LmlvGg+IlzqFeQg5+/HmOzdfzAODwFBhCKu3XFfrqKp5VKKCXiamjf0WXZ4WtUT2uDWDGatS/rxfaRutS6w72qUedkyfsgXr9Di+qhb60fJW1vJ0/gJeqbek90fdGlMj7hBXCMc0kstMKAPE1v/qo18BN3Q2e85/BBgADNADzS2n40UAAAAASUVORK5CYII=") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Variables */
|
||||
html>/**/body #content a[href*="&variables="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi5JREFUeNqMU0FoE0EUfTvZlArmFpR4L0jT3HvoKR6EQG6eC5bQeuwhIAhpYREUDz2IYKG0SEvoxbOtBIVC793oRTCQQyOlFGNNUrK72Z3x/8nOpkUQP/z9uzv/vX3vz6z1aG0NHJZllank8O/4LKVsySiCUgrfjo9h8w0H1Xu76+ubAS2OOKVERGtm3XVd7DYaT/hblN/53f2FBQhmi9OSDBqNdAaeh+HVFQaDAfr9vq7vHWeT+h4QdsZIsiMCx2ExtaBrOpWaiA5DhETc7Xbxpl5HcXb27et6vUYrzzWBnBAIBgtNg79IisWitpPJZPDRdX8loJAI4qQ5jgnarRb2trbQabfhk/QP+/vwyI4Vk3OvwYmI2ONMLDQODvB4ZQWfDg+RzWbh+z7SQsCmZBLuNTibLzcsUBMD+P56nSJLU7aN1JhATCzwkMYpjIJSuYwXjoOHpRJ+XlzAox0Z9HqYTqf1bLjX4OxwokDPgLNQKCA/NwfeVkmDe1qr6cqZIoWEsRIFZt8pEwVfm01UV1e1nebJCZ5Vq/hCB4nXtAXqNbibFlgBn+dcLvH/bnsbrzY2sLezo58tvasTC+L32ZkhSHaBIwgCbYcrK9E13mbuZQxjRevoCN1Oh4+tHQ8CndNTjEjeD3pfWV7G0uIiliqVRAH3MoaxHLco79ydn3fUtaCBqUhKRcdY0c+l6CdTXhgqn565lzGMtQ1B7/z88nY+/xL/EXI4vIwJwj8CDAAVoIrz1xox8QAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Status */
|
||||
html>/**/body #content a[href*="&status="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAftJREFUeNqkU7+LE0EU/mZ2d3bD7pqckhQqB4YDuQRsTj2t1ULESkgnWKloYRMQizQ2dhZXxkq8fyCFjdrYCAqCCIIgLCgWIkQ0m+Q2+9P3ZnMrNsJ5Ax/zivd973vvzYiiKLCfY/Z6vTbdmwR/j9yQ8NrMsuxsv9+/12q1ulmWIk0zQoIk4ThFnucoTRoQwtQwTYXxePxhOHz4wKSEA7PZrBsEgU5mkKjGv2JCdzQauaZlWflgMECz2dS+eCZl1aKKGUmSIIpiSMkOTO1Sz4BsCiZ3Op2qCltfnFpD9vK9Jk4mIWGOet3X9hnz+aQSkFyJSbtgUnH0EFWMiDil5BiW5RBKMrmmnOiPgBACcRxr4i6c1RbCcIbFIoNt15ZEtXRgUTzVApKSJdvmaumZ4/pm8CEdeJ02jmzdROPSaS1k2w6UsrWIdkCVjdqFk0g3T2Dx6Su8+9eqRXvrx9C4dRE/7j6Bf/083HNXcLi2go2VNh5fvVMJSPHiLSbvPush/nz6Su/dXV/DwduXEQ6fwXUbyLbfIC1yBAIIiMhtVw4cx9F98wC5HaU8qG8LTB89h/M9gUG9S2n89Qx3dsoZmPSILKVUtffyWDTAMYyPvxARUUqxrCgqgSgKaa11T/i+f8MwjNX/+Ujk9gtL1pYfydwjP+UPJfb7nX8LMAC+uy+OK4sAWgAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Alter database */
|
||||
html>/**/body #content a[href*="&database="][href*="&db="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAltJREFUeNqMks1rE1EUxc98kMlkMkkqbaXRhaEStCAhaDeuKii2JBWFtiqCYFcBof+BKW6yU3FpyUJxU1Eo2IKtXdRFV7EiFMG0pVAsxnRmYpPWSTLT+fDNpGpCwfbC4T1m7rvvnt991PDwMPZjkKgLR4sfRNPOhv3zRdO0rmw2+0xVVdRqNRiGCVn+RfYWvF4eoigiEAggGAwglbp5n2EYtBRwwjAMVCoVlEolt4Ak7aKuWRAEEYZpgGZo+AS+pRX6v41SgE0Wm7IaQkNHL0DSGwft/cOmq+ZotvApk8nMxGKxpGVZqFar+1YMwsALv99P/Aexuro6S3KXTisKhhYXWwqcT6fTyWaIkrIDta7Dw3ngFwUECcQriRv9Y6nR6f58PncoxC2lAlXXwRNwe1aIQAR4H4ceWY5EFGWqCDw9BOI/7xbV8C/JRewwzJnI+Ph1GXjIHjqFvxMwsacuYX2Dw6P5+eTV7u4nt2179sgQ620S9rhF3LmWQDwen5Dq9ecjwDLrJDtB1oMQf5ZRqang6RWYpfe43JfA1NsPuHBOqC6vnFzOt7eD3dzcRCgUgq7rditEA1vb29C1zzCNOQwODGDyzRy6e8fw/dWLfEcHjYVyGWwul0M0GgXHcQd4UHoRgvYOg8kEXk7OoLPnHtpO9JILHjNOl2tra+4YefI4xHA47GNZ1n0sHo/HtVBan8Stu6+RnRjB8bOj6Dx1EQxLQ1EUvlAodJKzu4QzjhGFeZ6/ZNt2u2mScdm22wCx8WCoj/76ZYP5uFFkvlEUZRM5/2XSwQLJKfwWYAAtt0zt3hIutwAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Database schema */
|
||||
html>/**/body #content a[href*="&schema="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNqkU7tOAkEUvfuABIgsyksTAkgBtISS0kIbYk/sTKgt7PgF/QEK/QMaSDREjQmFNhu0oLEglISHbniEAAE8l8AG2O2Y5OTOnT1z7rk7M8JisaB9hkh7DjmXyx2KoniGuRvozufz19ls9lev13VSJBIhSZJMeVI8Hr/MZDLXwI3T6VQqlUq/2+3W8FEXGA6HNJ1ODbzRaFSTG43GMUTOmcQR+ZOiKNlNm+PxmFqtlm2Xx9/gTIp5PB4lEAiclkqlt2Kx+Gmz2R5kWVYnk0kSnHy/31exwcDTNO1bgB0P7KZB9AEtCBbRayeRSHABdpKvVquEnk15MhY76O9x07LX66XBYKDnbrebms2mgQcBks2OxmKxEGzrOaxTNBpdblgPOCL+0QYBq9VKvV5vay0YDBIu3BE2XbAe0EH+jPhLDoeD/+RWdZzCGlm73U4+n49SqdRVuVx+QdUFR84BEkyvJ/cmL82lUemEJ+Fw+EBV1bs1J5lM3iLcS2YC/D64P1j+wVxdIeb3+12hUChcKBTecYwf7Xb7a9MBz1mQS1u5m1VcAq5cAN8LF6BBXAXquwLC6oFJJhA3wLwp33Jh3+f8L8AAZ3ntkRsbeCkAAAAASUVORK5CYII=") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Refresh */
|
||||
html>/**/body #content a[href*="&refresh="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAt9JREFUeNqkU0tPE1EUPtOZQh9QSVsKtAgB5A3RWDRaU+PCR4RUDSZGSTeuiDvjD3DRhJ1xYeI/MJi4wMRHosTEuJCNEqJBQQtFaAuhb0amnee9nlsLNW5cOMk3c+fc8333nO/McJRS+J9LYLfjD1ZBMJtBEAQw8byX47hxDAcQPZW874g5PGyGELLJ83wY34Nvb3omhb8EQwJPI4cO2tytjRanwybYWFAs6v2JtByMrktXCaVzhq5f2COY9qmUhqy1MHXltOdIm9PSyulgK5UMUBSCZXK2dpeldeyk+4yO5PCY14/PaguUEC/PkchYoGk4tVmCkqrLK1tSMpEuFth+h8/ecKzf1ZVNy3D9vM+/k1dBU9VqBbqqjnf5rO6tuAjZ/K785kPiy3qycBeFRzRZHonGcq+mX0bnPS1WWI/mQNd00BWlKqAqyim3w+zcyRfhayybRPX7aNi0JIpsL4w4cSs86BfzJWhwWcBiFVi82gKe0s1znE2SNUhuFwo4iWlD0wAdZ94E2ajvPZyb/9NtnNT8vgBTkxQdJIOU18QwwDB0qLVY2XgnmRDrGUn+kcPt9c1NdfT568X1aguyHN0uyEXJJIDjgLUBPZlQSzLkUinIZzKwg8Aqj9bV1ZzDnKF4erdRUxTzvgC+vF+LZ3KiUAstvW0+PO0Olj1R2cMu6CjGrnn72lswh9tIZFWM71YFVHVmbflHhtitkODtlqHRwKCnrTGCU/iIeIfr20MXAwNJcz1lORvRuIScbNkLZpAj/Jj1HeLttinX5dHhkk7BbubAUVPWF0WVJCWNxqwCt5J9+mLBKMmzaPSW+OjGbwE0B0yePjD1XgqZfMMRc0+3m+vscBKni33KoimXjdHV2JIWjX4mycUn5NuzGEktQ5lbEWDTcCHcnGegmes8GwRn9yDw5k6MSaDLC5BZ+kRXZpdpfu0nxtKIDHL1PQFWq60C4R9/sFEWBSgil/wSYABg+JOXZhLaRAAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Show structure */
|
||||
html>/**/body .links a[href*="&table="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoJJREFUeNqkU01oE1EQnk02iTFQE7QihUKRkKTF1iU9+FdQCoWYgAcPegkIeiiIWiHgwUvpQXs1Ggo99OYlFwUhWAhYhZJWUmhMxJbYYk1LFDcmJraSv911vjQbevPgg9kZ5vu+eW9n3hM0TaP/WSI+gUCADAYDmUwmEgSBUNRoNJ5jaKjNSyuKsqRjjUaDVFWlWCy2X0BfDJ5nd5r9KxZI0Wh0BuRgMHibcznGrrD/wD6hawwHxBdcLte12dnZGYfDcYOFhkJBpnL5F3Y0IAcMHHB1nYAj+Xw+xHeZ8FSWf1BPTw+trqY2JElyAkilUhsej8dZKhWpu/s4jY+P3+P0s/n5+f0TVCoVqlarL0Oh0KTZbCZZlmlgoN+pqgrBEO/u/iZg4IALTecX+BQX6/X69Xw+v8e7bYqiSMvLy+t+f2AGhhg5YOCAC43+7+T1eh+srCS1hYU32tJSQkun09rg4NA0TwLTIMTIAQMHXGigbU2hVqsZq9UaNZsKKYrKoxRZKDYwKizEyAEDB1xoOk3kzo6xP4PExMT9WyMjl/q2t7+npqYevkBucvLx1d7eE9Li4tutcPjJXEsoCO+z2WxcP0GcC3zmDt8ZHj7bVyyWyO32SLHYOwl4ufyTdna+ELCuriN2nlSEC2x1mshdRZGbkchcSJaLfCOtFI+//prLbRIMMXLAwAEXmk4T+ZLALo+Ojj1PJtc1t7s/bLfbHyUSGQ2GGDlg4IALTesd6Y8JY7JarX6bzTZtsVhOwq+tfdMymZx2MAcOuPrmrSYKaDHRUbZjbIcA8sM6xQ9sADFP4xNf54/t21tnk9kKrG3qBdCLw20T//GCFbY9tj+sVf8KMAACOoVxz9PPRwAAAABJRU5ErkJggg==") no-repeat 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
|
||||
|
||||
/* Edit row */
|
||||
html>/**/body table a[href*="&edit="][href*="&where"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcwNEVCNDY0MDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcwNEVCNDYzMDM4NzExRTFBREUyQ0JDMzAwQUI1NjI2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MT7FiQAAAiZJREFUeNqMk1FIU1EYx/9nO3e+NranKIw2ErM9SQQXxCKMRdFDCWEaNIuIetseQiIKG/jQQ4H0kkQxdLRaYiijtdWwljjKjQlNRQPHEhWUjca9eb3bPd2tFTdrrgMf53x8/98533e+cwhqDFsDQccpILHYXvbv+f1NBcD5DfB8BcZpLfDAvp9+YrE81c+azc6jLlf3RE/PLgWgtBaoGVZZltv4dLpbcjph6+w8Fhgc3CD/AQIMhzOr5osOV7orlUrBaDTC29gY2L25eZPurwfOtAIHW6rUosKyjOtXr7ns4bEW7G1+Bp7n3Tv1eq+V42bojfMAIdvDpzv67MWiDIvFguFHTS8FgfrnCJmZ4zhUvUQtLEkiVlYWEJ98MW7dg35F0SV/yWgtWBByyGaXEH379L16oFtPyRutlG4H53KrEIQsXo0ORQ0c7qg9C2+V02rw2loakvQdwz7PhMGAXkYR0krVlpaN/gteXp6HohQw9MQzqcK3GSO/Yd8YgyiKf2bAGBrEPC6fdfTZM5nPqq/g8YA3pqZ9S42V4ZEww0iI/VUxFSUYCkW0nbsSOT415YbJZMbDB76PtARTvA5GgWBUqdosmhdJs413tBOdbofR1CXev+uI19Ux94ckCb77xGr9NdD1PE4eOnKhdfR5/3Qk5I99WUIgkkBcLcykxhWNFbf4pd2V0htkl06QgdkMYskFTOdFtlERF0qXXZm1a7kSL9sPAQYA2Q4Ie25SbgYAAAAASUVORK5CYII=") no-repeat 5px bottom;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
/* Hide text in automatic selects */
|
||||
html>/**/body form>table a[href*="&edit="][href*="&where"] {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* Select data */
|
||||
html>/**/body #menu p a[href*="&select="], html>/**/body .links a[href*="&select="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqck8tO21AQhn8bB8ehRe0SUEBOlIsSVFGqqlK3oey6K+9A96wTKU/RFU/AG7CrKhAg7gmKiJKIplFWqItWIQEfuzOT2LmsSo408j+2/5lvjo+1rULhM4AFTLfahuu6i3vF4rdp3F/y+W3DVUrzKNk8BTzPC4IKS3h8Hc0Hz49zr8BeXSml8wu8PsU1uW7EhjpHOmd7wX1fs4e9hnIcTUkBDfs1DzGjS5N1pPOGRR3bLjR6ztoNNJm9ebDXcBxnjMD99YCdzGvJT25v8T6ZFH1QLuNjNiv6++UlESyDvSMEEIKcCZzX6zLvXDiMo0pFZn5hWfhxfS2aF3sCAkUvDwmA1ZUVyS9qNawnEn0aKvQhkxF9WCqBPUIgBSYISnd3QmCZJs6qVekaYZqbmzGCfoGnp2AEnyAdjUpeajTwJh4XfU778S6d7tNQISlA3rFN9AkqzaYQmLOzuKIxuGuYaE4H++F/RvbqVEVXE+cgsbSEFFH0Hh+RtW2sxmLo9npYoy/yNpUajkBeo9ftzkwSVFstIeBVpjH8rhc0xigBe43f9/dmKBTCburv4ISb//VvsYe9mmXbX/VIZHman8ntdH7y0BbFSwrjmX6H4s8/AQYAQChL+KIinhAAAAAASUVORK5CYII=") no-repeat left bottom
|
||||
}
|
||||
html>/**/body #menu p a[href*="&select="] {
|
||||
clear: left;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 18px;
|
||||
margin-right: 5px;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
text-decoration: none;
|
||||
width: 0;
|
||||
}
|
||||
html>/**/body .links a[href*="&select="] {
|
||||
background-position: 2px bottom;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Edit Sql */
|
||||
html>/**/body #content a[href*="&sql="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY1Mjg3MUE5NEQwOTExRTFBMTlFQjAzMEMzRTgwNzJGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY1Mjg3MUFBNEQwOTExRTFBMTlFQjAzMEMzRTgwNzJGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjUyODcxQTc0RDA5MTFFMUExOUVCMDMwQzNFODA3MkYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjUyODcxQTg0RDA5MTFFMUExOUVCMDMwQzNFODA3MkYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz67SGPfAAABvElEQVR42sTTSyhEURgH8O94jRqTJg1lo6YsptGIpEzKa2FhRGhY2chCWZDSbHATmkgkC81CInklpCxGmlGy8QqTopnFJEXyiGsadDv+p87UbKwsfPXr3PP67nncyzjn9JdIoD/G/ydgiFKUXfAIJmiCLOgEC7zBNmyCAlabwZAx9f6uTybqFRk2oAXy5LNoG4ZRyIAq2W7bXWBkNBq9DRbLClcUvsXYvtgCEpEeArAqV5YPl8v9/AmlX47Jw4WVmUym7MXTU2e1xzPxzPmwSDAOTqiEJZkgObZH7zxpot7iIGvkg3rP/Y1Ws9m8fhyNzqHDm4ROnzzMPnEmsAcpkBhLUlJAmeXF5Kiuc9mUAfdrmi4xFInoL2K30CYnrcOgnJMi0ecXVTgqKKe1zWWbnXH7dvx0FwxrN5qmUTtjhSJBB77GIpTfoJMJrqD0IED2+wca6+5xGacn3SeqykcCQYqiL0lVVTHHIwaH4VCWYjXZUAxbtXb2ytVrrnSyUH0VNctDDsdZE3tOlcvVxR8eIhPOakrY0+0jDV0E+RHqX2JX8AGq9GukQS4cwAvUQLq88lT5sgT273/jjwADAGLJkFFBwODaAAAAAElFTkSuQmCC") no-repeat 2px bottom;
|
||||
margin-left: 10px;
|
||||
padding-left: 22px;
|
||||
}
|
||||
/* Inline plus */
|
||||
html>/**/body #content input[src*="file=plus.gif"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAelJREFUeNqkU81qFEEQ/tr50UncrI4iwq6oRJCIIV6zxFxE9iCIbxHwXXwA32CPXgRFEZFgPGgiIcfNn0hgYU1mnV070zPTbXXP7Mwke4hgNzVT3f3VV9VV1Uwphf8ZDJ2r9GUXSVuhdZvEP8PmkOQtFF5CqaFttpRauXN99vmDmwtNz7ngVtGnI+QxF9/3Nme3ezt6+cJGavbbCzfmm+JP5ApEBXgwGJh/vV6vcrj3G/ea2wc77ZzAePAtWG54HBaoMAzxefm10VufnqBWqxVnnue5ZGeuaiPJQoyiCJzzAiSEOKFXzxhjGNsVBBpUJdF6v9836/0f+5BSZga2Dd/3JwniOMZoNMK3x+/R6/UwHA4NgeM4+PronTHUMvemhTAKJwnSNAVPOLrdrsm8BmvjseFYQDVKnKRCEGfKkThC4AR4uPU0uyhhNpY+GKP5j8samY0ZcsaodPGpCAIrgJoifWpccJReL+vUl3WUNCciENQBOIcqqiQ4j5JYNxfNMoLIZPcwllQGD2UXkse59VamN072suSSSiZ1S8PCLt3nFq5Jnt61G+40m2aWua+dvwo/13MhnDj+MviZHkQddMQaM5AZdhtL7BmuYJHWl854TAF+YQ2r6hV+q12Wp6eGMs//OhLd8X8FGACYiuElnjs9iAAAAABJRU5ErkJggg==") no-repeat left center;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
width: 0;
|
||||
}
|
||||
/* Inline up */
|
||||
html>/**/body #content input[src*="file=up.gif"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi1JREFUeNqkUz2IE0EYfZOZ3WySi9FAPLU4fwjEw8IUhyjXxUYrK8FOG8FWQQst7OxEUE7wOq200qv0GguR4+BEMIpwGDxNBE8vcMZcsv87fjPJrkl1iB885s238958M/Mtk1Lif0KI6iINLAfGzhOpEXZto9kkvISUDwHZE4OcvFA9svfS7LH9ZSttWOPrJeIi1Wg7vrO08rVS//idUWpOIArVt9qJmaly51ff6oxIO53BrFAojDpaM0f3lesfvtUGBlIbFFNMWo7jjO399HZFj+eufxnLm2bGIl1R8ZSugOB5LmzbTvD41oFEoPjoN9t2EOuEDAO1hjmOB9d1teDF/arm3W5XC6Iowr3LOZy8+AZccJRKRSogYMMKyCAKmO/7CMMQC3em0Ww28Wyxjna7TZV5eLfaBeccrx/N0pUK9Pu+1ihtbIAgCGG7ARqNBpberuPm/AYMw6B3Frh2t4n3n3qaCzMLyUzEOoHhEbb6EXoex9kb6+D0kkZmx0BAUPzq3AZCvwUzUwDjVP3wCEI7kYEdmjDSeQ0VvttLDISRpXxuvD2i2CD0tQFSalH6b/tQ1yQGZjYxTiL0hwaBp9vT86UrrInEgThOX/mseb50aEzr9Xsu6VRLg8Ndpf0PTwaOU9m5ZypnWBMixQ0oZPK7NeK5gu/Y7trKq9bWz9YT/H6wrMooghUPgp86AzZ5nNy2+ZnkJuSPZYTPF4iuKYOMqlIf599C3X73jwADAG6CADM79TwjAAAAAElFTkSuQmCC") no-repeat left center;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
width: 0;
|
||||
}
|
||||
/* Inline down */
|
||||
html>/**/body #content input[src*="file=down.gif"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNqkU01oE1EQ/l72vWTTZps22B+ltCiBRItYsYhSBIkXxUMv9qzgQaH04kEFe/WsIh486s1jDyJePIhIoRepogjRYipoNRBjmuz/Pue9dJf0VKQDHzP7Zr5vZ97sMikl9mKcT78kx/rB2GUKKoShXTgNwitI+QSQbd49k1emp/Zfnz05WTQzwtxZLxE3qbzt+M7b1W+ltY8/GB094ohClaucnpkoNv90zGYPtdnsPuXz+V5Fc+bYgeLah++VroDUAoUUk6bjOElVq9XC84dHdXxx8T0sy0py6XTWJF5B38F2B/A8F7ZtJ0We5+2Ie3NCUPfbPC7DQHnmOB5c102KFKFer2tfq9UQRd2LMLiB4eECNRCoO0AKEQlEAfN9H2EYYvneYSxeMvG73tAC6u0SBh7cnsKbp7MUc3Q6vuYoLtcCZEEQwnYDVKtVTI5I3F0Yp1YF7Znj/s0SThwZ1DFP90EygZiXghqB2tnqRGh7Bubv/NSFx8sDXQIhJp+5+g7CtMBEVnMUNxnBDtMQGQu5oXHML9UTcoyz1z7pXJoEDJFLRqAOaJ7QZ0j1aQGFgX2HMHdrMyGfW/iiz+K8guYQlyPQ62p4vnS5mcvEW8iPlXHhxtck7jWv03aJ19BbgfuZllgeDRynNDg20S/MHE8ZAgpZa0QjflbwHdtdX329sfVr4xn+Pl5RuyyAFQ7COD8HNnqK1Hb5mWQDcnMF4YtlCteVAF0pLP1V/p+pPbb+CTAAmwfytdL1/44AAAAASUVORK5CYII=") no-repeat left center;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
width: 0;
|
||||
}
|
||||
/* Inline cross */
|
||||
html>/**/body #content input[src*="file=cross.gif"] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe5JREFUeNqkk89KG1EUxr+ZubnUjJaipgtNtTZKxE1AVIi4yM5tF30Hoe/iA3TnQkTBRbZFKApCAl1142CJqLR0ZUNJJpPJZP70nJvcEK0SpAPfzD3n5vedM2dujCRJ8D+XODIMGMA4aYfibdLkCKZO+kxlP5FcwRla7MytrHxcLhazMp2WT5HcbeB5gVOp5H44Dqd2RdTb217a2Mi6vi/h+6O6lu9WV7M3jsPd7ppsQJqMTVO6rgtWdn8fev1YrpskkhlmzZBuLJ8qN5tNLJfLqgw/OX4sxyaaE2G/L8/z0Gq1cLy4iA+1mjKcOzhQ+RrFpmniy9oaUqkUMpkMNDcwCIIAYRhiwraxNz2NwskJLMtSgJQSZwSr6Xa7aDca/xowHFB7Xr0OO47vwazx4W9PJpozu2xK6hCY3N1hLIqQPz29BwshULq8RJp+x5JUTHODIRpkkKbv/GYI/ra+jq+FgjJgbV5dKYMX1KHmBh1ImgFv3pZKCr4geJZiVjWfV+2e53K9LqiQ5kSnfzwjmuIY+cxT8J3g+aF35nWVYJ1rx3HQ6R1pWNd0ewu8bkdRfkYI2zYMi/8M4oF0juGq7//8FUWHh0DF4L2XwMIW8H4KKFL8asRR/vObwHOg3ACu2YA6x0S/wHMunmHzrwADAPb07huzEp/RAAAAAElFTkSuQmCC") no-repeat left center;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 16px;
|
||||
width: 0;
|
||||
}
|
||||
/* Delete */
|
||||
html>/**/body input[name="delete"], html>/**/body input[name="drop"] {
|
||||
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE0RDRCQjlFNENFRDExRTFCRkZGOUEzNzI5RTFCODEwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE0RDRCQjlGNENFRDExRTFCRkZGOUEzNzI5RTFCODEwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTRENEJCOUM0Q0VEMTFFMUJGRkY5QTM3MjlFMUI4MTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTRENEJCOUQ0Q0VEMTFFMUJGRkY5QTM3MjlFMUI4MTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5zX5oGAAAB3klEQVR42qRSvU7CUBS+LQXaBgIpgSiJEpIuxMlVwgMwuOAb8Ah9AgZnJmfeABYegMHoGxiW6qAJJg3UEJAWaIvfKW1TjamDJ/l6b+893/n57uEOhwP7jwn0GQwGjOM4H7Aq0AGugPPA7xV4BEbAjJISut3uMUDMrgVB0CqViqrAstmsSI673e7SNM2WYRg3juP04Tf+VkFIBqGnqmoDlUie5zHLssI7GfHkYrFY0nW9t91uWRiEDxyqqVRKq9frDWSTiEhOcdAZ3dVqtQbP81rQ6rEClNkpl8uqbdsSSkwUDYkkVKLO53PS6S4M0JQkSdlsNpGj67qU0QftCUEAJsuyQpx4gDMsIjm12222XC4ZqvFfJZPJMGjjE8mGwyHb7/diwIla8DPggkFpf0+En2RfNP4oWzg/fgAo/obyLxFAnkwmf2lA/jZx4hU8rNfrJjLKwTAlGpKZxImeET8j9P0MsoVBYkmA4UUtnTjxADOaMPQ/xd6iPn8DtLEWi8UUa584UQuYLiaK4rhQKNCzafl8XgWUdDot0j20sVerlQnoKL+Pasf0SvFRFnBQAl6g+m0ul2tBjwucnwb37wj8BJ3uMZUG/k+AOeCEATzgk7qBwwcwTdDQDXyJw74EGAC1PioqQ6UN2AAAAABJRU5ErkJggg==") no-repeat left center;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
font-size: .9em;
|
||||
padding: 1px 5px 1px 18px;
|
||||
}
|
||||
html>/**/body input[name="delete"]:hover, html>/**/body input[name="drop"]:hover {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjFJREFUeNqkU0tPE1EUPvPoOHdaSSkUsYkY2xLTmpCQmJBAumBNZIFLoz+CX8Av6MpfoHHLhgXsTTWE7ohtDRhEkrGpQy0M7e3ceXnO2Db1BQtv8s3cx/m+87pXCsMQ/meo9HktSaDgnyABZBAbOF1GzA3sviDeoatthOnjgvAcnau/CT6JMbaZXVjIZ+bnU2xiQqcI+eXlonl0VDo5PHwqOC+j3c4vEQzJLJncWlpbK4SqyhzPA+fiYnhmzBYKRjqbnaru7m51f+5HIhJ5eCVJmVu6/mZ5fX2Juy4LguCv+UqYqhqG/GBvb184zrMXYWhGEWA+G3PFYv67bTPHca4tWiwWYzO5XP60VqM6vYwEPICV2+l0ymq3R4au60Kv240ghAAPU4pyVlWYnpxMEWdc4F4gyzoZlSoVME0TOp0OKIoC8XgcEokEaJoWCezkctDv9XTijIpI2h56FLYNjUYj8oah/kGmwajdaOuNd8EFOLNbrcXQsozG6uq1NUiQvRB94oxHUGk1myt3VNUwUP2mccZ5mzg0lwcC25/Pzz+BLHMDW2VQ4/8BbDFvOs4xcUYC2HWz6/vl95ZVxwPOUIQN8h2HQHL16qreC4IycUYXiS7IfVw8xtv4QJY3C5qWf6hpqaSi6GTU8f3+RyHadSGOT5BcxWac4n7EHQhQLaYQ0xmA2SJAaQbgET6uu4OL9rUF8KEG8Bbd4hS+ISzkekMBeSxN9YYa0kPsInrIDX4IMADJaAE/Me2jPAAAAABJRU5ErkJggg==");
|
||||
color: red;
|
||||
}
|
||||
/* New item */
|
||||
html>/**/body #content p a[href*="&edit="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAetJREFUeNqUU01LG1EUPW/yQsigUmOISZSkYxdVwW2lm4KkFrpwV6F/QGj3Lrpy4a9oN/0FBcFNQYWIuFHoIsRSWxzFkjZCsKaZNElN5r3eOzMOtEg1F87MvTPvnHfu+xDPVlYghFgAkEH/UZVaaxCy71ZXX/fLpslfSOW6nAtNjycfgEAQSqkQ19X7hTsgrpCuL2AozRIC8/cENo6091aKQL83bKBgsYiPrWOAxxPXkG6v5zlwA4FNW2NCdqC//4Lm2QiP40Q8UxDKB9euHgJxhez5AoED+DNX2lieToS97h0eYnZyMqx3SiVykANxDfnz4QkGd3Pf2MFisgs0NKxhidNaLVwPK5PBcbUa1plkEjzec3A53NQXD+w5l6y9+fz01jtQTL/3HbQc5xSmU2RFyjH1aOZG8qedsufAE2icn+cHOqk5+lCkHHtr27dy4Al0u0IatbgY+mg9V0sarwoHoC4xEWnDku2w53/BoQIHRrI0zUmeFdfrcbQTJsoOkE0kMDYygnFasEaziVwqhfzoKO6m0/hRr185MOTvTocFI1fbyOegEAO+VCrhyeMo2/ZfNY8nbkReUN8UsWg0irf3m0GHpIDsf9eAxxM3JmJkyzDNl4Rcv5dJtVpfRZCbhEFupQ8+XyLnjwADAJgWSEmnMNKYAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;
|
||||
}
|
||||
/* Create view */
|
||||
html>/**/body #content a[href*="&view="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqkU89rE1EQns1udhOCrk2KlxIhaaGHFPfQBFJYxFbc+gtvkQq5+uPoQfAPEHJQemnFIAFFzCFYycGLGEgVElgMRhG7OTRiKiaVKCkYSTTbbF5nYuJBDxYy8LFv3sw384b5lmOMwShmgxFt5AIcWv8wGOUg4jhCQ/gR7kHeDuIjIoN4iWgOecMCHBY4L0nSJU3TpqLR6GHDMFz5fF6koKqqZiAQaCWTya+ZTOZDp9NJIO8p9aURHIhroVDoRi6XU9Pp9LRlWWNer1dstdpAQJJIdxSjHMolTp/L8/wp7Lper9c77XabEbLZLCNLJO4zVZ1nmnaO4avYME65xCGugFWWwuGwG58vmqbZnysWi2FnC1ZX431/cnIGqtUSDOOUSxxstEQFHhYKhbFmszntQKMEn88H2awOc3Mn+wSHQwK73fenwC805HwiLm+z2b5UKpWerutWMBgcl2X5AM4LhvEe/H4FZNmN3Q1YWDgG8e4juLm5vLvyPP7ZePD2Dm2Fx1EtPGzUarXtVCr1vVwuNxRF4Z1Ou1gqvRIbjS1QlMAPj8ezdbt6Vzhz+qwrV9W/Iedq77qrSzvkEYcQHlyNG180gd8j6MuDDYF12bnIpvhxEDgzcjHiX3uyZgDPdVGGBW6gRkp0Imjv3D9yW5GfzUdOHP37+kV6/Q33X60uSqhL6R4wmCV35oIyu/H4XfG3DKEo7EvwDK5AF6W+y17vWKjqnz0AOxfEkUDY919TxxV2WXH71iYgsUhkmJBgT4ABAOtC+bduhTyuAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;
|
||||
}
|
||||
/*** Messages ***/
|
||||
.error {
|
||||
border: red 1px solid
|
||||
}
|
||||
.message {
|
||||
border: green 1px solid
|
||||
}
|
||||
.error, .message {
|
||||
margin: 1em 0 0 0
|
||||
}
|
||||
/*** Content ***/
|
||||
#breadcrumb {
|
||||
/* background: #fbfbfb;
|
||||
border-radius: 2px !important;
|
||||
box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important; */
|
||||
background: transparent;
|
||||
font-size: 1em;
|
||||
margin-left: 0em;
|
||||
padding-top: 2px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
h2 {
|
||||
display: none
|
||||
}
|
||||
#content {
|
||||
margin: 2em 0 0 21em
|
||||
}
|
||||
.tabs {
|
||||
margin: 12px auto 10px auto
|
||||
}
|
||||
#form + p {
|
||||
margin: 20px 0
|
||||
}
|
||||
/*** Tables ***/
|
||||
html>/**/body table tbody input[name*="check"] {
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
table {
|
||||
border-radius: 2px !important;
|
||||
box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important;
|
||||
}
|
||||
thead td, thead th {
|
||||
background: #eee;
|
||||
}
|
||||
table tbody td:first-child {
|
||||
white-space: normal;
|
||||
}
|
||||
td, th {
|
||||
border-color: #bbb;
|
||||
border-width: 0 1px 1px 0;
|
||||
font-size: 0.8em; /* x-small; font size */
|
||||
}
|
||||
#tables a {
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
}
|
||||
/*** Links ***/
|
||||
a:hover {
|
||||
color: #3b82ca
|
||||
}
|
||||
a, a:visited {
|
||||
color: #385a75
|
||||
}
|
||||
/*** Sidebar ***/
|
||||
#h1 {
|
||||
color: #222;
|
||||
font-style: normal;
|
||||
}
|
||||
#menu {
|
||||
background-color: #fafafa;
|
||||
box-shadow: 0px 0px 3px rgba(0,0,0,0.30) !important;
|
||||
margin: 0;
|
||||
padding-bottom: 0;
|
||||
top: 0;
|
||||
}
|
||||
/*** Forms ***/
|
||||
fieldset {
|
||||
border-radius: 1px !important
|
||||
}
|
||||
/*** Others ***/
|
||||
#lang {
|
||||
background: transparent;
|
||||
font-size: .9em;
|
||||
left: auto;
|
||||
right: 90px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
|
||||
.sqlarea {
|
||||
width: 99%
|
||||
}
|
||||
.jush-sql {
|
||||
padding: 1px 2px
|
||||
}
|
||||
p {
|
||||
margin: 0.8em 0 0 0
|
||||
}
|
||||
|
||||
#menu form {
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
.view {
|
||||
background-color: #FFFFAA !important;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = "Adminer";
|
||||
$apps[$x]['uuid'] = "214b9f02-547b-d49d-f4e9-02987d9581c5";
|
||||
$apps[$x]['category'] = "System";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "3.2.2";
|
||||
$apps[$x]['license'] = "http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0";
|
||||
$apps[$x]['url'] = "http://www.adminer.org/";
|
||||
$apps[$x]['description']['en-us'] = "Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL and Oracle.";
|
||||
$apps[$x]['description']['es-cl'] = "Adminer (anteriormente phpMinAdmin) es una herramienta completa para la gestión de bases de datos escrita en PHP. Adminer está disponible para MySQL, PostgreSQL, SQLite, MS SQL y Oracle)";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "Adminer (précédemment phpMinAdmin) est un outil gestion de base de données complet écrite en php. Adminer est disponible pour MySQL, PostgreSQL, SQLite, MS SQL et Oracle.";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "Adminer (anteriormente phpMinAdmin) é uma ferramenta completa para gestão de bases de dados escrita em PHP. O Adminer está disponível para MySQL, PostgreSQL, SQLite, MS SQL e Oracle.";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//permission details
|
||||
$apps[$x]['permissions'][0]['name'] = "adminer";
|
||||
$apps[$x]['permissions'][0]['menu']['uuid'] = "1f59d07b-b4f7-4f9e-bde9-312cf491d66e";
|
||||
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Adminer";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Administrador";
|
||||
$apps[$x]['menu'][0]['title']['de-de'] = "";
|
||||
$apps[$x]['menu'][0]['title']['de-ch'] = "";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Admin BDD";
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
|
||||
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Administrador";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "";
|
||||
$apps[$x]['menu'][0]['uuid'] = "1f59d07b-b4f7-4f9e-bde9-312cf491d66e";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
|
||||
$apps[$x]['menu'][0]['category'] = "external";
|
||||
$apps[$x]['menu'][0]['path'] = "<!--{project_path}-->/app/adminer/index.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permission
|
||||
if (permission_exists('adminer')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//only allow users in the superadmin group to use this feature
|
||||
if (if_group("superadmin")) {
|
||||
//echo "access granted";
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
function adminer_object() {
|
||||
|
||||
class AdminerSoftware extends Adminer {
|
||||
|
||||
function name() {
|
||||
// custom name in title and heading
|
||||
return 'Adminer';
|
||||
}
|
||||
/*
|
||||
function permanentLogin() {
|
||||
// key used for permanent login
|
||||
return "7bebc76d8680196752c6b961ef13c360";
|
||||
}
|
||||
|
||||
function credentials() {
|
||||
global $db_host, $db_username, $db_password;
|
||||
// server, username and password for connecting to database
|
||||
return array($db_host.':'.$db_port, $db_username, $db_password);
|
||||
}
|
||||
|
||||
function database() {
|
||||
global $db_name;
|
||||
// database name, will be escaped by Adminer
|
||||
return $db_name;
|
||||
}
|
||||
|
||||
function login($login, $password) {
|
||||
// validate user submitted credentials
|
||||
return ($login == 'admin' && $password == '');
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
return new AdminerSoftware;
|
||||
}
|
||||
|
||||
// include original Adminer or Adminer Editor
|
||||
include "adminer.php";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?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
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if ( strpos( $_ENV[ "OS" ], "Win" ) !== false ) { define("PATH_SEPARATOR", ";"); } else { define("PATH_SEPARATOR", ":"); }
|
||||
}
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", "/", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,198 +0,0 @@
|
||||
<?php
|
||||
|
||||
class azure{
|
||||
|
||||
public static $formats = array (
|
||||
'English-Zira' =>
|
||||
array (
|
||||
'lang' => 'en-US',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)'
|
||||
),
|
||||
'English-Jessa' =>
|
||||
array (
|
||||
'lang' => 'en-US',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)'
|
||||
),
|
||||
'English-Benjamin' =>
|
||||
array (
|
||||
'lang' => 'en-US',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-US, BenjaminRUS)'
|
||||
),
|
||||
'British-Susan' =>
|
||||
array (
|
||||
'lang' => 'en-GB',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-GB, Susan, Apollo)'
|
||||
),
|
||||
'British-Hazel' =>
|
||||
array (
|
||||
'lang' => 'en-GB',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-GB, HazelRUS)'
|
||||
),
|
||||
'British-George' =>
|
||||
array (
|
||||
'lang' => 'en-GB',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-GB, George, Apollo)'
|
||||
),
|
||||
'Australian-Catherine' =>
|
||||
array (
|
||||
'lang' => 'en-AU',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (en-AU, Catherine)'
|
||||
),
|
||||
'Spanish-Helena' =>
|
||||
array (
|
||||
'lang' => 'es-ES',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (es-ES, HelenaRUS)'
|
||||
),
|
||||
'Spanish-Laura' =>
|
||||
array (
|
||||
'lang' => 'es-ES',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (es-ES, Laura, Apollo)'
|
||||
),
|
||||
'Spanish-Pablo' =>
|
||||
array (
|
||||
'lang' => 'es-ES',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (es-ES, Pablo, Apollo)'
|
||||
),
|
||||
'French-Julie' =>
|
||||
array (
|
||||
'lang' => 'fr-FR',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (fr-FR, Julie, Apollo)'
|
||||
),
|
||||
'French-Hortense' =>
|
||||
array (
|
||||
'lang' => 'fr-FR',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (fr-FR, HortenseRUS)'
|
||||
),
|
||||
'French-Paul' =>
|
||||
array (
|
||||
'lang' => 'fr-FR',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (fr-FR, Paul, Apollo)'
|
||||
),
|
||||
'German-Hedda' =>
|
||||
array (
|
||||
'lang' => 'de-DE',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)'
|
||||
),
|
||||
'Russian-Irina' =>
|
||||
array (
|
||||
'lang' => 'ru-RU',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (ru-RU, Irina, Apollo)'
|
||||
),
|
||||
'Russian-Pavel' =>
|
||||
array (
|
||||
'lang' => 'ru-RU',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (ru-RU, Pavel, Apollo)'
|
||||
),
|
||||
'Chinese-Huihui' =>
|
||||
array (
|
||||
'lang' => 'zh-CN',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (zh-CN, HuihuiRUS)'
|
||||
),
|
||||
'Chinese-Yaoyao' =>
|
||||
array (
|
||||
'lang' => 'zh-CN',
|
||||
'gender' => 'Female',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (zh-CN, Yaoyao, Apollo)'
|
||||
),
|
||||
'Chinese-Kangkang' =>
|
||||
array (
|
||||
'lang' => 'zh-CN',
|
||||
'gender' => 'Male',
|
||||
'name' => 'Microsoft Server Speech Text to Speech Voice (zh-CN, Kangkang, Apollo)'
|
||||
)
|
||||
);
|
||||
|
||||
private static function getTokenUrl(){
|
||||
return "https://api.cognitive.microsoft.com/sts/v1.0/issueToken";
|
||||
}
|
||||
|
||||
private static function getApiUrl(){
|
||||
return "https://speech.platform.bing.com/synthesize";
|
||||
}
|
||||
|
||||
private static function getSubscriptionKey(){
|
||||
return $_SESSION['azure']['key']['text'];
|
||||
}
|
||||
|
||||
private static function _getToken(){
|
||||
$url = self::getTokenUrl();
|
||||
$subscriptionKey = self::getSubscriptionKey();
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'Ocp-Apim-Subscription-Key: '. $subscriptionKey;
|
||||
$headers[] = 'Content-Length: 0';
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
|
||||
curl_setopt ( $ch, CURLOPT_URL, $url );
|
||||
//curl_setopt($ch, CURLOPT_SSLVERSION, 1);
|
||||
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 60 );
|
||||
curl_setopt ( $ch, CURLOPT_TIMEOUT, 300 );
|
||||
curl_setopt ( $ch, CURLOPT_VERBOSE, false);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
//curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
}
|
||||
|
||||
public static function synthesize($data,$formate_key){
|
||||
|
||||
$lang = self::$formats[$formate_key]['lang'];
|
||||
$gender = self::$formats[$formate_key]['gender'];
|
||||
$name = self::$formats[$formate_key]['name'];
|
||||
$token = self::_getToken();
|
||||
|
||||
$url = self::getApiUrl();
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'Authorization: Bearer '. $token;
|
||||
$headers[] = 'Content-Type: application/ssml+xml';
|
||||
$headers[] = 'X-Microsoft-OutputFormat: riff-16khz-16bit-mono-pcm';
|
||||
$headers[] = 'User-Agent: TTS';
|
||||
|
||||
$xml_post_string = "<speak version='1.0' xml:lang='".$lang."'>
|
||||
<voice xml:lang='".$lang."' xml:gender='".$gender."' name='".$name."'>";
|
||||
$xml_post_string .= $data;
|
||||
$xml_post_string .= "</voice>
|
||||
</speak>";
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
|
||||
curl_setopt ( $ch, CURLOPT_URL, $url );
|
||||
//curl_setopt($ch, CURLOPT_SSLVERSION, 1);
|
||||
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 60 );
|
||||
curl_setopt ( $ch, CURLOPT_TIMEOUT, 300 );
|
||||
curl_setopt ( $ch, CURLOPT_VERBOSE, true);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
|
||||
|
||||
$response = curl_exec($ch);
|
||||
$filename = "tts_".time().".wav";
|
||||
file_put_contents("/var/www/html/fusionpbx/app/voiplyrecording/tts_record/".$filename, $response);
|
||||
|
||||
curl_close($ch);
|
||||
return $filename;
|
||||
}
|
||||
}
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
//application details
|
||||
$apps[$x]['name'] = "Backup";
|
||||
$apps[$x]['uuid'] = "1df70270-8274-44e9-a43e-5074684649ad";
|
||||
$apps[$x]['category'] = "App";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "";
|
||||
$apps[$x]['description']['es-cl'] = "";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//permission details
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "backup_download";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "7e174c3c-e494-4bb0-a52a-4ea55209ffeb";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "backup_upload";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
Executable
+213
@@ -0,0 +1,213 @@
|
||||
<?php
|
||||
|
||||
$text['title-backup']['en-us'] = "Backup";
|
||||
$text['title-backup']['es-cl'] = "Copia de seguridad";
|
||||
$text['title-backup']['pt-pt'] = "Backup";
|
||||
$text['title-backup']['fr-fr'] = "Sauvegarde";
|
||||
$text['title-backup']['pt-br'] = "Backup";
|
||||
$text['title-backup']['pl'] = "Kopie zapasowe";
|
||||
$text['title-backup']['sv-se'] = "Backup";
|
||||
$text['title-backup']['uk'] = "Резервна копія";
|
||||
$text['title-backup']['de-at'] = "Sicherung";
|
||||
|
||||
$text['option-file_download']['en-us'] = "File Download";
|
||||
$text['option-file_download']['es-cl'] = "Descarga de archivos";
|
||||
$text['option-file_download']['pt-pt'] = "download do arquivo";
|
||||
$text['option-file_download']['fr-fr'] = "Télécharger le fichier";
|
||||
$text['option-file_download']['pt-br'] = "Download do arquivo";
|
||||
$text['option-file_download']['pl'] = "Pobierz plik";
|
||||
$text['option-file_download']['sv-se'] = "Ladda Ned Fil";
|
||||
$text['option-file_download']['uk'] = "Скачування файлу";
|
||||
$text['option-file_download']['de-at'] = "Datei Download";
|
||||
|
||||
$text['option-command']['en-us'] = "Command";
|
||||
$text['option-command']['es-cl'] = "Comando";
|
||||
$text['option-command']['pt-pt'] = "Comando";
|
||||
$text['option-command']['fr-fr'] = "Commandementt";
|
||||
$text['option-command']['pt-br'] = "Comando";
|
||||
$text['option-command']['pl'] = "Polecenie";
|
||||
$text['option-command']['sv-se'] = "Komando";
|
||||
$text['option-command']['uk'] = "Команда";
|
||||
$text['option-command']['de-at'] = "Befehl";
|
||||
|
||||
$text['message-restore_failed_upload']['en-us'] = "Restore Failed - File Upload Failed";
|
||||
$text['message-restore_failed_upload']['es-cl'] = "Falló la recup - Cargar archivo Error";
|
||||
$text['message-restore_failed_upload']['pt-pt'] = "Falha de restauração - Upload de arquivo falhou";
|
||||
$text['message-restore_failed_upload']['fr-fr'] = "Echec de la restauration - Echec du téléchargement";
|
||||
$text['message-restore_failed_upload']['pt-br'] = "Falha de restauração - Atualização de arquivo falhou ";
|
||||
$text['message-restore_failed_upload']['pl'] = "Przywracanie oraz przesłanie pliku nie powiodło się";
|
||||
$text['message-restore_failed_upload']['sv-se'] = "Återställning Misslyckades - Filöverföring misslyckades";
|
||||
$text['message-restore_failed_upload']['uk'] = "Помилка відновлення: неможливо завантажити файл";
|
||||
$text['message-restore_failed_upload']['de-at'] = "Wiederherstellung fehlgeschlagen - Datei hochladen fehlgeschlagen";
|
||||
|
||||
$text['message-restore_failed_format']['en-us'] = "Restore Failed - Invalid File Format";
|
||||
$text['message-restore_failed_format']['es-cl'] = "Restaurar Error - Formato de archivo no válido";
|
||||
$text['message-restore_failed_format']['pt-pt'] = "Falha na restauração - Formato de arquivo inválido";
|
||||
$text['message-restore_failed_format']['fr-fr'] = "Échec de la restauration - Format de fichier incorrect";
|
||||
$text['message-restore_failed_format']['pt-br'] = "Falha na restauração - Formato de arquivo inválido";
|
||||
$text['message-restore_failed_format']['pl'] = "Przywracanie nie powiodło się - niepoprawny format pliku";
|
||||
$text['message-restore_failed_format']['sv-se'] = "Återställning Misslyckades - Ogiltigt Filformat";
|
||||
$text['message-restore_failed_format']['uk'] = "Помилка відновлення: хибний формат файлу";
|
||||
$text['message-restore_failed_format']['de-at'] = "Wiederherstellung fehlgeschlagen - Ungültiges Dateiformat";
|
||||
|
||||
$text['message-restore_completed']['en-us'] = "Restore Completed";
|
||||
$text['message-restore_completed']['es-cl'] = "Restaurar Completado";
|
||||
$text['message-restore_completed']['pt-pt'] = "Concluída a Restauração";
|
||||
$text['message-restore_completed']['fr-fr'] = "Restaurer Terminé";
|
||||
$text['message-restore_completed']['pt-br'] = "Concluida a restauração";
|
||||
$text['message-restore_completed']['pl'] = "Przywracanie zakończono pomyślnie.";
|
||||
$text['message-restore_completed']['sv-se'] = "Återställning Genomförd";
|
||||
$text['message-restore_completed']['uk'] = "Відновлено";
|
||||
$text['message-restore_completed']['de-at'] = "Wiederherstellung erfolgreich";
|
||||
|
||||
$text['message-backup_failed_paths']['en-us'] = "Backup Failed - No Backup Paths Defined";
|
||||
$text['message-backup_failed_paths']['es-cl'] = "Fallidos de copia de seguridad - No hay rutas de copia de seguridad definida";
|
||||
$text['message-backup_failed_paths']['pt-pt'] = "Backup falhou - Sem Caminhos backup definido";
|
||||
$text['message-backup_failed_paths']['fr-fr'] = "Echec de sauvegarde - Pas de chemins sauvegarde définis";
|
||||
$text['message-backup_failed_paths']['pt-br'] = "Backup falhou - Sem destino para o backup definido";
|
||||
$text['message-backup_failed_paths']['pl'] = "Przywracanie nie powiodło się – ścieżki nie zostały zdefiniowane.";
|
||||
$text['message-backup_failed_paths']['sv-se'] = "Backup misslyckades - Ingen Backup Sökväg Definierad";
|
||||
$text['message-backup_failed_paths']['uk'] = "Помилка: не вказано шлях для збереження файлу резервної копії";
|
||||
$text['message-backup_failed_paths']['de-at'] = "Sicherung fehlgeschlagen - Kein Sicherungspfad angegeben";
|
||||
|
||||
$text['message-backup_failed_format']['en-us'] = "Backup Failed - Unable to Create Backup File";
|
||||
$text['message-backup_failed_format']['es-cl'] = "Copia de seguridad Error - No se puede crear archivo de copia de seguridad";
|
||||
$text['message-backup_failed_format']['pt-pt'] = "Falha no backup - Não é possível criar arquivo de backup";
|
||||
$text['message-backup_failed_format']['fr-fr'] = "Echec de la sauvegarde - Impossible de créer le fichier de sauvegarde";
|
||||
$text['message-backup_failed_format']['pt-br'] = "Falha no backup - Não é possível criar arquivo de backup ";
|
||||
$text['message-backup_failed_format']['pl'] = "Przywracanie nie powiodło się - nie można utworzyć pliku kopii zapasowej";
|
||||
$text['message-backup_failed_format']['sv-se'] = "Backup misslyckades - Kunde Inte Skapa Backup Fil";
|
||||
$text['message-backup_failed_format']['uk'] = "Помилка: неможливо створити файл резервної копії";
|
||||
$text['message-backup_failed_format']['de-at'] = "Sicherung fehlgeschlagen - Sicherungsdatei kann nicht erstellt werden";
|
||||
|
||||
$text['label-target_type']['en-us'] = "Target Type";
|
||||
$text['label-target_type']['es-cl'] = "Tipo de destino";
|
||||
$text['label-target_type']['pt-pt'] = "Tipo de Destino";
|
||||
$text['label-target_type']['fr-fr'] = "type de cible";
|
||||
$text['label-target_type']['pt-br'] = "Tipo de destino";
|
||||
$text['label-target_type']['pl'] = "Typ docelowy";
|
||||
$text['label-target_type']['sv-se'] = "Mål Typ";
|
||||
$text['label-target_type']['uk'] = "Призначення";
|
||||
$text['label-target_type']['de-at'] = "Ziel Typ";
|
||||
|
||||
$text['label-source_paths']['en-us'] = "Source Paths";
|
||||
$text['label-source_paths']['es-cl'] = "Fuente Caminos";
|
||||
$text['label-source_paths']['pt-pt'] = "Fonte Caminhos";
|
||||
$text['label-source_paths']['fr-fr'] = "Chemins Source";
|
||||
$text['label-source_paths']['pt-br'] = "Destino da fonte";
|
||||
$text['label-source_paths']['pl'] = " Ścieżki źródłowe";
|
||||
$text['label-source_paths']['sv-se'] = "Källa Sökväg";
|
||||
$text['label-source_paths']['uk'] = "Об’єкти для резервного копіювання";
|
||||
$text['label-source_paths']['de-at'] = "Quell Pfade";
|
||||
|
||||
$text['label-select_backup']['en-us'] = "Select Backup File";
|
||||
$text['label-select_backup']['es-cl'] = "Seleccione Copia de Seguridad";
|
||||
$text['label-select_backup']['pt-pt'] = "Selecione Backup";
|
||||
$text['label-select_backup']['fr-fr'] = "Sélectionnez le Fichier de Sauvegarde";
|
||||
$text['label-select_backup']['pt-br'] = "Selecione o Backup";
|
||||
$text['label-select_backup']['pl'] = "Wybierz plik kopii zapasowej";
|
||||
$text['label-select_backup']['sv-se'] = "Välj Backup Fil";
|
||||
$text['label-select_backup']['uk'] = "Виберіть файл резервної копії";
|
||||
$text['label-select_backup']['de-at'] = "Wählen Sie eine Sicherungsdatei";
|
||||
|
||||
$text['label-file_format']['en-us'] = "File Format";
|
||||
$text['label-file_format']['es-cl'] = "Formato de Archivo";
|
||||
$text['label-file_format']['pt-pt'] = "Formato de arquivo";
|
||||
$text['label-file_format']['fr-fr'] = "Format de Fichier";
|
||||
$text['label-file_format']['pt-br'] = "Formato do arquivo";
|
||||
$text['label-file_format']['pl'] = "Format pliku";
|
||||
$text['label-file_format']['sv-se'] = "Filformat";
|
||||
$text['label-file_format']['uk'] = "Формат файлу";
|
||||
$text['label-file_format']['de-at'] = "Dateiformat";
|
||||
|
||||
$text['label-command']['en-us'] = "Command";
|
||||
$text['label-command']['es-cl'] = "Comando";
|
||||
$text['label-command']['pt-pt'] = "Comando";
|
||||
$text['label-command']['fr-fr'] = "Commandementt";
|
||||
$text['label-command']['pt-br'] = "Comando";
|
||||
$text['label-command']['pl'] = "Polecenie";
|
||||
$text['label-command']['sv-se'] = "Komando";
|
||||
$text['label-command']['uk'] = "Команда";
|
||||
$text['label-command']['de-at'] = "Befehl";
|
||||
|
||||
$text['header-restore']['en-us'] = "Restore";
|
||||
$text['header-restore']['es-cl'] = "Restaurar";
|
||||
$text['header-restore']['pt-pt'] = "Restaurar";
|
||||
$text['header-restore']['fr-fr'] = "Restaurer";
|
||||
$text['header-restore']['pt-br'] = "Restaurar";
|
||||
$text['header-restore']['pl'] = "Przywracanie kopii zapasowej";
|
||||
$text['header-restore']['sv-se'] = "Återställ";
|
||||
$text['header-restore']['uk'] = "Відновлення";
|
||||
$text['header-restore']['de-at'] = "Wiederherstellen";
|
||||
|
||||
$text['header-backup']['en-us'] = "Backup";
|
||||
$text['header-backup']['es-cl'] = "Copia de seguridad";
|
||||
$text['header-backup']['pt-pt'] = "Backup";
|
||||
$text['header-backup']['fr-fr'] = "Sauvegarde";
|
||||
$text['header-backup']['pt-br'] = "Backup";
|
||||
$text['header-backup']['pl'] = "Tworzenie kopii zapasowej";
|
||||
$text['header-backup']['sv-se'] = "Backup";
|
||||
$text['header-backup']['uk'] = "Резервна копія";
|
||||
$text['header-backup']['de-at'] = "Sichern";
|
||||
|
||||
$text['description-restore_warning']['en-us'] = "Warning: Existing files, if any, will be overwritten.";
|
||||
$text['description-restore_warning']['es-cl'] = "Advertencia: Los archivos existentes, si los hay, se sobrescribirá.";
|
||||
$text['description-restore_warning']['pt-pt'] = "Aviso: Os arquivos existentes, se houver, serão substituídos.";
|
||||
$text['description-restore_warning']['fr-fr'] = "Attention: les fichiers existants, s'il y en a, seront écrasés.";
|
||||
$text['description-restore_warning']['pt-br'] = "Aviso: Os arquivos existentes, se houver, serão todos substituidos";
|
||||
$text['description-restore_warning']['pl'] = "Uwaga - obecne pliki (jeżeli istnieją), zostaną nadpisane";
|
||||
$text['description-restore_warning']['sv-se'] = "Varning: Befintliga filer, om någon, kommer att skrivas över.";
|
||||
$text['description-restore_warning']['uk'] = "Увага! Файли, які вже існують, будуть перезаписані.";
|
||||
$text['description-restore_warning']['de-at'] = "Warnung: Existierende Dateien, falls vorhanden, werden überschrieben.";
|
||||
|
||||
$text['description-restore']['en-us'] = "To restore a backup from a file on your local system, click 'Browse' then select the desired backup file (eg. 'backup_[YYMMDD]_[HHMMSS].tgz'), then click the 'Restore' button.";
|
||||
$text['description-restore']['es-cl'] = "Para restaurar una copia de seguridad de un archivo en el sistema local, haga clic en 'Examinar' y seleccione el archivo de copia de seguridad que desee (por ejemplo, 'backup_[YYMMDD]_[HHMMSS].tgz'), a continuación, haga clic en el botón 'Restaurar'.";
|
||||
$text['description-restore']['pt-pt'] = "Para restaurar um backup de um arquivo em seu sistema local, clique em 'Procurar' e selecione o arquivo de backup desejado (por exemplo, 'backup_[YYMMDD]_[HHMMSS].tgz'), então clique no botão 'Restaurar'.";
|
||||
$text['description-restore']['fr-fr'] = "Pour restaurer une sauvegarde à partir d'un fichier sur votre système local, cliquez sur 'Parcourir' puis sélectionnez le fichier de sauvegarde souhaité (par exemple, 'backup_[YYMMDD]_[HHMMSS].tgz'), puis cliquez sur le bouton 'Restaurer'.";
|
||||
$text['description-restore']['pt-br'] = "Para restaurar um backup de um arquivo em seu sistema local, clique em 'Procurar' e selecione o arquivo de backup desejado (por exemplo, 'backup_[YYMMDD]_[HHMMSS].tgz'), então clique no botão 'Restaurar'. ";
|
||||
$text['description-restore']['pl'] = "Aby przywrócić kopię zapasową z pliku w systemie lokalnym, kliknij 'Przeglądaj', wybierz żądany plik kopii zapasowej (np. 'Backup_ [ YYMMDD ] _ [ GGMMSS ] .tgz' ), a następnie kliknij przycisk 'Przywróć ustawienia domyślne'.";
|
||||
$text['description-restore']['sv-se'] = "För att återställa en säkerhetskopia från en fil på ditt lokala system, klicka på ' Bläddra ' och välj sedan önskad säkerhetskopia (t.ex. . ' Backup_ [ ÅÅMMDD ] _ [ HHMMSS ] .tgz ' ) och klicka på ' Återställ ' -knappen.";
|
||||
$text['description-restore']['uk'] = "Для відновлення резервної копії з файлу, натисніть кнопку 'Огляд' і виберіть потрібний файл резервної копії, а потім натисніть кнопку 'Відновити '.";
|
||||
$text['description-restore']['de-at'] = "Um das System von einer lokalen Datei Wiederherzustellen klicken Sie 'Durchsuchen' und wählen Sie die gewünschte Sicherungsdatei.";
|
||||
|
||||
$text['description-backup']['en-us'] = "To create a backup of the Source Paths below (defined in Default Settings), select the desired File Format and Target Type.";
|
||||
$text['description-backup']['es-cl'] = "Para crear una copia de seguridad de las rutas de origen siguientes (definidos en la configuración predeterminada), seleccione el formato de archivo deseado y tipo de destino.";
|
||||
$text['description-backup']['pt-pt'] = "Para criar uma cópia de segurança dos caminhos de origem abaixo (definidos em Default Settings), selecione o formato de arquivo desejado e Target Type.";
|
||||
$text['description-backup']['fr-fr'] = "Pour créer une sauvegarde des chemins source ci-dessous (défini dans les paramètres par défaut), sélectionnez le format de fichier désiré et Type de cible.";
|
||||
$text['description-backup']['pt-br'] = "Para criar uma cópia de segurança do caminhos de origem abaixo (definidos em Default Settings), selecione o formato de arquivo desejado e Target Type. ";
|
||||
$text['description-backup']['pl'] = "Aby utworzyć kopię zapasową scieżki zródłowej zdefiniowanej w ustawieniach domyślnych, wybierz żądany format pliku i typ docelowy.";
|
||||
$text['description-backup']['sv-se'] = "För att skapa en säkerhetskopia av Källa Sökväg nedan (som definieras i standardinställningar), välj önskad Filformat och Mål Typ.";
|
||||
$text['description-backup']['uk'] = "Щоб створити резервну копію вказаних нижче об’єктів (вказано у налаштуваннях за замовчуванням), виберіть потрібний формат і призначення";
|
||||
$text['description-backup']['de-at'] = "Um eine Sicherung der unten angeführten Quell Pfade (in Standard Einstellungen definiert) zu erstellen, wählen Sie das gewünschte Dateiformat und den Ziel Typ.";
|
||||
|
||||
$text['button-restore']['en-us'] = "Restore";
|
||||
$text['button-restore']['es-cl'] = "Restaurar";
|
||||
$text['button-restore']['pt-pt'] = "Restaurar";
|
||||
$text['button-restore']['fr-fr'] = "Restaurer";
|
||||
$text['button-restore']['pt-br'] = "Restaurar valores";
|
||||
$text['button-restore']['pl'] = "Przywróć ustawienia domyślne";
|
||||
$text['button-restore']['sv-se'] = "Återställ";
|
||||
$text['button-restore']['uk'] = "Відновити";
|
||||
$text['button-restore']['de-at'] = "Widerherstellen";
|
||||
|
||||
$text['button-generate']['en-us'] = "Generate";
|
||||
$text['button-generate']['es-cl'] = "Generar";
|
||||
$text['button-generate']['pt-pt'] = "Gerar";
|
||||
$text['button-generate']['fr-fr'] = "Générer";
|
||||
$text['button-generate']['pt-br'] = "Geração";
|
||||
$text['button-generate']['pl'] = "Generuj";
|
||||
$text['button-generate']['sv-se'] = "Generera";
|
||||
$text['button-generate']['uk'] = "Згенерувати";
|
||||
$text['button-generate']['de-at'] = "Generieren";
|
||||
|
||||
$text['button-download']['en-us'] = "Download";
|
||||
$text['button-download']['es-cl'] = "Descargar";
|
||||
$text['button-download']['pt-pt'] = "Baixar";
|
||||
$text['button-download']['fr-fr'] = "Télécharger";
|
||||
$text['button-download']['pt-br'] = "Download";
|
||||
$text['button-download']['pl'] = "Pobierz";
|
||||
$text['button-download']['sv-se'] = "Ladda Ned";
|
||||
$text['button-download']['uk'] = "Скачати";
|
||||
$text['button-download']['de-at'] = "Download";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Backup";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Sauvegarde";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Kopie zapasowe";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Backup";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "Резервна копія";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Sicherung";
|
||||
$apps[$x]['menu'][0]['uuid'] = "7e174c3c-e494-4bb0-a52a-4ea55209ffeb";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/backup/index.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,257 @@
|
||||
<?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>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists("backup_download")) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//download the backup
|
||||
if ($_GET['a'] == "download" && permission_exists('backup_download')) {
|
||||
$file_format = $_GET['file_format'];
|
||||
$file_format = ($file_format != '') ? $file_format : 'tgz';
|
||||
|
||||
//build the backup file
|
||||
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
$backup_file = 'backup_'.date('Ymd_His').'.'.$file_format;
|
||||
if (count($_SESSION['backup']['path']) > 0) {
|
||||
//determine compression method
|
||||
switch ($file_format) {
|
||||
case "rar" : $cmd = 'rar a -ow -r '; break;
|
||||
case "zip" : $cmd = 'zip -r '; break;
|
||||
case "tbz" : $cmd = 'tar -jvcf '; break;
|
||||
default : $cmd = 'tar -zvcf ';
|
||||
}
|
||||
$cmd .= $backup_path.'/'.$backup_file.' ';
|
||||
foreach ($_SESSION['backup']['path'] as $value) {
|
||||
$cmd .= $value.' ';
|
||||
}
|
||||
exec($cmd);
|
||||
|
||||
//download the file
|
||||
session_cache_limiter('public');
|
||||
if (file_exists($backup_path."/".$backup_file)) {
|
||||
$fd = fopen($backup_path."/".$backup_file, 'rb');
|
||||
header("Content-Type: application/octet-stream");
|
||||
header("Content-Transfer-Encoding: binary");
|
||||
header("Content-Description: File Transfer");
|
||||
header('Content-Disposition: attachment; filename='.$backup_file);
|
||||
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
|
||||
header("Content-Length: ".filesize($backup_path."/".$backup_file));
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: 0");
|
||||
ob_clean();
|
||||
fpassthru($fd);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
//set response message
|
||||
$_SESSION["message"] = $text['message-backup_failed_format'];
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
//set response message
|
||||
$_SESSION["message"] = $text['message-backup_failed_paths'];
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//script a backup (cron)
|
||||
if ($_GET['a'] == "script" && permission_exists('backup_download')) {
|
||||
$file_format = $_GET['file_format'];
|
||||
$target_type = "script";
|
||||
|
||||
$backup = new backup;
|
||||
$command = $backup->command("backup", $file_format);
|
||||
}
|
||||
|
||||
//restore a backup
|
||||
if ($_POST['a'] == "restore" && permission_exists('backup_upload')) {
|
||||
|
||||
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
$backup_file = $_FILES['backup_file']['name'];
|
||||
|
||||
if (is_uploaded_file($_FILES['backup_file']['tmp_name'])) {
|
||||
//move temp file to backup path
|
||||
move_uploaded_file($_FILES['backup_file']['tmp_name'], $backup_path.'/'.$backup_file);
|
||||
//determine file format and restore backup
|
||||
$file_format = pathinfo($_FILES['backup_file']['name'], PATHINFO_EXTENSION);
|
||||
$valid_format = true;
|
||||
switch ($file_format) {
|
||||
case "rar" : $cmd = 'rar x -ow -o+ '.$backup_path.'/'.$backup_file.' /'; break;
|
||||
case "zip" : $cmd = 'umask 755; unzip -o -qq -X -K '.$backup_path.'/'.$backup_file.' -d /'; break;
|
||||
case "tbz" : $cmd = 'tar -xvpjf '.$backup_path.'/'.$backup_file.' -C /'; break;
|
||||
case "tgz" : $cmd = 'tar -xvpzf '.$backup_path.'/'.$backup_file.' -C /'; break;
|
||||
default: $valid_format = false;
|
||||
}
|
||||
if (!$valid_format) {
|
||||
@unlink($backup_path.'/'.$backup_file);
|
||||
$_SESSION["message"] = $text['message-restore_failed_format'];
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
exec($cmd);
|
||||
//set response message
|
||||
$_SESSION["message"] = $text['message-restore_completed'];
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
//set response message
|
||||
$_SESSION["message"] = $text['message-restore_failed_upload'];
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//add the header
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-destinations'];
|
||||
|
||||
// backup type switch javascript
|
||||
echo "<script language='javascript' type='text/javascript'>";
|
||||
echo " var fade_speed = 400;";
|
||||
echo " function toggle_target(first_elem, second_elem) {";
|
||||
echo " $('#command').fadeOut(fade_speed);";
|
||||
echo " $('#'+first_elem).fadeToggle(fade_speed, function() {";
|
||||
echo " $('#command').slideUp(fade_speed, function() {";
|
||||
echo " $('#'+second_elem).fadeToggle(fade_speed);";
|
||||
echo " });";
|
||||
echo " });";
|
||||
echo " }";
|
||||
echo "</script>";
|
||||
|
||||
//show the content
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='50%' valign='top'>\n";
|
||||
|
||||
echo "<b>".$text['header-backup']."</b>\n";
|
||||
echo "<br><br>";
|
||||
echo $text['description-backup']."\n";
|
||||
echo "<br><br><br>";
|
||||
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-source_paths']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
foreach ($_SESSION['backup']['path'] as $backup_path) {
|
||||
echo $backup_path."<br>\n";
|
||||
}
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-file_format']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='file_format' id='file_format'>";
|
||||
echo " <option value='tgz' ".(($file_format == 'tgz') ? 'selected' : null).">TAR GZIP</option>";
|
||||
echo " <option value='tbz' ".(($file_format == 'tbz') ? 'selected' : null).">TAR BZIP</option>";
|
||||
echo " <option value='rar' ".(($file_format == 'rar') ? 'selected' : null).">RAR</option>";
|
||||
echo " <option value='zip' ".(($file_format == 'zip') ? 'selected' : null).">ZIP</option>";
|
||||
echo " </select>";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-target_type']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='target_type' id='target_type' onchange=\"(this.selectedIndex == 0) ? toggle_target('btn_script','btn_download') : toggle_target('btn_download','btn_script');\">";
|
||||
echo " <option value='download'>".$text['option-file_download']."</option>";
|
||||
echo " <option value='script' ".(($target_type == 'script') ? 'selected' : null).">".$text['option-command']."</option>";
|
||||
echo " </select>";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "<div id='command' ".(($command == '') ? "style='display: none;'" : null).">";
|
||||
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-command']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <textarea class='formfld' style='width: 100%; height: 200px; font-family: courier;'>".$command."</textarea>";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br>";
|
||||
echo "<div align='right'>";
|
||||
echo "<input type='button' id='btn_script' class='btn' ".(($target_type != 'script') ? "style='display: none;'" : null)." value='".$text['button-generate']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=script&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
|
||||
echo "<input type='button' id='btn_download' class='btn' ".(($target_type == 'script') ? "style='display: none;'" : null)." value='".$text['button-download']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=download&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
|
||||
echo "</div>";
|
||||
echo "<br><br>";
|
||||
|
||||
echo " </td>\n";
|
||||
echo " <td width='20'> </td>\n";
|
||||
echo " <td width='50%' valign='top'>\n";
|
||||
|
||||
echo "<b>".$text['header-restore']."</b>\n";
|
||||
echo "<br><br>";
|
||||
echo $text['description-restore']."\n";
|
||||
echo "<br><br><br>";
|
||||
echo "<div align='center'>";
|
||||
echo "<form name='frmrestore' method='post' enctype='multipart/form-data' action=''>";
|
||||
echo "<input type='hidden' name='a' value='restore'>";
|
||||
echo "<table>";
|
||||
echo " <tr>";
|
||||
echo " <td nowrap>".$text['label-select_backup']." </td>";
|
||||
echo " <td><input type='file' class='formfld fileinput' name='backup_file'></td>";
|
||||
echo " <td><input type='submit' class='btn' value='".$text['button-restore']."'></td>";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "<br>";
|
||||
echo "<span style='font-weight: bold; text-decoration: underline; color: #000;'>".$text['description-restore_warning']."</span>";
|
||||
echo "</form>\n";
|
||||
echo "</div>";
|
||||
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "<br><br>";
|
||||
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,124 @@
|
||||
<?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>
|
||||
Copyright (C) 2014
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
|
||||
//define the backup class
|
||||
if (!class_exists('backup')) {
|
||||
class backup {
|
||||
public $result;
|
||||
public $domain_uuid;
|
||||
|
||||
public function command($type, $file) {
|
||||
if ($type == "backup") {
|
||||
$path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
$file = str_replace(array("/", "\\"),'',$file); //remove slashes to prevent changing the directory with the file name
|
||||
$format = substr($file,-3);
|
||||
if (strlen($file) == 3) {
|
||||
$file = 'backup_'.date('Ymd_His').'.'.$format;
|
||||
}
|
||||
if (count($_SESSION['backup']['path']) > 0) {
|
||||
//determine compression method
|
||||
switch ($format) {
|
||||
case "rar" : $cmd = 'rar a -ow -r '; break;
|
||||
case "zip" : $cmd = 'zip -r '; break;
|
||||
case "tbz" : $cmd = 'tar -jvcf '; break;
|
||||
default : $cmd = 'tar -zvcf ';
|
||||
}
|
||||
$cmd .= $path.'/'.$file.' ';
|
||||
foreach ($_SESSION['backup']['path'] as $value) {
|
||||
$cmd .= $value.' ';
|
||||
}
|
||||
return $cmd;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ($type == "restore") {
|
||||
$path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
$file = str_replace(array("/", "\\"),'',$file); //remove slashes to prevent changing the directory with the file name
|
||||
$format = substr($file,-3);
|
||||
if (count($_SESSION['backup']['path']) > 0) {
|
||||
switch ($format) {
|
||||
case "rar" : $cmd = 'rar x -ow -o+ '.$path.'/'.$file.' /'; break;
|
||||
case "zip" : $cmd = 'umask 755; unzip -o -qq -X -K '.$path.'/'.$file.' -d /'; break;
|
||||
case "tbz" : $cmd = 'tar -xvpjf '.$path.'/'.$file.' -C /'; break;
|
||||
case "tgz" : $cmd = 'tar -xvpzf '.$path.'/'.$file.' -C /'; break;
|
||||
default: $valid_format = false;
|
||||
}
|
||||
return $cmd;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function backup($type, $format) {
|
||||
$cmd = $this->command("backup", $format);
|
||||
exec($cmd);
|
||||
return $cmd;
|
||||
}
|
||||
|
||||
public function restore($file) {
|
||||
$path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
$format = substr($file,-3);
|
||||
switch ($format) {
|
||||
case "rar" : break;
|
||||
case "zip" : break;
|
||||
case "tbz" : break;
|
||||
case "tgz" : break;
|
||||
default: return false;
|
||||
}
|
||||
$cmd = $this->command("restore", $file);
|
||||
exec($cmd);
|
||||
return $cmd;
|
||||
}
|
||||
|
||||
public function download($file) {
|
||||
$path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
|
||||
session_cache_limiter('public');
|
||||
$file = str_replace(array("/", "\\"),'',$file); //remove slashes to prevent changing the directory with the file name
|
||||
if (file_exists($path."/".$file)) {
|
||||
$fd = fopen($path."/".$file, 'rb');
|
||||
header("Content-Type: application/octet-stream");
|
||||
header("Content-Transfer-Encoding: binary");
|
||||
header("Content-Description: File Transfer");
|
||||
header('Content-Disposition: attachment; filename='.$file);
|
||||
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
|
||||
header("Content-Length: ".filesize($path."/".$file));
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: 0");
|
||||
ob_clean();
|
||||
fpassthru($fd);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
<?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
|
||||
if (!defined("PATH_SEPARATOR")) {
|
||||
if ( strpos( $_ENV[ "OS" ], "Win" ) !== false ) { define("PATH_SEPARATOR", ";"); } else { define("PATH_SEPARATOR", ":"); }
|
||||
}
|
||||
|
||||
// make sure the document_root is set
|
||||
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", "/", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,103 +0,0 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = "Operator Panel";
|
||||
$apps[$x]['uuid'] = "dd3d173a-5d51-4231-ab22-b18c5b712bb2";
|
||||
$apps[$x]['category'] = "Switch";
|
||||
$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'] = "Operator panel shows the status.";
|
||||
$apps[$x]['description']['en-gb'] = "Operator panel shows the status.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Das Bedienfeld zeigt den Status an.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Das Bedienfeld zeigt den Status an.";
|
||||
$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'] = "Bedieningspaneel laat de status zien";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "Canais ativos no sistema.";
|
||||
$apps[$x]['description']['ro-ro'] = "";
|
||||
$apps[$x]['description']['ru-ru'] = "";
|
||||
$apps[$x]['description']['sv-se'] = "";
|
||||
$apps[$x]['description']['uk-ua'] = "";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_view";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_manage";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_eavesdrop";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_hangup";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_record";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_call_details";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "operator_panel_on_demand";
|
||||
|
||||
//default settings
|
||||
$y=0;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "569280f2-a433-4eaf-9c08-945efdc6cf8f";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "operator_panel";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "refresh";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1500";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the refresh rate in seconds (<=120) or milliseconds (>=500).";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0c273cad-1ee4-48d9-9336-08bc8260579a";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "operator_panel";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "group_extensions";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set if extensions are grouped by call_group when viewing all extensions.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a9ccd174-5ae1-4f90-8ee2-b79a183a04f8";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "operator_panel_main_background_color";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#ffffff";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set main background color (and opacity) of extensions";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b9d34460-db41-40d5-becd-5da037fa8942";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "operator_panel_sub_background_color";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#e5eaf5";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set sub background color (and opacity) of extensions";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9cb6477d-0454-4b9c-b0fb-11c258d4f35f";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "theme";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "operator_panel_border_color";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "#b9c5d8";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set border color (and opacity) of extensions";
|
||||
$y++;
|
||||
|
||||
?>
|
||||
@@ -1,424 +0,0 @@
|
||||
<?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']['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']['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']['ru-ru'] = "Панель Оператора";
|
||||
$text['title-operator_panel']['sv-se'] = "Telefonist Panel";
|
||||
$text['title-operator_panel']['uk-ua'] = "Панель оператора";
|
||||
|
||||
$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']['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']['fr-fr'] = "Sur Demande";
|
||||
$text['label-status_on_demand']['he-il'] = "על פי דרישה";
|
||||
$text['label-status_on_demand']['it-it'] = "Su Richiesta";
|
||||
$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']['ru-ru'] = "По требованию";
|
||||
$text['label-status_on_demand']['sv-se'] = "På Begäran";
|
||||
$text['label-status_on_demand']['uk-ua'] = "Ðа вимогу";
|
||||
|
||||
$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']['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']['fr-fr'] = "En Pause";
|
||||
$text['label-status_on_break']['he-il'] = "בהפסקה";
|
||||
$text['label-status_on_break']['it-it'] = "In Pausa";
|
||||
$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']['ru-ru'] = "Пауза";
|
||||
$text['label-status_on_break']['sv-se'] = "På Rast";
|
||||
$text['label-status_on_break']['uk-ua'] = "Ðа перерві";
|
||||
|
||||
$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']['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']['fr-fr'] = "Déconnexion / Unknown";
|
||||
$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']['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']['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']['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']['fr-fr'] = "Déconnexion";
|
||||
$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-pt'] = "Desligado";
|
||||
$text['label-status_logged_out']['ro-ro'] = "";
|
||||
$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_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']['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']['fr-fr'] = "Ne pas Déranger";
|
||||
$text['label-status_do_not_disturb']['he-il'] = "נא לא להפריע";
|
||||
$text['label-status_do_not_disturb']['it-it'] = "Non Disturbare";
|
||||
$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']['ru-ru'] = "Просьба не беспокоить";
|
||||
$text['label-status_do_not_disturb']['sv-se'] = "Stör Ej";
|
||||
$text['label-status_do_not_disturb']['uk-ua'] = "Ðе турбувати";
|
||||
|
||||
$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']['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']['fr-fr'] = "Disponible (sur demande)";
|
||||
$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']['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']['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']['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']['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-pt'] = "Disponível";
|
||||
$text['label-status_available']['ro-ro'] = "";
|
||||
$text['label-status_available']['ru-ru'] = "Доступен";
|
||||
$text['label-status_available']['sv-se'] = "Tillgänglig";
|
||||
$text['label-status_available']['uk-ua'] = "ДоÑтупний";
|
||||
|
||||
$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']['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']['fr-fr'] = "Pause Actualiser";
|
||||
$text['label-refresh_pause']['he-il'] = "עצור רענון";
|
||||
$text['label-refresh_pause']['it-it'] = "Interrompi";
|
||||
$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']['ru-ru'] = "Приостановить обновление";
|
||||
$text['label-refresh_pause']['sv-se'] = "Paus Uppdatera";
|
||||
$text['label-refresh_pause']['uk-ua'] = "Припинити оновленнÑ";
|
||||
|
||||
$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']['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']['fr-fr'] = "Activer Actualiser";
|
||||
$text['label-refresh_enable']['he-il'] = "אפשר רענון";
|
||||
$text['label-refresh_enable']['it-it'] = "Abilita Aggiornamento";
|
||||
$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']['ru-ru'] = "Включить обновление";
|
||||
$text['label-refresh_enable']['sv-se'] = "Aktivera Uppdatering";
|
||||
$text['label-refresh_enable']['uk-ua'] = "Включити оновленнÑ";
|
||||
|
||||
$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']['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']['fr-fr'] = "Enregistrement de L'appel";
|
||||
$text['label-recording']['he-il'] = "מקליט";
|
||||
$text['label-recording']['it-it'] = "Registrazione";
|
||||
$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']['ru-ru'] = "Запись";
|
||||
$text['label-recording']['sv-se'] = "Inspelning";
|
||||
$text['label-recording']['uk-ua'] = "ЗапиÑ";
|
||||
|
||||
$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']['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']['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-pt'] = "Registro";
|
||||
$text['label-record']['ro-ro'] = "";
|
||||
$text['label-record']['ru-ru'] = "Воспроизведение";
|
||||
$text['label-record']['sv-se'] = "Spela In";
|
||||
$text['label-record']['uk-ua'] = "ЗапиÑ";
|
||||
|
||||
$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']['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']['fr-fr'] = "Autres Extensions";
|
||||
$text['label-other_extensions']['he-il'] = "שלוחות אחרות";
|
||||
$text['label-other_extensions']['it-it'] = "Altri Interni";
|
||||
$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']['ru-ru'] = "Другие внутренние номера";
|
||||
$text['label-other_extensions']['sv-se'] = "Annan Anknytning";
|
||||
$text['label-other_extensions']['uk-ua'] = "Інші розширеннÑ";
|
||||
|
||||
$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']['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']['fr-fr'] = "Aucun extensions trouvés.";
|
||||
$text['label-no_extensions_found']['he-il'] = "לא נמצאו שלוחות";
|
||||
$text['label-no_extensions_found']['it-it'] = "Nessun interno trovato.";
|
||||
$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']['ru-ru'] = "Внутренних номеров не найдено.";
|
||||
$text['label-no_extensions_found']['sv-se'] = "Ingen anknytning funnen.";
|
||||
$text['label-no_extensions_found']['uk-ua'] = "Ðе знайдено розширень";
|
||||
|
||||
$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']['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']['fr-fr'] = "Tuer Appel";
|
||||
$text['label-hangup']['he-il'] = "הפסק";
|
||||
$text['label-hangup']['it-it'] = "Abbatti";
|
||||
$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']['ru-ru'] = "Убить";
|
||||
$text['label-hangup']['sv-se'] = "Lägg På";
|
||||
$text['label-hangup']['uk-ua'] = "вбити";
|
||||
|
||||
$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']['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']['fr-fr'] = "Espionner";
|
||||
$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']['ru-ru'] = "Подслушивать";
|
||||
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
|
||||
$text['label-eavesdrop']['uk-ua'] = "підслуховувати";
|
||||
|
||||
$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']['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']['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-pt'] = "Grupo";
|
||||
$text['label-call_group']['ro-ro'] = "";
|
||||
$text['label-call_group']['ru-ru'] = "Группы вызова";
|
||||
$text['label-call_group']['sv-se'] = "Ring Grupp";
|
||||
$text['label-call_group']['uk-ua'] = "груповий виклик";
|
||||
|
||||
$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']['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']['fr-fr'] = "Sens de l'appel";
|
||||
$text['label-call_direction']['he-il'] = "כיוון שיחה";
|
||||
$text['label-call_direction']['it-it'] = "Direzione Chiamata";
|
||||
$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']['ru-ru'] = "Направление вызова";
|
||||
$text['label-call_direction']['sv-se'] = "Samtals Riktning";
|
||||
$text['label-call_direction']['uk-ua'] = "напрямок виклику";
|
||||
|
||||
$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']['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']['fr-fr'] = "Sélectionnez la destination d'espionnage";
|
||||
$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']['ru-ru'] = "Выберите подслушивание пункта назначения";
|
||||
$text['description-eavesdrop_destination']['sv-se'] = "Välj Medlyssning Destination";
|
||||
$text['description-eavesdrop_destination']['uk-ua'] = "Виберіть пункт призначення підслуховувати";
|
||||
|
||||
$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']['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']['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-pt'] = "Tudo";
|
||||
$text['button-all']['ro-ro'] = "";
|
||||
$text['button-all']['ru-ru'] = "Все";
|
||||
$text['button-all']['sv-se'] = "Alla";
|
||||
$text['button-all']['uk-ua'] = "Ð’ÑÑ–";
|
||||
|
||||
?>
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
$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']['de-at'] = "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']['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']['ru-ru'] = "Панель оператора";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Telefonist Panel";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Панель оператора";
|
||||
$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]['path'] = "/app/basic_operator_panel/index.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
|
||||
?>
|
||||
@@ -1,195 +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-2019
|
||||
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";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('contact_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
exit;
|
||||
}
|
||||
|
||||
//search term
|
||||
$term = check_str($_GET['term']);
|
||||
if (isset($_GET['debug'])) {
|
||||
echo "Search Term: ".escape($term)."<br><br>";
|
||||
}
|
||||
|
||||
//if term contains spaces, break into array
|
||||
if (substr_count($term, ' ') > 0) {
|
||||
$terms = explode(' ', $term);
|
||||
}
|
||||
else {
|
||||
$terms[] = $term;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//retrieve current user's assigned groups (uuids)
|
||||
foreach ($_SESSION['groups'] as $group_data) {
|
||||
$user_group_uuids[] = $group_data['group_uuid'];
|
||||
}
|
||||
//add user's uuid to group uuid list to include private (non-shared) contacts
|
||||
$user_group_uuids[] = $_SESSION["user_uuid"];
|
||||
|
||||
//create the database object
|
||||
$database = new database;
|
||||
|
||||
//get extensions list
|
||||
$sql = "select \n";
|
||||
$sql .= "e.extension, \n";
|
||||
$sql .= "e.effective_caller_id_name, \n";
|
||||
$sql .= "concat(e.directory_first_name, ' ', e.directory_last_name) as directory_full_name \n";
|
||||
$sql .= "from \n";
|
||||
$sql .= "v_extensions e \n";
|
||||
$sql .= "where \n";
|
||||
foreach ($terms as $index => $term) {
|
||||
$sql .= "( \n";
|
||||
$sql .= " lower(e.effective_caller_id_name) like lower(:term) or \n";
|
||||
$sql .= " lower(e.outbound_caller_id_name) like lower(:term) or \n";
|
||||
$sql .= " lower(concat(e.directory_first_name, ' ', e.directory_last_name)) like lower(:term) or \n";
|
||||
$sql .= " lower(e.description) like lower(:term) or \n";
|
||||
$sql .= " lower(e.call_group) like lower(:term) or \n";
|
||||
$sql .= " e.extension like :term \n";
|
||||
$sql .= ") \n";
|
||||
if ($index + 1 < sizeof($terms)) {
|
||||
$sql .= " and \n";
|
||||
}
|
||||
}
|
||||
$sql .= "and e.domain_uuid = :domain_uuid \n";
|
||||
$sql .= "and e.enabled = 'true' \n";
|
||||
$sql .= "order by \n";
|
||||
$sql .= "directory_full_name asc, \n";
|
||||
$sql .= "e.effective_caller_id_name asc \n";
|
||||
if (isset($_GET['debug'])) { echo $sql."<br><br>"; }
|
||||
$parameters['term'] = '%'.$term.'%';
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
unset ($parameters, $sql);
|
||||
|
||||
if (is_array($result)) {
|
||||
if (isset($_GET['debug'])) { echo $result."<br><br>"; }
|
||||
foreach($result as $row) {
|
||||
if ($row['directory_full_name'] != '') { $values[] = $row['directory_full_name']; }
|
||||
if ($row['effective_caller_id_name'] != '') { $values[] = $row['effective_caller_id_name']; }
|
||||
|
||||
$suggestions[] = "{ \"label\": \"".(implode(', ', $values)." @ ".$row['extension'])."\", \"value\": \"".$row['extension']."\" }";
|
||||
unset($values);
|
||||
}
|
||||
unset($sql, $result, $row_count);
|
||||
}
|
||||
|
||||
//get contacts list
|
||||
$sql = "select \n";
|
||||
$sql .= "c.contact_organization, \n";
|
||||
$sql .= "c.contact_name_given, \n";
|
||||
$sql .= "c.contact_name_middle, \n";
|
||||
$sql .= "c.contact_name_family, \n";
|
||||
$sql .= "c.contact_nickname, \n";
|
||||
$sql .= "p.phone_number, \n";
|
||||
$sql .= "p.phone_label \n";
|
||||
$sql .= "from \n";
|
||||
$sql .= "v_contacts as c, \n";
|
||||
$sql .= "v_contact_phones as p \n";
|
||||
$sql .= "where \n";
|
||||
foreach ($terms as $index => $term) {
|
||||
$sql .= "( \n";
|
||||
$sql .= " lower(c.contact_organization) like lower(:term) or \n";
|
||||
$sql .= " lower(c.contact_name_given) like lower(:term) or \n";
|
||||
$sql .= " lower(c.contact_name_middle) like lower(:term) or \n";
|
||||
$sql .= " lower(c.contact_name_family) like lower(:term) or \n";
|
||||
$sql .= " lower(c.contact_nickname) like lower(:term) or \n";
|
||||
$sql .= " p.phone_number like :term \n";
|
||||
$sql .= ") \n";
|
||||
if ($index + 1 < sizeof($terms)) {
|
||||
$sql .= " and \n";
|
||||
}
|
||||
}
|
||||
$sql .= "and c.contact_uuid = p.contact_uuid \n";
|
||||
$sql .= "and c.domain_uuid = :domain_uuid \n";
|
||||
if (sizeof($user_group_uuids) > 0) {
|
||||
$sql .= "and ( \n"; //only contacts assigned to current user's group(s) and those not assigned to any group
|
||||
$sql .= " c.contact_uuid in ( \n";
|
||||
$sql .= " select contact_uuid from v_contact_groups \n";
|
||||
$sql .= " where group_uuid in ('".implode("','", $user_group_uuids)."') \n";
|
||||
$sql .= " and domain_uuid = :domain_uuid \n";
|
||||
$sql .= " ) \n";
|
||||
$sql .= " or \n";
|
||||
$sql .= " c.contact_uuid not in ( \n";
|
||||
$sql .= " select contact_uuid from v_contact_groups \n";
|
||||
$sql .= " where domain_uuid = :domain_uuid \n";
|
||||
$sql .= " ) \n";
|
||||
$sql .= ") \n";
|
||||
}
|
||||
$sql .= "and p.phone_type_voice = 1 \n";
|
||||
$sql .= "order by \n";
|
||||
$sql .= "contact_organization desc, \n";
|
||||
$sql .= "contact_name_given asc, \n";
|
||||
$sql .= "contact_name_family asc \n";
|
||||
if (isset($_GET['debug'])) { echo $sql."<br><br>"; }
|
||||
$parameters['term'] = '%'.$term.'%';
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
unset ($parameters, $sql);
|
||||
|
||||
if (is_array($result)) {
|
||||
foreach($result as $row) {
|
||||
if ($row['contact_organization'] != '') { $values[] = $row['contact_organization']; }
|
||||
|
||||
if ($row['contact_name_given'] != '') { $names = $row['contact_name_given']; }
|
||||
if ($row['contact_name_middle'] != '') { $names .= " ".$row['contact_name_middle']; }
|
||||
if ($row['contact_name_family'] != '') { $names .= " ".$row['contact_name_family']; }
|
||||
if ($names != '') { $values[] = $names; }
|
||||
|
||||
if ($row['contact_nickname'] != '') { $values[] = $row['contact_nickname']; }
|
||||
|
||||
$suggestions[] = "{ \"label\": \"".(implode(', ', $values)." - ".format_phone($row['phone_number']).(($row['phone_label'] != '') ? " (".$row['phone_label'].")" : null))."\", \"value\": \"".$row['phone_number']."\" }";
|
||||
unset($values, $names);
|
||||
}
|
||||
unset($sql, $result, $row_count);
|
||||
}
|
||||
|
||||
//output suggestions, if any
|
||||
if (sizeof($suggestions) > 0) {
|
||||
$resp .= "[\n";
|
||||
$resp .= implode(",\n", $suggestions)."\n";
|
||||
$resp .= "]";
|
||||
|
||||
if (isset($_GET['debug'])) { echo "<pre>"; }
|
||||
echo $resp;
|
||||
if (isset($_GET['debug'])) { echo "</pre>"; }
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,124 +0,0 @@
|
||||
<?php
|
||||
/* $Id$ */
|
||||
/*
|
||||
v_exec.php
|
||||
Copyright (C) 2008-2019 Mark J Crane
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('operator_panel_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//authorized referrer
|
||||
// if(stristr($_SERVER["HTTP_REFERER"], '/index.php') === false) {
|
||||
// if(stristr($_SERVER["HTTP_REFERER"], '/index_inc.php') === false) {
|
||||
// echo " access denied";
|
||||
// exit;
|
||||
// }
|
||||
// }
|
||||
|
||||
//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"]);
|
||||
|
||||
//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) {
|
||||
$api_cmd = '';
|
||||
$uuid_pattern = '/[^-A-Fa-f0-9]/';
|
||||
$num_pattern = '/[^-A-Za-z0-9()*#]/';
|
||||
|
||||
if ($switch_cmd == 'originate') {
|
||||
$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') {
|
||||
$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') {
|
||||
$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') {
|
||||
$chan_uuid = preg_replace($uuid_pattern,'',$_GET['chan_uuid']);
|
||||
$ext = preg_replace($num_pattern,'',$_GET['ext']);
|
||||
$destination = preg_replace($num_pattern,'',$_GET['destination']);
|
||||
|
||||
$language = new text;
|
||||
$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') {
|
||||
$call_id = preg_replace($uuid_pattern,'',$_GET['call_id']);
|
||||
$api_cmd = 'uuid_kill ' . $call_id;
|
||||
} else {
|
||||
echo 'access denied';
|
||||
return;
|
||||
}
|
||||
|
||||
//run the command
|
||||
$switch_result = event_socket_request($fp, 'api '.$api_cmd);
|
||||
|
||||
/*
|
||||
//record stop
|
||||
if ($action == "record") {
|
||||
if (trim($_GET["action2"]) == "stop") {
|
||||
$x=0;
|
||||
while (true) {
|
||||
if ($x > 0) {
|
||||
$dest_file = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"]."_".$x.".wav";
|
||||
}
|
||||
else {
|
||||
$dest_file = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"].".wav";
|
||||
}
|
||||
if (!file_exists($dest_file)) {
|
||||
rename($_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"].".wav", $dest_file);
|
||||
break;
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,599 +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-2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('operator_panel_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set user status
|
||||
if (isset($_REQUEST['status']) && $_REQUEST['status'] != '') {
|
||||
|
||||
//validate the user status
|
||||
$user_status = $_REQUEST['status'];
|
||||
switch ($user_status) {
|
||||
case "Available" :
|
||||
break;
|
||||
case "Available (On Demand)" :
|
||||
break;
|
||||
case "On Break" :
|
||||
break;
|
||||
case "Do Not Disturb" :
|
||||
break;
|
||||
case "Logged Out" :
|
||||
break;
|
||||
default :
|
||||
$user_status = '';
|
||||
}
|
||||
|
||||
//update the status
|
||||
if (permission_exists("user_setting_edit")) {
|
||||
//add the user_edit permission
|
||||
$p = new permissions;
|
||||
$p->add("user_edit", "temp");
|
||||
|
||||
//update the database user_status
|
||||
$array['users'][0]['user_uuid'] = $_SESSION['user']['user_uuid'];
|
||||
$array['users'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
|
||||
$array['users'][0]['user_status'] = $user_status;
|
||||
$database = new database;
|
||||
$database->app_name = 'operator_panel';
|
||||
$database->app_uuid = 'dd3d173a-5d51-4231-ab22-b18c5b712bb2';
|
||||
$database->save($array);
|
||||
|
||||
//remove the temporary permission
|
||||
$p->delete("user_edit", "temp");
|
||||
|
||||
unset($array);
|
||||
}
|
||||
|
||||
//if call center app is installed then update the user_status
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/call_centers')) {
|
||||
//get the call center agent uuid
|
||||
$sql = "select call_center_agent_uuid from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and user_uuid = :user_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['user']['domain_uuid'];
|
||||
$parameters['user_uuid'] = $_SESSION['user']['user_uuid'];
|
||||
$database = new database;
|
||||
$call_center_agent_uuid = $database->select($sql, $parameters, 'column');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//update the user_status
|
||||
if (is_uuid($call_center_agent_uuid)) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$switch_cmd .= "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
|
||||
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||||
}
|
||||
|
||||
//update the user state
|
||||
if (is_uuid($call_center_agent_uuid)) {
|
||||
$cmd = "api callcenter_config agent set state ".$call_center_agent_uuid." Waiting";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
|
||||
//update do not disturb
|
||||
if ($user_status == "Do Not Disturb") {
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
//build the array
|
||||
$array['extensions'][$x]['extension_uuid'] = $row['extension_uuid'];
|
||||
$array['extensions'][$x]['dial_string'] = '!USER_BUSY';
|
||||
$array['extensions'][$x]['do_not_disturb'] = 'true';
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
if(strlen($number_alias) > 0){
|
||||
$cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
|
||||
//incrment
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$x = 0;
|
||||
foreach($_SESSION['user']['extension'] as $row) {
|
||||
//build the array
|
||||
$array['extensions'][$x]['extension_uuid'] = $row['extension_uuid'];
|
||||
$array['extensions'][$x]['dial_string'] = null;
|
||||
$array['extensions'][$x]['do_not_disturb'] = 'false';
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']);
|
||||
if(strlen($number_alias) > 0){
|
||||
$cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']);
|
||||
}
|
||||
|
||||
//incrment
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('extension_edit', '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_edit', 'temp');
|
||||
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$extension."@".$this->domain_name);
|
||||
if(strlen($number_alias) > 0){
|
||||
$cache->delete("directory:".$number_alias."@".$this->domain_name);
|
||||
}
|
||||
}
|
||||
|
||||
//stop execution
|
||||
exit;
|
||||
}
|
||||
|
||||
//set the title
|
||||
$document['title'] = $text['title-operator_panel'];
|
||||
|
||||
//include the header
|
||||
require_once "resources/header.php";
|
||||
|
||||
?>
|
||||
|
||||
<!-- virtual_drag function holding elements -->
|
||||
<input type='hidden' class='formfld' id='vd_call_id' value=''>
|
||||
<input type='hidden' class='formfld' id='vd_ext_from' value=''>
|
||||
<input type='hidden' class='formfld' id='vd_ext_to' value=''>
|
||||
<input type='hidden' class='formfld' id='sort1' value=''>
|
||||
|
||||
<!-- autocomplete for contact lookup -->
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui.min.css">
|
||||
<script language="JavaScript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
<?php
|
||||
//determine refresh rate
|
||||
$refresh_default = 1500; //milliseconds
|
||||
$refresh = is_numeric($_SESSION['operator_panel']['refresh']['numeric']) ? $_SESSION['operator_panel']['refresh']['numeric'] : $refresh_default;
|
||||
if ($refresh >= 0.5 && $refresh <= 120) { //convert seconds to milliseconds
|
||||
$refresh = $refresh * 1000;
|
||||
}
|
||||
else if ($refresh < 0.5 || ($refresh > 120 && $refresh < 500)) {
|
||||
$refresh = $refresh_default; //use default
|
||||
}
|
||||
else {
|
||||
//>= 500, must be milliseconds
|
||||
}
|
||||
unset($refresh_default);
|
||||
?>
|
||||
|
||||
//ajax refresh
|
||||
var refresh = <?php echo $refresh; ?>;
|
||||
var source_url = 'resources/content.php?' <?php if (isset($_GET['debug'])) { echo " + '&debug'"; } ?>;
|
||||
var interval_timer_id;
|
||||
|
||||
function loadXmlHttp(url, id) {
|
||||
var f = this;
|
||||
f.xmlHttp = null;
|
||||
/*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
|
||||
/*@if(@_jscript_version >= 5) // prevents errors in old browsers that barf on try/catch & problems in IE if Active X disabled
|
||||
try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
|
||||
@end @*/
|
||||
if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
|
||||
f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
|
||||
else if (/(object)|(function)/.test(typeof createRequest))
|
||||
f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
|
||||
else {
|
||||
f.xmlHttp = null;
|
||||
// Internet Explorer 5 to 6, includes IE 7+ when local //
|
||||
/*@cc_on @*/
|
||||
/*@if(@_jscript_version >= 5)
|
||||
try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
|
||||
catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
|
||||
@end @*/
|
||||
}
|
||||
if(f.xmlHttp != null){
|
||||
f.el = document.getElementById(id);
|
||||
f.xmlHttp.open("GET",url,true);
|
||||
f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
|
||||
f.xmlHttp.send(null);
|
||||
}
|
||||
}
|
||||
|
||||
loadXmlHttp.prototype.stateChanged=function () {
|
||||
var url = new URL(this.xmlHttp.responseURL);
|
||||
if (/login\.php$/.test(url.pathname)) {
|
||||
// You are logged out. Stop refresh!
|
||||
refresh_stop();
|
||||
url.searchParams.set('path', '<?php echo $_SERVER['REQUEST_URI']; ?>');
|
||||
window.location.href = url.href;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
|
||||
//this.el.innerHTML = this.xmlHttp.responseText;
|
||||
document.getElementById('ajax_reponse').innerHTML = this.xmlHttp.responseText;
|
||||
if (document.getElementById('sort')) {
|
||||
if (document.getElementById('sort').value != "")
|
||||
document.getElementById('sort1').value=document.getElementById('sort').value;
|
||||
}
|
||||
}
|
||||
|
||||
var requestTime = function() {
|
||||
var url = source_url;
|
||||
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 += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
|
||||
if (document.getElementById('sort1'))
|
||||
if (document.getElementById('sort1').value == '1') url += '&sort';
|
||||
<?php
|
||||
if (isset($_GET['debug'])) {
|
||||
echo "url += '&debug';";
|
||||
}
|
||||
?>
|
||||
new loadXmlHttp(url, 'ajax_reponse');
|
||||
refresh_start();
|
||||
}
|
||||
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('load', requestTime, false);
|
||||
}
|
||||
else if (window.attachEvent) {
|
||||
window.attachEvent('onload', requestTime);
|
||||
}
|
||||
|
||||
|
||||
//drag/drop functionality
|
||||
var ie_workaround = false;
|
||||
|
||||
function drag(ev, from_ext) {
|
||||
refresh_stop();
|
||||
try {
|
||||
ev.dataTransfer.setData("Call", ev.target.id);
|
||||
ev.dataTransfer.setData("From", from_ext);
|
||||
virtual_drag_reset();
|
||||
}
|
||||
catch (err) {
|
||||
// likely internet explorer being used, do workaround
|
||||
virtual_drag(ev.target.id, from_ext);
|
||||
ie_workaround = true;
|
||||
}
|
||||
}
|
||||
|
||||
function allowDrop(ev, target_id) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
|
||||
function discardDrop(ev, target_id) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
|
||||
function drop(ev, to_ext) {
|
||||
ev.preventDefault();
|
||||
if (ie_workaround) { // potentially set on drag() function above
|
||||
var call_id = document.getElementById('vd_call_id').value;
|
||||
var from_ext = document.getElementById('vd_ext_from').value;
|
||||
virtual_drag_reset();
|
||||
}
|
||||
else {
|
||||
var call_id = ev.dataTransfer.getData("Call");
|
||||
var from_ext = ev.dataTransfer.getData("From");
|
||||
}
|
||||
var to_ext = to_ext;
|
||||
var cmd;
|
||||
|
||||
if (call_id != '') {
|
||||
cmd = get_transfer_cmd(call_id, to_ext); //transfer a call
|
||||
}
|
||||
else {
|
||||
if (from_ext != to_ext) { // prevent user from dragging extention onto self
|
||||
cmd = get_originate_cmd(from_ext, to_ext); //make a call
|
||||
}
|
||||
}
|
||||
|
||||
if (cmd != '') { send_cmd(cmd) }
|
||||
|
||||
refresh_start();
|
||||
}
|
||||
|
||||
//refresh controls
|
||||
function refresh_stop() {
|
||||
clearInterval(interval_timer_id);
|
||||
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">"; }
|
||||
}
|
||||
|
||||
function refresh_start() {
|
||||
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
|
||||
refresh_stop();
|
||||
interval_timer_id = setInterval( function() {
|
||||
url = source_url;
|
||||
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 += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
|
||||
if (document.getElementById('sort1'))
|
||||
if (document.getElementById('sort1').value == '1') url += '&sort';
|
||||
<?php
|
||||
if (isset($_GET['debug'])) {
|
||||
echo "url += '&debug';";
|
||||
}
|
||||
?>
|
||||
new loadXmlHttp(url, 'ajax_reponse');
|
||||
}, refresh);
|
||||
}
|
||||
|
||||
//call or transfer to destination
|
||||
function go_destination(from_ext, destination, which, call_id) {
|
||||
call_id = typeof call_id !== 'undefined' ? call_id : '';
|
||||
if (destination != '') {
|
||||
if (!isNaN(parseFloat(destination)) && isFinite(destination)) {
|
||||
if (call_id == '') {
|
||||
cmd = get_originate_cmd(from_ext, destination); //make a call
|
||||
}
|
||||
else {
|
||||
cmd = get_transfer_cmd(call_id, destination);
|
||||
}
|
||||
if (cmd != '') {
|
||||
send_cmd(cmd);
|
||||
$('#destination_'+from_ext+'_'+which).removeAttr('onblur');
|
||||
toggle_destination(from_ext, which);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//hangup call
|
||||
function hangup_call(call_id) {
|
||||
if (call_id != '') {
|
||||
send_cmd('exec.php?cmd=uuid_kill&call_id=' + call_id)
|
||||
}
|
||||
}
|
||||
|
||||
//eavesdrop call
|
||||
function eavesdrop_call(ext, chan_uuid) {
|
||||
if (ext != '' && chan_uuid != '') {
|
||||
cmd = get_eavesdrop_cmd(ext, chan_uuid, document.getElementById('eavesdrop_dest').value);
|
||||
if (cmd != '') {
|
||||
send_cmd(cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//record call
|
||||
function record_call(chan_uuid) {
|
||||
if (chan_uuid != '') {
|
||||
cmd = get_record_cmd(chan_uuid);
|
||||
if (cmd != '') {
|
||||
send_cmd(cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//used by call control and ajax refresh functions
|
||||
function send_cmd(url) {
|
||||
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
|
||||
xmlhttp=new XMLHttpRequest();
|
||||
}
|
||||
else {// code for IE6, IE5
|
||||
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
xmlhttp.open("GET",url,false);
|
||||
xmlhttp.send(null);
|
||||
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
|
||||
}
|
||||
|
||||
//hide/show destination input field
|
||||
function toggle_destination(ext, which) {
|
||||
refresh_stop();
|
||||
if (which == 'call') {
|
||||
if ($('#destination_'+ext+'_call').is(':visible')) {
|
||||
$('#destination_'+ext+'_call').val('');
|
||||
$('#destination_'+ext+'_call').autocomplete('destroy');
|
||||
$('#destination_'+ext+'_call').hide(0, function() {
|
||||
$('.call_control').children().attr('onmouseout', "refresh_start();");
|
||||
$('.destination_control').attr('onmouseout', "refresh_start();");
|
||||
refresh_start();
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('#destination_'+ext+'_call').show(0, function() {
|
||||
$('#destination_'+ext+'_call').trigger('focus');
|
||||
$('#destination_'+ext+'_call').autocomplete({
|
||||
source: "autocomplete.php",
|
||||
minLength: 3,
|
||||
select: function(event, ui) {
|
||||
$('#destination_'+ext+'_call').val(ui.item.value);
|
||||
$('#frm_destination_'+ext+'_call').submit();
|
||||
}
|
||||
});
|
||||
$('.call_control').children().removeAttr('onmouseout');
|
||||
$('.destination_control').removeAttr('onmouseout');
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (which == 'transfer') {
|
||||
if ($('#destination_'+ext+'_transfer').is(':visible')) {
|
||||
$('#destination_'+ext+'_transfer').val('');
|
||||
$('#destination_'+ext+'_transfer').autocomplete('destroy');
|
||||
$('#destination_'+ext+'_transfer').hide(0, function() {
|
||||
$('#op_caller_details_'+ext).show();
|
||||
$('.call_control').children().attr('onmouseout', "refresh_start();");
|
||||
$('.destination_control').attr('onmouseout', "refresh_start();");
|
||||
refresh_start();
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('#op_caller_details_'+ext).hide(0, function() {
|
||||
$('#destination_'+ext+'_transfer').show(0, function() {
|
||||
$('#destination_'+ext+'_transfer').trigger('focus');
|
||||
$('#destination_'+ext+'_transfer').autocomplete({
|
||||
source: "autocomplete.php",
|
||||
minLength: 3,
|
||||
select: function(event, ui) {
|
||||
$('#destination_'+ext+'_transfer').val(ui.item.value);
|
||||
$('#frm_destination_'+ext+'_transfer').submit();
|
||||
}
|
||||
});
|
||||
$('.call_control').children().removeAttr('onmouseout');
|
||||
$('.destination_control').removeAttr('onmouseout');
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_transfer_cmd(uuid, destination) {
|
||||
url = "exec.php?cmd=uuid_transfer&uuid=" + uuid + "&destination=" + destination
|
||||
return url;
|
||||
}
|
||||
|
||||
function get_originate_cmd(source, destination) {
|
||||
url = "exec.php?cmd=originate&source=" + source + "&destination=" + destination
|
||||
return url;
|
||||
}
|
||||
|
||||
function get_eavesdrop_cmd(ext, chan_uuid, destination) {
|
||||
url = "exec.php?cmd=uuid_eavesdrop&ext=" + ext + "&chan_uuid=" + chan_uuid + "&destination=" + destination;
|
||||
return url;
|
||||
}
|
||||
|
||||
function get_record_cmd(uuid) {
|
||||
url = "exec.php?cmd=uuid_record&uuid=" + uuid;
|
||||
return url;
|
||||
}
|
||||
|
||||
//virtual functions
|
||||
function virtual_drag(call_id, ext) {
|
||||
if (document.getElementById('vd_ext_from').value != '' && document.getElementById('vd_ext_to').value != '') {
|
||||
virtual_drag_reset();
|
||||
}
|
||||
|
||||
if (call_id != '') {
|
||||
document.getElementById('vd_call_id').value = call_id;
|
||||
}
|
||||
|
||||
if (ext != '') {
|
||||
if (document.getElementById('vd_ext_from').value == '') {
|
||||
document.getElementById('vd_ext_from').value = ext;
|
||||
document.getElementById(ext).style.borderStyle = 'dotted';
|
||||
if (document.getElementById('vd_ext_to').value != '') {
|
||||
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
|
||||
document.getElementById('vd_ext_to').value = '';
|
||||
}
|
||||
}
|
||||
else {
|
||||
document.getElementById('vd_ext_to').value = ext;
|
||||
if (document.getElementById('vd_ext_from').value != document.getElementById('vd_ext_to').value) {
|
||||
if (document.getElementById('vd_call_id').value != '') {
|
||||
cmd = get_transfer_cmd(document.getElementById('vd_call_id').value, document.getElementById('vd_ext_to').value); //transfer a call
|
||||
}
|
||||
else {
|
||||
cmd = get_originate_cmd(document.getElementById('vd_ext_from').value, document.getElementById('vd_ext_to').value); //originate a call
|
||||
}
|
||||
if (cmd != '') {
|
||||
//alert(cmd);
|
||||
send_cmd(cmd);
|
||||
}
|
||||
}
|
||||
virtual_drag_reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function virtual_drag_reset(vd_var) {
|
||||
if (!(vd_var === undefined)) {
|
||||
document.getElementById(vd_var).value = '';
|
||||
}
|
||||
else {
|
||||
document.getElementById('vd_call_id').value = '';
|
||||
if (document.getElementById('vd_ext_from').value != '') {
|
||||
document.getElementById(document.getElementById('vd_ext_from').value).style.borderStyle = '';
|
||||
document.getElementById('vd_ext_from').value = '';
|
||||
}
|
||||
if (document.getElementById('vd_ext_to').value != '') {
|
||||
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
|
||||
document.getElementById('vd_ext_to').value = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
TABLE {
|
||||
border-spacing: 0px;
|
||||
border-collapse: collapse;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
|
||||
//create simple array of users own extensions
|
||||
unset($_SESSION['user']['extensions']);
|
||||
if (is_array($_SESSION['user']['extension'])) {
|
||||
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
|
||||
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div id='ajax_reponse'></div>
|
||||
<div id='cmd_reponse' style='display: none;'></div>
|
||||
<br><br>
|
||||
|
||||
<?php
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
@@ -1,257 +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-2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Define the operator_panel class
|
||||
*/
|
||||
if (!class_exists('basic_operator_panel')) {
|
||||
class basic_operator_panel {
|
||||
|
||||
/**
|
||||
* Define the variables
|
||||
*/
|
||||
public $domain_uuid;
|
||||
|
||||
/**
|
||||
* Called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
if (!isset($this->domain_uuid)) {
|
||||
$this->domain_uuid = $_SESSION['domain_uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public function call_activity() {
|
||||
|
||||
//define the global variable
|
||||
global $ext_user_status;
|
||||
|
||||
//get the extensions and their user status
|
||||
$sql = "select ";
|
||||
$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, ";
|
||||
$sql .= "u.user_uuid, ";
|
||||
$sql .= "u.user_status ";
|
||||
$sql .= "from ";
|
||||
$sql .= "v_extensions as e ";
|
||||
$sql .= "left outer join v_extension_users as eu on ( eu.extension_uuid = e.extension_uuid and eu.domain_uuid = :domain_uuid ) ";
|
||||
$sql .= "left outer join v_users as u on ( u.user_uuid = eu.user_uuid and u.domain_uuid = :domain_uuid ) ";
|
||||
$sql .= "where ";
|
||||
$sql .= "e.enabled = 'true' and ";
|
||||
$sql .= "e.domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by ";
|
||||
$sql .= "e.extension asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$extensions = $database->select($sql, $parameters);
|
||||
|
||||
//store extension status by user uuid
|
||||
if (isset($extensions)) {
|
||||
foreach($extensions as &$row) {
|
||||
if ($row['user_uuid'] != '') {
|
||||
$ext_user_status[$row['user_uuid']] = $row['user_status'];
|
||||
unset($row['user_status']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//send the command
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$switch_result = event_socket_request($fp, 'api show channels as json');
|
||||
$json_array = json_decode($switch_result, true);
|
||||
}
|
||||
|
||||
//build the response
|
||||
$x = 0;
|
||||
if (isset($extensions)) {
|
||||
foreach($extensions as &$row) {
|
||||
$user = $row['extension'];
|
||||
if (strlen($row['number_alias']) >0 ) {
|
||||
$user = $row['number_alias'];
|
||||
}
|
||||
|
||||
//add the extension details
|
||||
$array[$x] = $row;
|
||||
|
||||
//set the call detail defaults
|
||||
$array[$x]["uuid"] = null;
|
||||
$array[$x]["direction"] = null;
|
||||
$array[$x]["created"] = null;
|
||||
$array[$x]["created_epoch"] = null;
|
||||
$array[$x]["name"] = null;
|
||||
$array[$x]["state"] = null;
|
||||
$array[$x]["cid_name"] = null;
|
||||
$array[$x]["cid_num"] = null;
|
||||
$array[$x]["ip_addr"] = null;
|
||||
$array[$x]["dest"] = null;
|
||||
$array[$x]["application"] = null;
|
||||
$array[$x]["application_data"] = null;
|
||||
$array[$x]["dialplan"] = null;
|
||||
$array[$x]["context"] = null;
|
||||
$array[$x]["read_codec"] = null;
|
||||
$array[$x]["read_rate"] = null;
|
||||
$array[$x]["read_bit_rate"] = null;
|
||||
$array[$x]["write_codec"] = null;
|
||||
$array[$x]["write_rate"] = null;
|
||||
$array[$x]["write_bit_rate"] = null;
|
||||
$array[$x]["secure"] = null;
|
||||
$array[$x]["hostname"] = null;
|
||||
$array[$x]["presence_id"] = null;
|
||||
$array[$x]["presence_data"] = null;
|
||||
$array[$x]["callstate"] = null;
|
||||
$array[$x]["callee_name"] = null;
|
||||
$array[$x]["callee_num"] = null;
|
||||
$array[$x]["callee_direction"] = null;
|
||||
$array[$x]["call_uuid"] = null;
|
||||
$array[$x]["sent_callee_name"] = null;
|
||||
$array[$x]["sent_callee_num"] = null;
|
||||
$array[$x]["destination"] = null;
|
||||
|
||||
//add the active call details
|
||||
$found = false;
|
||||
if (isset($json_array['rows'])) {
|
||||
foreach($json_array['rows'] as &$field) {
|
||||
$presence_id = $field['presence_id'];
|
||||
$presence = explode("@", $presence_id);
|
||||
$presence_id = $presence[0];
|
||||
$presence_domain = $presence[1];
|
||||
if ($user == $presence_id) {
|
||||
if ($presence_domain == $_SESSION['domain_name']) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//normalize the array
|
||||
if ($found) {
|
||||
$array[$x]["uuid"] = $field['uuid'];
|
||||
$array[$x]["direction"] = $field['direction'];
|
||||
$array[$x]["created"] = $field['created'];
|
||||
$array[$x]["created_epoch"] = $field['created_epoch'];
|
||||
$array[$x]["name"] = $field['name'];
|
||||
$array[$x]["state"] = $field['state'];
|
||||
$array[$x]["cid_name"] = $field['cid_name'];
|
||||
$array[$x]["cid_num"] = $field['cid_num'];
|
||||
$array[$x]["ip_addr"] = $field['ip_addr'];
|
||||
$array[$x]["dest"] = $field['dest'];
|
||||
$array[$x]["application"] = $field['application'];
|
||||
$array[$x]["application_data"] = $field['application_data'];
|
||||
$array[$x]["dialplan"] = $field['dialplan'];
|
||||
$array[$x]["context"] = $field['context'];
|
||||
$array[$x]["read_codec"] = $field['read_codec'];
|
||||
$array[$x]["read_rate"] = $field['read_rate'];
|
||||
$array[$x]["read_bit_rate"] = $field['read_bit_rate'];
|
||||
$array[$x]["write_codec"] = $field['write_codec'];
|
||||
$array[$x]["write_rate"] = $field['write_rate'];
|
||||
$array[$x]["write_bit_rate"] = $field['write_bit_rate'];
|
||||
$array[$x]["secure"] = $field['secure'];
|
||||
$array[$x]["hostname"] = $field['hostname'];
|
||||
$array[$x]["presence_id"] = $field['presence_id'];
|
||||
$array[$x]["presence_data"] = $field['presence_data'];
|
||||
$array[$x]["callstate"] = $field['callstate'];
|
||||
$array[$x]["callee_name"] = $field['callee_name'];
|
||||
$array[$x]["callee_num"] = $field['callee_num'];
|
||||
$array[$x]["callee_direction"] = $field['callee_direction'];
|
||||
$array[$x]["call_uuid"] = $field['call_uuid'];
|
||||
$array[$x]["sent_callee_name"] = $field['sent_callee_name'];
|
||||
$array[$x]["sent_callee_num"] = $field['sent_callee_num'];
|
||||
$array[$x]["destination"] = $user;
|
||||
|
||||
//calculate and set the call length
|
||||
$call_length_seconds = time() - $array[$x]["created_epoch"];
|
||||
$call_length_hour = floor($call_length_seconds/3600);
|
||||
$call_length_min = floor($call_length_seconds/60 - ($call_length_hour * 60));
|
||||
$call_length_sec = $call_length_seconds - (($call_length_hour * 3600) + ($call_length_min * 60));
|
||||
$call_length_min = sprintf("%02d", $call_length_min);
|
||||
$call_length_sec = sprintf("%02d", $call_length_sec);
|
||||
$call_length = $call_length_hour.':'.$call_length_min.':'.$call_length_sec;
|
||||
$array[$x]['call_length'] = $call_length;
|
||||
|
||||
//send the command
|
||||
if ($field['state'] != '') {
|
||||
if ($fp) {
|
||||
if (is_uuid($field['uuid'])) {
|
||||
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
|
||||
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||||
$dump_array = json_decode($dump_result, true);
|
||||
if (is_array($dump_array)) {
|
||||
foreach ($dump_array as $dump_var_name => $dump_var_value) {
|
||||
$array[$x][$dump_var_name] = $dump_var_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//increment the row
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
//reindex array using extension instead of auto-incremented value
|
||||
$result = array();
|
||||
if (is_array($array)) {
|
||||
foreach ($array as $index => $subarray) {
|
||||
$extension = $subarray['extension'];
|
||||
if (is_array($subarray)) foreach ($subarray as $field => $value) {
|
||||
$result[$extension][$field] = $array[$index][$field];
|
||||
unset($array[$index][$field]);
|
||||
}
|
||||
unset($array[$subarray['extension']]['extension']);
|
||||
unset($array[$index]);
|
||||
}
|
||||
}
|
||||
|
||||
//return array
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,521 +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-2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('operator_panel_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get(null,'app/basic_operator_panel');
|
||||
|
||||
//get the call activity
|
||||
$operator_panel = new basic_operator_panel;
|
||||
$activity = $operator_panel->call_activity();
|
||||
if (is_array($activity)) {
|
||||
foreach ($activity as $extension => $fields) {
|
||||
if (substr_count($fields['call_group'], ',')) {
|
||||
$tmp = explode(',', $fields['call_group']);
|
||||
if (is_array($tmp)) foreach ($tmp as $tmp_index => $tmp_value) {
|
||||
if (trim($tmp_value) == '') { unset($tmp[$tmp_index]); }
|
||||
else { $groups[] = $tmp_value; }
|
||||
}
|
||||
}
|
||||
else if ($fields['call_group'] != '') {
|
||||
$groups[] = $fields['call_group'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_array($groups)) {
|
||||
$groups = array_unique($groups);
|
||||
sort($groups);
|
||||
}
|
||||
|
||||
//prevent warnings
|
||||
if (!is_array($_SESSION['user']['extensions'])) {
|
||||
$_SESSION['user']['extensions'] = array();
|
||||
}
|
||||
|
||||
//get registrations -- All SIP profiles
|
||||
$obj = new registrations;
|
||||
$registrations = $obj->get("all");
|
||||
|
||||
$onhover_pause_refresh = " onmouseover='refresh_stop();' onmouseout='refresh_start();'";
|
||||
|
||||
echo "<table width='100%'>";
|
||||
echo " <tr>";
|
||||
echo " <td valign='top' align='left' width='50%' nowrap>";
|
||||
echo " <b>".$text['title-operator_panel']."</b>";
|
||||
echo " </td>";
|
||||
echo " <td valign='top' align='center' nowrap>";
|
||||
|
||||
if (permission_exists("user_setting_edit") && sizeof($_SESSION['user']['extensions']) > 0) {
|
||||
$status_options[1]['status'] = "Available";
|
||||
$status_options[1]['label'] = $text['label-status_available'];
|
||||
$status_options[1]['style'] = "op_btn_status_available";
|
||||
if (permission_exists('operator_panel_on_demand')) {
|
||||
$status_options[2]['status'] = "Available (On Demand)";
|
||||
$status_options[2]['label'] = $text['label-status_on_demand'];
|
||||
$status_options[2]['style'] = "op_btn_status_available_on_demand";
|
||||
}
|
||||
$status_options[3]['status'] = "On Break";
|
||||
$status_options[3]['label'] = $text['label-status_on_break'];
|
||||
$status_options[3]['style'] = "op_btn_status_on_break";
|
||||
$status_options[4]['status'] = "Do Not Disturb";
|
||||
$status_options[4]['label'] = $text['label-status_do_not_disturb'];
|
||||
$status_options[4]['style'] = "op_btn_status_do_not_disturb";
|
||||
$status_options[5]['status'] = "Logged Out";
|
||||
$status_options[5]['label'] = $text['label-status_logged_out'];
|
||||
$status_options[5]['style'] = "op_btn_status_logged_out";
|
||||
|
||||
if (is_array($status_options)) foreach ($status_options as $status_option) {
|
||||
echo " <input type='button' id='".$status_option['style']."' class='btn' value=\"".$status_option['label']."\" onclick=\"send_cmd('index.php?status='+escape('".$status_option['status']."')); this.disabled='disabled'; refresh_start();\" ".$onhover_pause_refresh.">\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo " </td>";
|
||||
echo " <td valign='top' align='right' width='50%' nowrap>";
|
||||
echo " <table cellpadding='0' cellspacing='0' border='0'>";
|
||||
echo " <tr>";
|
||||
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>";
|
||||
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">";
|
||||
echo " </td>";
|
||||
|
||||
if (permission_exists('operator_panel_eavesdrop')) {
|
||||
echo " <td valign='top' nowrap='nowrap'>";
|
||||
if (sizeof($_SESSION['user']['extensions']) > 1) {
|
||||
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : escape($_REQUEST['eavesdrop_dest']))."\">";
|
||||
echo " <img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 0px 5px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'>";
|
||||
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
|
||||
if (is_array($_SESSION['user']['extensions'])) foreach ($_SESSION['user']['extensions'] as $user_extension) {
|
||||
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
}
|
||||
else if (sizeof($_SESSION['user']['extensions']) == 1) {
|
||||
echo " <input type='hidden' id='eavesdrop_dest' value=\"".escape($_SESSION['user']['extension'][0]['destination'])."\">";
|
||||
}
|
||||
echo " </td>";
|
||||
}
|
||||
|
||||
if (is_array($groups) && @sizeof($groups) > 0) {
|
||||
echo " <td valign='top' nowrap='nowrap'>";
|
||||
echo " <input type='hidden' id='group' value=\"".escape($_REQUEST['group'])."\">";
|
||||
if (sizeof($groups) > 5) {
|
||||
//show select box
|
||||
echo " <select class='formfld' onchange=\"document.getElementById('group').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
|
||||
echo " <option value='' ".(($_REQUEST['group'] == '') ? "selected" : null).">".$text['label-call_group']."</option>";
|
||||
echo " <option value=''>".$text['button-all']."</option>";
|
||||
if (is_array($groups)) foreach ($groups as $group) {
|
||||
echo " <option value='".escape($group)."' ".(($_REQUEST['group'] == $group) ? "selected" : null).">".escape($group)."</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
}
|
||||
else {
|
||||
//show buttons
|
||||
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".$text['button-all']."\" onclick=\"document.getElementById('group').value = '';\" ".$onhover_pause_refresh.">";
|
||||
if (is_array($groups)) foreach ($groups as $group) {
|
||||
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".escape($group)."\" ".(($_REQUEST['group'] == $group) ? "disabled='disabled'" : null)." onclick=\"document.getElementById('group').value = this.value;\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
}
|
||||
echo " </td>";
|
||||
}
|
||||
echo " <td valign='top' nowrap='nowrap'>";
|
||||
echo " <input type='hidden' id='extension_filter' value=\"".escape($_REQUEST['extension_filter'])."\">";
|
||||
echo " <input type='hidden' id='name_filter' value=\"".strtolower(escape($_REQUEST['name_filter']))."\">";
|
||||
echo " <input type='text' class='formfld' placeholder='Filter Extension' value=\"".escape($_REQUEST['extension_filter'])."\" onkeyup=\"document.getElementById('extension_filter').value = this.value; refresh_start();\" onfocus='refresh_stop();'>\n";
|
||||
echo " <input type='text' class='formfld' placeholder='Filter Name' value=\"".strtolower(escape($_REQUEST['name_filter']))."\" onkeyup=\"document.getElementById('name_filter').value = this.value; refresh_start();\" onfocus='refresh_stop();'>\n";
|
||||
echo " <input type='button' class='btn' title=\"Clear\" value=\"Clear\" onclick=\"document.getElementById('extension_filter').value = ''; document.getElementById('name_filter').value = '';\" ".$onhover_pause_refresh.">";
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
echo " </table>";
|
||||
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "<br>";
|
||||
|
||||
// Define the arrays to ensure no errors are omitted below with the sizeof operators
|
||||
$user_extensions = array();
|
||||
$grouped_extensions = array();
|
||||
$other_extensions = array();
|
||||
|
||||
if (is_array($activity)) foreach ($activity as $extension => $ext) {
|
||||
unset($block);
|
||||
|
||||
//filter by group, if defined
|
||||
if ($_REQUEST['group'] != '' && substr_count($ext['call_group'], $_REQUEST['group']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
|
||||
|
||||
//filter by extension or name, if defined
|
||||
if ($_REQUEST['extension_filter'] != '' && substr_count($ext['extension'], $_REQUEST['extension_filter']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
|
||||
if ($_REQUEST['name_filter'] != '' && substr_count($ext['filter_name'], $_REQUEST['name_filter']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
|
||||
|
||||
//check if feature code being called
|
||||
$format_number = (substr($ext['dest'], 0, 1) == '*') ? false : true;
|
||||
|
||||
//determine extension state, direction icon, and displayed name/number for caller/callee
|
||||
if ($ext['state'] == 'CS_EXECUTE') {
|
||||
if (($ext['callstate'] == 'RINGING' || $ext['callstate'] == 'EARLY' || $ext['callstate'] == 'RING_WAIT') && $ext['direction'] == 'inbound') {
|
||||
$ext_state = 'ringing';
|
||||
}
|
||||
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'active';
|
||||
}
|
||||
else if ($ext['callstate'] == 'HELD' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'held';
|
||||
}
|
||||
else if ($ext['callstate'] == 'RING_WAIT' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'ringing';
|
||||
}
|
||||
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'inbound') {
|
||||
$ext_state = 'active';
|
||||
}
|
||||
else if ($ext['callstate'] == 'HELD' && $ext['direction'] == 'inbound') {
|
||||
$ext_state = 'held';
|
||||
}
|
||||
if (!$format_number) {
|
||||
$call_name = 'System';
|
||||
$call_number = $ext['dest'];
|
||||
}
|
||||
else {
|
||||
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
|
||||
$call_number = format_phone($ext['dest']);
|
||||
}
|
||||
$dir_icon = 'outbound';
|
||||
}
|
||||
else if ($ext['state'] == 'CS_HIBERNATE') {
|
||||
if ($ext['callstate'] == 'ACTIVE') {
|
||||
$ext_state = 'active';
|
||||
if ($ext['direction'] == 'inbound') {
|
||||
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
|
||||
$call_number = format_phone($ext['dest']);
|
||||
$dir_icon = 'outbound';
|
||||
}
|
||||
else if ($ext['direction'] == 'outbound') {
|
||||
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
|
||||
$call_number = format_phone($ext['cid_num']);
|
||||
$dir_icon = 'inbound';
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($ext['state'] == 'CS_CONSUME_MEDIA' || $ext['state'] == 'CS_EXCHANGE_MEDIA') {
|
||||
if ($ext['state'] == 'CS_CONSUME_MEDIA' && $ext['callstate'] == 'RINGING' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'ringing';
|
||||
}
|
||||
else if ($ext['state'] == 'CS_EXCHANGE_MEDIA' && $ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'active';
|
||||
}
|
||||
else if ($ext['state'] == 'CS_CONSUME_MEDIA' && $ext['callstate'] == 'HELD' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'held';
|
||||
}
|
||||
else if ($ext['state'] == 'CS_EXCHANGE_MEDIA' && $ext['callstate'] == 'HELD' && $ext['direction'] == 'outbound') {
|
||||
$ext_state = 'held';
|
||||
}
|
||||
$dir_icon = 'inbound';
|
||||
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
|
||||
$call_number = format_phone($ext['cid_num']);
|
||||
}
|
||||
else {
|
||||
unset($ext_state, $dir_icon, $call_name, $call_number);
|
||||
}
|
||||
|
||||
//determin extension register status
|
||||
$extension_number = $extension.'@'.$_SESSION['domain_name'];
|
||||
$found_count = 0;
|
||||
if (is_array($registrations)) {
|
||||
foreach ($registrations as $array) {
|
||||
if ($extension_number == $array['user']) {
|
||||
$found_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($found_count > 0) {
|
||||
//determine block style by state (if any) and register status
|
||||
$style = ($ext_state != '') ? "op_ext op_state_".$ext_state : "op_ext";
|
||||
} else {
|
||||
$style = "off_ext";
|
||||
}
|
||||
unset($extension_number, $found_count, $array);
|
||||
|
||||
//determine the call identifier passed on drop
|
||||
if ($ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') { // transfer an outbound internal call
|
||||
$call_identifier = $activity[$call_number]['uuid'];
|
||||
}
|
||||
else if (($ext['variable_call_direction'] == 'outbound' || $ext['variable_call_direction'] == 'local') && $ext['variable_bridge_uuid'] != '') { // transfer an outbound external call
|
||||
$call_identifier = $ext['variable_bridge_uuid'];
|
||||
}
|
||||
else {
|
||||
if( $ext['call_uuid'] ) {
|
||||
$call_identifier = $ext['call_uuid']; // transfer all other call types
|
||||
}
|
||||
else {
|
||||
$call_identifier = $ext['uuid']; // e.g. voice menus
|
||||
}
|
||||
}
|
||||
|
||||
//determine extension draggable state
|
||||
if (permission_exists('operator_panel_manage')) {
|
||||
if (!in_array($extension, $_SESSION['user']['extensions'])) {
|
||||
//other extension
|
||||
if ($ext_state == "ringing") {
|
||||
if ($_GET['vd_ext_from'] == '' && $dir_icon == 'inbound') {
|
||||
$draggable = true; // selectable - is ringing and not outbound so can transfer away the call (can set as vd_ext_from)
|
||||
}
|
||||
else {
|
||||
$draggable = false; // unselectable - is ringing so can't send a call to the ext (can't set as vd_ext_to)
|
||||
}
|
||||
}
|
||||
else if ($ext_state == 'active') {
|
||||
$draggable = false; // unselectable - on a call already so can't transfer or send a call to the ext (can't set as vd_ext_from or vd_ext_to)
|
||||
}
|
||||
else { // idle
|
||||
if ($_GET['vd_ext_from'] == '') {
|
||||
$draggable = false; // unselectable - is idle, but can't initiate a call from the ext as is not assigned to user (can't set as vd_ext_from)
|
||||
}
|
||||
else {
|
||||
$draggable = true; // selectable - is idle, so can transfer a call in to ext (can set as vd_ext_to).
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//user extension
|
||||
if ($ext['uuid'] != '' && $ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') {
|
||||
$draggable = false;
|
||||
}
|
||||
else if ($ext_state == 'ringing' && $ext['variable_call_direction'] == 'local') {
|
||||
$draggable = false;
|
||||
}
|
||||
else if ($ext_state != '' && !$format_number) {
|
||||
$draggable = false;
|
||||
}
|
||||
else {
|
||||
$draggable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$draggable = false;
|
||||
}
|
||||
|
||||
//determine extension (user) status
|
||||
$ext_status = (in_array($extension, $_SESSION['user']['extensions'])) ? $ext_user_status[$_SESSION['user_uuid']] : $ext_user_status[$ext['user_uuid']];
|
||||
switch ($ext_status) {
|
||||
case "Available" :
|
||||
$status_icon = "available";
|
||||
$status_hover = $text['label-status_available'];
|
||||
break;
|
||||
case "Available (On Demand)" :
|
||||
$status_icon = "available_on_demand";
|
||||
$status_hover = $text['label-status_available_on_demand'];
|
||||
break;
|
||||
case "On Break" :
|
||||
$status_icon = "on_break";
|
||||
$status_hover = $text['label-status_on_break'];
|
||||
break;
|
||||
case "Do Not Disturb" :
|
||||
$status_icon = "do_not_disturb";
|
||||
$status_hover = $text['label-status_do_not_disturb'];
|
||||
break;
|
||||
default :
|
||||
$status_icon = "logged_out";
|
||||
$status_hover = $text['label-status_logged_out_or_unknown'];
|
||||
}
|
||||
|
||||
$block .= "<div id='".escape($extension)."' class='".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".(($ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
|
||||
$block .= "<table class='".$style."'>";
|
||||
$block .= " <tr>";
|
||||
$block .= " <td class='op_ext_icon'>";
|
||||
$block .= " <span name='".escape($extension)."'>"; // DRAG FROM
|
||||
$block .= "<img id='".escape($call_identifier)."' class='op_ext_icon' src='resources/images/status_".$status_icon.".png' title='".$status_hover."' ".(($draggable) ? "draggable='true' ondragstart=\"drag(event, this.parentNode.getAttribute('name'));\" onclick=\"virtual_drag('".escape($call_identifier)."', '".escape($extension)."');\"" : "onfocus='this.blur();' draggable='false' style='cursor: not-allowed;'").">";
|
||||
$block .= "</span>";
|
||||
$block .= " </td>";
|
||||
$block .= " <td class='op_ext_info ".$style."'>";
|
||||
if ($dir_icon != '') {
|
||||
$block .= " <img src='resources/images/".$dir_icon.".png' align='right' style='margin-top: 3px; margin-right: 1px; width: 12px; height: 12px; cursor: help;' draggable='false' alt=\"".$text['label-call_direction']."\" title=\"".$text['label-call_direction']."\">";
|
||||
}
|
||||
$block .= " <span class='op_user_info'>";
|
||||
if ($ext['effective_caller_id_name'] != '' && escape($ext['effective_caller_id_name']) != $extension) {
|
||||
$block .= " <strong class='strong'>".escape($ext['effective_caller_id_name'])."</strong> (".escape($extension).")";
|
||||
}
|
||||
else {
|
||||
$block .= " <strong class='strong'>".escape($extension)."</strong>";
|
||||
}
|
||||
$block .= " </span><br>";
|
||||
if ($ext_state != '') {
|
||||
$block .= " <span class='op_caller_info'>";
|
||||
$block .= " <table align='right'><tr><td style='text-align: right;'>";
|
||||
$block .= " <span class='op_call_info'>".escape($ext['call_length'])."</span><br>";
|
||||
$block .= " <span class='call_control'>";
|
||||
//record
|
||||
if (permission_exists('operator_panel_record') && $ext_state == 'active') {
|
||||
$call_identifier_record = $ext['call_uuid'];
|
||||
$rec_file = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".escape($call_identifier_record).".wav";
|
||||
if (file_exists($rec_file)) {
|
||||
$block .= "<img src='resources/images/recording.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: help;' title=\"".$text['label-recording']."\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
else {
|
||||
$block .= "<img src='resources/images/record.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title=\"".$text['label-record']."\" onclick=\"record_call('".$call_identifier_record."');\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
}
|
||||
//eavesdrop
|
||||
if (permission_exists('operator_panel_eavesdrop') && $ext_state == 'active' && sizeof($_SESSION['user']['extensions']) > 0 && !in_array($extension, $_SESSION['user']['extensions'])) {
|
||||
$block .= "<img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-eavesdrop']."' onclick=\"eavesdrop_call('".escape($ext['destination'])."','".escape($call_identifier)."');\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
//hangup
|
||||
if (permission_exists('operator_panel_hangup') || in_array($extension, $_SESSION['user']['extensions'])) {
|
||||
if ($ext['variable_bridge_uuid'] == '' && $ext_state == 'ringing') {
|
||||
$call_identifier_hangup_uuid = $ext['uuid'];
|
||||
}
|
||||
else if ($dir_icon == 'outbound') {
|
||||
$call_identifier_hangup_uuid = $ext['uuid'];
|
||||
}
|
||||
else {
|
||||
$call_identifier_hangup_uuid = $call_identifier;
|
||||
}
|
||||
$block .= "<img src='resources/images/kill.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-hangup']."' onclick=\"hangup_call('".escape($call_identifier_hangup_uuid)."');\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
$block .= "</span>";
|
||||
//transfer
|
||||
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
|
||||
$block .= "<img id='destination_control_".escape($extension)."_transfer' class='destination_control' src='resources/images/keypad_transfer.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' onclick=\"toggle_destination('".escape($extension)."', 'transfer');\" ".$onhover_pause_refresh.">";
|
||||
}
|
||||
$block .= " </td></tr></table>";
|
||||
if (permission_exists('operator_panel_call_details')) {
|
||||
$block .= " <span id='op_caller_details_".escape($extension)."'><strong>".escape($call_name)."</strong><br>".escape($call_number)."</span>";
|
||||
}
|
||||
$block .= " </span>";
|
||||
//transfer
|
||||
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
|
||||
$call_identifier_transfer = $ext['variable_bridge_uuid'];
|
||||
$block .= " <form id='frm_destination_".escape($extension)."_transfer' onsubmit=\"go_destination('".escape($extension)."', document.getElementById('destination_".escape($extension)."_transfer').value, 'transfer', '".escape($call_identifier_transfer)."'); return false;\">";
|
||||
$block .= " <input type='text' class='formfld' id='destination_".escape($extension)."_transfer' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 3px; text-align: center; display: none;' onblur=\"toggle_destination('".escape($extension)."', 'transfer');\">";
|
||||
$block .= " </form>\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
//call
|
||||
if (in_array($extension, $_SESSION['user']['extensions'])) {
|
||||
$block .= " <img id='destination_control_".escape($extension)."_call' class='destination_control' src='resources/images/keypad_call.png' style='width: 12px; height: 12px; border: none; margin-top: 26px; margin-right: 1px; cursor: pointer;' align='right' onclick=\"toggle_destination('".escape($extension)."', 'call');\" ".$onhover_pause_refresh.">";
|
||||
$block .= " <form id='frm_destination_".escape($extension)."_call' onsubmit=\"go_destination('".escape($extension)."', document.getElementById('destination_".escape($extension)."_call').value, 'call'); return false;\">";
|
||||
$block .= " <input type='text' class='formfld' id='destination_".escape($extension)."_call' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 10px; text-align: center; display: none;' onblur=\"toggle_destination('".escape($extension)."', 'call');\">";
|
||||
$block .= " </form>\n";
|
||||
}
|
||||
}
|
||||
$block .= " </td>";
|
||||
$block .= " </tr>";
|
||||
$block .= "</table>";
|
||||
|
||||
if (if_group("superadmin") && isset($_GET['debug'])) {
|
||||
$block .= "<span style='font-size: 10px;'>";
|
||||
$block .= "From ID<br> <strong style='color: maroon'>".escape($extension)."</strong><br>";
|
||||
$block .= "uuid<br> <strong style='color: ".($call_identifier == $ext['uuid'] ? 'blue' : 'black').";'>".escape($ext['uuid'])."</strong><br>";
|
||||
$block .= "call_uuid<br> <strong style='color: ".($call_identifier == $ext['call_uuid'] ? 'blue' : 'black').";'>".escape($ext['call_uuid'])."</strong><br>";
|
||||
$block .= "variable_bridge_uuid<br> <strong style='color: ".($call_identifier == $ext['variable_bridge_uuid'] ? 'blue' : 'black').";'>".escape($ext['variable_bridge_uuid'])."</strong><br>";
|
||||
$block .= "direction<br> <strong style='color: black;'>".escape($ext['direction'])."</strong><br>";
|
||||
$block .= "variable_call_direction<br> <strong style='color: black;'>".escape($ext['variable_call_direction'])."</strong><br>";
|
||||
$block .= "state<br> <strong style='color: black;'>".escape($ext['state'])."</strong><br>";
|
||||
$block .= "cid_num<br> <strong style='color: black;'>".escape($ext['cid_num'])."</strong><br>";
|
||||
$block .= "dest<br> <strong style='color: black;'>".escape($ext['dest'])."</strong><br>";
|
||||
$block .= "context<br> <strong style='color: black;'>".escape($ext['context'])."</strong><br>";
|
||||
$block .= "presence_id<br> <strong style='color: black;'>".escape($ext['presence_id'])."</strong><br>";
|
||||
$block .= "callstate<br> <strong style='color: black;'>".escape($ext['callstate'])."</strong><br>";
|
||||
$block .= "</span>";
|
||||
}
|
||||
$block .= "</div>";
|
||||
|
||||
if (in_array($extension, $_SESSION['user']['extensions'])) {
|
||||
$user_extensions[] = $block;
|
||||
} elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'], FILTER_VALIDATE_BOOLEAN)) {
|
||||
$grouped_extensions[$ext['call_group']][] = $block;
|
||||
} else {
|
||||
$other_extensions[] = $block;
|
||||
}
|
||||
}
|
||||
|
||||
if (sizeof($user_extensions) > 0) {
|
||||
echo "<table width='100%'><tr><td>";
|
||||
if (is_array($user_extensions)) foreach ($user_extensions as $ext_block) {
|
||||
echo $ext_block;
|
||||
}
|
||||
echo "</td></tr></table><br>";
|
||||
}
|
||||
|
||||
if (sizeof($grouped_extensions) > 0) {
|
||||
// Ensure alphabetical order
|
||||
ksort($grouped_extensions);
|
||||
foreach ($grouped_extensions as $group => $extensions) {
|
||||
echo "<strong style='color: black;'>".ucwords(escape($group))."</strong>";
|
||||
echo "<br><br>";
|
||||
echo "<table width='100%'><tr><td>";
|
||||
foreach ($extensions as $ext_block) {
|
||||
echo $ext_block;
|
||||
}
|
||||
echo "</td></tr></table><br>";
|
||||
}
|
||||
}
|
||||
|
||||
if (sizeof($other_extensions) > 0) {
|
||||
echo "<strong style='color: black;'>".$text['label-other_extensions']."</strong>";
|
||||
echo "<br><br>";
|
||||
echo "<table width='100%'><tr><td>";
|
||||
foreach ($other_extensions as $ext_block) {
|
||||
echo $ext_block;
|
||||
}
|
||||
echo "</td></tr></table>";
|
||||
}
|
||||
|
||||
if (sizeof($other_extensions) + sizeof($grouped_extensions) < 1) {
|
||||
echo $text['label-no_extensions_found'];
|
||||
}
|
||||
|
||||
echo "<br><br>";
|
||||
|
||||
/*
|
||||
if (if_group("superadmin") && isset($_GET['debug'])) {
|
||||
echo '$activity<br>';
|
||||
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
|
||||
print_r($activity);
|
||||
echo "</textarea>";
|
||||
echo "<br><br>";
|
||||
|
||||
echo '$_SESSION<br>';
|
||||
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
|
||||
print_r($_SESSION);
|
||||
echo "</textarea>";
|
||||
}
|
||||
*/
|
||||
|
||||
?>
|
||||
@@ -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"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,97 +0,0 @@
|
||||
<?php
|
||||
|
||||
//application details
|
||||
$apps[$x]['name'] = 'Bridges';
|
||||
$apps[$x]['uuid'] = 'a6a7c4c5-340a-43ce-bcbc-2ed9bab8659d';
|
||||
$apps[$x]['category'] = '';
|
||||
$apps[$x]['subcategory'] = '';
|
||||
$apps[$x]['version'] = '';
|
||||
$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'] = '';
|
||||
|
||||
//permission details
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_view';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_add';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_edit';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_delete';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_all';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'bridge_destinations';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
|
||||
//destination details
|
||||
$y = 0;
|
||||
$apps[$x]['destinations'][$y]['type'] = "sql";
|
||||
$apps[$x]['destinations'][$y]['label'] = "bridges";
|
||||
$apps[$x]['destinations'][$y]['name'] = "bridges";
|
||||
//$apps[$x]['destinations'][$y]['sql'] = "select bridge_name, bridge_destination, bridge_description from v_bridges ";
|
||||
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and bridge_enabled = 'true'";
|
||||
$apps[$x]['destinations'][$y]['order_by'] = "bridge_name asc";
|
||||
$apps[$x]['destinations'][$y]['field']['bridge_uuid'] = "bridge_uuid";
|
||||
$apps[$x]['destinations'][$y]['field']['name'] = "bridge_name";
|
||||
$apps[$x]['destinations'][$y]['field']['description'] = "bridge_description";
|
||||
$apps[$x]['destinations'][$y]['field']['destination'] = "bridge_destination";
|
||||
$apps[$x]['destinations'][$y]['select_value']['user_contact'] = "\${destination}";
|
||||
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "bridge:\${destination}";
|
||||
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:bridge \${destination}";
|
||||
$apps[$x]['destinations'][$y]['select_label'] = "\${name} \${description} ";
|
||||
$y++;
|
||||
|
||||
//Bridges
|
||||
$y = 0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = 'v_bridges';
|
||||
$apps[$x]['db'][$y]['table']['parent'] = '';
|
||||
$z = 0;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'bridge_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'] = 'bridge_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'] = 'Enter the name.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'bridge_destination';
|
||||
$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 destination.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'bridge_enabled';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Select to enable or disable.';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'bridge_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'] = 'Enter the description.';
|
||||
$z++;
|
||||
|
||||
?>
|
||||
@@ -1,257 +0,0 @@
|
||||
<?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-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_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['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['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['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['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['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['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['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['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";
|
||||
|
||||
?>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?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';
|
||||
|
||||
?>
|
||||
@@ -1,261 +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 - 2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (!permission_exists('bridge_add') && !permission_exists('bridge_edit')) {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$bridge_uuid = $_REQUEST["id"];
|
||||
$id = $_REQUEST["id"];
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
$bridge_uuid = $_POST["bridge_uuid"];
|
||||
$bridge_name = $_POST["bridge_name"];
|
||||
$bridge_destination = $_POST["bridge_destination"];
|
||||
$bridge_enabled = $_POST["bridge_enabled"];
|
||||
$bridge_description = $_POST["bridge_description"];
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
//delete the bridge
|
||||
if (permission_exists('bridge_delete')) {
|
||||
if ($_POST['action'] == 'delete' && is_uuid($bridge_uuid)) {
|
||||
//prepare
|
||||
$array[0]['checked'] = 'true';
|
||||
$array[0]['uuid'] = $bridge_uuid;
|
||||
//delete
|
||||
$obj = new bridges;
|
||||
$obj->delete($array);
|
||||
//redirect
|
||||
header('Location: bridges.php');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//get the uuid from the POST
|
||||
if ($action == "update") {
|
||||
$bridge_uuid = $_POST["bridge_uuid"];
|
||||
}
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: bridges.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//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) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//add the bridge_uuid
|
||||
if (strlen($bridge_uuid) == 0) {
|
||||
$bridge_uuid = uuid();
|
||||
}
|
||||
|
||||
//prepare the array
|
||||
$array['bridges'][0]['bridge_uuid'] = $bridge_uuid;
|
||||
$array['bridges'][0]['domain_uuid'] = $_SESSION["domain_uuid"];
|
||||
$array['bridges'][0]['bridge_name'] = $bridge_name;
|
||||
$array['bridges'][0]['bridge_destination'] = $bridge_destination;
|
||||
$array['bridges'][0]['bridge_enabled'] = $bridge_enabled;
|
||||
$array['bridges'][0]['bridge_description'] = $bridge_description;
|
||||
|
||||
//save to the data
|
||||
$database = new database;
|
||||
$database->app_name = 'bridges';
|
||||
$database->app_uuid = 'a6a7c4c5-340a-43ce-bcbc-2ed9bab8659d';
|
||||
$database->save($array);
|
||||
$message = $database->message;
|
||||
|
||||
//clear the destinations session array
|
||||
if (isset($_SESSION['destinations']['array'])) {
|
||||
unset($_SESSION['destinations']['array']);
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
if (isset($action)) {
|
||||
if ($action == "add") {
|
||||
$_SESSION["message"] = $text['message-add'];
|
||||
}
|
||||
if ($action == "update") {
|
||||
$_SESSION["message"] = $text['message-update'];
|
||||
}
|
||||
header('Location: bridges.php');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && $_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) {
|
||||
$bridge_name = $row["bridge_name"];
|
||||
$bridge_destination = $row["bridge_destination"];
|
||||
$bridge_enabled = $row["bridge_enabled"];
|
||||
$bridge_description = $row["bridge_description"];
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
}
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//show the header
|
||||
$document['title'] = $text['title-bridge'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<form name='frm' id='frm' method='post'>\n";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-bridge']."</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'=>'bridges.php']);
|
||||
if ($action == 'update' && permission_exists('bridge_delete')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>'margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','name'=>'action','value'=>'save']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
if ($action == 'update' && permission_exists('bridge_delete')) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-bridge_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='bridge_name' maxlength='255' value='".escape($bridge_name)."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-bridge_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-bridge_destination']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' style='position: relative;' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='bridge_destination' maxlength='255' value='".escape($bridge_destination)."'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-bridge_destination']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
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";
|
||||
}
|
||||
else {
|
||||
echo " <option value='true'>".$text['label-true']."</option>\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";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-bridge_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='bridge_description' maxlength='255' value=\"".escape($bridge_description)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-bridge_description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
if ($action == "update") {
|
||||
echo "<input type='hidden' name='bridge_uuid' value='".escape($bridge_uuid)."'>\n";
|
||||
}
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
@@ -1,265 +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 - 2019
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('bridge_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the http post data
|
||||
if (is_array($_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) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('bridge_add')) {
|
||||
$obj = new bridges;
|
||||
$obj->copy($bridges);
|
||||
}
|
||||
break;
|
||||
case 'toggle':
|
||||
if (permission_exists('bridge_edit')) {
|
||||
$obj = new bridges;
|
||||
$obj->toggle($bridges);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('bridge_delete')) {
|
||||
$obj = new bridges;
|
||||
$obj->delete($bridges);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: bridges.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get order and order by
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//add the search string
|
||||
if (isset($_GET["search"])) {
|
||||
$search = strtolower($_GET["search"]);
|
||||
$sql_search = " (";
|
||||
$sql_search .= " lower(bridge_name) like :search ";
|
||||
$sql_search .= " or lower(bridge_destination) like :search ";
|
||||
$sql_search .= " or lower(bridge_enabled) like :search ";
|
||||
$sql_search .= " or lower(bridge_description) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
|
||||
//get the count
|
||||
$sql = "select count(bridge_uuid) from v_bridges ";
|
||||
if ($_GET['show'] == "all" && permission_exists('bridge_all')) {
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "where ".$sql_search;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
}
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
}
|
||||
$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 ? "&search=".$search : null;
|
||||
$param = ($_GET['show'] == 'all' && permission_exists('bridge_all')) ? "&show=all" : null;
|
||||
$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;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(bridge_uuid)', '*', $sql);
|
||||
$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');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include the header
|
||||
$document['title'] = $text['title-bridges'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-bridges']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (permission_exists('bridge_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'bridge_edit.php']);
|
||||
}
|
||||
if (permission_exists('bridge_add') && $bridges) {
|
||||
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');"]);
|
||||
}
|
||||
if (permission_exists('bridge_edit') && $bridges) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display: none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
|
||||
}
|
||||
if (permission_exists('bridge_delete') && $bridges) {
|
||||
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('bridge_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>\n";
|
||||
}
|
||||
else {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?show=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 button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'bridges.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";
|
||||
echo "</div>\n";
|
||||
|
||||
if (permission_exists('bridge_add') && $bridges) {
|
||||
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('bridge_edit') && $bridges) {
|
||||
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_action_set('toggle'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
if (permission_exists('bridge_delete') && $bridges) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
|
||||
echo $text['title_description-bridge']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($bridges) && @sizeof($bridges) != 0) {
|
||||
$x = 0;
|
||||
foreach ($bridges as $row) {
|
||||
if (permission_exists('bridge_edit')) {
|
||||
$list_row_url = "bridge_edit.php?id=".urlencode($row['bridge_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='bridges[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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')) {
|
||||
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
|
||||
}
|
||||
echo " <td>\n";
|
||||
if (permission_exists('bridge_edit')) {
|
||||
echo " <a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['bridge_name'])."</a>\n";
|
||||
}
|
||||
else {
|
||||
echo " ".escape($row['bridge_name']);
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['bridge_destination'])."</td>\n";
|
||||
if (permission_exists('bridge_edit')) {
|
||||
echo " <td class='no-link center'>\n";
|
||||
echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.$row['bridge_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
|
||||
}
|
||||
else {
|
||||
echo " <td class='center'>\n";
|
||||
echo $text['label-'.$row['bridge_enabled']];
|
||||
}
|
||||
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') {
|
||||
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";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($bridges);
|
||||
}
|
||||
|
||||
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";
|
||||
echo "</form>\n";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
@@ -1,270 +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-2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//define the bridges class
|
||||
if (!class_exists('bridges')) {
|
||||
class bridges {
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission_prefix;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
private $toggle_field;
|
||||
private $toggle_values;
|
||||
|
||||
/**
|
||||
* called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
//assign private variables
|
||||
$this->app_name = 'bridges';
|
||||
$this->app_uuid = 'a6a7c4c5-340a-43ce-bcbc-2ed9bab8659d';
|
||||
$this->permission_prefix = 'bridge_';
|
||||
$this->list_page = 'bridges.php';
|
||||
$this->table = 'bridges';
|
||||
$this->uuid_prefix = 'bridge_';
|
||||
$this->toggle_field = 'bridge_enabled';
|
||||
$this->toggle_values = ['true','false'];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public function delete($records) {
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//build the delete array
|
||||
foreach ($records as $x => $record) {
|
||||
if ($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'];
|
||||
}
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//clear the destinations session array
|
||||
if (isset($_SESSION['destinations']['array'])) {
|
||||
unset($_SESSION['destinations']['array']);
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* toggle records
|
||||
*/
|
||||
public function toggle($records) {
|
||||
if (permission_exists($this->permission_prefix.'edit')) {
|
||||
|
||||
//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, ".$this->toggle_field." as toggle 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) {
|
||||
$states[$row['uuid']] = $row['toggle'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build update array
|
||||
$x = 0;
|
||||
foreach ($states as $uuid => $state) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid;
|
||||
$array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//save the changes
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//clear the destinations session array
|
||||
if (isset($_SESSION['destinations']['array'])) {
|
||||
unset($_SESSION['destinations']['array']);
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-toggle']);
|
||||
}
|
||||
unset($records, $states);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* copy records
|
||||
*/
|
||||
public function copy($records) {
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//copy the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//create insert array from existing data
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select * 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 $x => $row) {
|
||||
|
||||
//copy data
|
||||
$array[$this->table][$x] = $row;
|
||||
|
||||
//overwrite
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = uuid();
|
||||
$array[$this->table][$x]['bridge_description'] = trim($row['bridge_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//save the changes and set the message
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//set message
|
||||
message::add($text['message-copy']);
|
||||
|
||||
}
|
||||
unset($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) 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"]);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -5,43 +5,22 @@
|
||||
$apps[$x]['uuid'] = "9ed63276-e085-4897-839c-4f2e36d92d6c";
|
||||
$apps[$x]['category'] = "Switch";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['version'] = "";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "A tool to block incoming numbers.";
|
||||
$apps[$x]['description']['en-gb'] = "A tool to block incoming numbers.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Ein Werkzeug um eingehende Rufnummern zu sperren.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Ein Werkzeug um eingehende Rufnummern zu sperren.";
|
||||
$apps[$x]['description']['el-gr'] = "Εργαλείο για αποκλεισμό εισερχόμενων κλήσεων από συγκεκριμένους αριθμούς.";
|
||||
$apps[$x]['description']['es-cl'] = "Una herramineta para bloquear números entrantes";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "Outil pour bloquer des numéros d'appelant.";
|
||||
$apps[$x]['description']['fr-fr'] = "Outil pour bloquer des numéros d'appelant.";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Gereedschap om inkommende nummers te blokkeren.";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "Uma ferramenta para bloquear números que entram.";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "Outil pour bloquer les numéro d'appelant";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "Uma ferramenta para bloquear números indesejados";
|
||||
$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'] = "e8356e52-3d18-4da5-93b1-9b2e08878982";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_block";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "recent_call_limit";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "50";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Number of recent calls to show.";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "29295c90-b1b9-440b-9c7E-c8363c6e8975";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
@@ -63,34 +42,11 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "user";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_extension";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_ivr";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_ring_group";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_block_voicemail";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "view_call_block";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_block";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 0; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_block";
|
||||
$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";
|
||||
@@ -107,64 +63,34 @@
|
||||
$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']['text'] = "call_block_direction";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the direction of the calls to block.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "extension_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_extensions";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "extension_uuid";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_block_name";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "blocked_caller_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'] = "Enter the name.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_block_country_code";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the country code.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the name.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_block_number";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "blocked_caller_number";
|
||||
$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 phone number.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the full phone number.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_block_count";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "blocked_call_count";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Number of calls.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Number of calls.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_block_action";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "blocked_call_action";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Action for call.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_block_app";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Application";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_block_data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Action for call.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "date_added";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Date/Time number was added.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Date/Time number was added.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_block_enabled";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "block_call_enabled";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enable/disable blocking the call.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enable/disable blocking the call.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'call_block_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'] = 'Enter the description.';
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,51 +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) 2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//create a view for call block
|
||||
$database = new database;
|
||||
$database->execute("DROP VIEW view_call_block;", null);
|
||||
$sql = "CREATE VIEW view_call_block AS ( \n";
|
||||
$sql .= " select c.domain_uuid, call_block_uuid, c.call_block_direction, c.extension_uuid, c.call_block_name, c.call_block_country_code, \n";
|
||||
$sql .= " c.call_block_number, e.extension, e.number_alias, c.call_block_count, c.call_block_app, c.call_block_data, c.date_added, c.call_block_enabled, c.call_block_description \n";
|
||||
$sql .= " from v_call_block as c \n";
|
||||
$sql .= " left join v_extensions as e \n";
|
||||
$sql .= " on c.extension_uuid = e.extension_uuid \n";
|
||||
$sql .= "); \n";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
//set call blocks to inbound if no direction defined
|
||||
$sql = "update v_call_block set call_block_direction = 'inbound' where call_block_direction is null ";
|
||||
$database = new database;
|
||||
$database->execute($sql, null);
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+432
-835
File diff suppressed because it is too large
Load Diff
+20
-30
@@ -1,33 +1,23 @@
|
||||
<?php
|
||||
|
||||
$y=0;
|
||||
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Block";
|
||||
$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-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']['fr-fr'] = "Liste Noire";
|
||||
$apps[$x]['menu'][$y]['title']['he-il'] = "חסימת מספר";
|
||||
$apps[$x]['menu'][$y]['title']['it-it'] = "Blocco Chiamate";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep blokkade";
|
||||
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Blokowanie rozmów";
|
||||
$apps[$x]['menu'][$y]['title']['pt-br'] = "Bloqueio de chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Bloqueio de Chamadas";
|
||||
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Blocare apel";
|
||||
$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]['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]['path'] = "/app/call_block/call_block.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "user";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Call Block";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Bloqueo de llamadas";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Liste Noire";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Bloqueio de Chamadas";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "Bloqueio de chamadas";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Blokowanie rozmów";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Blockera Samtal";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "Блокування дзвінків";
|
||||
$apps[$x]['menu'][0]['title']['ro'] = "Blocare apel";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Sperrlisten";
|
||||
$apps[$x]['menu'][0]['title']['ar-eg'] = "حظر المكالمات";
|
||||
$apps[$x]['menu'][0]['title']['he'] = "חסימת מספר";
|
||||
$apps[$x]['menu'][0]['uuid'] = "29295c90-b1b9-440b-9c7E-c8363c6e8975";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/call_block/call_block.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "user";
|
||||
$apps[$x]['menu'][0]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
?>
|
||||
+114
-269
@@ -17,319 +17,164 @@
|
||||
|
||||
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-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
|
||||
The original Call Block was written by Gerrit Visser <gerrit308@gmail.com>
|
||||
All of it has been rewritten over years.
|
||||
Call Block is written by Gerrit Visser <gerrit308@gmail.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
|
||||
//check permissions
|
||||
if (!permission_exists('call_block_view')) {
|
||||
echo "access denied"; exit;
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_block_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get posted data
|
||||
if (is_array($_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) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_block_add')) {
|
||||
$obj = new call_block;
|
||||
$obj->copy($call_blocks);
|
||||
}
|
||||
break;
|
||||
case 'toggle':
|
||||
if (permission_exists('call_block_edit')) {
|
||||
$obj = new call_block;
|
||||
$obj->toggle($call_blocks);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('call_block_delete')) {
|
||||
$obj = new call_block;
|
||||
$obj->delete($call_blocks);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_block.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
//additional includes
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get variables used to control the 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.'%';
|
||||
}
|
||||
|
||||
//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'];
|
||||
}
|
||||
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) {
|
||||
$sql .= "and extension_uuid in (";
|
||||
$x = 0;
|
||||
foreach ($_SESSION['user']['extension'] as $field) {
|
||||
if (is_uuid($field['extension_uuid'])) {
|
||||
$sql .= ($x == 0) ? "'".$field['extension_uuid']."'" : ",'".$field['extension_uuid']."'";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
$sql .= ") ";
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
unset($parameters);
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
|
||||
$param = "&search=".$search;
|
||||
if ($_GET['show'] == "all" && permission_exists('call_forward_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);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//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'];
|
||||
}
|
||||
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) {
|
||||
$sql .= "and extension_uuid in (";
|
||||
$x = 0;
|
||||
foreach ($_SESSION['user']['extension'] as $field) {
|
||||
if (is_uuid($field['extension_uuid'])) {
|
||||
$sql .= ($x == 0) ? "'".$field['extension_uuid']."'" : ",'".$field['extension_uuid']."'";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
$sql .= ") ";
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_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');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include the header
|
||||
$document['title'] = $text['title-call-block'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call-block']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (permission_exists('call_block_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_block_edit.php']);
|
||||
}
|
||||
if (permission_exists('call_block_add') && $result) {
|
||||
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');"]);
|
||||
}
|
||||
if (permission_exists('call_block_edit') && $result) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display: none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
|
||||
}
|
||||
if (permission_exists('call_block_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;','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') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='50%' align='left' nowrap='nowrap'><b>".$text['title-call-block']."</b></td>\n";
|
||||
echo " <td width='50%' align='right'> </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td align='left' colspan='2'>\n";
|
||||
echo " ".$text['description-call-block']."<br /><br />\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) as num_rows from v_call_block ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] > 0) {
|
||||
$num_rows = $row['num_rows'];
|
||||
}
|
||||
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)]);
|
||||
$num_rows = '0';
|
||||
}
|
||||
}
|
||||
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 != '') {
|
||||
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 (permission_exists('call_block_add') && $result) {
|
||||
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_block_edit') && $result) {
|
||||
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_action_set('toggle'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
if (permission_exists('call_block_delete') && $result) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
//prepare to page the results
|
||||
$rows_per_page = 100;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
echo $text['description-call-block']."\n";
|
||||
echo "<br /><br />\n";
|
||||
//get the list
|
||||
$sql = "select * from v_call_block ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= " limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll();
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['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'");
|
||||
echo th_order_by('extension', $text['label-extension'], $order_by, $order, null, "class='center'");
|
||||
echo th_order_by('call_block_name', $text['label-name'], $order_by, $order);
|
||||
echo th_order_by('call_block_country_code', $text['label-country_code'], $order_by, $order);
|
||||
//table headers
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo th_order_by('call_block_number', $text['label-number'], $order_by, $order);
|
||||
echo th_order_by('call_block_count', $text['label-count'], $order_by, $order, '', "class='center hide-sm-dn'");
|
||||
echo th_order_by('call_block_name', $text['label-name'], $order_by, $order);
|
||||
echo th_order_by('call_block_count', $text['label-count'], $order_by, $order, '', "style='text-align: center;'");
|
||||
echo th_order_by('date_added', $text['label-date-added'], $order_by, $order);
|
||||
echo th_order_by('call_block_action', $text['label-action'], $order_by, $order);
|
||||
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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('call_block_add')) {
|
||||
echo "<a href='call_block_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
$x = 0;
|
||||
//show the results
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
$tr_link = (permission_exists('call_block_edit')) ? "href='call_block_edit.php?id=".$row['call_block_uuid']."'" : null;
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
if (permission_exists('call_block_edit')) {
|
||||
$list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='call_blocks[".$x."][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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')) {
|
||||
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
|
||||
}
|
||||
echo " <td class='center'>";
|
||||
switch ($row['call_block_direction']) {
|
||||
case "inbound": echo "<img src='/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_inbound_answered.png' style='border: none;' title='".$text['label-inbound']."'>\n"; break;
|
||||
case "outbound": echo "<img src='/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_outbound_answered.png' style='border: none;' title='".$text['label-outbound']."'>\n"; break;
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td class='center'>";
|
||||
if (strlen($row['extension']) == 0) {
|
||||
echo $text['label-all'];
|
||||
echo "<a href='call_block_edit.php?id=".$row['call_block_uuid']."'>".$row['call_block_number']."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($row['extension']);
|
||||
echo $row['call_block_number'];
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['call_block_name'])."</td>\n";
|
||||
echo " <td>";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_block_name']."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."' style='text-align: center;'>".$row['call_block_count']."</td>\n";
|
||||
if (defined('TIME_24HR') && TIME_24HR == 1) {
|
||||
$tmp_date_added = date("j M Y H:i:s", $row['date_added']);
|
||||
} else {
|
||||
$tmp_date_added = date("j M Y h:i:sa", $row['date_added']);
|
||||
}
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$tmp_date_added."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_block_action']."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".ucwords($row['call_block_enabled'])."</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_block_edit')) {
|
||||
echo "<a href='".$list_row_url."'>".escape($row['call_block_country_code'])."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($row['call_block_country_code']);
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>";
|
||||
if (permission_exists('call_block_edit')) {
|
||||
echo "<a href='".$list_row_url."'>".escape(format_phone($row['call_block_number']))."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape(format_phone($row['call_block_number']));
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td class='center hide-sm-dn'>".escape($row['call_block_count'])."</td>\n";
|
||||
echo " <td>".$text['label-'.$row['call_block_app']]." ".escape($row['call_block_data'])."</td>\n";
|
||||
if (permission_exists('call_block_edit')) {
|
||||
echo " <td class='no-link center'>";
|
||||
echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.$row['call_block_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
|
||||
}
|
||||
else {
|
||||
echo " <td class='center'>";
|
||||
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='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') {
|
||||
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";
|
||||
echo "<a href='call_block_edit.php?id=".$row['call_block_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('call_block_delete')) {
|
||||
echo "<a href='call_block_delete.php?id=".$row['call_block_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
|
||||
};
|
||||
echo " </td>";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($result);
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
//complete the content
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='11' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_block_add')) {
|
||||
echo "<a href='call_block_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
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";
|
||||
|
||||
echo "</form>\n";
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -0,0 +1,110 @@
|
||||
<?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>
|
||||
|
||||
Call Block is written by Gerrit Visser <gerrit308@gmail.com>
|
||||
*/
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
if (permission_exists('call_block_edit') || permission_exists('call_block_add')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//action add from cdr
|
||||
if (isset($_REQUEST["cdr_id"])) {
|
||||
|
||||
$action = "cdr_add";
|
||||
$cdr_uuid = check_str($_REQUEST["cdr_id"]);
|
||||
$call_block_name = check_str($_REQUEST["name"]);
|
||||
|
||||
// get the caller id info from cdr that user chose
|
||||
$sql = "select ";
|
||||
if ($call_block_name == '') {
|
||||
$sql .= "caller_id_name, ";
|
||||
}
|
||||
$sql .= "caller_id_number ";
|
||||
$sql .= "from v_xml_cdr ";
|
||||
$sql .= "where uuid = '".$cdr_uuid."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetch();
|
||||
unset ($prep_statement);
|
||||
|
||||
$call_block_name = ($call_block_name == '') ? $result["caller_id_name"] : $call_block_name;
|
||||
$call_block_number = $result["caller_id_number"];
|
||||
$call_block_enabled = "true";
|
||||
$block_call_action = "Reject";
|
||||
|
||||
//ensure call block is enabled in the dialplan
|
||||
$sql = "update v_dialplans set ";
|
||||
$sql .= "dialplan_enabled = 'true' ";
|
||||
$sql .= "where ";
|
||||
$sql .= "app_uuid = 'b1b31930-d0ee-4395-a891-04df94599f1f' and ";
|
||||
$sql .= "domain_uuid = '".$domain_uuid."' and ";
|
||||
$sql .= "dialplan_enabled <> 'true' ";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
// insert call block record
|
||||
$sql = "insert into v_call_block ";
|
||||
$sql .= "(";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "call_block_uuid, ";
|
||||
$sql .= "call_block_name, ";
|
||||
$sql .= "call_block_number, ";
|
||||
$sql .= "call_block_count, ";
|
||||
$sql .= "call_block_action, ";
|
||||
$sql .= "call_block_enabled, ";
|
||||
$sql .= "date_added ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'".$_SESSION['domain_uuid']."', ";
|
||||
$sql .= "'".uuid()."', ";
|
||||
$sql .= "'".$call_block_name."', ";
|
||||
$sql .= "'".$call_block_number."', ";
|
||||
$sql .= "0, ";
|
||||
$sql .= "'".$block_call_action."', ";
|
||||
$sql .= "'".$call_block_enabled."', ";
|
||||
$sql .= "'".time()."' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
$_SESSION["message"] = $text['label-add-complete'];
|
||||
|
||||
}
|
||||
|
||||
header("Location: call_block.php");
|
||||
?>
|
||||
@@ -0,0 +1,83 @@
|
||||
<?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>
|
||||
|
||||
Call Block is written by Gerrit Visser <gerrit308@gmail.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_block_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the variable
|
||||
if (count($_GET)>0) {
|
||||
$id = $_GET["id"];
|
||||
}
|
||||
|
||||
//delete the extension
|
||||
if (strlen($id)>0) {
|
||||
//read the call_block_number
|
||||
$sql = " select c.call_block_number, d.domain_name from v_call_block as c ";
|
||||
$sql .= "JOIN v_domains as d ON c.domain_uuid=d.domain_uuid ";
|
||||
$sql .= "where c.domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sql .= "and c.call_block_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll();
|
||||
$result_count = count($result);
|
||||
if ($result_count > 0) {
|
||||
$call_block_number = $result[0]["call_block_number"];
|
||||
$domain_name = $result[0]["domain_name"];
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("app:call_block:".$domain_name.":".$call_block_number);
|
||||
}
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
//delete the call block
|
||||
$sql = "delete from v_call_block ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sql .= "and call_block_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($prep_statement, $sql);
|
||||
}
|
||||
|
||||
//redirect the browser
|
||||
$_SESSION["message"] = $text['label-delete-complete'];
|
||||
header("Location: call_block.php");
|
||||
return;
|
||||
|
||||
?>
|
||||
+317
-605
File diff suppressed because it is too large
Load Diff
@@ -1,431 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* call block class
|
||||
*
|
||||
* @method null download
|
||||
*/
|
||||
if (!class_exists('call_block')) {
|
||||
class call_block {
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission_prefix;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
private $toggle_field;
|
||||
private $toggle_values;
|
||||
|
||||
/**
|
||||
* declare public variables
|
||||
*/
|
||||
public $call_block_direction;
|
||||
public $extension_uuid;
|
||||
public $call_block_app;
|
||||
public $call_block_data;
|
||||
|
||||
/**
|
||||
* called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
//assign private variables
|
||||
$this->app_name = 'call_block';
|
||||
$this->app_uuid = '9ed63276-e085-4897-839c-4f2e36d92d6c';
|
||||
$this->permission_prefix = 'call_block_';
|
||||
$this->list_page = 'call_block.php';
|
||||
$this->table = 'call_block';
|
||||
$this->uuid_prefix = 'call_block_';
|
||||
$this->toggle_field = 'call_block_enabled';
|
||||
$this->toggle_values = ['true','false'];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public function delete($records) {
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//filter out unchecked, build where clause for below
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//get necessary call block details
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select ".$this->uuid_prefix."uuid as uuid, call_block_number from v_".$this->table." ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$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) {
|
||||
$call_block_numbers[$row['uuid']] = $row['call_block_number'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build the delete array
|
||||
$x = 0;
|
||||
foreach ($call_block_numbers as $call_block_uuid => $call_block_number) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $call_block_uuid;
|
||||
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
foreach ($call_block_numbers as $call_block_number) {
|
||||
$cache->delete("app:call_block:".$_SESSION['domain_name'].":".$call_block_number);
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* toggle records
|
||||
*/
|
||||
public function toggle($records) {
|
||||
if (permission_exists($this->permission_prefix.'edit')) {
|
||||
|
||||
//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, ".$this->toggle_field." as toggle, call_block_number 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) {
|
||||
$states[$row['uuid']] = $row['toggle'];
|
||||
$call_block_numbers[] = $row['call_block_number'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build update array
|
||||
$x = 0;
|
||||
foreach ($states as $uuid => $state) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid;
|
||||
$array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//save the changes
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
foreach ($call_block_numbers as $call_block_number) {
|
||||
$cache->delete("app:call_block:".$_SESSION['domain_name'].":".$call_block_number);
|
||||
}
|
||||
|
||||
//set message
|
||||
message::add($text['message-toggle']);
|
||||
}
|
||||
unset($records, $states);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* copy records
|
||||
*/
|
||||
public function copy($records) {
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//copy the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//create insert array from existing data
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select * 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 $x => $row) {
|
||||
|
||||
//copy data
|
||||
$array[$this->table][$x] = $row;
|
||||
|
||||
//overwrite
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = uuid();
|
||||
$array[$this->table][$x]['call_block_description'] = trim($row['call_block_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//save the changes and set the message
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//set message
|
||||
message::add($text['message-copy']);
|
||||
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* add records
|
||||
*/
|
||||
public function add($records) {
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//add the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//filter checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//get the caller id info from cdrs
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$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');
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
//loop through records
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $x => $row) {
|
||||
|
||||
//build insert array
|
||||
if (permission_exists('call_block_all')) {
|
||||
$array['call_block'][$x]['call_block_uuid'] = uuid();
|
||||
$array['call_block'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_block'][$x]['call_block_direction'] = $this->call_block_direction;
|
||||
if (is_uuid($this->extension_uuid)) {
|
||||
$array['call_block'][$x]['extension_uuid'] = $this->extension_uuid;
|
||||
}
|
||||
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"]));
|
||||
|
||||
//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_number'] = $call_block_number;
|
||||
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
|
||||
}
|
||||
if ($this->call_block_direction == 'outbound') {
|
||||
$array['call_block'][$x]['call_block_number'] = trim($row["caller_destination"]);
|
||||
}
|
||||
$array['call_block'][$x]['call_block_count'] = 0;
|
||||
$array['call_block'][$x]['call_block_app'] = $this->call_block_app;
|
||||
$array['call_block'][$x]['call_block_data'] = $this->call_block_data;
|
||||
$array['call_block'][$x]['call_block_enabled'] = 'true';
|
||||
$array['call_block'][$x]['date_added'] = time();
|
||||
$x++;
|
||||
}
|
||||
else {
|
||||
if (is_array($_SESSION['user']['extension'])) {
|
||||
foreach ($_SESSION['user']['extension'] as $field) {
|
||||
if (is_uuid($field['extension_uuid'])) {
|
||||
$array['call_block'][$x]['call_block_uuid'] = uuid();
|
||||
$array['call_block'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_block'][$x]['call_block_direction'] = $this->call_block_direction;
|
||||
$array['call_block'][$x]['extension_uuid'] = $field['extension_uuid'];
|
||||
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"]));
|
||||
|
||||
//build the array
|
||||
$array['call_block'][$x]['call_block_name'] = trim($row["caller_id_name"]);
|
||||
$array['call_block'][$x]['call_block_number'] = $call_block_number;
|
||||
$array['call_block'][$x]['call_block_description'] = trim($row["caller_id_name"]);
|
||||
}
|
||||
if ($this->call_block_direction == 'outbound') {
|
||||
$array['call_block'][$x]['call_block_number'] = trim($row["caller_destination"]);
|
||||
}
|
||||
$array['call_block'][$x]['call_block_count'] = 0;
|
||||
$array['call_block'][$x]['call_block_app'] = $this->call_block_app;
|
||||
$array['call_block'][$x]['call_block_data'] = $this->call_block_data;
|
||||
$array['call_block'][$x]['call_block_enabled'] = 'true';
|
||||
$array['call_block'][$x]['date_added'] = time();
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//add records
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//ensure call block is enabled in the dialplan (build update array)
|
||||
$sql = "select dialplan_uuid from v_dialplans ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and app_uuid = '".$this->app_uuid."' ";
|
||||
$sql .= "and dialplan_enabled <> 'true' ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$rows = $database->select($sql, $parameters);
|
||||
if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
foreach ($rows as $x => $row) {
|
||||
$array['dialplans'][$x]['dialplan_uuid'] = $row['dialplan_uuid'];
|
||||
$array['dialplans'][$x]['dialplan_enabled'] = 'true';
|
||||
}
|
||||
}
|
||||
unset($rows, $parameters);
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('dialplan_edit', 'temp');
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
$response = $database->message;
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('dialplan_edit', 'temp');
|
||||
|
||||
//set message
|
||||
message::add($text['message-add']);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} //method
|
||||
|
||||
} //class
|
||||
}
|
||||
|
||||
?>
|
||||
+17
-55
@@ -22,69 +22,31 @@
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
|
||||
Callblock is written by Gerrit Visser <gerrit308@gmail.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 ( 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"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// 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"]);
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
$_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"]);
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -5,93 +5,46 @@
|
||||
$apps[$x]['uuid'] = "efc11f6b-ed73-9955-4d4d-3a1bed75a056";
|
||||
$apps[$x]['category'] = "Switch";;
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['version'] = "";
|
||||
$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.";
|
||||
$apps[$x]['description']['en-gb'] = "Schedule to immediately make multiple calls to the extension, an IVR Menu, Conference Room, or any other number.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Methode um sofort mehrere parallele Anrufe an Nebenstellen, Automatische Zentralen, Conferenzräume oder andere Rufnummern zu leiten.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Methode um sofort mehrere parallele Anrufe an Nebenstellen, Automatische Zentralen, Conferenzräume oder andere Rufnummern zu leiten.";
|
||||
$apps[$x]['description']['es-cl'] = "Realiza llamadas inmediatamente a extensiones, IVR, conferencias o cualquier otro número";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "Il fait d' massive appels vers des extensions, IVR, salles de conferences ou quelqu'autre nom.";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "Programmation de campagnes d'appels vers des extensions, IVR, salles de conferences ou tout autre numéro.";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Methode om direct meerdere parallele oproepen naar toestellen, IVR menu, Conferentie, of een ander nummer te maken.";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "Programação para imediatamente realizar várias chamadas para uma extensão, um menu IVR, Sala de Conferência ou qualquer outro número.";
|
||||
$apps[$x]['description']['fr-ca'] = "Il fait d' massive appels vers des extensions, IVR, salles de conferences ou quelqu'autre nom.";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "Programação para imediatamente fazer várias chamadas para uma extensão, um IVR, Sala de Conferência, ou qualquer outro número.";
|
||||
$apps[$x]['description']['ro-ro'] = "";
|
||||
$apps[$x]['description']['ru-ru'] = "";
|
||||
$apps[$x]['description']['sv-se'] = "";
|
||||
$apps[$x]['description']['uk-ua'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "50153bbf-78c5-b49e-7bd9-4b3e4b1134e6";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_add";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_edit";
|
||||
$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_timeout";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_concurrent_limit";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_caller_id";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_destination_number";
|
||||
$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]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_broadcast_voicemail_detection";
|
||||
$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]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][0]['name'] = "call_broadcast_view";
|
||||
$apps[$x]['permissions'][0]['menu']['uuid'] = "50153bbf-78c5-b49e-7bd9-4b3e4b1134e6";
|
||||
$apps[$x]['permissions'][0]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
|
||||
|
||||
$apps[$x]['permissions'][1]['name'] = "call_broadcast_add";
|
||||
$apps[$x]['permissions'][1]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][1]['groups'][] = "superadmin";
|
||||
|
||||
$apps[$x]['permissions'][2]['name'] = "call_broadcast_edit";
|
||||
$apps[$x]['permissions'][2]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][2]['groups'][] = "superadmin";
|
||||
|
||||
$apps[$x]['permissions'][3]['name'] = "call_broadcast_delete";
|
||||
$apps[$x]['permissions'][3]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][3]['groups'][] = "superadmin";
|
||||
|
||||
$apps[$x]['permissions'][4]['name'] = "call_broadcast_send";
|
||||
$apps[$x]['permissions'][4]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][4]['groups'][] = "superadmin";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_broadcasts";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 0; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_broadcasts";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_broadcast_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
|
||||
@@ -125,17 +78,11 @@
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_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']['text'] = "broadcast_description";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "broadcast_desc";
|
||||
$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'] = "broadcast_start_time";
|
||||
$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'] = "broadcast_timeout";
|
||||
@@ -158,12 +105,10 @@
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_caller_id_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'] = "broadcast_caller_id_number";
|
||||
$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'] = "broadcast_destination_type";
|
||||
@@ -172,7 +117,6 @@
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_phone_numbers";
|
||||
$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'] = "broadcast_avmd";
|
||||
@@ -186,9 +130,5 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_accountcode";
|
||||
$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'] = "broadcast_toll_allow";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
?>
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,31 +1,19 @@
|
||||
<?php
|
||||
|
||||
$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']['de-at'] = "Rundrufe";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$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']['fr-fr'] = "Campagne d'Appels";
|
||||
$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']['ru-ru'] = "Массовые вызовы";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Samtalsdistribution";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Трансляція дзвінка";
|
||||
$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]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['path'] = "/app/call_broadcast/call_broadcast.php";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Call Broadcast";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Llamada Broadcast";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Campagne d'Appels";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Chamada em Broadcast";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "Chamada em broadcast";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Rozsyłanie rozmów";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Samtalsdistribution";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "Трансляція дзвінка";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Automatische Anrufe";
|
||||
$apps[$x]['menu'][0]['uuid'] = "50153bbf-78c5-b49e-7bd9-4b3e4b1134e6";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/call_broadcast/call_broadcast.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,235 +17,133 @@
|
||||
|
||||
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-2012
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_broadcast_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_broadcast_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get posted data
|
||||
if (is_array($_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) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_broadcast_add')) {
|
||||
$obj = new call_broadcast;
|
||||
$obj->copy($call_broadcasts);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
$obj = new call_broadcast;
|
||||
$obj->delete($call_broadcasts);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_broadcast.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
//add the includes
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get the http get variables and set them to php variables
|
||||
$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.'%';
|
||||
}
|
||||
//show the content
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'><tr>\n";
|
||||
echo "<td width='50%' nowrap='nowrap' align='left'><b>".$text['title']."</b></td>\n";
|
||||
echo "<td width='50%' align='right'> </td>\n";
|
||||
echo "</tr></table>\n";
|
||||
echo "<br>";
|
||||
|
||||
//get the count
|
||||
$sql = "select count(*) from v_call_broadcasts ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['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;
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$num_rows = count($result);
|
||||
unset ($prep_statement, $result, $sql);
|
||||
|
||||
//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 .= "&show=all";
|
||||
}
|
||||
$rows_per_page = 10;
|
||||
$param = "";
|
||||
$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);
|
||||
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the call broadcasts
|
||||
$sql = str_replace('count(*)','*', $sql);
|
||||
$sql .= order_by($order_by, $order);
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= " limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//include the header
|
||||
$document['title'] = $text['title-call_broadcast'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call_broadcast']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (permission_exists('call_broadcast_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_broadcast_edit.php']);
|
||||
}
|
||||
if (permission_exists('call_broadcast_add') && $result) {
|
||||
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');"]);
|
||||
}
|
||||
if (permission_exists('call_broadcast_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;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_broadcast_all')) {
|
||||
if ($_GET['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 "<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_broadcast.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($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 (permission_exists('call_broadcast_add') && $result) {
|
||||
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_broadcast_delete') && $result) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
|
||||
echo $text['title_description-call_broadcast']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_broadcast_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
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_description', $text['label-description'], $order_by, $order);
|
||||
if (permission_exists('call_broadcast_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
//echo th_order_by('recordingid', 'Recording', $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('call_broadcast_add')) {
|
||||
echo "<a href='call_broadcast_edit.php' alt='add'>$v_link_label_add</a>";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result) && @sizeof($result) != 0) {
|
||||
$x = 0;
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
$tr_link = (permission_exists('call_broadcast_edit')) ? "href='call_broadcast_edit.php?id=".$row['call_broadcast_uuid']."'" : null;
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
$list_row_url = "call_broadcast_edit.php?id=".urlencode($row['call_broadcast_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='call_broadcasts[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
}
|
||||
echo " <td>";
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
echo "<a href='".$list_row_url."'>".escape($row['broadcast_name'])."</a>";
|
||||
echo "<a href='call_broadcast_edit.php?id=".$row['call_broadcast_uuid']."'>".$row['broadcast_name']."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($row['broadcast_name']);
|
||||
echo $row['broadcast_name'];
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['broadcast_concurrent_limit'])."</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') {
|
||||
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";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['broadcast_concurrent_limit']." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['recordingid']."</td>\n";
|
||||
echo " <td valign='top' class='row_stylebg'>".$row['broadcast_description']." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
echo "<a href='call_broadcast_edit.php?id=".$row['call_broadcast_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
echo "<a href='call_broadcast_delete.php?id=".$row['call_broadcast_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete-info']."')\">$v_link_label_delete</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='5' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_broadcast_add')) {
|
||||
echo "<a href='call_broadcast_edit.php' alt='add'>$v_link_label_add</a>";
|
||||
}
|
||||
unset($result);
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>\n";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
@@ -0,0 +1,61 @@
|
||||
<?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>
|
||||
*/
|
||||
require "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the id
|
||||
if (count($_GET)>0) {
|
||||
$id = $_GET["id"];
|
||||
}
|
||||
|
||||
//delete the call broadcast entry
|
||||
if (strlen($id)>0) {
|
||||
$sql = "delete from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_broadcast_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
|
||||
$_SESSION["message"] = $text['confirm-delete'];
|
||||
header("Location: call_broadcast.php");
|
||||
return;
|
||||
|
||||
?>
|
||||
@@ -17,144 +17,79 @@
|
||||
|
||||
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-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_broadcast_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set the action with add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (isset($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_broadcast_uuid = $_REQUEST["id"];
|
||||
$call_broadcast_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//function to Upload CSV/TXT file
|
||||
function upload_file($sql, $broadcast_phone_numbers) {
|
||||
$upload_csv = $sql = '';
|
||||
if (isset($_FILES['broadcast_phone_numbers_file']) && !empty($_FILES['broadcast_phone_numbers_file']) && $_FILES['broadcast_phone_numbers_file']['size'] > 0) {
|
||||
$filename=$_FILES["broadcast_phone_numbers_file"]["tmp_name"];
|
||||
$file_extension = array('application/octet-stream','application/vnd.ms-excel','text/plain','text/csv','text/tsv');
|
||||
if (in_array($_FILES['broadcast_phone_numbers_file']['type'],$file_extension)) {
|
||||
$file = fopen($filename, "r");
|
||||
$count = 0;
|
||||
while (($getData = fgetcsv($file, 0, "\n")) !== FALSE)
|
||||
{
|
||||
$count++;
|
||||
if ($count == 1) { continue; }
|
||||
$getData = preg_split('/[ ,|]/', $getData[0], null, PREG_SPLIT_NO_EMPTY);
|
||||
$separator = $getData[0];
|
||||
$separator .= (isset($getData[1]) && $getData[1] != '')? '|'.$getData[1] : '';
|
||||
$separator .= (isset($getData[2]) && $getData[2] != '')? ','.$getData[2] : '';
|
||||
$separator .= '\n';
|
||||
$upload_csv .= $separator;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
else {
|
||||
return array('code'=>false,'sql'=>'');
|
||||
}
|
||||
}
|
||||
if (!empty($broadcast_phone_numbers) && !empty($upload_csv)) {
|
||||
$sql .= $broadcast_phone_numbers.'\n'.$upload_csv;
|
||||
}
|
||||
elseif (empty($broadcast_phone_numbers) && !empty($upload_csv)) {
|
||||
$sql .= $upload_csv;
|
||||
}
|
||||
else {
|
||||
$sql .= $broadcast_phone_numbers;
|
||||
}
|
||||
return array('code'=>true,'sql'=> $sql);
|
||||
}
|
||||
|
||||
//get the http post variables and set them to php variables
|
||||
if (count($_POST)>0) {
|
||||
$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_phone_numbers = $_POST["broadcast_phone_numbers"];
|
||||
$broadcast_avmd = $_POST["broadcast_avmd"];
|
||||
$broadcast_destination_data = $_POST["broadcast_destination_data"];
|
||||
$broadcast_description = $_POST["broadcast_description"];
|
||||
$broadcast_toll_allow = $_POST["broadcast_toll_allow"];
|
||||
$broadcast_name = check_str($_POST["broadcast_name"]);
|
||||
$broadcast_description = check_str($_POST["broadcast_description"]);
|
||||
$broadcast_timeout = check_str($_POST["broadcast_timeout"]);
|
||||
$broadcast_concurrent_limit = check_str($_POST["broadcast_concurrent_limit"]);
|
||||
//$recording_uuid = check_str($_POST["recording_uuid"]);
|
||||
$broadcast_caller_id_name = check_str($_POST["broadcast_caller_id_name"]);
|
||||
$broadcast_caller_id_number = check_str($_POST["broadcast_caller_id_number"]);
|
||||
$broadcast_destination_type = check_str($_POST["broadcast_destination_type"]);
|
||||
$broadcast_phone_numbers = check_str($_POST["broadcast_phone_numbers"]);
|
||||
$broadcast_avmd = check_str($_POST["broadcast_avmd"]);
|
||||
$broadcast_destination_data = check_str($_POST["broadcast_destination_data"]);
|
||||
|
||||
if (if_group("superadmin")) {
|
||||
$broadcast_accountcode = $_POST["broadcast_accountcode"];
|
||||
if (if_group("superadmin")){
|
||||
$broadcast_accountcode = check_str($_POST["broadcast_accountcode"]);
|
||||
}
|
||||
else if (if_group("admin") && file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){
|
||||
$sql = "select count(*) ";
|
||||
$sql .= "from v_billings ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and type_value = :type_value ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['type_value'] = $_POST['accountcode'];
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
$broadcast_accountcode = $num_rows > 0 ? $_POST["broadcast_accountcode"] : $_SESSION['domain_name'];
|
||||
unset($sql, $parameters, $num_rows);
|
||||
elseif (if_group("admin") && file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/billing/app_config.php")){
|
||||
$sql_accountcode = "SELECT COUNT(*) as count FROM v_billings WHERE domain_uuid = '".$_SESSION['domain_uuid']."' AND type_value='".$_POST["accountcode"]."'";
|
||||
$prep_statement_accountcode = $db->prepare(check_sql($sql_accountcode));
|
||||
$prep_statement_accountcode->execute();
|
||||
$row_accountcode = $prep_statement_accountcode->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row_accountcode['count'] > 0) {
|
||||
$broadcast_accountcode = check_str($_POST["broadcast_accountcode"]);
|
||||
}
|
||||
else {
|
||||
$broadcast_accountcode = $_SESSION['domain_name'];
|
||||
}
|
||||
unset($sql_accountcode, $prep_statement_accountcode, $row_accountcode);
|
||||
}
|
||||
else{
|
||||
$broadcast_accountcode = $_SESSION['domain_name'];
|
||||
}
|
||||
}
|
||||
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
//delete the call broadcast
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
if ($_POST['action'] == 'delete' && is_uuid($call_broadcast_uuid)) {
|
||||
//prepare
|
||||
$call_broadcasts[0]['checked'] = 'true';
|
||||
$call_broadcasts[0]['uuid'] = $call_broadcast_uuid;
|
||||
//delete
|
||||
$obj = new call_broadcast;
|
||||
$obj->delete($call_broadcasts);
|
||||
//redirect
|
||||
header('Location: call_broadcast.php');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
$msg = '';
|
||||
if ($action == "update") {
|
||||
$call_broadcast_uuid = $_POST["call_broadcast_uuid"];
|
||||
$call_broadcast_uuid = check_str($_POST["call_broadcast_uuid"]);
|
||||
}
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: call_broadcast.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//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"; }
|
||||
@@ -182,92 +117,111 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
//add or update the database
|
||||
if ($_POST["persistformvar"] != "true") {
|
||||
|
||||
//prep insert
|
||||
if ($action == "add" && permission_exists('call_broadcast_add')) {
|
||||
//begin insert array
|
||||
$call_broadcast_uuid = uuid();
|
||||
$array['call_broadcasts'][0]['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
|
||||
//set message
|
||||
message::add($text['confirm-add']);
|
||||
|
||||
//set return url on error
|
||||
$error_return_url = "call_broadcast_edit.php";
|
||||
if ($action == "add" && permission_exists('call_broadcast_add')) {
|
||||
$call_broadcast_uuid = uuid();
|
||||
$sql = "insert into v_call_broadcasts ";
|
||||
$sql .= "(";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "call_broadcast_uuid, ";
|
||||
$sql .= "broadcast_name, ";
|
||||
$sql .= "broadcast_description, ";
|
||||
$sql .= "broadcast_timeout, ";
|
||||
$sql .= "broadcast_concurrent_limit, ";
|
||||
//$sql .= "recording_uuid, ";
|
||||
$sql .= "broadcast_caller_id_name, ";
|
||||
$sql .= "broadcast_caller_id_number, ";
|
||||
$sql .= "broadcast_destination_type, ";
|
||||
$sql .= "broadcast_phone_numbers, ";
|
||||
$sql .= "broadcast_avmd, ";
|
||||
$sql .= "broadcast_destination_data, ";
|
||||
$sql .= "broadcast_accountcode ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'$domain_uuid', ";
|
||||
$sql .= "'$call_broadcast_uuid', ";
|
||||
$sql .= "'$broadcast_name', ";
|
||||
$sql .= "'$broadcast_description', ";
|
||||
if (strlen($broadcast_timeout) == 0) {
|
||||
$sql .= "null, ";
|
||||
}
|
||||
|
||||
//prep update
|
||||
if ($action == "update" && permission_exists('call_broadcast_edit')) {
|
||||
//begin update array
|
||||
$array['call_broadcasts'][0]['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
|
||||
//set message
|
||||
message::add($text['confirm-update']);
|
||||
|
||||
//set return url on error
|
||||
$error_return_url = "call_broadcast_edit.php?id=".urlencode($_GET['id']);
|
||||
else {
|
||||
$sql .= "'$broadcast_timeout', ";
|
||||
}
|
||||
|
||||
//execute
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//add file selection and download sample
|
||||
$file_res = upload_file($sql, $broadcast_phone_numbers);
|
||||
if ($file_res['code'] != true) {
|
||||
$_SESSION["message_mood"] = "negative";
|
||||
$_SESSION["message"] = $text['file-error'];
|
||||
header("Location: ".$error_return_url);
|
||||
exit;
|
||||
}
|
||||
$broadcast_phone_numbers = $file_res['sql'];
|
||||
|
||||
//common array items
|
||||
$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;
|
||||
$array['call_broadcasts'][0]['broadcast_description'] = $broadcast_description;
|
||||
$array['call_broadcasts'][0]['broadcast_toll_allow'] = $broadcast_toll_allow;
|
||||
|
||||
//execute
|
||||
$database = new database;
|
||||
$database->app_name = 'call_broadcast';
|
||||
$database->app_uuid = 'efc11f6b-ed73-9955-4d4d-3a1bed75a056';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//redirect
|
||||
header("Location: call_broadcast.php");
|
||||
exit;
|
||||
|
||||
if (strlen($broadcast_concurrent_limit) == 0) {
|
||||
$sql .= "null, ";
|
||||
}
|
||||
else {
|
||||
$sql .= "'$broadcast_concurrent_limit', ";
|
||||
}
|
||||
//$sql .= "'$recording_uuid', ";
|
||||
$sql .= "'$broadcast_caller_id_name', ";
|
||||
$sql .= "'$broadcast_caller_id_number', ";
|
||||
$sql .= "'$broadcast_destination_type', ";
|
||||
$sql .= "'$broadcast_phone_numbers', ";
|
||||
$sql .= "'$broadcast_avmd', ";
|
||||
$sql .= "'$broadcast_destination_data', ";
|
||||
$sql .= "'$broadcast_accountcode' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
}
|
||||
$_SESSION["message"] = $text['confirm-add'];
|
||||
header("Location: call_broadcast.php");
|
||||
return;
|
||||
} //if ($action == "add")
|
||||
|
||||
if ($action == "update" && permission_exists('call_broadcast_edit')) {
|
||||
$sql = "update v_call_broadcasts set ";
|
||||
$sql .= "broadcast_name = '$broadcast_name', ";
|
||||
$sql .= "broadcast_description = '$broadcast_description', ";
|
||||
if (strlen($broadcast_timeout) == 0) {
|
||||
$sql .= "broadcast_timeout = null, ";
|
||||
}
|
||||
else {
|
||||
$sql .= "broadcast_timeout = '$broadcast_timeout', ";
|
||||
}
|
||||
if (strlen($broadcast_concurrent_limit) == 0) {
|
||||
$sql .= "broadcast_concurrent_limit = null, ";
|
||||
}
|
||||
else {
|
||||
$sql .= "broadcast_concurrent_limit = '$broadcast_concurrent_limit', ";
|
||||
}
|
||||
//$sql .= "recording_uuid = '$recording_uuid', ";
|
||||
$sql .= "broadcast_caller_id_name = '$broadcast_caller_id_name', ";
|
||||
$sql .= "broadcast_caller_id_number = '$broadcast_caller_id_number', ";
|
||||
$sql .= "broadcast_destination_type = '$broadcast_destination_type', ";
|
||||
$sql .= "broadcast_phone_numbers = '$broadcast_phone_numbers', ";
|
||||
$sql .= "broadcast_avmd = '$broadcast_avmd', ";
|
||||
$sql .= "broadcast_destination_data = '$broadcast_destination_data', ";
|
||||
$sql .= "broadcast_accountcode = '$broadcast_accountcode' ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_broadcast_uuid = '$call_broadcast_uuid'";
|
||||
echo $sql."<br><br>";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
$_SESSION["message"] = $text['confirm-update'];
|
||||
header("Location: call_broadcast.php");
|
||||
return;
|
||||
} //if ($action == "update")
|
||||
} //if ($_POST["persistformvar"] != "true")
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
|
||||
//pre-populate the form
|
||||
if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {
|
||||
if (count($_GET)>0 && $_POST["persistformvar"] != "true") {
|
||||
$call_broadcast_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and call_broadcast_uuid = :call_broadcast_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && @sizeof($row) != 0) {
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_broadcast_uuid = '$call_broadcast_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch()) {
|
||||
$broadcast_name = $row["broadcast_name"];
|
||||
$broadcast_start_time = $row["broadcast_start_time"];
|
||||
$broadcast_description = $row["broadcast_description"];
|
||||
$broadcast_timeout = $row["broadcast_timeout"];
|
||||
$broadcast_concurrent_limit = $row["broadcast_concurrent_limit"];
|
||||
//$recording_uuid = $row["recording_uuid"];
|
||||
$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"];
|
||||
@@ -275,107 +229,107 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
$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"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
unset ($prep_statement);
|
||||
}
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//begin header
|
||||
$document['title'] = $text['title-call_broadcast'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//begin content
|
||||
echo "<form name='frm' id='frm' method='post' enctype='multipart/form-data'>\n";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call_broadcast']."</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','link'=>'call_broadcast.php']);
|
||||
if ($action == "update") {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'style'=>'margin-left: 15px;','link'=>'call_broadcast_send.php?id='.urlencode($call_broadcast_uuid)]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'link'=>'call_broadcast_stop.php?id='.urlencode($call_broadcast_uuid)]);
|
||||
if (permission_exists('call_broadcast_delete')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>'margin-left: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
}
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
if ($action == 'update' && permission_exists('call_broadcast_delete')) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
|
||||
}
|
||||
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
|
||||
echo "<td width='30%' align='left' nowrap='nowrap'><b>".$text['label-call-broadcast']."</b></td>\n";
|
||||
echo "<td width='70%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' name='back' alt='".$text['button-back']."' onclick=\"window.location='call_broadcast.php'\" value='".$text['button-back']."'>\n";
|
||||
if ($action == "update") {
|
||||
echo "<input type='hidden' name='call_broadcast_uuid' value='$call_broadcast_uuid'>\n";
|
||||
echo "<input type='button' class='btn' name='' alt='".$text['button-send']."' onclick=\"window.location='call_broadcast_send.php?id=$call_broadcast_uuid'\" value='".$text['button-send']."'>\n";
|
||||
echo "<input type='button' class='btn' name='' alt='".$text['button-stop']."' onclick=\"window.location='call_broadcast_stop.php?id=".$call_broadcast_uuid."'\" value='".$text['button-stop']."'>\n";
|
||||
}
|
||||
echo " <input type='submit' class='btn' name='submit' value='".$text['button-save']."'>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_name' maxlength='255' value=\"".escape($broadcast_name)."\" required='required'>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_name' maxlength='255' value=\"$broadcast_name\" required='required'>\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (permission_exists('call_broadcast_start_time')) {
|
||||
echo "<tr>\n";
|
||||
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 "<br />\n";
|
||||
echo "".$text['description-start_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
if (if_group("superadmin")){
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-accountcode']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
if ($action == "add") { $accountcode=$_SESSION['domain_name']; }
|
||||
echo " <input class='formfld' type='text' name='broadcast_accountcode' maxlength='255' value=\"".escape($broadcast_accountcode)."\">\n";
|
||||
if ($action == "add"){ $accountcode=$_SESSION['domain_name']; }
|
||||
echo " <input class='formfld' type='text' name='broadcast_accountcode' maxlength='255' value=\"$broadcast_accountcode\">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-accountcode']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}elseif (if_group("admin") && file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/billing/app_config.php")){
|
||||
$sql_accountcode = "SELECT type_value FROM v_billings WHERE domain_uuid = '".$_SESSION['domain_uuid']."'";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-accountcode']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select name='broadcast_accountcode' id='broadcast_accountcode' class='formfld'>\n";
|
||||
$prep_statement_accountcode = $db->prepare(check_sql($sql_accountcode));
|
||||
$prep_statement_accountcode->execute();
|
||||
$result_accountcode = $prep_statement_accountcode->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result_accountcode as &$row_accountcode) {
|
||||
$selected = '';
|
||||
if (($action == "add") && ($row_accountcode['type_value'] == $_SESSION['domain_name'])){
|
||||
$selected='selected="selected"';
|
||||
}
|
||||
elseif ($row_accountcode['type_value'] == $accountcode){
|
||||
$selected='selected="selected"';
|
||||
}
|
||||
echo " <option value=\"".$row_accountcode['type_value']."\" $selected>".$row_accountcode['type_value']."</option>\n";
|
||||
}
|
||||
|
||||
unset($sql_accountcode, $prep_statement_accountcode, $result_accountcode);
|
||||
echo "</select>";
|
||||
echo "<br />\n";
|
||||
echo $text['description-accountcode']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
if (permission_exists('call_broadcast_timeout')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-timeout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_timeout' maxlength='255' min='1' step='1' value=\"".escape($broadcast_timeout)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-timeout']."\n";
|
||||
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";
|
||||
echo " ".$text['label-concurrent-limit']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_concurrent_limit' maxlength='255' min='1' step='1' value=\"".escape($broadcast_concurrent_limit)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-concurrent-limit']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-timeout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_timeout' maxlength='255' min='1' step='1' value=\"$broadcast_timeout\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-timeout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-concurrent-limit']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_concurrent_limit' maxlength='255' min='1' step='1' value=\"$broadcast_concurrent_limit\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-concurrent-limit']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
|
||||
//echo "<tr>\n";
|
||||
//echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
@@ -386,21 +340,18 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//echo " <option></option>\n";
|
||||
//$sql = "";
|
||||
//$sql .= "select * from v_recordings ";
|
||||
//$sql .= "where domain_uuid = :domain_uuid ";
|
||||
//$parameters['domain_uuid'] = $domain_uuid;
|
||||
//$database = new database;
|
||||
//$rows = $database->select($sql, $parameters, 'all');
|
||||
//if (is_array($rows) && @sizeof($rows) != 0) {
|
||||
// foreach ($rows as $row) {
|
||||
// if ($recording_uuid == $row['recording_uuid']) {
|
||||
// echo " <option value='".$row['recording_uuid']."' selected='yes'>".escape($row['recordingname'])."</option>\n";
|
||||
// }
|
||||
// else {
|
||||
// echo " <option value='".$row['recording_uuid']."'>".escape($row['recordingname'])."</option>\n";
|
||||
// }
|
||||
//$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
//$prep_statement = $db->prepare(check_sql($sql));
|
||||
//$prep_statement->execute();
|
||||
//while($row = $prep_statement->fetch()) {
|
||||
// if ($recording_uuid == $row['recording_uuid']) {
|
||||
// echo " <option value='".$row['recording_uuid']."' selected='yes'>".$row['recordingname']."</option>\n";
|
||||
// }
|
||||
// else {
|
||||
// echo " <option value='".$row['recording_uuid']."'>".$row['recordingname']."</option>\n";
|
||||
// }
|
||||
//}
|
||||
//unset($sql, $parameters, $rows, $row);
|
||||
//unset ($prep_statement);
|
||||
//echo " </select>\n";
|
||||
//echo "<br />\n";
|
||||
//echo "Recording to play when the call is answered.<br />\n";
|
||||
@@ -408,36 +359,35 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//echo "</td>\n";
|
||||
//echo "</tr>\n";
|
||||
|
||||
if (permission_exists("call_broadcast_caller_id")) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-caller-id-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_caller_id_name' maxlength='255' value=\"".escape($broadcast_caller_id_name)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-caller-id-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-callerid-number']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_caller_id_number' maxlength='255' min='0' step='1' value=\"".escape($broadcast_caller_id_number)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-caller-id-number']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-caller-id-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_caller_id_name' maxlength='255' value=\"$broadcast_caller_id_name\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-caller-id-name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-callerid-number']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='broadcast_caller_id_number' maxlength='255' min='0' step='1' value=\"$broadcast_caller_id_number\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-caller-id-number']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
/*
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " Type\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_type' maxlength='255' value=\"".escape($broadcast_destination_type)."\">\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_type' maxlength='255' value=\"$broadcast_destination_type\">\n";
|
||||
echo "<br />\n";
|
||||
echo "Optional, Destination Type: bridge, transfer, voicemail, conference, fifo, etc.\n";
|
||||
echo "</td>\n";
|
||||
@@ -448,7 +398,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo " Destination\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_data' maxlength='255' value=\"".escape($broadcast_destination_data)."\">\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_data' maxlength='255' value=\"$broadcast_destination_data\">\n";
|
||||
echo "<br />\n";
|
||||
echo "Optional, send the call to an auto attendant, conference room, or any other destination. <br /><br />\n";
|
||||
echo "conference (8khz): 01-\${domain}@default <br />\n";
|
||||
@@ -459,82 +409,62 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo "</tr>\n";
|
||||
*/
|
||||
|
||||
if (permission_exists('call_broadcast_destination_number')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-destination']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_data' maxlength='255' value=\"".escape($broadcast_destination_data)."\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-destination']." <br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
if (permission_exists('call_broadcast_phone_number_list')) {
|
||||
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 "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-destination']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_destination_data' maxlength='255' value=\"$broadcast_destination_data\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-destination']." <br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\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 "<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 />";
|
||||
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' type='text' name='broadcast_phone_numbers' rows='10'>$broadcast_phone_numbers</textarea>\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-phone']." <br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-avmd']."\n";
|
||||
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 " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-avmd']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "".$text['description-phone']." <br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
if (permission_exists('call_broadcast_voicemail_detection')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-avmd']."\n";
|
||||
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 " </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')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-broadcast_toll_allow']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_toll_allow' maxlength='255' value=".escape($broadcast_toll_allow).">\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-broadcast_toll_allow']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-description']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_description' maxlength='255' value=\"".escape($broadcast_description)."\">\n";
|
||||
echo " <input class='formfld' type='text' name='broadcast_description' maxlength='255' value=\"$broadcast_description\">\n";
|
||||
echo "<br />\n";
|
||||
echo "".$text['description-info']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
echo " <br>";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
|
||||
if ($action == "update") {
|
||||
echo "<input type='hidden' name='call_broadcast_uuid' value='".escape($call_broadcast_uuid)."'>\n";
|
||||
}
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>";
|
||||
|
||||
/*
|
||||
@@ -560,24 +490,22 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
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";
|
||||
}
|
||||
$sql .= "select distinct(user_category) as user_category from v_users ";
|
||||
//$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch()) {
|
||||
if ($user_category == $row['user_category']) {
|
||||
echo " <option value='".$row['user_category']."' selected='yes'>".$row['user_category']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".$row['user_category']."'>".$row['user_category']."</option>\n";
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
unset ($prep_statement);
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
//echo "zzz.<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
@@ -591,23 +519,21 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
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";
|
||||
}
|
||||
//$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch()) {
|
||||
if ($recording_uuid == $row['group_name']) {
|
||||
echo " <option value='".$row['group_name']."' selected='yes'>".$row['group_name']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".$row['group_name']."'>".$row['group_name']."</option>\n";
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
unset ($prep_statement);
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
//echo "zzz.<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
@@ -622,21 +548,18 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
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";
|
||||
}
|
||||
//$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch()) {
|
||||
if ($gateway == $row['gateway']) {
|
||||
echo " <option value='".$row['gateway']."' selected='yes'>".$row['gateway']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".$row['gateway']."'>".$row['gateway']."</option>\n";
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
unset ($prep_statement);
|
||||
echo " <option value='loopback'>loopback</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
@@ -659,6 +582,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//echo " <option value='zzz'>cell</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
//echo "zzz.<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
@@ -677,6 +601,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
//echo " <option value='zzz'>cell</option>\n";
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
//echo "zzz.<br />\n";
|
||||
echo "\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
@@ -684,7 +609,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
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='hidden' name='call_broadcast_uuid' value='$call_broadcast_uuid'>\n";
|
||||
echo " <input type='submit' name='submit' class='btn' value='Send Broadcast'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
@@ -694,7 +619,5 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
}
|
||||
*/
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
|
||||
@@ -17,27 +17,23 @@
|
||||
|
||||
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-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//chec permissions
|
||||
if (permission_exists('call_broadcast_send')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_broadcast_send')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
@@ -46,23 +42,22 @@
|
||||
//set the max execution time to 1 hour
|
||||
ini_set(max_execution_time,3600);
|
||||
|
||||
//define the asynchronous command function
|
||||
function cmd_async($cmd) {
|
||||
//windows
|
||||
if (stristr(PHP_OS, 'WIN')) {
|
||||
$descriptorspec = array(
|
||||
0 => array("pipe", "r"), // stdin
|
||||
1 => array("pipe", "w"), // stdout
|
||||
2 => array("pipe", "w") // stderr
|
||||
);
|
||||
$process = proc_open("start ".$cmd, $descriptorspec, $pipes);
|
||||
//sleep(1);
|
||||
proc_close($process);
|
||||
}
|
||||
else { //posix
|
||||
exec ($cmd ." /dev/null 2>&1 &");
|
||||
}
|
||||
function cmd_async($cmd) {
|
||||
//windows
|
||||
if (stristr(PHP_OS, 'WIN')) {
|
||||
$descriptorspec = array(
|
||||
0 => array("pipe", "r"), // stdin
|
||||
1 => array("pipe", "w"), // stdout
|
||||
2 => array("pipe", "w") // stderr
|
||||
);
|
||||
$process = proc_open("start ".$cmd, $descriptorspec, $pipes);
|
||||
//sleep(1);
|
||||
proc_close($process);
|
||||
}
|
||||
else { //posix
|
||||
exec ($cmd ." /dev/null 2>&1 &");
|
||||
}
|
||||
}
|
||||
|
||||
//get the http get values and set as php variables
|
||||
$group_name = $_GET["group_name"];
|
||||
@@ -74,15 +69,13 @@
|
||||
|
||||
//get the call broadcast details from the database
|
||||
$sql = "select * from v_call_broadcasts ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and call_broadcast_uuid = :call_broadcast_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['call_broadcast_uuid'] = $call_broadcast_uuid;
|
||||
$database = new database;
|
||||
$row = $database->select($sql, $parameters, 'row');
|
||||
if (is_array($row) && sizeof($row) != 0) {
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_broadcast_uuid = '$call_broadcast_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch()) {
|
||||
$broadcast_name = $row["broadcast_name"];
|
||||
$broadcast_start_time = $row["broadcast_start_time"];
|
||||
$broadcast_description = $row["broadcast_description"];
|
||||
$broadcast_timeout = $row["broadcast_timeout"];
|
||||
$broadcast_concurrent_limit = $row["broadcast_concurrent_limit"];
|
||||
$recordingid = $row["recordingid"];
|
||||
@@ -93,7 +86,6 @@
|
||||
$broadcast_destination_data = $row["broadcast_destination_data"];
|
||||
$broadcast_avmd = $row["broadcast_avmd"];
|
||||
$broadcast_accountcode = $row["broadcast_accountcode"];
|
||||
$broadcast_description = $row["broadcast_description"];
|
||||
//if (strlen($row["broadcast_destination_data"]) == 0) {
|
||||
// $broadcast_destination_application = '';
|
||||
// $broadcast_destination_data = '';
|
||||
@@ -103,10 +95,10 @@
|
||||
// $broadcast_destination_application = $broadcast_destination_array[0];
|
||||
// $broadcast_destination_data = $broadcast_destination_array[1];
|
||||
//}
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
unset ($prep_statement);
|
||||
|
||||
//set the defaults
|
||||
if (strlen($broadcast_caller_id_name) == 0) {
|
||||
$broadcast_caller_id_name = "anonymous";
|
||||
}
|
||||
@@ -116,15 +108,9 @@
|
||||
if (strlen($broadcast_accountcode) == 0) {
|
||||
$broadcast_accountcode = $_SESSION['domain_name'];;
|
||||
}
|
||||
if (isset($broadcast_start_time) && is_numeric($broadcast_start_time)) {
|
||||
$sched_seconds = $broadcast_start_time;
|
||||
}
|
||||
else {
|
||||
$sched_seconds = '3';
|
||||
}
|
||||
|
||||
//get the recording name
|
||||
//$recording_filename = get_recording_filename($recordingid);
|
||||
//get the recording name
|
||||
//$recording_filename = get_recording_filename($recordingid);
|
||||
|
||||
//remove unsafe characters from the name
|
||||
$broadcast_name = str_replace(" ", "", $broadcast_name);
|
||||
@@ -157,6 +143,7 @@
|
||||
if (strlen($broadcast_phone_numbers) > 0) {
|
||||
$broadcast_phone_number_array = explode ("\n", $broadcast_phone_numbers);
|
||||
$count = 1;
|
||||
$sched_seconds = '3';
|
||||
foreach ($broadcast_phone_number_array as $tmp_value) {
|
||||
//set the variables
|
||||
$tmp_value = str_replace(";", "|", $tmp_value);
|
||||
@@ -165,57 +152,55 @@
|
||||
//remove the number formatting
|
||||
$phone_1 = preg_replace('{\D}', '', $tmp_value_array[0]);
|
||||
|
||||
if (is_numeric($phone_1)) {
|
||||
//get the dialplan variables and bridge statement
|
||||
//$dialplan = new dialplan;
|
||||
//$dialplan->domain_uuid = $_SESSION['domain_uuid'];
|
||||
//$dialplan->outbound_routes($phone_1);
|
||||
//$dialplan_variables = $dialplan->variables;
|
||||
//$bridge_array[0] = $dialplan->bridges;
|
||||
//get the dialplan variables and bridge statement
|
||||
$dialplan = new dialplan;
|
||||
$dialplan->domain_uuid = $_SESSION['domain_uuid'];
|
||||
$dialplan->outbound_routes($phone_1);
|
||||
$dialplan_variables = $dialplan->variables;
|
||||
$bridge_array[0] = $dialplan->bridges;
|
||||
//echo "var: ".$variables."\n";
|
||||
//echo "bridges: ".$bridges."\n";
|
||||
|
||||
//prepare the string
|
||||
$channel_variables = "ignore_early_media=true";
|
||||
$channel_variables .= ",origination_number=".$phone_1;
|
||||
$channel_variables .= ",origination_caller_id_name='$broadcast_caller_id_name'";
|
||||
$channel_variables .= ",origination_caller_id_number=$broadcast_caller_id_number";
|
||||
$channel_variables .= ",domain_uuid=".$_SESSION['domain_uuid'];
|
||||
$channel_variables .= ",domain=".$_SESSION['domain_name'];
|
||||
$channel_variables .= ",domain_name=".$_SESSION['domain_name'];
|
||||
$channel_variables .= ",accountcode='$broadcast_accountcode'";
|
||||
$channel_variables .= ",toll_allow='$broadcast_toll_allow'";
|
||||
if ($broadcast_avmd == "true") {
|
||||
$channel_variables .= ",execute_on_answer='avmd start'";
|
||||
//prepare the string
|
||||
$channel_variables = $dialplan_variables."ignore_early_media=true";
|
||||
$channel_variables .= ",origination_number=$phone_1";
|
||||
$channel_variables .= ",origination_caller_id_name='$broadcast_caller_id_name'";
|
||||
$channel_variables .= ",origination_caller_id_number=$broadcast_caller_id_number";
|
||||
$channel_variables .= ",domain_uuid=".$_SESSION['domain_uuid'];
|
||||
$channel_variables .= ",domain=".$_SESSION['domain_name'];
|
||||
$channel_variables .= ",domain_name=".$_SESSION['domain_name'];
|
||||
$channel_variables .= ",accountcode='$broadcast_accountcode'";
|
||||
if ($broadcast_avmd == "true") {
|
||||
$channel_variables .= ",execute_on_answer='avmd start'";
|
||||
}
|
||||
$origination_url = "{".$channel_variables."}".$bridge_array[0];
|
||||
|
||||
//get the context
|
||||
$context = $_SESSION['domain_name'];
|
||||
|
||||
//set the command
|
||||
$cmd = "bgapi sched_api +".$sched_seconds." ".$call_broadcast_uuid." bgapi originate ".$origination_url." ".$broadcast_destination_data." XML $context";
|
||||
|
||||
//if the event socket connection is lost then re-connect
|
||||
if (!$fp) {
|
||||
$fp = eventsocket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
}
|
||||
|
||||
//method 1
|
||||
$response = trim(event_socket_request($fp, 'api '.$cmd));
|
||||
|
||||
//method 2
|
||||
//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 ($broadcast_concurrent_limit == $count) {
|
||||
$sched_seconds = $sched_seconds + $broadcast_timeout;
|
||||
$count=0;
|
||||
}
|
||||
//$origination_url = "{".$channel_variables."}".$bridge_array[0];
|
||||
$origination_url = "{".$channel_variables."}loopback/".$phone_1.'/'.$_SESSION['domain_name'];
|
||||
}
|
||||
|
||||
//get the context
|
||||
$context = $_SESSION['domain_name'];
|
||||
|
||||
//set the command
|
||||
$cmd = "bgapi sched_api +".$sched_seconds." ".$call_broadcast_uuid." bgapi originate ".$origination_url." ".$broadcast_destination_data." XML $context";
|
||||
|
||||
//if the event socket connection is lost then re-connect
|
||||
if (!$fp) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
}
|
||||
|
||||
//method 1
|
||||
$response = trim(event_socket_request($fp, 'api '.$cmd));
|
||||
|
||||
//method 2
|
||||
//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 ($broadcast_concurrent_limit == $count) {
|
||||
$sched_seconds = $sched_seconds + $broadcast_timeout;
|
||||
$count=0;
|
||||
}
|
||||
}
|
||||
|
||||
$count++;
|
||||
}
|
||||
$count++;
|
||||
}
|
||||
fclose($fp);
|
||||
|
||||
@@ -249,4 +234,148 @@
|
||||
require_once "resources/footer.php";
|
||||
}
|
||||
|
||||
/*
|
||||
//reserved for future use
|
||||
|
||||
require_once "resources/header.php";
|
||||
|
||||
echo "<div align='center'>";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>\n";
|
||||
|
||||
echo "<tr class='border'>\n";
|
||||
echo " <td align=\"center\">\n";
|
||||
echo " <br>";
|
||||
|
||||
echo "<table width='100%' border='0'><tr>\n";
|
||||
echo "<td width='50%' nowrap><b>Contact List</b></td>\n";
|
||||
echo "<td width='50%' align='right'> </td>\n";
|
||||
echo "</tr></table>\n";
|
||||
|
||||
$broadcast_phone_number_array = explode ("\n", $broadcast_phone_numbers);
|
||||
foreach ($broadcast_phone_number_array as $tmp_value) {
|
||||
$tmp_value = str_replace(";", "|", $tmp_value);
|
||||
$tmp_value_array = explode ("|", $tmp_value);
|
||||
|
||||
//remove the number formatting
|
||||
$phone_1 = preg_replace('{\D}', '', $tmp_value_array[0]);
|
||||
|
||||
if ($gateway == "loopback") {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}loopback/".$phone_1."/default/XML ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
else {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}sofia/gateway/".$gateway."/".$phone_1." ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
echo $cmd."<br />\n";
|
||||
cmd_async($cmd);
|
||||
//sleep(60);
|
||||
}
|
||||
|
||||
if (strlen($group_name) > 0) {
|
||||
$sql = " select * from v_users as u, v_group_users as m ";
|
||||
$sql .= "where u.user_uuid = m.user_uuid ";
|
||||
$sql .= "and u.user_enabled = 'true' ";
|
||||
$sql .= "and m.group_name = '".$group_name."' ";
|
||||
$sql .= "and u.user_category = '".$user_category."' ";
|
||||
//echo $sql."<br />";
|
||||
}
|
||||
else {
|
||||
$sql = "select * from v_users as u ";
|
||||
$sql .= "where u.user_category = '".$user_category."' ";
|
||||
$sql .= "and u.user_enabled = 'true' ";
|
||||
//echo $sql."<br />";
|
||||
}
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
//echo th_order_by('username', 'Username', $order_by, $order);
|
||||
echo th_order_by('user_type', 'Type', $order_by, $order);
|
||||
//echo th_order_by('user_category', 'Category', $order_by, $order);
|
||||
echo th_order_by('user_first_name', 'First Name', $order_by, $order);
|
||||
echo th_order_by('user_last_name', 'Last Name', $order_by, $order);
|
||||
echo th_order_by('user_company_name', 'Organization', $order_by, $order);
|
||||
echo th_order_by('user_phone_1', 'phone_1', $order_by, $order);
|
||||
echo th_order_by('user_phone_2', 'phone_2', $order_by, $order);
|
||||
echo "<tr>\n";
|
||||
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
echo "<tr >\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[username]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_type]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_category]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_first_name]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_last_name]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_company_name]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_phone_1]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[user_phone_2]." </td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
//if (strlen($gateway) > 0) {
|
||||
if ($phonetype1 == "phone_1" && strlen($row[user_phone_1]) > 0) { $phone_1 = $row[user_phone_1]; }
|
||||
if ($phonetype1 == "phone_2" && strlen($row[user_phone_2]) > 0) { $phone_1 = $row[user_phone_2]; }
|
||||
if ($phonetype1 == "cell" && strlen($row[user_phone_mobile]) > 0) { $phone_1 = $row[user_phone_mobile]; }
|
||||
if ($phonetype2 == "phone_1" && strlen($row[user_phone_2]) > 0) { $phone_2 = $row[user_phone_2]; }
|
||||
if ($phonetype2 == "phone_2" && strlen($row[user_phone_2]) > 0) { $phone_2 = $row[user_phone_2]; }
|
||||
if ($phonetype2 == "cell" && strlen($row[user_phone_mobile]) > 0) { $phone_2 = $row[user_phone_mobile]; }
|
||||
|
||||
//remove the number formatting
|
||||
$phone_1 = preg_replace('{\D}', '', $phone_1);
|
||||
$phone_2 = preg_replace('{\D}', '', $phone_2);
|
||||
|
||||
//make the call
|
||||
if (strlen($phone_1)> 0) {
|
||||
if ($gateway == "loopback") {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}loopback/".$phone_1."/default/XML ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
else {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}sofia/gateway/".$gateway."/".$phone_1." ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
//echo $cmd."<br />\n";
|
||||
cmd_async($cmd);
|
||||
}
|
||||
if (strlen($phone_2)> 0) {
|
||||
if ($gateway == "loopback") {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}loopback/".$phone_2."/default/XML ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
else {
|
||||
$cmd = $_SESSION['switch']['bin']['dir']."/fs_cli -x \"luarun call_broadcast_originate.lua {call_timeout=".$broadcast_timeout."}sofia/gateway/".$gateway."/".$phone_2." ".$_SESSION['switch']['recordings']['dir']."/".$recording_filename." '".$broadcast_caller_id_name."' ".$broadcast_caller_id_number." ".$broadcast_timeout." '".$broadcast_destination_application."' '".$broadcast_destination_data."'\";";
|
||||
}
|
||||
//echo $cmd."<br />\n";
|
||||
cmd_async($cmd);
|
||||
}
|
||||
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br><br>";
|
||||
echo "<br><br>";
|
||||
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
echo "<br><br>";
|
||||
|
||||
|
||||
require_once "resources/footer.php";
|
||||
unset ($result_count);
|
||||
unset ($result);
|
||||
unset ($key);
|
||||
unset ($val);
|
||||
unset ($c);
|
||||
*/
|
||||
?>
|
||||
|
||||
@@ -39,26 +39,21 @@ else {
|
||||
$text = $language->get();
|
||||
|
||||
//get the html values and set them as variables
|
||||
$uuid = trim($_GET["id"]);
|
||||
|
||||
if (is_uuid($uuid)) {
|
||||
//show the result
|
||||
if (count($_GET) > 0) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$cmd = "sched_del ".$uuid;
|
||||
$result = event_socket_request($fp, 'api '.$cmd);
|
||||
message::add(htmlentities($result));
|
||||
}
|
||||
}
|
||||
|
||||
//redirect
|
||||
header('Location: call_broadcast_edit.php?id='.$uuid);
|
||||
exit;
|
||||
if (count($_GET)>0) {
|
||||
$uuid = trim($_GET["id"]);
|
||||
}
|
||||
|
||||
//default redirect
|
||||
header('Location: call_broadcasts.php');
|
||||
exit;
|
||||
//show the header
|
||||
header('Location: call_broadcast_edit.php?id='.$uuid);
|
||||
|
||||
//show the result
|
||||
if (count($_GET) > 0) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$cmd = "sched_del ".$uuid;
|
||||
$result = event_socket_request($fp, 'api '.$cmd);
|
||||
$_SESSION['message'] = htmlentities($result);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,167 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* call broadcast class
|
||||
*
|
||||
* @method null download
|
||||
*/
|
||||
if (!class_exists('call_broadcast')) {
|
||||
class call_broadcast {
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission_prefix;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
|
||||
/**
|
||||
* called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
//assign private variables
|
||||
$this->app_name = 'call_broadcast';
|
||||
$this->app_uuid = 'efc11f6b-ed73-9955-4d4d-3a1bed75a056';
|
||||
$this->permission_prefix = 'call_broadcast_';
|
||||
$this->list_page = 'call_broadcast.php';
|
||||
$this->table = 'call_broadcasts';
|
||||
$this->uuid_prefix = '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
|
||||
*/
|
||||
public function delete($records) {
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//build the delete array
|
||||
foreach($records as $x => $record) {
|
||||
if ($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'];
|
||||
}
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* copy records
|
||||
*/
|
||||
public function copy($records) {
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//copy the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get checked records
|
||||
foreach($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//create insert array from existing data
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
$sql = "select * 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 $x => $row) {
|
||||
|
||||
//copy data
|
||||
$array[$this->table][$x] = $row;
|
||||
|
||||
//overwrite
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = uuid();
|
||||
$array[$this->table][$x]['broadcast_description'] = trim($row['broadcast_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//save the changes and set the message
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//save the array
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//set message
|
||||
message::add($text['message-copy']);
|
||||
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
+15
-55
@@ -25,66 +25,26 @@
|
||||
*/
|
||||
|
||||
// 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 ( 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"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// 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"]);
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
$_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"]);
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,3 +0,0 @@
|
||||
Phone_Number,Last_Name,First_Name
|
||||
9888888877,Doe,John
|
||||
8777666666,Bullock,Sarah
|
||||
|
@@ -5,40 +5,29 @@
|
||||
$apps[$x]['uuid'] = "3f159f62-ca2d-41b8-b3f0-c5519cebbc5a";
|
||||
$apps[$x]['category'] = "Switch";;
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['version'] = "";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "Shows active calls, and agents in the call center queue.";
|
||||
$apps[$x]['description']['en-gb'] = "Shows active calls, and agents in the call center queue.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Zeigt aktive Anrufe und Agenten in der Callcenter Warteschlange.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Zeigt aktive Anrufe und Agenten in der Callcenter Warteschlange.";
|
||||
$apps[$x]['description']['es-cl'] = "Muestra las llamadas activas y los agentes en la cola del centro de llamadas.";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "Il montre les appels actives et des agents en queue du centre d'appels.";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "Affiche les appels actifs et les agents en queue sur le centre d'appel.";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Laat actieve oproepen en agenten in het Call-Center wachtrij zien";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "Mostra as chamadas ativas, e os agentes na fila do Call Center.";
|
||||
$apps[$x]['description']['fr-ca'] = "Il montre les appels actives et des agents en queue du centre d'appels.";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "Mostra as chamadas ativas e agentes na fila do centro de chamadas.";
|
||||
$apps[$x]['description']['ro-ro'] = "";
|
||||
$apps[$x]['description']['ru-ru'] = "";
|
||||
$apps[$x]['description']['sv-se'] = "";
|
||||
$apps[$x]['description']['uk-ua'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_active_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_active_options";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][0]['name'] = "call_center_active_view";
|
||||
$apps[$x]['permissions'][0]['menu']['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['permissions'][0]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
$apps[$x]['permissions'][1]['name'] = "call_center_active_options";
|
||||
$apps[$x]['permissions'][1]['menu']['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['permissions'][1]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][1]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,31 +1,19 @@
|
||||
<?php
|
||||
|
||||
$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']['de-at'] = "Aktive Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$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']['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']['it-it'] = "Call Center Attivi";
|
||||
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Actieve Call-Center";
|
||||
$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']['ru-ru'] = "Активные Колл-центры";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Aktivt Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "";
|
||||
$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]['path'] = "/app/call_center_active/call_center_queue.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Active Call Center";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Centro de Llamada Activo";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Centre d'Appel Actif";
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = "Centre d'Appels Active";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Centro de Chamadas Activo";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "Centro de chamadas ativas";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Aktywność w Call Center ";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Aktivt Call Center";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Aktive Callcenter";
|
||||
$apps[$x]['menu'][0]['uuid'] = "7fb0dd87-e984-9980-c512-2c76b887aeb2";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/call_center_active/call_center_queue.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,136 +17,102 @@
|
||||
|
||||
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-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the queue_name and set it as a variable
|
||||
$queue_name = $_GET['queue_name'];
|
||||
$name = $_GET['name'];
|
||||
|
||||
//get a new session array
|
||||
unset($_SESSION['queues']);
|
||||
unset($_SESSION['agents']);
|
||||
$queue_name = $_GET[queue_name];
|
||||
|
||||
//get the header
|
||||
$document['title'] = $text['title-call_center_queue_activity'];
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_center_queue_activity'];
|
||||
|
||||
//add the ajax
|
||||
?><script type="text/javascript">
|
||||
function loadXmlHttp(url, id) {
|
||||
var f = this;
|
||||
?><script type="text/javascript">
|
||||
function loadXmlHttp(url, id) {
|
||||
var f = this;
|
||||
f.xmlHttp = null;
|
||||
/*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
|
||||
/*@if(@_jscript_version >= 5) // prevents errors in old browsers that barf on try/catch & problems in IE if Active X disabled
|
||||
try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
|
||||
@end @*/
|
||||
if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
|
||||
f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
|
||||
else if (/(object)|(function)/.test(typeof createRequest))
|
||||
f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
|
||||
else {
|
||||
f.xmlHttp = null;
|
||||
/*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
|
||||
/*@if(@_jscript_version >= 5) // prevents errors in old browsers that barf on try/catch & problems in IE if Active X disabled
|
||||
try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
|
||||
// Internet Explorer 5 to 6, includes IE 7+ when local //
|
||||
/*@cc_on @*/
|
||||
/*@if(@_jscript_version >= 5)
|
||||
try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
|
||||
catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
|
||||
@end @*/
|
||||
if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
|
||||
f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
|
||||
else if (/(object)|(function)/.test(typeof createRequest))
|
||||
f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
|
||||
else {
|
||||
f.xmlHttp = null;
|
||||
// Internet Explorer 5 to 6, includes IE 7+ when local //
|
||||
/*@cc_on @*/
|
||||
/*@if(@_jscript_version >= 5)
|
||||
try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
|
||||
catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
|
||||
@end @*/
|
||||
}
|
||||
if(f.xmlHttp != null) {
|
||||
f.el = document.getElementById(id);
|
||||
f.xmlHttp.open("GET",url,true);
|
||||
f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
|
||||
f.xmlHttp.send(null);
|
||||
}
|
||||
}
|
||||
|
||||
loadXmlHttp.prototype.stateChanged=function () {
|
||||
var url = new URL(this.xmlHttp.responseURL);
|
||||
if (/login\.php$/.test(url.pathname)) {
|
||||
// You are logged out. Stop refresh!
|
||||
url.searchParams.set('path', '<?php echo $_SERVER['REQUEST_URI']; ?>');
|
||||
window.location.href = url.href;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
|
||||
//this.el.innerHTML = this.xmlHttp.responseText;
|
||||
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
|
||||
|
||||
//link table rows (except the last - the list_control_icons cell) on a table with a class of 'tr_hover', according to the href attribute of the <tr> tag
|
||||
$('.tr_hover tr,.list tr').each(function(i,e) {
|
||||
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
|
||||
var href = $(this).closest('tr').attr('href');
|
||||
var target = $(this).closest('tr').attr('target');
|
||||
if (href) {
|
||||
if (target) { window.open(href, target); }
|
||||
else { window.location = href; }
|
||||
}
|
||||
});
|
||||
});
|
||||
if(f.xmlHttp != null){
|
||||
f.el = document.getElementById(id);
|
||||
f.xmlHttp.open("GET",url,true);
|
||||
f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
|
||||
f.xmlHttp.send(null);
|
||||
}
|
||||
}
|
||||
|
||||
var requestTime = function() {
|
||||
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"; }
|
||||
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$_SESSION["ajax_refresh_rate"].");";
|
||||
?>
|
||||
}
|
||||
loadXmlHttp.prototype.stateChanged=function () {
|
||||
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
|
||||
//this.el.innerHTML = this.xmlHttp.responseText;
|
||||
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
|
||||
}
|
||||
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('load', requestTime, false);
|
||||
}
|
||||
else if (window.attachEvent) {
|
||||
window.attachEvent('onload', requestTime);
|
||||
}
|
||||
var requestTime = function() {
|
||||
var url = 'call_center_active_inc.php?queue_name=<?php echo $queue_name; ?>';
|
||||
new loadXmlHttp(url, 'ajax_response');
|
||||
<?php
|
||||
if (strlen($_SESSION["ajax_refresh_rate"]) == 0) { $_SESSION["ajax_refresh_rate"] = "1777"; }
|
||||
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$_SESSION["ajax_refresh_rate"].");";
|
||||
?>
|
||||
}
|
||||
|
||||
function send_command(url) {
|
||||
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
|
||||
xmlhttp=new XMLHttpRequest();
|
||||
}
|
||||
else {// code for IE6, IE5
|
||||
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
xmlhttp.open("GET", url, false);
|
||||
xmlhttp.send(null);
|
||||
//document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
|
||||
}
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('load', requestTime, false);
|
||||
}
|
||||
else if (window.attachEvent) {
|
||||
window.attachEvent('onload', requestTime);
|
||||
}
|
||||
|
||||
</script>
|
||||
function send_cmd(url) {
|
||||
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
|
||||
xmlhttp=new XMLHttpRequest();
|
||||
}
|
||||
else {// code for IE6, IE5
|
||||
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
xmlhttp.open("GET",url,false);
|
||||
xmlhttp.send(null);
|
||||
//document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<?php
|
||||
echo " <div id='ajax_response'></div>\n";
|
||||
echo "<br><br>";
|
||||
|
||||
//show the response
|
||||
echo "<div id='ajax_response'></div>\n";
|
||||
echo "<br><br>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
|
||||
@@ -1,389 +1,360 @@
|
||||
<?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-2021
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
James Rose <james.o.rose@gmail.com>
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the queue uuid and set it as a variable
|
||||
$queue_uuid = $_GET['queue_name'];
|
||||
|
||||
//get the queues from the database
|
||||
if (!is_array($_SESSION['queues'])) {
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by queue_name asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$_SESSION['queues'] = $database->select($sql, $parameters, 'all');
|
||||
}
|
||||
|
||||
//get the queue name
|
||||
foreach ($_SESSION['queues'] as $row) {
|
||||
if ($row['call_center_queue_uuid'] == $queue_uuid) {
|
||||
$queue_name = $row['queue_name'];
|
||||
$queue_extension = $row['queue_extension'];
|
||||
}
|
||||
}
|
||||
|
||||
//convert the string to a named array
|
||||
function str_to_named_array($tmp_str, $tmp_delimiter) {
|
||||
$tmp_array = explode ("\n", $tmp_str);
|
||||
$result = array();
|
||||
if (trim(strtoupper($tmp_array[0])) != "+OK") {
|
||||
$tmp_field_name_array = explode ($tmp_delimiter, $tmp_array[0]);
|
||||
$x = 0;
|
||||
if (isset($tmp_array)) foreach ($tmp_array as $row) {
|
||||
if ($x > 0) {
|
||||
$tmp_field_value_array = explode ($tmp_delimiter, $tmp_array[$x]);
|
||||
$y = 0;
|
||||
if (isset($tmp_field_value_array)) foreach ($tmp_field_value_array as $tmp_value) {
|
||||
$tmp_name = $tmp_field_name_array[$y];
|
||||
if (trim(strtoupper($tmp_value)) != "+OK") {
|
||||
$result[$x][$tmp_name] = $tmp_value;
|
||||
}
|
||||
$y++;
|
||||
}
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
unset($row);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
//create an event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//get the call center queue, agent and tiers list
|
||||
if (!$fp) {
|
||||
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='40%'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th align='left'>Message</th>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td class='row_style1'><strong>$msg</strong></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
else {
|
||||
|
||||
//get the agent list
|
||||
|
||||
//show the title
|
||||
echo "<b>".$text['header-agents']."</b><br />\n";
|
||||
echo $text['description-agents']."<br /><br />\n";
|
||||
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list tiers [queue_name] |
|
||||
$switch_command = 'callcenter_config queue list tiers '.$queue_extension."@".$_SESSION["domain_name"];
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
|
||||
$result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//prepare the result for array_multisort
|
||||
$x = 0;
|
||||
if (is_array($result)) {
|
||||
foreach ($result as $row) {
|
||||
$tier_result[$x]['level'] = $row['level'];
|
||||
$tier_result[$x]['position'] = $row['position'];
|
||||
$tier_result[$x]['agent'] = $row['agent'];
|
||||
$tier_result[$x]['state'] = trim($row['state']);
|
||||
$tier_result[$x]['queue'] = $row['queue'];
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
//sort the array //SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
|
||||
if (isset($tier_result)) { array_multisort($tier_result, SORT_ASC); }
|
||||
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list agents [queue_name] [status] |
|
||||
$switch_command = 'callcenter_config queue list agents '.$queue_extension."@".$_SESSION["domain_name"];
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
|
||||
$agent_result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agents from the database
|
||||
if (!is_array($_SESSION['agents'])) {
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by agent_name asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$_SESSION['agents'] = $database->select($sql, $parameters, 'all');
|
||||
}
|
||||
|
||||
//list the agents
|
||||
echo "<table class='list'>\n";
|
||||
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>".$text['label-status_change']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-missed']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-answered']."</th>\n";
|
||||
echo "<th>".$text['label-tier_state']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-tier_level']."</th>\n";
|
||||
echo "<th class='center'>".$text['label-tier_position']."</th>\n";
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
echo "<th class='center'>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
if (isset($tier_result)) {
|
||||
foreach ($tier_result as $tier_row) {
|
||||
//$queue = $tier_row['queue'];
|
||||
//$queue = str_replace('@'.$_SESSION['domain_name'], '', $queue);
|
||||
$agent = $tier_row['agent'];
|
||||
//$agent = str_replace('@'.$_SESSION['domain_name'], '', $agent);
|
||||
$tier_state = $tier_row['state'];
|
||||
$tier_level = $tier_row['level'];
|
||||
$tier_position = $tier_row['position'];
|
||||
|
||||
if (isset($agent_result)) {
|
||||
foreach ($agent_result as $agent_row) {
|
||||
if ($tier_row['agent'] == $agent_row['name']) {
|
||||
$agent_uuid = $agent_row['name'];
|
||||
|
||||
//get the agent name
|
||||
$agent_name = '';
|
||||
if (is_array($_SESSION['agents'])) {
|
||||
foreach ($_SESSION['agents'] as $agent) {
|
||||
if ($agent['call_center_agent_uuid'] == $agent_uuid) {
|
||||
$agent_name = $agent['agent_name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//$system = $agent_row['system'];
|
||||
if (is_uuid($agent_row['uuid'])) {
|
||||
$agent_uuid = $agent_row['uuid'];
|
||||
}
|
||||
//$type = $agent_row['type'];
|
||||
$contact = $agent_row['contact'];
|
||||
$agent_extension = preg_replace("/user\//", "", $contact);
|
||||
$agent_extension = preg_replace("/@.*/", "", $agent_extension);
|
||||
$agent_extension = preg_replace("/{.*}/", "", $agent_extension);
|
||||
$status = $agent_row['status'];
|
||||
$state = $agent_row['state'];
|
||||
$max_no_answer = $agent_row['max_no_answer'];
|
||||
$wrap_up_time = $agent_row['wrap_up_time'];
|
||||
$reject_delay_time = $agent_row['reject_delay_time'];
|
||||
$busy_delay_time = $agent_row['busy_delay_time'];
|
||||
$last_bridge_start = $agent_row['last_bridge_start'];
|
||||
$last_bridge_end = $agent_row['last_bridge_end'];
|
||||
//$last_offered_call = $agent_row['last_offered_call'];
|
||||
$last_status_change = $agent_row['last_status_change'];
|
||||
$no_answer_count = $agent_row['no_answer_count'];
|
||||
$calls_answered = $agent_row['calls_answered'];
|
||||
$talk_time = $agent_row['talk_time'];
|
||||
$ready_time = $agent_row['ready_time'];
|
||||
|
||||
$last_status_change_seconds = time() - $last_status_change;
|
||||
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
|
||||
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
|
||||
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
|
||||
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
|
||||
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
|
||||
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
|
||||
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
$list_row_url = "../call_centers/call_center_agent_edit.php?id=".$agent_uuid;
|
||||
}
|
||||
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
echo "<td>";
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
echo "<a href='".$list_row_url."'>".escape($agent_name)."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($agent_name);
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "<td>".escape($agent_extension)."</td>\n";
|
||||
echo "<td>".escape($status)."</td>\n";
|
||||
echo "<td>".escape($state)."</td>\n";
|
||||
echo "<td>".escape($last_status_change_length)."</td>\n";
|
||||
echo "<td class='center'>".escape($no_answer_count)."</td>\n";
|
||||
echo "<td class='center'>".escape($calls_answered)."</td>\n";
|
||||
echo "<td>".escape($tier_state)."</td>\n";
|
||||
echo "<td class='center'>".escape($tier_level)."</td>\n";
|
||||
echo "<td class='center'>".escape($tier_position)."</td>\n";
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
echo "<td class='no-link center'>\n";
|
||||
//need to check state to so only waiting gets call, and trying/answer gets eavesdrop
|
||||
if ($tier_state == "Offering" || $tier_state == "Active Inbound") {
|
||||
//$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".escape($agent_extension)."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".escape($agent_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&uuid=".urlencode($agent_uuid)."&extension=".urlencode($agent_extension)."'); } else { this.blur(); return false; }"]);
|
||||
|
||||
//$xfer_command = escape($agent_uuid)." -bleg ".escape($_SESSION['user']['extension'][0]['user'])." XML ".escape($_SESSION['domain_name']);
|
||||
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_transfer&uuid=".urlencode($agent_uuid)."'); } else { this.blur(); return false; }"]);
|
||||
}
|
||||
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 "</td>";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
} //if
|
||||
} //foreach
|
||||
} //if
|
||||
} //foreach
|
||||
} //if
|
||||
echo "</table>\n\n";
|
||||
|
||||
//add vertical spacing
|
||||
echo "<br /><br /><br />";
|
||||
|
||||
//get the queue list
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list members [queue_name]
|
||||
if (is_uuid($queue_uuid)) {
|
||||
$switch_command = 'callcenter_config queue list members '.$queue_extension."@".$_SESSION["domain_name"];
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
|
||||
$result = str_to_named_array($event_socket_str, '|');
|
||||
if (!is_array($result)) { unset($result); }
|
||||
}
|
||||
|
||||
//show the title
|
||||
$q_waiting=0;
|
||||
$q_trying=0;
|
||||
$q_answered=0;
|
||||
|
||||
echo "<div class='action_bar sub'>\n";
|
||||
echo " <div class='heading'><b>".$text['label-queue'].": ".ucfirst(escape($queue_name))."</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (isset($result)) {
|
||||
foreach ($result as $row) {
|
||||
$state = $row['state'];
|
||||
$q_trying += ($state == "Trying") ? 1 : 0;
|
||||
$q_waiting += ($state == "Waiting") ? 1 : 0;
|
||||
$q_answered += ($state == "Answered") ? 1 : 0;
|
||||
}
|
||||
}
|
||||
echo " <strong>".$text['label-waiting'].":</strong> <b>".$q_waiting."</b> ";
|
||||
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b> ";
|
||||
echo " <strong>".$text['label-answered'].":</strong> <b>".$q_answered."</b>";
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo $text['description-queue']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo "<th>".$text['label-time']."</th>\n";
|
||||
//echo "<th>".$text['label-system']."</th>\n";
|
||||
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"))) {
|
||||
echo "<th>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "<th>".$text['label-agent']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
foreach ($result as $row) {
|
||||
$queue = $row['queue'];
|
||||
$system = $row['system'];
|
||||
$uuid = $row['uuid'];
|
||||
$session_uuid = $row['session_uuid'];
|
||||
$caller_number = $row['cid_number'];
|
||||
$caller_name = $row['cid_name'];
|
||||
$system_epoch = $row['system_epoch'];
|
||||
$joined_epoch = $row['joined_epoch'];
|
||||
$rejoined_epoch = $row['rejoined_epoch'];
|
||||
$bridge_epoch = $row['bridge_epoch'];
|
||||
$abandoned_epoch = $row['abandoned_epoch'];
|
||||
$base_score = $row['base_score'];
|
||||
$skill_score = $row['skill_score'];
|
||||
$serving_agent = $row['serving_agent'];
|
||||
$serving_system = $row['serving_system'];
|
||||
$state = $row['state'];
|
||||
$joined_seconds = time() - $joined_epoch;
|
||||
$joined_length_hour = floor($joined_seconds/3600);
|
||||
$joined_length_min = floor($joined_seconds/60 - ($joined_length_hour * 60));
|
||||
$joined_length_sec = $joined_seconds - (($joined_length_hour * 3600) + ($joined_length_min * 60));
|
||||
$joined_length_min = sprintf("%02d", $joined_length_min);
|
||||
$joined_length_sec = sprintf("%02d", $joined_length_sec);
|
||||
$joined_length = $joined_length_hour.':'.$joined_length_min.':'.$joined_length_sec;
|
||||
|
||||
//get the serving agent name
|
||||
$serving_agent_name = '';
|
||||
if (is_array($_SESSION['agents'])) {
|
||||
foreach ($_SESSION['agents'] as $agent) {
|
||||
if ($agent['call_center_agent_uuid'] == $serving_agent) {
|
||||
$serving_agent_name = $agent['agent_name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "<tr class='list-row'>\n";
|
||||
echo "<td>".escape($joined_length)."</td>\n";
|
||||
//echo "<td>".escape($system_length)."</td>\n";
|
||||
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")) {
|
||||
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).")";
|
||||
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; }"]);
|
||||
}
|
||||
else {
|
||||
echo " ";
|
||||
}
|
||||
echo "</td>";
|
||||
}
|
||||
echo "<td>".escape($serving_agent_name)." </td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?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>
|
||||
James Rose <james.o.rose@gmail.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the queue_name and set it as a variable
|
||||
$queue_name = $_GET[queue_name].'@'. $_SESSION['domains'][$domain_uuid]['domain_name'];
|
||||
|
||||
//convert the string to a named array
|
||||
function str_to_named_array($tmp_str, $tmp_delimiter) {
|
||||
$tmp_array = explode ("\n", $tmp_str);
|
||||
$result = '';
|
||||
if (trim(strtoupper($tmp_array[0])) != "+OK") {
|
||||
$tmp_field_name_array = explode ($tmp_delimiter, $tmp_array[0]);
|
||||
$x = 0;
|
||||
foreach ($tmp_array as $row) {
|
||||
if ($x > 0) {
|
||||
$tmp_field_value_array = explode ($tmp_delimiter, $tmp_array[$x]);
|
||||
$y = 0;
|
||||
foreach ($tmp_field_value_array as $tmp_value) {
|
||||
$tmp_name = $tmp_field_name_array[$y];
|
||||
if (trim(strtoupper($tmp_value)) != "+OK") {
|
||||
$result[$x][$tmp_name] = $tmp_value;
|
||||
}
|
||||
$y++;
|
||||
}
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
unset($row);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
//alternate the color of the row
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//create an event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//get the call center queue, agent and tiers list
|
||||
if (!$fp) {
|
||||
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='40%'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th align='left'>Message</th>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td class='row_style1'><strong>$msg</strong></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
else {
|
||||
|
||||
//get the agent list
|
||||
|
||||
//show the title
|
||||
echo "<b>".$text['header-agents']."</b><br />\n";
|
||||
echo $text['description-agents']."<br /><br />\n";
|
||||
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list tiers [queue_name] |
|
||||
$switch_cmd = 'callcenter_config queue list tiers '.$queue_name;
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//prepare the result for array_multisort
|
||||
$x = 0;
|
||||
foreach ($result as $row) {
|
||||
$tier_result[$x]['level'] = $row['level'];
|
||||
$tier_result[$x]['position'] = $row['position'];
|
||||
$tier_result[$x]['agent'] = $row['agent'];
|
||||
$tier_result[$x]['state'] = trim($row['state']);
|
||||
$tier_result[$x]['queue'] = $row['queue'];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//sort the array //SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
|
||||
array_multisort($tier_result, SORT_ASC);
|
||||
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list agents [queue_name] [status] |
|
||||
$switch_cmd = 'callcenter_config queue list agents '.$queue_name;
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$agent_result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//list the agents
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\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>".$text['label-status_change']."</th>\n";
|
||||
echo "<th>".$text['label-missed']."</th>\n";
|
||||
echo "<th>".$text['label-answered']."</th>\n";
|
||||
echo "<th>".$text['label-tier_state']."</th>\n";
|
||||
echo "<th>".$text['label-tier_level']."</th>\n";
|
||||
echo "<th>".$text['label-tier_position']."</th>\n";
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
echo "<th>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
foreach ($tier_result as $tier_row) {
|
||||
//$queue = $tier_row['queue'];
|
||||
//$queue = str_replace('@'.$_SESSION['domain_name'], '', $queue);
|
||||
$agent = $tier_row['agent'];
|
||||
//$agent = str_replace('@'.$_SESSION['domain_name'], '', $agent);
|
||||
$tier_state = $tier_row['state'];
|
||||
$tier_level = $tier_row['level'];
|
||||
$tier_position = $tier_row['position'];
|
||||
|
||||
foreach ($agent_result as $agent_row) {
|
||||
if ($tier_row['agent'] == $agent_row['name']) {
|
||||
$name = $agent_row['name'];
|
||||
$name = str_replace('@'.$_SESSION['domain_name'], '', $name);
|
||||
//$system = $agent_row['system'];
|
||||
$a_uuid = $agent_row['uuid'];
|
||||
//$type = $agent_row['type'];
|
||||
$contact = $agent_row['contact'];
|
||||
$a_exten = preg_replace("/user\//", "", $contact);
|
||||
$a_exten = preg_replace("/@.*/", "", $a_exten);
|
||||
$a_exten = preg_replace("/{.*}/", "", $a_exten);
|
||||
$status = $agent_row['status'];
|
||||
$state = $agent_row['state'];
|
||||
$max_no_answer = $agent_row['max_no_answer'];
|
||||
$wrap_up_time = $agent_row['wrap_up_time'];
|
||||
$reject_delay_time = $agent_row['reject_delay_time'];
|
||||
$busy_delay_time = $agent_row['busy_delay_time'];
|
||||
$last_bridge_start = $agent_row['last_bridge_start'];
|
||||
$last_bridge_end = $agent_row['last_bridge_end'];
|
||||
//$last_offered_call = $agent_row['last_offered_call'];
|
||||
$last_status_change = $agent_row['last_status_change'];
|
||||
$no_answer_count = $agent_row['no_answer_count'];
|
||||
$calls_answered = $agent_row['calls_answered'];
|
||||
$talk_time = $agent_row['talk_time'];
|
||||
$ready_time = $agent_row['ready_time'];
|
||||
|
||||
$last_offered_call_seconds = time() - $last_offered_call;
|
||||
$last_offered_call_length_hour = floor($last_offered_call_seconds/3600);
|
||||
$last_offered_call_length_min = floor($last_offered_call_seconds/60 - ($last_offered_call_length_hour * 60));
|
||||
$last_offered_call_length_sec = $last_offered_call_seconds - (($last_offered_call_length_hour * 3600) + ($last_offered_call_length_min * 60));
|
||||
$last_offered_call_length_min = sprintf("%02d", $last_offered_call_length_min);
|
||||
$last_offered_call_length_sec = sprintf("%02d", $last_offered_call_length_sec);
|
||||
$last_offered_call_length = $last_offered_call_length_hour.':'.$last_offered_call_length_min.':'.$last_offered_call_length_sec;
|
||||
|
||||
$last_status_change_seconds = time() - $last_status_change;
|
||||
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
|
||||
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
|
||||
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
|
||||
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
|
||||
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
|
||||
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$name."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$a_exten."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$status."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$last_status_change_length."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$no_answer_count."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$calls_answered."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_state."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_level."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_position."</td>\n";
|
||||
|
||||
if (permission_exists('call_center_active_options')) {
|
||||
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>";
|
||||
|
||||
//need to check state to so only waiting gets call, and trying/answer gets eavesdrop
|
||||
if ($tier_state == "Offering" || $tier_state == "Active Inbound") {
|
||||
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$a_uuid.")";
|
||||
|
||||
//debug
|
||||
//echo $orig_command;
|
||||
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a> \n";
|
||||
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a> \n";
|
||||
|
||||
$xfer_command = $a_uuid." -bleg ".$_SESSION['user']['extension'][0]['user']." XML ".$_SESSION['domain_name'];
|
||||
//$xfer_command = $a_uuid." ".$_SESSION['user']['extension'][0]['user']." XML default";
|
||||
$xfer_command = urlencode($xfer_command);
|
||||
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=uuid_transfer+".$xfer_command."');}\">".$text['label-transfer']."</a> \n";
|
||||
}
|
||||
else {
|
||||
$orig_call="{origination_caller_id_name=c2c-".urlencode($name).",origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26bridge(user/".$a_exten."@".$_SESSION['domain_name'].")";
|
||||
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_call.")');}\">".$text['label-call']."</a> \n";
|
||||
}
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
}
|
||||
echo "</table>\n\n";
|
||||
|
||||
//add vertical spacing
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
|
||||
|
||||
//get the queue list
|
||||
//send the event socket command and get the response
|
||||
//callcenter_config queue list members [queue_name]
|
||||
$switch_cmd = 'callcenter_config queue list members '.$queue_name;
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$result = str_to_named_array($event_socket_str, '|');
|
||||
|
||||
//show the title
|
||||
$q_waiting=0;
|
||||
$q_trying=0;
|
||||
$q_answered=0;
|
||||
|
||||
echo "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td align='left'><b>".$text['label-queue'].": ".ucfirst($_GET[queue_name])."</b><br />\n";
|
||||
echo " ".$text['description-queue']."<br />\n";
|
||||
echo " </td>\n";
|
||||
echo " <td align='right' valign='top'>";
|
||||
foreach ($result as $row) {
|
||||
$state = $row['state'];
|
||||
$q_trying += ($state == "Trying") ? 1 : 0;
|
||||
$q_waiting += ($state == "Waiting") ? 1 : 0;
|
||||
$q_answered += ($state == "Answered") ? 1 : 0;
|
||||
}
|
||||
echo " <strong>".$text['label-waiting'].":</strong> <b>".$q_waiting."</b> ";
|
||||
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b> ";
|
||||
echo " <strong>".$text['label-answered'].":</strong> <b>".$q_answered."</b>";
|
||||
echo " </td>";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th>".$text['label-time']."</th>\n";
|
||||
//echo "<th>".$text['label-system']."</th>\n";
|
||||
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"))) {
|
||||
echo "<th>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "<th>".$text['label-agent']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
foreach ($result as $row) {
|
||||
$queue = $row['queue'];
|
||||
$system = $row['system'];
|
||||
$uuid = $row['uuid'];
|
||||
$session_uuid = $row['session_uuid'];
|
||||
$caller_number = $row['cid_number'];
|
||||
$caller_name = $row['cid_name'];
|
||||
$system_epoch = $row['system_epoch'];
|
||||
$joined_epoch = $row['joined_epoch'];
|
||||
$rejoined_epoch = $row['rejoined_epoch'];
|
||||
$bridge_epoch = $row['bridge_epoch'];
|
||||
$abandoned_epoch = $row['abandoned_epoch'];
|
||||
$base_score = $row['base_score'];
|
||||
$skill_score = $row['skill_score'];
|
||||
$serving_agent = $row['serving_agent'];
|
||||
$serving_system = $row['serving_system'];
|
||||
$state = $row['state'];
|
||||
$joined_seconds = time() - $joined_epoch;
|
||||
$joined_length_hour = floor($joined_seconds/3600);
|
||||
$joined_length_min = floor($joined_seconds/60 - ($joined_length_hour * 60));
|
||||
$joined_length_sec = $joined_seconds - (($joined_length_hour * 3600) + ($joined_length_min * 60));
|
||||
$joined_length_min = sprintf("%02d", $joined_length_min);
|
||||
$joined_length_sec = sprintf("%02d", $joined_length_sec);
|
||||
$joined_length = $joined_length_hour.':'.$joined_length_min.':'.$joined_length_sec;
|
||||
|
||||
//$system_seconds = time() - $system_epoch;
|
||||
//$system_length_hour = floor($system_seconds/3600);
|
||||
//$system_length_min = floor($system_seconds/60 - ($system_length_hour * 60));
|
||||
//$system_length_sec = $system_seconds - (($system_length_hour * 3600) + ($system_length_min * 60));
|
||||
//$system_length_min = sprintf("%02d", $system_length_min);
|
||||
//$system_length_sec = sprintf("%02d", $system_length_sec);
|
||||
//$system_length = $system_length_hour.':'.$system_length_min.':'.$system_length_sec;
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$joined_length."</td>\n";
|
||||
//echo "<td valign='top' class='".$row_style[$c]."'>".$system_length."</td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_name." </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_number." </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
|
||||
if (if_group("admin") || if_group("superadmin")) {
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>";
|
||||
if ($state != "Abandoned") {
|
||||
$q_caller_number = urlencode($caller_number);
|
||||
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$q_caller_number."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$session_uuid.")";
|
||||
|
||||
//debug
|
||||
//echo $orig_command;
|
||||
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a> \n";
|
||||
|
||||
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a> \n";
|
||||
}
|
||||
else {
|
||||
echo " ";
|
||||
}
|
||||
echo "</td>";
|
||||
}
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>".$serving_agent." </td>\n";
|
||||
echo "</tr>\n";
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
}
|
||||
echo "</table>\n";
|
||||
|
||||
//add vertical spacing
|
||||
echo "<br />\n";
|
||||
echo "<br />\n";
|
||||
echo "<br />\n";
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1,148 +1,100 @@
|
||||
<?php
|
||||
/* $Id$ */
|
||||
/*
|
||||
v_exec.php
|
||||
Copyright (C) 2008 - 2019 Mark J Crane
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//http get variables set to php variables
|
||||
if (count($_GET) > 0) {
|
||||
$command = trim($_GET["command"]);
|
||||
$uuid = trim($_GET["uuid"]);
|
||||
$extension = trim($_GET["extension"]);
|
||||
$caller_id_name = trim($_GET["extension"]);
|
||||
$caller_id_number = trim($_GET["extension"]);
|
||||
}
|
||||
|
||||
//validate the extension
|
||||
if (!is_numeric($extension)) {
|
||||
$extension = null;
|
||||
}
|
||||
|
||||
//validate the uuid
|
||||
if (!is_uuid($uuid)) {
|
||||
$uuid = null;
|
||||
}
|
||||
|
||||
//validate the caller_id_name
|
||||
if (isset($caller_id_name) && strlen($caller_id_name)) {
|
||||
$caller_id_name = substr($caller_id_name, 0, 10);
|
||||
}
|
||||
|
||||
//validate the caller_id_number
|
||||
if (!is_numeric($caller_id_number)) {
|
||||
$caller_id_number = null;
|
||||
}
|
||||
|
||||
//validate the command
|
||||
switch ($command) {
|
||||
case "eavesdrop":
|
||||
$switch_command = "originate {origination_caller_id_name=eavesdrop,origination_caller_id_number=".$extension."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." &eavesdrop(".$uuid.")";
|
||||
break;
|
||||
case "uuid_transfer":
|
||||
$switch_command = "uuid_transfer ".$uuid." -bleg ".$_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;
|
||||
default:
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//run the command
|
||||
if (isset($switch_command)) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
$response = event_socket_request($fp, 'api '.$switch_command);
|
||||
}
|
||||
|
||||
/*
|
||||
//set the username
|
||||
if (if_group("admin") || if_group("superadmin")) {
|
||||
//use the username that was provided
|
||||
}
|
||||
else {
|
||||
$username = $_SESSION['username'];
|
||||
}
|
||||
|
||||
//get to php variables
|
||||
if (count($_GET) > 0) {
|
||||
if ($_GET['action'] == "user_status") {
|
||||
|
||||
//validate the user status
|
||||
$user_status = $_GET['data'];
|
||||
switch ($user_status) {
|
||||
case "Available":
|
||||
case "Available (On Demand)":
|
||||
case "On Break":
|
||||
case "Do Not Disturb":
|
||||
case "Logged Out":
|
||||
break;
|
||||
default:
|
||||
$user_status = null;
|
||||
}
|
||||
|
||||
$user_status = $data;
|
||||
$sql = "update v_users set ";
|
||||
$sql .= "user_status = :user_status ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and username = '".$username."' ";
|
||||
$parameters['user_status'] = trim($user_status, "'");
|
||||
$database = new database;
|
||||
$database->execute($sql, $parameters);
|
||||
unset($sql, $parameters);
|
||||
}
|
||||
|
||||
//fs cmd
|
||||
if (strlen($switch_cmd) > 0) {
|
||||
//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
|
||||
if ($fp) {
|
||||
//send the command
|
||||
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||||
//set the user state
|
||||
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
?>
|
||||
<?php
|
||||
/* $Id$ */
|
||||
/*
|
||||
v_exec.php
|
||||
Copyright (C) 2008 Mark J Crane
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//http get variables set to php variables
|
||||
if (count($_GET)>0) {
|
||||
$switch_cmd = trim($_GET["cmd"]);
|
||||
$action = trim(check_str($_GET["action"]));
|
||||
$data = trim(check_str($_GET["data"]));
|
||||
$username = trim(check_str($_GET["username"]));
|
||||
}
|
||||
|
||||
//authorized commands
|
||||
if (stristr($switch_cmd, 'user_status') == true) {
|
||||
//authorized;
|
||||
} elseif (stristr($switch_cmd, 'callcenter_config') == true) {
|
||||
//authorized;
|
||||
} elseif (stristr($switch_cmd, 'eavesdrop') == true) {
|
||||
//authorized;
|
||||
} elseif (stristr($switch_cmd, 'bridge') == true) {
|
||||
//authorized;
|
||||
} elseif (stristr($switch_cmd, 'uuid_transfer') == true) {
|
||||
//authorized;
|
||||
} else {
|
||||
//not found. this command is not authorized
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//set the username
|
||||
if (if_group("admin") || if_group("superadmin")) {
|
||||
//use the username that was provided
|
||||
}
|
||||
else {
|
||||
$username = $_SESSION['username'];
|
||||
}
|
||||
|
||||
//get to php variables
|
||||
if (count($_GET)>0) {
|
||||
if ($action == "user_status") {
|
||||
$user_status = $data;
|
||||
$sql = "update v_users set ";
|
||||
$sql .= "user_status = '".trim($user_status, "'")."' ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and username = '".$username."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
}
|
||||
|
||||
//fs cmd
|
||||
if (strlen($switch_cmd) > 0) {
|
||||
//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
|
||||
if ($fp) {
|
||||
//send the command
|
||||
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||||
//set the user state
|
||||
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,96 +17,82 @@
|
||||
|
||||
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-2012
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//includes and title
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-active_call_center'];
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get the variables
|
||||
$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(queue_name) like :search ";
|
||||
$sql_search .= "or lower(queue_description) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
//show the content
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='50%' align=\"left\" nowrap=\"nowrap\"><b>".$text['header-active_call_center']."</b></td>\n";
|
||||
echo "<td width='50%' align=\"right\">\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align=\"left\" colspan='2'>\n";
|
||||
echo $text['description-active_call_center']."<br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</tr></table>\n";
|
||||
|
||||
//get the call center queue count
|
||||
$sql = "select count(*) from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_search;
|
||||
}
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//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;
|
||||
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);
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$num_rows = count($result);
|
||||
unset ($prep_statement, $result, $sql);
|
||||
$rows_per_page = 100;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the call center queues
|
||||
$sql = str_replace('count(*)', '*', $sql);
|
||||
$sql .= order_by($order_by, $order);
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$call_center_queues = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= " limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
//include header
|
||||
$document['title'] = $text['title-active_call_center'];
|
||||
require_once "resources/header.php";
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-active_call_center']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
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='list_search_reset();'>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]);
|
||||
echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_center_queue.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($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";
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
|
||||
echo $text['description-active_call_center']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo "<tr>\n";
|
||||
echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order);
|
||||
echo th_order_by('queue_extension', $text['label-extension'], $order_by, $order);
|
||||
echo th_order_by('queue_strategy', $text['label-strategy'], $order_by, $order);
|
||||
@@ -122,39 +108,62 @@
|
||||
//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);
|
||||
echo "<td class='list_control_icon'>\n";
|
||||
//echo " <a href='call_center_queue_edit.php' alt='add'>$v_link_label_add</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($call_center_queues)) {
|
||||
$x = 0;
|
||||
foreach($call_center_queues as $row) {
|
||||
$list_row_url = PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".escape($row['call_center_queue_uuid'])."&name=".urlencode(escape($row['queue_name']));
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
echo " <td><a href='".$list_row_url."'>".escape($row['queue_name'])."</a></td>\n";
|
||||
echo " <td>".escape($row['queue_extension'])."</td>\n";
|
||||
echo " <td>".escape($row['queue_strategy'])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_moh_sound])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_record_template])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_time_base_score])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_max_wait_time])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_max_wait_time_with_no_agent])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rules_apply])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rule_wait_second])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rule_no_agent_no_wait])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_discard_abandoned_after])."</td>\n";
|
||||
//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-xs'>".escape($row['queue_description'])."</td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($call_center_queues);
|
||||
if ($result_count == 0) { //no results
|
||||
}
|
||||
else { //received results
|
||||
foreach($result as $row) {
|
||||
$tr_link = "href='".PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".$row[queue_name]."'";
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'><a href='".PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".$row[queue_name]."'>".$row[queue_name]."</a></td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_extension]."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_strategy]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_moh_sound]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_record_template]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_time_base_score]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_max_wait_time]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_max_wait_time_with_no_agent]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rules_apply]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_wait_second]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_no_agent_no_wait]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_discard_abandoned_after]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_abandoned_resume_allowed]."</td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_wait_multiply_level]."</td>\n";
|
||||
echo " <td valign='top' class='row_stylebg'>".$row[queue_description]." </td>\n";
|
||||
echo " <td class='list_control_icon'>\n";
|
||||
echo " <a href='".PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".$row[queue_name]."' alt='".$text['button-view']."'>$v_link_label_view</a>\n";
|
||||
//echo " <a href='call_center_queue_delete.php?id=".$row[call_center_queue_uuid]."' alt='delete' onclick=\"return confirm('Do you really want to delete this?')\">$v_link_label_delete</a>\n";
|
||||
//echo " <input type='button' class='btn' name='' alt='edit' onclick=\"window.location='call_center_queue_edit.php?id=".$row[call_center_queue_uuid]."'\" value='e'>\n";
|
||||
//echo " <input type='button' class='btn' name='' alt='delete' onclick=\"if (confirm('Are you sure you want to delete this?')) { window.location='call_center_queue_delete.php?id=".$row[call_center_queue_uuid]."' }\" value='x'>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='17' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td width='33.3%' align='right'>\n";
|
||||
//echo " <a href='call_center_queue_edit.php' alt='add'>$v_link_label_add</a>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -25,66 +25,26 @@
|
||||
*/
|
||||
|
||||
// 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 ( 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"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// 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"]);
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
$_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"]);
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
+22
-158
@@ -5,49 +5,37 @@
|
||||
$apps[$x]['uuid'] = "95788e50-9500-079e-2807-fd530b0ea370";
|
||||
$apps[$x]['category'] = "Switch";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.1";
|
||||
$apps[$x]['version'] = "";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "Queues for managing inbound calls and routing those calls to available agents.";
|
||||
$apps[$x]['description']['en-gb'] = "Queues for managing inbound calls and routing those calls to available agents.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Warteschlangen um eingehende Anrufe zu verwalten und diese an verfügbare Agenten weiterzuleiten.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Warteschlangen um eingehende Anrufe zu verwalten und diese an verfügbare Agenten weiterzuleiten.";
|
||||
$apps[$x]['description']['el-gr'] = "Ουρές για διαχείριση εισερχόμενων κλήσεων και δρομολόγησης των κλήσεων σε διαθέσιμους τηλεφωνητές/τηλεφωνήτριες.";
|
||||
$apps[$x]['description']['es-cl'] = "Colas pra administar las llamadas entrantes y enviarlas a los agentes disponibles";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "Queues pour envoyer les appels entrants vers les agents disponibles.";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "Files d'attente d'appels entrants distribu%uFFFDs aux agents disponibles.";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Wachtrijen voor beheer van inkomede gesprekken en routering naar beschikbare agenten.";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "As filas servem para gerenciar as chamadas que entram e encaminhar as mesmas para os agentes disponíveis.";
|
||||
$apps[$x]['description']['fr-ca'] = "Queues pour envoyer les appels entrants vers les agents disponibles.";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$apps[$x]['description']['pt-pt'] = "As filas servem para gerenciamento de chamadas de entrada e encaminhamento das mesmas para os agentes dispon%uFFFDveis.";
|
||||
$apps[$x]['description']['ro-ro'] = "";
|
||||
$apps[$x]['description']['ru-ru'] = "";
|
||||
$apps[$x]['description']['sv-se'] = "";
|
||||
$apps[$x]['description']['uk-ua'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//destination details
|
||||
$y=0;
|
||||
$y = 0;
|
||||
$apps[$x]['destinations'][$y]['type'] = "sql";
|
||||
$apps[$x]['destinations'][$y]['label'] = "call_centers";
|
||||
$apps[$x]['destinations'][$y]['name'] = "call_centers";
|
||||
$apps[$x]['destinations'][$y]['sql'] = "select queue_name as name, queue_extension as destination, queue_extension as extension, queue_description as description from v_call_center_queues";
|
||||
$apps[$x]['destinations'][$y]['sql'] = "select queue_extension as destination, queue_description as description from v_call_center_queues";
|
||||
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' ";
|
||||
$apps[$x]['destinations'][$y]['order_by'] = "queue_name asc";
|
||||
$apps[$x]['destinations'][$y]['field']['name'] = "queue_name";
|
||||
$apps[$x]['destinations'][$y]['field']['destination'] = "queue_extension";
|
||||
$apps[$x]['destinations'][$y]['field']['extension'] = "queue_extension";
|
||||
$apps[$x]['destinations'][$y]['field']['description'] = "queue_description";
|
||||
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name} \${description}";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_queue_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "6c072b29-5b6c-49fc-008e-95e24c77de99";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "agent";
|
||||
@@ -66,11 +54,9 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_agent_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "597c483a-51a9-f95a-8d54-ea7d87ada2b8";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "agent";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
@@ -88,6 +74,7 @@
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_tier_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "6c072b29-5b6c-49fc-008e-95e24c77de99";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "agent";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
@@ -119,74 +106,11 @@
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_log_delete";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_destinations";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_outbound_caller_id_name";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_outbound_caller_id_number";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_announce_position";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_announce_sound";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_center_announce_frequency";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
//default settings
|
||||
$y = 0;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8ebeb864-f03e-406c-b82f-6eb47cb1bd39";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "limit";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "call_center_queues";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "3";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b32179ad-96a4-4d83-8677-1fd8fc5ef6df";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "agent_add_rows";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "5";
|
||||
$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'] = "533eac69-887f-47aa-bf27-0751797555f5";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "agent_edit_rows";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
|
||||
$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'] = "bc73c8eb-f3eb-4182-adc0-9ac5aeedae2a";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "agent_contact_method";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "user";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: user (default)";
|
||||
|
||||
//cache details
|
||||
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_agents";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 0; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_center_agents";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_center_agent_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
|
||||
@@ -211,15 +135,6 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_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_users";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "user_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
@@ -276,15 +191,10 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "agent_no_answer_delay_time";
|
||||
$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'] = "agent_record";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_queues";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 1; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_center_queues";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_center_queue_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
|
||||
@@ -325,17 +235,12 @@
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_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'] = "queue_extension";
|
||||
$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_greeting";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the greeting.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_strategy";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
@@ -352,10 +257,6 @@
|
||||
$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_time_base_score_sec";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Used to set the time base score of the Call Center to prioritize one call center over another.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_max_wait_time";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
@@ -400,18 +301,6 @@
|
||||
$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_outbound_caller_id_name";
|
||||
$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_outbound_caller_id_number";
|
||||
$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_announce_position";
|
||||
$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_announce_sound";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
@@ -420,19 +309,13 @@
|
||||
$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'] = "queue_cc_exit_keys";
|
||||
$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_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'] = "";
|
||||
|
||||
$y++;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_tiers";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 2; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_center_tiers";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_center_tier_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
|
||||
@@ -457,25 +340,6 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_center_queue_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_call_center_queues";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "call_center_queue_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_center_agent_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";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_call_center_agents";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "call_center_agent_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
@@ -497,4 +361,4 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,178 +1,68 @@
|
||||
<?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 - 2021
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//list the missing call center queue and agent uuids
|
||||
$sql = "select t.call_center_tier_uuid, t.call_center_queue_uuid, t.call_center_agent_uuid, t.queue_name, t.agent_name, d.domain_name, ";
|
||||
$sql .= "(select call_center_queue_uuid from v_call_center_queues where replace(queue_name, ' ', '-') = t.queue_name and domain_uuid = t.domain_uuid) as queue_uuid, ";
|
||||
$sql .= "(select call_center_agent_uuid from v_call_center_agents where agent_name = t.agent_name and domain_uuid = t.domain_uuid) as agent_uuid ";
|
||||
$sql .= "from v_call_center_tiers as t, v_domains as d ";
|
||||
$sql .= "where t.domain_uuid = d.domain_uuid ";
|
||||
$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) {
|
||||
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'];
|
||||
}
|
||||
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) {
|
||||
$array['call_center_tiers'][$index]['call_center_tier_uuid'] = $row['call_center_tier_uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
$p = new permissions;
|
||||
$p->add('call_center_tier_edit', 'temp');
|
||||
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array, false);
|
||||
$response = $database->message;
|
||||
unset($array);
|
||||
|
||||
$p->delete('call_center_tier_edit', 'temp');
|
||||
}
|
||||
}
|
||||
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 .= "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 .= "where q.domain_uuid = d.domain_uuid ";
|
||||
$database = new database;
|
||||
$call_center_queues = $database->select($sql, null, 'all');
|
||||
$id = 0;
|
||||
if (is_array($call_center_queues)) {
|
||||
foreach ($call_center_queues as $row) {
|
||||
|
||||
//get the application and data
|
||||
$action_array = explode(":",$row['queue_timeout_action']);
|
||||
$queue_timeout_app = $action_array[0];
|
||||
unset($action_array[0]);
|
||||
$queue_timeout_data = implode($action_array);
|
||||
|
||||
//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'];
|
||||
}
|
||||
else {
|
||||
$queue_greeting_path = trim($row['queue_greeting']);
|
||||
}
|
||||
}
|
||||
|
||||
//build the xml dialplan
|
||||
$dialplan_xml = "<extension name=\"".$row["queue_name"]."\" continue=\"\" uuid=\"".$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 .= " <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 (is_numeric($queue_extension)) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"queue_extension=".$row['queue_extension']."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_export_vars=call_center_queue_uuid\"/>\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";
|
||||
}
|
||||
if ($row['queue_greeting_path'] != '') {
|
||||
$greeting_array = explode(':', $row['queue_greeting_path']);
|
||||
if (count($greeting_array) == 1) {
|
||||
$dialplan_xml .= " <action application=\"playback\" data=\"".$row['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";
|
||||
}
|
||||
}
|
||||
}
|
||||
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 (strlen($row['queue_cc_exit_keys']) > 0) {
|
||||
$dialplan_xml .= " <action application=\"set\" data=\"cc_exit_keys=".$row['queue_cc_exit_keys']."\"/>\n";
|
||||
}
|
||||
$dialplan_xml .= " <action application=\"callcenter\" data=\"".$row['queue_extension']."@".$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 .= " </condition>\n";
|
||||
$dialplan_xml .= "</extension>\n";
|
||||
|
||||
//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";
|
||||
|
||||
//increment the array id
|
||||
$id++;
|
||||
|
||||
}
|
||||
}
|
||||
unset ($prep_statement);
|
||||
|
||||
//save the array to the database
|
||||
if (is_array($array)) {
|
||||
//add the dialplan permission
|
||||
$p = new permissions;
|
||||
$p->add("dialplan_add", "temp");
|
||||
$p->add("dialplan_edit", "temp");
|
||||
|
||||
//save to the data
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array, false);
|
||||
$message = $database->message;
|
||||
|
||||
//remove the temporary permission
|
||||
$p->delete("dialplan_add", "temp");
|
||||
$p->delete("dialplan_edit", "temp");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?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) 2015
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//process this only one time
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//add switch call_center dir if it is missing
|
||||
$sql = "select count(*) as num_rows from v_default_settings ";
|
||||
$sql .= "where default_setting_category = 'switch' ";
|
||||
$sql .= "and default_setting_subcategory = 'call_center' ";
|
||||
$sql .= "and default_setting_name = 'dir' ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] == 0) {
|
||||
$sql = "insert into v_default_settings ";
|
||||
$sql .= "(";
|
||||
$sql .= "default_setting_uuid, ";
|
||||
$sql .= "default_setting_category, ";
|
||||
$sql .= "default_setting_subcategory, ";
|
||||
$sql .= "default_setting_name, ";
|
||||
$sql .= "default_setting_value, ";
|
||||
$sql .= "default_setting_enabled, ";
|
||||
$sql .= "default_setting_description ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'".uuid()."', ";
|
||||
$sql .= "'switch', ";
|
||||
$sql .= "'call_center', ";
|
||||
$sql .= "'dir', ";
|
||||
$sql .= "'".$_SESSION['switch']['conf']['dir']."/autoload_configs', ";
|
||||
$sql .= "'true', ";
|
||||
$sql .= "'' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
}
|
||||
unset($prep_statement, $row);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+878
-2423
File diff suppressed because it is too large
Load Diff
@@ -1,58 +1,38 @@
|
||||
<?php
|
||||
|
||||
$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']['de-at'] = "Callcenter";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$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']['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']['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']['ru-ru'] = "Колл-центр";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Call Center";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Кол-центр";
|
||||
$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]['path'] = "/app/call_centers/call_center_queues.php";
|
||||
$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']['de-at'] = "Agenten Status";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$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']['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']['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']['ru-ru'] = "Статус агента";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Agent Status";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Статус оператора";
|
||||
$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]['path'] = "/app/call_centers/call_center_agent_status.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Call Center";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Centro de Llamadas";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "Centre d'appel";
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = "Centre d' appels";
|
||||
$apps[$x]['menu'][0]['title']['pt-pt'] = "Centro de Chamadas";
|
||||
$apps[$x]['menu'][0]['title']['pt-br'] = "Centro de chamadas";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Call Center ";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Call Center";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "Кол-центр";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Callcenter";
|
||||
$apps[$x]['menu'][0]['uuid'] = "6c072b29-5b6c-49fc-008e-95e24c77de99";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/call_centers/call_center_queues.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "agent";
|
||||
$apps[$x]['menu'][0]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
$apps[$x]['menu'][1]['title']['en-us'] = "Agent Status";
|
||||
$apps[$x]['menu'][1]['title']['es-cl'] = "Estado de Agente";
|
||||
$apps[$x]['menu'][1]['title']['fr-fr'] = "État de l'agent";
|
||||
$apps[$x]['menu'][1]['title']['pt-pt'] = "Estado do Agente";
|
||||
$apps[$x]['menu'][1]['title']['pt-br'] = "Estado do agente";
|
||||
$apps[$x]['menu'][1]['title']['pl'] = "Status agenta";
|
||||
$apps[$x]['menu'][1]['title']['sv-se'] = "Agent Status";
|
||||
$apps[$x]['menu'][1]['title']['uk'] = "Статус оператора";
|
||||
$apps[$x]['menu'][1]['title']['de-at'] = "Agenten Status";
|
||||
$apps[$x]['menu'][1]['uuid'] = "597c483a-51a9-f95a-8d54-ea7d87ada2b8";
|
||||
$apps[$x]['menu'][1]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
|
||||
$apps[$x]['menu'][1]['category'] = "internal";
|
||||
$apps[$x]['menu'][1]['path'] = "/app/call_centers/call_center_agent_status.php";
|
||||
$apps[$x]['menu'][1]['groups'][] = "agent_admin";
|
||||
$apps[$x]['menu'][1]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][1]['groups'][] = "superadmin";
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,95 @@
|
||||
<?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>
|
||||
*/
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
if (count($_GET)>0) {
|
||||
$id = check_str($_GET["id"]);
|
||||
}
|
||||
|
||||
//get the agent details
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_center_agent_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$agent_name = $row["agent_name"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset ($prep_statement);
|
||||
|
||||
//delete the agent from the freeswitch
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
//delete the agent over event socket
|
||||
if ($fp) {
|
||||
$cmd = "api callcenter_config agent del ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//delete the agent from db
|
||||
if (strlen($id)>0) {
|
||||
//tiers table
|
||||
$sql = "delete from v_call_center_tiers ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and agent_name = '$agent_name' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
//agents table
|
||||
$sql = "delete from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_center_agent_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
//redirect the browser
|
||||
$_SESSION["message"] = $text['message-delete'];
|
||||
header("Location: call_center_agents.php");
|
||||
return;
|
||||
|
||||
?>
|
||||
@@ -17,27 +17,23 @@
|
||||
|
||||
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-2015
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
|
||||
*/
|
||||
|
||||
//includes
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_agent_add') || permission_exists('call_center_agent_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_agent_add') || permission_exists('call_center_agent_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
@@ -47,298 +43,311 @@
|
||||
if ($_GET["check"] == 'duplicate') {
|
||||
//agent id
|
||||
if ($_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"])) {
|
||||
$sql .= " and call_center_agent_uuid <> :call_center_agent_uuid ";
|
||||
$parameters['call_center_agent_uuid'] = $_GET["agent_uuid"];
|
||||
$sql = "select ";
|
||||
$sql .= "agent_name ";
|
||||
$sql .= "from ";
|
||||
$sql .= "v_call_center_agents ";
|
||||
$sql .= "where ";
|
||||
$sql .= "agent_id = '".check_str($_GET["agent_id"])."' ";
|
||||
$sql .= "and domain_uuid = '".$domain_uuid."' ";
|
||||
if ($_GET["agent_uuid"] != '') {
|
||||
$sql .= " and call_center_agent_uuid <> '".check_str($_GET["agent_uuid"])."' ";
|
||||
}
|
||||
$parameters['agent_id'] = $_GET["agent_id"];
|
||||
$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'] != '') {
|
||||
echo $text['message-duplicate_agent_id'].(if_group("superadmin") ? ": ".$row["agent_name"] : null);
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['agent_name'] != '') {
|
||||
echo $text['message-duplicate_agent_id'].((if_group("superadmin")) ? ": ".$row["agent_name"] : null);
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters);
|
||||
unset($prep_statement);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
//action add or update
|
||||
if (is_uuid($_REQUEST["id"])) {
|
||||
if (isset($_REQUEST["id"])) {
|
||||
$action = "update";
|
||||
$call_center_agent_uuid = $_REQUEST["id"];
|
||||
$call_center_agent_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
else {
|
||||
$action = "add";
|
||||
}
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (is_array($_POST)) {
|
||||
$call_center_agent_uuid = $_POST["call_center_agent_uuid"];
|
||||
$user_uuid = $_POST["user_uuid"];
|
||||
$agent_name = $_POST["agent_name"];
|
||||
$agent_type = $_POST["agent_type"];
|
||||
$agent_call_timeout = $_POST["agent_call_timeout"];
|
||||
$agent_id = $_POST["agent_id"];
|
||||
$agent_password = $_POST["agent_password"];
|
||||
$agent_status = $_POST["agent_status"];
|
||||
$agent_contact = $_POST["agent_contact"];
|
||||
$agent_no_answer_delay_time = $_POST["agent_no_answer_delay_time"];
|
||||
$agent_max_no_answer = $_POST["agent_max_no_answer"];
|
||||
$agent_wrap_up_time = $_POST["agent_wrap_up_time"];
|
||||
$agent_reject_delay_time = $_POST["agent_reject_delay_time"];
|
||||
$agent_busy_delay_time = $_POST["agent_busy_delay_time"];
|
||||
$agent_record = $_POST["agent_record"];
|
||||
//$agent_logout = $_POST["agent_logout"];
|
||||
if (count($_POST) > 0) {
|
||||
$agent_name = check_str($_POST["agent_name"]);
|
||||
$agent_type = check_str($_POST["agent_type"]);
|
||||
$agent_call_timeout = check_str($_POST["agent_call_timeout"]);
|
||||
$agent_id = check_str($_POST["agent_id"]);
|
||||
$agent_password = check_str($_POST["agent_password"]);
|
||||
$agent_contact = check_str($_POST["agent_contact"]);
|
||||
$agent_status = check_str($_POST["agent_status"]);
|
||||
//$agent_logout = check_str($_POST["agent_logout"]);
|
||||
$agent_no_answer_delay_time = check_str($_POST["agent_no_answer_delay_time"]);
|
||||
$agent_max_no_answer = check_str($_POST["agent_max_no_answer"]);
|
||||
$agent_wrap_up_time = check_str($_POST["agent_wrap_up_time"]);
|
||||
$agent_reject_delay_time = check_str($_POST["agent_reject_delay_time"]);
|
||||
$agent_busy_delay_time = check_str($_POST["agent_busy_delay_time"]);
|
||||
}
|
||||
|
||||
//process the user data and save it to the database
|
||||
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: call_center_agents.php');
|
||||
exit;
|
||||
}
|
||||
$msg = '';
|
||||
|
||||
//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) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
if ($action == "update") {
|
||||
$call_center_agent_uuid = check_str($_POST["call_center_agent_uuid"]);
|
||||
}
|
||||
|
||||
//add the call_center_agent_uuid
|
||||
if (strlen($call_center_agent_uuid) == 0) {
|
||||
$call_center_agent_uuid = uuid();
|
||||
}
|
||||
|
||||
//get the users array
|
||||
$sql = "select * from v_users ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by username asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$users = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//change the contact string to loopback - Not recommended added for backwards comptability causes multiple problems
|
||||
if ($_SESSION['call_center']['agent_contact_method']['text'] == 'loopback') {
|
||||
$agent_contact = str_replace("user/", "loopback/", $agent_contact);
|
||||
$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;
|
||||
$array['call_center_agents'][0]['agent_name'] = $agent_name;
|
||||
$array['call_center_agents'][0]['agent_type'] = $agent_type;
|
||||
$array['call_center_agents'][0]['agent_call_timeout'] = $agent_call_timeout;
|
||||
$array['call_center_agents'][0]['user_uuid'] = $user_uuid;
|
||||
$array['call_center_agents'][0]['agent_id'] = $agent_id;
|
||||
$array['call_center_agents'][0]['agent_password'] = $agent_password;
|
||||
$array['call_center_agents'][0]['agent_contact'] = $agent_contact;
|
||||
$array['call_center_agents'][0]['agent_status'] = $agent_status;
|
||||
$array['call_center_agents'][0]['agent_no_answer_delay_time'] = $agent_no_answer_delay_time;
|
||||
$array['call_center_agents'][0]['agent_max_no_answer'] = $agent_max_no_answer;
|
||||
$array['call_center_agents'][0]['agent_wrap_up_time'] = $agent_wrap_up_time;
|
||||
$array['call_center_agents'][0]['agent_reject_delay_time'] = $agent_reject_delay_time;
|
||||
$array['call_center_agents'][0]['agent_busy_delay_time'] = $agent_busy_delay_time;
|
||||
$array['call_center_agents'][0]['agent_record'] = $agent_record;
|
||||
if (is_uuid($user_uuid)) {
|
||||
$array['users'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['users'][0]['user_uuid'] = $user_uuid;
|
||||
$array['users'][0]['user_status'] = $agent_status;
|
||||
}
|
||||
|
||||
//save to the data
|
||||
$database = new database;
|
||||
$database->app_name = 'call_center';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array);
|
||||
//$message = $database->message;
|
||||
|
||||
//syncrhonize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete('configuration:callcenter.conf');
|
||||
//check for all required data
|
||||
//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']."domain_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-type']."<br>\n"; }
|
||||
//if (strlen($agent_call_timeout) == 0) { $msg .= $text['message-required'].$text['label-call_timeout']."<br>\n"; }
|
||||
//if (strlen($agent_contact) == 0) { $msg .= $text['message-required'].$text['label-contact']."<br>\n"; }
|
||||
//if (strlen($agent_status) == 0) { $msg .= $text['message-required'].$text['label-status']."<br>\n"; }
|
||||
//if (strlen($agent_logout) == 0) { $msg .= $text['message-required'].$text['label-agent_logout']."<br>\n"; }
|
||||
//if (strlen($agent_no_answer_delay_time) == 0) { $msg .= $text['message-required'].$text['label-no_answer_delay_time']."<br>\n"; }
|
||||
//if (strlen($agent_max_no_answer) == 0) { $msg .= $text['message-required'].$text['label-max_no_answer']."<br>\n"; }
|
||||
//if (strlen($agent_wrap_up_time) == 0) { $msg .= $text['message-required'].$text['label-wrap_up_time']."<br>\n"; }
|
||||
//if (strlen($agent_reject_delay_time) == 0) { $msg .= $text['message-required'].$text['label-reject_delay_time']."<br>\n"; }
|
||||
//if (strlen($agent_busy_delay_time) == 0) { $msg .= $text['message-required'].$text['label-busy_delay_time']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//get and then set the complete agent_contact with the call_timeout and when necessary confirm
|
||||
//if you change this variable, also change resources/switch.php
|
||||
$confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1,group_confirm_read_timeout=2000,leg_timeout=".$agent_call_timeout;
|
||||
$tmp_confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1,group_confirm_read_timeout=2000,leg_timeout=".$agent_call_timeout;
|
||||
if(strstr($agent_contact, '}') === FALSE) {
|
||||
//not found
|
||||
if(stristr($agent_contact, 'sofia/gateway') === FALSE) {
|
||||
//add the call_timeout
|
||||
$agent_contact = "{call_timeout=".$agent_call_timeout.",sip_invite_domain=".$_SESSION['domain_name']."}".$agent_contact;
|
||||
$tmp_agent_contact = "{call_timeout=".$agent_call_timeout."}".$agent_contact;
|
||||
}
|
||||
else {
|
||||
//add the call_timeout and confirm
|
||||
$agent_contact = "{".$confirm.",call_timeout=".$agent_call_timeout.",sip_invite_domain=".$_SESSION['domain_name']."}".$agent_contact;
|
||||
$tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last;
|
||||
$tmp_agent_contact = "{".$tmp_confirm.",call_timeout=".$agent_call_timeout."}".$agent_contact;
|
||||
echo "\n\n".$tmp_agent_contact."\n\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$position = strrpos($agent_contact, "}");
|
||||
$first = substr($agent_contact, 0, $position);
|
||||
$last = substr($agent_contact, $position);
|
||||
//add call_timeout and sip_invite_domain, only if missing
|
||||
$call_timeout = (stristr($agent_contact, 'call_timeout') === FALSE) ? ',call_timeout='.$agent_call_timeout : null;
|
||||
$sip_invite_domain = (stristr($agent_contact, 'sip_invite_domain') === FALSE) ? ',sip_invite_domain='.$_SESSION['domain_name'] : null;
|
||||
//compose
|
||||
//found
|
||||
if(stristr($agent_contact, 'sofia/gateway') === FALSE) {
|
||||
$agent_contact = $first.$sip_invite_domain.$call_timeout.$last;
|
||||
//not found
|
||||
if(stristr($agent_contact, 'call_timeout') === FALSE) {
|
||||
//add the call_timeout
|
||||
$tmp_pos = strrpos($agent_contact, "}");
|
||||
$tmp_first = substr($agent_contact, 0, $tmp_pos);
|
||||
$tmp_last = substr($agent_contact, $tmp_pos);
|
||||
$tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last;
|
||||
}
|
||||
else {
|
||||
//the string has the call timeout
|
||||
$tmp_agent_contact = $agent_contact;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$agent_contact = $first.','.$confirm.$sip_invite_domain.$call_timeout.$last;
|
||||
//found
|
||||
$tmp_pos = strrpos($agent_contact, "}");
|
||||
$tmp_first = substr($agent_contact, 0, $tmp_pos);
|
||||
$tmp_last = substr($agent_contact, $tmp_pos);
|
||||
if(stristr($agent_contact, 'call_timeout') === FALSE) {
|
||||
//add the call_timeout and confirm
|
||||
$tmp_agent_contact = $tmp_first.','.$tmp_confirm.',call_timeout='.$agent_call_timeout.$tmp_last;
|
||||
}
|
||||
else {
|
||||
//add confirm
|
||||
$tmp_agent_contact = $tmp_first.','.$tmp_confirm.$tmp_last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//set the user_status
|
||||
$sql = "update v_users set ";
|
||||
$sql .= "user_status = '".$agent_status."' ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$sql .= "and username = '".$agent_name."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
|
||||
//add the agent
|
||||
//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
|
||||
if ($fp) {
|
||||
//add the agent
|
||||
$cmd = "api callcenter_config agent add ".$call_center_agent_uuid." ".$agent_type;
|
||||
$cmd = "api callcenter_config agent add ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_type;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set contact
|
||||
$cmd = "api callcenter_config agent set contact ".$call_center_agent_uuid." ".$agent_contact;
|
||||
$cmd = "api callcenter_config agent set contact ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$tmp_agent_contact;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set status
|
||||
$cmd = "api callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
|
||||
$cmd = "api callcenter_config agent set status ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$agent_status."'";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set reject_delay_time
|
||||
$cmd = "api callcenter_config agent set reject_delay_time ".$call_center_agent_uuid." ".$agent_reject_delay_time;
|
||||
$cmd = "api callcenter_config agent set reject_delay_time ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_reject_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set busy_delay_time
|
||||
$cmd = "api callcenter_config agent set busy_delay_time ".$call_center_agent_uuid." ".$agent_busy_delay_time;
|
||||
$cmd = "api callcenter_config agent set busy_delay_time ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_busy_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
//agent set no_answer_delay_time
|
||||
$cmd = "api callcenter_config agent set no_answer_delay_time ".$call_center_agent_uuid." ".$agent_no_answer_delay_time;
|
||||
$cmd = "api callcenter_config agent set no_answer_delay_time ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_no_answer_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
//agent set max_no_answer
|
||||
$cmd = "api callcenter_config agent set max_no_answer ".$call_center_agent_uuid." ".$agent_max_no_answer;
|
||||
$cmd = "api callcenter_config agent set max_no_answer ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_max_no_answer;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
//agent set wrap_up_time
|
||||
$cmd = "api callcenter_config agent set wrap_up_time ".$call_center_agent_uuid." ".$agent_wrap_up_time;
|
||||
$cmd = "api callcenter_config agent set wrap_up_time ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_wrap_up_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
if (isset($action)) {
|
||||
if ($action == "add") {
|
||||
message::add($text['message-add']);
|
||||
}
|
||||
if ($action == "update") {
|
||||
message::add($text['message-update']);
|
||||
}
|
||||
header("Location: call_center_agents.php");
|
||||
return;
|
||||
}
|
||||
} //(is_array($_POST) && strlen($_POST["persistformvar"]) == 0)
|
||||
//add or update the database
|
||||
if ($_POST["persistformvar"] != "true") {
|
||||
if ($action == "add") {
|
||||
//add the agent to the database
|
||||
$call_center_agent_uuid = uuid();
|
||||
$sql = "insert into v_call_center_agents ";
|
||||
$sql .= "(";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "call_center_agent_uuid, ";
|
||||
$sql .= "agent_name, ";
|
||||
$sql .= "agent_type, ";
|
||||
$sql .= "agent_call_timeout, ";
|
||||
$sql .= "agent_id, ";
|
||||
$sql .= "agent_password, ";
|
||||
$sql .= "agent_contact, ";
|
||||
$sql .= "agent_status, ";
|
||||
//$sql .= "agent_logout, ";
|
||||
$sql .= "agent_no_answer_delay_time, ";
|
||||
$sql .= "agent_max_no_answer, ";
|
||||
$sql .= "agent_wrap_up_time, ";
|
||||
$sql .= "agent_reject_delay_time, ";
|
||||
$sql .= "agent_busy_delay_time ";
|
||||
$sql .= ")";
|
||||
$sql .= "values ";
|
||||
$sql .= "(";
|
||||
$sql .= "'$domain_uuid', ";
|
||||
$sql .= "'$call_center_agent_uuid', ";
|
||||
$sql .= "'$agent_name', ";
|
||||
$sql .= "'$agent_type', ";
|
||||
$sql .= "'$agent_call_timeout', ";
|
||||
$sql .= "'$agent_id', ";
|
||||
$sql .= "'$agent_password', ";
|
||||
$sql .= "'$agent_contact', ";
|
||||
$sql .= "'$agent_status', ";
|
||||
//$sql .= "'$agent_logout', ";
|
||||
$sql .= "'$agent_no_answer_delay_time', ";
|
||||
$sql .= "'$agent_max_no_answer', ";
|
||||
$sql .= "'$agent_wrap_up_time', ";
|
||||
$sql .= "'$agent_reject_delay_time', ";
|
||||
$sql .= "'$agent_busy_delay_time' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//syncrhonize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
$_SESSION["message"] = $text['message-add'];
|
||||
header("Location: call_center_agents.php");
|
||||
return;
|
||||
} //if ($action == "add")
|
||||
|
||||
if ($action == "update") {
|
||||
$sql = "update v_call_center_agents set ";
|
||||
$sql .= "agent_name = '$agent_name', ";
|
||||
$sql .= "agent_type = '$agent_type', ";
|
||||
$sql .= "agent_call_timeout = '$agent_call_timeout', ";
|
||||
$sql .= "agent_id = '$agent_id', ";
|
||||
$sql .= "agent_password = '$agent_password', ";
|
||||
$sql .= "agent_contact = '$agent_contact', ";
|
||||
$sql .= "agent_status = '$agent_status', ";
|
||||
//$sql .= "agent_logout = '$agent_logout', ";
|
||||
$sql .= "agent_no_answer_delay_time = '$agent_no_answer_delay_time', ";
|
||||
$sql .= "agent_max_no_answer = '$agent_max_no_answer', ";
|
||||
$sql .= "agent_wrap_up_time = '$agent_wrap_up_time', ";
|
||||
$sql .= "agent_reject_delay_time = '$agent_reject_delay_time', ";
|
||||
$sql .= "agent_busy_delay_time = '$agent_busy_delay_time' ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid'";
|
||||
$sql .= "and call_center_agent_uuid = '$call_center_agent_uuid'";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//syncrhonize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
$_SESSION["message"] = $text['message-update'];
|
||||
header("Location: call_center_agents.php");
|
||||
return;
|
||||
} //if ($action == "update")
|
||||
} //if ($_POST["persistformvar"] != "true")
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
|
||||
//initialize the destinations object
|
||||
$destination = new destinations;
|
||||
|
||||
//pre-populate the form
|
||||
if (is_uuid($_GET["id"]) && $_POST["persistformvar"] != "true") {
|
||||
if (count($_GET)>0 && $_POST["persistformvar"] != "true") {
|
||||
$call_center_agent_uuid = $_GET["id"];
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and call_center_agent_uuid = :call_center_agent_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$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) {
|
||||
$call_center_agent_uuid = $row["call_center_agent_uuid"];
|
||||
$user_uuid = $row["user_uuid"];
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_center_agent_uuid = '$call_center_agent_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$agent_name = $row["agent_name"];
|
||||
$agent_type = $row["agent_type"];
|
||||
$agent_call_timeout = $row["agent_call_timeout"];
|
||||
$agent_id = $row["agent_id"];
|
||||
$agent_password = $row["agent_password"];
|
||||
$agent_status = $row["agent_status"];
|
||||
$agent_contact = $row["agent_contact"];
|
||||
$agent_status = $row["agent_status"];
|
||||
//$agent_logout = $row["agent_logout"];
|
||||
$agent_no_answer_delay_time = $row["agent_no_answer_delay_time"];
|
||||
$agent_max_no_answer = $row["agent_max_no_answer"];
|
||||
$agent_wrap_up_time = $row["agent_wrap_up_time"];
|
||||
$agent_reject_delay_time = $row["agent_reject_delay_time"];
|
||||
$agent_busy_delay_time = $row["agent_busy_delay_time"];
|
||||
$agent_record = $row["agent_record"];
|
||||
//$agent_logout = $row["agent_logout"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset($sql, $parameters, $row);
|
||||
unset ($prep_statement);
|
||||
}
|
||||
|
||||
//set default values
|
||||
if (strlen($agent_type) == 0) { $agent_type = "callback"; }
|
||||
if (strlen($agent_call_timeout) == 0) { $agent_call_timeout = "20"; }
|
||||
if (strlen($agent_call_timeout) == 0) { $agent_call_timeout = "15"; }
|
||||
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"; }
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//show the header
|
||||
require_once "resources/header.php";
|
||||
if ($action == "add") {
|
||||
$document['title'] = $text['title-call_center_agent_add'];
|
||||
}
|
||||
if ($action == "update") {
|
||||
$document['title'] = $text['title-call_center_agent_edit'];
|
||||
}
|
||||
require_once "resources/header.php";
|
||||
|
||||
//get the list of users for this domain
|
||||
$sql = "select * from v_users ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and user_enabled = 'true' ";
|
||||
$sql .= "order by username asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$users = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//javascript to check for duplicates
|
||||
?>
|
||||
@@ -346,7 +355,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 $call_center_agent_uuid;?>", function() {
|
||||
var duplicate_agent_id = false;
|
||||
if ($("#duplicate_agent_id_response").html() != '') {
|
||||
$('#agent_id').addClass('formfld_highlight_bad');
|
||||
@@ -368,46 +377,52 @@
|
||||
|
||||
<?php
|
||||
//show the content
|
||||
echo "<form method='post' name='frm' id='frm' onsubmit='check_duplicates(); return false;'>\n";
|
||||
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'>";
|
||||
echo "<form method='post' name='frm' id='frm' action='' onsubmit='check_duplicates(); return false;'>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
if ($action == "add") {
|
||||
echo "<b>".$text['header-call_center_agent_add']."</b>";
|
||||
echo "<td align='left' width='30%' nowrap='nowrap'><b>".$text['header-call_center_agent_add']."</b></td>\n";
|
||||
}
|
||||
if ($action == "update") {
|
||||
echo "<b>".$text['header-call_center_agent_edit']."</b>";
|
||||
echo "<td align='left' width='30%' nowrap='nowrap'><b>".$text['header-call_center_agent_edit']."</b></td>\n";
|
||||
}
|
||||
echo "</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','link'=>'call_center_agents.php']);
|
||||
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
echo "<td width='70%' align='right'>";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='call_center_agents.php'\" value='".$text['button-back']."'>";
|
||||
echo " <input type='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-agent_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td width='70%' class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='agent_name' maxlength='255' value=\"".escape($agent_name)."\" />\n";
|
||||
/*
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
//---- Begin Select List --------------------
|
||||
$sql = "SELECT * FROM v_users ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and user_enabled = 'true' ";
|
||||
$sql .= "order by username asc ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
|
||||
echo "<select id=\"agent_name\" name=\"agent_name\" class='formfld'>\n";
|
||||
echo "<option value=\"\"></option>\n";
|
||||
if (is_array($users)) {
|
||||
foreach($users as $field) {
|
||||
if ($field[username] == $agent_name) {
|
||||
echo "<option value='".escape($field[username])."' selected='selected'>".escape($field[username])."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo "<option value='".escape($field[username])."'>".escape($field[username])."</option>\n";
|
||||
}
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
//$catcount = count($result);
|
||||
foreach($result as $field) {
|
||||
if ($field[username] == $agent_name) {
|
||||
echo "<option value='".$field[username]."' selected='selected'>".$field[username]."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo "<option value='".$field[username]."'>".$field[username]."</option>\n";
|
||||
}
|
||||
}
|
||||
echo "</select>";
|
||||
*/
|
||||
unset($sql, $result);
|
||||
//---- End Select List --------------------
|
||||
echo "<br />\n";
|
||||
echo $text['description-agent_name']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -418,7 +433,7 @@
|
||||
echo " ".$text['label-type']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='agent_type' maxlength='255' value=\"".escape($agent_type)."\" pattern='^(callback|uuid-standby)$'>\n";
|
||||
echo " <input class='formfld' type='text' name='agent_type' maxlength='255' value=\"$agent_type\" pattern='^(callback|uuid-standby)$'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-type']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -429,38 +444,18 @@
|
||||
echo " ".$text['label-call_timeout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_call_timeout' maxlength='255' min='1' step='1' value='".escape($agent_call_timeout)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_call_timeout' maxlength='255' min='1' step='1' value='$agent_call_timeout'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-call_timeout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo " <tr>";
|
||||
echo " <td class='vncell' valign='top'>".$text['label-username']."</td>";
|
||||
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";
|
||||
}
|
||||
}
|
||||
echo " </select>";
|
||||
unset($users);
|
||||
echo " <br>\n";
|
||||
echo " ".$text['description-users']."\n";
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-agent_id']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_id' id='agent_id' maxlength='255' min='1' step='1' value='".escape($agent_id)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_id' id='agent_id' maxlength='255' min='1' step='1' value='$agent_id'>\n";
|
||||
echo " <div style='display: none;' id='duplicate_agent_id_response'></div>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-agent_id']."\n";
|
||||
@@ -472,7 +467,7 @@
|
||||
echo " ".$text['label-agent_password']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='password' name='agent_password' autocomplete='off' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!\$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" maxlength='255' min='1' step='1' value='".escape($agent_password)."'>\n";
|
||||
echo " <input class='formfld' type='password' name='agent_password' autocomplete='off' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!\$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" maxlength='255' min='1' step='1' value='$agent_password'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-agent_password']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -495,7 +490,6 @@
|
||||
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";
|
||||
}
|
||||
@@ -531,7 +525,7 @@
|
||||
echo " ".$text['label-no_answer_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_no_answer_delay_time' maxlength='255' min='0' step='1' value='".escape($agent_no_answer_delay_time)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_no_answer_delay_time' maxlength='255' min='1' step='1' value='$agent_no_answer_delay_time'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-no_answer_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -542,7 +536,7 @@
|
||||
echo " ".$text['label-max_no_answer']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_max_no_answer' maxlength='255' min='0' step='1' value='".escape($agent_max_no_answer)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_max_no_answer' maxlength='255' min='0' step='1' value='$agent_max_no_answer'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-max_no_answer']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -553,7 +547,7 @@
|
||||
echo " ".$text['label-wrap_up_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_wrap_up_time' maxlength='255' min='0' step='1' value='".escape($agent_wrap_up_time)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_wrap_up_time' maxlength='255' min='1' step='1' value='$agent_wrap_up_time'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-wrap_up_time']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -564,7 +558,7 @@
|
||||
echo " ".$text['label-reject_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_reject_delay_time' maxlength='255' min='0' step='1' value='".escape($agent_reject_delay_time)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_reject_delay_time' maxlength='255' min='1' step='1' value='$agent_reject_delay_time'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-reject_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
@@ -575,50 +569,39 @@
|
||||
echo " ".$text['label-busy_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_busy_delay_time' maxlength='255' min='1' step='1' value='".escape($agent_busy_delay_time)."'>\n";
|
||||
echo " <input class='formfld' type='number' name='agent_busy_delay_time' maxlength='255' min='1' step='1' value='$agent_busy_delay_time'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-busy_delay_time']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-record_template']."\n";
|
||||
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 " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-record_template']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
/*
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-agent_logout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='agent_logout' maxlength='255' value='".escape($agent_logout)."'>\n";
|
||||
echo " <input class='formfld' type='text' name='agent_logout' maxlength='255' value='$agent_logout'>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-agent_logout']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
*/
|
||||
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
if ($action == "update") {
|
||||
echo "<input type='hidden' name='call_center_agent_uuid' value='".escape($call_center_agent_uuid)."'>\n";
|
||||
echo " <input type='hidden' name='call_center_agent_uuid' value='$call_center_agent_uuid'>\n";
|
||||
}
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo " <br />";
|
||||
echo " <input type='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
echo "</form>";
|
||||
|
||||
//include the footer
|
||||
//footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,415 +17,225 @@
|
||||
|
||||
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-2012
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_agent_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_agent_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the agents from the database
|
||||
$sql = "select * from v_call_center_tiers ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$tiers = $database->select($sql, $parameters, 'all');
|
||||
if (is_array($tiers) && count($tiers) == 0) {
|
||||
$per_queue_login = true;
|
||||
}
|
||||
else {
|
||||
$per_queue_login = false;
|
||||
}
|
||||
unset($sql, $parameters);
|
||||
//includes and title
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_center_agent_status'];
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//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) {
|
||||
|
||||
//include the dnd php class
|
||||
include PROJECT_PATH."/app/calls/resources/classes/do_not_disturb.php";
|
||||
foreach($_POST['agents'] as $row) {
|
||||
if (strlen($row['agent_status']) > 0) {
|
||||
//agent set status
|
||||
if ($fp) {
|
||||
//set the user_status
|
||||
$sql = "update v_users set ";
|
||||
$sql .= "user_status = '".$row['agent_status']."' ";
|
||||
$sql .= "where domain_uuid = '".$domain_uuid."' ";
|
||||
$sql .= "and username = '".$row['agent_name']."' ";
|
||||
//echo $sql."\n";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
//set the call center status
|
||||
if ($row['agent_status'] == "Do Not Disturb") {
|
||||
//set the default dnd action
|
||||
$dnd_action = "add";
|
||||
//set the call center status to Logged Out
|
||||
$cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." 'Logged Out'";
|
||||
}
|
||||
else {
|
||||
$cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$row['agent_status']."'";
|
||||
}
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
//echo $cmd."\n";
|
||||
usleep(200);
|
||||
}
|
||||
|
||||
//loop through the list of assigned extensions
|
||||
//foreach ($_SESSION['user']['extension'] as &$sub_row) {
|
||||
// //update dnd
|
||||
// $dnd = new do_not_disturb;
|
||||
// //$dnd->debug = false;
|
||||
// $dnd->domain_uuid = $domain_uuid;
|
||||
// $dnd->domain_name = $_SESSION['domain_name'];
|
||||
// $dnd->extension = $sub_row["user"];
|
||||
// if ($row['status'] == "Do Not Disturb") {
|
||||
// $dnd->enabled = "true";
|
||||
// }
|
||||
// else {
|
||||
// $dnd->enabled = "false";
|
||||
// }
|
||||
// $dnd->set();
|
||||
// unset($dnd);
|
||||
//}
|
||||
//unset ($prep_statement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//get the agents from the database
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "order by agent_name asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$agents = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$agents = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
|
||||
//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 agent list from event socket
|
||||
$switch_cmd = 'callcenter_config tier list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the call center queues from the database
|
||||
$sql = "select q.*, d.domain_name ";
|
||||
$sql .= "from v_call_center_queues as q, v_domains as d ";
|
||||
$sql .= "where q.domain_uuid = :domain_uuid ";
|
||||
$sql .= "and d.domain_uuid = :domain_uuid ";
|
||||
$sql .= "and q.domain_uuid = d.domain_uuid ";
|
||||
$sql .= "order by queue_name asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$database = new database;
|
||||
$call_center_queues = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
//view_array($call_center_queues, false);
|
||||
|
||||
//add the status to the call_center_queues array
|
||||
$x = 0;
|
||||
if (is_array($call_center_queues)) {
|
||||
foreach ($call_center_queues as $queue) {
|
||||
//set the queue id
|
||||
$queue_id = $queue['queue_extension'].'@'.$queue['domain_name'];
|
||||
|
||||
//get the queue list from event socket
|
||||
$switch_cmd = "callcenter_config queue list agents ".$queue_id;
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$queue_list = csv_to_named_array($event_socket_str, '|');
|
||||
$call_center_queues[$x]['queue_list'] = $queue_list;
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
$call_center_agents = csv_to_named_array($event_socket_str, '|');
|
||||
//echo "<pre>\n";
|
||||
//print_r($call_center_agents);
|
||||
//echo "</pre>\n";
|
||||
|
||||
//get the agent status from mod_callcenter and update the agent status in the agents array
|
||||
$x = 0;
|
||||
if (is_array($agents)) {
|
||||
foreach ($agents as $row) {
|
||||
//add the domain name
|
||||
$domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
$agents[$x]['domain_name'] = $domain_name;
|
||||
|
||||
//update the queue status
|
||||
$i = 0;
|
||||
if (is_array($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'])) {
|
||||
foreach ($queue['queue_list'] as $queue_list) {
|
||||
if ($row['call_center_agent_uuid'] == $queue_list['name']) {
|
||||
$agents[$x]['queues'][$i]['queue_status'] = 'Available';
|
||||
}
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
//update the agent status
|
||||
if (is_array($agent_list)) {
|
||||
foreach ($agent_list as $r) {
|
||||
if ($r['name'] == $row['call_center_agent_uuid']) {
|
||||
$agents[$x]['agent_status'] = $r['status'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//increment x
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
//remove rows from the http post array where the status has not changed
|
||||
if (is_array($_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']) {
|
||||
unset($_POST['agents'][$key]);
|
||||
foreach ($agents as $row) {
|
||||
//add the domain name
|
||||
$domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
$agents[$x]['domain_name'] = $domain_name;
|
||||
//update the agent status
|
||||
foreach ($call_center_agents as $r) {
|
||||
if ($r['name'] == $row[agent_name].'@'.$domain_name) {
|
||||
$agents[$x]['agent_status'] = $r['status'];
|
||||
}
|
||||
}
|
||||
}
|
||||
//increment x
|
||||
$x++;
|
||||
|
||||
}
|
||||
//echo "<pre>\n";
|
||||
//print_r($agents);
|
||||
//echo "</pre>\n";
|
||||
|
||||
//use the http post array to change the status
|
||||
if (is_array($_POST['agents'])) {
|
||||
foreach($_POST['agents'] as $row) {
|
||||
if (isset($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_status'] = $row['agent_status'];
|
||||
$array['users'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
|
||||
$p = new permissions;
|
||||
$p->add('user_edit', 'temp');
|
||||
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array);
|
||||
$response = $database->message;
|
||||
unset($array);
|
||||
|
||||
$p->delete('user_edit', 'temp');
|
||||
}
|
||||
|
||||
//validate the agent status
|
||||
$agent_status = $row['agent_status'];
|
||||
switch ($agent_status) {
|
||||
case "Available" :
|
||||
break;
|
||||
case "Available (On Demand)" :
|
||||
break;
|
||||
case "On Break" :
|
||||
break;
|
||||
case "Do Not Disturb" :
|
||||
break;
|
||||
case "Logged Out" :
|
||||
break;
|
||||
default :
|
||||
$agent_status = null;
|
||||
}
|
||||
|
||||
//set the call center status
|
||||
$command = '';
|
||||
if (!isset($row['queue_name'])) {
|
||||
if ($agent_status == "Do Not Disturb") {
|
||||
//set the default dnd action
|
||||
$dnd_action = "add";
|
||||
//set the call center status to Logged Out
|
||||
if (is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
|
||||
}
|
||||
}
|
||||
$response = event_socket_request($fp, $command);
|
||||
}
|
||||
//echo $command."\n";
|
||||
|
||||
//get the queue_id
|
||||
if (isset($row['queue_uuid']) && is_uuid($row['queue_uuid'])) {
|
||||
if (is_array($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'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//set the agent status to available and assign the agent to the queue with the tier
|
||||
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Available') {
|
||||
//set the call center status
|
||||
//$command = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'";
|
||||
//$response = event_socket_request($fp, $command);
|
||||
|
||||
//assign the agent to the queue
|
||||
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
|
||||
//echo $command."<br />\n";
|
||||
$response = event_socket_request($fp, $command);
|
||||
}
|
||||
}
|
||||
|
||||
//un-assign the agent from the queue
|
||||
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Logged Out') {
|
||||
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
|
||||
//echo $command."<br />\n";
|
||||
$response = event_socket_request($fp, $command);
|
||||
}
|
||||
}
|
||||
usleep(200);
|
||||
|
||||
//set the blf status
|
||||
//get the agents from the database
|
||||
$sql = "select agent_name from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and call_center_agent_uuid = :call_center_agent_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['call_center_agent_uuid'] = $row['agent_uuid'];
|
||||
$database = new database;
|
||||
$agent_name = $database->select($sql, $parameters, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
if ($row['agent_status'] == 'Available') {
|
||||
$answer_state = 'confirmed';
|
||||
}
|
||||
else {
|
||||
$answer_state = 'terminated';
|
||||
}
|
||||
$call_center_notify = new call_center_notify;
|
||||
$call_center_notify->domain_name = $_SESSION['domain_name'];
|
||||
$call_center_notify->agent_name = $agent_name[0]['agent_name'];
|
||||
$call_center_notify->answer_state = $answer_state;
|
||||
$call_center_notify->agent_uuid = $row['agent_uuid'];
|
||||
$call_center_notify->send_call_center_notify();
|
||||
unset($call_center_notify);
|
||||
|
||||
} //end fp
|
||||
} //strlen
|
||||
} //foreach
|
||||
|
||||
//send a message
|
||||
message::add($text['confirm-add']);
|
||||
header("Location: call_center_agent_status.php");
|
||||
return;
|
||||
} //post
|
||||
|
||||
//includes the header
|
||||
$document['title'] = $text['title-call_center_agent_status'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//radio button cycle script
|
||||
echo "<script>\n";
|
||||
echo " function get_selected(radio_group) {\n";
|
||||
echo " for (var i = 0; i < radio_group.length; i++) {\n";
|
||||
echo " if (radio_group[i].checked) { return i; }\n";
|
||||
echo " }\n";
|
||||
echo " return 0;\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " function cycle(radio_group_name) {\n";
|
||||
echo " var radios = document.getElementsByName(radio_group_name);\n";
|
||||
echo " var i = get_selected(radios);\n";
|
||||
echo " if (i+1 == radios.length) {\n";
|
||||
echo " radios[0].checked = true;\n";
|
||||
echo " }\n";
|
||||
echo " else {\n";
|
||||
echo " radios[i+1].checked = true;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
echo "</script>\n";
|
||||
//set the status on the user_array by using the extension as the key
|
||||
//foreach ($call_center_agents as $row) {
|
||||
// if (count($_SESSION['domains']) == 1) {
|
||||
// //get the extension status from the call center agent list
|
||||
// preg_match('/user\/(\d{2,7})/', $row['contact'], $matches);
|
||||
// $extension = $matches[1];
|
||||
// $user_array[$extension]['username'] = $tmp[0];
|
||||
// if ($user_array[$extension]['user_status'] != "Do Not Disturb") {
|
||||
// $user_array[$extension]['user_status'] = $row['status'];
|
||||
// }
|
||||
// } else {
|
||||
// $tmp = explode('@',$row["name"]);
|
||||
// if ($tmp[1] == $_SESSION['domain_name']) {
|
||||
// //get the extension status from the call center agent list
|
||||
// preg_match('/user\/(\d{2,7})/', $row['contact'], $matches);
|
||||
// $extension = $matches[1];
|
||||
// $user_array[$extension]['username'] = $tmp[0];
|
||||
// if ($user_array[$extension]['user_status'] != "Do Not Disturb") {
|
||||
// $user_array[$extension]['user_status'] = $row['status'];
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_center_agent_status']."</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','collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'call_center_queues.php']);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-refresh'],'icon'=>$_SESSION['theme']['button_icon_refresh'],'collapse'=>'hide-xs','link'=>'call_center_agent_status.php']);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'hide-xs','style'=>'margin-left: 15px;','onclick'=>"list_form_submit('form_list');"]);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='50%' align='left' nowrap='nowrap'><b>".$text['header-call_center_agent_status']."</b></td>\n";
|
||||
echo "<td width='50%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='call_center_queues.php'\" value='".$text['button-back']."'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-refresh']."' onclick=\"window.location='call_center_agent_status.php'\" value='".$text['button-refresh']."'>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' colspan='2'>\n";
|
||||
echo $text['description-call_center_agent_status']."<br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</tr></table>\n";
|
||||
|
||||
if (is_array($_POST['agents']) && !$per_queue_login) {
|
||||
echo $text['description-call_center_agent_status']."\n";
|
||||
echo "<br /><br />\n";
|
||||
}
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th>".$text['label-agent']."</th>\n";
|
||||
echo "<th>".$text['label-status']."</th>\n";
|
||||
echo "<th>".$text['label-options']."</th>\n";
|
||||
echo "<tr>\n";
|
||||
$x = 0;
|
||||
foreach($agents as $row) {
|
||||
$str = '';
|
||||
$str .= "<tr >\n";
|
||||
$str .= " <td valign='middle' class='".$row_style[$c]."'>".$row['agent_name']." </td>\n";
|
||||
$str .= " <td valign='middle' class='".$row_style[$c]."'>".$row['agent_status']." </td>\n";
|
||||
$str .= " <td valign='middle' class='".$row_style[$c]."'>";
|
||||
$str .= " <input type='hidden' name='agents[".$x."][agent_name]' id='agent_".$x."_name' value='".$row['agent_name']."'>\n";
|
||||
$str .= " <input type='hidden' name='agents[".$x."][id]' id='agent_".$x."_name' value='".$row['call_center_agent_uuid']."'>\n";
|
||||
$str .= " <input type='radio' name='agents[".$x."][agent_status]' id='agent_".$x."_status_no_change' value='' checked='checked'><label for='agent_".$x."_status_no_change'>".$text['option-no_change']."</label>\n";
|
||||
$str .= " <input type='radio' name='agents[".$x."][agent_status]' id='agent_".$x."_status_available' value='Available'><label for='agent_".$x."_status_available'>".$text['option-available']."</label>\n";
|
||||
$str .= " <input type='radio' name='agents[".$x."][agent_status]' id='agent_".$x."_status_logged_out' value='Logged Out'><label for='agent_".$x."_status_logged_out'>".$text['option-logged_out']."</label>\n";
|
||||
$str .= " <input type='radio' name='agents[".$x."][agent_status]' id='agent_".$x."_status_on_break' value='On Break'><label for='agent_".$x."_status_on_break'>".$text['option-on_break']."</label>\n";
|
||||
//$str .= " <input type='radio' name='agents[".$x."][agent_status]' id='agent_".$x."_status_dnd' value='Do Not Disturb'><label for='agent_".$x."_status_dnd'>".$text['option-do_not_disturb']."</label>\n";
|
||||
$str .= " </td>\n";
|
||||
$str .= "</tr>\n";
|
||||
if (count($_SESSION['domains']) > 1) {
|
||||
if ($row['domain_name'] == $_SESSION['domain_name']) {
|
||||
echo $str;
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo $str;
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
}
|
||||
$x++;
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo " <th class='pct-20'>".$text['label-agent']."</th>\n";
|
||||
if (!$per_queue_login) {
|
||||
echo " <th class='shrink'>".$text['label-status']."</th>\n";
|
||||
}
|
||||
echo " <th class='pct-20 hide-sm-dn'> </th>\n";
|
||||
if ($per_queue_login) {
|
||||
echo " <th class='pct-40'>".$text['label-options']."</th>\n";
|
||||
}
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='11' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td width='33.3%' align='right'>\n";
|
||||
echo " <br />\n";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-update_status']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($agents) && @sizeof($agents) != 0) {
|
||||
$x = 0;
|
||||
foreach ($agents as $row) {
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
$html = "<tr class='list-row'>\n";
|
||||
$html .= " <td ".$onclick.">".escape($row['agent_name'])." </td>\n";
|
||||
|
||||
if (!$per_queue_login) {
|
||||
$html .= " <td class='no-wrap'>";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($row['agent_name'])."'>\n";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][agent_uuid]' value='".escape($row['call_center_agent_uuid'])."'>\n";
|
||||
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['agent_status'] == 'Available' ? "checked='checked'" : null)."> ".$text['option-available']."</label>\n";
|
||||
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['agent_status'] == 'Logged Out' ? "checked='checked'" : null)."> ".$text['option-logged_out']."</label>\n";
|
||||
$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['agent_status'] == 'On Break' ? "checked='checked'" : null)."> ".$text['option-on_break']."</label>\n";
|
||||
//$html .= " <label><input type='radio' name='agents[".$x."][agent_status]' value='Do Not Disturb' ".($row['agent_status'] == 'Do Not Disturb' ? "checked='checked'" : null)."> ".$text['option-do_not_disturb']."</label>\n";
|
||||
$html .= " </td>\n";
|
||||
}
|
||||
$html .= " <td ".$onclick." class='hide-sm-dn'> </td>\n";
|
||||
|
||||
if ($per_queue_login) {
|
||||
$html .= " <td class='description'>";
|
||||
if (is_array($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'])) {
|
||||
foreach ($row['queues'] as $queue) {
|
||||
$x++;
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
$html .= " <tr class='list-row'>\n";
|
||||
$html .= " <td ".$onclick." class='pct-80 no-wrap'>".$queue['queue_name']."</td>\n";
|
||||
$html .= " <td>\n";
|
||||
if ($queue['queue_status'] == "Available") {
|
||||
$html .= " ".$text['option-available']."\n";
|
||||
}
|
||||
if ($queue['queue_status'] == "Logged Out") {
|
||||
$html .= " ".$text['option-logged_out']."\n";
|
||||
}
|
||||
$html .= " </td>\n";
|
||||
$html .= " <td class='no-wrap right'>";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][queue_name]' value='".escape($queue['queue_name'])."'>\n";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($row['agent_name'])."'>\n";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][user_uuid]' value='".escape($row['user_uuid'])."'>\n";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][queue_uuid]' value='".escape($queue['call_center_queue_uuid'])."'>\n";
|
||||
$html .= " <input type='hidden' name='agents[".$x."][agent_uuid]' value='".escape($row['call_center_agent_uuid'])."'>\n";
|
||||
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($queue['queue_status'] == 'Available' ? "checked='checked'" : null)."> ".$text['option-available']."</label> \n";
|
||||
$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($queue['queue_status'] == 'Logged Out' ? "checked='checked'" : null)."> ".$text['option-logged_out']."</label>\n";
|
||||
$html .= " </td>\n";
|
||||
$html .= " </tr>\n";
|
||||
}
|
||||
}
|
||||
$html .= " </table>\n";
|
||||
}
|
||||
$html .= " </td>\n";
|
||||
}
|
||||
$html .= "</tr>\n";
|
||||
if (count($_SESSION['domains']) > 1) {
|
||||
if ($row['domain_name'] == $_SESSION['domain_name']) {
|
||||
echo $html;
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo $html;
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
unset($agents);
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
echo "</form>\n";
|
||||
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -17,167 +17,96 @@
|
||||
|
||||
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-2012
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_agent_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_agent_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_center_agents'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_center_agents = $_POST['call_center_agents'];
|
||||
}
|
||||
//includes and title
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_center_agents'];
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_center_agents) && @sizeof($call_center_agents) != 0) {
|
||||
switch ($action) {
|
||||
case 'delete':
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
$obj = new call_center;
|
||||
$obj->delete_agents($call_center_agents);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_center_agents.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
|
||||
//get http variables and set them to php variables
|
||||
//get http values and set them to php variables
|
||||
$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.'%';
|
||||
}
|
||||
//show content
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='50%' align='left' nowrap='nowrap'><b>".$text['header-call_center_agents']."</b></td>\n";
|
||||
echo "<td width='50%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='call_center_queues.php'\" value='".$text['button-back']."'>\n";
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-status']."' onclick=\"window.location='call_center_agent_status.php'\" value='".$text['button-status']."'>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' colspan='2'>\n";
|
||||
echo $text['description-call_center_agents']."<br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</tr></table>\n";
|
||||
|
||||
//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) ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by) == 0) {
|
||||
$order_by = 'agent_name';
|
||||
$order = 'asc';
|
||||
}
|
||||
if (isset($sql_search)) {
|
||||
$sql .= "and ".$sql_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_center_all')) {
|
||||
$param .= "&show=all";
|
||||
else {
|
||||
$sql .= "order by $order_by $order ";
|
||||
}
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$num_rows = count($result);
|
||||
unset ($prep_statement, $result, $sql);
|
||||
$rows_per_page = 100;
|
||||
$param = "";
|
||||
$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);
|
||||
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = str_replace('count(*)', '*', $sql);
|
||||
$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');
|
||||
unset($sql, $parameters);
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by) == 0) {
|
||||
$order_by = 'agent_name';
|
||||
$order = 'asc';
|
||||
}
|
||||
else {
|
||||
$sql .= "order by $order_by $order ";
|
||||
}
|
||||
$sql .= " limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//includes and title
|
||||
$document['title'] = $text['title-call_center_agents'];
|
||||
require_once "resources/header.php";
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//show content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_center_agents']." (".$num_rows.")</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','link'=>'call_center_queues.php','style'=>'margin-right: 15px;']);
|
||||
if (permission_exists('call_center_imports')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'link'=>PROJECT_PATH.'/app/call_center_imports/call_center_imports.php?import_type=call_center_agents']);
|
||||
}
|
||||
if ($num_rows) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-status'],'icon'=>'user-clock','style'=>'margin-right: 15px;','link'=>'call_center_agent_status.php']);
|
||||
}
|
||||
if (permission_exists('call_center_agent_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_center_agent_edit.php']);
|
||||
}
|
||||
if (permission_exists('call_center_agent_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;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>";
|
||||
if (permission_exists('call_center_all')) {
|
||||
if ($_GET['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=&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='list_search_reset();'>";
|
||||
echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]);
|
||||
echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_center_agents.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($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 (permission_exists('call_center_agent_delete') && $result) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
|
||||
echo $text['description-call_center_agents']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
//echo th_order_by('domain_uuid', 'domain_uuid', $order_by, $order);
|
||||
echo th_order_by('agent_name', $text['label-agent_name'], $order_by, $order);
|
||||
echo th_order_by('agent_id', $text['label-agent_id'], $order_by, $order);
|
||||
@@ -189,86 +118,87 @@
|
||||
//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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('call_center_agent_add')) {
|
||||
echo "<a href='call_center_agent_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
$x = 0;
|
||||
if ($result_count == 0) { //no results
|
||||
}
|
||||
else { //received results
|
||||
foreach($result as $row) {
|
||||
$tr_link = (permission_exists('call_center_agent_edit')) ? "href='call_center_agent_edit.php?id=".$row['call_center_agent_uuid']."'" : null;
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[domain_uuid]."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
$list_row_url = "call_center_agent_edit.php?id=".urlencode($row['call_center_agent_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='call_center_agents[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
}
|
||||
echo " <td>";
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
echo "<a href='call_center_agent_edit.php?id=".escape($row['call_center_agent_uuid'])."'>".escape($row['agent_name'])."</a>";
|
||||
echo "<a href='call_center_agent_edit.php?id=".$row['call_center_agent_uuid']."'>".$row['agent_name']."</a>";
|
||||
}
|
||||
else {
|
||||
echo escape($row['agent_name']);
|
||||
echo $row['agent_name'];
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['agent_id'])."</td>\n";
|
||||
echo " <td>".escape($row['agent_type'])."</td>\n";
|
||||
echo " <td>".escape($row['agent_call_timeout'])."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['agent_id']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['agent_type']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['agent_call_timeout']." </td>\n";
|
||||
$agent_contact = $row['agent_contact'];
|
||||
// parse out gateway uuid
|
||||
$bridge_statement = explode('/', $row['agent_contact']);
|
||||
if ($bridge_statement[0] == 'sofia' && $bridge_statement[1] == 'gateway' && is_uuid($bridge_statement[2])) {
|
||||
// retrieve gateway name from db
|
||||
$sql = "select gateway from v_gateways ";
|
||||
$sql .= "where gateway_uuid = :gateway_uuid ";
|
||||
$parameters['gateway_uuid'] = $bridge_statement[2];
|
||||
$database = new database;
|
||||
$result = $database->select($sql, $parameters, 'all');
|
||||
$sql = "select gateway from v_gateways where gateway_uuid = '".$bridge_statement[2]."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
if (count($result) > 0) {
|
||||
$gateway_name = $result[0]['gateway'];
|
||||
$agent_contact = str_replace($bridge_statement[2], $gateway_name, $agent_contact);
|
||||
}
|
||||
unset($sql, $parameters, $bridge_statement);
|
||||
unset ($prep_statement, $sql, $bridge_statement);
|
||||
}
|
||||
echo " <td>".escape($agent_contact)."</td>\n";
|
||||
echo " <td>".escape($row['agent_max_no_answer'])."</td>\n";
|
||||
echo " <td>".escape($row['agent_status'])."</td>\n";
|
||||
//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') {
|
||||
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";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$agent_contact." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['agent_max_no_answer']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['agent_status']." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[agent_wrap_up_time]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[agent_reject_delay_time]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[agent_busy_delay_time]." </td>\n";
|
||||
echo " <td class='list_control_icons'>\n";
|
||||
if (permission_exists('call_center_agent_edit')) {
|
||||
echo "<a href='call_center_agent_edit.php?id=".$row['call_center_agent_uuid']."' alt='".$text['button-edit']."'>".$v_link_label_edit."</a>";
|
||||
}
|
||||
if (permission_exists('call_center_agent_delete')) {
|
||||
echo "<a href='call_center_agent_delete.php?id=".$row['call_center_agent_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
|
||||
}
|
||||
//echo " <input type='button' class='btn' name='' alt='edit' onclick=\"window.location='call_center_agent_edit.php?id=".$row[call_center_agent_uuid]."'\" value='e'>\n";
|
||||
//echo " <input type='button' class='btn' name='' alt='delete' onclick=\"if (confirm('Are you sure you want to delete this?')) { window.location='call_center_agent_delete.php?id=".$row[call_center_agent_uuid]."' }\" value='x'>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($result);
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='11' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_center_agent_add')) {
|
||||
echo "<a href='call_center_agent_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
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";
|
||||
|
||||
echo "</form>\n";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -0,0 +1,102 @@
|
||||
<?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>
|
||||
*/
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_queue_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the id
|
||||
if (count($_GET) > 0) {
|
||||
$id = check_str($_GET["id"]);
|
||||
}
|
||||
|
||||
if (strlen($id) > 0) {
|
||||
|
||||
//get the dialplan uuid
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_center_queue_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch(PDO::FETCH_ASSOC)) {
|
||||
$queue_name = $row['queue_name'];
|
||||
$dialplan_uuid = $row['dialplan_uuid'];
|
||||
}
|
||||
|
||||
//delete the tier from the database
|
||||
$sql = "delete from v_call_center_tiers ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and queue_name = '$queue_name' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//delete the call center queue
|
||||
$sql = "delete from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//delete the dialplan entry
|
||||
$sql = "delete from v_dialplans ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//delete the dialplan details
|
||||
$sql = "delete from v_dialplan_details ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("memcache delete dialplan:".$_SESSION["context"]);
|
||||
|
||||
//synchronize configuration
|
||||
save_dialplan_xml();
|
||||
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
}
|
||||
|
||||
//redirect the browser
|
||||
$_SESSION["message"] = $text['message-delete'];
|
||||
header("Location: call_center_queues.php");
|
||||
return;
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,192 +17,110 @@
|
||||
|
||||
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-2012
|
||||
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";
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//check permisission
|
||||
if (permission_exists('call_center_queue_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_queue_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get posted data
|
||||
if (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) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_center_queue_add')) {
|
||||
$obj = new call_center;
|
||||
$obj->copy_queues($call_center_queues);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('call_center_queue_delete')) {
|
||||
$obj = new call_center;
|
||||
$obj->delete_queues($call_center_queues);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_center_queues.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
//includes and title
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_center_queues'];
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get http variables and set as php variables
|
||||
$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(queue_name) like :search ";
|
||||
$sql_search .= "or lower(queue_description) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
|
||||
//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')) {
|
||||
$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;
|
||||
}
|
||||
$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_center_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);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$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');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//includes and title
|
||||
$document['title'] = $text['title-call_center_queues'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_center_queues']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if (permission_exists('call_center_imports')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'link'=>PROJECT_PATH.'/app/call_center_imports/call_center_imports.php?import_type=call_center_queues']);
|
||||
}
|
||||
if (permission_exists('call_center_agent_view')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-agents'],'icon'=>'users','link'=>'call_center_agents.php']);
|
||||
}
|
||||
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']);
|
||||
}
|
||||
$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'])) {
|
||||
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');"]);
|
||||
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');"]);
|
||||
unset($margin_left);
|
||||
}
|
||||
echo "<form id='form_search' class='inline' method='get'>\n";
|
||||
if (permission_exists('call_center_all')) {
|
||||
if ($_GET['show'] == 'all') {
|
||||
echo " <input type='hidden' name='show' value='all'>";
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td width='50%' align='left' nowrap='nowrap'><b>".$text['header-call_center_queues']."</b></td>\n";
|
||||
echo "<td width='50%' align='right'>\n";
|
||||
echo " <input type='button' class='btn' value='".$text['button-agents']."' alt='".$text['button-agents']."' onclick=\"window.location='call_center_agents.php'\">\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' colspan='2'>\n";
|
||||
echo $text['description-call_center_queues']."<br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</tr></table>\n";
|
||||
|
||||
//get total call center queues count from the database
|
||||
$sql = "select count(*) as num_rows from v_call_center_queues where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
$total_call_center_queues = $row['num_rows'];
|
||||
}
|
||||
unset($prep_statement, $row);
|
||||
|
||||
//prepare to page the results (reuse $sql from above)
|
||||
if (strlen($order_by) == 0) {
|
||||
$order_by = 'queue_name';
|
||||
$order = 'asc';
|
||||
}
|
||||
else {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?type=&show=all'.($search != '' ? "&search=".urlencode($search) : null)]);
|
||||
$sql .= "order by $order_by $order ";
|
||||
}
|
||||
}
|
||||
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_center_queues.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($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";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$num_rows = count($result);
|
||||
unset ($prep_statement, $result, $sql);
|
||||
|
||||
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) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
$rows_per_page = 100;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
echo $text['description-call_center_queues']."\n";
|
||||
echo "<br /><br />\n";
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by) == 0) {
|
||||
$order_by = 'queue_name';
|
||||
$order = 'asc';
|
||||
}
|
||||
else {
|
||||
$sql .= "order by $order_by $order ";
|
||||
}
|
||||
$sql .= " limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['show'] == "all" && permission_exists('call_center_all')) {
|
||||
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param, "class='shrink'");
|
||||
}
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order);
|
||||
echo th_order_by('queue_extension', $text['label-extension'], $order_by, $order);
|
||||
echo th_order_by('queue_strategy', $text['label-strategy'], $order_by, $order);
|
||||
//echo th_order_by('queue_moh_sound', $text['label-music_on_hold'], $order_by, $order);
|
||||
//echo th_order_by('queue_record_template', $text['label-record_template'], $order_by, $order);
|
||||
//echo th_order_by('queue_time_base_score', $text['label-time_base_score'], $order_by, $order);
|
||||
//echo th_order_by('queue_time_base_score_sec', $text['label-time_base_score_sec'], $order_by, $order);
|
||||
//echo th_order_by('queue_max_wait_time', $text['label-max_wait_time'], $order_by, $order);
|
||||
//echo th_order_by('queue_max_wait_time_with_no_agent', $text['label-max_wait_time_with_no_agent'], $order_by, $order);
|
||||
echo th_order_by('queue_tier_rules_apply', $text['label-tier_rules_apply'], $order_by, $order);
|
||||
@@ -211,77 +129,78 @@
|
||||
//echo th_order_by('queue_discard_abandoned_after', $text['label-discard_abandoned_after'], $order_by, $order);
|
||||
//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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
echo th_order_by('queue_description', $text['label-description'], $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('call_center_queue_add')) {
|
||||
if ($_SESSION['limit']['call_center_queues']['numeric'] == '' || ($_SESSION['limit']['call_center_queues']['numeric'] != '' && $total_call_center_queues < $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo "<a href='call_center_queue_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
|
||||
}
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($result)) {
|
||||
$x = 0;
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
$tr_link = (permission_exists('call_center_queue_edit')) ? "href='call_center_queue_edit.php?id=".$row[call_center_queue_uuid]."'" : null;
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
if (permission_exists('call_center_queue_edit')) {
|
||||
$list_row_url = "call_center_queue_edit.php?id=".urlencode($row['call_center_queue_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='call_center_queues[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
}
|
||||
echo " <td>";
|
||||
if (permission_exists('call_center_queue_edit')) {
|
||||
echo " <a href='".$list_row_url."' title=\"".$text['button-edit']."\">".escape($row['queue_name'])."</a>";
|
||||
echo "<a href='call_center_queue_edit.php?id=".$row[call_center_queue_uuid]."'>".$row[queue_name]."</a>";
|
||||
}
|
||||
else {
|
||||
echo " ".escape($row[queue_name]);
|
||||
echo $row[queue_name];
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td>".escape($row['queue_extension'])."</td>\n";
|
||||
echo " <td>".escape($row['queue_strategy'])."</td>\n";
|
||||
//echo " <td>".escape($row[queue_moh_sound])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_record_template])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_time_base_score])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_time_base_score_sec])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_max_wait_time])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_max_wait_time_with_no_agent])." </td>\n";
|
||||
echo " <td>".ucwords(escape($row['queue_tier_rules_apply']))."</td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rule_wait_second])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_tier_rule_no_agent_no_wait])." </td>\n";
|
||||
//echo " <td>".escape($row[queue_discard_abandoned_after])." </td>\n";
|
||||
//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') {
|
||||
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";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_extension]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_strategy]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_moh_sound]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_record_template]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_time_base_score]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_max_wait_time]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_max_wait_time_with_no_agent]." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".ucwords($row[queue_tier_rules_apply])." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_wait_second]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_no_agent_no_wait]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_discard_abandoned_after]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_abandoned_resume_allowed]." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row[queue_tier_rule_wait_multiply_level]." </td>\n";
|
||||
echo " <td valign='top' class='row_stylebg'>".$row[queue_description]." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_center_queue_edit')) {
|
||||
echo "<a href='call_center_queue_edit.php?id=".$row[call_center_queue_uuid]."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('call_center_queue_delete')) {
|
||||
echo "<a href='call_center_queue_delete.php?id=".$row[call_center_queue_uuid]."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='17' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_center_queue_add')) {
|
||||
if ($_SESSION['limit']['call_center_queues']['numeric'] == '' || ($_SESSION['limit']['call_center_queues']['numeric'] != '' && $total_call_center_queues < $_SESSION['limit']['call_center_queues']['numeric'])) {
|
||||
echo "<a href='call_center_queue_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
|
||||
}
|
||||
unset($result);
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<div align='center'>".$paging_controls."</div>\n";
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
|
||||
echo "</form>\n";
|
||||
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,394 @@
|
||||
<?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>
|
||||
*/
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_tier_add') || permission_exists('call_center_tier_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//set tier uuid
|
||||
$call_center_tier_uuid = check_str($_REQUEST["id"]);
|
||||
|
||||
//get http post variables and set them to php variables
|
||||
if (count($_POST)>0) {
|
||||
$agent_name = check_str($_POST["agent_name"]);
|
||||
$queue_name = check_str($_POST["queue_name"]);
|
||||
$tier_level = check_str($_POST["tier_level"]);
|
||||
$tier_position = check_str($_POST["tier_position"]);
|
||||
}
|
||||
|
||||
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
|
||||
$msg = '';
|
||||
$call_center_tier_uuid = check_str($_POST["call_center_tier_uuid"]);
|
||||
|
||||
//check for all required data
|
||||
//if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']."domain_uuid<br>\n"; }
|
||||
//if (strlen($agent_name) == 0) { $msg .= $text['message-required'].$text['label-agent_name']."<br>\n"; }
|
||||
//if (strlen($queue_name) == 0) { $msg .= $text['message-required'].$text['label-queue_name']."<br>\n"; }
|
||||
//if (strlen($tier_level) == 0) { $msg .= $text['message-required'].$text['label-tier_level']."<br>\n"; }
|
||||
//if (strlen($tier_position) == 0) { $msg .= $text['message-required'].$text['label-tier_position']."<br>\n"; }
|
||||
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
require_once "resources/header.php";
|
||||
require_once "resources/persist_form_var.php";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table><tr><td>\n";
|
||||
echo $msg."<br />";
|
||||
echo "</td></tr></table>\n";
|
||||
persistformvar($_POST);
|
||||
echo "</div>\n";
|
||||
require_once "resources/footer.php";
|
||||
return;
|
||||
}
|
||||
|
||||
//add the agent
|
||||
//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
|
||||
if ($fp) {
|
||||
//get the domain using the $domain_uuid
|
||||
$tmp_domain = $_SESSION['domains'][$domain_uuid]['domain_name'];
|
||||
//syntax
|
||||
//callcenter_config tier add [queue_name] [agent_name] [level] [position]
|
||||
//callcenter_config tier set state [queue_name] [agent_name] [state]
|
||||
//callcenter_config tier set level [queue_name] [agent_name] [level]
|
||||
//callcenter_config tier set position [queue_name] [agent_name] [position]
|
||||
//add the agent
|
||||
$cmd = "api callcenter_config tier add ".$queue_name."@".$tmp_domain." ".$agent_name."@".$tmp_domain." ".$tier_level." ".$tier_position;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set level
|
||||
$cmd = "api callcenter_config tier set level ".$queue_name."@".$tmp_domain." ".$agent_name."@".$tmp_domain." ".$tier_level;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
//agent set position
|
||||
$cmd = "api callcenter_config tier set position ".$queue_name."@".$tmp_domain." ".$agent_name."@".$tmp_domain." ".$tier_position;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
usleep(200);
|
||||
}
|
||||
|
||||
//update the database
|
||||
$sql = "update v_call_center_tiers set ";
|
||||
$sql .= "domain_uuid = '$domain_uuid', ";
|
||||
$sql .= "agent_name = '$agent_name', ";
|
||||
$sql .= "queue_name = '$queue_name', ";
|
||||
$sql .= "tier_level = '$tier_level', ";
|
||||
$sql .= "tier_position = '$tier_position' ";
|
||||
$sql .= "where call_center_tier_uuid = '$call_center_tier_uuid'";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//syncrhonize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
//look up queue uuid by queue name (ugh)
|
||||
$sql = "select call_center_queue_uuid from v_call_center_queues where queue_name = '".$queue_name."'";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$queue_uuid = $row["call_center_queue_uuid"];
|
||||
break;
|
||||
}
|
||||
unset($prep_statement);
|
||||
|
||||
$_SESSION["message"] = $text['message-update'];
|
||||
header("Location: call_center_queue_edit.php?id=".$queue_uuid);
|
||||
return;
|
||||
|
||||
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
|
||||
|
||||
//pre-populate the form
|
||||
if (count($_GET)>0 && $_POST["persistformvar"] != "true") {
|
||||
$sql = "select * from v_call_center_tiers ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_center_tier_uuid = '$call_center_tier_uuid' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
foreach ($result as &$row) {
|
||||
$agent_name = $row["agent_name"];
|
||||
$queue_name = $row["queue_name"];
|
||||
$tier_level = $row["tier_level"];
|
||||
$tier_position = $row["tier_position"];
|
||||
break; //limit to 1 row
|
||||
}
|
||||
unset ($prep_statement);
|
||||
}
|
||||
|
||||
|
||||
//show the header
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_center_tier_edit'];
|
||||
|
||||
//show the content
|
||||
echo "<form method='post' name='frm' action=''>\n";
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' width='30%' nowrap='nowrap'><b>".$text['header-call_center_tier_edit']."</b></td>\n";
|
||||
echo "<td width='70%' align='right'>";
|
||||
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick='history.back();' value='".$text['button-back']."'>";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td align='left' colspan='2'>\n";
|
||||
echo $text['description-call_center_tiers']."<br /><br />\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-agent_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
|
||||
//---- Begin Select List --------------------
|
||||
$sql = "SELECT * FROM v_users ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and user_enabled = 'true' ";
|
||||
$sql .= "order by username asc ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
|
||||
echo "<select id=\"agent_name\" name=\"agent_name\" class='formfld'>\n";
|
||||
echo "<option value=\"\"></option>\n";
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
//$catcount = count($result);
|
||||
foreach($result as $field) {
|
||||
if ($field[username] == $agent_name) {
|
||||
echo "<option value='".$field['username']."' selected='selected'>".$field['username']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo "<option value='".$field['username']."'>".$field['username']."</option>\n";
|
||||
}
|
||||
}
|
||||
echo "</select>";
|
||||
unset($sql, $result);
|
||||
//---- End Select List --------------------
|
||||
|
||||
echo "<br />\n";
|
||||
echo $text['description-agent']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-queue_name']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
|
||||
//---- Begin Select List --------------------
|
||||
$sql = "SELECT * FROM v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "order by queue_name asc ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
|
||||
echo "<select id=\"queue_name\" name=\"queue_name\" class='formfld'>\n";
|
||||
echo "<option value=\"\"></option>\n";
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
//$catcount = count($result);
|
||||
foreach($result as $field) {
|
||||
if ($field[queue_name] == $queue_name) {
|
||||
echo "<option value='".$field['queue_name']."' selected='selected'>".$field['queue_name']."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo "<option value='".$field['queue_name']."'>".$field['queue_name']."</option>\n";
|
||||
}
|
||||
}
|
||||
echo "</select>";
|
||||
unset($sql, $result);
|
||||
//---- End Select List --------------------
|
||||
|
||||
echo "<br />\n";
|
||||
echo $text['description-options']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-tier_level']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='tier_level'>\n";
|
||||
//echo " <option value=''></option>\n";
|
||||
|
||||
if ($tier_level == "0") {
|
||||
echo " <option value='0' selected='selected' >0</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='0'>0</option>\n";
|
||||
}
|
||||
|
||||
if ($tier_level == "1") {
|
||||
echo " <option value='1' selected='selected' >1</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='1'>1</option>\n";
|
||||
}
|
||||
if ($tier_level == "2") {
|
||||
echo " <option value='2' selected='selected' >2</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='2'>2</option>\n";
|
||||
}
|
||||
if ($tier_level == "3") {
|
||||
echo " <option value='3' selected='selected' >3</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='3'>3</option>\n";
|
||||
}
|
||||
if ($tier_level == "4") {
|
||||
echo " <option value='4' selected='selected' >4</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='4'>4</option>\n";
|
||||
}
|
||||
if ($tier_level == "5") {
|
||||
echo " <option value='5' selected='selected' >5</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='5'>5</option>\n";
|
||||
}
|
||||
if ($tier_level == "6") {
|
||||
echo " <option value='6' selected='selected' >6</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='6'>6</option>\n";
|
||||
}
|
||||
if ($tier_level == "7") {
|
||||
echo " <option value='7' selected='selected' >7</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='7'>7</option>\n";
|
||||
}
|
||||
if ($tier_level == "8") {
|
||||
echo " <option value='8' selected='selected' >8</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='8'>8</option>\n";
|
||||
}
|
||||
if ($tier_level == "9") {
|
||||
echo " <option value='9' selected='selected' >9</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='9'>9</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-tier_level']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
|
||||
echo " ".$text['label-tier_position']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <select class='formfld' name='tier_position'>\n";
|
||||
//echo " <option value=''></option>\n";
|
||||
if ($tier_position == "1") {
|
||||
echo " <option value='1' selected='selected' >1</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='1'>1</option>\n";
|
||||
}
|
||||
if ($tier_position == "2") {
|
||||
echo " <option value='2' selected='selected' >2</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='2'>2</option>\n";
|
||||
}
|
||||
if ($tier_position == "3") {
|
||||
echo " <option value='3' selected='selected' >3</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='3'>3</option>\n";
|
||||
}
|
||||
if ($tier_position == "4") {
|
||||
echo " <option value='4' selected='selected' >4</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='4'>4</option>\n";
|
||||
}
|
||||
if ($tier_position == "5") {
|
||||
echo " <option value='5' selected='selected' >5</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='5'>5</option>\n";
|
||||
}
|
||||
if ($tier_position == "6") {
|
||||
echo " <option value='6' selected='selected' >6</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='6'>6</option>\n";
|
||||
}
|
||||
if ($tier_position == "7") {
|
||||
echo " <option value='7' selected='selected' >7</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='7'>7</option>\n";
|
||||
}
|
||||
if ($tier_position == "8") {
|
||||
echo " <option value='8' selected='selected' >8</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='8'>8</option>\n";
|
||||
}
|
||||
if ($tier_position == "9") {
|
||||
echo " <option value='9' selected='selected' >9</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='9'>9</option>\n";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo $text['description-tier_position']."\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo " <td colspan='2' align='right'>\n";
|
||||
echo " <input type='hidden' name='call_center_tier_uuid' value='$call_center_tier_uuid'>\n";
|
||||
echo " <br>";
|
||||
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</form>";
|
||||
|
||||
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
+29
-60
@@ -17,73 +17,42 @@
|
||||
|
||||
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-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//includes
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_edit')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//get the variables
|
||||
$cmd = $_GET['cmd'];
|
||||
|
||||
//pre-populate the form
|
||||
if (is_array($_GET) && is_uuid($_GET["id"]) && $_POST["persistformvar"] != "true") {
|
||||
$call_center_queue_uuid = $_GET["id"];
|
||||
$sql = "select queue_extension from v_call_center_queues ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and call_center_queue_uuid = :call_center_queue_uuid ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['call_center_queue_uuid'] = $call_center_queue_uuid;
|
||||
$database = new database;
|
||||
$queue_extension = $database->select($sql, $parameters, 'column');
|
||||
unset($sql, $parameters);
|
||||
}
|
||||
|
||||
//validate the variables
|
||||
switch ($cmd) {
|
||||
case "load":
|
||||
//allow the command
|
||||
break;
|
||||
case "unload":
|
||||
//allow the command
|
||||
break;
|
||||
case "reload":
|
||||
//allow the command
|
||||
break;
|
||||
default:
|
||||
unset($cmd);
|
||||
}
|
||||
$cmd = $_GET['cmd'];
|
||||
$rdr = $_GET['rdr'];
|
||||
|
||||
//connect to event socket
|
||||
if (isset($queue_extension) && isset($cmd)) {
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$response = event_socket_request($fp, 'api reloadxml');
|
||||
$response = event_socket_request($fp, 'api callcenter_config queue '.$cmd. ' '.$queue_extension."@".$_SESSION["domain_name"]);
|
||||
fclose($fp);
|
||||
}
|
||||
else {
|
||||
$response = '';
|
||||
}
|
||||
}
|
||||
|
||||
//send the redirect
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$response = event_socket_request($fp, 'api reloadxml');
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
fclose($fp);
|
||||
}
|
||||
else {
|
||||
$response = '';
|
||||
}
|
||||
if ($rdr == "false") {
|
||||
//redirect false
|
||||
echo $response;
|
||||
}
|
||||
else {
|
||||
$_SESSION["message"] = $response;
|
||||
header("Location: call_center_queues.php?savemsg=".urlencode($response));
|
||||
|
||||
?>
|
||||
}
|
||||
?>
|
||||
@@ -1,640 +1,224 @@
|
||||
<?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>
|
||||
Copyright (C) 2015 - 2021
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* cache class provides an abstracted cache
|
||||
*
|
||||
* @method string dialplan - builds the dialplan for call center
|
||||
*/
|
||||
//define the call center class
|
||||
if (!class_exists('call_center')) {
|
||||
class call_center {
|
||||
/**
|
||||
* define the variables
|
||||
*/
|
||||
public $domain_uuid;
|
||||
public $call_center_queue_uuid;
|
||||
public $dialplan_uuid;
|
||||
public $queue_name;
|
||||
public $queue_description;
|
||||
public $destination_number;
|
||||
public $queue_cc_exit_keys;
|
||||
|
||||
/**
|
||||
* declare private variables
|
||||
*/
|
||||
private $app_name;
|
||||
private $app_uuid;
|
||||
private $permission_prefix;
|
||||
private $list_page;
|
||||
private $table;
|
||||
private $uuid_prefix;
|
||||
|
||||
/**
|
||||
* Called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
//assign private variables
|
||||
$this->app_name = 'call_center';
|
||||
$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
|
||||
* @var string $value string to be cached
|
||||
*/
|
||||
public function dialplan() {
|
||||
|
||||
//delete previous dialplan
|
||||
if (is_uuid($this->dialplan_uuid)) {
|
||||
//build delete array
|
||||
$array['dialplans'][0]['dialplan_uuid'] = $this->dialplan_uuid;
|
||||
$array['dialplans'][0]['domain_uuid'] = $this->domain_uuid;
|
||||
$array['dialplan_details'][0]['dialplan_uuid'] = $this->dialplan_uuid;
|
||||
$array['dialplan_details'][0]['domain_uuid'] = $this->domain_uuid;
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('dialplan_delete', 'temp');
|
||||
$p->add('dialplan_detail_delete', 'temp');
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('dialplan_delete', 'temp');
|
||||
$p->delete('dialplan_detail_delete', 'temp');
|
||||
}
|
||||
|
||||
//build the dialplan array
|
||||
$dialplan["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
|
||||
$dialplan["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_name"] = ($this->queue_name != '') ? $this->queue_name : format_phone($this->destination_number);
|
||||
$dialplan["dialplan_number"] = $this->destination_number;
|
||||
$dialplan["dialplan_context"] = $_SESSION['domain_name'];
|
||||
$dialplan["dialplan_continue"] = "false";
|
||||
$dialplan["dialplan_order"] = "210";
|
||||
$dialplan["dialplan_enabled"] = "true";
|
||||
$dialplan["dialplan_description"] = $this->queue_description;
|
||||
$dialplan_detail_order = 10;
|
||||
|
||||
//add the public condition
|
||||
$y = 1;
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "\${caller_id_name}";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^([^#]+#)(.*)$";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "never";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "caller_id_name=$2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "hangup_after_bridge=true";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
|
||||
if (strlen($this->queue_cid_prefix) > 0) {
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "effective_caller_id_name=".$this->queue_cid_prefix."#\${caller_id_name}";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_greeting) > 0) {
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "1000";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_greeting) > 0) {
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "".$this->queue_greeting;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
|
||||
if (strlen($this->queue_cc_exit_keys) > 0) {
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "cc_exit_keys=".$this->queue_cc_exit_keys;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "callcenter";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $this->queue_name.'@'.$_SESSION["domain_name"];
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
|
||||
if (strlen($this->queue_timeout_action) > 0) {
|
||||
$action_array = explode(":",$this->queue_timeout_action);
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = $action_array[0];
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($this->queue_timeout_action, strlen($action_array[0])+1, strlen($this->queue_timeout_action));
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
|
||||
//prepare the array
|
||||
$array["dialplans"][0] = $dialplan;
|
||||
|
||||
//add temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add("dialplan_add", 'temp');
|
||||
$p->add("dialplan_detail_add", 'temp');
|
||||
$p->add("dialplan_edit", 'temp');
|
||||
$p->add("dialplan_detail_edit", 'temp');
|
||||
|
||||
//save the dialplan
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array);
|
||||
$dialplan_response = $database->message;
|
||||
$this->dialplan_uuid = $dialplan_response['uuid'];
|
||||
unset($array);
|
||||
|
||||
//remove temporary permissions
|
||||
$p->delete("dialplan_add", 'temp');
|
||||
$p->delete("dialplan_detail_add", 'temp');
|
||||
$p->delete("dialplan_edit", 'temp');
|
||||
$p->delete("dialplan_detail_edit", 'temp');
|
||||
|
||||
//build call center queue update array
|
||||
$array['call_center_queues'][0]['call_center_queue_uuid'] = $this->call_center_queue_uuid;
|
||||
$array['call_center_queues'][0]['dialplan_uuid'] = $this->dialplan_uuid;
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('call_center_queue_edit', 'temp');
|
||||
|
||||
//execute update
|
||||
$database = new database;
|
||||
$database->app_name = 'call_centers';
|
||||
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('call_center_queue_edit', 'temp');
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("dialplan:".$_SESSION['domain_name']);
|
||||
|
||||
//return the dialplan_uuid
|
||||
return $dialplan_response;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* delete records
|
||||
*/
|
||||
public function delete_queues($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'call_center_queue_';
|
||||
$this->list_page = 'call_center_queues.php';
|
||||
$this->table = 'call_center_queues';
|
||||
$this->uuid_prefix = 'call_center_queue_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//filter out unchecked, build where clause for below
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//get necessary details
|
||||
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).") ";
|
||||
$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) {
|
||||
$call_center_queues[$row['uuid']]['dialplan_uuid'] = $row['dialplan_uuid'];
|
||||
$call_center_queues[$row['uuid']]['queue_name'] = $row['queue_name'];
|
||||
$call_center_queues[$row['uuid']]['queue_extension'] = $row['queue_extension'];
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//build the delete array
|
||||
$x = 0;
|
||||
foreach ($call_center_queues as $call_center_queue_uuid => $call_center_queue) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $call_center_queue_uuid;
|
||||
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['dialplans'][$x]['dialplan_uuid'] = $call_center_queue['dialplan_uuid'];
|
||||
$array['dialplans'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['dialplan_details'][$x]['dialplan_uuid'] = $call_center_queue['dialplan_uuid'];
|
||||
$array['dialplan_details'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_center_tiers'][$x][$this->uuid_prefix.'uuid'] = $call_center_queue_uuid;
|
||||
$array['call_center_tiers'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$x++;
|
||||
$array['call_center_tiers'][$x]['queue_name'] = $call_center_queue['queue_extension']."@".$_SESSION['domain_name'];
|
||||
$array['call_center_tiers'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$x++;
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//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"];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('call_center_tier_delete', 'temp');
|
||||
$p->add('dialplan_delete', 'temp');
|
||||
$p->add('dialplan_detail_delete', 'temp');
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('call_center_tier_delete', 'temp');
|
||||
$p->delete('dialplan_delete', 'temp');
|
||||
$p->delete('dialplan_detail_delete', 'temp');
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("dialplan:".$_SESSION["domain_name"]);
|
||||
remove_config_from_cache('configuration:callcenter.conf');
|
||||
|
||||
//clear the destinations session array
|
||||
if (isset($_SESSION['destinations']['array'])) {
|
||||
unset($_SESSION['destinations']['array']);
|
||||
}
|
||||
|
||||
//synchronize configuration
|
||||
save_call_center_xml();
|
||||
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function delete_agents($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'call_center_agent_';
|
||||
$this->list_page = 'call_center_agents.php';
|
||||
$this->table = 'call_center_agents';
|
||||
$this->uuid_prefix = 'call_center_agent_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'delete')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//delete multiple records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//filter out unchecked
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = $record['uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
//build the delete array
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
foreach ($uuids as $x => $uuid) {
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid;
|
||||
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['call_center_tiers'][$x]['call_center_agent_uuid'] = $uuid;
|
||||
$array['call_center_tiers'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
}
|
||||
|
||||
//delete the checked rows
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
|
||||
//delete the agent in the switch
|
||||
if ($fp) {
|
||||
foreach ($uuids as $uuid) {
|
||||
$cmd = "api callcenter_config agent del ".$uuid;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
}
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('call_center_tier_delete', 'temp');
|
||||
|
||||
//execute delete
|
||||
$database = new database;
|
||||
$database->app_name = $this->app_name;
|
||||
$database->app_uuid = $this->app_uuid;
|
||||
$database->delete($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('call_center_tier_delete', 'temp');
|
||||
|
||||
//synchronize configuration
|
||||
save_call_center_xml();
|
||||
remove_config_from_cache('configuration:callcenter.conf');
|
||||
|
||||
//set message
|
||||
message::add($text['message-delete']);
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* copy records
|
||||
*/
|
||||
public function copy_queues($records) {
|
||||
|
||||
//assign private variables
|
||||
$this->permission_prefix = 'call_center_queue_';
|
||||
$this->list_page = 'call_center_queues.php';
|
||||
$this->table = 'call_center_queues';
|
||||
$this->uuid_prefix = 'call_center_queue_';
|
||||
|
||||
if (permission_exists($this->permission_prefix.'add')) {
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//copy the checked records
|
||||
if (is_array($records) && @sizeof($records) != 0) {
|
||||
|
||||
//get checked records
|
||||
foreach ($records as $x => $record) {
|
||||
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
|
||||
$uuids[] = "'".$record['uuid']."'";
|
||||
}
|
||||
}
|
||||
|
||||
//create insert array from existing data
|
||||
if (is_array($uuids) && @sizeof($uuids) != 0) {
|
||||
|
||||
//primary table
|
||||
$sql = "select * from v_".$this->table." ";
|
||||
$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) {
|
||||
$y = 0;
|
||||
foreach ($rows as $x => $row) {
|
||||
$new_call_center_queue_uuid = uuid();
|
||||
$new_dialplan_uuid = uuid();
|
||||
|
||||
//copy data
|
||||
$array[$this->table][$x] = $row;
|
||||
|
||||
//overwrite
|
||||
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $new_call_center_queue_uuid;
|
||||
$array[$this->table][$x]['dialplan_uuid'] = $new_dialplan_uuid;
|
||||
$array[$this->table][$x]['queue_description'] = trim($row['queue_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
//call center tiers sub table
|
||||
$sql_2 = "select * from v_call_center_tiers where call_center_queue_uuid = :call_center_queue_uuid";
|
||||
$parameters_2['call_center_queue_uuid'] = $row['call_center_queue_uuid'];
|
||||
$database = new database;
|
||||
$rows_2 = $database->select($sql_2, $parameters_2, 'all');
|
||||
if (is_array($rows_2) && @sizeof($rows_2) != 0) {
|
||||
foreach ($rows_2 as $row_2) {
|
||||
|
||||
//copy data
|
||||
$array['call_center_tiers'][$y] = $row_2;
|
||||
|
||||
//overwrite
|
||||
$array['call_center_tiers'][$y]['call_center_tier_uuid'] = uuid();
|
||||
$array['call_center_tiers'][$y]['call_center_queue_uuid'] = $new_call_center_queue_uuid;
|
||||
|
||||
$y++;
|
||||
}
|
||||
}
|
||||
unset($sql_2, $parameters_2, $rows_2, $row_2);
|
||||
|
||||
//call center queue dialplan record
|
||||
$sql_3 = "select * from v_dialplans where dialplan_uuid = :dialplan_uuid";
|
||||
$parameters_3['dialplan_uuid'] = $row['dialplan_uuid'];
|
||||
$database = new database;
|
||||
$dialplan = $database->select($sql_3, $parameters_3, 'row');
|
||||
if (is_array($dialplan) && @sizeof($dialplan) != 0) {
|
||||
|
||||
//copy data
|
||||
$array['dialplans'][$x] = $dialplan;
|
||||
|
||||
//overwrite
|
||||
$array['dialplans'][$x]['dialplan_uuid'] = $new_dialplan_uuid;
|
||||
$dialplan_xml = $dialplan['dialplan_xml'];
|
||||
$dialplan_xml = str_replace($row['call_center_queue_uuid'], $new_call_center_queue_uuid, $dialplan_xml); //replace source call_center_queue_uuid with new
|
||||
$dialplan_xml = str_replace($dialplan['dialplan_uuid'], $new_dialplan_uuid, $dialplan_xml); //replace source dialplan_uuid with new
|
||||
$array['dialplans'][$x]['dialplan_xml'] = $dialplan_xml;
|
||||
$array['dialplans'][$x]['dialplan_description'] = trim($dialplan['dialplan_description'].' ('.$text['label-copy'].')');
|
||||
|
||||
}
|
||||
unset($sql_3, $parameters_3, $dialplan);
|
||||
}
|
||||
}
|
||||
unset($sql, $parameters, $rows, $row);
|
||||
}
|
||||
|
||||
//save the changes and set the message
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('call_center_tier_add', 'temp');
|
||||
$p->add('dialplan_add', '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('call_center_tier_add', 'temp');
|
||||
$p->delete('dialplan_add', 'temp');
|
||||
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("dialplan:".$_SESSION["domain_name"]);
|
||||
|
||||
//set message
|
||||
message::add($text['message-copy']);
|
||||
|
||||
}
|
||||
unset($records);
|
||||
}
|
||||
|
||||
}
|
||||
} //method
|
||||
|
||||
} //class
|
||||
}
|
||||
|
||||
/*
|
||||
$o = new call_center;
|
||||
$c->domain_uuid = "";
|
||||
$c->dialplan_uuid = "";
|
||||
$c->queue_name = "";
|
||||
$c->queue_cid_prefix = "";
|
||||
$c->queue_timeout_action = "";
|
||||
$c->queue_description = "";
|
||||
$c->destination_number = "";
|
||||
$c->queue_cc_exit_keys = "";
|
||||
$c->dialplan();
|
||||
*/
|
||||
|
||||
?>
|
||||
<?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>
|
||||
Copyright (C) 2015
|
||||
All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* cache class provides an abstracted cache
|
||||
*
|
||||
* @method string dialplan - builds the dialplan for call center
|
||||
*/
|
||||
//define the call center class
|
||||
if (!class_exists('call_center')) {
|
||||
class call_center {
|
||||
/**
|
||||
* define the variables
|
||||
*/
|
||||
public $domain_uuid;
|
||||
public $call_center_queue_uuid;
|
||||
public $dialplan_uuid;
|
||||
public $queue_name;
|
||||
public $queue_description;
|
||||
public $destination_number;
|
||||
|
||||
/**
|
||||
* Called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
//place holder
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @var string $value string to be cached
|
||||
*/
|
||||
public function dialplan() {
|
||||
|
||||
//delete previous dialplan
|
||||
if (strlen($this->dialplan_uuid) > 0) {
|
||||
//delete the previous dialplan
|
||||
$sql = "delete from v_dialplans ";
|
||||
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
|
||||
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
|
||||
$this->db->exec($sql);
|
||||
|
||||
$sql = "delete from v_dialplan_details ";
|
||||
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
|
||||
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
|
||||
$this->db->exec($sql);
|
||||
unset($sql);
|
||||
}
|
||||
unset($prep_statement);
|
||||
|
||||
//build the dialplan array
|
||||
$dialplan["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
|
||||
$dialplan["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_name"] = ($this->queue_name != '') ? $this->queue_name : format_phone($this->destination_number);
|
||||
$dialplan["dialplan_number"] = $this->destination_number;
|
||||
$dialplan["dialplan_context"] = $_SESSION['context'];
|
||||
$dialplan["dialplan_continue"] = "false";
|
||||
$dialplan["dialplan_order"] = "210";
|
||||
$dialplan["dialplan_enabled"] = "true";
|
||||
$dialplan["dialplan_description"] = $this->queue_description;
|
||||
$dialplan_detail_order = 10;
|
||||
|
||||
//add the public condition
|
||||
$y = 1;
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "\${caller_id_name}";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^([^#]+#)(.*)$";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "never";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "caller_id_name=$2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "hangup_after_bridge=true";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
if (strlen($this->queue_cid_prefix) > 0) {
|
||||
$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";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "effective_caller_id_name=".$this->queue_cid_prefix."#\${caller_id_name}";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "callcenter";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $this->queue_name.'@'.$_SESSION["domain_name"];
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
if (strlen($this->queue_timeout_action) > 0) {
|
||||
$action_array = explode(":",$this->queue_timeout_action);
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = $action_array[0];
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($this->queue_timeout_action, strlen($action_array[0])+1, strlen($this->queue_timeout_action));
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
$y++;
|
||||
}
|
||||
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
|
||||
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
|
||||
|
||||
//add the dialplan permission
|
||||
$p = new permissions;
|
||||
$p->add("dialplan_add", 'temp');
|
||||
$p->add("dialplan_detail_add", 'temp');
|
||||
$p->add("dialplan_edit", 'temp');
|
||||
$p->add("dialplan_detail_edit", 'temp');
|
||||
|
||||
//save the dialplan
|
||||
$orm = new orm;
|
||||
$orm->name('dialplans');
|
||||
$orm->save($dialplan);
|
||||
$dialplan_response = $orm->message;
|
||||
$this->dialplan_uuid = $dialplan_response['uuid'];
|
||||
|
||||
//if new dialplan uuid then update the call center queue
|
||||
$sql = "update v_call_center_queues ";
|
||||
$sql .= "set dialplan_uuid = '".$this->dialplan_uuid."' ";
|
||||
$sql .= "where call_center_queue_uuid = '".$this->call_center_queue_uuid."' ";
|
||||
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
|
||||
$this->db->exec($sql);
|
||||
unset($sql);
|
||||
|
||||
//remove the temporary permission
|
||||
$p->delete("dialplan_add", 'temp');
|
||||
$p->delete("dialplan_detail_add", 'temp');
|
||||
$p->delete("dialplan_edit", 'temp');
|
||||
$p->delete("dialplan_detail_edit", 'temp');
|
||||
|
||||
//synchronize the xml config
|
||||
save_dialplan_xml();
|
||||
|
||||
//clear the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("dialplan:".$_SESSION['context']);
|
||||
|
||||
//return the dialplan_uuid
|
||||
return $dialplan_response;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
$o = new call_center;
|
||||
$c->domain_uuid = "";
|
||||
$c->dialplan_uuid = "";
|
||||
$c->queue_name = "";
|
||||
$c->queue_cid_prefix = "";
|
||||
$c->queue_timeout_action = "";
|
||||
$c->queue_description = "";
|
||||
$c->destination_number = "";
|
||||
$c->dialplan();
|
||||
*/
|
||||
|
||||
?>
|
||||
@@ -1,209 +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) 2017-2019
|
||||
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";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_center_queue_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_centers');
|
||||
|
||||
//get http variables and set as php variables
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//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) {
|
||||
//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);
|
||||
|
||||
//set the call center status
|
||||
$cmd = "api callcenter_config agent set status ".$row['id']." '".$row['agent_status']."'";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
//set the agent status to available and assign the agent to the queue with the tier
|
||||
if ($row['agent_status'] == 'Available') {
|
||||
//assign the agent to the queue
|
||||
$cmd = "api callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
|
||||
//un-assign the agent from the queue
|
||||
if ($row['agent_status'] == 'Logged Out') {
|
||||
$cmd = "api callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
}
|
||||
usleep(200);
|
||||
unset($parameters);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//redirect
|
||||
header('Location: '.PROJECT_PATH.'/core/dashboard/');
|
||||
exit;
|
||||
}
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config tier list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the call center queues from the database
|
||||
$sql = "select * from v_call_center_queues ";
|
||||
$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);
|
||||
|
||||
//get the agents from the database
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
$sql .= "where user_uuid = :user_uuid ";
|
||||
$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];
|
||||
}
|
||||
unset($sql, $parameters);
|
||||
|
||||
//update the queue status
|
||||
$x = 0;
|
||||
foreach ($call_center_queues as $queue) {
|
||||
$call_center_queues[$x]['queue_status'] = 'Logged Out';
|
||||
foreach ($call_center_tiers as $tier) {
|
||||
if ($queue['queue_extension'] .'@'. $_SESSION['user']['domain_name'] == $tier['queue'] && $agent['call_center_agent_uuid'] == $tier['agent']) {
|
||||
$call_center_queues[$x]['queue_status'] = $agent['agent_status'];
|
||||
}
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
|
||||
//includes the header
|
||||
require_once "resources/header.php";
|
||||
|
||||
//radio button cycle script
|
||||
echo "<script>\n";
|
||||
echo " function get_selected(radio_group) {\n";
|
||||
echo " for (var i = 0; i < radio_group.length; i++) {\n";
|
||||
echo " if (radio_group[i].checked) { return i; }\n";
|
||||
echo " }\n";
|
||||
echo " return 0;\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " function cycle(radio_group_name) {\n";
|
||||
echo " var radios = document.getElementsByName(radio_group_name);\n";
|
||||
echo " var i = get_selected(radios);\n";
|
||||
echo " if (i+1 == radios.length) {\n";
|
||||
echo " radios[0].checked = true;\n";
|
||||
echo " }\n";
|
||||
echo " else {\n";
|
||||
echo " radios[i+1].checked = true;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
echo "</script>\n";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar sub'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_center_queues'].($agent['agent_name'] != '' ? " </b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"list_form_submit('form_list_call_center_agent_dashboard');"]);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
||||
echo "<form id='form_list_call_center_agent_dashboard' method='post'>\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo " <th>".$text['label-queue_name']."</th>\n";
|
||||
echo " <th class='shrink'>".$text['label-status']."</th>\n";
|
||||
// echo " <th>".$text['label-options']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
$x = 0;
|
||||
foreach ($call_center_queues as $row) {
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
echo "<tr class='list-row'>\n";
|
||||
echo " <td ".$onclick.">".escape($row['queue_name'])."</td>\n";
|
||||
// echo " <td>";
|
||||
// if ($row['queue_status'] == "Available") {
|
||||
// echo $text['option-available'];
|
||||
// }
|
||||
// if ($row['queue_status'] == "Logged Out") {
|
||||
// echo $text['option-logged_out'];
|
||||
// }
|
||||
// echo " </td>\n";
|
||||
echo " <td class='no-wrap right'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][queue_extension]' value='".escape($row['queue_extension'])."'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($agent['agent_name'])."'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][id]' value='".escape($agent['call_center_agent_uuid'])."'>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)."> ".$text['option-available']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)."> ".$text['option-logged_out']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null)."> ".$text['option-on_break']."</label>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
|
||||
}
|
||||
unset($call_center_queues);
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<br />\n";
|
||||
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
||||
echo "</form>\n";
|
||||
|
||||
?>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
$array['dashboard'][$x]['dashboard_uuid'] = '9083305a-ebb4-4b67-bb9b-8c09cf030261';
|
||||
$array['dashboard'][$x]['dashboard_name'] = 'Call Center Agents';
|
||||
$array['dashboard'][$x]['dashboard_path'] = 'app/call_centers/resources/dashboard/call_center_agents.php';
|
||||
$array['dashboard'][$x]['dashboard_order'] = '180';
|
||||
$array['dashboard'][$x]['dashboard_enabled'] = 'false';
|
||||
$array['dashboard'][$x]['dashboard_description'] = 'Status for agent in a call center.';
|
||||
$y = 0;
|
||||
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_group_uuid'] = '22d8937c-a9b3-4458-b34c-0ebeda15ffad';
|
||||
$array['dashboard'][$x]['dashboard_groups'][$y]['dashboard_uuid'] = '9083305a-ebb4-4b67-bb9b-8c09cf030261';
|
||||
$array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'agent';
|
||||
|
||||
?>
|
||||
+15
-55
@@ -25,66 +25,26 @@
|
||||
*/
|
||||
|
||||
// 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 ( 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"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
|
||||
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
|
||||
//echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."<br />\n";
|
||||
//echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."<br />\n";
|
||||
//echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."<br />\n";
|
||||
|
||||
// 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"]);
|
||||
// if the project directory exists then add it to the include path otherwise add the document root to the include path
|
||||
if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' );
|
||||
}
|
||||
$_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"]);
|
||||
else {
|
||||
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
|
||||
}
|
||||
|
||||
?>
|
||||
+34
-100
@@ -5,64 +5,36 @@
|
||||
$apps[$x]['uuid'] = "b1b70f85-6b42-429b-8c5a-60c8b02b7d14";
|
||||
$apps[$x]['category'] = "";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.0";
|
||||
$apps[$x]['version'] = "";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "Direct calls between two destinations by calling a feature code.";
|
||||
$apps[$x]['description']['en-gb'] = "Direct calls between two destinations by calling a feature code.";
|
||||
$apps[$x]['description']['ar-eg'] = "";
|
||||
$apps[$x]['description']['de-at'] = "Anrufe zwischen zwei Ziele anhand eines Funktions-Codes steuern.";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-de'] = "Anrufe zwischen zwei Ziele anhand eines Funktions-Codes steuern.";
|
||||
$apps[$x]['description']['en-us'] = "";
|
||||
$apps[$x]['description']['es-cl'] = "";
|
||||
$apps[$x]['description']['es-mx'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['de-de'] = "";
|
||||
$apps[$x]['description']['de-ch'] = "";
|
||||
$apps[$x]['description']['de-at'] = "";
|
||||
$apps[$x]['description']['fr-fr'] = "";
|
||||
$apps[$x]['description']['he-il'] = "";
|
||||
$apps[$x]['description']['it-it'] = "";
|
||||
$apps[$x]['description']['nl-nl'] = "Directe oproepen tussen twee bestemmingen via een feature code.";
|
||||
$apps[$x]['description']['pl-pl'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
$apps[$x]['description']['fr-ca'] = "";
|
||||
$apps[$x]['description']['fr-ch'] = "";
|
||||
$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'] = "";
|
||||
$apps[$x]['description']['pt-br'] = "";
|
||||
|
||||
//destination details
|
||||
$y=0;
|
||||
$y = 0;
|
||||
$apps[$x]['destinations'][$y]['type'] = "sql";
|
||||
$apps[$x]['destinations'][$y]['label'] = "call_flows";
|
||||
$apps[$x]['destinations'][$y]['name'] = "call_flows";
|
||||
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as destination, call_flow_context as context from v_call_flows ";
|
||||
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
|
||||
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' ";
|
||||
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_name asc";
|
||||
$apps[$x]['destinations'][$y]['field']['call_flow_uuid'] = "call_flow_uuid";
|
||||
$apps[$x]['destinations'][$y]['field']['context'] = "call_flow_context";
|
||||
$apps[$x]['destinations'][$y]['field']['name'] = "call_flow_name";
|
||||
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
|
||||
$apps[$x]['destinations'][$y]['field']['extension'] = "destination";
|
||||
$apps[$x]['destinations'][$y]['field']['context'] = "context";
|
||||
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name}";
|
||||
$y++;
|
||||
$apps[$x]['destinations'][$y]['type'] = "sql";
|
||||
$apps[$x]['destinations'][$y]['label'] = "call_flows";
|
||||
$apps[$x]['destinations'][$y]['name'] = "call_flows";
|
||||
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as extension, call_flow_feature_code as destination, call_flow_context as context from v_call_flows ";
|
||||
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
|
||||
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_extension asc";
|
||||
$apps[$x]['destinations'][$y]['field']['uuid'] = "uuid";
|
||||
$apps[$x]['destinations'][$y]['field']['name'] = "name";
|
||||
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
|
||||
$apps[$x]['destinations'][$y]['field']['extension'] = "extension";
|
||||
$apps[$x]['destinations'][$y]['field']['context'] = "context";
|
||||
$apps[$x]['destinations'][$y]['field']['destination'] = "call_flow_extension";
|
||||
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
|
||||
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name}";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$y = 0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_flow_view";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "b0939384-7055-44e8-8b4c-9f72293e1878";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
@@ -80,25 +52,11 @@
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_flow_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_flow_context";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "call_flow_destinations";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "admin";
|
||||
$y++;
|
||||
|
||||
//cache details
|
||||
$apps[$x]['cache']['key'] = "dialplan.\${call_flow_context}";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_call_flows";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$z=0;
|
||||
$y = 0; //table array index
|
||||
$z = 0; //field array index
|
||||
$apps[$x]['db'][$y]['table'] = "v_call_flows";
|
||||
$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";
|
||||
@@ -117,85 +75,61 @@
|
||||
$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'] = "";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_dialplans";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "dialplan_uuid";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_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'] = "Enter the name.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the name.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_extension";
|
||||
$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 extension number.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the extension number.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_feature_code";
|
||||
$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 feature code.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the feature code.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_context";
|
||||
$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 context.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the context.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_status";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the status.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Select the status.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_pin_number";
|
||||
$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 PIN number.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the PIN number.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_label";
|
||||
$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 label.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_sound";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the sound.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the label.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_app";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the application.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the application.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the application data.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the application data.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_flow_alternate_label";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_flow_anti_label";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_label";
|
||||
$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 alternate label.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the alternate label.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_alternate_sound";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_app";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the alternate sound.";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the alternate application.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_flow_alternate_app";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_flow_anti_app";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the alternate application.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_flow_alternate_data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_flow_anti_data";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the alernate application data.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_enabled";
|
||||
$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'] = "Select whether to enable or disable the call flow";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the alernate application data.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_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'] = "Enter the description.";
|
||||
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the description.";
|
||||
$z++;
|
||||
?>
|
||||
|
||||
@@ -1,38 +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) 2020
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
|
||||
//process this only one time
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//update the dialplan order
|
||||
$database = new database;
|
||||
$sql = "update v_call_flows set call_flow_enabled = 'true' where call_flow_enabled is null;\n";
|
||||
$database->execute($sql);
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
+384
-690
File diff suppressed because it is too large
Load Diff
+15
-28
@@ -1,31 +1,18 @@
|
||||
<?php
|
||||
|
||||
$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']['de-at'] = "Anruf Steuerung";
|
||||
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
|
||||
$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']['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']['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']['ru-ru'] = "Переключатель вызовов";
|
||||
$apps[$x]['menu'][$y]['title']['sv-se'] = "Samtalsflöden";
|
||||
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Потоки дзвінків";
|
||||
$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]['path'] = "/app/call_flows/call_flows.php";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][$y]['groups'][] = "admin";
|
||||
$apps[$x]['menu'][0]['title']['en-us'] = "Call Flows";
|
||||
$apps[$x]['menu'][0]['title']['es-cl'] = "Flujo de Llamada";
|
||||
$apps[$x]['menu'][0]['title']['fr-fr'] = "cinématiques d'Appel";
|
||||
$apps[$x]['menu'][0]['title']['fr-ca'] = "Circulation d'Appel";
|
||||
$apps[$x]['menu'][0]['title']['pl'] = "Przepływ rozmów";
|
||||
$apps[$x]['menu'][0]['title']['sv-se'] = "Samtalsflöden";
|
||||
$apps[$x]['menu'][0]['title']['uk'] = "Потоки дзвінків";
|
||||
$apps[$x]['menu'][0]['title']['de-at'] = "Anruf Steuerung";
|
||||
$apps[$x]['menu'][0]['uuid'] = "b0939384-7055-44e8-8b4c-9f72293e1878";
|
||||
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
|
||||
$apps[$x]['menu'][0]['category'] = "internal";
|
||||
$apps[$x]['menu'][0]['path'] = "/app/call_flows/call_flows.php";
|
||||
$apps[$x]['menu'][0]['groups'][] = "superadmin";
|
||||
$apps[$x]['menu'][0]['groups'][] = "admin";
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -0,0 +1,98 @@
|
||||
<?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>
|
||||
*/
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_flow_delete')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
if (count($_GET)>0) {
|
||||
$id = check_str($_GET["id"]);
|
||||
}
|
||||
|
||||
if (strlen($id)>0) {
|
||||
|
||||
//get the dialplan uuid
|
||||
$sql = "select * from v_call_flows ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_flow_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare($sql);
|
||||
$prep_statement->execute();
|
||||
while($row = $prep_statement->fetch(PDO::FETCH_ASSOC)) {
|
||||
$dialplan_uuid = $row['dialplan_uuid'];
|
||||
}
|
||||
|
||||
//delete call_flow
|
||||
$sql = "delete from v_call_flows ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and call_flow_uuid = '$id' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
unset($sql);
|
||||
|
||||
//delete the dialplan entry
|
||||
$sql = "delete from v_dialplans ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//delete the dialplan details
|
||||
$sql = "delete from v_dialplan_details ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
||||
$db->query($sql);
|
||||
unset($sql);
|
||||
|
||||
//syncrhonize configuration
|
||||
save_dialplan_xml();
|
||||
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
|
||||
//delete the dialplan context from memcache
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$switch_cmd = "memcache delete dialplan:".$_SESSION["context"]."@".$_SESSION['domain_name'];
|
||||
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$_SESSION["message"] = $text['message-delete'];
|
||||
header("Location: call_flows.php");
|
||||
return;
|
||||
|
||||
?>
|
||||
+411
-523
File diff suppressed because it is too large
Load Diff
+122
-253
@@ -17,287 +17,156 @@
|
||||
|
||||
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-2012
|
||||
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/paging.php";
|
||||
require_once "resources/check_auth.php";
|
||||
|
||||
//check permissions
|
||||
if (permission_exists('call_flow_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
require_once "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('call_flow_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get posted data
|
||||
if (is_array($_POST['call_flows'])) {
|
||||
$action = $_POST['action'];
|
||||
$search = $_POST['search'];
|
||||
$call_flows = $_POST['call_flows'];
|
||||
$toggle_field = $_POST['toggle_field'];
|
||||
}
|
||||
require_once "resources/header.php";
|
||||
$document['title'] = $text['title-call_flows'];
|
||||
|
||||
//process the http post data by action
|
||||
if ($action != '' && is_array($call_flows) && @sizeof($call_flows) != 0) {
|
||||
switch ($action) {
|
||||
case 'copy':
|
||||
if (permission_exists('call_flow_add')) {
|
||||
$obj = new call_flows;
|
||||
$obj->copy($call_flows);
|
||||
}
|
||||
break;
|
||||
case 'toggle':
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
$obj = new call_flows;
|
||||
$obj->toggle_field = $toggle_field;
|
||||
$obj->toggle($call_flows);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (permission_exists('call_flow_delete')) {
|
||||
$obj = new call_flows;
|
||||
$obj->delete($call_flows);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location: call_flows.php'.($search != '' ? '?search='.urlencode($search) : null));
|
||||
exit;
|
||||
}
|
||||
require_once "resources/paging.php";
|
||||
|
||||
//get variables used to control the order
|
||||
$order_by = $_GET["order_by"];
|
||||
$order = $_GET["order"];
|
||||
|
||||
//add the search term
|
||||
$search = strtolower($_GET["search"]);
|
||||
if (strlen($search) > 0) {
|
||||
$sql_search = "and (";
|
||||
$sql_search .= "lower(call_flow_name) like :search ";
|
||||
$sql_search .= "or lower(call_flow_extension) like :search ";
|
||||
$sql_search .= "or lower(call_flow_feature_code) like :search ";
|
||||
$sql_search .= "or lower(call_flow_context) like :search ";
|
||||
$sql_search .= "or lower(call_flow_pin_number) like :search ";
|
||||
$sql_search .= "or lower(call_flow_label) like :search ";
|
||||
$sql_search .= "or lower(call_flow_alternate_label) like :search ";
|
||||
$sql_search .= "or lower(call_flow_description) like :search ";
|
||||
$sql_search .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) from v_call_flows ";
|
||||
$sql .= "where true ";
|
||||
if ($_GET['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;
|
||||
$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_flow_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);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$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');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//create token
|
||||
$object = new token;
|
||||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//include header
|
||||
$document['title'] = $text['title-call_flows'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//javascript for toggle select box
|
||||
echo "<script language='javascript' type='text/javascript'>\n";
|
||||
echo " function toggle_select() {\n";
|
||||
echo " $('#call_flow_feature').fadeToggle(400, function() {\n";
|
||||
echo " document.getElementById('call_flow_feature').selectedIndex = 0;\n";
|
||||
echo " document.getElementById('call_flow_feature').focus();\n";
|
||||
echo " });\n";
|
||||
echo " }\n";
|
||||
echo "</script>\n";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-call_flows']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0 border='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='50%' align='left' nowrap='nowrap'><b>".$text['header-call_flows']."</b></td>\n";
|
||||
echo " <td width='50%' align='right'> </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td align='left' colspan='2'>\n";
|
||||
echo " ".$text['description-call_flows']."<br /><br />\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo "</table>\n";
|
||||
|
||||
//prepare to page the results
|
||||
$sql = "select count(*) as num_rows from v_call_flows ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$prep_statement = $db->prepare($sql);
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] > 0) {
|
||||
$num_rows = $row['num_rows'];
|
||||
}
|
||||
else {
|
||||
$num_rows = '0';
|
||||
}
|
||||
}
|
||||
|
||||
//prepare to page the results
|
||||
$rows_per_page = 10;
|
||||
$param = "";
|
||||
$page = $_GET['page'];
|
||||
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
||||
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
|
||||
$offset = $rows_per_page * $page;
|
||||
|
||||
//get the list
|
||||
$sql = "select * from v_call_flows ";
|
||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
||||
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
||||
$sql .= "limit $rows_per_page offset $offset ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll();
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo th_order_by('call_flow_status', $text['label-status'], $order_by, $order);
|
||||
//echo th_order_by('call_flow_name', $text['label-name'], $order_by, $order);
|
||||
echo th_order_by('call_flow_extension', $text['label-extension'], $order_by, $order);
|
||||
echo th_order_by('call_flow_feature_code', $text['label-feature_code'], $order_by, $order);
|
||||
//echo "<th>".$text['label-destination']."</th>\n";
|
||||
//echo "<th>".$text['label-alternate_destination']."</th>\n";
|
||||
echo th_order_by('call_flow_description', $text['label-description'], $order_by, $order);
|
||||
echo "<td class='list_control_icons'>";
|
||||
if (permission_exists('call_flow_add')) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'call_flow_edit.php']);
|
||||
}
|
||||
if (permission_exists('call_flow_add') && $call_flows) {
|
||||
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');"]);
|
||||
}
|
||||
if (permission_exists('call_flow_edit') && $call_flows) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display: none;','onclick'=>"toggle_select(); this.blur();"]);
|
||||
echo "<select class='formfld' style='display: none; width: auto;' id='call_flow_feature' onchange=\"if (this.selectedIndex != 0) { modal_open('modal-toggle','btn_toggle'); }\">";
|
||||
echo " <option value='' selected='selected'>".$text['label-select']."</option>";
|
||||
echo " <option value='call_flow_status'>".$text['label-call_flow_status']."</option>";
|
||||
echo " <option value='call_flow_enabled'>".$text['label-enabled']."</option>";
|
||||
echo " </select>";
|
||||
}
|
||||
if (permission_exists('call_flow_delete') && $call_flows) {
|
||||
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_flow_all')) {
|
||||
if ($_GET['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=&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_flows.php','style'=>($search == '' ? 'display: none;' : null)]);
|
||||
if ($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 (permission_exists('call_flow_add') && $call_flows) {
|
||||
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_flow_edit') && $call_flows) {
|
||||
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(); document.getElementById('toggle_field').value = document.getElementById('call_flow_feature').options[document.getElementById('call_flow_feature').selectedIndex].value; list_action_set('toggle'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
if (permission_exists('call_flow_delete') && $call_flows) {
|
||||
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
|
||||
}
|
||||
|
||||
echo $text['description-call_flows']."\n";
|
||||
echo "<br /><br />\n";
|
||||
|
||||
echo "<form id='form_list' method='post'>\n";
|
||||
echo "<input type='hidden' id='action' name='action' value=''>\n";
|
||||
echo "<input type='hidden' id='toggle_field' name='toggle_field' value=''>\n";
|
||||
echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
|
||||
|
||||
echo "<table class='list'>\n";
|
||||
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 " </th>\n";
|
||||
}
|
||||
if ($_GET['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);
|
||||
echo th_order_by('call_flow_extension', $text['label-call_flow_extension'], $order_by, $order);
|
||||
echo th_order_by('call_flow_feature_code', $text['label-call_flow_feature_code'], $order_by, $order);
|
||||
echo th_order_by('call_flow_status', $text['label-call_flow_status'], $order_by, $order);
|
||||
if (permission_exists('call_flow_context')) {
|
||||
echo th_order_by('call_flow_context', $text['label-call_flow_context'], $order_by, $order);
|
||||
}
|
||||
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') {
|
||||
echo " <td class='action-button'> </td>\n";
|
||||
echo "<a href='call_flow_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($call_flows)) {
|
||||
$x = 0;
|
||||
foreach ($call_flows as $row) {
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
$list_row_url = "call_flow_edit.php?id=".urlencode($row['call_flow_uuid']);
|
||||
}
|
||||
echo "<tr class='list-row' href='".$list_row_url."'>\n";
|
||||
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) {
|
||||
echo " <td class='checkbox'>\n";
|
||||
echo " <input type='checkbox' name='call_flows[$x][checked]' id='checkbox_".$x."' value='true' onclick=\"checkbox_on_change(this); if (!this.checked) { document.getElementById('checkbox_all').checked = false; }\">\n";
|
||||
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) {
|
||||
$domain = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
|
||||
}
|
||||
else {
|
||||
$domain = $text['label-global'];
|
||||
}
|
||||
echo " <td>".escape($domain)."</td>\n";
|
||||
}
|
||||
echo " <td><a href='".$list_row_url."'>".escape($row['call_flow_name'])."</a> </td>\n";
|
||||
echo " <td>".escape($row['call_flow_extension'])." </td>\n";
|
||||
echo " <td>".escape($row['call_flow_feature_code'])." </td>\n";
|
||||
$status_label = $row['call_flow_status'] != 'false' ? $row['call_flow_label'] : $row['call_flow_alternate_label'];
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
echo " <td class='no-link'>";
|
||||
echo button::create(['type'=>'submit','class'=>'link','label'=>escape($status_label),'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); document.getElementById('toggle_field').value = 'call_flow_status'; list_form_submit('form_list')"]);
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
$tr_link = (permission_exists('call_flow_edit')) ? "href='call_flow_edit.php?id=".$row['call_flow_uuid']."'" : null;
|
||||
echo "<tr ".$tr_link.">\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
if ($row['call_flow_status'] != "false") {
|
||||
echo $row['call_flow_label'];
|
||||
}
|
||||
else {
|
||||
echo " <td>";
|
||||
echo escape($status_label);
|
||||
echo $row['call_flow_anti_label'];
|
||||
}
|
||||
echo " \n";
|
||||
echo " </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_name']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_extension']." </td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_feature_code']." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_app']." ".$row['call_flow_data']." </td>\n";
|
||||
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_anti_app']." ".$row['call_flow_anti_data']." </td>\n";
|
||||
echo " <td valign='top' class='row_stylebg' width='30%'>".$row['call_flow_description']." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
echo "<a href='call_flow_edit.php?id=".$row['call_flow_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
|
||||
}
|
||||
if (permission_exists('call_flow_delete')) {
|
||||
echo "<a href='call_flow_delete.php?id=".$row['call_flow_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
if (permission_exists('call_flow_context')) {
|
||||
echo " <td>".escape($row['call_flow_context'])." </td>\n";
|
||||
}
|
||||
if (permission_exists('call_flow_edit')) {
|
||||
echo " <td class='no-link center'>";
|
||||
echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.($row['call_flow_enabled'] == "true" ? 'true' : 'false')],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); document.getElementById('toggle_field').value = 'call_flow_enabled'; list_form_submit('form_list')"]);
|
||||
}
|
||||
else {
|
||||
echo " <td class='center'>";
|
||||
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') {
|
||||
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";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
}
|
||||
unset($call_flows);
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
} //end foreach
|
||||
unset($sql, $result, $row_count);
|
||||
} //end if results
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan='10' align='left'>\n";
|
||||
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td width='33.3%' nowrap> </td>\n";
|
||||
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
if (permission_exists('call_flow_add')) {
|
||||
echo "<a href='call_flow_edit.php' alt='".$text['button-add']."'>$v_link_label_add</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " </tr>\n";
|
||||
echo " </table>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
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";
|
||||
|
||||
echo "</form>\n";
|
||||
echo "</table>";
|
||||
echo "<br /><br />";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user