2364 Commits
Author SHA1 Message Date
FusionPBX 26c4168cab Update authentication.php 2016-09-11 12:52:15 -06:00
FusionPBX cd34ed0527 Update database.php 2016-09-11 12:45:39 -06:00
FusionPBX 69e258e8ae Update check_auth.php
Set the domain_uuid session variables.
2016-09-11 12:28:12 -06:00
FusionPBX 928dd3ecfa Update authentication.php
Make the database the default authentication plugin if the default setting -> authentication is not set.
2016-09-11 09:52:29 -06:00
FusionPBX b61e746b1e Fix a spelling mistake in ldap.php. 2016-09-11 09:09:16 -06:00
FusionPBX d907fb64d6 Update functions.php
FusionPBX 4.2 release.
2016-09-11 00:03:57 -06:00
FusionPBX 36e722090b Update check_auth.php 2016-09-10 23:52:11 -06:00
FusionPBX 3839d2764f Update functions.php 2016-09-10 23:46:25 -06:00
FusionPBX 856c804c52 Update check_auth.php
Updated to use the new authentication class.
2016-09-10 23:13:08 -06:00
FusionPBX 5cb3a012f5 Update ldap.php 2016-09-10 22:28:35 -06:00
FusionPBX 4640f8ac8d Update database.php
Add contact_uuid to the database plugin.
2016-09-10 22:22:37 -06:00
FusionPBX 7f4e07a8eb Create authentication.php 2016-09-10 22:21:08 -06:00
FusionPBX a3a3dce5e6 Delete authentication.php
Wrong content added to this file that has no history so delete the file.
2016-09-10 22:20:10 -06:00
FusionPBX 5658dc27c4 Create root.php 2016-09-10 18:08:03 -06:00
FusionPBX 612149a91d Create app_config.php 2016-09-10 18:07:18 -06:00
FusionPBX 4a00aeeb9a Delete app_config.php
Put it in the wrong location.
2016-09-10 18:06:51 -06:00
FusionPBX fff6776d4f Create app_config.php 2016-09-10 18:06:13 -06:00
FusionPBX 232cc73eb3 Create ldap.php
Add a the authentication ldap plugin.
2016-09-10 18:02:37 -06:00
FusionPBX 9419245dff Update database.php
Update the database plugin description.
2016-09-10 17:59:59 -06:00
FusionPBX 0e00e7192d Create database.php
Add the default plugin.
2016-09-10 17:58:06 -06:00
FusionPBX ef79a6af03 Create authentication.php
First commit in a series of commits adding a new authentication class.
2016-09-10 17:54:32 -06:00
FusionPBX 60c9477d2f Update domains.php 2016-09-10 17:33:47 -06:00
FusionPBX bc057ac1f5 Update index.php
Advanced -> Upgrade -Remove label tag as it broke the checkbox and description vertical alignment.
2016-09-10 17:26:14 -06:00
FusionPBX 6b999b247d Update app_config.php
Aastra function change name and label for callforward to call_forward and correct the spelling for redial.
2016-09-10 16:52:28 -06:00
FusionPBX 94649ca5cc Update app_languages.php
Add the grandstream function translations array structure.
2016-09-10 16:51:34 -06:00
FusionPBX e10174d10b Update device_edit.php
Fix a display issue.
2016-09-10 16:27:57 -06:00
FusionPBX 8de311a9d2 Update device_vendor_functions.php 2016-09-10 16:20:50 -06:00
FusionPBX d59213dc62 Update app_config.php
Right now label is based on the name this fixes the label. The label part of the array is not saved in the database yet so it can't be used at this time.
2016-09-10 16:18:33 -06:00
FusionPBX 9c9214f7a9 Update device_vendor_functions.php
Add label to the functions list and order by the name.
2016-09-10 16:13:20 -06:00
minotaur01 a2992782e3 TFTP Service v1.0.9 (#1905)
Fixed bug in app_defaults that recreated new setting eacg upgrade
2016-09-08 21:28:26 -06:00
FusionPBX fa0ac3f46b Update memcache.lua 2016-09-08 18:00:23 -06:00
FusionPBX 14bb4e766f Update app_defaults.php 2016-09-08 17:27:34 -06:00
FusionPBX 444bf4597a Update ha_monitor.lua 2016-09-08 17:26:29 -06:00
FusionPBX 8969bf8f25 Update app_languages.php 2016-09-08 17:25:41 -06:00
FusionPBX 84984edbdd Update memcache.lua
Add server method, consumer CUSTOM event instead of MEMCACHE.
2016-09-08 17:23:01 -06:00
FusionPBX 0f7f2cdc83 Create memcache.lua 2016-09-08 16:10:40 -06:00
FusionPBX eb1279b28e Update ha_monitor.lua 2016-09-08 15:52:20 -06:00
FusionPBX 0853792a18 Update ha_monitor.lua 2016-09-08 15:45:53 -06:00
Len 42bec3b871 Update {$mac}.xml (#1904)
missing $
2016-09-07 19:52:40 -06:00
FusionPBX 7058188178 Update app_defaults.php
Go back to the original device/app_defaults.php. What I had in mind for this was a restore default button. When the administrator decides they want to update it. They may not want or need additional vendors.
2016-09-06 08:49:16 -06:00
FusionPBX c476c142c6 Update app_defaults.php
Update all the time condition presets that used mweek (week of month) change to mday (day of month).
The week of the month starts according to the calendar even if its partial week on the calendar it counts as week one according to C language and the calendar in the United States. Example Labor day September 2016 1st week was Sept 1-3 2016. The second week is the first Monday.
2016-09-05 19:07:24 -06:00
FusionPBX fa63156d66 Update app_defaults.php
Fix labor day change week of month from 1 to day of month from 1 - 7.
2016-09-05 18:52:01 -06:00
Alexey Melnichuk 09f2d8fa43 Allow use odbc to store files (record/voicemail) in database. (#1535)
* Change. Allow use odbc to store files (record/voicemail) in database.

* Fix. Generate correct default config.
2016-09-04 13:05:47 -06:00
SJS87 119a007acd Update call_block index.lua script (#1580)
We've had instances where special characters (other than +) are used in the caller_id_number field which prevents these calls from being detected using the call_block feature. We've resolved this by updating fusionpbx/resources/install/scripts/app/call_block/index.lua line 49 to match only numbers rather than using a gsub replace.
2016-09-04 13:03:03 -06:00
FusionPBX 0a67365786 Update forward_add_intro.lua 2016-09-03 21:15:07 -06:00
FusionPBX 6d722bd34f Update v_xml_cdr_import.php 2016-09-03 20:48:27 -06:00
Mafoo 2a1f098246 Enhance Add Tones (#1857)
Add tone support
2016-09-03 20:32:19 -06:00
nyfon 49fd2cc3c4 user dashboard generates errors in httpd error log (#1873)
* Update extension.php

* Update user_dashboard.php

User dashboard fills the httpd error log with shell_exec errors. These changes add escapeshellcmd which eliminates these errors and adds 2>&1 to the df command which also generates an error when /home is not mounted
2016-09-03 20:25:41 -06:00
Joey 19db155e40 FIX: Stream audio in browser (#1872)
This fixes browsers like Safari and allows them to stream audio within
the browser vs downloading the audio.
2016-09-03 20:24:47 -06:00
minotaur01 26ac9fb62e Added Aastra Function Keys And Fixed Update Logic (#1896)
Added the rest of the aastra function key options to app_config. And to
my surprise the functions would not save to the database, found the
problem to be the app_defaults logic would only allow adding on a fresh
install. So I fixed it to work with a update also.
2016-09-03 20:18:27 -06:00
FusionPBX 85308e9978 Update voicemail.php
Delete the voicemail intro when deleting a voicemail message from PHP.
2016-09-03 15:43:30 -06:00
FusionPBX 644b862287 Update delete_recording.lua 2016-09-03 15:40:27 -06:00
FusionPBX 566824c7e1 Update delete_recording.lua
Remove the into_<uuid> voicemail file.
2016-09-03 15:40:11 -06:00
FusionPBX 0a0bd82444 Update listen_to_recording.lua
Play the voicemail introduction if it exists.
2016-09-03 15:39:13 -06:00
FusionPBX 6f78257495 Update forward_add_intro.lua 2016-09-03 15:27:41 -06:00
FusionPBX dc8103ba3c Update app_config.php
Add voicemail message intro for base64.
2016-09-03 15:24:22 -06:00
FusionPBX 002f2b67d4 Update forward_add_intro.lua
Use phrase:voicemail_forward_prepend and record the intro. Use the following naming convention for the intro_<uuid>.wav.
2016-09-03 15:18:53 -06:00
minotaur01 e5b1793e98 CDR Functiality Fix Extended Data Logic (#1897)
Raw data field was not being pulled so logic was broken, added derived
field raw_data_exists to sql statement, instead of pulling raw data with
query. Also added logic to hide the view extended data icon on the right
side of table.
2016-09-03 12:03:35 -06:00
FusionPBX 83dc0e02f7 Update dialplan_add.php
Update the indentation and condense the width of the items so they will be more mobile device friendly.
2016-09-03 10:07:14 -06:00
minotaur01 fd11c355fe Updated Aastra Template (#1895)
Added 686x series and 673x service device templates
Updated template settings
2016-09-02 19:05:12 -06:00
minotaur01 f69853e87c CDR Display functionality change (#1894)
Dont make the row clickable if the extended data field (json) is empty
2016-09-02 13:29:33 -06:00
FusionPBX 8f7665c2d8 Update provision.php
Allow the key variables to work for memory, expansion and programmable keys.
2016-09-02 10:08:45 -06:00
FusionPBX d68e292e0f Update destinations.php
Simplify the label for the Destination select list when it doesn't match any of the preset destinations.
2016-09-02 09:26:07 -06:00
FusionPBX 604a45f3af Update ivr_menu_edit.php
Allow users in the superadmin group to set option destinations that are numeric and the ivr menu syntax will be added automatically.
2016-09-02 09:05:39 -06:00
FusionPBX 630f19fde1 Update call_forward.php
Add 'sip:' as shown in the 1884 pull request.
2016-09-01 22:31:23 -06:00
FusionPBX 522b53ae72 Update call_forward.lua
https://github.com/fusionpbx/fusionpbx/pull/1884 add sip: as suggested in the 1884 pull request.
2016-09-01 22:29:07 -06:00
FusionPBX 516f808949 Update eavesdrop.lua
Make sure that domain_uuid is set for eavesdrop.lua and update the indentation, comments and use session:ready to prevent errors.
2016-09-01 16:01:57 -06:00
FusionPBX aff5198bd5 Update index.lua 2016-09-01 14:38:56 -06:00
FusionPBX 18865d1bda Update forward_add_intro.lua 2016-09-01 14:37:30 -06:00
FusionPBX 58ef0ac93d Update mwi.lua 2016-09-01 14:25:51 -06:00
FusionPBX d1ee2d6b94 Update forward_to_extension.lua 2016-09-01 13:33:41 -06:00
FusionPBX 2d5021ebd9 Update forward_add_intro.lua 2016-09-01 13:31:55 -06:00
FusionPBX 7dbce0a67a Update conference_control_detail_edit.php 2016-09-01 12:04:22 -06:00
FusionPBX 3d2c84ad9c Update dialplan_inbound_add.php
Rename redial_outbound_prefix to caller_id_outbound_prefix to make it more consistent.
2016-08-31 22:07:44 -06:00
FusionPBX 5fe1c83be6 Update app_languages.php
Change redial-outbound-prefix to caller-id-number-prefix
2016-08-31 22:05:46 -06:00
FusionPBX 1702f3bab1 Update dialplan_inbound_add.php
When adding a inbound route with the advanced button cleanup the html form to make it look nicer and remove the action that says not used that is there as an example only.
2016-08-31 21:57:31 -06:00
FusionPBX 75b36f0cf0 Update provision.php
Fix the variables in the device_keys array.
2016-08-31 00:29:20 -06:00
minotaur01 2636bfacc7 TFTP Service v1.0.8 (#1881)
* TFTP Service 1.0.8

Added a check to pervent script execution from a webserver.

* TFTP Service 1.0.9

Renamed fileslocation setting to file_path and fixed default settings
bug by modifing the sql statement.
2016-08-30 17:32:39 -06:00
Chris Black 3c99ff442a add username/password to the yealink profiles. (#1882) 2016-08-30 17:30:01 -06:00
minotaur01 8b4eeaaf1a TFTP Service 1.0.7 (#1877)
* TFTP Service v1.0.7

Fixed linux and windows run as service issues
Fixed linux systemd service self install issues
Modified windows service self install process

* Revert "TFTP Service v1.0.7"

This reverts commit 4418ca7a11.

* TFTP Service v1.0.7

Fixed linux and windows run as service issues
Fixed linux systemd service self install issues
Modified windows service self install process
2016-08-30 08:27:21 -06:00
Alexey Melnichuk 66f26cf2e6 Add. attr_xfer analog based on conference. (#1629)
* Add. attr_xfer analog based on conference.

Control DTMF sequence
 `*0` transfer `self` to `enter number` state and `peer` leg to conference room
 `##` transfer `self` to `enter number` state and hangup `peer` leg
 `*#` transfer `self` to conference room and hangup `peer` leg

* Remove spaces.

* Add. Commented action to ring group.
2016-08-30 01:10:08 -06:00
FusionPBX 67a4124023 Show global time conditions in the destination select list. 2016-08-29 21:06:07 -06:00
FusionPBX aaeba6ccbd Update time_condition_edit.php 2016-08-29 20:56:00 -06:00
FusionPBX d60273c55e Update voicemail_edit.php 2016-08-28 14:27:15 -06:00
FusionPBX bc4ad23a54 Use default settings voicemail password length. 2016-08-28 14:25:50 -06:00
FusionPBX adca3557b8 Add a default password_length to default settings. 2016-08-28 14:23:43 -06:00
FusionPBX 397d7db218 Update extension_edit.php 2016-08-28 13:07:37 -06:00
FusionPBX 5bd8a3a88e Update extension_edit.php
Update the voicemail password form input.
2016-08-28 12:58:19 -06:00
markjcrane 15fb66c659 Update the cisco and spa series phone templates. 2016-08-26 15:44:50 -06:00
markjcrane 5e9e767eee Update snom, grandstream and mitel templates. 2016-08-26 15:30:12 -06:00
markjcrane 1afa546caf Update the Aastra 675x template. 2016-08-26 14:55:29 -06:00
markjcrane 7ee8de5867 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-08-26 14:10:47 -06:00
markjcrane 85915b4adf Update the polycom templates. 2016-08-26 14:09:56 -06:00
Len 766ff9f952 Update {$mac}.cfg (#1860)
t20p changes to the provision class
2016-08-26 13:11:18 -06:00
Len 46a9b47354 Update {$mac}.cfg (#1861)
t21p changes to the provision class
2016-08-26 13:10:58 -06:00
Len 0fb24f5c65 Update {$mac}.cfg (#1862)
t22p changes to the provision class.
2016-08-26 13:10:43 -06:00
Len d162d2e987 Update {$mac}.cfg (#1863)
t23p changes to the provision class
2016-08-26 13:10:26 -06:00
Len 90e2b03430 Update {$mac}.cfg (#1864)
t26p changes to the provision class
2016-08-26 13:08:14 -06:00
Len f92edcb583 Update {$mac}.cfg (#1865)
t28p changes to the provision class
2016-08-26 13:07:50 -06:00
Len 528b18f920 Update {$mac}.cfg (#1866)
t32g changes to the provision class
2016-08-26 13:07:24 -06:00
Len 3c5014ae7b Update {$mac}.cfg (#1867)
t38g changes to the provision class
2016-08-26 13:06:55 -06:00
Len 4e1044a4a7 Update {$mac}.cfg (#1868)
vp530 changes to the provision class
2016-08-26 13:06:18 -06:00
Len 2191e371da Update {$mac}.cfg (#1859)
cp860 changes to the provision class
2016-08-26 13:05:37 -06:00
minotaur01 94b7b98f8e TFTP Service v1.0.3 (#1858)
* Added functionality to show when a devices was last provisioned

Added functionality to show when a devices was last provisioned

Need addition to database: v_devices table:
device_provisioned_on -> datetime
device_provisioned_by -> char(10)

* Revert "Added functionality to show when a devices was last provisioned"

This reverts commit c3e40d68fa.

* Revert "Revert "Added functionality to show when a devices was last provisioned""

This reverts commit 8c27a46565.

* Changed field names as requested

Changed field names as requested for last provisioned data

* Added database fields for device provisoned functionality

Added provisioned_date, provisioned_method, provisioned_ip

* Added ability to search device provisioned info

* Added ip tracking to device provisoned functionality

Added ip tracking to device provisoned functionality and moved the code
to before rendering to register the contact even on unseccessful render

* Added IP address to status column

* TFTP Service v1

TFTP Service  v1

* Update app_config.php

* TFTP Service v1.0.1

TFTP Service v1.0.1

* TFTP Service v1.0.2

* TFTP Service v1.0.2-1

Renamed file

* TFTP Service 1.0.3

Bug fixes

* Modified to ignore IDE files
2016-08-26 13:04:49 -06:00
markjcrane 57c8d4db6e Update more yealink templates to use the new device_keys array. 2016-08-26 08:52:02 -06:00
FusionPBX 124e9f4c07 Update {$mac}.cfg
Update the Yealink t46g to account for the changes to the provision class. These changes will have to be done on all templates.
2016-08-25 23:25:29 -06:00
FusionPBX b38e237082 Update provision.php
First step to fix the conflict between category: line, memory, expansion and programmable keys.
2016-08-25 23:22:02 -06:00
FusionPBX 36c91d261d Update app_config.php 2016-08-25 16:58:31 -06:00
FusionPBX 707a31a239 Update app_config.php
No one has these fields yet except for the original developer so deprecated value in the array is not needed.
2016-08-25 16:42:51 -06:00
Alexey Melnichuk 6d0303d7f1 Fix. use new parse_message function to Fax Inbox page. (#1559)
* Fix. use new parse_message function to Fax Inbox page.

* Fix. display messages without attachment.
2016-08-25 16:10:22 -06:00
FusionPBX 623fa846e3 Update extension.php
Merged pull request 1607 manually.
2016-08-25 15:59:32 -06:00
Mafoo c01e505f27 BugFix-Vars (#1818)
corrected the system default us-ring category to 'Ringtones'
remove var_name like as var_cat now takes care of this
2016-08-25 11:12:00 -06:00
minotaur01 4bb8559a36 Added functionality to show when a devices was last provisioned (#1831)
* Added functionality to show when a devices was last provisioned

Added functionality to show when a devices was last provisioned

Need addition to database: v_devices table:
device_provisioned_on -> datetime
device_provisioned_by -> char(10)

* Revert "Added functionality to show when a devices was last provisioned"

This reverts commit c3e40d68fa.

* Revert "Revert "Added functionality to show when a devices was last provisioned""

This reverts commit 8c27a46565.

* Changed field names as requested

Changed field names as requested for last provisioned data

* Added database fields for device provisoned functionality

Added provisioned_date, provisioned_method, provisioned_ip

* Added ability to search device provisioned info

* Added ip tracking to device provisoned functionality

Added ip tracking to device provisoned functionality and moved the code
to before rendering to register the contact even on unseccessful render

* Added IP address to status column
2016-08-25 11:10:39 -06:00
AgregarDeveloper b66617a40a Major changes to pt-br language. (#1835)
* Um teste por hora

* asd

* Edited and Added PT-BR language.

Minor and major fixes to pt-br translate.

2 fixes to mistyped english words.

* Create AgregarDeveloper.md

* Deleted wrong file placement

Deleted wrong file placement
2016-08-25 11:03:51 -06:00
FusionPBX 6425664e24 Update dialplan.lua
Add  inline="true" to domain_uuid and domain_name.
2016-08-25 09:09:52 -06:00
nostikj 3c9d6dff09 Corrects some cases where dialplan conditions were not fully handled (#1850)
* Remove unsed variable

* Fix cases where time condition are lost

When processing a new condition statement and condition_tag_status == "open",
then there has been a previous condition statement that is in one of three
possible states:
  (1) a previous condition of type default has been saved into the
      'condition' string and will need to be output as XML with either '>' or '/>'
  (2) one or more time conditions have been saved into the
      'condition_attribute' string.  More time conditions may be added.
      After the last time condition it will need to be output as XML with either '>' or '/>'
  (3) a previous <condition ....> start tag has already been output as XML
      and needs to be closed with a </condition> statement.

The change here checks for all three above situations at the places where
pending condition statements need to be finalized.

Note that when processing condition new statements and we are finalizing
a previous time condition, the XML statement uses the 'condition_break'
value from the previous loop, therefore setting condition_break for the
new condition must be after previous conditions are finalized.

At the start of each new extension, initialize 'condition' and
'condition_attribute'.

* Remove unused variables

* Indent one block to match surrounding code at same level

* Prevent two dialplans uuids being merged into single extension

If a dialplan manager entry ended with an action statement NOT inside
a condition, the generated XML would combine this dialplan uuid with the next
uuid by not closing and reopening a new extension.  This change ensures
each dialplan uuid is enclosed in it own <extension></extension>.
2016-08-25 08:50:54 -06:00
Len 73f1026dde Update {$mac}.cfg (#1854)
remove +
2016-08-24 21:47:45 -06:00
Len 2ca7361ab6 Update {$mac}.cfg (#1853)
remove +
2016-08-24 21:44:52 -06:00
Len d4a76128b6 Update {$mac}.cfg (#1852)
remove +
2016-08-24 21:44:15 -06:00
Len 26afb17c74 Update {$mac}.cfg (#1851)
remove +
2016-08-24 21:43:37 -06:00
markjcrane df7d62151b Update the yealink templates. 2016-08-24 17:56:41 -06:00
FusionPBX a15c253486 Update {$mac}.cfg 2016-08-24 17:30:12 -06:00
FusionPBX ee2c4efe72 Update {$mac}.cfg 2016-08-24 17:25:53 -06:00
FusionPBX 0a9fce96a2 Update {$mac}.cfg 2016-08-24 17:23:53 -06:00
FusionPBX 6bc957a602 Update {$mac}.cfg 2016-08-24 17:21:39 -06:00
FusionPBX df0be532a6 Update {$mac}.cfg 2016-08-24 17:19:54 -06:00
FusionPBX 0bf9dedded Update {$mac}.cfg 2016-08-24 17:19:00 -06:00
FusionPBX 859c9bb0a5 Update {$mac}.cfg 2016-08-24 17:17:45 -06:00
FusionPBX 671f294aa0 Update {$mac}.cfg 2016-08-24 17:16:24 -06:00
FusionPBX 1e6d320bd2 Update {$mac}.cfg 2016-08-24 17:14:46 -06:00
Len ee4ab1e8b3 Update {$mac}.cfg (#1839) 2016-08-24 13:04:07 -06:00
Len 7e1a6707c4 Update {$mac}.cfg (#1840)
t21p
2016-08-24 13:03:25 -06:00
Len 9cc1ee6d86 Update {$mac}.cfg (#1841)
t22p
2016-08-24 13:03:11 -06:00
Len aadc343ebf Update {$mac}.cfg (#1842)
Update outbound proxy support in the Yealink templates. t23p
2016-08-24 13:02:35 -06:00
Len 46949ed8c4 Update {$mac}.cfg (#1843)
Update outbound proxy support in the Yealink templates. t26p
2016-08-24 13:02:14 -06:00
Len 55c069ccc0 Update {$mac}.cfg (#1844)
Update outbound proxy support in the Yealink templates. t28p
2016-08-24 13:01:53 -06:00
Len 247e9cc3bc Update {$mac}.cfg (#1845)
Update outbound proxy support in the Yealink templates. vp530
2016-08-24 13:01:24 -06:00
Len b57981bd76 Update {$mac}.cfg (#1846)
Update outbound proxy support in the Yealink templates. w52p
2016-08-24 13:01:18 -06:00
Len b78baae58c Update {$mac}.cfg (#1847)
Update outbound proxy support in the Yealink templates. cp860
2016-08-24 11:15:41 -06:00
FusionPBX a16483adb3 Update provision.php 2016-08-23 14:21:27 -06:00
markjcrane b14c8a1d6f Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-08-23 14:13:20 -06:00
markjcrane 2d4e4fdac6 Update outbound proxy support in the Yealink templates. 2016-08-23 14:12:55 -06:00
FusionPBX dfd23a3257 Update provision.php
Improve provision support for outbound proxy primary and secondary in the provision class.
2016-08-23 13:17:17 -06:00
markjcrane 0a98e0e4c2 Update all of the Yealink templates with ability to name the phonebook without changing the URL. 2016-08-23 12:36:28 -06:00
FusionPBX 171ec57146 Update y000000000028.cfg
Yealink T46g, Allow changing the name of the phonebook without changing the URL.
2016-08-23 12:16:21 -06:00
FusionPBX 76d7044b4f Update provision.php
Fix the user assigned contacts for the directory.
2016-08-23 11:37:51 -06:00
FusionPBX 06ba800018 Update xml_cdr_extension_summary.php 2016-08-23 03:32:25 -06:00
FusionPBX 453296390c Update xml_cdr_extension_summary.php 2016-08-23 03:12:24 -06:00
FusionPBX dfbb53bfed Update xml_cdr_extension_summary.php 2016-08-23 03:10:57 -06:00
FusionPBX 324db16bb6 Update xml_cdr_extension_summary.php
Add a download csv button to the Extension Summary.
2016-08-23 03:05:56 -06:00
FusionPBX 79242f231b Update ringbacks.php
Change the where clause for ringtones to match the category change.
2016-08-22 20:09:49 -06:00
FusionPBX 8eba8c2815 Update app_defaults.php
Fix the file renaming for local_stream.conf.xml and .noload
2016-08-22 20:04:23 -06:00
Jeff Crews bf760cb0d1 Add one touch voice mail access to messages key (#1824)
I have been assigning a button on the Polycom VVX phones to allow users to access their voice mail from the phone easier that simply is a speed dial to *97 with a button label "My VoiceMail".  Why?  Because by default when a user presses the dedicated messages key (that has the picture of an envelope) the user is shown a screen titled "Messages".  There they press 1 or Select soft key to choose "Message Center".  Then a screen shows a summary count urgent, new and saved messages totals and the user can then press the Connect soft key to connect them to *97 to be prompted for their password.  This shortens up the process by 2 key presses and is more simple for the user.

I found an option to change the messages key so it does not display the summary and just dials the voice mail server access number.

This is from the admin guide for 5.3.0 software:

up.oneTouchVoiceMail
default is 0
If 1, the phone dials voicemail services directly (if available on the call server) without displaying the voicemail  summary. If 0, the phone displays a summary page with message counts. The user must press the Connect soft key to dial the voicemail server

To change the messages key to have one touch access to voice mail do this:
In FusionPBX web GUI, click Advanced, Default Settings add a new entry:
Category=provision
Subcategory=polycom_onetouchvoicemail
Type=text
Value=1
Enabled=True
Description=If 1, the phone dials voicemail services directly (if available on the call server) without displaying the voicemail  summary. If 0, the phone displays a summary page with message counts. The user must press the Connect soft  key to dial the voicemail

Then go to Status, Registrations and find the phone(s) you want to update and click "Provision"
2016-08-22 14:43:46 -06:00
markjcrane b4f928142f Rename favorite_settings.xml to favorite_setting.xml to match yealink documentation. 2016-08-21 14:44:34 -06:00
FusionPBX b1163e508b Update call_forward.lua 2016-08-21 14:30:35 -06:00
FusionPBX 6eb2c2d447 Update app_config.php 2016-08-21 09:52:33 -06:00
FusionPBX 4dc7d2287c Update app_languages.php
Add label-xml_directory
2016-08-21 09:51:22 -06:00
markjcrane a1fb673b6a Update bind_target for ring groups default to peer if sip_authorized = true then set to both. 2016-08-20 23:59:10 -06:00
markjcrane 2a280510b8 Add the comment back to help explain the reason this is set to peer. 2016-08-20 23:44:35 -06:00
markjcrane 9c0a4ad79d Add directory.xml and one missing favorite_settings.xml to yealink. 2016-08-20 22:57:59 -06:00
markjcrane a9e8e6c5e1 Add yealink favorite_settings.xml file. 2016-08-20 22:51:28 -06:00
markjcrane 75340365dd Add stun_server variable to the yealink templates. 2016-08-20 22:36:47 -06:00
markjcrane eea8dc195e Update bind digit action and set call_direction to inline=true 2016-08-20 22:07:35 -06:00
FusionPBX 383ff8430d Update index.lua 2016-08-20 20:31:04 -06:00
FusionPBX 7dafcd5cdf Update 890_local_extension.xml 2016-08-20 20:23:18 -06:00
FusionPBX dfbb321b5b Update record_message.lua 2016-08-20 18:54:02 -06:00
FusionPBX c1b13f0f8b Update {$mac}.cfg 2016-08-20 16:24:24 -06:00
FusionPBX a228116cd9 Update {$mac}.cfg
Add ${stun_server} and ${stun_port} to the yealink t23g.
2016-08-20 16:19:42 -06:00
FusionPBX db02f67140 Update y000000000028.cfg
Update the directory_setting.url
2016-08-19 23:04:08 -06:00
minotaur01 4d42512bba Syncing changes (#1826)
* Update device_profile_edit.php

Changed maximum key number to be able to program phones with multiple expansion boards

* Raised Device Key Maximum Number

Changed maximum key number to be able to program phones with multiple expansion boards
Also replaced while loop with for loop to match device_profile_edit.php

* Added code for all key types

Added code for all programmable key types, Hard Keys, Soft Keys, Top Keys and Expansion keys.
Also added logic to handle key assigrnment for multiple expansion boards

* Enabled time server and disabled auto discovery settings

Enabled time servers and used system variable from default settings to set time server
Disabled Link-Layer Discovery and Universal Plug and Play because why do you need to re-discover the server after the phone is provisioned

* Updated the key number option generation line

* Updated the key number option generation line
2016-08-18 18:44:42 -06:00
FusionPBX e477eb09d1 Update time_condition_edit.php
Complete global time conditions.
2016-08-17 15:54:16 -06:00
FusionPBX 2750381024 Update time_condition_edit.php
Fix the global label for time conditions.
2016-08-17 15:30:23 -06:00
FusionPBX 311d4fc161 Update app_config.php
Add time condition domain.
2016-08-17 15:19:11 -06:00
FusionPBX d40baf6ecc Update time_condition_edit.php 2016-08-17 15:14:56 -06:00
Luis Daniel Lucio Quiroz 464cfb04fb Wrong directory name (#1822)
it was looking for call_center, instead call_centerS
2016-08-17 12:37:05 -06:00
FusionPBX e6a0478003 Update index.lua 2016-08-17 09:55:08 -06:00
FusionPBX abc0eb8bb8 Update local_stream.conf 2016-08-16 16:45:55 -06:00
FusionPBX b63c0fdf26 Update vars.xml 2016-08-16 14:11:20 -06:00
FusionPBX f6a2b6d56a Update vars.xml 2016-08-16 14:01:44 -06:00
FusionPBX 1eb598749f Update modules.conf.xml 2016-08-16 13:57:41 -06:00
Mafoo a4b474acc4 Enhance-Import rintones from vars.xml (#1813)
move ringtones to thier own category
import ringtones from vars.xml
2016-08-16 08:49:45 -06:00
FusionPBX df8b71735e Update directory.lua 2016-08-15 21:50:44 -06:00
FusionPBX 85750f61c1 Update vars.xml 2016-08-15 19:46:57 -06:00
FusionPBX 1f9b4b2052 Update vars.xml 2016-08-15 19:16:01 -06:00
minotaur01 0b35fe84c6 Added functionality to hide profile edit button (#1817)
Added functionality to hide profile edit button and changed code to use jQuery and event hooks
2016-08-15 11:27:35 -06:00
minotaur01 c0d0220074 Added a key profile edit and add button (#1815)
Added a key profile edit and add button for easier navigation, can now hop to profile editing with one click.
2016-08-15 09:32:01 -06:00
de-jens 71bac37219 add Diversion Header to dail string (#1816)
* added Diversion Header to dail string

* added Diversion Header to dail string
2016-08-15 09:20:02 -06:00
markjcrane 7f3c47f0eb Rename local_stream.conf.xml to local_stream.conf 2016-08-15 08:23:55 -06:00
FusionPBX 20aae6a266 Update xml_cdr_extension_summary.php
Extensio Summary - Change the default to today instead of last 7 days.
2016-08-14 11:47:49 -06:00
FusionPBX 161666297a Update ivr.conf.lua
Add direct dial message to the IVR Menu so that it states  'your call is being transferred' or 'that was an invalid entry'.
2016-08-14 10:26:32 -06:00
FusionPBX 1e5870802e Update ivr.conf.lua
Since we are checking the direct dial for user_exists we can allow more up to 11 digits by default.
2016-08-13 20:04:23 -06:00
FusionPBX 3be7aa13cb Update ivr.conf.lua
Check to see if the number dialed matches an extension if it does then transfer to the extension if it doesn't then transfer the call back to the IVR Menu.
2016-08-13 19:57:15 -06:00
FusionPBX 4ca854fa38 Update ivr_menu_edit.php
Make ivr_menu_edit.php more efficient.
2016-08-13 18:47:36 -06:00
FusionPBX 19ffcf256b Update ivr_menu_edit.php 2016-08-13 14:28:26 -06:00
FusionPBX 4a9dc8bdda Update fax_edit.php 2016-08-13 14:22:11 -06:00
FusionPBX 30c6a81528 Update call_flow_edit.php 2016-08-13 14:18:03 -06:00
FusionPBX 22757c86d1 Update music_on_hold_edit.php 2016-08-13 14:15:24 -06:00
FusionPBX ae3fda4c60 Update functions.php 2016-08-13 14:12:58 -06:00
FusionPBX 1eb1413b35 Update call_flow_edit.php 2016-08-13 14:10:57 -06:00
FusionPBX f97482aea9 Update phrase_edit.php 2016-08-13 14:09:02 -06:00
FusionPBX 7e3a106866 Update phrase_edit.php 2016-08-13 13:28:44 -06:00
FusionPBX 122bbaa396 Update conference_center_edit.php
Use the new file class sounds method.
2016-08-13 13:26:25 -06:00
FusionPBX 57a15718ed Update file.php 2016-08-13 13:24:32 -06:00
FusionPBX d6158e371f file.php 2016-08-13 10:39:30 -06:00
Mafoo 4b0f3c38a0 BugFix-Support spaces in streamfile.lua (#1811)
use table.concat as a workaround to spaces in filesames
alternative is adjust all destiantions to quote filenames, but would
require app_defaults catch to fix all exisiting written destinations.
2016-08-13 08:59:37 -06:00
minotaur01 c5d4c74631 Key assignment and Aastra provisioning (#1814)
* Update device_profile_edit.php

Changed maximum key number to be able to program phones with multiple expansion boards

* Raised Device Key Maximum Number

Changed maximum key number to be able to program phones with multiple expansion boards
Also replaced while loop with for loop to match device_profile_edit.php

* Added code for all key types

Added code for all programmable key types, Hard Keys, Soft Keys, Top Keys and Expansion keys.
Also added logic to handle key assigrnment for multiple expansion boards

* Enabled time server and disabled auto discovery settings

Enabled time servers and used system variable from default settings to set time server
Disabled Link-Layer Discovery and Universal Plug and Play because why do you need to re-discover the server after the phone is provisioned

* Updated the key number option generation line

* Updated the key number option generation line
2016-08-13 08:55:54 -06:00
FusionPBX 8e0f5b1f7e Update conference_center_edit.php
Get recordings from the database and move phrases database requests out of the content.
2016-08-11 15:40:09 -06:00
SJS87 31a8444fa5 Update to time_condition_edit.php (#1803)
When using 'time-of-day' it's not currently possible to specify a range which will finish at the end of the day.

This is a minor adjustment to allow the 'time-of-day' range to finish at 23:59.
2016-08-11 10:04:53 -06:00
SJS87 7929ef8a22 Time of day routing conversation fixed. (#1802)
This is a minor bug which is fixed with a few minor adjustments, this doesn't appear to have caused us any major problems in production.

Valid values for 'minute-of-day' in FreeSWITCH are 1-1440, the page is currently converting 'time-of-day' to 'minute-of-day' as 0-1439, the fix will correct the values to 1-1440.

Sources:
https://wiki.freeswitch.org/wiki/Time_of_Day_Routing
2016-08-11 10:01:21 -06:00
Alexey Melnichuk 065a04ccb2 Add. force_ping option for extension (#1809)
* Add. `force_ping` option for extension

This option force FS send SIP OPTIONS message to
detect if this reged device still available.

* Update language file.
2016-08-11 09:46:54 -06:00
FusionPBX 390cfd09e2 Create forward_add_intro.lua 2016-08-10 16:10:22 -06:00
FusionPBX 5791d2204d Update user_edit.php 2016-08-09 16:13:56 -06:00
FusionPBX 4bcbf09194 Update device_dashboard.php
Protect keys with the device profile from being edited by a user in the device dashboard.
2016-08-08 16:58:32 -06:00
FusionPBX 3364d692ee Update device_profile_edit.php 2016-08-08 16:54:24 -06:00
FusionPBX a4f46f8455 Update device_profile_edit.php 2016-08-08 16:51:27 -06:00
FusionPBX 399ea47e4f Update device_profile_edit.php
Make device key vendor a select list.
2016-08-08 16:48:31 -06:00
FusionPBX 159835307b Update app_languages.php 2016-08-08 15:40:14 -06:00
FusionPBX fd93a79650 Update device_profile_edit.php
Add device key protected to the device profile edit.
2016-08-08 15:37:54 -06:00
FusionPBX 133bbf5cd2 Update app_config.php
Add device_key_protected permission and field in the database.
2016-08-08 15:18:51 -06:00
FusionPBX e3861a8227 Update device_dashboard.php
Update device dashboard use the group permissions.
2016-08-08 14:24:42 -06:00
FusionPBX 2afdd589b1 Update directory.lua 2016-08-08 09:45:16 -06:00
FusionPBX 99173fb638 Update scripts.php
Add conf_dir to lua.conf
2016-08-08 09:35:06 -06:00
markjcrane 7649e7f175 Change conf/lang to conf/languages this makes it identical to its section. 2016-08-08 09:11:37 -06:00
FusionPBX 9a536d0834 Update device_vendor_functions.php
Show the group permissions on device_vendor_functions.php.
2016-08-06 16:28:48 -06:00
FusionPBX 6f5af8ba55 Update app_defaults.php
Add default device function group permissions.
2016-08-06 16:19:58 -06:00
FusionPBX 38e725aa60 Update app_config.php 2016-08-06 16:17:02 -06:00
FusionPBX 0098218480 Update app_config.php
Add group permissions to device vendor functions.
2016-08-06 15:41:17 -06:00
FusionPBX e24a7ba0eb Update app_config.php
Add device auth_id default permission for admin and superadmin groups.
2016-08-06 14:56:40 -06:00
FusionPBX 31404dbcfb Update device_vendor_function_edit.php
Add ability to assign groups to vendor functions.
2016-08-06 10:16:23 -06:00
FusionPBX 0e284a1020 Update app_languages.php
Add label-groups to global app_languages.php.
2016-08-05 09:21:41 -06:00
FusionPBX e65ed77b98 Update menu_item_edit.php
Get the data before presenting it to prevent mixing backend and front end work.
2016-08-05 09:16:42 -06:00
FusionPBX 8b535a3d70 Update index.lua 2016-08-05 08:42:51 -06:00
FusionPBX 8cd64d7fd5 Update app_languages.php 2016-08-05 08:41:44 -06:00
FusionPBX dfbf319e50 Update app_config.php 2016-08-05 08:41:13 -06:00
FusionPBX b7ee708ee0 Update ring_group_edit.php
Remove skip active as it has been replaced by strategy: rollover which skips endpoints that return a busy.
2016-08-05 08:40:16 -06:00
FusionPBX 29d41f909c Update extensions.php
Update the extensions header.
2016-08-04 20:05:56 -06:00
FusionPBX a2d84a20b5 Update contacts.php
Fix the header on the contacts page so it will look better on smaller screens.
2016-08-04 20:00:23 -06:00
FusionPBX 199f06fe84 Update calls.php
Fix the page heading so that if the call routing page is width is small the page layout still looks good with the description.
2016-08-04 19:47:40 -06:00
FusionPBX 63c82fa7d4 Update user_dashboard.php
Correct the layout for the description on the dashboard.
2016-08-04 19:23:07 -06:00
FusionPBX 9222f0f856 Update time_conditions.php 2016-08-04 19:17:21 -06:00
FusionPBX e428332e64 Update time_condition_edit.php
Fix the time condition edit and improve the indentation on the code.
2016-08-04 18:46:39 -06:00
FusionPBX dbb5812236 Update dialplan_edit.php 2016-08-04 18:34:10 -06:00
FusionPBX dd850abf59 Update dialplans.php
Correct the layout for the description on the dialplans page.
2016-08-04 18:31:41 -06:00
FusionPBX bafa33ba0b Update call_flow_edit.php
Reduce the width of the sounds list for call flow edit.
2016-08-04 17:48:59 -06:00
FusionPBX 444a5a4065 Update ivr_menu_edit.php
Improve the layout for the IVR Menu edit description.
2016-08-04 17:43:35 -06:00
FusionPBX b731d988a4 Update ivr_menu_edit.php
Use only the space needed to display the IVR Menu options.
2016-08-04 17:34:00 -06:00
FusionPBX 783a9d170d Update ivr_menu_edit.php
Make the IVR Menu long and short greeting editable for a user in the superadmin group.
2016-08-04 17:21:04 -06:00
FusionPBX 6d89233785 Update {$mac}.cfg 2016-08-04 13:49:56 -06:00
FusionPBX 5950d47f46 Update {$mac}.cfg 2016-08-04 13:48:45 -06:00
DigiDaz 98a184c835 Fixed scripts to get multiserver memcache working (#1795) 2016-08-04 11:40:36 -06:00
markjcrane 28c59d4eec Update recur_sounds_dir to return an array rather than using a global variable. 2016-08-04 09:49:57 -06:00
FusionPBX ec487d254a Update {$mac}.cfg 2016-08-03 22:26:09 -06:00
FusionPBX a0d04471a7 Update {$mac}.cfg 2016-08-03 22:25:19 -06:00
FusionPBX 58bf9522c3 Update 530_talking_clock_date_and_time.xml 2016-08-03 21:57:36 -06:00
FusionPBX a942d284a2 Update app_defaults.php 2016-08-03 18:49:26 -06:00
FusionPBX 3cc4964503 Update app_defaults.php
Make the music on hold app defaults more better at loading the xml file if the music on hold table is empty.
2016-08-03 18:47:02 -06:00
FusionPBX 5d9558adfd Create 530_talking_clock_date_and_time.xml 2016-08-03 17:39:15 -06:00
FusionPBX b5d50ed812 Rename 520_talking_clock_time.xml to 540_talking_clock_time.xml 2016-08-03 17:38:15 -06:00
FusionPBX 281df682bd Rename 530_talking_clock_date.xml to 550_talking_clock_date.xml 2016-08-03 17:37:51 -06:00
FusionPBX f2559569df Create 530_talking_clock_date.xml 2016-08-03 17:37:10 -06:00
FusionPBX 6700578d40 Rename 520_talking_clock_time. to 520_talking_clock_time.xml 2016-08-03 17:35:10 -06:00
FusionPBX 784133806e Create 520_talking_clock_time.
Add talking clock time dialplan.
2016-08-03 17:34:30 -06:00
FusionPBX ce6f4f4f5c Update app_defaults.php 2016-08-03 16:48:41 -06:00
FusionPBX 2443fd7075 Update switch_settings.php 2016-08-03 16:46:44 -06:00
FusionPBX 8f3b329440 Update de.xml 2016-08-03 16:37:09 -06:00
FusionPBX 9f0d487b89 Update en.xml 2016-08-03 16:36:49 -06:00
FusionPBX 7342305672 Update fr.xml 2016-08-03 16:36:28 -06:00
FusionPBX e120463e61 Update he.xml 2016-08-03 16:36:03 -06:00
FusionPBX 27904c88b5 Update ru.xml 2016-08-03 16:35:22 -06:00
FusionPBX ed9ffcd5d0 Update app_config.php 2016-08-03 10:22:10 -06:00
FusionPBX 475b07b5f7 Update {$mac}.cfg 2016-08-03 10:09:16 -06:00
FusionPBX 035cd4da19 Update {$mac}.cfg
Add more provisioning variables to Polycom 5.x template and voicemail transfer soft key.
2016-08-03 10:05:28 -06:00
FusionPBX 1b6c481a0b Update destination_edit.php 2016-08-03 01:04:26 -06:00
FusionPBX b58a905ca4 Update destination_edit.php
Only check for duplicates on inbound destinations.
2016-08-03 00:50:11 -06:00
FusionPBX 7693844dde Update index.lua
Set regex_match = false; before the loop.
2016-08-03 00:23:58 -06:00
FusionPBX 6b69616d7f Update destination_edit.php
Prevent fax details from duplicating, fix trailing spaces, and adjust some indentation.
2016-08-03 00:06:36 -06:00
FusionPBX bed3523b21 Update destination_edit.php 2016-08-02 22:30:29 -06:00
FusionPBX 270496b9f3 Update device_edit.php
Fix the indentation on device_edit.php.
2016-08-02 19:44:07 -06:00
FusionPBX ad71477ab3 Update device_dashboard.php
Get the vendor functions from the database for the device_key dashboard.
2016-08-02 19:39:22 -06:00
Alexey Melnichuk f214625ead Change. Use service::control event to control services (#1790)
* Change. Use `service::control` event to control services

This is more FS way. E.g. sofia sends `sofia::register` event
and add all information to headers. So now `service` script
emit `fusion::service::control` event and each service responsible
for test its own name. This also allows add in future evnets to
e.g. monitor service status like `fusion::service::satus` so it
will be possible write service which will be restart services.

* Change. rename service name from `flow` to `call_flow`
2016-08-02 14:00:49 -06:00
FusionPBX 865b1b5019 Update device_edit.php
Get the vendor functions for device edit from the database.
2016-08-02 13:35:38 -06:00
FusionPBX d14f9cad25 Update device_profile_edit.php
Build the device profiles vendor functions from the database.
2016-08-02 12:44:46 -06:00
FusionPBX 294acd84ff Update ivr.conf.lua
IVR Menu direct dial move it before the options defined by the users so that users can override it.
2016-08-02 10:17:02 -06:00
markjcrane a3af244f82 Remove label and use the name instead. 2016-07-31 19:12:41 -06:00
markjcrane dc3c8eac91 Fix the label for the device vendor function import and add the translation to resources/app_languages.php. 2016-07-31 18:51:57 -06:00
markjcrane 5b68f45a77 Add a back button to device vendors. 2016-07-31 18:29:57 -06:00
markjcrane 67e02704dc Add button-vendors translation. 2016-07-31 18:14:24 -06:00
markjcrane 6ca33bccbe Add some translations for button-files. 2016-07-31 18:04:20 -06:00
markjcrane 0993da997c Move device vendor files into app/devices. 2016-07-31 17:48:50 -06:00
markjcrane a8374075bf Add app/device_vendors. 2016-07-31 16:22:10 -06:00
FusionPBX 630c88e176 Update device_dashboard.php
If the device_uuid does not have a value then get it.
2016-07-30 10:25:34 -06:00
FusionPBX f54807f857 Update device_profile_copy.php
Fix the device profile copy.
2016-07-29 11:13:29 -06:00
FusionPBX 59ae093f9d Update device_profile_edit.php
Add the ID of the device profile that should be copied.
2016-07-29 11:01:41 -06:00
FusionPBX 795113c2b1 Update macro.lua
Add forward_add_intro to macro.lua.
2016-07-29 09:46:56 -06:00
FusionPBX 3b438f5d0e Update login.php
Possible vulnerability in password reset not taking chances removing the code until it has been analyzed and fixed.
2016-07-29 03:22:27 -06:00
Alexey Melnichuk e7c813a559 Simplify is_uuid function. (#1781)
* Simplify `is_uuid` function.

Also because it returns now value itself it possible write
```Lua
my_uuid = is_uuid(value1) or is_uuid(value2)
```

* Change. Ensure `is_uuid` returns only boolean value
2016-07-28 16:49:36 -06:00
FusionPBX 4f9c1d7f67 Update device_profile_edit.php 2016-07-28 16:03:19 -06:00
FusionPBX bcbf350aac Update device_profile_edit.php 2016-07-28 15:54:53 -06:00
FusionPBX c5236a5c31 Update device_profile_edit.php
Add permission_exists to check for device_key_extension permission in device profiles.
2016-07-28 15:53:33 -06:00
FusionPBX a8ed73c52d Update device_profiles.php 2016-07-28 15:36:24 -06:00
FusionPBX 3087ce5a69 Update device_profiles.php 2016-07-28 15:34:55 -06:00
FusionPBX 221a82737c Update status_registrations.php 2016-07-28 11:04:38 -06:00
FusionPBX 905e47f844 Update status_registrations.php
Update the indentation on status_registrations.php.
2016-07-28 11:04:15 -06:00
Alexey Melnichuk 3b1e277fab Fix. Show all registrations. (#1784) 2016-07-28 11:00:09 -06:00
FusionPBX 85f0f5f3c5 Update extensions.php
Move extension registered before enabled and description which are always last.
2016-07-28 09:59:38 -06:00
Alexey Melnichuk 58ec22a759 Add. Support service stop command for odbc_pool. (#1782) 2016-07-28 08:16:54 -06:00
FusionPBX 134802f988 Update app_config.php
Change the permission in app_config.php from extension_show_registered to extension_registered.
2016-07-28 00:01:47 -06:00
FusionPBX d685638841 Update extensions.php
Change extension_show_registered to extension_registered.
2016-07-27 23:59:25 -06:00
FusionPBX acdf19d5ea Update dialplan.php
Committed by rdissauer - original pull request had a conflict.
https://github.com/fusionpbx/fusionpbx/pull/1568
2016-07-27 23:09:32 -06:00
Chris Black c9566fde0e Fix my PR for the device registered on extensions page. (#1772)
* Fix my PR for the device registered on extensions page.

* Change to registered
2016-07-27 23:03:59 -06:00
pquan 42b0fc81af fix tiff2pdf conversion in short faxes (#1596) 2016-07-27 23:00:33 -06:00
FusionPBX 8909639101 Update internal.xml.noload
Comment out disable-transfer and disable-register in the internal sip profile.
2016-07-27 22:55:47 -06:00
FreeMe 497b7ed42b Update app_languages.php (#1666)
* Update app_languages.php

Filled in all language fields with the appropriate translation.

* Update app_languages.php

Corrected 'Project Path' translation for German users
2016-07-27 22:26:02 -06:00
Mafoo 951bef85d4 BugFix-add missing default ringback to lua (#1682)
add processing of when ringback is set to default_ringback and correctly
set it to the current value of the globalvar for ringback
2016-07-27 20:06:41 -06:00
FusionPBX eef8fdbc12 Update index.lua
Improve on the call center agent status use agent_authorized true instead of auto_authorized.
2016-07-27 19:17:10 -06:00
DigiDaz 00b2449168 Allow * 22 login/logout of queue without password by adding variable auto_authorized to dialplan (#1776) 2016-07-27 19:13:50 -06:00
stefanomarty cde6de2149 Missing .wav file extension in wakeup.xml (#1780)
* Fix missing file extension

The missing "wav" extension makes Freeswitch looking for .PCMU file, which does not exist. This is the error in the logfile:
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:28:59.299530 [DEBUG] switch_ivr_play_say.c:1910 done playing file file_string://digits/1.wav!digits/1.wav!digits/3.wav!digits/0.wav 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:28:59.299530 [DEBUG] switch_ivr_play_say.c:70 No language specified - Using [en] 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:28:59.299530 [DEBUG] switch_ivr_play_say.c:250 Handle execute:[sleep(750)] (en:en) 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:00.159531 [DEBUG] switch_ivr_play_say.c:250 Handle play-file:[ivr/ivr-to_accept_press] (en:en) 
2016-07-23 11:29:00.159531 [ERR] mod_native_file.c:74 Error opening /usr/local/freeswitch/sounds/en/us/callie/ivr/ivr-to_accept_press.PCMU 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:00.279530 [DEBUG] switch_ivr_play_say.c:70 No language specified - Using [en] 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:00.279530 [DEBUG] switch_ivr_play_say.c:250 Handle execute:[sleep(750)] (en:en) 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:01.159532 [DEBUG] switch_ivr_play_say.c:250 Handle play-file:[ivr/ivr-to_accept_press] (en:en) 
2016-07-23 11:29:01.159532 [ERR] mod_native_file.c:74 Error opening /usr/local/freeswitch/sounds/en/us/callie/ivr/ivr-to_accept_press.PCMU 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:01.279530 [DEBUG] switch_ivr_play_say.c:70 No language specified - Using [en] 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:01.279530 [DEBUG] switch_ivr_play_say.c:250 Handle execute:[sleep(750)] (en:en) 
d3b2a1d5-9dab-4067-b4a9-0296d6072ed6 2016-07-23 11:29:02.179543 [DEBUG] switch_ivr_play_say.c:250 Handle play-file:[ivr/ivr-to_accept_press] (en:en) 
2016-07-23 11:29:02.179543 [ERR] mod_native_file.c:74 Error opening /usr/local/freeswitch/sounds/en/us/callie/ivr/ivr-to_accept_press.PCMU

* Update wakeup.xml
2016-07-27 16:41:49 -06:00
FusionPBX 85b3a59b71 Update device_edit.php
Use the new device permissions and condense the horizontal width of the content as well as more control over it.
2016-07-26 21:00:05 -06:00
FusionPBX 6198a80b90 Update app_config.php
Add new device permissions.
2016-07-26 20:57:46 -06:00
FusionPBX b7a1797360 Update app_languages.php 2016-07-26 20:54:46 -06:00
markjcrane 291d466dd5 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-07-26 20:52:07 -06:00
markjcrane 98f326a7f6 Adjust the indentation and organization of these to xml cdr files. 2016-07-26 20:51:50 -06:00
FusionPBX c4ef8596d1 Update xml_cdr_inc.php
Disable paging for the XML PDF export and modified slightly for the CSV export.
2016-07-26 20:49:23 -06:00
Alexey Melnichuk a73b8680cb Add service script and make timout optional for EventConsumer ctor (#1775)
* Change. Pass pid file first. Because there really no need pass timeout.
Add. `fsc` script to be able shutdown MWI and Call Flow subscribe services.

* Change. rename `fsc` to `service`.

* Change. Use `stop` command instead of `shutdown`
2016-07-26 11:58:37 -06:00
FusionPBX 3f66511a41 Update devices.php
Correct the layout of the device description.
2016-07-26 09:37:54 -06:00
markjcrane 400192b426 Add yealink remote phonebook name and url defaults. 2016-07-25 18:51:25 -06:00
FusionPBX 238d25cd7e Update y000000000028.cfg
Change provision variables so it will show up in a more logical order.
yealink_remote_phone_book_1_name to yealink_remote_phonebook_1_name
yealink_remote_phone_book_1_url to yealink_remote_phonebook_1_url
2016-07-25 18:34:15 -06:00
markjcrane 63f21e6f84 Add yealink_directory_setting_url to all remaining yealink phones. 2016-07-25 13:19:52 -06:00
FusionPBX fac1f3dd78 Update 900_voicemail.xml
Add user_exists to the voicemail dialplan. If using a voicemail box that is not associated to an extension then transfer call to voicemail with *99 ( voicemail id ).
2016-07-25 10:43:08 -06:00
FusionPBX cc4cd99d5e Update app_defaults.php
Update the dialplan order to make it easier for upgrades.
2016-07-24 13:45:03 -06:00
FusionPBX da6f71323c Update languages.lua
Don't cache the not found.
2016-07-24 00:22:18 -06:00
FusionPBX f22226faad Update app_defaults.php
Use XML handler for phrases don't save the XML to the file system.
2016-07-24 00:15:36 -06:00
FusionPBX eb22495337 Update app_config.php
Remove phrase_xml.
2016-07-24 00:12:40 -06:00
FusionPBX 847d8739e9 Update phrase_edit.php
Remove phrase_xml better there is a better way to do this.
2016-07-24 00:12:00 -06:00
FusionPBX 92f9f45e6c Update languages.lua
When handling phrases get the specific phrase instead of all of them. Remove the code that tried to build the XML from the file system. Replace it with a 'not found' response so that FreeSWITCH will check the filesystem for the XML of the phrase that was not found.
2016-07-24 00:09:48 -06:00
FusionPBX b236a737bf Create is_uuid.lua
Add a new lua function to determine if a string is a uuid.
2016-07-23 13:40:57 -06:00
FusionPBX d46a9005d7 Update phrase_edit.php
Another change needed for global phrases.
2016-07-23 13:39:30 -06:00
FusionPBX e25f5494bb Update phrases.php
Show for global phrases.
2016-07-23 00:27:48 -06:00
FusionPBX f6da6229b2 Update phrase_edit.php
Add domain select list to phrase_edit.php
2016-07-23 00:14:04 -06:00
FusionPBX 1c85c5acaa Update app_config.php
Add phrase_xml field and phrase_domain permission.
2016-07-23 00:08:10 -06:00
FusionPBX 100a0a3671 Update app_languages.php
Add label-domain to the global app_languages.php.
2016-07-23 00:01:45 -06:00
FusionPBX c0e5088005 Update user_dashboard.php
Dashboard there is one more voicemail link to update.
2016-07-22 13:18:26 -06:00
FusionPBX a7c89e4f0c Update ivr_menu.php
The Dialplan needs the ivr_menu_uuid and the IVR Menu needs the dialplan_uuid. This fixes a new IVR Menu dialplan so it points to the ivr_menu_uuid.
2016-07-22 12:28:17 -06:00
FusionPBX 4fdb9045a5 Update ivr_menu_edit.php
Add an empty option for long greeting so it doesn't select option say: automatically.
2016-07-22 12:14:30 -06:00
FusionPBX 90bd147d43 Update directory.lua
Add a timeout_destination option for directory.lua.
2016-07-22 11:48:29 -06:00
FusionPBX c2bbc9e525 Update voicemail.php
Improve the voicemail class by using construct and destruct. Reduce the use of session variables in the class.
2016-07-22 10:31:08 -06:00
FusionPBX 21a414d31e Update user_dashboard.php
Fix the voicemail box link for the user dashboard.
2016-07-22 10:28:09 -06:00
Mafoo 613b9c9bea Enhance Voicemail Emails (#1738)
* Renamed template variable account to voicemail_id and adjusted all
templates
* Added ${voicemail_description}
* Added ${voicemail_name_formatted} (will render the voicemail identifier in accordance with Default/Domain Settings > Voicemail > display_domain_name)
* Updated templates to be consistent spacing
* Updated templates to include use of ${voicemail_name_formatted}
* Changed ${account} to be voicemail_name_formatted instead of id
2016-07-22 09:23:03 -06:00
Mafoo 0d78c94804 Enhance-Add Ping to Registrations Status (#1753)
Retrieve ping-time and display it

display &nbsp; only when value is empty
2016-07-22 08:27:36 -06:00
Mafoo 7510bed570 BugFix-Add new Polycom MAC (#1770)
Polycom were assigned a new MAC prefix - 64:16:7f
2016-07-22 07:29:57 -06:00
Alexey Melnichuk 207cf08e88 Fix. Properly stop (e.g. remove pid file) event consumer loop in case of error. (#1766) 2016-07-21 07:47:54 -06:00
FusionPBX 1279c80d8a Update lua.conf.xml
Add languages to xml handler and Lua module-directory commented out.
2016-07-20 14:01:01 -06:00
markjcrane bd865ed758 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-07-20 13:32:56 -06:00
markjcrane e133b7a5e1 Add application answer to the 900 voicemail and send to voicemail increase number of digits allowed for the extension from 7 to 10. 2016-07-20 13:32:39 -06:00
Chris Black 0e347fbf62 add default settings to dashboard for auto-answer, record, ringback (#1762)
* add default settings to dashboard for auto-answer, record, ringback

* change default setting to click_to_call
2016-07-20 13:28:17 -06:00
markjcrane 51f6a6ebe5 Changes to voicemail make it possible to have voicemail box without a registered extension. 2016-07-20 13:14:31 -06:00
markjcrane 102f0c3163 Change the order of the last 3 dialplans and add a voicemail dialplan. 2016-07-20 12:45:27 -06:00
markjcrane 97a4eac42a Remove voicemail from the local_extension dialplan. 2016-07-20 12:42:40 -06:00
FusionPBX 61a265d2de Update ivr_menu_edit.php
Fix the phrases list for IVR Menu edit greetings.
2016-07-19 20:08:19 -06:00
markjcrane bf63ecc896 Replace $${hold_music} with local_stream://default. Remove the $${domain}, and outbound caller id name and number value as they wouldn't have a global value. 2016-07-19 10:03:51 -06:00
pixel2920 c26fc36bd1 Add silence_stream to default voicemail message (#1761)
This corrects the issue in #1760, where the default voicemail message was not being played and instead skipped directly to recording (start recording tone).
2016-07-18 22:55:41 -06:00
FusionPBX fda0e722b4 Update conference.conf.lua
Add conference controls to the xml handler.
2016-07-17 15:42:14 -06:00
markjcrane 0732c86cef Add conference controls. 2016-07-17 15:12:15 -06:00
FusionPBX 9f6e767a6e Update conference_profile_delete.php
Delete the child data for conference profiles.
2016-07-17 14:23:22 -06:00
FusionPBX ea18c47c2b Update conference_profile_param_delete.php
Add spaces.
2016-07-17 14:20:18 -06:00
Alexey Melnichuk 1b80f888b3 Fix. Escape quotes and do not check domain_uuid in edit service form. (#1752) 2016-07-17 12:14:12 -06:00
FusionPBX 338936c906 Update conference.conf.lua
Conference profile parameters are now working from the database.
2016-07-17 01:15:35 -06:00
FusionPBX e979508307 Update conference_profile_params.php
Fix the list of conference profile params.
2016-07-17 00:08:59 -06:00
FusionPBX fa7722c38e Update conference_profile_params.php
Remove the domain_uuid and few other minor changes.
2016-07-17 00:00:22 -06:00
FusionPBX 6044d40dcc Update conference_profile_param_edit.php
Add a few more comments end a little more indentation.
2016-07-16 23:57:03 -06:00
FusionPBX fa6ba3d019 Update conference_profile_edit.php
Comment out the domain_uuid in conference_profile_edit.php.
2016-07-16 23:52:15 -06:00
FusionPBX 4aefa035f1 Update conference_profiles.php 2016-07-16 17:43:38 -06:00
FusionPBX 072c40dc84 Update app_config.php
Remove the domain_uuid from the conference profiles and params.
2016-07-16 17:30:32 -06:00
FusionPBX a030c3f614 Update conference_profile_param_edit.php
Comment out domain_uuid so the conference params are global.
2016-07-16 17:27:58 -06:00
FusionPBX f8acbf56ad Update conference_profile_param_delete.php
Remove the domain filter from the delete.
2016-07-16 17:24:59 -06:00
FusionPBX f27912591e Update conference_profiles.php
Right now conference profiles are global.
2016-07-16 17:24:05 -06:00
FusionPBX 1fd108043a Update app_defaults.php
Import the conference profiles.
2016-07-16 17:17:37 -06:00
FusionPBX 106427d25d Create app_defaults.php 2016-07-16 16:04:36 -06:00
markjcrane 3684dacfcd Add Conference Profiles. 2016-07-16 15:17:54 -06:00
markjcrane 9e568e56a8 Change the file name from <name>.conf.xml.noload to <name>.conf as freeswitch only loads the files with .xml. 2016-07-16 14:19:42 -06:00
FusionPBX 58fa00ddf2 Update device_dashboard.php
Handle saving device keys from a profile that has been changed.
2016-07-16 12:15:22 -06:00
FusionPBX 06f1b7fcec Update provision.php
Simplify the code where device keys can override keys assigned to the device profile keys.
2016-07-16 03:37:46 -06:00
FusionPBX 9fe48e8da2 Update device_dashboard.php
Add profile keys to the dashboard in a way they can be overridden by the device keys.
2016-07-16 03:34:51 -06:00
FusionPBX dd2e18fbdd Update orm.php
Reset the parent_key_exists to default of false.
2016-07-15 12:13:45 -06:00
FusionPBX fdc9a6a902 Update music_on_hold.php
Fix the upload to specific music on hold categories and fix an issue with case sensitivity that prevented ability to delete a file with upper case letters.
2016-07-15 10:44:27 -06:00
FusionPBX e2cdfb5f05 Update switch.sql
When using multiple-registrations the contact string can be longer than 255 characters.
2016-07-15 09:19:03 -06:00
FusionPBX 2373b38630 Update play_greeting.lua
Voicemail greeting will not play after being transferred from IVR #1749. Replace session:streamFile( with session:execute("playback", fixes this problem.
2016-07-15 08:43:53 -06:00
FusionPBX 851ab4e03b Update music_on_hold_edit.php
If the Music on Hold rate is empty use the 'Default' label.
2016-07-14 23:20:01 -06:00
Alexey Melnichuk 10f460cfd2 Fix. Lua can not generate non CUSTOM event with subclass. (#1756)
There 2 way.
First one generate `MEMCACHE` event without subclass
Second generate `CUSTOM` event with subclass e.g. `fusion::memcache`
2016-07-14 11:33:54 -06:00
FusionPBX ba2ad840a5 Delete ivr_menu_option_edit.php
ivr_menu_edit.php now allows editing all options at once so ivr_menu_option_edit.php is no longer needed.
2016-07-14 09:54:16 -06:00
FusionPBX 6bcad98cbd Update ivr_menu_edit.php
Use the right variable for the ivr_menu_options array.
2016-07-14 01:56:43 -06:00
FusionPBX 249210c9df Update ivr_menu_edit.php
When adding an IVR menu allow adding multiple IVR options.
2016-07-14 01:37:26 -06:00
FusionPBX 99df808606 Update ivr_menus.php
Add indentation, and improve the code in ivr_menus.php.
2016-07-14 01:16:07 -06:00
FusionPBX 8e8dce8579 Update ivr_menu.php
Update the ivr_menu class to use the orm class this simplifies and reduces the size of the code.
2016-07-14 01:13:02 -06:00
FusionPBX 92ff680c86 Update ivr_menu_edit.php
Simplify ivr_menu_edit.php and remove the edit option link as it is no longer needed.
2016-07-14 01:11:17 -06:00
FusionPBX 7996e33e4b Update orm.php
Remove some debug code.
2016-07-14 01:08:14 -06:00
FusionPBX f806e0297c Update orm.php
Make this code more resilient in case the primary key or sub table primary key was provided in the data.
2016-07-14 01:06:04 -06:00
FusionPBX bbe1705019 Update v_mailto.php
For the include for email transcription change the file name from email_translation.php to email_transcription.php.
2016-07-13 18:01:40 -06:00
Alexey Melnichuk 1834be5042 Add. Support onInterval method to EventConsumer class (#1747)
* Add. Support `onInterval` method to EventConsumer class

Usage
```Lua
-- execute action each 30 sec
events:onInterval(30*1000, function() end)

-- execute action once after 5 min
events:onIntervalOnce(5*60*1000, function() end)
```

* Fix. Remove timers

* Fix. Reset timer before callback

It allows stop timer inside callback.
Also it produce more accurate interval invocation
if callback take quite a long time.
E.g. Interval = 10 sec and callback took 5 sec then
if we reset timer after this callback then gap between
invocation will be 15 sec.

* Add. Timers now have TimeEvent class type.

Add. `reset` method to IntervalTimer class.

```Lua
events:onIntervalOnce(1000, function(self, timer)
  -- timer has type TimeEvent

  -- restart timer so it will be invoke again
  timer:restart()

  -- or reset new interval
  -- timer:reset(5000)
end)
```

* Fix. Typo in variable name
2016-07-13 09:43:51 -06:00
Alexey Melnichuk 9da40dc7b1 Fix. Fusion set rate=48000 to all streams. (#1746) 2016-07-12 08:09:54 -06:00
FusionPBX bec130b265 Update ivr_menu_edit.php
Improve the indentation and some progress to separate getting the data from displaying it.
2016-07-11 17:06:32 -06:00
FusionPBX 120b37361e Update switch.sql
Add accountcode to detailed_calls view.
2016-07-10 15:12:58 -06:00
FusionPBX 79117d1d83 Update switch.sql
basic_calls view - add AS to match freeswitch code and accountcode
2016-07-10 15:04:25 -06:00
FusionPBX 4de57b6a32 Update switch.sql
Add accountcode to the channels table.
2016-07-10 14:53:12 -06:00
FusionPBX a3f0f30907 Update switch.sql
Update sip_registrations table.
2016-07-10 14:38:53 -06:00
FusionPBX 0722bf3254 Update xml_cdr.php
Show the image in CDR only if direction is set.
2016-07-09 16:29:42 -06:00
FusionPBX 3f51ab0a43 Update scripts.php
Remove the extra ) to fix the syntax.
2016-07-08 17:09:09 -06:00
Mafoo 9bc0fded96 BugFix-Add PROJECT_PATH for lua (#1740)
added project_path for lua to use where it needs to build urls
2016-07-08 13:12:37 -06:00
Alexey Melnichuk a52e9c3626 Add. EventConsumer class. (#1741)
Rewrite MWI and CallFlow subscribe handlers based on EventConsumer class.
Also on my test VirtualBox/Debian system Lua function `os.clock` produce
very strange result(delta ~0.015 for 1 second) so I switch to `os.time`.
Now to to stop this background Lua scripts it possible send CUSTOM event
with subclass `fusion::XXX::shutdown`. Where XXX is `mwi` or `flow`.

Usage of EventConsumer class
```Lua
-- create new object with timeout one minute
local events = EventConsumer.new(60000)

-- bind to some FS event
events:bind("SHUTDOW", function(self, name, event) ... end)

-- bind to another FS event with subclass
events:bind("CUSTOM::fusion::mwi::shutdown", function(self, name, event) ... end)

-- handle timeout event
events:on("TIMEOUT", function(self, name) ... end)

--run event loop
events:run()
```
2016-07-08 13:10:43 -06:00
FusionPBX 1094a3fe92 Update app_defaults.php
Music on hold import from XML strip the domain name and rate from the name.
2016-07-08 10:32:56 -06:00
FusionPBX 1a76484b5f Update local_stream.conf.lua
Set a default rate for chime list if one is not provided.
2016-07-06 16:27:22 -06:00
FusionPBX ded9255613 Update music_on_hold_edit.php
Make sure reload mod local stream after editing it.
2016-07-06 15:50:43 -06:00
FusionPBX ade26ea704 Update switch_music_on_hold.php
Remove permission for the select list as we would want all users to see global music on hold.
2016-07-06 15:41:26 -06:00
FusionPBX 454fb19843 Update music_on_hold_edit.php
Fix the chime select list so that it will show what was selected.
2016-07-06 15:33:01 -06:00
FusionPBX 0f84dbc9cd Update page.lua
Update page.lua add support for rtp_secure_media=true.
2016-07-06 14:48:00 -06:00
FusionPBX ec26328577 Update music_on_hold.php
Show global then local for those with music_on_hold_domain.
2016-07-06 14:13:17 -06:00
FusionPBX 5f0235e9c8 Update music_on_hold.php
Remove scope to simplify the interface after upload a user with the right permission can make it global.
2016-07-06 13:58:03 -06:00
FusionPBX dba97dd94a Update music_on_hold_edit.php
Add the translation for global and protect adding global music on hold using permissions.
2016-07-06 13:12:16 -06:00
FusionPBX 7dae4a9d25 Update app_languages.php
Add label-global to the global languages file.
2016-07-06 13:10:12 -06:00
Alexey Melnichuk 79cdf70ebd Add. Support multiple events. (#1736)
Now subscriber stops and remove pid files when FS shutdown.
So if you use Status->Services you will see correct status.
2016-07-06 12:37:16 -06:00
Luis Daniel Lucio Quiroz 760987e0de More efficient and compatible SQL query (#1737)
Don't do a nested select, it adds unnecessary overload to the db. Instead, use a left join, quicker and more compatible among db types.
2016-07-06 12:36:18 -06:00
FusionPBX beab1e2f65 Update switch_music_on_hold.php 2016-07-06 11:19:41 -06:00
FusionPBX 6efc61d41c Update music_on_hold.php
Update permissions for music_on_hold.php
2016-07-06 11:17:53 -06:00
FusionPBX 32120e20a7 Update app_config.php
Remove music_on_hold_global_* replaced with music_on_hold_domain in app_config.php.
2016-07-06 11:09:35 -06:00
FusionPBX 169126de67 Update music_on_hold.php
Reload mod local stream.
2016-07-06 10:46:43 -06:00
Alexey Melnichuk 9e5ce425b5 Fix. call_flow_monitor use new field call_flow_alternate_label instead old call_flow_anti_label (#1730) 2016-07-04 09:32:22 -06:00
FusionPBX 76ffe78adb Update music_on_hold.php
Fix the global upload and handling for mixed case upload to lower case.
2016-07-03 20:36:06 -06:00
FusionPBX c35bb365de Update music_on_hold_edit.php
Fix the music on hold chime list.
2016-07-03 19:47:20 -06:00
FusionPBX 84bcab1670 Update music_on_hold_edit.php
Add music on holder rate, and time name to music_on_hold_edit.php
2016-07-03 16:55:33 -06:00
FusionPBX 8cc3792f4c Update app_languages.php
Add timer name to app languages.
2016-07-03 16:53:14 -06:00
FusionPBX 1ddf99ef69 Update music_on_hold.php
Update music_on_hold.php prevent duplciate records if the path already exists.
2016-07-03 00:56:15 -06:00
FusionPBX 84a61d4b10 Update music_on_hold_edit.php
Change moh_settings to music_on_hold_settings.
2016-07-02 09:37:23 -06:00
FusionPBX e85ab3fb3c Update music_on_hold.php
Replace moh for music on hold to match the changes to app_languages.
2016-07-02 09:34:18 -06:00
FusionPBX 7befacd973 Update app_languages.php
moh replaced by music_on_hold
2016-07-02 09:28:46 -06:00
FusionPBX e55be29547 Update app_languages.php
Change label-sampling to label-rate to match the name of the field.
2016-07-02 09:27:21 -06:00
FusionPBX 2d40688c76 Update music_on_hold.php 2016-07-02 09:26:23 -06:00
FusionPBX 832bff5cfa Update music_on_hold.php
Fix the display for the rate or default in music on hold.
2016-07-02 09:22:40 -06:00
FusionPBX 491a837d71 Update dialplan.php
Use the domain array name as the row so it doesn't conflict with the row array.
2016-07-01 17:58:24 -06:00
FusionPBX 6955fa0a43 Update dialplan.php
Fix the global dialplan.
2016-07-01 16:50:50 -06:00
FusionPBX 4fc4d7e70e Update app_defaults.php
Adjust the indentation.
2016-07-01 16:49:12 -06:00
FusionPBX 2d6b1e5b8d Update app_defaults.php
Remove the context from app defaults.
2016-07-01 14:35:45 -06:00
FusionPBX bef9055497 Update dialplan.php
Fix the dialplan context on the import.
2016-07-01 14:33:55 -06:00
FusionPBX a2f42e6328 Update dialplan.php
Moving this code back to the way it was.
2016-07-01 14:04:38 -06:00
markjcrane 7c8a3ce788 Add another missing semi-colon. 2016-07-01 13:47:50 -06:00
markjcrane 865a1276b5 Add a missing semi-colon. 2016-07-01 13:46:24 -06:00
markjcrane 0e91a2a735 Add a missing ). 2016-07-01 13:44:58 -06:00
markjcrane 545eac8ca0 Work on a more efficient way to handle app_uuid_exists on a larger scale. 2016-07-01 13:42:44 -06:00
markjcrane d5b053ba74 Fix the syntax. 2016-07-01 13:05:54 -06:00
markjcrane 4f30eb3d9b Efficiency for app defaults. 2016-07-01 13:02:31 -06:00
markjcrane ff224fc8f5 Remove voicemails/app_defaults.php directory structure be created on demand. Move this code to scripts voicemail_directories.php 2016-07-01 12:09:44 -06:00
Alexey Melnichuk dc3575c05c Fix. Send message count in each MWI notify. (#1728)
* move send event code to separate function
* move get message count to separate function
2016-07-01 10:08:55 -06:00
reliberate 9f1f38c4be Voicemail: Integrate new file upload control on Voicemail Greetings page. 2016-07-01 03:18:07 -06:00
reliberate 5f33e2b592 Voicemail: Fix an issue with the Back button on Voicemail Greetings page. 2016-07-01 02:53:01 -06:00
FusionPBX 0d549fe368 Update switch_music_on_hold.php
Eliminate duplicates in the music list for the music on hold class.
2016-06-30 19:32:30 -06:00
FusionPBX d74498f351 Update ringbacks.php
Eliminate duplicates ringbacks class for the music list.
2016-06-30 19:31:24 -06:00
FusionPBX 20dbc7f903 Update music_on_hold.php
Change moh_ to stream_ to make it easier for those not native to English avoiding abbreviations. Music streaming is handled by FreeSWITCH mod_local_stream so the word stream seems appropriate.
2016-06-30 19:17:30 -06:00
FusionPBX 7c42b77e96 Update ringbacks.php
Update the music on hold list for the ringbacks class.
2016-06-30 19:10:07 -06:00
FusionPBX 2c5b5b6183 Update switch_music_on_hold.php
Change music on hold class method streams to get. Following HTTP REST concept for the name to get the list of data. This same convention can be used in any class.
2016-06-30 19:08:10 -06:00
FusionPBX 35149d0ff3 Update page.lua
Add leading zero support to page.lua.
2016-06-30 15:08:14 -06:00
Chris Black 118bcb132b Add missing bracket (#1726) 2016-06-30 14:51:56 -06:00
Alexey Melnichuk 0a740f4ccc Fix. Upload local MOH (Close #1714) (#1719) 2016-06-30 10:43:28 -06:00
FusionPBX 2b9311031d Update local_stream.conf.lua
Add a more generic query to make this code compatible with MySQL/Mariadb.
2016-06-30 10:03:32 -06:00
Alexey Melnichuk ba857b6acf Add. Event handler to support MWI. (#1720)
* Add. Event handler to support MWI.

* Fix. store cache only when get data from memcache

* Change. Use UUID as PID.
2016-06-30 09:55:37 -06:00
Chris Black ef18ad5fbe Add programmable keys to yealink t46 (#1722)
Add programmable keys to yealink t46.
2016-06-30 09:54:08 -06:00
FusionPBX 997ec94129 Update sip_status.php
Just use the gateway name when its global and @domain_name when its assigned to a domain.
2016-06-30 09:53:18 -06:00
Mafoo b4f17ecfb7 BugFix-Display global gateways name appropriately (#1723)
display '*@(Global)' for global gateways (instead of *@')
2016-06-30 09:52:13 -06:00
Alexey Melnichuk 80002fca2b Fix. create default path when upload new profile. (#1725)
Fix. set correct value for `Default` sampling.
2016-06-30 09:51:35 -06:00
FusionPBX 68f4669d48 Update local_stream.conf.xml
Remove the rate in the name xml handler will add it based on the rate that is defined in the param.
2016-06-30 09:50:32 -06:00
Alexey Melnichuk a6a6a1aaac Fix. event_socket_mkdir for Windows system. (#1724) 2016-06-30 08:11:52 -06:00
FusionPBX 3ca2b832ca Update local_stream.conf.lua
Changes to the conditions that build the name to make sure it builds it correctly.
2016-06-30 01:40:48 -06:00
FusionPBX 79390855fd Update switch_music_on_hold.php
Add the $ to the row to correct the rate.
2016-06-30 01:28:19 -06:00
FusionPBX 4bbf0983bf Update local_stream.conf.lua
Use the name/rate for global music on hold or domain_name/name/rate for local. If configuring as a default leave the /rate off the end of the string.
2016-06-30 01:18:17 -06:00
FusionPBX 0fb9fadea7 Update switch_music_on_hold.php
Fix the alias on the moh sql select string.
2016-06-30 00:40:01 -06:00
FusionPBX 18939097ae Update music_on_hold.php
Fix the default rate for music on hold.
2016-06-30 00:31:22 -06:00
FusionPBX ddfae833b1 Update switch_music_on_hold.php
Build the music on hold select list based on domain name, name and rate.
2016-06-30 00:23:51 -06:00
FusionPBX 17f20341ec Update music_on_hold.php
Adjust the spacing set the order on the music on hold.
2016-06-29 22:40:43 -06:00
FusionPBX 0a20ef955f Update music_on_hold.php
Music on hold - combine the same name with multiple rates under the heading. Improve indentation and comments.
2016-06-29 21:42:12 -06:00
FusionPBX c6e548c0ba Update music_on_hold.php
Since using the UUID for the music on hold name in FreeSWITCH adding the domain name as a prefix and rate are no longer needed.
2016-06-29 17:26:01 -06:00
FusionPBX 05ff231f9a Update local_stream.conf.lua
Remove the default stream will handle it another way.
2016-06-29 17:19:21 -06:00
FusionPBX a789c68e74 Update switch_music_on_hold.php
Music on hold select list use the UUIDs instead of the names.
2016-06-29 16:52:32 -06:00
FusionPBX d884a18cc0 Update local_stream.conf.lua
Use UUID for the name of the stream. Add a default to handle systems using default.
2016-06-29 16:25:17 -06:00
FusionPBX 5d1ca79319 Update music_on_hold.php
Simplify the music on hold stream name by removing the rate and domain name.
2016-06-29 00:03:58 -06:00
FusionPBX 795307c100 Update music_on_hold.php
When setting music on hold for a specific domain use the domain name as part of the stream name.
2016-06-28 20:20:58 -06:00
FusionPBX 17c1bf4142 Update music_on_hold.php
Order the music on hold by name in ascending order.
2016-06-28 20:01:55 -06:00
FusionPBX 3ae28ebc8c Create music_on_hold_delete.php
Add music on hold delete php file.
2016-06-28 19:58:29 -06:00
Alexey Melnichuk e5321d3d87 Moh windows (#1712)
* Fix. Support MOH app on Windows.

* Use `path_join` to build mask

* Fix. Build path on Windows.

Main problem is on line like  `path = '/'.trim(...),'/');`
On windows it produce path like `/c:/...`.
I also rewrite code to use`path_join` to build all paths.
So there no needs to tests either path end with path separator or not
you always can just write `path_join(a, b)`. `a.'/'.b` is not always produce
correct result and it require some additional works.

* Fix. Get correct MOH settings to display in Web UI.
2016-06-28 19:19:28 -06:00
badcrc 3151b9b74a Clear memcached when toggling on/off dialplans (#1717)
When clicking True/False link from the dialplan list (like outbound routers for examples), the change isn't effective until the cache expires. 

Full editing the dialplan entry (dialplan_detail_edit.php) does this right and clears the cache, I took the code from there.
2016-06-28 19:18:28 -06:00
FusionPBX 9d8a237bcd Update local_stream.conf.xml
Remove 'moh' local stream in favor of 'default'
2016-06-28 16:14:27 -06:00
markjcrane 6f2601e32a Use FreeSWITCH to run mkdir so it inherits its own user and group permissions. 2016-06-28 15:18:40 -06:00
FusionPBX 0354e137ea Update local_stream.conf.lua
Check if row.music_on_hold_timer_name is empty.
2016-06-28 12:24:31 -06:00
reliberate f75eef6307 Theme: Enhance audio playback indicator smoothness for files less than 30 sec in length. 2016-06-28 12:08:36 -06:00
FusionPBX 5c15a16a8d Update music_on_hold.php
Use SESSION domain_uuid instead of $domain_uuid.
2016-06-28 03:11:23 -06:00
FusionPBX 1c0e97d9e5 Update music_on_hold.php
Update music_on_hold.php so that it displays all streams from the database.
2016-06-28 02:32:22 -06:00
markjcrane a07b38a382 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-27 19:40:38 -06:00
markjcrane 6543e81b46 Remove the Polycom VVX template in favor of 4.x or 5.x templates. 2016-06-27 19:40:02 -06:00
Nate a07134ea30 Merge pull request #1713 from mafoo/BugFix-Bootstrap-Remove-map-file
BugFix-Bootstrap Remove map file
2016-06-27 14:16:12 -06:00
mafoo 1d9f0f0832 BugFix-Bootstrap Remove map file
removed reference to pwstrength-bootstrap.min.map as it causes a 404 on
any browser with a debugger attached
2016-06-27 16:47:07 +01:00
Alexey Melnichuk 873c7ad0a2 Change. remove CC configuration dependencies from mod_commands. (#1711) 2016-06-27 07:52:29 -06:00
Alexey Melnichuk 594f055c51 Fix. generate XXX_dir options in config.lua (#1709) 2016-06-26 13:45:57 -06:00
Alexey Melnichuk 9fcf45d05b Fix. generate correct config file. (#1708) 2016-06-26 13:18:49 -06:00
markjcrane 504ea75d3b Move the voicemail default settings to main default_settings/app_defaults.php for better efficiency. 2016-06-26 12:32:51 -06:00
markjcrane f1bda35eb8 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-26 12:00:38 -06:00
markjcrane f26930c819 Make the voicemail app_defaults more efficient and prevent duplicates. 2016-06-26 12:00:06 -06:00
Alexey Melnichuk ebfa71298d Add. option to store setting in memcache. (#1707) 2016-06-26 11:43:32 -06:00
Alexey Melnichuk 5a58cf1436 Fix. Set default values for max length settings (#1706) 2016-06-26 11:42:33 -06:00
markjcrane 6e29a95909 Add nowrap to time_condition_edit.php to correct a layout problem. 2016-06-26 11:20:13 -06:00
Alexey Melnichuk c0739c4d40 Fix. Load required libraries in voicemail. (#1705) 2016-06-26 09:03:21 -06:00
FusionPBX c3463392eb Update ivr.conf.lua
If the IVR Menu recordings are base64 don't update the path.
2016-06-24 18:40:14 -06:00
markjcrane 4757123d4b Get the settings.recordings.storage_type for the ivr menu using xml handler. 2016-06-24 14:55:16 -06:00
markjcrane 3d82239069 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-24 14:51:15 -06:00
markjcrane 3e51e8cb66 Add settings array to the config.lua. 2016-06-24 14:50:55 -06:00
Chris Black a196e23352 Fix variable names and clean up duplicate time settings in yealink files (#1694)
Fix the variable names to be consistent across all yealink provision
files. Also remove all the duplicate/redundant time settings from the
files.
2016-06-24 10:33:25 -06:00
Alexey Melnichuk 0a0383db9a Add. Handler for SUBSCRIBE method for call flow application. (#1701)
* Add. Handler for SUBSCRIBE method for call flow application.

Usage:
1. Run form fs_cli `luarun call_flow_subscribe`
2. Create new call flow extension and set feature code to `flow+<EXTENSION>`(e.g. `flow+401`).
3. Set on the phone BLF key to `flow+401`

This code based on `mod_valet_parking`.

* Add. prevent running 2 copy of script.

Remove some unused vars and simplify implementation.

* Fix. Use correct protocol for send event.

* Fix. Do escape SQL arguments

* Fix. escape `+` sign in call flow extension.
2016-06-24 10:32:19 -06:00
Mafoo f88691618e Enhance-make voicemail length configurable (#1702)
allow the voicemail max_lengths to be configured from domain/default
settings
2016-06-24 10:28:47 -06:00
FusionPBX 2189ce1e82 Update cmd.php
Add Applied response message and fix the referrer.
2016-06-24 10:13:25 -06:00
FusionPBX 64d42b1225 Update app_languages.php
Add button-applied to app_languages.php.
2016-06-24 10:10:51 -06:00
FusionPBX 8969e8171d Update device_dashboard.php
Fix the apply button for Device Keys for the Device Dashboard.
2016-06-24 09:47:13 -06:00
FusionPBX b36050114d Update switch_music_on_hold.php
Update the music on hold list.
2016-06-23 23:14:03 -06:00
FusionPBX 23fb7118a6 Update local_stream.conf.lua
Music on hold set the default timer name to 'soft'.
2016-06-23 16:42:12 -06:00
markjcrane af0c7cfe6a Uncomment two lines to restore the debug check. 2016-06-23 15:46:59 -06:00
markjcrane 36418f8a59 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-23 15:29:33 -06:00
markjcrane f9d191c520 Add full path to the music on hold chime list. 2016-06-23 15:29:14 -06:00
reliberate ef787dafbf Music on Hold: Add ability (and permission) to edit Name. Add check for required fields (Name and Path). 2016-06-23 15:02:01 -06:00
markjcrane 8e8454ff19 Update music_on_hold_timer to timer_name. 2016-06-23 13:35:53 -06:00
Alexey Melnichuk e44e4b4e3c Update Escene provision. (#1696)
* Update Escene provision.

Support DNS SRV record.
Set time zone.

* Add. Date/Time formats for Escene template.
2016-06-23 12:47:42 -06:00
Alexey Melnichuk 032872f5b3 Fix. Disable device provision. (#1700)
Close #1389
Rewrite code to write config file to file.
2016-06-23 12:47:06 -06:00
markjcrane 3f47e26616 Get music on hold from list from the database. 2016-06-22 20:28:20 -06:00
markjcrane ef43f49b9e Add sip_h_X- prefix to the accountcode in pin_number.lua. 2016-06-22 15:05:33 -06:00
markjcrane 4b17d5dac2 Add domain_uuid check to pin_number.lua. 2016-06-22 13:52:43 -06:00
markjcrane d1aa88dfd1 Add app/pin_numbers. 2016-06-22 13:49:54 -06:00
reliberate 68c442e063 Music on Hold: Style/layout tweaks.
Recordings:  Updated to support new audio playback indicator. Show upload date/time (when not using base64).
VM Messages:  Updated to support new audio playback indicator.
VM Greetings:  Updated to support new audio playback indicator.
CDR:  Updated to support new audio playback indicator.
2016-06-22 12:42:03 -06:00
FusionPBX e332afaf46 Update access_control_nodes.php
Fix the ACL node paging.
2016-06-22 11:55:30 -06:00
markjcrane dfb6489334 Remove some trailing spaces and update the copyright year in pin_number.lua. 2016-06-21 19:37:25 -06:00
markjcrane 5db79b687c Add database support to pin_number.lua. 2016-06-21 19:34:17 -06:00
markjcrane fd782483cf Fix the Directory file path for the Cisco 7940 and 7960 phones. 2016-06-21 19:01:30 -06:00
markjcrane 2b12ace5ee Fix the path to the 7940 and 7960 directory.xml. 2016-06-21 18:46:57 -06:00
markjcrane 2955b8447e Increase the voicemail greeting length that is allowed to 90 seconds. 2016-06-21 18:35:05 -06:00
markjcrane 59304c226f Add $sql .= "WHERE device_uuid = '".$device_uuid."' "; to the device lines in device_dashboard.php. 2016-06-21 18:32:30 -06:00
markjcrane ecc7317d62 Update device_user_uuid. 2016-06-21 18:09:37 -06:00
markjcrane f4765e954b Improve code for access controls. 2016-06-21 18:00:38 -06:00
markjcrane 774dfd1053 Improve the indentation on default_setting_edit.php. 2016-06-21 17:58:05 -06:00
markjcrane 38b62a4572 Fix the dashboard device keys 2016-06-21 17:57:06 -06:00
reliberate 4204188c00 Music on Hold: Update app_defaults to use db field music_on_hold_timer_name instead; reflective of the MOH changes just committed. 2016-06-21 16:06:09 -06:00
reliberate 6db9b1f4fb Music on Hold: Support multiple global categories. Support for changing moh domain. Support for managing additional stream parameters (shuffle, stereo, interval, chimes, custom moh paths, etc). Enhanced file system housekeeping.
Theme: Enhanced audio playback progress indicator.  Added settings to control body icon normal/hover colors.
VM Greetings: Updated to support new audio playback indicator (more apps to come shortly).
Group Permissions: Prevent enter key submission on search field.
2016-06-21 15:56:15 -06:00
Alexey Melnichuk 510c7665a4 Fix. Provision for devices without (#1689) 2016-06-21 08:06:45 -06:00
Alexey Melnichuk 42aec3c0d8 Fix. Edit user for device. (#1690) 2016-06-21 08:05:44 -06:00
Alexey Melnichuk 99c9b762f2 Update Escene template to Firmware 4.2.0 (#1680)
* Update Escene template to Firmware 4.2.0

* Add. Line label.
2016-06-20 11:46:43 -06:00
Alexey Melnichuk f59f0c9f50 Add. Use static function to find vendor by User-Agent string. (#1681)
Add. Escene and AddPac vendors.
2016-06-20 11:45:20 -06:00
Alexey Melnichuk b982eae5da Fix. Select key on devices for Grandstream (#1684) 2016-06-20 11:42:24 -06:00
Alexey Melnichuk 736519f3cd Fix. Export valid values for settings in provision template. (#1685) 2016-06-20 11:40:22 -06:00
FusionPBX 41a3290999 Update device_dashboard.php
Hide the 'apply' button on the devices keys dashboard until its ready.
2016-06-19 10:00:01 -06:00
FusionPBX c61eefdfb2 Update device_edit.php
Hide this until its ready.
2016-06-19 09:56:18 -06:00
FusionPBX bca0d39b96 Update ringbacks.php
The default ring back disabled for now but may re-enable as a method in the class which return the correct label and value.
2016-06-19 09:44:17 -06:00
FusionPBX 086650f7c9 Update ivr_menu_edit.php
Change the ivr_menu_ringback to default back to the original default of music on hold.
2016-06-19 09:39:47 -06:00
FusionPBX 7c8c6c99d0 Update ring_group_edit.php
Set the default ring_group_ringback to ${us-ring}
2016-06-19 09:35:21 -06:00
markjcrane da8d7316fb Update device_edit.php change user_uuid to device_user_uuid. 2016-06-17 17:45:42 -06:00
markjcrane 6991bd7649 Rename user_uuid device_user_uuid in the devices table. Add an apply button to the key dashboard and provision button to the device edit. 2016-06-17 17:34:31 -06:00
Alexey Melnichuk f9171c96aa Fix. Display key type in Profile app. (#1658) 2016-06-17 12:43:51 -06:00
Alexey Melnichuk ede2f8f57d Add. Support provision programmable keys for Escene devices. (#1674) 2016-06-17 10:43:27 -06:00
Mafoo e66c907fc9 BugFix-missing PROJECT_PATH for download files (#1675) 2016-06-17 09:22:54 -06:00
Alexey Melnichuk 38a5cb5a3f Fix. Make configure consistent with web interface. (#1671) 2016-06-16 12:20:34 -06:00
FusionPBX b6929e3897 Update {$mac}.cfg
Add outbound_proxy_1_port and outbound_proxy_2 and use outbound_proxy_1_address and outbound_proxy_2_address instead of primary and secondary.
2016-06-15 15:55:55 -06:00
FusionPBX 8828ec25cd Update {$mac}.cfg
Add another line feed.
2016-06-15 15:40:09 -06:00
FusionPBX f78aa73cd4 Update {$mac}.cfg
Add option for outbound proxy 1 and proxy 2
{$outbound_proxy_primary}
{$outbound_proxy_secondary}
{$outbound_proxy_enabled}
2016-06-15 15:29:34 -06:00
FusionPBX 7b683c4842 Update xml_cdr.php
Fix the order by number alias addition by grouping it with ( and ).
2016-06-15 11:48:53 -06:00
Alexey Melnichuk 40fe5f3138 Fix. Display correct info for extensions with number-alias. (#1665) 2016-06-15 11:39:09 -06:00
FusionPBX 3066f73d4f Update xml_cdr_extension_summary.php
Update the extension summary to use the new class. Add an option to export to CSV.
2016-06-14 22:51:38 -06:00
FusionPBX 6a9b6dff73 Update xml_cdr.php
Update the xml cdr class to generate a complete extension / user summary array.
2016-06-14 22:44:34 -06:00
FreeMe 50ef8b4ade Update app_languages.php (#1664)
Added Ukraine fields
2016-06-14 20:21:15 -06:00
FusionPBX 3b9c26c31d Update gateways.php
Fix the sytnax ont the gateways list show it shows the gateway list.
2016-06-14 19:52:57 -06:00
FusionPBX 85e73a4912 Update gateway_edit.php
Add a missing ) on gateway_edit.php.
2016-06-14 19:32:50 -06:00
FusionPBX d3009467ea Update gateways.php
Add missing brackets.
2016-06-14 19:27:15 -06:00
FusionPBX c09b7f80ef Update gateways.php
Add an 'or domain_uuid is null' if permission gateway_domain is given to the group.
2016-06-14 11:14:06 -06:00
FusionPBX 653e64b6dd Update gateway_edit.php
If permission to view all gateways then add an 'or domain_uuid is null'
2016-06-14 11:10:53 -06:00
FusionPBX 397285dd37 Update app_defaults.php
Ensure the values are reset after each loop through local_stream.con.xml attributes.
2016-06-14 11:06:29 -06:00
Alexey Melnichuk 83e45dda1a Fix. Select correct key in listbox in device edit form. (#1659) 2016-06-14 08:28:57 -06:00
markjcrane 07c038308f Correct the variable name. 2016-06-13 19:06:59 -06:00
markjcrane 2e0de74055 Replace the variable with the path to the sounds directory. 2016-06-13 19:04:23 -06:00
markjcrane 787502ea48 Rename local_stream.lua to local_stream.conf.lua. 2016-06-13 18:50:41 -06:00
markjcrane 366bf5fbea Add local_stream.lua to xml_handler. 2016-06-13 18:30:32 -06:00
markjcrane c3ff393f34 Add domain_uuid to the music on hold table. 2016-06-13 18:13:23 -06:00
markjcrane 45fddd1bef Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-13 17:52:52 -06:00
markjcrane b6aaebb7b3 Add the missing curly brackets. 2016-06-13 17:52:35 -06:00
Mafoo 54b0b3fb9a BugFix-default moh for source mode (#1657)
populate the default moh for switch source installs
set comment indents as preferred
2016-06-13 17:48:36 -06:00
markjcrane 91562a9e41 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-06-13 17:45:01 -06:00
markjcrane 70ab3e62f8 Update app_defaults for muisc on hold so it reads local_stream.conf.xml and loads the information in the database. Remove music_on_hold_category. 2016-06-13 17:44:15 -06:00
reliberate 01964bb5ab Command: Remove blank option from handler select element. 2016-06-13 16:58:52 -06:00
reliberate b992addd0b Voicemail Greetings: Fix style effecting radio button padding. 2016-06-13 15:27:57 -06:00
reliberate b0e77d1295 MOH: Fix style issue during playback. 2016-06-13 14:53:17 -06:00
reliberate 931b30db24 Call Flows: Restore missing quote in app_languages.php. 2016-06-13 13:05:55 -06:00
FreeMe d8ffd18af4 Update app_languages.php (#1656)
Corrected 'uk' field to Ukraine not english.
2016-06-13 10:58:23 -06:00
FreeMe 4824aee451 Update app_languages.php (#1655)
Filled in Romanian and UK fields
2016-06-13 07:36:55 -06:00
Len 91c3c0d521 updated README.md (#1653)
* Update README.md

* Update README.md
2016-06-13 07:34:38 -06:00
FusionPBX a3d8270e30 Update call_flows.php
Update call_flows.php rename anti to alternate.
2016-06-12 14:24:35 -06:00
FusionPBX 3ad7fe027c Update call_flow.lua
Call flow feature code update to play the right audio file.
2016-06-12 14:14:52 -06:00
FusionPBX a66324a242 Update call_flow.lua
Inside call_flow.lua rename anti to alternate.
2016-06-12 14:02:57 -06:00
FusionPBX 1003e70dd3 Update index.php
Disable the auto login if the default setting-> adminer -> auto_login is not set.
2016-06-12 00:15:43 -06:00
FusionPBX 11efb35712 Update xml_cdr.php
In the xml_cdr class change method xml_array from $row to $key. Key is more descriptive and should prevent bugs in the future.
2016-06-11 16:17:35 -06:00
FreeMe 0b2506dad1 Update app_languages.php (#1651)
Multilingual support for new features
2016-06-11 15:57:01 -06:00
FreeMe 9888b60334 Update {$mac}.xml (#1647)
Full configuration Linksys 942 - also disabled CF settings so that it dials *72 to mange from server rather than the phone directly
2016-06-11 15:24:32 -06:00
FreeMe b046094042 Update call_flow_edit.php (#1652)
Allows the page to become multilingual
2016-06-11 15:23:49 -06:00
FusionPBX 665273d0c7 Update app_languages.php 2016-06-11 11:08:21 -06:00
FusionPBX fad5fcd239 Update app_languages.php
Set temporary transltations for label-sound and label-alternate_sound
2016-06-11 10:19:16 -06:00
FusionPBX dcb9a655cd Update call_flow.lua
Rename the variables in call_flow.lua to match. New variables call_flow_sound and call_flow_alternate_sound.
2016-06-11 10:02:31 -06:00
FusionPBX 84ee791aea Update call_flow_edit.php
Fix the call flow alternate sounds so it saves to the database and its value is displayed when loading the form.
2016-06-11 09:49:22 -06:00
FusionPBX 5b9a1aadf2 Update call_flow_edit.php
Correct the SQL insert and updates and put the call flow sound and alternate sound into the order that matches the web interface.
2016-06-11 09:29:56 -06:00
FusionPBX 21538da340 Update app_languages.php
Change the labels to sound and alternate_sound.
2016-06-11 09:14:30 -06:00
FusionPBX cb96cb3362 Update call_flow_edit.php
Rename the call flows using anti to alternate.
2016-06-11 09:06:12 -06:00
FusionPBX b7a8e372ae Update app_config.php
Change call_flow_sound_on to call_flow_sound. Call flow anti to alternate and call_flow_sound_off to call_flow_alternate_sound.
This changes make it more consistent with the front end. For the few developers that have the call_flow_sound_on and call_flow_sound off I offer the these alter table statements.
ALTER TABLE v_call_flows RENAME COLUMN call_flow_sound_on to call_flow_sound;
ALTER TABLE v_call_flows RENAME COLUMN call_flow_sound_off to call_flow_alternate_sound;
2016-06-11 09:04:42 -06:00
Alexey Melnichuk 6095609c5a Add. Support sound prompts on call flow. (#1645)
This file uses new way to load recordings from DB.
2016-06-11 07:33:16 -06:00
FusionPBX c6b15a6537 Update xml_cdr_inc.php
Only check the select count if there is a default setting that instructs it to do so as it is slow on a large number of records.
2016-06-11 07:15:11 -06:00
FreeMe 5c7fcd1d9e Update {$mac}.xml (#1650)
Fix did not {$,,,}  the adminpassword field, changed and confirmed working
2016-06-10 23:03:49 -06:00
FreeMeUK 3a99301d65 Create {$mac}.xml (#1649)
A Linksys spa941 will accept the linksys942 file
2016-06-10 18:55:34 -06:00
Chris Black 96e1ad2cf4 Add ability for directory to use mod_flite or mod_cepstral (#1644) 2016-06-10 16:07:11 -06:00
FusionPBX e75a09d01d Update device_dashboard.php
Fix device key dashboard edit only.
2016-06-10 12:23:01 -06:00
markjcrane c30efdaa21 Change the permission name from device_username to device_user. 2016-06-10 11:02:17 -06:00
reliberate bf03b763ea Adminer: Fix and simplify previous auto-login feature (controlled by Default Setting). 2016-06-09 14:13:10 -06:00
markjcrane 227e7900ab Time to start using jsonb in the xml cdr table. 2016-06-08 19:25:51 -06:00
FusionPBX dd61071ddf Update index.php
Comment out the adminer auto login.
2016-06-08 19:14:43 -06:00
markjcrane 210d3d2d4a Update adminer.php. 2016-06-08 18:52:06 -06:00
FusionPBX feef9337e0 Update adminer.php
More work on adminer.
2016-06-08 18:41:32 -06:00
FusionPBX 4e2266a328 Update adminer.php
Update adminer.php
2016-06-08 18:38:27 -06:00
FusionPBX 13b8d524a3 Update adminer.php
Update Adminer to 4.2.5
2016-06-08 18:32:06 -06:00
FusionPBX 80c75554db Update template.php
Remove a character that accidently made it in a commit.
2016-06-08 17:32:08 -06:00
FusionPBX 3668f9584b Update template.php
Change the default logo.
2016-06-08 17:28:01 -06:00
Mafoo fb4ccbc6c7 BugFix Convert call_center to ringback class (#1637) 2016-06-08 15:40:24 -06:00
Mafoo 26a04ae0ab BugFix-Double default moh (#1639)
because app_defaults now deals with detecting the default music we don't
need to forcefully put it on the list
if default is detected name it using the $text['opt-default']
2016-06-08 15:40:05 -06:00
Mafoo 209f2d227c BugFix-remove-legacy-warning (#1638)
changed switch_music_on_hold->select to be more inline of usage
changed extension_edit to use new format
changed call_center_queue_edit to use new format while
https://github.com/fusionpbx/fusionpbx/pull/1637 is in testing
2016-06-08 15:15:36 -06:00
Mafoo c2850c7b58 BugFix-bad ref to $db in switch_recordings (#1636) 2016-06-08 13:43:10 -06:00
Mafoo d0882476a3 BugFix-moh class bad ref (#1635)
fixed incorrect referenced to the switch_recordings class
2016-06-08 13:27:23 -06:00
Mafoo 1118fd438b BugFix-problem with detect_switch (#1633) 2016-06-08 08:28:44 -06:00
Mafoo 12de451623 Reinstated the detect Configuration (#1624)
it is no longer required for the detect_switch to pass but this
reinstates the ability to change the values and check them with detect
configuration
2016-06-08 07:36:13 -06:00
Mafoo dd8640e172 Set postgresql as default (#1627)
Set the default database type to postgresql as that is the one promoted
for the scripted install
2016-06-08 07:34:51 -06:00
Alexey Melnichuk 644996b1f7 Add. Support bridge mode to call forward from Lua. (#1631) 2016-06-08 07:33:55 -06:00
Mafoo aa98a4f3a6 update installer to use default theme (#1626)
added support to allow install to use the theme's default settings and
reduce the number of php errors during the installer due to missing
settings
2016-06-08 07:31:45 -06:00
Mafoo 4605117d51 Enhance Ringback (#1590)
created new class to look after generating the list of ringbacks
available
adjusted MOH class so legacy method is still possible (just not recommend) and utilizes optgroups as well
converted ring_groups and ivr_menus to use new method
added translations
implemented list_recordings in switch_recordings class
2016-06-08 07:21:45 -06:00
markjcrane d4cfb7231d Fix the call center queue active call list. 2016-06-07 13:35:18 -06:00
reliberate 28dcd4ba56 Command: Fix SQL insert statement generation (insert comma after null, use single-quotes instead of double). 2016-06-06 17:24:08 -06:00
reliberate 5d34e38da1 Functions: Add function to retrieve countries array. 2016-06-06 16:57:11 -06:00
reliberate 4b709e0694 DB: Added Countries table. 2016-06-06 16:13:57 -06:00
reliberate e450022cd8 Extension: Update assigned Device line password only if user has permission to view/edit Extension password. 2016-06-06 14:36:31 -06:00
FusionPBX 692c5c36be Update xml_cdr_extension_summary.php
Add the domain_uuid.
2016-06-05 21:54:54 -06:00
FusionPBX a8f7bcc9f2 Update xml_cdr.php
Use the class variables.
2016-06-05 21:53:28 -06:00
markjcrane f341277148 Get the extensions then the summary array. 2016-06-05 17:53:12 -06:00
markjcrane d2d0e1f6e6 Remove the second quick_select variable that was accidently added. 2016-06-05 17:51:23 -06:00
markjcrane 405a6ad32d Adding user summary (extension summary) to the xml_cdr class. 2016-06-05 17:19:06 -06:00
FusionPBX 8f89358346 Update xml_cdr_inc.php
Work on the XML CDR export to CSV.
2016-06-03 19:47:35 -06:00
reliberate ccc5155d6d Files: Add pwstrength bootstrap plugin files (sorry). 2016-06-03 07:51:44 -06:00
reliberate 02dce2d495 Dashboard: Tweak Device dashboard component styles. 2016-06-02 18:41:39 -06:00
reliberate 72687adef2 Security: Integrate Settings and necessary functions to enforce password complexity requirements.
Theme: Add basic password strength indicator bar.
Default Settings: Also verify correct Type (name) on Upgrade > App Defaults.
User: Show Nickname in Contact select if no Given or Family name.
Password Reset: Integrate hide and convert password fields method to prevent browser prompt.
2016-06-02 18:26:32 -06:00
markjcrane e21d344cfd Check for the adminer permission to increase security. 2016-06-02 09:54:47 -06:00
reliberate 207e7616b1 Adminer: Require authentication to access adminer.php file. 2016-06-02 09:31:27 -06:00
reliberate ad1ae95415 Theme: Additional settings to control domain name (selector), menu toggle icon, and logout icon color and hover colors separately.
Adminer: Added ability to login automatically.
2016-06-01 22:04:00 -06:00
hblandford 5cc5bdc648 Update vars.xml (#1622)
Add Australian ring tone
2016-06-01 21:18:26 -06:00
markjcrane d56b8ab6a1 If last_sent_callee_id_number is set use it as the destination_number. 2016-06-01 16:45:50 -06:00
markjcrane d91369b8f7 Prevent duplicate values from being saved in the vars.xml file and remove some trailing spaces and fix some of the indentation. 2016-06-01 15:31:33 -06:00
FusionPBX ac0d1f3f48 Update app_config.php
Add the device_key_id permission.
2016-05-31 10:03:46 -06:00
FusionPBX 3cf86a459e Update device_dashboard.php
To edit the key in the dashboard device_key_id permission is required.
2016-05-31 10:01:32 -06:00
FusionPBX f95e107091 Update device_dashboard.php
Fix permissions and add the option to add and configure a device key.
2016-05-30 16:40:23 -06:00
FusionPBX 9e91d052b2 Update user_dashboard.php
Add device keys to the dashboard.
2016-05-28 19:55:23 -06:00
FusionPBX 6659d49caf Create device_dashboard.php
Add a new item for the dashboard device keys.
2016-05-28 19:52:28 -06:00
FusionPBX ebd7745d6d Update ring_group_forward.php
Add a few more comments and indentation to the ring group dashboard.
2016-05-28 19:50:20 -06:00
FusionPBX 05100c953c Update ring_group_forward.php
Make the ring group forward dashboard fit correctly for mobile devices.
2016-05-28 15:35:23 -06:00
Chris Black 69fca7ad69 set sip_trust_ctrl on all yealink profiles (#1619) 2016-05-27 12:14:36 -06:00
markjcrane 88a1f2dc1e Add switch.sql to resources/install/sql 2016-05-27 10:35:11 -06:00
FusionPBX 9fbc8bf44c Update device_edit.php
Show the selected user when editing a device.
2016-05-26 22:14:39 -06:00
FusionPBX 8368745b65 Update app_languages.php
Fix the label and description for the singular 'user'.
2016-05-26 22:04:45 -06:00
FusionPBX 8fe9609c51 Update device_edit.php
Set the device user label to singular.
2016-05-26 22:00:33 -06:00
FusionPBX b0cdde365b Update device_edit.php
Remove the device user add button.
2016-05-26 21:54:20 -06:00
FusionPBX 069f5c95e0 Update app_languages.php
Fix the translation on the description of the device user.
2016-05-26 21:49:44 -06:00
FusionPBX d2219caf38 Update switch.php
Add a missing forward slash.
2016-05-26 19:52:03 -06:00
markjcrane 37a2ed2d17 Minor update. 2016-05-26 13:08:53 -06:00
markjcrane f396eb04a0 This should complete work for setting module order for existing systems. 2016-05-26 12:51:53 -06:00
markjcrane 3211c0b44a Add module order for modules that are already in the database without an order set. 2016-05-26 12:46:07 -06:00
markjcrane 24b7b93988 Fix the syntax. 2016-05-26 11:28:30 -06:00
markjcrane 88bbd19d65 Add the include for the class. 2016-05-26 11:23:53 -06:00
markjcrane 7fff69f791 Remove save_module_xml() function and move it it into the modules class as the xml method. Eventual goal move everything out of switch.php. 2016-05-26 11:21:37 -06:00
markjcrane 8784787531 Adjust the order of the modules. 2016-05-26 11:01:03 -06:00
markjcrane 404ffaed8e Add a missing comma. 2016-05-26 10:52:37 -06:00
markjcrane 17bfd2eb35 Start using the module order. 2016-05-26 10:31:59 -06:00
Mafoo 59ddf92f1b I got the permissions wrong (#1616)
it should have been in octal mod (leading 0)
also updated the fax application as it needs the stickygid too
2016-05-26 05:55:46 -06:00
Mafoo a8b667cd0b Added sticky GID permissions (#1615) 2016-05-25 21:51:41 -06:00
FusionPBX 3ce93c654c Update switch_music_on_hold.php
Add missing forward slashes so the pattern will be correct for the preg_replace.
2016-05-25 17:42:56 -06:00
Mafoo a25c9a3e48 Added basic searching for moh (#1614)
added basic searching for the default moh directory
added app_defaults so moh is configured/repairable with app_defaults
changed to use PROJECT_ROOT
changed template replacement to be encased in comment so xml will
validate
changed to use preg_replace so leading spaces and tabs can be stripped
(to output clean xml)
local_stream_conf dos2unixed
made default search consistent (they should all be music/default or
music not a mixture)
2016-05-25 14:12:17 -06:00
Alexey Melnichuk b4bb2e8221 Add. Support Escene phone book (#1613) 2016-05-25 04:28:32 -06:00
FusionPBX 448b3e4422 Update modules.php
Set a default order when adding the modules.
2016-05-24 23:42:05 -06:00
FusionPBX 407e8973d5 Update module_edit.php
Set the order to label-order.
2016-05-24 23:26:51 -06:00
FusionPBX e5af4a09fe Update module_edit.php
Add module order to module_edit.php.
2016-05-24 23:16:30 -06:00
FusionPBX e1e3ad0ba9 Update app_config.php
Add module_order.
2016-05-24 23:12:01 -06:00
reliberate cb87324aad Theme: Don't add URL to main menu item if a submenu exists. 2016-05-24 18:21:26 -06:00
reliberate 7b45a631ee Users: Bug Fix - Group list now displayed in select box even when none have been assigned to the user. 2016-05-24 16:59:54 -06:00
Chris Black 4a4a613902 remove SMS (#1612) 2016-05-24 12:57:46 -06:00
Chris Black 2d05685103 Add support for twilio (#1610)
added support for twilio and made it a bit easier to add support for
other carriers as well.
2016-05-24 02:02:36 -06:00
FusionPBX e9836cca05 Update app_defaults.php
The sip profiles are being read from the templates/conf directory so copying the files is not needed.
2016-05-23 21:37:21 -06:00
markjcrane 09a6325034 Fix the remaining files that had the wrong syntax in the SPA devices. 2016-05-23 11:59:34 -06:00
FusionPBX 0fa4d7f4ba Update {$mac}.xml
Fix the syntax on the spa112 template.
2016-05-23 10:02:47 -06:00
FusionPBX 5a45a7aa2a Update {$mac}.xml
Fix the syntax on the spa122 template.
2016-05-23 10:01:56 -06:00
reliberate 9f34b5e719 Theme: Fix login footer, simplify and optimize code. 2016-05-21 17:38:23 -06:00
reliberate 8d2a190099 Gateways: Fix paging and order by.
Devices/Users/Extensions: Visual adjustments.
2016-05-21 13:04:31 -06:00
reliberate c34aed1ede Ring Group Forward: Don't include footer.php if is included within the Dashboard. 2016-05-21 11:51:26 -06:00
reliberate 73eac17cac Theme: Code cleanup, optimize CSS. 2016-05-20 19:08:10 -06:00
markjcrane 79e32c6b06 Add ability to assign a single user to a device. 2016-05-20 10:39:16 -06:00
FusionPBX c0c35d6853 Update {$mac}.cfg
Disable DND on the Yealink t29p
2016-05-19 23:06:26 -06:00
FusionPBX 9c53d0e031 Update {$mac}.cfg
Disable DND on the Yealink t28p
2016-05-19 23:06:17 -06:00
FusionPBX 5121083c4e Update {$mac}.cfg
Disable DND on the Yealink t27p
2016-05-19 23:06:10 -06:00
FusionPBX 24e30bfd31 Update {$mac}.cfg
Disable DND on Yealink t49g
2016-05-19 23:03:37 -06:00
FusionPBX 4eec0410c0 Update {$mac}.cfg
Disable DND on the Yealink t41p.
2016-05-19 23:02:47 -06:00
FusionPBX 7c4cc9d934 Update {$mac}.cfg
Disable DND on the Yealink t42g
2016-05-19 23:01:45 -06:00
FusionPBX 7a1d194a29 Update {$mac}.cfg
Disable DND on the Yealink phone for t46g
2016-05-19 23:00:42 -06:00
FusionPBX 4228467fe7 Update {$mac}.cfg
Disable DND on phone on the Yealink T48g
2016-05-19 22:59:42 -06:00
markjcrane 2b3213f9df Create yealink_time_zone_start_time and yealink_time_zone_end_time automatically. 2016-05-19 12:47:03 -06:00
Chris Black a8d5033953 Flowroute SMS (#1603)
* Fix Yealink provisioning for contacts/groups

Fix the Yealink provision templates to allow for directory_extensions,
groups and users.

* Fix group_uuid and user_uuid messup

* Yealink directory and provisioning changes

Includes the changes from PR 1582 with some fixes to the SQL.

Also merged all the directory_* options into ONE directory.xml

Will need to call the it with any of these:

http://mydomain/app/provision/?file=directory.xml&contacts=groups

http://mydomain/app/provision/?file=directory.xml&contacts=users

http://mydomain/app/provision/?file=directory.xml&contacts=extensions

http://mydomain/app/provision/?file=directory.xml&contacts=all

* Flow route SMS
2016-05-19 12:09:49 -06:00
FusionPBX 664a7fd2d7 Update {$mac}.cfg
Persist the volume after reboot on the Polycom 5.x template.
2016-05-19 11:23:28 -06:00
FusionPBX 80e4f64c37 Update {$mac}.cfg
Persist volume after reboot on the 4.x template.
2016-05-19 11:22:01 -06:00
reliberate 3bc6969e49 Theme: Make DateTimePicker on CSS .datepicker class available by default. 2016-05-17 13:44:42 -06:00
markjcrane 6f4c52d956 Prevent php warnings in the text php class. 2016-05-16 21:35:54 -06:00
FusionPBX 1e9489b1e5 Update scripts.php
Remove this code as its breaking the upgrade page when migrating from source to package paths.
2016-05-15 08:57:59 -06:00
markjcrane 6dda2e246d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-13 08:52:49 -06:00
markjcrane f89c2b2498 Applied changes from ronyshtamler to support exec-set in vars.xml. 2016-05-13 08:52:25 -06:00
SJS87 41db39bda0 E.164 format support - contact_phone_edit.php (#1581)
The + prefix is being removed, this should be ignored for the very start of the string, resolution below.

Line 69.
Replace:
$phone_number = preg_replace('{\D}', '', $phone_number);
With:
$phone_number = preg_replace('{(?!^\+)[\D]}', '', $phone_number);
2016-05-13 08:42:34 -06:00
Alexey Melnichuk 9f979b3299 Add. Support Escene phone book (#1598) 2016-05-13 08:35:47 -06:00
markjcrane b0e1f8cc38 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-13 08:22:23 -06:00
markjcrane f024039a02 Use effective_caller_id_name and effective_caller_id_number with follow me. 2016-05-13 08:21:58 -06:00
Alexey Melnichuk 6df1dae2a9 Fix. Use correct database for Call Center while FS load. (#1597)
Problem that `mod_commands` may load after than `mod_callcenter` and there no function `global_getvar`
So current code just create database with name `INVALID COMMAND!.db`.
2016-05-13 08:03:48 -06:00
FusionPBX edfe01b0c5 Update intercept.lua
Account for core.db in intercept.lua
2016-05-12 23:06:45 -06:00
markjcrane 6ba188dc5e Commented out the new database handle --local dbh = Database.new('switch') as it has a bug when freeswitch is using the DSN with the PostgreSQL driver. This change works around this problem by using the original database handler. 2016-05-12 20:43:57 -06:00
markjcrane 33e8f73879 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-12 11:52:00 -06:00
markjcrane 6c6ff4368f Add increased memory usage and upload max file size for PHP in the .htaccess file. 2016-05-12 11:51:37 -06:00
Chris Black 804565549b Yealink directory listing for extensions, groups, users contacts (#1588)
* Fix Yealink provisioning for contacts/groups

Fix the Yealink provision templates to allow for directory_extensions,
groups and users.

* Fix group_uuid and user_uuid messup

* Yealink directory and provisioning changes

Includes the changes from PR 1582 with some fixes to the SQL.

Also merged all the directory_* options into ONE directory.xml

Will need to call the it with any of these:

http://mydomain/app/provision/?file=directory.xml&contacts=groups

http://mydomain/app/provision/?file=directory.xml&contacts=users

http://mydomain/app/provision/?file=directory.xml&contacts=extensions

http://mydomain/app/provision/?file=directory.xml&contacts=all
2016-05-12 11:22:40 -06:00
markjcrane de362abfb5 Fix a minor issue. 2016-05-11 18:42:30 -06:00
markjcrane dabdbbeb95 Additional work on caller id name and number. 2016-05-11 18:37:01 -06:00
markjcrane 63384b3aa1 Add the new column source_number. 2016-05-11 18:21:36 -06:00
markjcrane d515d49faa Additional work on the destination_number on the new xml cdr import tool. 2016-05-11 17:58:43 -06:00
markjcrane 6344476e69 Fix the syntax to the last commit. 2016-05-11 17:05:06 -06:00
markjcrane 2660ea0893 Add source_number and change the destination_number to the number sent to the carrier. 2016-05-11 16:23:42 -06:00
markjcrane 55e6f76c72 Add a new permission number_alias. By default hide it to prevent confusing users. 2016-05-11 13:36:31 -06:00
markjcrane a4400b2497 Fix some warnings more warnings. 2016-05-11 13:23:53 -06:00
markjcrane d25a904079 Remove the error reporting in the include php.php. 2016-05-11 13:18:39 -06:00
markjcrane e3b874ee35 Change default permissions on ring groups. 2016-05-11 13:05:56 -06:00
markjcrane 83772690fc Change extension permission defaults. 2016-05-11 13:03:06 -06:00
markjcrane b39f09d442 Remove the comment on the tls-verify-policy and add enabled="false" 2016-05-11 10:24:28 -06:00
Mafoo 87d44390cd Fix for [ERR] sofia_glue.c:329 Invalid tls-verify-policy value: none (#1593)
you cannot actually set it to none, you have to not set it to get that
value.
made ipv6 profile tls settings consistent with ipv4 profile
2016-05-11 10:13:56 -06:00
markjcrane 87b92987b7 Run array unique and sort only on groups array if it exists. And use is_array instead of isset on the conditions that test if it is an array. 2016-05-11 09:20:10 -06:00
markjcrane d3c1417de6 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-11 09:06:29 -06:00
markjcrane fa75391a5d Check each array if it exist with for every foreach in the operator_panel/index_inc.php. 2016-05-11 09:06:14 -06:00
Alexey Melnichuk 6202b1e58f Update escene config. 2016-05-11 07:44:03 -06:00
FusionPBX d6bb63b0cc Update voicemail.php
Don't use is_array with glob.
2016-05-10 22:53:42 -06:00
FusionPBX 7e02426a80 Update voicemail.php
Use is_array with foreach in the voicemail php class.
2016-05-10 22:51:03 -06:00
markjcrane 8750f50c19 Fix data types on the new music on hold and add the path. 2016-05-10 19:19:47 -06:00
markjcrane b2e1dd4b2e Working on music on hold. 2016-05-10 19:09:45 -06:00
markjcrane 1427c56634 Rename gxp3275 to gxv3275. 2016-05-10 18:19:40 -06:00
FusionPBX 538e6bcc08 Update check_auth.php
Remove this code to fix a bug voicemail_id is numeric, extension is not always numeric, and number alias should be numeric.
2016-05-10 17:25:20 -06:00
FusionPBX fecc8e3510 Update app_defaults.php
Move the if ($domains_processed == 1) { so none of the code is processed more than one time.
2016-05-10 12:56:33 -06:00
FusionPBX 25fe0b7f93 Update app_defaults.php
Add media_mix_inbound_outbound_codecs to true by default.
2016-05-10 12:46:03 -06:00
markjcrane 5a9ad9da41 Update the record count for extensions list. 2016-05-07 18:06:36 -06:00
markjcrane 93d20531e6 On the extensions page use is_array($extensions) instead of $num_rows 2016-05-07 17:37:24 -06:00
markjcrane f9f57fffa6 Change the method to detect if the array exists for extensions. 2016-05-07 17:27:27 -06:00
markjcrane 1637b5c518 Fix a missing bracket from the last commit. 2016-05-07 16:15:15 -06:00
markjcrane 9f43ed627d To prevent all warnings for XML CDR Details check all arrays. 2016-05-07 12:28:07 -06:00
markjcrane fcb860d75a Fix the warning on XML CDR details. 2016-05-07 11:48:46 -06:00
markjcrane 09bceff74b Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-06 17:47:31 -06:00
markjcrane 55b598f2d0 Make sure the user extension arrray exists on the initial login. 2016-05-06 17:47:03 -06:00
Alexey Melnichuk 840ea3faa4 Fix. Do not populate invalid paths. (#1585)
Problem when `opendir($dir)` returns `false` and then
while cycle adds many empty strings which produce in the end
```
/etc/freeswitch/tls
/etc/freeswitch/tls/
/etc/freeswitch/tls//
/etc/freeswitch/tls///
/etc/freeswitch/tls////
/etc/freeswitch/tls/////
/etc/freeswitch/tls//////
/etc/freeswitch/tls///////
```
2016-05-06 09:28:10 -06:00
Alexey Melnichuk f828c1c56b Escene provision (#1140)
* Add. Provision to Escene ES330/ES320

* Add. Look up Escene device by ext+domain.

* Update Escene template.

* Add. `provision` section in config.

Found than ES330 some time hangup when it try get software/core and get error from fusion.
2016-05-06 01:49:43 -06:00
FusionPBX 73605b4454 Update user_dashboard.php
Fix the CPU usage on the dashboard.
2016-05-06 01:20:57 -06:00
FusionPBX 4fcb367e8b Update user_dashboard.php
Use a different approach to get the CPU usage.
2016-05-05 22:52:30 -06:00
reliberate 2b7c6bac00 Theme: Fix bug in web font loader. 2016-05-05 20:10:19 -06:00
reliberate 794361da95 Fix path issue in require.php. 2016-05-05 14:18:59 -06:00
reliberate 4ee1e05ebe Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-05 13:54:37 -06:00
reliberate fb2f13bb9c CDR: Fix PHP warnings regarding paging. 2016-05-05 13:54:17 -06:00
markjcrane ab911a17f2 Set the footer color. 2016-05-05 13:40:01 -06:00
markjcrane 7b9ca61637 Change the background color of the footer during the install. 2016-05-05 13:33:02 -06:00
markjcrane f77e978914 Conditional includes if the config.php exists this fixes css.php for the install. 2016-05-05 13:22:08 -06:00
reliberate 2b6f51024d Theme: Integrate ability to use Google Fonts. 2016-05-05 12:57:08 -06:00
markjcrane 07a01de694 Fix the problem with active call center displaying correctly. 2016-05-04 23:18:55 -06:00
markjcrane de8794dca9 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-04 22:47:13 -06:00
markjcrane 164fd03c98 Disable limit and offset when exporting CDR to CSV. 2016-05-04 22:35:05 -06:00
Chris Black 0b3eaa4d30 Allow outside transcription service to be called (#1578)
Allows users to create a function called get_transcription that they
can use to call any transcription service such as AT&T, Google,
iSpeech, etc and return just the translated text to be included in the
email.
2016-05-04 17:03:01 -06:00
reliberate fd4230e5b5 Theme: Move CSS to external file. 2016-05-04 12:55:56 -06:00
markjcrane 3abaff004c Check the missing array has content before processing it. 2016-05-04 00:22:35 -06:00
markjcrane 7aa61e2d53 After making changes to the IVR Menu flush memcache for the IVR. 2016-05-03 23:09:18 -06:00
markjcrane 8ae2a2e2a6 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-03 16:06:27 -06:00
markjcrane 83f40ee7bf Change default setting for smtp_secure = tls. 2016-05-03 16:06:08 -06:00
reliberate a8c447354b Theme: Set default background color for sub menu. 2016-05-03 12:23:13 -06:00
Alexey Melnichuk 114b2fb202 Fix. Set all allowed extensions while default settings. 2016-05-02 23:59:47 -06:00
markjcrane 8ef1c951f8 Fix a spelling mistake in the polycom template for the parameter that was changed today. 2016-05-02 19:13:08 -06:00
markjcrane 9143ba902f Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-05-02 15:57:32 -06:00
markjcrane 253f22e432 Add quotes around the values in the Polycom 4.x and 5.x templates. 2016-05-02 15:57:13 -06:00
markjcrane 284f134903 Add default dtmf-type of rfc2833 to all the SIP profiles. 2016-05-02 15:56:20 -06:00
reliberate 5956a3a17f Menu Manager: Add ability to customize main and sub menu icons. 2016-05-02 14:42:06 -06:00
markjcrane 46611580ac Add dns_server_primary and dns_server_secondary to the newer yealink provisioning files. 2016-05-02 13:10:32 -06:00
markjcrane 3fa1f5b4e7 Add two new provision variables dns_server_primary and dns_server_secondary. 2016-05-02 11:46:26 -06:00
reliberate 930ea7f113 Theme: Enable body style on public pages (still excludes default login). 2016-05-02 10:52:15 -06:00
markjcrane 0db8ddb949 Add a new xml_cdr_import.php and add limit and filter options to the xml_cdr.php class. 2016-05-01 17:44:53 -06:00
markjcrane 716762a58b Fix the dialplan import problem caused when checking if the array 'isset' one word was incorrect. 2016-05-01 08:21:15 -06:00
markjcrane 70a349bb6a Call direction outbound is set on the outbound route making it redundant and so removing it. 2016-05-01 08:08:30 -06:00
markjcrane f1a55f52ae Improve the xml cdr class. 2016-04-30 00:33:35 -06:00
markjcrane 2806a0602e Fix the warning for the interactive conference page. 2016-04-29 17:55:27 -06:00
markjcrane e2ce33ca49 Check that the arrays exist for music on hold before using them. 2016-04-29 17:17:29 -06:00
markjcrane 8b4883c36c Make sure the array exists for the backup tool. 2016-04-29 17:13:36 -06:00
markjcrane d3ea04c602 Re-enable hide PHP warnings for regular users. 2016-04-29 17:08:23 -06:00
markjcrane 6d92f6774f Fix the access control list. 2016-04-29 17:01:04 -06:00
markjcrane d31714580f Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-04-29 16:14:03 -06:00
markjcrane 68da8f9fe2 Remove an extra parenthesis on domain_delete.php. 2016-04-29 16:13:44 -06:00
FusionPBX a98d57902e Merge pull request #1569 from mafoo/Enhance-Install_PDO_Warning
Detect if there is at least one database driver
2016-04-29 16:10:56 -06:00
markjcrane 15a922cbf2 Correct the syntax. 2016-04-29 16:09:39 -06:00
markjcrane 6df5aa0dde Check additional arrays to see if they are exist before using them in a foreach. 2016-04-29 16:04:10 -06:00
markjcrane a0b4d6e47c Verify that all arrays used in a foreach use isset for classes/dialplan.php. 2016-04-29 15:49:36 -06:00
markjcrane 5e57418d52 Disable more of the horizontal login code plan on reworking and using as an option later. 2016-04-29 15:33:52 -06:00
markjcrane 6570f8cf40 Define the text array before it is used. 2016-04-29 15:32:55 -06:00
mafoo 2004144eba Detect if there is at least one database driver 2016-04-29 21:54:04 +01:00
markjcrane fbb16be924 Move the comment in template.php. 2016-04-29 11:38:56 -06:00
markjcrane 24569c1c53 Remove the horizontal login form. 2016-04-29 11:23:13 -06:00
markjcrane eec04d521d Add the missing function to pdo.php. 2016-04-29 11:21:26 -06:00
markjcrane d43a8f20a5 Change phpsqlitedatatype to php_sqlite_data_type. 2016-04-29 11:15:02 -06:00
markjcrane e342ee464e Update the conference interactive permissions for the user group. 2016-04-29 10:31:03 -06:00
markjcrane 3b3515babf Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-04-29 09:49:58 -06:00
markjcrane e59a1747b5 Change voicemail_id from text to numeric and remove the cast on voicemail_id. 2016-04-29 09:49:04 -06:00
FusionPBX c73777dfeb Merge pull request #1562 from moteus/display_long_extensions
Fix. Display long extensions (>9 digits)
2016-04-29 09:25:46 -06:00
markjcrane 769b90bb2b Check to make sure the music on hold directory exists before trying to open it. 2016-04-28 22:36:55 -06:00
markjcrane d26f64f786 Check the whether the file exists before checking the size. 2016-04-28 22:23:15 -06:00
markjcrane 14b029a15e Correct the str_to_named_array function so that the result is null. 2016-04-28 22:15:30 -06:00
markjcrane 516e1d2ede Use isset on all arrays in call_center_active_inc.php. 2016-04-28 21:47:45 -06:00
markjcrane f1f16a243f Check all arrays are set for the operator panel before using foreach. 2016-04-28 21:40:40 -06:00
markjcrane 7a9b9c8170 Check the array isset in active calls. 2016-04-28 21:29:54 -06:00
markjcrane 0ec2083121 Check to make sure directory does not exist before using mkdir. 2016-04-28 21:22:48 -06:00
markjcrane d516db8b30 Make sure the array exists before using it in group_permissions.php. 2016-04-28 21:18:26 -06:00
markjcrane e34196585c Add (!class_exists('extension')) 2016-04-28 16:57:42 -06:00
markjcrane bc51cd7d1d Cleanup the indentation ... tabs and whitespace after the last pull request. 2016-04-28 16:56:44 -06:00
markjcrane f204f6189e State the full path for which. 2016-04-28 15:35:46 -06:00
markjcrane 1509a8ea11 Add the full path to the commands by using 'which' 2016-04-28 15:17:19 -06:00
markjcrane 18df3effec Fix a filesize warning for provisioning using strlen instead. 2016-04-28 15:06:16 -06:00
FusionPBX e97782fbee Merge pull request #1557 from hcoin/fix-warnings
Mariadb 10.1, Freeswitch 1.6, Ubuntu Xenial LTS, Ldaps, warnings enabled, cli install/upgrade
2016-04-28 14:43:06 -06:00
reliberate 7a80051a4f Theme: Restore display: inline-block on login body. 2016-04-28 13:05:34 -06:00
Alexey Melnichuk 0c61e650d0 Fix. Display long extensions (>9 digits) 2016-04-28 14:37:58 +03:00
markjcrane 7b413a8058 Update the xml_cdr php class to get it operational. 2016-04-27 23:51:53 -06:00
markjcrane 8d9d76f7dc Add a new xml_cdr php class. 2016-04-27 13:24:59 -06:00
Harry G. Coin 54df7b8d12 add tls, support ldaps 2016-04-25 22:22:03 -05:00
Harry G. Coin 09e6d2e3d7 last fixes needed to support mariadb 10.1 2016-04-25 22:20:31 -05:00
Harry G. Coin 7442f32a53 Cleanups.
Remove default 192.168.42.42/32 allow.
Restore missing app/fax/resources/functions/parse_attachments.php to satisfy pre-existing include
Fix so sql in voicemail app works if var undefined.  Warning: don't know if non Mariadb's like cast(...) .
Cleanup close in event socket.
2016-04-25 22:16:19 -05:00
Harry G. Coin 9986d2875b fix so maradb 10.1 install can create the database. 2016-04-25 21:34:44 -05:00
Harry G. Coin fd313a7c66 fixes so cli installs/upgrades work.
Also another step along the way allowing freeswitch to run -u -g freeswitch and fusionpbx to run -u -g www-data
2016-04-25 21:26:26 -05:00
Harry G. Coin 1497c7cb7e small orm bug fix 2016-04-25 21:12:39 -05:00
Harry G. Coin aaf6bb8f96 Fix to cure uninitialized variable warnings whenever schema is called.
Also many minor warning bug fixes in schema.php
Might as well take the plunge and go to default show warnings.
Uninitialized variable and small bug fixes install fusionpbx
2016-04-25 21:09:14 -05:00
Harry G. Coin 93cee9d479 Patch to support sendmail, qmail, mail.
Also allow port to be set without munging host string (easier to change from 25/465/custom/etc).
2016-04-25 20:58:28 -05:00
Harry G. Coin 64eeca8e2d Fix so fusionpbx doesn't fail on servers with php versions later than 5. (e.g. php7).
Also a few warning causes fixed.
Also, one step along the way to allow freeswitch to be u freeswitch g freeswitch and fusionpbx to run www-data:www-data.
2016-04-25 20:52:21 -05:00
Harry G. Coin 179f4840a8 include omitted column name, partial fix to support mariadb 10.1. 2016-04-25 20:44:30 -05:00
Harry G. Coin 96e71eadf7 ensure the directory variable actually has a directory name. 2016-04-25 20:40:23 -05:00
Harry G. Coin 91a92d8e5e \r\n --> \n
Cause all the .php files containing lines ending with \r\n to instead end with \n.

DYI with:

find fusionpbx -type f -name '*.php' -exec dos2unix '{}' \;
2016-04-25 20:30:23 -05:00
Harry G. Coin 89e5ecbcdf The goal is to increase confidence in fusionpbx, one step is to run by default with error_reporting (E_ALL ^ E_NOTICE);
So, please find in this set numerous small changes which eliminate numerous php warning messages.

Also, a small bug fix in an sql statistics routine, naming a count(*) field as count, so displaying correct detail.

If any of the proposed changes are omitted, the relevant page will experience php warnings.

There are no doubt fusionpbx pages I've yet to visit that still generate warnings, this set is nearly certainly not comprehensive.
2016-04-25 20:19:58 -05:00
reliberate 48876aa39b Users: Correct username input field type (from 'txt' to 'text'). 2016-04-25 15:07:42 -06:00
reliberate b1becf5f17 Theme: Revert CSS change.
Contacts: Change email input field type to 'text' instead of 'email'.
2016-04-25 10:34:39 -06:00
reliberate 7531cc15e5 Theme: Add input[type=email] to styles. 2016-04-25 10:26:17 -06:00
FusionPBX 3b73e0c1d1 Update user_dashboard.php
Add an inline if statement to the user dashboard.
2016-04-22 13:43:02 -06:00
markjcrane 81746f1233 Minor change to contact edit. 2016-04-22 10:35:27 -06:00
markjcrane 2fd1a44842 voicemail_id is not guaranteed to be numeric so can't use the cast unless we protect against non numeric ids. 2016-04-19 14:05:12 -06:00
markjcrane 3758d84216 Add the lan acl as a default again. 2016-04-19 00:21:52 -06:00
FusionPBX 06f6f1302e Merge pull request #1553 from moteus/intercept_direction
Add. optional intercept only inbound/outbound calls.
2016-04-18 22:54:03 -06:00
FusionPBX 4230d3b414 Merge pull request #1450 from daniel-lucio/patch-3
Wrong variable in freeswitch.email
2016-04-18 21:20:44 -06:00
Alexey Melnichuk 15fbc21b4d Add. optional intercept only inbound/outbound calls.
Note.
  * `inbound` is call to some extension
  * `outbound` is call from some extension to external number.

Currently there no way to find call from extension to extension as `outbound`
2016-04-18 16:06:27 +03:00
markjcrane a54772c406 Restore the path to config.lua. 2016-04-16 00:44:10 -06:00
markjcrane 09d304a1aa Use the connect method in the constructor. 2016-04-16 00:27:24 -06:00
markjcrane a2b6f24a36 Get the db_type, db_username, db_password, and more using the constructor. 2016-04-16 00:21:01 -06:00
markjcrane ca06335136 Set the full path to the config.lua script. 2016-04-15 23:16:19 -06:00
markjcrane 7277ed8f49 Set the sciprt directory from the session variable. 2016-04-15 19:57:29 -06:00
markjcrane abb6a9b770 Get the database connection for save_phrases_xml.php. 2016-04-15 19:52:21 -06:00
markjcrane 2b1ede0b70 Only set switch default settings for variables that are enabled. 2016-04-15 19:44:55 -06:00
markjcrane 406c36b6b4 Only set the SESSION variables from default settings for the switch category. 2016-04-15 19:39:55 -06:00
markjcrane a59bfe1021 Change the object name install_fusionpbx.php uses dbh instead of db. 2016-04-15 19:31:47 -06:00
markjcrane 157f49a303 Update the install to set the default setting session variables. 2016-04-15 19:27:19 -06:00
markjcrane df9d9a5e9d Fix the redirect on two more files. 2016-04-15 18:40:23 -06:00
markjcrane f03cbc7b1a Fix the install path for the redirect. 2016-04-15 18:39:12 -06:00
markjcrane 49a53db5d1 If the event socket information is not set then use the defaults. 2016-04-15 18:22:28 -06:00
markjcrane 3efb6881db Add missing 'this' 2016-04-15 18:07:47 -06:00
markjcrane e8640966fd Add the switch default settings in a more efficient way. 2016-04-15 17:59:34 -06:00
markjcrane 4a564a1215 Use a more efficient way to add the default settings. 2016-04-15 09:24:55 -06:00
markjcrane b3ba1aaf6f Use intuitive names for the arrays and move one of the queries out of the loop. 2016-04-15 00:47:49 -06:00
markjcrane 69d36b806d Add class_exists 2016-04-14 23:23:14 -06:00
markjcrane fdc0435ab3 Update groups.php. 2016-04-14 23:12:57 -06:00
markjcrane 6828efb12c Update the scripts class. 2016-04-14 23:09:49 -06:00
markjcrane 2e875b106b Missed two of the $db connections. 2016-04-14 23:05:05 -06:00
markjcrane 4702530944 Remove the global $db connection in switch.php. Future will move all of these functions to php class methods. 2016-04-14 23:00:36 -06:00
markjcrane 70524407a6 Update the constructor and $db connection handling in the groups and switch_settings classes. 2016-04-14 22:38:28 -06:00
markjcrane cfb1b28a54 Add a contructor to the dialplan class. 2016-04-14 22:34:10 -06:00
markjcrane b7d8b3c23f Update domains and schema classes. 2016-04-14 22:10:47 -06:00
markjcrane 6e5fe31303 Schema use $this->$db instead of $db. 2016-04-14 21:51:11 -06:00
markjcrane f16259f268 Work on the install. 2016-04-14 21:14:40 -06:00
markjcrane ed06174cda Set extension summary to use GET instead of POST. 2016-04-14 21:11:05 -06:00
markjcrane fbc3ac5e70 Remove the last contact_email field that was deprecated. 2016-04-14 20:13:40 -06:00
markjcrane 5ca4307ef1 Combine some of the default settings. 2016-04-14 20:11:47 -06:00
markjcrane 7fc9e44768 Update the extension summary in preparation to expand it further. 2016-04-14 15:08:16 -06:00
markjcrane ea0c3e9220 Make the advanced -> command execute page more compact. 2016-04-14 14:50:06 -06:00
markjcrane 8b5e166eda Remove contact_email from v_contacts table as this was replaced by the v_contact_emails table. 2016-04-14 10:40:25 -06:00
FusionPBX d709dc3595 Merge pull request #1547 from moteus/fax_allowed_extension
Add. `allowed_extension` array to specify allowed files in email.
2016-04-14 09:32:17 -06:00
Alexey Melnichuk 969889cc98 Add. allowed_extension array to specify allowed files in email. 2016-04-14 17:38:33 +03:00
reliberate 478e8b7d7a Login: Add IDs to submit buttons. 2016-04-13 16:32:40 -06:00
reliberate 53b07c67f7 Misc: Fix datetimepicker on Time Conditions, CDR, Contact Times, etc.
Misc: Fix textarea height.
Theme: CSS adjustments to correct misc bugs.
2016-04-13 13:23:07 -06:00
reliberate e6ce059454 Theme: Rework login settings, add settings to enable ability control login page background image(s) and color(s) separately from standard background image(s) and color(s). 2016-04-12 16:18:50 -06:00
FusionPBX e0dd9e299f Merge pull request #1533 from moteus/dialplan_copy_check_str
Fix. Check string before build sql when do copy dialplan extension.
2016-04-12 12:40:01 -06:00
FusionPBX af457337ae Merge pull request #1541 from moteus/parse_imap_text
Improve mail parse
2016-04-12 12:39:37 -06:00
reliberate 2732c4253a Dashboard: Remove unnecessary inline cursor style, minor mods.
Call Routing: Minor mods.
2016-04-12 10:20:40 -06:00
Nate 3fbf656c0f Merge pull request #1544 from moteus/dashboard_session_count
Fix. Display session count on User Dashboard.
2016-04-12 10:10:52 -06:00
Nate 57c9642d19 Merge pull request #1543 from moteus/dashboard_switch_uptime
Fix. Display `Switch Uptime` on User Dashboard.
2016-04-12 10:02:07 -06:00
Alexey Melnichuk 5971e716c4 Add. Make Channels link that point to Active calls 2016-04-12 16:25:06 +03:00
Alexey Melnichuk c8a12bf254 Fix. Display session count on User Dashboard.
Also it does not request information about all active calls which can be quite huge.
2016-04-12 16:18:19 +03:00
Alexey Melnichuk 8fe3e4c583 Fix. Display Switch Uptime on User Dashboard. 2016-04-12 15:42:17 +03:00
reliberate 1f1f8abd03 Theme: Integrate settings to control button styles and form input styles.
Dashboard: Remove table row hover and pointer cursor if not linked.
2016-04-11 17:52:58 -06:00
reliberate fdbec32268 Theme: Add setting to control Login box width. 2016-04-08 15:01:29 -06:00
reliberate 34117a39e1 Theme: Sticky main menu items hover state, padding adjustments. 2016-04-08 14:01:24 -06:00
reliberate 9c8576ee50 Call Control: Fix wrapping when mini paging controls visible. 2016-04-08 11:00:58 -06:00
reliberate 507b50959a Theme: Add setting to control border radius of Dashboard blocks. 2016-04-08 10:58:18 -06:00
Alexey Melnichuk 889b8f9998 Change. parse_message do full parse test and attachments.
Change. use only `text/plain` part to build front page.
Change. use only `attachment` but not `inline` files to build fax file.
2016-04-08 12:31:13 +03:00
reliberate 7e8920d196 Fun Stuff: http://pasteboard.co/1ormWYp.png
Login: Add settings to style Reset Password (and related) text links, add (disabled) settings to display domain name field.
Theme: Add settings to control login box border size, color, radius and padding.  Explicitly defined placeholder text color/opacity (where possible).
2016-04-07 19:35:39 -06:00
reliberate bb1a79462f Theme: Still show main menu item text on sm viewport if icons off. 2016-04-07 15:59:48 -06:00
reliberate eaf213f760 Operator Panel: Fix incorrect block height for active extensions (style issue). 2016-04-07 15:34:24 -06:00
reliberate 141f98ffa5 Footer: Fix spacing in copyright text. 2016-04-07 15:26:40 -06:00
reliberate dfacd41817 Command: Disable Find/Replace control, not compatible with Bootstrap. 2016-04-07 15:20:06 -06:00
reliberate f07edb407d CDR: Fixed export function. 2016-04-07 14:48:12 -06:00
reliberate 2ca9bd75e4 Dashboard: Fix issue with Ring Group Forward not saving changes.
Misc: Restore/Fix some missing/botched HTML tags.
2016-04-07 14:14:32 -06:00
reliberate a839585fdf Theme: Remove call to old images. 2016-04-07 13:10:59 -06:00
reliberate ed46da2a11 Theme: Fix Domain Selector bug. 2016-04-07 13:01:21 -06:00
reliberate 75ec879ff9 Theme: Integrate settings to customize the style of edit form tables (label, field, heading and row cells).
Editor: Prevent / (slashes) in clip name.
Dialplan Editor: Code cleanup, and minor adjustments for theme compatibility.
Functions: Add option to check_str() to skip string trim.
2016-04-07 12:00:19 -06:00
Alexey Melnichuk 8863db89fd Fix. get text part of email message with single part email. 2016-04-07 13:11:24 +03:00
FusionPBX 87adfbae24 Merge pull request #1534 from moteus/fax_send_pdf
Fix. send fax file as PDF in response message
2016-04-06 01:47:18 -06:00
markjcrane 0bef8e2e5a Fix IVR Menu say and tone for long greeting. 2016-04-06 01:38:30 -06:00
markjcrane 5339bee11d contact_group_uuid value is not working get the value from the database. 2016-04-06 00:39:27 -06:00
markjcrane daedac51fc Fix the contact group delete button. 2016-04-06 00:33:52 -06:00
markjcrane c38ff886e5 Fix assigning groups to contacts. 2016-04-06 00:27:57 -06:00
markjcrane 0801796bce Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-04-06 00:15:10 -06:00
markjcrane 2b5480f894 Remove the lan access control list as its not needed by default. 2016-04-06 00:14:53 -06:00
reliberate 89c7129169 Theme: Fix border rendering issue on edit form tables. 2016-04-05 20:22:29 -06:00
reliberate 5f7b4efe6f Theme: Correct CSS so no main/sub menu border by default (really). 2016-04-05 19:59:37 -06:00
reliberate 798b423eba Theme: Correct CSS so no main/sub menu border by default. 2016-04-05 19:52:04 -06:00
reliberate f1b52c017a Theme: Add settings to control main and sub menu border size, color and corner radius. 2016-04-05 19:38:50 -06:00
reliberate a973187374 Theme: Scroll to top before opening Domain Selector (fixes offset bug). 2016-04-05 18:37:46 -06:00
reliberate debf81d9e2 Default/Domain/User Settings: Handle boolean value for menu_main_icons setting. 2016-04-05 17:24:22 -06:00
reliberate 885f43a43d Theme: Correct menu_main_icons to boolean type. 2016-04-05 16:47:55 -06:00
reliberate b6b3ec8ce6 Theme: Add settings to hide main menu icons, to control main menu text size and font, and sub menu text size and font. 2016-04-05 16:41:58 -06:00
Alexey Melnichuk 1fea16de71 Fix. send fax file as PDF in response message 2016-04-05 13:48:50 +03:00
markjcrane 12067b8aea Update the script.php class use session event socket information for now. 2016-04-04 23:27:41 -06:00
markjcrane 4ac03a8d1a Add a missing permission on backup. 2016-04-04 19:51:22 -06:00
markjcrane 68c2e315ba Update the yealink timezone settings. 2016-04-04 19:50:05 -06:00
markjcrane cbe4a7e763 Fix the changes to the Cisco SPA templates. 2016-04-04 12:18:04 -06:00
Alexey Melnichuk dc2265b788 Fix. Check string before build sql when do copy dialplan extension. 2016-04-04 14:41:18 +03:00
markjcrane bd1f5b4388 Run upgrade to call app defaults. 2016-04-03 13:46:46 -06:00
markjcrane 8edbc9d774 Build the apps array so that the groups class defaults method can use it for the group permissions. 2016-04-03 13:18:45 -06:00
markjcrane f3a0a8b153 Add a default group check. 2016-04-03 11:54:09 -06:00
markjcrane c5d295ef2a Add users and groups php class. 2016-04-03 11:47:06 -06:00
markjcrane ff7e5323b5 Get the script_dir path from event socket. 2016-04-03 09:47:58 -06:00
markjcrane 7b1a596d6f Use is_dir instead of check for the length of the stirng. 2016-04-03 09:36:27 -06:00
markjcrane 9217b599ed Only write the scripts if the directory is set. 2016-04-03 09:29:37 -06:00
markjcrane 65a2cec4ab Update install freeswitch commented out copy scripts and create config lua as they handled in other code. Update install fusionpbx adding switch directories and creating groups handled in other code. When testing is completed will be removed from the code. 2016-04-03 08:39:47 -06:00
markjcrane fb9a02376e Prevent switch duplicates. 2016-04-02 20:28:45 -06:00
markjcrane 7aeeda0e15 Rename to the switch_settings class. 2016-04-02 20:11:51 -06:00
markjcrane a638d86619 Set some of the switch directories to enabled false. 2016-04-02 19:57:37 -06:00
markjcrane 0c6e29632f Add a missing semi-colon. 2016-04-02 19:42:18 -06:00
markjcrane 1200161b81 Update the database connection. 2016-04-02 19:41:16 -06:00
markjcrane ebee007ab8 Change the switch class to freeswitch. 2016-04-02 19:37:37 -06:00
markjcrane bcc993c537 Rename the EventSocket file to math current naming standard. 2016-04-02 19:24:32 -06:00
markjcrane 7d61371bc9 Rename the EventSocket class. 2016-04-02 19:23:16 -06:00
markjcrane 52ff8fae68 Fix a syntax problem on the new class. 2016-04-02 19:13:49 -06:00
markjcrane d9e00f2be3 Add a new switch class with a method to get the directories needed for FreeSWITCH and add them to default settings -> switch category. 2016-04-02 17:53:51 -06:00
markjcrane ea84e9f044 Fix the footer in one more location. 2016-04-02 14:26:29 -06:00
markjcrane 284c3e3a91 Translation setup for footer in the default theme. 2016-04-02 14:07:06 -06:00
markjcrane 11f4fea479 Change expire["sofia_conf"] to expire["sofia"] and expire["acl_conf"] to expire["acl"]. Then add a default value to prevent nil errors when the conf.lua script has not been updated. 2016-04-02 08:32:43 -06:00
markjcrane 827c9d5a50 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-04-02 08:23:18 -06:00
FusionPBX 933406c4f6 Merge pull request #1530 from moteus/install_new_db
Fix. Install with create new database for PgSQL/MySQL
2016-04-02 00:44:26 -06:00
FusionPBX cc4ef905a9 Merge pull request #1519 from moteus/install_config_lua
Fix. Generate same `config.lua` on install as on Upgrade.
2016-04-02 00:40:52 -06:00
reliberate 14973b5c97 Functions: Enhance img_spacer() function.
Dialplan Edit: Integrate img_spacer() to fix row divider.
Default/Domain/User Settings: Use img_spacer() function for color swatches.
Contact Times: Adjust for recent changes on img_spacer() function.
2016-04-01 19:44:26 -06:00
markjcrane ddb1cbd705 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-04-01 13:37:30 -06:00
markjcrane 8f1a8667f4 Fix the cisco load or image on the 7940 and 7960 templates. 2016-04-01 13:37:22 -06:00
reliberate a390e41910 Dashboard: Minor visual adjustment on Voicemail block. 2016-03-31 18:13:16 -06:00
reliberate ce31971277 Voicemail: Show Add button even when no Voicemails exist.
Extensions: Integrate keyboard shortcuts (Ctrl+A to select all, Delete to delete checked).
2016-03-31 18:03:32 -06:00
reliberate 2ca72bd99d Function: Created key_press function to dynamically generate key detection javascript.
Voicemail: Ctrl+A checks all checkboxes, pressing Delete deletes the checked Voicemails.
Editor: Integrated key_press function.
Command: Integrated key_press function.
2016-03-31 17:11:37 -06:00
markjcrane db122a3da6 Allow deleting system default groups. 2016-03-31 11:01:39 -06:00
reliberate c3ea9a0f16 Editor: Add Default Setting descriptions. 2016-03-31 10:50:31 -06:00
reliberate bca92cf8ca Editor: Create app_defaults to add related Default Settings. 2016-03-31 10:45:09 -06:00
reliberate b8814206b9 Dashboard: Enable relevant System Counts block for Admin. 2016-03-31 10:30:30 -06:00
reliberate 38e349a1e6 User Edit: Fix logic used on Enabled field. 2016-03-31 09:48:30 -06:00
FusionPBX b6775e44c5 Merge pull request #1521 from moteus/mysql_escape
Fix. use `mysqli_real_escape_string` instead or deprecated `mysql_real_escape_string`
2016-03-31 09:04:35 -06:00
reliberate ee100c6769 Default Settings: Enhance swatch display on color values. 2016-03-30 17:43:57 -06:00
reliberate a9db46254b Default Settings: Added ability to toggle the enabled state of checked settings. 2016-03-30 16:44:51 -06:00
reliberate 83f1a19abb Dashboard: Include settings in app_defaults to display Call Routing and Ring Group Forwarding controls for the users group. 2016-03-30 15:53:12 -06:00
reliberate 428bd04def Dashboard: Corrected app_defaults to create missing Dashboard entries in Default Settings. 2016-03-30 15:42:25 -06:00
reliberate 91b736ff2c Dashboard: Added settings to app_defaults to enable certain blocks in the dashboard by default. 2016-03-30 15:32:06 -06:00
reliberate 5ca3ffb981 Dashboard: Style tweaks. 2016-03-30 15:07:38 -06:00
reliberate 539489640b Dashboard: Integrate Settings to control theme/style of Dashboard elements. 2016-03-30 14:41:45 -06:00
FusionPBX 3276f13fa4 Merge pull request #1524 from moteus/extension_select_count
Fix. Display extension on MySQL.
2016-03-30 08:53:36 -06:00
FusionPBX 1e9837f77b Merge pull request #1527 from moteus/menu_array_default_arg
Fix. Use default value in function definition.
2016-03-30 08:49:29 -06:00
FusionPBX 28afa5ef35 Merge pull request #1528 from moteus/no_menu_warning
Fix. warning about using NULL as first argument in `foreach`.
2016-03-30 08:46:46 -06:00
FusionPBX 2786099d11 Merge pull request #1529 from moteus/select_language
Fix. Display language name on Install page.
2016-03-30 08:41:39 -06:00
Alexey Melnichuk 9657d3ef04 Fix. Install with create new database for PgSQL/MySQL
* MySQL/PgSQL ignore error while create new user because user may already exists.
* MySQL on database page use same checkbox like one for PgSQL
* MySQL/PgSQL if create user empty try use db user.(may be better use root/postgres without pass)
* PgSQL fix `GRANT ALL ON DATABASE dbname` instead of `GRANT ALL ON dbname`
* MySQL fix connect string build
* MySQL fix use correct password to connect
2016-03-30 15:05:25 +03:00
Alexey Melnichuk a24359d667 Fix. Display language name on Install page.
This is special case because all this names should be displayed
in same time on single page on different languages.
So not translate in strict way.
2016-03-30 10:27:04 +03:00
Alexey Melnichuk 43a023575a Fix. warning about using NULL as first argument in foreach.
Problem now in `tepmplate.php`
```PHP
$menu_array = $menu->menu_array();
...
foreach ($menu_array as $index_main => $menu_parent) {
```

It appear while install process because in this moment there not `$db`
and `$menu->menu_array()` returns nothing.

This problem also can be solved in `tepmplate.php` like
```PHP
if(is_array($menu_array)){
  foreach ($menu_array as $index_main => $menu_parent) {
...
```
2016-03-30 10:15:49 +03:00
reliberate cdc6aa691c SIP Profile Settings: Set paging at 200 records, add param. 2016-03-30 00:58:47 -06:00
Alexey Melnichuk ec95fc5f24 Fix. Use default value in function definition.
On `themes/default/template.php` it called without args
```PHP
$menu_array = $menu->menu_array();
```

And it produce PHP warning.
2016-03-30 09:39:15 +03:00
reliberate d307132b82 Functions: Added color adjustment and color format conversion functions. 2016-03-30 00:34:15 -06:00
markjcrane fa0f310d97 Change some IVR Menu defaults as 0 is unlimited and 1 continues to the exit on the first error. 2016-03-29 21:10:43 -06:00
markjcrane 5f5ae59c41 Remove the the condition on the direct dial. 2016-03-29 20:57:47 -06:00
reliberate e75da3f149 Dashboard: Rename dashboard setting for Call Routing visibility. 2016-03-29 16:41:24 -06:00
reliberate 6b0aa41872 Dashboard, Call Routing, Ring Groups language file fix. 2016-03-29 16:36:39 -06:00
reliberate 28084dc0ff Call Routing: More responsive layout, includes additional info in list view. 2016-03-29 16:28:17 -06:00
reliberate 414949e2a6 Ring Groups: Language file fixed. 2016-03-29 14:20:06 -06:00
reliberate ef755cf9da Theme: Minor CSS tweaks.
Ring Groups: Rework forwarding controls - integrate into Dashboard view and Ring Group edit page.
2016-03-29 14:15:01 -06:00
Alexey Melnichuk b85067b166 Fix. Display extension on MySQL.
Problem that
```SQL
select (select count(*) as num_rows ...)
```
is  not the same as
```SQL
select (select count(*) ...) as num_rows
```

I think problem may be on SQLite too.
2016-03-29 19:00:59 +03:00
Alexey Melnichuk 7508828b16 Fix. use mysqli_real_escape_string instead or deprecated mysql_real_escape_string
From PHP.net
```
Warning
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.
Instead, the MySQLi or PDO_MySQL extension should be used.
...
Alternatives to this function include:
 * mysqli_real_escape_string()
 * PDO::quote()
```
2016-03-29 16:34:36 +03:00
Alexey Melnichuk 26b376cad8 Fix. Generate same config.lua on install as on Upgrade. 2016-03-29 14:43:58 +03:00
markjcrane c00194127c Remove the cast on app/calls/calls.php to fix non-numeric extensions. 2016-03-29 03:49:41 -06:00
markjcrane 6a2e98baa2 Fix the problem with non-numeric extension causing an error. Not certain we will keep this method but its an interesting solution. 2016-03-29 03:42:24 -06:00
markjcrane 7df0324382 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-29 02:35:59 -06:00
markjcrane 2b1f01bd16 Add http authentication option to all Cisco SPA phones. 2016-03-29 02:35:33 -06:00
reliberate 264ce386a2 Theme: Fix for background-image not loading in some mobile browsers (Dolphin, Chrome on Android). 2016-03-28 23:46:51 -06:00
reliberate b29322d684 Theme: Maximize body width and shrink padding in xs view. 2016-03-28 23:39:42 -06:00
reliberate 334ce42827 Settings: Paging - Modify description to include "Default: 50". 2016-03-28 23:08:20 -06:00
reliberate cd7843b7f3 Apps: Integrate ability to set paging via a Default/Domain/User Setting (domain > paging > numeric). 2016-03-28 23:02:11 -06:00
reliberate 7c5176cf41 Theme: Add additional Settings to control the style of various elements, remove old css classes.
Default/Domain/User Settings: Add color previews in list view.
2016-03-28 22:29:15 -06:00
reliberate 347417011e Language changes for last commit. 2016-03-28 18:07:02 -06:00
reliberate 1a69272fab Languages file for last commit (doh). 2016-03-28 17:58:19 -06:00
reliberate fd54066540 Theme: Replace image-based control icons with Bootstra Glyphicon buttons.
Voicemail Messsages: Added ability to toggle message status (saved/new).
2016-03-28 17:50:07 -06:00
reliberate 785279d62b Destinations/Extensions/Voicemails: Better sorting ability. 2016-03-28 15:21:05 -06:00
reliberate a70f1a8e11 Contact Timer: Replace PHP short tags. 2016-03-28 14:28:10 -06:00
reliberate b52004e822 Theme: Fix wrapping on menu brand text. 2016-03-28 12:49:46 -06:00
Nate 53ec75d5d3 Merge pull request #1514 from moteus/menu_project_path
Fix. add `PROJECT_PATH` to menu item url
2016-03-28 11:20:13 -06:00
reliberate cdf7ff99b8 Dialplan Edit: Style mods. 2016-03-28 09:57:03 -06:00
reliberate 1f0e28455b Dialplan Edit: Disable text-overflow (for now). 2016-03-28 09:31:53 -06:00
reliberate 3419a18989 Recordings/CDR: Fix audio playback and progress bar style. 2016-03-28 09:09:33 -06:00
reliberate 9d6469eba3 Access Controls: Update layout/style. 2016-03-28 08:41:55 -06:00
reliberate b2bfc35f41 Theme: Explicitly set file input class to be inline.
MOH: Revert last change.
2016-03-28 08:22:59 -06:00
reliberate 017da03006 MOH: Fix layout issue with file upload input and clear button. 2016-03-28 08:11:04 -06:00
reliberate 22edbabf5d Call Routing: Improve order by - sort numerically. 2016-03-28 07:36:25 -06:00
Nate 5faa72d8b2 Merge pull request #1515 from moteus/calls_order_extensions
Thanks.
2016-03-28 07:32:09 -06:00
Alexey Melnichuk 43eb07119b Fix. Display extensions in order way 2016-03-28 11:54:47 +03:00
Alexey Melnichuk 6a015a779a Fix. add PROJECT_PATH to menu item url 2016-03-28 11:25:13 +03:00
markjcrane 0e73d0d3dc Rollback changes to is_local.lua determined that switching to regex would lower perfomance adding an 'or' with a search for prefix would perform better. 2016-03-27 20:44:14 -06:00
markjcrane d5ce655a3d Fix the menu_delete add a delete to get remove data in menu_languages table. 2016-03-27 14:58:11 -06:00
markjcrane f09489599d Minor adjustment to the theme. 2016-03-27 14:56:53 -06:00
markjcrane abef8c5d3c A global domain is optional. Using public context instead. 2016-03-27 04:46:01 -06:00
FusionPBX b03d978bb0 Merge pull request #1512 from schraegervogel/master
initialize call_context
2016-03-27 04:25:22 -06:00
markjcrane f596590860 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 03:34:32 -06:00
markjcrane 192b52fc55 Update themes/app_defaults to reduce database selects. 2016-03-27 03:34:16 -06:00
reliberate 9acbe5a366 Theme: Fix js confirmation on logout icon click (set language variable as global inside menu function). 2016-03-27 03:22:42 -06:00
reliberate 8b360459e1 Theme: Restore footer/copyright on Login page. 2016-03-27 03:09:50 -06:00
reliberate 0899a8e5da Import Contacts: Fix layout issue. 2016-03-27 03:00:05 -06:00
reliberate a3ab81d53b Command: Correct layout & styles. 2016-03-27 02:54:29 -06:00
reliberate c618cbd4d5 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 02:33:40 -06:00
reliberate 10e82f63ba Theme: Added defaults (in the code) for the footer/copyright if missing in Settings. 2016-03-27 02:33:27 -06:00
markjcrane 8c444b9a3a Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 02:31:29 -06:00
markjcrane b1b69046d4 Change the login background. 2016-03-27 02:31:13 -06:00
reliberate 1986cfeaa6 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 02:18:08 -06:00
reliberate ed69324807 Theme: Adjustment to defaults. 2016-03-27 02:17:45 -06:00
markjcrane 8be2b551d5 Remove the create_menus() from the install as it is now handled in the menu class. 2016-03-27 02:15:27 -06:00
reliberate 5fd5a33641 Theme: Fixed CSS issue with domain name (selector) style. 2016-03-27 02:09:27 -06:00
reliberate 4a43824913 Theme: Remove login_opacity from app_defaults - no longer necessary. 2016-03-27 01:27:29 -06:00
markjcrane 08ba30b9ee Change the app/emails/app_languages.php to UTF-8 encoding and used a spanish dictionary to fix the translations that were broken when converting file encoding. 2016-03-27 01:18:51 -06:00
markjcrane 69fa1729e1 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 01:10:49 -06:00
markjcrane 77bc05d2fa Change the encoding type for app/emails/app_menu.php to UTF-8. 2016-03-27 01:10:29 -06:00
reliberate 21ded199dd Theme: Only round bottom menu corners on Static menu style. 2016-03-27 01:03:13 -06:00
reliberate 3094e37839 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 00:46:23 -06:00
reliberate e7df60e270 Theme: Minor adjustments on Fixed and Static style menus. 2016-03-27 00:46:06 -06:00
markjcrane b5ae027bfc Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-27 00:33:38 -06:00
markjcrane ac36bf07f7 Only call the scripts class if its installed. 2016-03-27 00:33:19 -06:00
reliberate 8a19a20d7f Theme adjustments and fixes.
Flesh out Theme Default Settings descriptions.
2016-03-27 00:32:19 -06:00
markjcrane 46cec34644 Fix v_settings update sql command in app/settings/app_defaults.php. 2016-03-26 23:59:28 -06:00
markjcrane a12b5ac43c Remove agent_admin from call_centers/app_menu.php as it doesn't exist by default and causes an error. 2016-03-26 23:36:13 -06:00
markjcrane c4aaad020d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-26 22:59:19 -06:00
markjcrane 812f41b48e Add the menu_default method to app_defaults.php. 2016-03-26 22:59:00 -06:00
reliberate b066c1c931 Default Template: Removed body_opacity setting - superseded by body_color rgba ability 2016-03-26 21:42:55 -06:00
markjcrane c7e90ebd26 Change the method name to menu_default. 2016-03-26 21:22:52 -06:00
markjcrane f7aa8725e8 Add methoed 'default' to the menu class. 2016-03-26 21:18:02 -06:00
markjcrane 21143da0ef Minor adjustment to the checkbox. 2016-03-26 19:51:44 -06:00
markjcrane 2a565e9f98 Remove the include to the resources/menu.php file that is no longer in use. 2016-03-26 19:37:42 -06:00
markjcrane 6a3c9cc945 Fix two of the button labels. 2016-03-26 19:35:24 -06:00
markjcrane 7bc74b374a Fix a the name of a few of the install buttons. 2016-03-26 19:29:04 -06:00
markjcrane 651f9806fb Update the install.php. 2016-03-26 19:17:33 -06:00
markjcrane 100932656a Fix the reference to the prepared statement. 2016-03-26 14:03:44 -06:00
markjcrane ac4aef20b0 Change the code in the menu to return immediately if the database object is not ready in this case its not ready until the install.php is finished. 2016-03-26 13:36:00 -06:00
markjcrane 883a0ecdeb Remove the conflict install language is set with the radio buttons. 2016-03-26 13:14:57 -06:00
markjcrane 9c49a0ce54 Remove the fieldset and label as the alignment is not working with bootstrap. 2016-03-26 13:09:22 -06:00
markjcrane ae125390c3 Adjust the width of the language section of the install. 2016-03-26 12:35:40 -06:00
markjcrane 5eef464cf3 Additional work to improve the install, template and the menu. 2016-03-26 12:22:15 -06:00
markjcrane aa89c4fe26 Don't error if the menu is not available for the install.php. 2016-03-26 11:45:57 -06:00
markjcrane 90f30c53d7 Fix the install.php. 2016-03-26 09:18:36 -06:00
markjcrane 6b657b0ef1 Fix a spelling mistake. 2016-03-25 20:17:34 -06:00
markjcrane d7dbe2d51f Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-25 20:14:59 -06:00
markjcrane da6297918e Remove two deprecated default settings and a missing one. 2016-03-25 20:14:39 -06:00
reliberate 88ac4fb2ee Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-25 19:51:18 -06:00
reliberate 00c7ea8016 Fixed: Default Theme - Adjust top body margin when menu position is bottom. 2016-03-25 19:49:52 -06:00
markjcrane 92a57a73ce Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-25 19:46:00 -06:00
markjcrane 8053c07a02 Make the code more efficient adding the theme default settings. 2016-03-25 19:45:39 -06:00
reliberate 7a2fc74481 Enhance: Default Theme - enable menu style and positioning options. 2016-03-25 19:38:57 -06:00
markjcrane f5a1802282 Remove the extra $x++; 2016-03-25 19:27:43 -06:00
markjcrane c2d3a61a66 Remove the enhanced theme. 2016-03-25 19:24:45 -06:00
markjcrane 181e26144e Add default settings to control the new theme. 2016-03-25 19:22:26 -06:00
markjcrane 8cdadc0ea4 Move the app_defaults.php from theme/enhanced to themes/default. 2016-03-25 17:26:28 -06:00
reliberate 7fa8226f8d Added (Really!): Moment.js - used by jQuery DateTimePicker plugin. 2016-03-25 16:52:07 -06:00
reliberate e3fb32e1a2 Added: Moment.js - used by jQuery DateTimePicker plugin. 2016-03-25 16:39:19 -06:00
reliberate a49337129d Fixed: Control icon paths for Default theme. 2016-03-25 16:38:20 -06:00
reliberate 5b58196c16 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-25 16:33:54 -06:00
reliberate 9aae7bdd79 Added: Moment.js framework (used by jQuery DateTimePicker plugin) 2016-03-25 16:33:05 -06:00
markjcrane 6631061d70 Set the default theme as the default. 2016-03-25 16:30:35 -06:00
reliberate 13e3aa4fa8 Added: Bootstrap Framework - initial integration.
Added: Bootstrap Plugins - DateTimePicker, ColorPicker (in multiple apps)
Added: Default Theme - responsive
Removed: RightJS Framework - no longer needed.
Removed: Accessible Theme - superseded by Default theme.
Removed: Minimized Theme - superseded by Default theme.
Enhanced: Menu - responsiveness added.
Enhanced: Dashboard - responsiveness added.
Etc.
2016-03-25 16:29:20 -06:00
FusionPBX 5906618ff3 Merge pull request #1510 from moteus/databas_role
Add. `role` to be able select database backend in constructor.
2016-03-25 15:52:47 -06:00
schraegervogel 39754a505e initialize call_context
If you use xml_locate dialplan from fs_cli, you get an error, to prevent this I intialized call_context with the "domain"-var
2016-03-25 17:28:10 +01:00
Alexey Melnichuk 423e0ab503 Add. role to be able select database backend in constructor.
To configure use `database.backend` option
It can be a string value like `database.backend = 'native'`.
So it will always use same backend.
Or it can be a table value like
```Lua
database.backend = {
  main   = 'native';
  base64 = '';
}
```
Role `database.backend.main` is predefined and it equal to `native` if not set.
If there no role when Database class creates or role unknown role `main` is used
```Lua
dbh = Database.new('system') -- uses role `main`
dbh = Database.new('system', 'main') -- same as previews
dbh = Database.new('system', 'base64') -- uses role `base64`
dbh = Database.new('system', 'test')   -- uses role `main`
```
2016-03-25 10:04:48 +03:00
FusionPBX c5e804cb3c Update acl.conf.lua
Change expire acl.conf to acl_conf
2016-03-25 01:00:43 -06:00
markjcrane ab7bd4a3d3 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-24 23:08:45 -06:00
markjcrane 66e01ef9dc Change to the new context require renaming two variables to be consistent and to prevent a problem. 2016-03-24 23:08:23 -06:00
FusionPBX e19d0ccd74 Merge pull request #1509 from fusionpbx/revert-1508-revert-1507-revert-1497-master
Revert "Revert "Revert "search selects"""
2016-03-24 22:26:18 -06:00
FusionPBX eb81998165 Revert "Revert "Revert "search selects""" 2016-03-24 22:25:18 -06:00
FusionPBX 1bec4aba89 Merge pull request #1508 from fusionpbx/revert-1507-revert-1497-master
Revert "Revert "search selects""
2016-03-24 22:03:56 -06:00
FusionPBX 90242c0c60 Revert "Revert "search selects"" 2016-03-24 22:03:37 -06:00
FusionPBX 1a576b0d6a Merge pull request #1507 from fusionpbx/revert-1497-master
Revert "search selects"
2016-03-24 22:02:59 -06:00
FusionPBX 68e728b0b6 Revert "search selects" 2016-03-24 22:02:41 -06:00
FusionPBX 7217d29d8b Merge pull request #1497 from blackc2004/master
search selects
2016-03-24 21:56:20 -06:00
FusionPBX 1eb5b54119 Merge pull request #1491 from dis45927/master
Fix bug preventing mysql database creation
2016-03-24 21:47:11 -06:00
FusionPBX a0e736fb34 Merge pull request #1500 from moteus/provision_contact_sql
Fix. SQL text to query user contact in provision class
2016-03-24 21:44:32 -06:00
markjcrane 459a5931fa Fix some of the elements in the contacts array. 2016-03-24 21:43:03 -06:00
FusionPBX 1807b37872 Merge pull request #1502 from moteus/provision_contact_category
Fix. Export `contact_category` for provisioning template
2016-03-24 21:38:50 -06:00
FusionPBX eeae7f0cc8 Merge pull request #1503 from blackc2004/patch-37
Update directory_extensions.xml
2016-03-24 21:37:06 -06:00
FusionPBX 4f068c1d7f Merge pull request #1504 from blackc2004/patch-38
Update directory_extensions.xml
2016-03-24 21:28:46 -06:00
FusionPBX f180be3792 Merge pull request #1505 from blackc2004/patch-39
Update directory_extensions.xml
2016-03-24 21:28:26 -06:00
FusionPBX 29777ef631 Merge pull request #1506 from blackc2004/patch-40
Update directory_extensions.xml
2016-03-24 21:28:01 -06:00
markjcrane 0e3ea02f72 Change sytnax from database["name"] to database.name in the config.lua. 2016-03-24 20:15:09 -06:00
markjcrane e1b6087e04 Use regex with is_local. 2016-03-24 18:43:51 -06:00
markjcrane b940749eb5 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-24 15:02:30 -06:00
markjcrane 83edd6a7fd On windows force to / instead of the backslash \ as path. This fixes a problem where recording c:\pathtofusionpbx\recordings fails because the \r gets understood as a carriage return in the session:record in FreeSWITCH. 2016-03-24 15:02:04 -06:00
blackc2004 310863f21f Update directory_extensions.xml 2016-03-24 08:38:53 -07:00
blackc2004 e73f2bf963 Update directory_extensions.xml 2016-03-24 08:38:39 -07:00
blackc2004 659d2b084e Update directory_extensions.xml 2016-03-24 08:38:25 -07:00
blackc2004 c7ce82c3a9 Update directory_extensions.xml 2016-03-24 08:38:07 -07:00
Alexey Melnichuk 62c4618259 Fix. SQL in group contacts 2016-03-24 17:59:01 +03:00
Alexey Melnichuk 2ab96611ef Fix. Export contact_category for provisioning template
Add. Export `contact_type` and `phone_label` for provisioning template
2016-03-24 17:54:31 +03:00
Alexey Melnichuk 4bb595f797 Fix. SQL text to query user contact in provision class 2016-03-24 15:54:29 +03:00
FusionPBX 53d609624b Merge pull request #1499 from moteus/fax_active_gateway_name
Fix. Display correct gateway name in URI on `Fax Active` page
2016-03-23 21:34:45 -06:00
blackc2004 6b4f552f6d fix directory_extension for new contacts variable 2016-03-23 12:23:41 -07:00
markjcrane 785071cde6 In the IVR Menu make sure direct dial checks if the destination is an extension before sending the call to it. 2016-03-23 12:49:32 -06:00
markjcrane db3c649aaf Update the disa.lua to prevent errors when caller hangs up before the destination is called. 2016-03-23 11:42:20 -06:00
Alexey Melnichuk facbd6a62d Fix. Display correct gateway name in URI on Fax Active page 2016-03-23 14:02:33 +03:00
markjcrane bb379b997e Show both LAN and WAN IP in the registrations. 2016-03-23 00:14:30 -06:00
markjcrane 85263b3a00 Replace the external ip with the internal nat ip address. 2016-03-23 00:07:50 -06:00
markjcrane f5002bec99 Re-add the time condition dialplan button label. 2016-03-22 23:52:37 -06:00
markjcrane c4332db765 Time condition hide the group label as it uses too much vertical space and the group number is provided by default. 2016-03-22 23:39:23 -06:00
blackc2004 128026f3e8 search selects 2016-03-22 15:42:46 -07:00
markjcrane fe320d40da Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-21 23:45:36 -06:00
markjcrane cb320f3734 SPA122 - Set message waiting light to No when provisioning the device. 2016-03-21 23:45:05 -06:00
reliberate bab6f047f9 User Settings: Select query fix, case adjustment on Domain Template select option labels. 2016-03-21 16:54:59 -06:00
reliberate 74006543ef Editor: Fix Clip Library folder nesting, misc adjustments to Clip and File lists. 2016-03-21 16:01:44 -06:00
markjcrane f3114cdf05 Add support for destination_number name to be customized on inbound routes. 2016-03-21 11:13:47 -06:00
reliberate fddd3d98ea Dashboard: Fix Memory & Disk Usage stats. 2016-03-21 10:45:03 -06:00
markjcrane 468f4f859c Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-20 13:52:00 -06:00
markjcrane ab4fb51355 Fix the install title. 2016-03-20 13:51:17 -06:00
reliberate 30655054c0 Dashboard: Enhance with priority numbers and additional System Count items.
Devices: Fix missing translation.
Voicemails: Fix missing translation.
2016-03-20 03:22:29 -06:00
markjcrane 8a0331925a Fix a spelling mistake in xml handler ivr.conf.lua. 2016-03-20 00:49:21 -06:00
markjcrane bdcd499b2c Fix a minor display issue for contacts. 2016-03-19 21:57:37 -06:00
markjcrane a11ee88cd8 Hide the IVR sub menus until they are ready. 2016-03-19 21:18:07 -06:00
markjcrane 8139ddeb56 Correct the syntax for the app destinations array. 2016-03-19 19:59:52 -06:00
markjcrane e984d7e00a Update the IVR Menu class to make dialplan more modular. Add option for LUA or application IVR. 2016-03-19 19:06:06 -06:00
markjcrane b626edb480 Minor change to indent on one line. 2016-03-19 18:23:19 -06:00
markjcrane 57e212ff42 Fix direct dial for IVR using the xml handler. 2016-03-19 18:13:49 -06:00
FusionPBX ee7f8c08d7 Merge pull request #1495 from blackc2004/master
fix some email stuff
2016-03-19 15:17:43 -06:00
reliberate 51275443c5 Voicemail: Add bulk delete ability for Messages, instant saved indication when playing/downloading, and table row click to play.
Dashboard: Minor code cleanup.
2016-03-19 13:54:24 -06:00
reliberate 471c647ba2 Voicemail: Change 'View' link to 'Messages' instead. 2016-03-19 08:16:49 -06:00
reliberate a9e3717e75 SQL Query: Removed.
Command: Integrate SQL Query functionality within Command app.
(Note: Permission and Menu modifications - please Restore Defaults)
2016-03-18 23:18:00 -06:00
blackc2004 80be7780d8 fix some email stuff 2016-03-18 18:53:41 -07:00
reliberate de75f58e62 Command: Enable PHP syntax highlighting without opening/closing tags. 2016-03-17 17:33:33 -06:00
reliberate 4883356509 Command: Fix bug with Ctrl+Enter to Execute. 2016-03-17 15:57:44 -06:00
reliberate 680d6f1802 Command: Integrate new editor, include Clip Library. 2016-03-17 15:50:18 -06:00
markjcrane baac930c8a Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-17 13:22:27 -06:00
markjcrane db8fa2e5f5 Add destination number regex and string_to_regex function. 2016-03-17 13:22:03 -06:00
reliberate be721b1686 Default/Domain/User Settings: Uncheck the 'Check All' checkbox for a category when a subcategory item is unchecked.
Default Settings: Hide the 'Check All' checkboxes when using the search.
2016-03-17 08:45:07 -06:00
reliberate f7aca7239c Extensions: Added bulk delete.
Voicemail: Added bulk delete.  On delete, remove recordings folder, and voicemail_options, _destinations, and _greetings database records.
2016-03-16 18:48:42 -06:00
markjcrane 36d8c7815d Change daylight_savings_start_date to daylight_savings_start_day as it is more accurate for representing the data. Add daylight_savings_start_time and daylight_savings_stop_time 2016-03-15 16:15:32 -06:00
markjcrane 6e4be852ad Update default settings add daylight_savings_start_month and date for the polycom templates. 2016-03-15 13:51:01 -06:00
markjcrane 926cda4a97 Add polycom_digitmap to provision category in default settings. 2016-03-15 12:50:04 -06:00
markjcrane 121c58ebe7 Move contact_exists to a method in the provision class. 2016-03-15 12:22:57 -06:00
dis45927 2045b52af1 Fix bug preventing mysql database creation 2016-03-15 10:30:33 +00:00
markjcrane 6905b37df9 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-15 03:23:00 -06:00
markjcrane eb5d95c5d5 Remove the body of the email from the log in the tmp directory to make it more readable and better compatibility with tail -f. 2016-03-15 03:22:38 -06:00
FusionPBX 133c0c8258 Merge pull request #1489 from mafoo/Enhance-device_edit
Enhance device_edit
2016-03-15 03:12:57 -06:00
markjcrane da71d80a69 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-15 02:58:48 -06:00
markjcrane 0deda1db2e Rolling back PHPMailer from version 5.2.14 to 5.2.2. The latest version had a problem with smtp authentication set to false it still tried to authenticate. 2016-03-15 02:58:23 -06:00
reliberate 10c99b93b5 User Dashboard: Restore Click-to-Call functionality. 2016-03-14 18:59:30 -06:00
markjcrane d8aeecad35 Update the Cisco 79xx templates to work with the new contacts array. 2016-03-14 18:56:00 -06:00
mafoo 406a07b6bd Enhance device_edit
tweaked fade in/out for files elements to make them fade in sync and out
in sync
fixed fadeIn for files button as attaching to the fadeout on select
seems to be broken
2016-03-14 16:14:27 +00:00
markjcrane 1c9ee3a8ff Add a missing semi-colon. 2016-03-12 22:16:22 -07:00
markjcrane afe19e8a40 Change $language_name to $text['language-name'] this will follow current naming standards in app_languages.php and reduces code needed in the text class. 2016-03-12 22:06:57 -07:00
markjcrane ed2898aa33 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-11 14:21:28 -07:00
markjcrane 8588a4caea Get the domain_name from the array. 2016-03-11 14:21:08 -07:00
FusionPBX 169220439f Merge pull request #1459 from moteus/operator_panel_short_number
Fix. Use operator panel with short extension.
2016-03-11 13:38:18 -07:00
FusionPBX b53164ac93 Merge pull request #1468 from mafoo/WhitespaceClean-app/batch_1
WhitespaceClean-app/batch_1
2016-03-11 13:35:41 -07:00
FusionPBX 5a8a19af39 Merge pull request #1469 from mafoo/WhitespaceClean-app/batch_2
WhitespaceClean-app/batch_2
2016-03-11 13:35:24 -07:00
FusionPBX 80063e00bf Merge pull request #1471 from mafoo/WhitespaceClean-core/batch
WhitespaceClean-core/batch
2016-03-11 13:35:06 -07:00
FusionPBX c529dcdac1 Merge pull request #1475 from mafoo/WhitespaceClean-resources/provision/polycom
WhitespaceClean-resources/provision/polycom
2016-03-11 13:34:49 -07:00
FusionPBX 9e1564b967 Merge pull request #1476 from mafoo/WhitespaceClean-resources/provision/yealink
WhitespaceClean-resources/provision/yealink
2016-03-11 13:34:22 -07:00
FusionPBX 275ebe290a Merge pull request #1474 from mafoo/WhitespaceClean-resources/provision/grandstream
WhitespaceClean-resources/provision/grandstream
2016-03-11 13:32:31 -07:00
FusionPBX c0a43d3cd3 Merge pull request #1477 from mafoo/WhitespaceClean-resources/provision/mitel
WhitespaceClean-resources/provision/mitel
2016-03-11 13:32:01 -07:00
FusionPBX 534b6d9384 Merge pull request #1478 from mafoo/WhitespaceClean-resources/provision/others
WhitespaceClean-resources/provision/others
2016-03-11 13:31:33 -07:00
FusionPBX e2f06cf8f3 Merge pull request #1466 from mafoo/WhitespaceClean-app/sip_profiles
WhitespaceClean-app/sip_profiles
2016-03-11 13:27:38 -07:00
FusionPBX 6011bb3b0f Merge pull request #1481 from mafoo/WhitespaceClean-resources/jquery
WhitespaceClean-resources/jquery
2016-03-11 13:27:02 -07:00
FusionPBX 8b7c0ffe6d Merge pull request #1467 from mafoo/WhitespaceClean-app/xml_cdr
WhitespaceClean-app/xml_cdr
2016-03-11 13:25:49 -07:00
FusionPBX 93c4c56da2 Merge pull request #1461 from mafoo/BugFix-ring_groups
corrected function definition
2016-03-11 13:25:20 -07:00
FusionPBX 970c1d54e2 Merge pull request #1460 from mafoo/Enhance-Add_mod_translate
added mod_translate to the modules list
2016-03-11 13:24:43 -07:00
FusionPBX 68a121cd66 Merge pull request #1462 from mafoo/BugFix-Translation-True_False
BugFix-Translation-True_False
2016-03-11 13:24:13 -07:00
FusionPBX 9987681740 Merge pull request #1472 from mafoo/WhitespaceClean-resources/classes
WhitespaceClean-resources/classes
2016-03-11 13:22:57 -07:00
FusionPBX 15b432ab52 Merge pull request #1470 from mafoo/WhitespaceClean-core/install
WhitespaceClean-core/install
2016-03-11 13:22:30 -07:00
FusionPBX 61e9010319 Merge pull request #1465 from mafoo/WhitespaceClean-app/dialplan
WhitespaceClean-app/dialplan
2016-03-11 13:22:02 -07:00
FusionPBX 2a358bb517 Merge pull request #1463 from mafoo/WhitespaceClean-root
WhitespaceClean-root
2016-03-11 13:21:22 -07:00
FusionPBX e21dfcb69c Merge pull request #1464 from mafoo/WhitespaceClean-app/access_controls
WhitespaceClean-app/access_controls
2016-03-11 13:21:00 -07:00
FusionPBX c6a68388a1 Merge pull request #1479 from mafoo/WhitespaceClean-resources/install/scripts
WhitespaceClean-resources/install/scripts
2016-03-11 13:20:17 -07:00
FusionPBX 4219954db5 Merge pull request #1473 from mafoo/WhitespaceClean-resources/provision/cisco
WhitespaceClean-resources/provision/cisco
2016-03-11 13:19:13 -07:00
FusionPBX db41938a54 Merge pull request #1480 from mafoo/WhitespaceClean-resources/templates/conf
WhitespaceClean-resources/templates/conf
2016-03-11 13:18:21 -07:00
FusionPBX 0784e64bcb Merge pull request #1482 from mafoo/WhitespaceClean-resources/edit_area
WhitespaceClean-resources/edit_area
2016-03-11 13:16:31 -07:00
FusionPBX c147c958bc Merge pull request #1483 from mafoo/WhitespaceClean-resources/templates/engine/smarty
WhitespaceClean-resources/templates/smarty
2016-03-11 13:16:14 -07:00
FusionPBX 353843a64f Merge pull request #1484 from mafoo/WhitespaceClean-resources/others
WhitespaceClean-resources/others
2016-03-11 13:15:09 -07:00
FusionPBX 1e2ec83129 Merge pull request #1485 from mafoo/WhitespaceClean-others
WhitespaceClean-others
2016-03-11 13:12:41 -07:00
markjcrane b135f6b120 Change device_provision_enable to device_enabled to make it consistent with the rest of the fields that are used for to enable and disable something. 2016-03-11 11:46:02 -07:00
markjcrane 3898a18f42 Prevent custom sip port from breaking provision.lua and add prevent nil concatenation errors. 2016-03-11 10:31:11 -07:00
mafoo 7c01967366 WhitespaceClean-others
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:58:35 +00:00
mafoo 2b39287bdc WhitespaceClean-resources/others
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:57:01 +00:00
mafoo 5de8363e78 WhitespaceClean-resources/templates/smarty
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:45:32 +00:00
mafoo ee948572a0 WhitespaceClean-resources/edit_area
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:29:29 +00:00
mafoo c5463d6ed3 WhitespaceClean-resources/jquery
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:26:36 +00:00
mafoo 0d2cc7f124 WhitespaceClean-resources/templates/conf
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:24:27 +00:00
mafoo b7555579bf WhitespaceClean-resources/install/scripts
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 13:21:52 +00:00
mafoo e894c49823 WhitespaceClean-resources/provision/others
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:22:24 +00:00
mafoo cf465f4ef3 WhitespaceClean-resources/provision/mitel
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:20:37 +00:00
mafoo a7a3fc6a69 WhitespaceClean-resources/provision/yealink
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:18:50 +00:00
mafoo 6cb28a1516 WhitespaceClean-resources/provision/polycom
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:16:24 +00:00
mafoo e3c2c38532 WhitespaceClean-resources/provision/grandstream
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:12:47 +00:00
mafoo 0bbc506d41 WhitespaceClean-resources/provision/cisco
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:10:46 +00:00
mafoo e0fdf41320 WhitespaceClean-resources/classes
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:08:26 +00:00
mafoo 1f609dc806 WhitespaceClean-core/batch
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:06:20 +00:00
mafoo 91b61683c0 WhitespaceClean-core/install
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:03:29 +00:00
mafoo e410824380 WhitespaceClean-app/batch_2
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 12:01:24 +00:00
mafoo d408cf2fbc WhitespaceClean-app/batch_1
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:56:29 +00:00
mafoo ce8137b407 WhitespaceClean-app/xml_cdr
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:54:18 +00:00
mafoo ad07565e16 WhitespaceClean-app/sip_profiles
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:51:17 +00:00
mafoo c34ce168d5 WhitespaceClean-app/dialplan
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:49:17 +00:00
mafoo fbffc5f20e WhitespaceClean-app/access_controls
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:47:28 +00:00
mafoo 908f47472f WhitespaceClean-root
whitespace pass over files
for reference regex that was used s/[ \t]+(\r?\n)/\1/
2016-03-11 11:44:58 +00:00
mafoo 4131a70c02 BugFix-Translation-True_False
fixed various uses of ucwords() to render true/false to use
$text[label-*] instead
2016-03-11 11:34:52 +00:00
markjcrane 11c2176a15 The last two changes to xml handler dialplan.lua did not work well with global dialplans. Removed some of the changes to fix the regression. 2016-03-11 00:58:52 -07:00
markjcrane ad7e9336dd Add missing call_direction for ring group destinations. 2016-03-10 18:10:49 -07:00
reliberate 436dc3b28f User Dashboard: Temporarily disable click-to-call till properly fixed. 2016-03-10 17:03:24 -07:00
reliberate df5e1fc87e Dashboard: Removed testing code on click-to-call function. 2016-03-10 16:49:26 -07:00
reliberate 0b330288f4 CDR: Add missing icon image files. 2016-03-10 16:42:01 -07:00
reliberate a9237ef3fa User Dashboard: Add blocks with additional customizable information (voicemail count, missed calls, recent calls, system counts, domain limits, and system status).
CDR: Adjust icon status and missed call filter to be more accurate, simplify User's view of CDR, add additional call result filter.
2016-03-10 16:29:47 -07:00
markjcrane 56c3bde940 Use a more efficient way to get the domain name for xml handler - dialplan. 2016-03-10 08:18:46 -07:00
markjcrane 39b38738d8 Increase efficiency xml handler section dialplan. 2016-03-09 13:09:25 -07:00
markjcrane 676ef47d34 Move flags to a more standard directory. If they get used by another feature then the flags should be moved to the main fusionpbx/resources/images directory. 2016-03-09 11:12:47 -07:00
mafoo 49fe51710c corrected function definition
fixed bug introduced on 2/1/2016 in destination.lua
fixed bug introduced on 2/1/2016 in ring_member.lua
2016-03-09 17:54:44 +00:00
mafoo 4345648dc4 added mod_translate to the modules list 2016-03-09 17:46:20 +00:00
Alexey Melnichuk d22254bac7 Fix. Use operator panel with short extension.
Problem because if you have say 15 ext. and one of ext has say number `14`
and extension `14` has index 15 in array.
And php returns
```PHP
$a = array('14' => 'string', 14 => 'number');
print($a['14']); // number
``
2016-03-09 16:24:20 +03:00
markjcrane 81e0a9c7c2 Add new default settings for http_auth_type, contact_extensions, contact_groups, and contact_users. 2016-03-07 21:35:38 -07:00
markjcrane f475437a9d Add http digest authentication and make it the default with an option to use basic if required. 2016-03-07 21:31:37 -07:00
markjcrane 2378db990f Remove the limit on the setting value of 255 as it blocks the length fax footer. 2016-03-07 12:04:07 -07:00
markjcrane 47ea47710c Fix the phrases_dir if statement. If the phrases_dir is not null then need to include xml from the file system. 2016-03-07 10:30:29 -07:00
markjcrane 75780c1ec1 Add the contacts array to provisioning template to be used for the phone directory. 2016-03-04 18:37:01 -07:00
markjcrane 010a237c09 Handle the phrases_dir nil in a more flexible way. 2016-03-04 15:51:10 -07:00
markjcrane 7cbb32dcd3 Ensure the phrases_dir is not nil. 2016-03-04 15:08:58 -07:00
markjcrane b4b86b0478 Fix indentation on the editor. 2016-03-04 13:18:30 -07:00
markjcrane 847a9e926d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-04 12:36:19 -07:00
markjcrane fb8046accb Prevent a nil error for xml handler languages. 2016-03-04 12:35:37 -07:00
reliberate ac39f4c207 User Dashboard: Tweak user settings link and voicemail button. 2016-03-03 19:35:14 -07:00
reliberate 4f58ad58f5 User Dashboard: Remove comment, unnecessary language strings. 2016-03-03 19:12:16 -07:00
reliberate ce2490dafc User Dashboard: Minor layout optimizations.
Follow Me: Added search and minimized paging controls.
Extensions: Added minimized paging controls.
2016-03-03 19:01:58 -07:00
markjcrane a7525a1bc7 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-03-03 14:04:32 -07:00
markjcrane 66f194fecf Make the .htaccess more flexible for Apache2. 2016-03-03 14:04:02 -07:00
reliberate ca4b7691f2 User Settings: Fix delete setting, move bulk delete function to user_setting_delete.php. 2016-03-03 11:28:35 -07:00
reliberate e712d9a15e Call Center Agent: Prevent duplicate sip_invite_domain key/value insertion on Agent edit. 2016-02-29 22:54:24 -07:00
reliberate 50deef7823 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-29 21:49:36 -07:00
reliberate 8ed4489710 Outbound Route: Set effective_caller_id_name to use Emergency CID Name when creating 911 route. 2016-02-29 21:46:13 -07:00
markjcrane 449dc0dfa7 Add the missing .php extension. 2016-02-29 20:07:32 -07:00
markjcrane 289a7b892c Fix title-install translation. 2016-02-29 19:53:13 -07:00
markjcrane 49c3b3e991 Add ring_member.lua to app/ring_groups/resources/scripts/ring_member.lua. 2016-02-29 18:52:04 -07:00
markjcrane 112a239902 Minor change remove trailing tab. 2016-02-29 18:47:51 -07:00
markjcrane 9547292524 Add a call limit dialplan disabled for now. 2016-02-29 18:46:50 -07:00
reliberate 4191676600 Settings: Only allow Admin to Add/Edit authorized settings. 2016-02-29 12:06:18 -07:00
markjcrane 3ab5976328 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-29 11:43:48 -07:00
markjcrane f7be0cc943 Fix the comment on install_switch.php. 2016-02-29 11:43:32 -07:00
reliberate 017c946e16 Settings: Add interface for User Settings, add ability for Admin to manage (own) Domain and User Settings. 2016-02-29 11:39:46 -07:00
markjcrane d110fe8f7e install_first_time.php rename to install.php. 2016-02-29 11:28:43 -07:00
markjcrane 093556cd42 Rename install_first_time variable and file name. Remove the install/upgrade_switch.php which isn't being used anymore. Update the indentation and remove inconsistent white spaces. 2016-02-29 09:24:05 -07:00
markjcrane 990a8e766c If follow me is enabled then show it by default. 2016-02-26 14:35:58 -07:00
markjcrane 46ea1de348 Add a new permission follow_me_ignore_busy. 2016-02-26 14:13:32 -07:00
FusionPBX a0c35e92f9 Merge pull request #1453 from moteus/db_break_loop
Fix. Break query loop accordin FS documentation
2016-02-26 08:57:20 -07:00
Alexey Melnichuk 7e1481b747 Fix. FreeSWITCH also breaks loop if return string value which contain number.
```Lua
dbh:query(sql, function()
  return "1" -- breaks loop
end)
2016-02-26 14:17:28 +03:00
Alexey Melnichuk ebfcdc38be Fix. LuaSQL db backend breaks loop only on positive numbers. 2016-02-26 13:57:32 +03:00
Alexey Melnichuk c96a5bee48 Fix. ODBC db backend should breaks loop only when callback returns number ~= 0
```Lua
dbh:query(sql, function(row)
  -- return 0     -- should not break loop
  -- return true  -- should not break loop
  return 1 -- should break loop
end)
```
2016-02-26 13:52:27 +03:00
reliberate 18de6fab30 Account Settings: Bypass browser password manager prompt when saving. 2016-02-25 18:51:49 -07:00
reliberate 010dae5ea9 Inbound Routes: Set column widths on form. 2016-02-25 18:45:27 -07:00
reliberate 03f1f3a6db Default/Domain Setting: Bypass browser password manager prompt when saving. 2016-02-25 18:38:19 -07:00
reliberate 1d95ad0743 Devices, Extensions, Gateways, Users: Bypass browser password manager prompt when saving. 2016-02-25 18:19:51 -07:00
reliberate fb2ba02106 Voicemail: Remove unnecessary echo. 2016-02-25 15:57:28 -07:00
reliberate 23576e8081 Voicemail: Fixes to Greeting select box. Bypass browser password manager pop-up when saving. 2016-02-25 14:39:28 -07:00
reliberate 42e531d31a Voicemail: Provide a select box to choose a Greeting, instead of requesting the Greeting ID to be entered. 2016-02-25 12:06:45 -07:00
reliberate bfb38eec0d Call Control: Hide Follow Me settings when not Enabled. 2016-02-25 11:16:36 -07:00
reliberate d9c6a1df4f Languages: Corrected capitalization on 'false'. 2016-02-25 11:13:18 -07:00
reliberate 34547f27f3 Edit: Allow selection of current file path. 2016-02-25 10:28:33 -07:00
reliberate 8bb1f9c57c Call Control: Fix - Do not disable Call Forward On Busy and Call Forward No Answer when Do Not Disturb is enabled. 2016-02-25 10:03:08 -07:00
FusionPBX d111ae4630 Merge pull request #1443 from moteus/database_backend
Database backend
2016-02-25 08:39:07 -07:00
FusionPBX a16f6efed7 Merge pull request #1451 from moteus/edit_short_open_tag
Fix. Works on php < 5.4.0 and short_open_tag=Off
2016-02-25 08:38:22 -07:00
Alexey Melnichuk bdb7326af9 Fix. Works on php < 5.4.0 and short_open_tag=Off 2016-02-25 15:17:41 +03:00
reliberate 281944254d Edit: Customize defaults with Settings, add live preview on Mode and Font Size. 2016-02-25 01:19:24 -07:00
reliberate 480202bd42 Login: Undo disabling of Login Destination in User Settings when last destination not enabled. 2016-02-24 21:35:57 -07:00
Luis Daniel Lucio Quiroz 1b95a5eff4 Wrong variable in freeswitch.email
https://wiki.freeswitch.org/wiki/Mod_lua#freeswitch.email   

same as my other pull request
2016-02-24 19:59:54 -05:00
reliberate e49034921e Edit: Added Find/Replace and Go To (Line) features in toolbar, rename Ace application folder. 2016-02-24 14:44:32 -07:00
reliberate 288736b5a8 Edit: root.php updated 2016-02-24 12:49:20 -07:00
reliberate 354e4e4918 Edit: Addition of Ace editor application files in /resources 2016-02-24 12:32:41 -07:00
reliberate 5456e2d837 Edit: Revamp using Ace editor (ace.c9.io). 2016-02-24 12:28:35 -07:00
markjcrane 9b2d02a569 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-24 10:43:16 -07:00
markjcrane 2e43f50d72 Update the wallpaper variable yealink_t29g_wallpaper. 2016-02-24 10:42:50 -07:00
FusionPBX d6bf296ace Merge pull request #1447 from moteus/ivr_cid_prefix
Fix. Add `#` to caller ID name when call from IVR
2016-02-24 07:42:29 -07:00
Alexey Melnichuk f498e84716 Fix. Add # to caller ID name when call from IVR 2016-02-24 16:28:38 +03:00
Alexey Melnichuk 65e014d73e Move scripts to separate dirs. 2016-02-24 14:44:50 +03:00
markjcrane 3e1e822fbd Add domain_uuid to the CDR result set. 2016-02-23 19:42:10 -07:00
markjcrane e44cfabcb9 If show all is used on the export then remove the domain name from the file name. 2016-02-23 19:33:16 -07:00
markjcrane 2874807570 Add showall hidden option to the regular CDR search form. 2016-02-23 19:19:03 -07:00
markjcrane 7437048eb4 Fix the SQL command when using the advanced search and improve security on how showall is being used. 2016-02-23 19:05:52 -07:00
markjcrane d58122aa56 Change a POST to a GET on the advanced search for CDR. 2016-02-23 18:15:07 -07:00
markjcrane bfd2d791b9 Fix the checkbox on the show all for the advanced search. 2016-02-23 18:09:00 -07:00
markjcrane eb5c341383 Additional work to get the CDR to allow the show all to work with the regular search and advanced search. 2016-02-23 17:53:21 -07:00
markjcrane 2adb0147a9 Allow admin access to the menu for dialplan -> destinations. 2016-02-23 11:10:27 -07:00
markjcrane e1cd2f8b3a Add translations for the install. 2016-02-22 22:27:53 -07:00
markjcrane 251a1530be Update PHPMailer 5.2.2 to 5.2.14. 2016-02-22 15:00:57 -07:00
markjcrane 88e6d0599c Add round brackets around the condition destination_number for inbound routes generated by destinations. 2016-02-22 14:28:45 -07:00
markjcrane 5a06f486af Rename .project.ROOT to project_root.php this conforms better with current file naming standards. 2016-02-22 14:01:18 -07:00
markjcrane 106d107d9e Increase the HTTPS security. 2016-02-22 13:18:37 -07:00
markjcrane de53ae149e Fix a spelling mistake in the log message in dialplan.lua. 2016-02-22 13:17:04 -07:00
markjcrane 9ce23a7cca Set max rotate on the FreeSWITCH logs to 10. 2016-02-22 13:15:55 -07:00
Alexey Melnichuk e784cb3d6f Fix. unpack moved to table in Lua 5.2 2016-02-20 15:22:28 +03:00
Alexey Melnichuk a33230db15 Fix. connected method on LuaSQL backend. 2016-02-20 15:20:38 +03:00
markjcrane 9809912141 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-19 11:12:18 -07:00
markjcrane 419fb0a88d Device add Mitel line functions that match the Mitel web interface. 2016-02-19 11:11:56 -07:00
Alexey Melnichuk 5afec68fb1 Add. Support multiple database backends.
```Lua
local Database = require 'resources.functions.database'

-- Default backend configured via xml_handler.db_backend = 'native'
dbh = Database.new("system")

-- To use other backends you can use
dbh = Database.backend.luasql("system")
```
2016-02-19 17:03:45 +03:00
FusionPBX 80758e8826 Merge pull request #1441 from moteus/page_caller_id_name
Fix. set caller id name in `page` application
2016-02-19 00:56:19 -07:00
markjcrane cee8e6cd01 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-16 13:05:48 -07:00
markjcrane acce2040ab Company directory allow only setting the first or last name. 2016-02-16 13:05:25 -07:00
FusionPBX eec24d6341 Merge pull request #1442 from moteus/acl_flush_memcache
Fix. Clear memcache after edit ACL.
2016-02-16 08:53:29 -07:00
Alexey Melnichuk 1d2a612030 Fix. Clear memcache after edit ACL. 2016-02-16 14:02:00 +03:00
Alexey Melnichuk 7b20358284 Fix. set caller id name in page application 2016-02-16 13:36:14 +03:00
FusionPBX 612dd5d466 Merge pull request #1440 from blackc2004/master
fix if_permission
2016-02-15 20:37:18 -07:00
blackc2004 be018be1f2 fix if_permission 2016-02-15 11:19:18 -08:00
blackc2004 1054a0fbdc Merge pull request #17 from fusionpbx/master
14
2016-02-15 10:41:46 -08:00
markjcrane fe6a73a3d8 Add ability to the acl.conf.xml to read a description attribute. 2016-02-14 03:09:55 -07:00
markjcrane a7084e4b0b Fix a spelling problem in the demo_ivr.xml. 2016-02-11 13:35:12 -07:00
markjcrane 13861172a9 If the user is in the superadmin or admin group and user group it was preventing the fax_forward number from being updated. 2016-02-11 00:19:44 -07:00
markjcrane b489074e0c Fax add a way to change the inbound fax file name. 2016-02-10 21:44:03 -07:00
markjcrane 9b1cb7c43e Fix the check to see if domain_name is not set. 2016-02-10 17:15:31 -07:00
markjcrane 2e5e2aa3b3 XML CDR - if the domain_uuid is not found then attempt to use sip_req_host to get the domain name. If domain_name and domain_uuid are still empty then add the CDR record with the domain_uuid as null so there is a record of the call. 2016-02-10 13:54:15 -07:00
markjcrane bbd05a9c2d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-10 13:49:46 -07:00
markjcrane d61c7815f9 Prevent nil from crashing the lua script. 2016-02-10 13:49:31 -07:00
FusionPBX 51263a5c23 Merge pull request #1436 from bdstephenson/master
Update W52P Provisioning Template
2016-02-10 09:54:30 -07:00
bdstephenson 17b89a8fc8 Update W52P Provisioning Template
account.1.subscribe_mwi should be set to '1' as per Yealink documentation. Not setting this may cause MWI to not work on the W52P.
2016-02-08 08:48:37 -05:00
FusionPBX f39708bee7 Merge pull request #1435 from skyeblueiscool/patch-1
Update follow_me.php
2016-02-06 23:06:01 -07:00
FusionPBX 8d6b910c60 Merge pull request #1432 from moteus/ivr_menu
IVR menu
2016-02-06 15:42:56 -07:00
FusionPBX 2064b451b2 Merge pull request #1433 from mafoo/BugFix-conference_center_rooms
Fix for when a conference room has no admins
2016-02-06 15:42:29 -07:00
markjcrane aa9717518f Change the category to provision for provision ntp_server_primary, and ntp_server_secondary. 2016-02-06 14:53:31 -07:00
skyeblueiscool dcc64101be Update follow_me.php 2016-02-05 16:47:36 -08:00
blackc2004 e7c80adf2e Merge pull request #16 from fusionpbx/master
14
2016-02-05 09:37:07 -08:00
mafoo 27dfc364df Fix for when a conference room has no admins
If a conference room had no admins it would become impossible to see it in the GUI
This fix makes it possible for a admin or super admin to view rooms in this state.
this uses a new permission "conference_room_view_all"
2016-02-05 09:47:42 +00:00
Alexey Melnichuk c31047470d Fix. Declare vars in correct scope. 2016-02-05 10:20:09 +03:00
markjcrane fa1d97a6ca Fix a minor mistake. 2016-02-04 23:39:08 -07:00
markjcrane 658f2ab678 Hide memcache on the system status page if FreeSWITCH is not installed. 2016-02-04 23:28:23 -07:00
markjcrane e8bed6f611 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-04 23:19:23 -07:00
markjcrane 5e44128f70 Switch settings are not always needed so removing the "throw new Exception" 2016-02-04 23:18:48 -07:00
FusionPBX 3ce7924c02 Merge pull request #1431 from mafoo/BugFix-ivr_menu_edit
BigFix-ivr_menu_edit
2016-02-04 12:36:52 -07:00
Alexey Melnichuk 1bafdba135 Update log. 2016-02-04 20:00:12 +03:00
Alexey Melnichuk 9a70297909 Fix. Infinity loop. IVR ignores max_failures. 2016-02-04 19:42:42 +03:00
mafoo 416a704c12 made it possible to find phrases
fixed string replace not taking out spaces aswell
2016-02-04 16:19:27 +00:00
Alexey Melnichuk 5512276370 Fix. Allow multiple actions in IVR 2016-02-04 19:05:24 +03:00
blackc2004 f32ca0bf14 Merge pull request #15 from fusionpbx/master
13
2016-02-04 07:53:47 -08:00
FusionPBX 7cdd8a31c6 Merge pull request #1430 from mafoo/BugFix-Phrases-app_config
fix for incorrect destinations
2016-02-04 08:51:58 -07:00
mafoo 010963aa2f fix for incorrect destinations 2016-02-04 15:49:03 +00:00
FusionPBX 45dda55c7f Merge pull request #1429 from mafoo/BugFix-Normalize_htaccess
BugFix-Normalize .htaccess
2016-02-04 08:07:40 -07:00
FusionPBX 28c9a9cc91 Merge pull request #1428 from mafoo/Enhance-core/upgrade
Enhance-core/upgrade
2016-02-04 08:02:34 -07:00
Alexey Melnichuk 3327ecae91 Use logger class. 2016-02-04 16:05:35 +03:00
mafoo 057acf09bf Normalized and fixed htaccess
added comments explaining each rule
normalized tabbing
converted captures where not needed (note use of ?: means don't capture)
updated Yealink comment as it also covers Polycom
added missing $mac-directory.xml for Polycom
removed ^(?:.*/) as it is technically not needed, the test that showed
it was needed turned out to be invalid
2016-02-04 12:17:38 +00:00
mafoo ca4e1b8a67 only offer the source upgrade if it is writeable
this check will prevent the source upgrade rendering if the .git folder
is not writeable
2016-02-04 11:14:26 +00:00
Alexey Melnichuk 883b73f6ac Simplify code 2016-02-04 13:20:30 +03:00
Alexey Melnichuk 2ad2448346 Merge remote-tracking branch 'upstream/master' into ivr_menu 2016-02-04 12:14:27 +03:00
FusionPBX 6e3792bf05 Merge pull request #1420 from moteus/fix_partial_dialplan
Fix. Do not build context if there error.
2016-02-03 21:32:15 -07:00
markjcrane ced645ff60 Update for provisioning. Add a new phone the Yealink t49g. 2016-02-03 20:02:59 -07:00
markjcrane f525d2bbda Remove trailing whitespaces. 2016-02-03 19:03:16 -07:00
markjcrane b77b9c75f8 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-02-03 19:02:30 -07:00
markjcrane c2adbaa023 In vars.xml switch from hostname to the switchname. 2016-02-03 19:02:10 -07:00
FusionPBX 64ebccbd70 Merge pull request #1426 from mafoo/BugFix-Phrases-Selected
Corrected selected statements
2016-02-03 10:46:35 -07:00
markjcrane 578d279315 Include the mkdir function for the IVR Menu. 2016-02-03 10:43:22 -07:00
mafoo 467384aece Corrected selected statements 2016-02-03 17:32:07 +00:00
markjcrane 4bb748a300 Base64 - Make sure the directory structure exists. 2016-02-03 10:01:43 -07:00
blackc2004 1ef633977a Merge pull request #14 from fusionpbx/master
12
2016-02-03 07:59:08 -08:00
FusionPBX ea4d3ba86a Merge pull request #1421 from moteus/cache_support
Fix. cache.support always returns `false`
2016-02-03 08:31:27 -07:00
FusionPBX 2c4270fb82 Merge pull request #1425 from mafoo/BugFix-Phrases
Fix for phrases are actually phrase_uuid not phrase_name.domain_uuid
2016-02-03 08:17:26 -07:00
mafoo c17fccbff2 Fix for phrases are actually phrase_uuid not phrase_name.domain_uuid 2016-02-03 15:08:28 +00:00
FusionPBX a882449d2e Merge pull request #1424 from moteus/streamfile_domain_count
Fix. Use domain name in streamfile.lua.
2016-02-03 07:59:47 -07:00
FusionPBX e9a7f92740 Merge pull request #1423 from moteus/ivr_save_sound_dir
Fix. Save instead of empty value path to recordings for some sound op…
2016-02-03 07:57:40 -07:00
Alexey Melnichuk 9c51243035 Fix. Can not pick any options after IVR play streamfile.lua
Rewrite ivr functions to easy read code.
2016-02-03 16:53:22 +03:00
Alexey Melnichuk 1f5269720f Fix. Use domain name in streamfile.lua.
Fix. Unset input callback after play file done.
2016-02-03 15:20:50 +03:00
Alexey Melnichuk 227cd5d854 Fix. Save instead of empty value path to recordings for some sound options. 2016-02-03 10:28:12 +03:00
Alexey Melnichuk a77e6ec87f Fix. cache.support always returns false 2016-02-02 19:54:23 +03:00
Alexey Melnichuk 48b3aa2917 Add. debug message to log. 2016-02-02 19:32:27 +03:00
Alexey Melnichuk 057d487ee7 Fix. Do not build context if there error. 2016-02-02 19:08:19 +03:00
markjcrane be2c690a1d Call center used with xml handler does not have access to the session. Remove session and replace it with api global_getvar as session is not always available. 2016-02-01 11:16:23 -07:00
markjcrane 9ec2da1b7e LUA function format_ringback the session:getVariable must have quotes around the 'hold_music' string. Next check to see if the ringback is nil or an empty string first before trying to use 'match'. 2016-01-31 10:10:08 -07:00
markjcrane 099aad8c98 Add polycom_digitmap variable for Polycom variable for provisioning. 2016-01-29 16:02:32 -07:00
markjcrane 3fdee27e3a Mitel provisioning ensure the user_id is set for all keys. 2016-01-29 13:45:25 -07:00
markjcrane 335fb87c0c More work on the Mitel key handling. 2016-01-29 12:10:55 -07:00
markjcrane 999ab5637e Fix the Mitel key type. 2016-01-29 12:04:37 -07:00
markjcrane 0915a7283e Mitel Provisioning add a value for 'Addr' 2016-01-29 11:34:10 -07:00
markjcrane 3c5f4266dd Remove the indentation on the Mitel key assignments so the resulting provisioning file is easier to read. 2016-01-29 11:14:49 -07:00
markjcrane 5803227117 Update the Mitel template for Key Line use the key_id instead of key_line. 2016-01-29 11:05:05 -07:00
markjcrane 1b2d8851ba Fix the syntax for the Mitel template. 2016-01-29 10:53:36 -07:00
markjcrane 346c5cab34 Add Mitel 5330 provisioning templates. 2016-01-29 10:34:18 -07:00
markjcrane cb915351c9 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-29 10:32:03 -07:00
markjcrane 42d0f146a6 Improve the key handling in the Mitel. 2016-01-29 10:31:44 -07:00
FusionPBX 012655ab23 Merge pull request #1415 from mafoo/Enhance-ringback
Enhance ringback
2016-01-29 07:24:14 -07:00
mafoo 02566294cb converted callcenter to use common function 2016-01-29 11:26:21 +00:00
markjcrane d0eb7ad2c1 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-28 19:42:54 -07:00
markjcrane b6790e069b Change spandsp.conf.xml use-ecm from true to false. 2016-01-28 19:42:39 -07:00
FusionPBX 3bc0f8c241 Merge pull request #1414 from moteus/moh_record_path
Fix. Path to records in music on hold.
2016-01-28 11:37:22 -07:00
mafoo ef31b4082d Converted uses of ringback to common function 2016-01-28 15:51:50 +00:00
Alexey Melnichuk 7545a52013 Fix. Path to records in music on hold. 2016-01-28 13:17:30 +03:00
markjcrane e5169e2432 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-27 15:56:42 -07:00
markjcrane 217e3b562c Add a new permission extension_user_record to control who is able to see extension record. By default superadmin has this permission. 2016-01-27 15:56:22 -07:00
FusionPBX 78c1bb01c4 Merge pull request #1413 from mafoo/BugFix-Phrases
phrases should be written out as there uuid
2016-01-26 10:38:43 -07:00
mafoo 671315a361 phrases should be written out as there uuid
not the name.domain_uuid format
2016-01-26 17:34:44 +00:00
markjcrane 5ed6f62307 Fix the install problem. 2016-01-26 09:01:56 -07:00
markjcrane 4261c58c14 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-25 21:27:37 -07:00
markjcrane 9546782a68 Add Cisco and Linksys to the format_mac list. 2016-01-25 21:27:21 -07:00
FusionPBX 45a088a409 Merge pull request #1406 from moteus/modules_no_esl
Fix. Display modules form if FS does not start.
2016-01-25 21:18:22 -07:00
markjcrane f859f1f9a9 Update the Cisco 794x personal contacts. 2016-01-25 20:42:48 -07:00
markjcrane c49e47e61f More work on user assigned contacts. 2016-01-25 20:38:45 -07:00
markjcrane 495bafd3f5 Remove the recordings_dir with automatic domain_name and add domain_name in a few places where it was missing. 2016-01-25 16:53:09 -07:00
markjcrane 7d375d05de Add recording file handling to the ivr xml handler. 2016-01-25 16:32:27 -07:00
markjcrane a018674597 Add domain name to the recordings path in ivr_menu.lua. 2016-01-25 16:31:04 -07:00
markjcrane 8cd347bede Disable default settings -> call center path by default. 2016-01-25 10:24:09 -07:00
markjcrane 2bd1c492b0 Change the variable from cmt to comment to make it easier to read the code. 2016-01-25 09:41:29 -07:00
FusionPBX 3ea2012644 Merge pull request #1412 from mafoo/BugFix-FT_Install
BugFix for remote pgsql databases
2016-01-25 09:08:28 -07:00
mafoo 97747c7fb5 BugFix for remote pgsql databases 2016-01-25 14:29:27 +00:00
blackc2004 932f4379e8 Merge pull request #13 from fusionpbx/master
11
2016-01-23 06:24:07 -08:00
markjcrane 19945b5095 Change the comment in check_password.lua. 2016-01-22 12:24:18 -07:00
FusionPBX ee97fe4230 Merge pull request #1405 from moteus/voicemail_check_enable
Fix. Do not prompt password if there no mailbox.
2016-01-22 12:18:36 -07:00
markjcrane febf47d61e Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-22 11:11:23 -07:00
markjcrane f9bd8e0998 Change Mitel Line 1-8 to Line only. 2016-01-22 11:02:25 -07:00
FusionPBX 7fbc35b1e1 Merge pull request #1407 from mafoo/BugFix-Operator_Panel
BugFix Operator Panel
2016-01-22 08:12:32 -07:00
mafoo 87a2b0de47 fix for when the element is not in the document yet 2016-01-22 11:51:58 +00:00
Alexey Melnichuk 75195d5153 Fix. Display modules form if FS does not start. 2016-01-22 13:05:13 +03:00
Alexey Melnichuk e4e6fe92a9 Fix. Do not prompt password if there no mailbox. 2016-01-22 11:37:34 +03:00
markjcrane 5a20dce9ab Move the php tag. 2016-01-21 23:33:03 -07:00
markjcrane 2e0e499e93 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-21 23:29:29 -07:00
markjcrane 3ea6eac9cf Start the Mitel functions list. 2016-01-21 23:29:13 -07:00
FusionPBX a741c6d2dc Merge pull request #1404 from moteus/dialplan_copy_app_uuid
Fix. Copy dialplan extension with correct `add_uuid` for outbound route.
2016-01-21 08:53:43 -07:00
Alexey Melnichuk fec4df23a0 Fix. Copy dialplan extension with correct add_uuid for outbound route. 2016-01-21 17:29:14 +03:00
markjcrane c505fec77b Update the constructor in the vcard class. 2016-01-20 23:56:06 -07:00
markjcrane 24434b06ed Remove the polycom/tftp/site.cfg as its currently not working as expected. 2016-01-20 20:33:50 -07:00
markjcrane d452bdda0c Add a new polycom template for tftp. 2016-01-20 16:27:17 -07:00
markjcrane 3984218fb5 Fix the provisioning class. 2016-01-20 12:26:01 -07:00
markjcrane 9ca689236a Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-20 11:58:33 -07:00
markjcrane c6b39cc0a5 Add device profile copy button. 2016-01-20 11:58:10 -07:00
FusionPBX 9cd2cd4789 Merge pull request #1397 from mafoo/Enhance-root.php
Enhance root.php
2016-01-20 11:06:18 -07:00
FusionPBX 24f5e3d4c9 Merge pull request #1399 from mafoo/BugFix-app-devices
BugFix-app/devices
2016-01-20 10:59:07 -07:00
mafoo 9ce00a03cf values were being assigned rather than compared 2016-01-20 13:44:36 +00:00
Mafoo ad324f4744 changed throw Exception to die
nothing ever eval runs the root.php so changed to die to cause a immediate report of error and stop code processing.
2016-01-20 11:30:31 +00:00
markjcrane 882333a1b0 Add personal directory array for provisioning. 2016-01-19 22:14:02 -07:00
markjcrane c068d9dab6 Add a few more permission checks to conference_room_edit.php 2016-01-18 22:06:45 -07:00
markjcrane 30d5177b0a Work on the permissions for contacts. 2016-01-18 21:46:49 -07:00
markjcrane 33d8597a5f Allow call forward and follow me to be setup when the extension is disabled. 2016-01-18 21:33:03 -07:00
markjcrane 8fcc999bd2 Remvove the shared option and update the contact description. 2016-01-18 18:30:22 -07:00
markjcrane bad658ac68 Move the contact user data to the correct table. 2016-01-18 17:51:32 -07:00
markjcrane 38af18d127 Simply deleting contact users and groups. 2016-01-18 17:42:32 -07:00
markjcrane 9e8cd7d348 Add a missing bracket. 2016-01-18 16:55:26 -07:00
markjcrane 1474b51779 Update permissions on contact_edit and add ability to delete a user that is assigned to the contact. 2016-01-18 16:53:19 -07:00
markjcrane 08625735e9 Update the sql query that lists the assigned users to specific contacts. 2016-01-18 15:02:34 -07:00
markjcrane 69de2cacac Fix the contact page layout. 2016-01-18 14:44:05 -07:00
markjcrane 35c8198160 Add the translations for Users, and add the new permissions. 2016-01-18 14:35:44 -07:00
markjcrane b60f55525e Add contact user list to contact_edit.php. 2016-01-18 14:17:59 -07:00
markjcrane 468e86e937 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-18 14:15:36 -07:00
markjcrane e960c847d6 Move the sql queries from the content in conference_room_edit.php 2016-01-18 14:15:21 -07:00
FusionPBX 1e9343aa46 Merge pull request #1396 from mafoo/Enhance-BugFix
Enhance root.php
2016-01-18 11:22:41 -07:00
Mafoo 2669f6f1a9 Added check for if .project.ROOT is missing
If a installation is missing the .project.ROOT previously it would just use the last search path as the project root (wrong) this will cause a Exception should it be unable to find it
2016-01-18 09:38:16 +00:00
markjcrane e9d8605c0d Assign the user that created the contact to the user that created it. When deleting a contact delete the user assigned to it. 2016-01-17 16:16:51 -07:00
markjcrane 1c59453952 Add a new table v_contact_users. 2016-01-17 14:17:12 -07:00
markjcrane 23b4b7c9bf Change $_SERVER['DOCUMENT_ROOT'].PROJECT_PATH to $_SERVER["PROJECT_ROOT"]. 2016-01-17 00:01:13 -07:00
markjcrane b95e134578 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-16 21:42:40 -07:00
markjcrane 4321704a33 Rename the cisco provision files for consistency. 2016-01-16 21:42:13 -07:00
FusionPBX 5ade255383 Merge pull request #1394 from blackc2004/master
change file name
2016-01-16 13:56:54 -07:00
blackc2004 2ec4abafbe change file name 2016-01-16 11:30:49 -08:00
blackc2004 2796a4908f Merge pull request #12 from fusionpbx/master
11
2016-01-16 11:16:19 -08:00
markjcrane 3eda2664fd Set the mac address to lower case in a different location. 2016-01-16 12:02:32 -07:00
markjcrane afd92882c9 Set the mac address to lower case. 2016-01-16 11:58:22 -07:00
markjcrane b67f9dee45 This doesn't appear to be completed. The developer that created should talk to me about what its purpose is as this seems to duplicate domain settings. 2016-01-16 10:33:46 -07:00
FusionPBX 76b1ea734e Merge pull request #1331 from mafoo/BugFix-root.php_logic
Rollout new root.php
2016-01-16 10:09:44 -07:00
markjcrane 74ca9eb980 Consolidate the SQL Queries for better performance. 2016-01-16 09:54:01 -07:00
markjcrane 285cad06da Fix a problem with the provision url path which was caused by a pull request in the last 12 hours. 2016-01-16 09:44:15 -07:00
FusionPBX 88a10cbea8 Merge pull request #1139 from joernott/master
Allow provisioning with internal addressbook and update snom320 tpl
2016-01-15 22:45:32 -07:00
FusionPBX e5aee41056 Merge pull request #1385 from blackc2004/master
yealink remote phone book
2016-01-15 22:40:55 -07:00
FusionPBX 238ffb5170 Merge pull request #1390 from mafoo/BugFix-htaccess
fix for when running in root and no leading /
2016-01-15 21:44:52 -07:00
FusionPBX 6a586abb16 Merge pull request #1384 from moteus/lua_conf_run_example
Add. Example of how run fax queue monitor.
2016-01-15 21:43:34 -07:00
FusionPBX fad8343802 Merge pull request #1387 from mafoo/BugFix-Languages
BugFixes in languages.lua
2016-01-15 21:42:48 -07:00
FusionPBX 04813452a1 Merge pull request #1388 from mafoo/BugFix-Devices
BugFix to app/devices
2016-01-15 21:42:01 -07:00
FusionPBX 7fc284b9f0 Merge pull request #1391 from blackc2004/patch-35
Update cidlookup.conf.xml
2016-01-15 21:37:19 -07:00
FusionPBX c841c8f867 Merge pull request #1392 from blackc2004/patch-36
Update 980_cidlookup.xml
2016-01-15 21:36:46 -07:00
blackc2004 1a6d6308c7 Update 980_cidlookup.xml 2016-01-15 20:16:21 -08:00
blackc2004 2829fefdd2 Update cidlookup.conf.xml 2016-01-15 20:11:38 -08:00
markjcrane a016780684 Fix the domain name in MN_Generic.cfg. 2016-01-15 17:54:06 -07:00
markjcrane 62d1575202 Make the domain in MN_Generic.cfg dynamic. 2016-01-15 17:35:00 -07:00
markjcrane c4eca6c330 Mitel provisioning add MN_Generic.cfg and update the 5324 and 5340 templates. 2016-01-15 17:09:16 -07:00
markjcrane a312ff7415 Add a line feed to the mitel/5324/MN_{$mac}.cfg template. 2016-01-15 14:27:53 -07:00
markjcrane 97aadbc9c0 Default mitel tftp_config to 2. 2016-01-15 14:15:53 -07:00
markjcrane 8d5436e607 Fix the domain_name syntax. 2016-01-15 13:45:32 -07:00
markjcrane 49f156e6a2 A few more adjustments for the Cisco 79xx directories. 2016-01-15 13:43:40 -07:00
markjcrane e72f244298 Fix the syntax in the 7940 and 7960 directory-personal.xml configuration. 2016-01-15 13:36:46 -07:00
Matthew Vale 8814c414a5 fix for when running in root and no leading / 2016-01-15 16:48:37 +00:00
Matthew Vale 1502cf15ff changed protocol to match request 2016-01-15 13:43:10 +00:00
Matthew Vale 0111fff25b BugFixes in languages.lua
removed extra ;'s
fix file_handle:close to be inside the if null check
2016-01-15 10:35:19 +00:00
Matthew Vale b20a38f454 added logic in cli mode to chdir to the correct directory first
the webserver would normally do this for us, but we need to do it
2016-01-14 16:25:05 +00:00
Matthew Vale 355bec91a2 changed text.php to use $_SERVER["PROJECT_ROOT"] 2016-01-14 16:15:41 +00:00
markjcrane b40415c53f If the call group or toll allow have a value set set selected. 2016-01-13 17:57:25 -07:00
markjcrane e186172b6f Use call group singular instead of plural. 2016-01-13 16:40:26 -07:00
markjcrane ab17ff48f4 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-13 16:27:28 -07:00
markjcrane 73b3afe506 Add an option for toll allow and call group select list. 2016-01-13 16:26:55 -07:00
blackc2004 28aec4f0a9 start of local extensions as remote phone book 2016-01-13 10:08:38 -08:00
blackc2004 5ad0b07eb5 Merge pull request #11 from fusionpbx/master
11
2016-01-13 10:05:49 -08:00
Matthew Vale 173ae7001d Added full logic to support cli as well 2016-01-13 17:38:54 +00:00
Alexey Melnichuk bc78f557a9 Add. Example of how run fax queue monitor. 2016-01-13 10:40:21 +03:00
FusionPBX 978f2fbd89 Merge pull request #1383 from moteus/move_fax_scripts
Change. Move `fax_queue_*` scripts to `app/fax/resources/scripts`
2016-01-13 00:23:04 -07:00
Alexey Melnichuk 49a6a760dd Change. Move fax_queue_* scripts to app/fax/resources/scripts 2016-01-13 10:22:32 +03:00
markjcrane d513ddf1ea Complete adding application hangup. 2016-01-12 23:16:45 -07:00
markjcrane b422117500 Add hangup to the destination select list. 2016-01-12 21:07:49 -07:00
markjcrane 89dd11cf3e Comment out the languages not in use until they are needed. 2016-01-12 21:04:39 -07:00
markjcrane 605498c114 Remove the round brackets as they are not needed with this dialplan. 2016-01-12 20:54:48 -07:00
markjcrane 37051d8c1d Remove the rss feed from the Mitel template. 2016-01-12 20:50:48 -07:00
markjcrane c1266f3e00 Remove the line after ?> 2016-01-12 20:48:22 -07:00
markjcrane 06932b85f7 Show when we are clearing the cache for *78 or *79. 2016-01-12 19:34:57 -07:00
blackc2004 ce7f0f82d5 Merge pull request #10 from fusionpbx/master
7
2016-01-12 12:18:57 -08:00
Matthew Vale b81748bd22 change to use '/' instead of DIRECTOR_SEPERATOR 2016-01-12 14:47:50 +00:00
Matthew Vale a2c845b2c9 Changed upgrade to use PROJECT_ROOT instead 2016-01-12 13:55:45 +00:00
Matthew Vale 1ad1c31b27 Rollout of root.php 2016-01-12 13:55:39 +00:00
Matthew Vale 9da082409a Added display of project root 2016-01-12 13:55:32 +00:00
Matthew Vale 1d60d8acb4 Initial changes to root.php
added new $_SERVER['PROJECT_ROOT'] that takes into account sub-dir detection
2016-01-12 13:55:27 +00:00
markjcrane fe9c46c0d0 Change array extensins to contact_extensions and add a new extension array. Remove trailing spaces. And add a new cisco 79xx directory called Our Phones. 2016-01-12 02:42:59 -07:00
markjcrane 2a04a88b69 Add dsn_callcenter and improve the indentation. 2016-01-12 01:48:11 -07:00
markjcrane 8ac40de88f Set the mac address variable. 2016-01-11 07:58:57 -07:00
markjcrane a35d442dfa Change the vendor ID hex number to lower case and re-use prov object that already exists. 2016-01-09 11:50:49 -07:00
markjcrane ba67594456 Method get_vendor add vendor mitel and put them in alphabetical order. 2016-01-09 11:37:40 -07:00
markjcrane c076becb21 Use the format_mac method in the provision class. 2016-01-09 11:22:10 -07:00
markjcrane 7c9c6acc82 Continued work on formatting the mac address for upper or lower case. 2016-01-09 11:10:37 -07:00
markjcrane 40b665fefa Device File download format the mac address file name according to the requirements of the vendor. 2016-01-09 09:52:27 -07:00
markjcrane 3fddd940ec Add a missing keyword function. 2016-01-09 09:46:43 -07:00
markjcrane 97ab1c9c87 Add a new method call format_mac to make the code more reusable. 2016-01-09 09:43:14 -07:00
markjcrane 878571c927 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-09 09:29:53 -07:00
markjcrane 01edbb30b8 Set the mitel mac address to upper case. 2016-01-09 09:29:39 -07:00
FusionPBX f2444744fb Merge pull request #1380 from daniel-lucio/patch-1
Bill the incoming call
2016-01-08 22:54:33 -07:00
Luis Daniel Lucio Quiroz 39cbe216df Bill the incoming call
wrong variable, use the correct one.
2016-01-08 23:44:06 -05:00
markjcrane ac09089f17 Fix the PostgreSQL query in cidlookup.conf.xml. 2016-01-08 18:15:45 -07:00
markjcrane e0e28180bc Update the name of the dialplan. 2016-01-08 14:13:00 -07:00
markjcrane 8a76b00d88 Add a dialplan for mod_cidlookup. 2016-01-08 14:05:59 -07:00
blackc2004 01e9f21e6d Merge pull request #9 from fusionpbx/master
Merge pull request #1375 from blackc2004/master
2016-01-06 12:59:56 -08:00
markjcrane 41325c0c7a Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-06 11:10:37 -07:00
FusionPBX 5d15710d37 Merge pull request #1375 from blackc2004/master
fix another directory setting url
2016-01-06 10:55:16 -07:00
blackc2004 06a3eb3e7e another directory setting url typo 2016-01-06 09:43:25 -08:00
blackc2004 2087c9a620 Merge pull request #8 from fusionpbx/master
Merge pull request #1373 from blackc2004/master
2016-01-06 09:40:37 -08:00
FusionPBX 218c0ca186 Merge pull request #1373 from blackc2004/master
fix directory setting url typo
2016-01-05 13:24:54 -07:00
markjcrane 371368a608 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-05 13:19:18 -07:00
markjcrane 1a49780757 Fix the FAX retry email. 2016-01-05 13:19:02 -07:00
blackc2004 cbf4a929bf fix two files 2016-01-05 12:16:53 -08:00
blackc2004 9e45cc8acc change ldap settings to be consistent across all yealink files 2016-01-05 12:14:03 -08:00
blackc2004 387157b689 Update y000000000036.cfg 2016-01-05 11:20:33 -08:00
blackc2004 ef8ba8b92b Update y000000000029.cfg 2016-01-05 11:19:08 -08:00
FusionPBX d03573fa6e Merge pull request #1365 from blackc2004/patch-26
Update y000000000005.cfg
2016-01-05 11:40:50 -07:00
FusionPBX e14d876acb Merge pull request #1366 from blackc2004/patch-25
Update y000000000035.cfg
2016-01-05 11:40:40 -07:00
FusionPBX 4765830dd6 Merge pull request #1367 from blackc2004/patch-28
Update y000000000029.cfg
2016-01-05 11:40:07 -07:00
FusionPBX 799e02d090 Merge pull request #1364 from blackc2004/patch-27
Update y000000000046.cfg
2016-01-05 11:39:58 -07:00
FusionPBX 64298527b7 Merge pull request #1368 from blackc2004/patch-29
Update y000000000035.cfg
2016-01-05 11:39:29 -07:00
FusionPBX 411c18477a Merge pull request #1369 from blackc2004/patch-30
Update xml_cdr_search.php
2016-01-05 11:39:07 -07:00
FusionPBX 610d45c355 Merge pull request #1370 from blackc2004/patch-31
Update xml_cdr.php
2016-01-05 11:38:48 -07:00
FusionPBX 9f2ef55808 Merge pull request #1372 from blackc2004/patch-32
Update app_config.php
2016-01-05 11:38:08 -07:00
FusionPBX 78a27368d7 Merge pull request #1371 from blackc2004/patch-34
Update emails.php
2016-01-05 11:37:56 -07:00
blackc2004 0c7b49ed29 Update emails.php 2016-01-05 10:21:55 -08:00
blackc2004 d4e3035880 Update app_config.php 2016-01-05 10:20:12 -08:00
blackc2004 8a293a1c21 Update xml_cdr.php 2016-01-05 10:13:54 -08:00
blackc2004 68d260921c Update xml_cdr_search.php 2016-01-05 10:12:39 -08:00
blackc2004 37379daf38 Update y000000000035.cfg 2016-01-05 09:58:00 -08:00
blackc2004 e6fa94fbf7 Update y000000000029.cfg 2016-01-05 09:54:38 -08:00
blackc2004 5b61d29749 Update y000000000046.cfg 2016-01-05 09:53:43 -08:00
blackc2004 95f0ca4207 Update y000000000005.cfg 2016-01-05 09:51:58 -08:00
blackc2004 52b71faa5f Update y000000000035.cfg 2016-01-05 09:50:10 -08:00
FusionPBX c9a7278b53 Merge pull request #1362 from mafoo/Enhance-Dashboard
Updated ring_group_forward for user dashboard
2016-01-05 09:46:48 -07:00
Matthew Vale 6788adeae4 Updated ring_group_forward for user dashboard
this is so the user_dashboard consistently shows the ring group name (as
used elsewhere to refer to a ring group)
2016-01-05 15:17:20 +00:00
markjcrane b9eae2a150 Another adjustment to the xml. 2016-01-04 19:33:02 -07:00
markjcrane 8ee96d3136 A few more xml adjustments for the IVR Menu and add a desription attribute for each IVR option. 2016-01-04 19:29:39 -07:00
markjcrane 23460f69c5 Fix a small bug with the ivr. 2016-01-04 19:19:39 -07:00
markjcrane 7885323d37 Update the ivr menu to use memcache with the uuid as part of the key. 2016-01-04 19:09:29 -07:00
markjcrane 499c3c8928 Continue work to make IVR menu work from XML handler. 2016-01-04 19:05:31 -07:00
markjcrane 8d604061f5 Rename ivr.lua to ivr.conf.lua. 2016-01-04 19:03:28 -07:00
markjcrane 85e28ae838 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2016-01-04 17:16:27 -07:00
markjcrane aac6d4ff96 Using phrase uuid instead of the phrase name reason is this prevents the phrase from breaking when the phrase name is changed. 2016-01-04 17:16:14 -07:00
FusionPBX c9396f93ea Merge pull request #1360 from fusionpbx/revert-1355-Merge-4.0_BugFixes
Revert "cherry picked changes from 4.0 branch"
2016-01-04 13:14:04 -07:00
FusionPBX f208e06a9d Revert "cherry picked changes from 4.0 branch" 2016-01-04 13:13:48 -07:00
markjcrane 9054881d5a FusionPBX source coding standard uses tabs instead of spaces for indentation. 2016-01-04 13:04:51 -07:00
markjcrane e823b991d1 Update destination.lua some preparation to extend it further. 2016-01-04 12:56:50 -07:00
FusionPBX f83c7a0032 Merge pull request #1358 from moteus/ring_group_dest_uuid
Fix. Definition of `uuid` function in destination.lua.
2016-01-04 12:46:15 -07:00
Alexey Melnichuk f50a535e02 Fix. Definition of uuid function in destination.lua. 2016-01-04 09:56:06 +03:00
markjcrane 8c52b1167f Change lang_path to phrases_dir in languages.lua. 2016-01-03 00:42:40 -07:00
markjcrane 16ca1ebb99 Rename ring_member.lua to destination.lua. 2016-01-02 16:38:59 -07:00
markjcrane 4be9932c45 Remove the + from the format_phone function. 2016-01-02 16:22:19 -07:00
markjcrane 5f3cc182fe Move ring_member.lua to ring_groups/resources/scripts/ring_member.lua. 2016-01-02 13:21:34 -07:00
markjcrane 98355e8084 Improve ring_member.lua with consistent indentation, notes, and more if session:ready to prevent errors. 2016-01-02 13:09:28 -07:00
FusionPBX 4cbd95368f Merge pull request #1354 from mafoo/BugFix-Dashboard_Redirect
BugFix-Dashboard_Redirect
2016-01-01 18:54:12 -07:00
FusionPBX c14c5ad900 Merge pull request #1355 from mafoo/Merge-4.0_BugFixes
cherry picked changes from 4.0 branch
2015-12-31 09:40:45 -07:00
FusionPBX e7cebd1be5 Merge pull request #1357 from mafoo/BugFix-Install-2
Bugfix install 2
2015-12-31 09:40:06 -07:00
Matthew Vale 1fd3443ee6 removed redundant code 2015-12-31 16:33:19 +00:00
Matthew Vale d5e1de163c fixed missing on new Exception 2015-12-31 16:32:51 +00:00
Matthew Vale 4fdb6e9916 cherry picked changes from 4.0 branch 2015-12-31 10:11:31 +00:00
Matthew Vale 408f76e178 added missing / in path and set redirect correctly 2015-12-31 09:40:59 +00:00
FusionPBX afbd7a93af Merge pull request #1352 from mafoo/BugFix-Install
added correct bits detection
2015-12-30 10:46:50 -07:00
Matthew Vale ff2e2bd396 correction for button name 2015-12-30 16:58:39 +00:00
Matthew Vale e05b8ffca2 added correct bits detection 2015-12-30 16:54:36 +00:00
markjcrane 036eb31031 Add odbc-dsn to fifo.conf.xml 2015-12-29 23:47:20 -07:00
markjcrane d839b78bc0 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-29 14:54:09 -07:00
markjcrane 60cfbf3fe0 Trim the default codecs slightly. 2015-12-29 14:53:53 -07:00
FusionPBX 26102d2537 Merge pull request #1345 from moteus/gitignore
Add. `.gitignore` file.
2015-12-28 12:09:39 -07:00
FusionPBX 4e5113b832 Merge pull request #1348 from moteus/operator_panel_cast_dialed_number
Fix. Do not cast dialed number to int in `Operator Panel` app.
2015-12-28 12:09:11 -07:00
Alexey Melnichuk 4de4bb89f4 Fix. Do not cast dialed number to int in Operator Panel app.
This make problems with numbers starting with `0` e.g. (001)
Also this makes problem with too long numbers which does not fit to int type.
2015-12-28 15:48:18 +03:00
FusionPBX 02ecbe14cc Merge pull request #1343 from moteus/cache_reuse_esl
Change. Reuse same esl connection to send cache event and command.
2015-12-25 09:51:53 -07:00
FusionPBX cb410c005a Merge pull request #1346 from moteus/fax_files_lang
Fix. Use `text` class in fax_files.php
2015-12-25 09:47:37 -07:00
Alexey Melnichuk 9f8d05481f Fix. Use text class in fax_files.php 2015-12-25 11:48:17 +03:00
Alexey Melnichuk 0a552ed481 Add. .gitignore file. 2015-12-25 10:33:41 +03:00
FusionPBX 4a18b554e3 Merge pull request #1342 from moteus/active_calls_app_data
Change. Reduce too long app data in active calls app.
2015-12-24 22:31:42 -07:00
Alexey Melnichuk 85ad1fc976 Change. Reuse same esl connection to send cache event and command.
Fix. Implicitly close esl connection after do cache command.
2015-12-24 13:19:53 +03:00
Alexey Melnichuk df4d2216dd Change. Reduce too long app data in active calls app.
Problem that when you have large app data (>7k in my case)
it takes over 2 pages to display only single channel.
2015-12-24 12:48:25 +03:00
markjcrane ac87b19b4f Change the .wav to ${record_ext} in the internal sip profiles. 2015-12-23 13:23:54 -07:00
markjcrane 7cc88761aa Add record_ext to the recordings.lua. 2015-12-23 12:02:14 -07:00
markjcrane 91a0f1370e Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-22 21:30:55 -07:00
markjcrane d8ca3245c5 AND r.enabled = 'true' shows up on two lines change one to m.enabled and then add m.enabled to the second query. 2015-12-22 21:30:36 -07:00
FusionPBX 99124df423 Merge pull request #1340 from mafoo/Enhance-Intercept-Polycom
Intercept mode for Polycom
2015-12-22 21:14:38 -07:00
FusionPBX e060e53783 Merge pull request #1341 from moteus/directory_acl_directory
Fix. Generate XML for mod_directory.
2015-12-22 20:54:25 -07:00
Alexey Melnichuk 639426f1d2 Fix. Remove unused code. 2015-12-22 17:19:14 +03:00
markjcrane 56499a6cc3 Fix the ring back on the XML handler -> callcenter.conf.lua. 2015-12-21 23:31:46 -07:00
markjcrane b721572c56 Add session cookie httponly and set it to true. 2015-12-21 20:52:54 -07:00
Alexey Melnichuk d1c07df479 Fix. Generate XML for mod_directory.
Fix. Generate XML for ACL only for ext which contain `cidr` attr.
Fix. Do not generate entire XML with all ext when sofia request gateways
2015-12-21 17:17:06 +03:00
Matthew Vale 40cefaf34c Intercept mode for Polycom
first dialplan to be utilized as global="true" and
context="${domain_name}"
2015-12-21 14:03:57 +00:00
markjcrane d6c03f19e9 Remove this->write_debug from the recursive functions. 2015-12-21 04:31:44 -07:00
markjcrane cf7fc6954d Remove 'protected' from the function. 2015-12-21 04:28:23 -07:00
FusionPBX f156805c8c Merge pull request #1339 from mafoo/Enhance-resouce/functions.php
migrated install_switch's recursive_* routines
2015-12-21 04:25:29 -07:00
Matthew Vale d7948a7d2a migrated install_switch's recursive_* routines 2015-12-21 10:54:48 +00:00
markjcrane 9b5a389eeb Shorten the Sofia User Agent to reduce SIP header size. User Agent by default includes version and git version number. 2015-12-21 03:41:37 -07:00
markjcrane f960275be8 Reduce the size of the SIP header by removing the sip_h_X-Tag if its needed the administrator can add it. 2015-12-21 03:02:52 -07:00
markjcrane 0deecbe701 Move the access controls to the new resources/classes/text translation class. 2015-12-21 00:52:40 -07:00
markjcrane 2689f518d2 Comment out the translation procedural code for access_control_node_edit.php. 2015-12-21 00:48:42 -07:00
markjcrane 16e29df2c7 Fix a problem with xml_cdr/app_languages.php. 2015-12-21 00:02:50 -07:00
markjcrane 8fa89b23e3 Remove a few more line from upgrade/index.php. 2015-12-20 23:04:12 -07:00
markjcrane 1d80b00ea1 Remove upgrade switch from advanced -> upgrade page. The work it did is handled by app/scripts/resources/classes/scripts.php and app_defaults.php calls it. So when running Advanced -> Upgrade -> App Defaults the scripts app_defaults.php will copy the scripts and rewrite the config.lua. 2015-12-20 23:01:28 -07:00
markjcrane 2c2d49a4d4 Set the $db as a global variable in the class. 2015-12-20 22:54:08 -07:00
markjcrane dd9e225fa5 Use the system function for recursive copy. 2015-12-20 22:52:40 -07:00
markjcrane 2817c536db Fix a problem caused with a search and replace on the correct_path method. 2015-12-20 22:50:33 -07:00
markjcrane 9287772a4b Add app/scripts to add a new scripts class and app_defaults to copy the lua scripts and write the config.lua. 2015-12-20 22:47:48 -07:00
markjcrane 4b7e7fce06 Minor adjustments. 2015-12-20 22:46:52 -07:00
markjcrane 93dd62c363 Test if email_validate function exists and fix change the indentation from spaces to tabs. 2015-12-20 22:36:34 -07:00
markjcrane fd761f7432 Add dialplan domain_uuid is null. 2015-12-20 01:46:30 -07:00
markjcrane 80d0a7bdc4 Add all domain users to XML handler.directory.domain. 2015-12-20 01:01:52 -07:00
markjcrane a2a98ee036 Fix the app/xml_cdr/app_languages.php and remove the include ot the import when viewing xml cdr. 2015-12-19 22:04:05 -07:00
markjcrane 6d700faaa1 Add one line between each function. 2015-12-19 15:00:10 -07:00
markjcrane b822c305c7 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-19 14:55:42 -07:00
markjcrane a84b9da43c Add ability to have global dialplan templates. 2015-12-19 14:55:28 -07:00
FusionPBX 84b46ab76e Merge pull request #1315 from mafoo/Enhance-Languages
Enhance languages
2015-12-19 09:20:42 -07:00
FusionPBX daeaec6d47 Merge pull request #1337 from mafoo/BugFix-core/install
Removed dirs we don't use
2015-12-19 08:46:58 -07:00
Matthew Vale eb26d5e26d Removed dirs we don't use 2015-12-18 17:00:28 +00:00
Matthew Vale 5a07f86cfd migrates app/languages to fusionpbx/fusionpbx-apps 2015-12-18 16:29:04 +00:00
FusionPBX 331519d701 Merge pull request #1330 from mafoo/Enhance-home
Go to User Dashboard if it is present
2015-12-18 08:48:35 -07:00
FusionPBX 538cec5669 Merge pull request #1334 from kpabijanskas/master
XML Handler incorrectly handling 'date-time' time conditions
2015-12-18 08:47:47 -07:00
markjcrane 3f8f3a59ea Fix the sip_profiles/internal-ipv6 correct core-db-dsn to odbc-dsn. 2015-12-17 10:43:06 -07:00
FusionPBX 7a9ae48aae Merge pull request #1332 from moteus/call_active_count
Add. Display number of active calls in title.
2015-12-15 21:35:04 -08:00
markjcrane b9b90679da Change the version to 4.1 to represent that their are bug fixes and features added since 4.0.x. 2015-12-15 22:06:35 -07:00
markjcrane 2a5c69f18f Add 'to' variable to the first two parameters for freeswitch.email. 2015-12-15 21:10:18 -07:00
Karolis Pabijanskas 03f5396e56 This pull requests fixes XML Handler support for 'date-time' time codition. With this, date-time gets rendered as:
<condition date-time="2015-12-15 15:00~2015-12-16 15:00">

 Without this, the time condition WOULD get redered as:
 <condition field="date-time" expression="2015-12-15 15:00~2015-12-16 15:00">

 which is incorrect and would always match false in FreeSWITCH.

 FreeSWITCH docs for this are here: https://freeswitch.org/confluence/display/FREESWITCH/Time+of+Day+and+Holiday+Routing#TimeofDayandHolidayRouting-Variables

 All other time condition variables documented seem to be included in FusionPBX'es XML Handler.
2015-12-15 16:31:27 +00:00
FusionPBX dc2a637c54 Merge pull request #1323 from moteus/xml_cdr_record
Fix. Display recording in CDR
2015-12-14 20:24:45 -08:00
markjcrane 666d90d06c Fix the permissions onv the voicemail directory creation. 2015-12-14 13:11:47 -07:00
markjcrane c4240dac2b Remove the echo in the app_defaults.php. 2015-12-14 12:58:40 -07:00
markjcrane 4448d7a120 Add driectory structure for voicemail via app defaults. 2015-12-14 12:48:01 -07:00
Alexey Melnichuk 3a035d879e Add. Display number of active calls in title. 2015-12-14 14:41:00 +03:00
Matthew Vale 6080b8847c Go to User Dashboard if it is present
see - https://github.com/fusionpbx/fusionpbx/issues/1284
2015-12-14 09:13:18 +00:00
markjcrane 583498febb Remove an extra round bracket. 2015-12-12 10:34:52 -07:00
markjcrane e40365e338 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-12 10:32:31 -07:00
FusionPBX 2b094915c5 Merge pull request #1326 from mafoo/Bugfix-app/system
patch for SunOS
2015-12-11 18:49:34 -08:00
FusionPBX f9c9d8eaab Merge pull request #1325 from moteus/voicemail_play_web
Fix. Play voicemail.
2015-12-11 18:48:40 -08:00
Matthew Vale 358ae7d312 patch for SunOS
corrected collection of switch version during detect_switch
2015-12-11 14:57:14 +00:00
Alexey Melnichuk 1706a13234 Fix. Play voicemail.
Copy from recordings.php
2015-12-11 16:40:49 +03:00
Alexey Melnichuk 7e6a0ce062 Fix. Play/Download recordings 2015-12-11 15:53:05 +03:00
Matthew Vale 665824b949 Merge branch 'fusionpbx/master' into Enhance-Languages
Conflicts:
	app/extensions/app_languages.php
2015-12-11 08:45:26 +00:00
Alexey Melnichuk f2a1f9f086 Fix. Display recording in CDR 2015-12-11 10:46:51 +03:00
FusionPBX 6c51090fbd Merge pull request #1321 from blackc2004/master
CDR Stats changes
2015-12-10 17:24:24 -08:00
FusionPBX 3f20d52f43 Merge pull request #1316 from mafoo/Bugfix-app/system
Updated switch version detection
2015-12-10 17:21:25 -08:00
blackc2004 e69bc4da6b extension download 2015-12-10 15:07:46 -08:00
blackc2004 904de0b267 remove print 2015-12-10 11:10:32 -08:00
blackc2004 f15a1c7a9c CDR Stats Add ADV Search options request 1173
CDR Stats Add ADV Search options request 1173
2015-12-10 11:06:42 -08:00
blackc2004 c1ff104eed Merge pull request #2 from fusionpbx/master
test2
2015-12-10 08:17:05 -08:00
Matthew Vale 4776ceb030 added switch git_info where available 2015-12-10 11:58:09 +00:00
Matthew Vale cb440de264 updated switch version detection
will now work with both git and packaged version numbers
added bits to detect_switch
2015-12-10 10:51:38 +00:00
Matthew Vale b76a1a4b4f First pass on app/* 2015-12-10 10:12:41 +00:00
Matthew Vale bb1a708444 Remvoed tab for consistency 2015-12-10 10:11:45 +00:00
Matthew Vale f8684de1cf First pass on core/* 2015-12-10 10:09:07 +00:00
Matthew Vale 3d16581959 Initial consolidation of common terms 2015-12-10 10:06:48 +00:00
Matthew Vale b5a2fa0f29 Added initial version of app/languages
for analyzing missing or overlapping with global text
2015-12-10 10:04:35 +00:00
Matthew Vale 45dfcabd3d Add Fallback language support to en-us 2015-12-10 09:57:54 +00:00
Matthew Vale e4c711e8f7 Migrate app_languages.php from core to resources 2015-12-10 09:57:08 +00:00
FusionPBX 3df36af619 Merge pull request #1294 from moteus/fax_queue_mail_template
Add. mail templates for fax server responses.
2015-12-09 16:28:35 -08:00
FusionPBX f3f1cf655e Merge pull request #1295 from moteus/fax_queue_greet_combobox
Add. Allows select greeting.
2015-12-09 16:26:43 -08:00
FusionPBX 91adf12550 Merge pull request #1296 from moteus/fax_queue
Fax queue web monitor
2015-12-09 16:25:29 -08:00
markjcrane 9761de8def Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-09 17:19:26 -07:00
markjcrane 2b5abc867c Get the MAC address from the Panasonic User Agent string. 2015-12-09 17:19:05 -07:00
FusionPBX 60928c5b3d Merge pull request #1303 from blackc2004/patch-19
Update directory.lua
2015-12-09 15:02:48 -08:00
FusionPBX 41cb6d4407 Merge pull request #1304 from blackc2004/patch-18
Update devices.php
2015-12-09 15:01:08 -08:00
FusionPBX a1ed12aefa Merge pull request #1305 from blackc2004/patch-17
Update call_edit.php
2015-12-09 15:00:17 -08:00
FusionPBX 1e609b6f96 Merge pull request #1306 from blackc2004/patch-16
Update app_languages.php
2015-12-09 14:57:42 -08:00
FusionPBX c5306533ad Merge pull request #1307 from blackc2004/patch-15
Update app_config.php
2015-12-09 14:57:06 -08:00
FusionPBX 9a8a37378f Merge pull request #1308 from blackc2004/patch-14
Update 010_user_exists.xml
2015-12-09 14:55:43 -08:00
FusionPBX 5e3ee88677 Merge pull request #1309 from blackc2004/patch-20
Update extension.php
2015-12-09 14:55:13 -08:00
FusionPBX 0e850c16b0 Merge pull request #1310 from blackc2004/patch-21
Update index.lua
2015-12-09 14:54:30 -08:00
FusionPBX 00b5dc622e Merge pull request #1311 from blackc2004/patch-22
Update app_languages.php
2015-12-09 14:53:51 -08:00
FusionPBX 406e7ed127 Merge pull request #1312 from blackc2004/patch-23
Update xml_cdr_inc.php
2015-12-09 14:53:25 -08:00
FusionPBX 8eb2787ff8 Merge pull request #1313 from blackc2004/patch-24
Update xml_cdr_search.php
2015-12-09 14:52:45 -08:00
blackc2004 de1ab15095 test 2015-12-09 14:44:22 -08:00
blackc2004 3984600ebe Merge pull request #1 from fusionpbx/master
test
2015-12-09 14:31:37 -08:00
blackc2004 b77560d27f Update xml_cdr_search.php 2015-12-09 14:09:12 -08:00
blackc2004 73da7ffaf3 Update xml_cdr_inc.php 2015-12-09 14:08:33 -08:00
blackc2004 284aa93458 Update app_languages.php 2015-12-09 14:07:58 -08:00
blackc2004 0778fd2d2e Update index.lua 2015-12-09 14:04:59 -08:00
blackc2004 d0a6a57ddc Update extension.php 2015-12-09 14:04:26 -08:00
blackc2004 b64a94fdc6 Update directory.lua 2015-12-09 14:03:17 -08:00
blackc2004 85eda7c097 Update devices.php 2015-12-09 14:01:35 -08:00
blackc2004 e253f9304f Update call_edit.php 2015-12-09 14:00:44 -08:00
blackc2004 2711d8a6c1 Update app_languages.php 2015-12-09 14:00:13 -08:00
blackc2004 f7a44633b1 Update app_config.php 2015-12-09 13:59:43 -08:00
blackc2004 e8f471974b Update 010_user_exists.xml 2015-12-09 13:59:15 -08:00
markjcrane 15232aea60 Add the ${ and } to user_exists so that it works with the condition. 2015-12-09 12:10:31 -07:00
markjcrane c6980b9fe6 Remove the self closing tag on the local_extension condition. 2015-12-09 12:05:20 -07:00
Alexey Melnichuk 9e001af711 Fix. Use task db connection to build template. 2015-12-09 14:56:02 +03:00
Alexey Melnichuk c0ec50e46c Fix. forgotten images. 2015-12-09 13:51:25 +03:00
Alexey Melnichuk 742a782183 Fix. Use Test interface to translate UI. 2015-12-09 13:37:32 +03:00
Alexey Melnichuk 199b7e0def Add. Allows select greeting. 2015-12-09 13:21:37 +03:00
Alexey Melnichuk 5cb8aa1d2a Change. Send button redirect to Active page. 2015-12-09 13:00:42 +03:00
Alexey Melnichuk c5e2441161 Add. mail templates for fax server responses. 2015-12-09 12:43:40 +03:00
Alexey Melnichuk 32685f7d98 Merge branch 'master' into fax_queue 2015-12-09 12:37:55 +03:00
markjcrane c4aaaaaf92 Fix the domain name in the path for the inbound fax dialplan. 2015-12-08 22:34:23 -07:00
markjcrane 13fa07dfc7 Remove the default context from one more location. 2015-12-08 22:32:11 -07:00
markjcrane dbe698bbe7 Remove code that was commented out a while ago. 2015-12-08 22:15:21 -07:00
markjcrane 68bb079781 Remove count($_SESSION["domains"]) > 1 from the as the domain name should always be part of the fax directory path. 2015-12-08 21:59:09 -07:00
markjcrane 90c69aa6c6 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-08 21:57:45 -07:00
markjcrane 6d62de669b Add tabbing to parse_attachments.php. 2015-12-08 21:57:18 -07:00
reliberate 7611b33ecc Domain Edit/Create: Use file_exists instead of isset on recordings directory path check. 2015-12-08 11:24:47 -07:00
markjcrane faff738b1c Remove the destination number condition and exchange the $1 for the destination_number variable. 2015-12-08 09:13:56 -07:00
Alexey Melnichuk 279a745e4f Add. Ability to delete fax queue element 2015-12-08 16:42:13 +03:00
Alexey Melnichuk c76edde6d3 Add. Web UI to monitor for fax queue. 2015-12-08 16:16:54 +03:00
Alexey Melnichuk b07e88c1df Merge branch 'master' into fax_queue 2015-12-08 16:11:58 +03:00
markjcrane c675f2b9b3 Add user_exists condition to local_extension to compensate for the fact we allow dialing an extension based on a non numeric username. 2015-12-07 22:09:27 -07:00
markjcrane 92083dea75 Add ^.*$| to local_extension to support dialing non numeric usernames. 2015-12-07 21:45:24 -07:00
markjcrane f77cadfbe6 Fix the call center agent contact string include the domain by adding the sip_invite_domain with the domain name. 2015-12-07 18:02:56 -07:00
markjcrane 80008a8484 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-07 16:30:20 -07:00
markjcrane 595609e267 Prevent the conference alone sound from playing twice. 2015-12-07 16:30:03 -07:00
FusionPBX 3dc34c6c69 Merge pull request #1291 from mafoo/BugFix-global_settings
Fixed temp_dir not getting set correctly
2015-12-07 14:54:54 -07:00
Matthew Vale cabf031cc0 Fixed temp_dir not getting set correctly
this would have also affected backup_dir
2015-12-07 21:19:59 +00:00
FusionPBX 44f528f744 Merge pull request #1289 from mafoo/Enhance-app/system
Enhance app system
2015-12-07 11:32:38 -07:00
Matthew Vale a3f9c02225 added freeswitch version when retrievable 2015-12-07 17:38:54 +00:00
Matthew Vale 47d8040fed use $git_path to determine if it is a git install 2015-12-07 17:37:41 +00:00
Matthew Vale 7b9038fc0b changed label to text[*] 2015-12-07 17:32:20 +00:00
Alexey Melnichuk 6b55c2af99 Merge branch 'master' into fax_queue 2015-12-07 10:29:47 +03:00
markjcrane 48e76a726c Correct the provision time zone variables used in the t48g template. 2015-12-06 14:53:20 -07:00
markjcrane 0d20cb3ffc Last commit commented out the permission this comments out the menu. 2015-12-06 14:21:36 -07:00
markjcrane bc9d6bc838 Commenting Advanced -> Install menu until its reason developer that added the menu explains its purpose. 2015-12-06 14:19:18 -07:00
markjcrane 60e821ba3a Add the semi colon to the GIT labels. 2015-12-06 14:01:05 -07:00
markjcrane 261c5d50cb Add missing translation labels and remove the quotes arounds the GIT values. 2015-12-06 13:57:56 -07:00
markjcrane dac555f0f7 Get rid of the abbreviation its recommended to use the full name in the variable unless it makes it really long in order to make the code easier to read and more intuitive. 2015-12-06 13:51:19 -07:00
markjcrane ff8b838b5e After removing domain name from the default recordings dir path need to add the domain name every where the recordings directory is currently used. 2015-12-06 13:37:35 -07:00
markjcrane 37d4f52dc8 Convert localhost to 127.0.0.1 before determining the host_type. 2015-12-06 12:43:18 -07:00
markjcrane a89ad63831 Remove the domain name from the switch recordings SESSION variable. The path for single and multi-tenant are handled the same and all will used their domain name. 2015-12-06 12:36:08 -07:00
markjcrane 8909ce9e63 Detect the host type for PostgreSQL so it works with host or ip address. Also improve the code consistency by correcting the indentation and adding a few more comments. 2015-12-06 12:25:34 -07:00
markjcrane f240d25e4e Change how the app_uuid is handled on device copy. 2015-12-06 10:26:10 -07:00
markjcrane 68e1af7809 Use set and unset instead. 2015-12-06 10:13:22 -07:00
markjcrane 5b23684c43 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-06 10:02:42 -07:00
markjcrane a7a80e0abe Create a new app_uuid when creating a dialplan however when copying a time condition, inbound and outbound route keep the original app_uuid. 2015-12-06 10:02:24 -07:00
FusionPBX 20ce42589d Merge pull request #1281 from mafoo/Enhance-app/system
Add git information to system info
2015-12-06 07:43:21 -07:00
markjcrane a11a1d5814 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-04 17:35:27 -07:00
markjcrane 612065417e Update the wakeup phrases. 2015-12-04 17:35:02 -07:00
Alexey Melnichuk 63a7bd9534 Merge branch 'master' into fax_queue 2015-12-04 22:06:06 +03:00
FusionPBX 62279c2acc Merge pull request #1280 from moteus/fax_path_domain_name
Change. Use path with domain name for faxes for single tenant installation.
2015-12-04 11:44:33 -07:00
FusionPBX 4e37a90618 Merge pull request #1282 from mafoo/Bugfix-upgrade_source
use DOCUMENT_ROOT rather than assume path
2015-12-04 11:34:55 -07:00
FusionPBX dba9e9ef61 Merge pull request #1283 from moteus/sennd_mail_no_file
Fix. send_mail without file.
2015-12-04 11:34:41 -07:00
FusionPBX 61c4974645 Merge pull request #1285 from moteus/send_fax_by_user
Fix. send fax by user listed in fax server list
2015-12-04 11:34:05 -07:00
Alexey Melnichuk 0ab0be88af Merge branch 'send_fax_by_user' into fax_queue 2015-12-04 21:15:05 +03:00
Alexey Melnichuk 5f9554c301 Fix. send fax by user listed in fax server list 2015-12-04 21:14:33 +03:00
Alexey Melnichuk 3e0c6a83a9 Merge branch 'send_fax_by_user' into fax_queue 2015-12-04 21:10:17 +03:00
Alexey Melnichuk 6fa4da3612 Fix. send fax by user listed in fax server list 2015-12-04 21:09:25 +03:00
Alexey Melnichuk 3bb00589dd Fix. send_mail without file. 2015-12-04 16:18:53 +03:00
Matthew Vale 37c738ac0b use DOCUMENT_ROOT rather than assume path 2015-12-04 12:24:22 +00:00
Matthew Vale 7adab1e59f Add git information to system info 2015-12-04 12:18:11 +00:00
Alexey Melnichuk 9568eb43f4 Change. Use path with domain name for faxes for single tenant installation. 2015-12-04 12:57:30 +03:00
FusionPBX c4ddfd2fb7 Merge pull request #1278 from mafoo/Bugfix-Install
added suppression of progress by default
2015-12-03 23:40:26 -07:00
markjcrane 8e94812d98 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-03 10:29:54 -07:00
markjcrane 07cd2de9ea Update the provision file download to work with domain filter set to false. 2015-12-03 10:29:33 -07:00
FusionPBX ee83360057 Merge pull request #1275 from mafoo/Bugfix-Install
Bugfix install
2015-12-03 09:19:53 -07:00
FusionPBX f76125504e Merge pull request #1277 from mafoo/Bugfix-Sofia_External_IPv6
fix to the external IPv6
2015-12-03 09:18:28 -07:00
Matthew Vale 896adf8fb4 fix to the external IPv6 2015-12-03 15:42:52 +00:00
Matthew Vale 6d13594e80 added suppression of progress by default 2015-12-03 14:59:46 +00:00
Matthew Vale d0e940f00b corrected function name 2015-12-03 14:25:33 +00:00
Matthew Vale a5a2280819 split install into phases
this is to prevent catch 22 between copy_conf and app_defaults
2015-12-03 14:04:27 +00:00
Matthew Vale 1a278f4bf8 added save_switch_xml during install 2015-12-03 13:36:43 +00:00
FusionPBX 5b816f3522 Merge pull request #1274 from mafoo/Bugfix-Install
Bugfix install
2015-12-03 05:03:02 -07:00
Matthew Vale 3f5a43a356 fixed storage of domain_count 2015-12-03 11:55:40 +00:00
Matthew Vale edb4c43014 added workaround for lua not resolving localhost 2015-12-03 11:36:29 +00:00
Matthew Vale efa1504d00 changed path handling for create_config_lua
thanks moteus for the hint
2015-12-03 11:19:09 +00:00
Matthew Vale 148f7207c5 corrected path retrieval for test
added missing () when reporting domain name
2015-12-03 10:49:38 +00:00
Matthew Vale 90b8e4d707 add caveat when the config.lua is inside scripts\resources
due to app_defaults running before install_switch create_config_lua
cannot create it's config if the detected folder is scripts\resources\
this solves this by adding a caveat to create it's parent folder when it
is called resources
2015-12-03 10:40:54 +00:00
Matthew Vale 6d7ddec597 corrected references to scripts 2015-12-03 09:52:53 +00:00
markjcrane b10e984d7d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-02 20:37:26 -07:00
markjcrane 8aacdfe30e Change ntp server variable for Cisco 7940 and 7960 ntp_server_primary. 2015-12-02 20:36:47 -07:00
FusionPBX 9d82c51a90 Merge pull request #1271 from mafoo/Enhance_Install
Enhance install based on feedback
2015-12-02 10:22:44 -07:00
Matthew Vale 761a7b0717 made reference to install resource literal 2015-12-02 16:07:23 +00:00
Matthew Vale 36e1d5c4c5 fixes during upgrade 2015-12-02 15:55:21 +00:00
Matthew Vale 7c1422fd13 Removed redundant code 2015-12-02 14:46:03 +00:00
Matthew Vale c1e84c50a4 accidentally cancelled redirect during testing 2015-12-02 14:39:53 +00:00
Matthew Vale 0c557d5c58 reorganised upgrade routine to make more sense 2015-12-02 14:32:49 +00:00
Matthew Vale 1327dc011a added automatic odbc_database definition 2015-12-02 14:17:53 +00:00
Matthew Vale ddcc317d49 Bugfix batch 2015-12-02 14:05:21 +00:00
Matthew Vale 3c19e21828 added auto usage of global_settings where not provided 2015-12-02 11:21:09 +00:00
Matthew Vale aff613d3e9 restructured install to go via global_settings
added new global_settings to marshal settings used during a
install/upgrade
2015-12-02 11:16:25 +00:00
markjcrane 3c9bac53ed Seperate Cisco 7940/7960 from Cisco SPA so that both can work with check-sync for reboot and reprovision. 2015-12-01 21:12:52 -07:00
markjcrane b2d4749559 Add check-sync support for Linksys SPA. 2015-12-01 20:48:47 -07:00
markjcrane dc873eee43 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-12-01 14:10:01 -07:00
markjcrane 644fb4f9d7 Add syncinfo.xml for cisco 7940 and 7960. 2015-12-01 14:09:44 -07:00
markjcrane b0d96995e4 Change the default North America outbound route regular expression to be more precise. 2015-12-01 13:50:11 -07:00
FusionPBX af49c46a6c Merge pull request #1273 from moteus/fax_queue
Add. `Tasks.send_mail_task` function to send task reply.
2015-12-01 11:01:32 -07:00
FusionPBX 885107ecab Merge pull request #1272 from moteus/lazy_settings_global
Fix. Remove global variable.
2015-12-01 10:49:48 -07:00
Matthew Vale d4fa22dbec changed to xcopy for windows 2015-12-01 17:34:04 +00:00
Matthew Vale 4f58c9315a added better quoting for windows 2015-12-01 17:30:46 +00:00
Matthew Vale a3d3e539e5 corrected typo 2015-12-01 17:02:38 +00:00
Matthew Vale 0fb8a126ff added normalize to OS before using copy under win 2015-12-01 17:00:41 +00:00
Matthew Vale c0382a0a47 corrected path build 2015-12-01 16:57:06 +00:00
Matthew Vale 8c8cf44b4c stored config_lua path correctly 2015-12-01 16:47:18 +00:00
Matthew Vale 64f103ddbb corrected call to normalize_path_to_os 2015-12-01 16:42:54 +00:00
Matthew Vale f730909343 improved message related to config_lua 2015-12-01 16:40:36 +00:00
Matthew Vale bfd03697a8 Deal with create_username
don't create the db_username if it is the same as the db_create_username
2015-12-01 16:29:14 +00:00
Matthew Vale 7b0a657790 Result of merge 2015-12-01 16:22:40 +00:00
Matthew Vale e1ea625161 Merge remote-tracking branch 'remotes/fusionpbx/master' into Enhance_Install
Conflicts:
	core/install/resources/classes/install_fusionpbx.php
2015-12-01 16:21:10 +00:00
Matthew Vale 6e03808f6e corrected dbh->exec checks to use === to force bool check 2015-12-01 16:08:04 +00:00
Matthew Vale 9f67c70f5b Added better status updates 2015-12-01 15:56:07 +00:00
Matthew Vale bbcc8b5fa7 moved config_lua responsibility to install_switch 2015-12-01 15:13:33 +00:00
Matthew Vale 750b6a0c6d Added Switch upgrade as a separate option 2015-12-01 14:32:58 +00:00
Matthew Vale 472d68ae92 added event_socket_* detection change in app_defaults 2015-12-01 13:36:13 +00:00
Alexey Melnichuk 019597362f Remove unused code. 2015-12-01 16:24:53 +03:00
Alexey Melnichuk 119758ed77 Add. Tasks.send_mail_task function to send task reply. 2015-12-01 15:46:52 +03:00
Matthew Vale 52ca0fb082 bracket error 2015-12-01 12:00:58 +00:00
Matthew Vale 1e81e57ddc Added detection of windows + non sqlite 2015-12-01 11:56:37 +00:00
Matthew Vale 5e00be2ac1 use fixed value for the replacement as DIRECTORY_SEPARATOR changes per platform 2015-12-01 11:44:24 +00:00
Matthew Vale c9197b4151 corrected the normalizer 2015-12-01 11:35:23 +00:00
Alexey Melnichuk 62e88176c6 Fix. Remove global variable. 2015-12-01 14:35:17 +03:00
Matthew Vale 4efec3ac0b removed redundant radio
override when length is 0, not visa versa
2015-12-01 11:02:32 +00:00
Matthew Vale e7ff440ec8 removed reuse stuff, it was confusing
fixed mysql databse create to make more logical sense inside code
removed many if($debug) and replaced with throws
2015-12-01 10:56:18 +00:00
Matthew Vale ec1588c5e1 simplified the create database options 2015-12-01 10:33:51 +00:00
Matthew Vale 2a82c3ca70 db_create not create_db
corrected version detection
corrected constant
2015-12-01 10:23:24 +00:00
Matthew Vale 87658251d6 added normalize_path 2015-12-01 10:11:39 +00:00
Matthew Vale bcc181ce70 bug fixes for path normalization 2015-12-01 10:10:58 +00:00
Matthew Vale f5d31ca6ce pipe paths though realpath to normalize
fixed extra }
2015-12-01 09:53:18 +00:00
markjcrane a493828880 Add an additional line feed to the grandstream/gxp21xx template. 2015-11-30 13:42:06 -07:00
markjcrane 61a0be6a3d Adjust the spaces and remove the extra device key type. 2015-11-30 13:39:17 -07:00
markjcrane 7c06208462 Add a missing plus in the template. 2015-11-30 13:35:31 -07:00
markjcrane 8bcf154ecb Adjust the type / mode in the Grandstream gxp21xx template. 2015-11-30 13:33:46 -07:00
markjcrane 6689017bc1 Fix the mode definition for the Grandstream expansion keys. 2015-11-30 13:09:02 -07:00
markjcrane bde85a6c94 Add a few more keys parameters to the Grandstream gxp21xx template. 2015-11-30 12:50:41 -07:00
markjcrane 8484dfeebc Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-30 12:33:48 -07:00
markjcrane 6759aeb594 Add expansion aka side car support to the Grandstream gxp21xx template. 2015-11-30 12:33:27 -07:00
FusionPBX 8115b8b78c Merge pull request #1269 from moteus/mailto_call_uuid
Fix. Make channel uuid optional in email.
2015-11-30 11:06:44 -07:00
FusionPBX 3bd4ddd6dc Merge pull request #1268 from moteus/install_create_db
Fix. Create DB during web install.
2015-11-30 11:05:53 -07:00
FusionPBX a074c65bed Merge pull request #1267 from moteus/fax_queue
Add. Send reply message after fax task done.
2015-11-30 11:05:19 -07:00
FusionPBX a458073729 Merge pull request #1266 from moteus/text_class
Add. Text class to manage translate texts.
2015-11-30 11:01:42 -07:00
FusionPBX 3b850aeb5e Merge pull request #1270 from moteus/background_image_enabled
Fix. Use incorrect option name.
2015-11-30 11:00:53 -07:00
Matthew Vale e76645401d Added the better create database support 2015-11-30 16:25:36 +00:00
Matthew Vale a34563f545 Merge remote-tracking branch 'remotes/fusionpbx/master' into Enhance_Install 2015-11-30 15:51:18 +00:00
Matthew Vale 21d7b28a9a moved assumed path management to detect_switch as *_vdir 2015-11-30 15:23:42 +00:00
Alexey Melnichuk 7b738ef678 Fix. Use incorrect option name. 2015-11-30 16:04:13 +03:00
Alexey Melnichuk 971d03e4d4 Fix. Make channel uuid optional in email.
This needs for example if fax server could not create outgoing channel.
2015-11-30 15:36:11 +03:00
Alexey Melnichuk 969840751d Add. Translate to email2fax type message. 2015-11-30 14:54:39 +03:00
Alexey Melnichuk 183634a848 Fix. Create DB during web install. 2015-11-30 13:55:02 +03:00
Alexey Melnichuk aec2777f62 Fix. Send mail when fail create outbound channel. 2015-11-30 12:08:26 +03:00
Alexey Melnichuk c9be5948c0 Add. Send reply message after fax task done. 2015-11-30 11:57:09 +03:00
Alexey Melnichuk 3a5fc397ba Add. Text class to manage translate texts. 2015-11-30 10:22:55 +03:00
markjcrane 0704004f22 Synchronize the cisco 7940 with the 7940 template. 2015-11-28 21:12:16 -07:00
markjcrane db40f403e3 Complete the directory for Cisco 7940 template. 2015-11-28 21:09:12 -07:00
markjcrane e0e7c90d97 Set the mac address to lower case. 2015-11-28 20:08:24 -07:00
markjcrane a1d3374abc Remove the mac address from the path in one more location. 2015-11-28 19:56:06 -07:00
markjcrane ce709c6617 Add option to get the mac address from &name=SEPxxxxx 2015-11-28 19:48:45 -07:00
markjcrane d1931ffc15 Escape the & in the directory url with &amp; 2015-11-28 19:31:07 -07:00
markjcrane 9782723b1d Add a missing = so that the file is only provided as a download when the content type is set to application/octet-stream in the url. 2015-11-28 19:15:29 -07:00
markjcrane de113750f4 Correct the paths to the Cisco 7940 directory xml files. 2015-11-28 18:47:52 -07:00
markjcrane 93ed392c90 Improve the white space handling in the 7940 directory.xml files. 2015-11-28 18:39:38 -07:00
markjcrane e41519478b Add the contact_category to contacts array in the provision class. 2015-11-28 18:29:15 -07:00
markjcrane 964465ce28 Another adjustment to the Cisco 7940 template for nat_enable. 2015-11-28 18:03:47 -07:00
markjcrane 2d876dc7b7 Set nat_enabled = 1 as a default, and add sync 1 to the Cisco 7940 template. 2015-11-28 17:53:44 -07:00
markjcrane 6060a160a5 Fix the device label for the Cisco 7940. 2015-11-28 17:31:31 -07:00
markjcrane b1478b862f Update the Cisco 7940 template. 2015-11-28 17:08:41 -07:00
markjcrane 9298bfdb17 Clear the SIPDefault.cnf better to have full control per device of all setttings. 2015-11-28 16:50:50 -07:00
FusionPBX 8a85e75ffc Merge pull request #1263 from moteus/v_mailto
Change. Rename v_mailto.bat to mailto.bat
2015-11-28 12:49:29 -07:00
FusionPBX 20eb887dff Merge pull request #1264 from moteus/fax_queue
Change. Move fax_queue to app/fax.
2015-11-28 12:48:57 -07:00
Alexey Melnichuk 46aa5f8049 Change. Move fax_queue to app/fax. 2015-11-28 11:40:54 +03:00
Alexey Melnichuk 2d515e81e2 Change. Rename v_mailto.bat to mailto.bat 2015-11-28 11:17:46 +03:00
markjcrane 96273e0bc3 Use the new config class in the domains and schema classes. 2015-11-27 19:59:50 -07:00
markjcrane e1214116f4 Missed a set of round brackets on this->exists. 2015-11-27 19:53:30 -07:00
markjcrane a344a97dd4 Correct the variable name and add the additional code examples. 2015-11-27 19:48:22 -07:00
markjcrane 2b50364847 Remove some of the comments and an extra curly bracket. 2015-11-27 19:29:56 -07:00
markjcrane 02f0356fc3 Update the config php class. 2015-11-27 19:25:16 -07:00
markjcrane e0ff445922 Rename the config.php file and a few minor adjustments to install_fusionpbx. 2015-11-27 19:03:25 -07:00
markjcrane e6b12ca3c9 Add a new config.php class. 2015-11-27 18:57:23 -07:00
markjcrane d447f10c03 Move config.php into install -> app defaults method. 2015-11-27 18:13:13 -07:00
markjcrane 12416cb972 Get rid of trailing tabs, correct some of the vertical line spacing, and other minor changes. 2015-11-27 18:04:59 -07:00
markjcrane 74bdef67f8 Include the config.php file in the install so that the config.lua will have the db port, host, username and password values. 2015-11-27 17:47:28 -07:00
markjcrane fd65c15bb4 Add some translations for the install. 2015-11-27 17:14:44 -07:00
markjcrane e49ba553b6 Fix the provision path. 2015-11-27 14:10:49 -07:00
markjcrane 08bb5d35b1 Correct the file names of the Mitel templates. 2015-11-27 13:56:53 -07:00
markjcrane 1cc33fef8c Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-27 11:26:08 -07:00
markjcrane 8a783fdc03 Add the additional language variables to app_languages.php. 2015-11-27 11:25:50 -07:00
markjcrane 8ca5c6f92a Add domain_uuid is null to the dialplan class similar to how already done in the ring_groups/index.lua. 2015-11-27 11:25:06 -07:00
FusionPBX b068771073 Merge pull request #1261 from moteus/mailto_windows
Fix. Use wrapper bat file to v_malito.php on Windows.
2015-11-27 10:27:53 -07:00
FusionPBX c2c66193a7 Merge pull request #1262 from moteus/send_mail_wrapper
Add. `send_mail` wrapper function to freeswitch.email and v_mailto.php.
2015-11-27 10:01:45 -07:00
Alexey Melnichuk 10aa126495 Fix. json encode x-headers 2015-11-27 16:29:52 +03:00
Alexey Melnichuk 84f3fde716 Add. send_mail wrapper function to freeswitch.email and v_mailto.php.
Fix. Send voicemail when set unknown language/dialect.
2015-11-27 15:47:14 +03:00
Alexey Melnichuk f01eb875c7 Fix. Use wrapper bat file to v_malito.php on Windows.
Tested on WAMP and OpenServer.
2015-11-27 14:50:08 +03:00
FusionPBX 26313e8ac6 Merge pull request #1259 from mafoo/bugfix-ft_install
Bugfix ft install
2015-11-26 13:18:05 -07:00
Matthew Vale f1c6963e9e corrected use of detect 2015-11-26 18:45:11 +00:00
Matthew Vale 8eeee0fea1 incorrect reference to get the switch to restart 2015-11-26 18:35:11 +00:00
Matthew Vale 0cd6895061 corrected spelling mistake 2015-11-26 18:25:46 +00:00
Matthew Vale efa20fb04b moved upgrade function from app_defaults
moved upgrade function out to upgrade.php otherwise during initial
install all app_defaults get run twice
2015-11-26 18:24:09 +00:00
FusionPBX be2b329fc8 Merge pull request #1257 from mafoo/bugfix-ft_install
Bugfix ft install
2015-11-26 10:22:55 -08:00
Matthew Vale b5eed9f0ef populate event_socket_* for core/upgrade/app_defaults 2015-11-26 18:12:35 +00:00
Matthew Vale 5960b18e71 Corrected incorrect merge 2015-11-26 17:53:02 +00:00
Matthew Vale e504c8b592 moved restart and unprotected app_defaults 2015-11-26 16:57:34 +00:00
FusionPBX a76dee8130 Merge pull request #1258 from moteus/fax_queue
Fix. problem when same session can release task multiple times.
2015-11-26 08:21:07 -08:00
Matthew Vale af867043b2 changed install order 2015-11-26 15:57:32 +00:00
Matthew Vale f0008691ee moved fusionPBX install after switch install 2015-11-26 14:56:56 +00:00
Matthew Vale 1bf97c959d merge from master
changed handling for upgrade to utilize the session event details if
detect_switch is missing
2015-11-26 14:50:30 +00:00
Alexey Melnichuk 990dd7b9ed Add. log session uuid 2015-11-26 17:41:48 +03:00
Matthew Vale ad60f62e60 Corrected storage of the event_port
made a warning render correctly
added a warning about choosing a remote host
2015-11-26 14:33:08 +00:00
Alexey Melnichuk 5bc286d5e2 Fix. Remove task in next.lua (Fix preview commit) 2015-11-26 17:30:56 +03:00
Alexey Melnichuk a485be3883 Fix. Remove task in next.lua 2015-11-26 17:25:15 +03:00
Alexey Melnichuk 486004de02 Fix. problem when same session can release task multiple times.
It can be when originate has group dial-string. So it call `api_hangup_hook`
for each channel.
Now we release task in `retry.lua` only if originate success and this is same channel
which execute `exec.lua`.
If originate fail we release task `next.lua`
2015-11-26 17:23:33 +03:00
Matthew Vale ebadb3b09f fixed detection of timezone on debian
removed add_new_switch temporarily, currently not supported
2015-11-26 13:20:04 +00:00
Matthew Vale 2fbd4e2aae Added check
will now throw if the config.lua could not be opened for writing
2015-11-26 11:23:52 +00:00
markjcrane 7e18d6d122 Remove the old reference to install class and replaced with install_switch. 2015-11-25 21:55:17 -07:00
markjcrane ec44f93afd Another minor adjustment. 2015-11-25 18:18:48 -07:00
markjcrane 1ea8a721fb Fix the syntax by adding a missing semi-colon. 2015-11-25 18:17:48 -07:00
markjcrane cbfaaa2ae1 If the script dir is set in the session we know the location and don't need to ask freeswitch for it again. 2015-11-25 18:16:38 -07:00
markjcrane a30b0b56ab Remove trailing tabs. Fix some spelling mistakes. And update core/upgrade/app_defaults.php to fix advanced -> upgrade. 2015-11-25 18:06:27 -07:00
markjcrane 331778e36c Correct the primary key of v_fax_tasks table. Coding standards require primary key to remove v_ prefix, singular form and add a _uuid postfix. Result is task_uuid has been changed to fax_task_uuid. 2015-11-25 08:51:54 -07:00
FusionPBX 8bcf55b5fc Merge pull request #1251 from moteus/fax_queue
Fax queue
2015-11-25 07:37:28 -08:00
FusionPBX e16cd92558 Merge pull request #1252 from mafoo/Install_Rewrite
Install rewrite
2015-11-25 07:35:50 -08:00
Matthew Vale 4746deab5b Migrated styling into template 2015-11-25 15:31:33 +00:00
Matthew Vale 9a0f56668d Updated detected configuration 2015-11-25 15:19:00 +00:00
Alexey Melnichuk 4814d20dce Fix. cleanup old tasks. 2015-11-25 13:21:02 +03:00
Alexey Melnichuk b806a92cd1 Fix. Log output in retry.lua 2015-11-25 12:42:56 +03:00
markjcrane 83dac1faa0 Add ability to download the provisioning files from the device edit page for those users that have the device_files permission. 2015-11-25 00:10:49 -07:00
markjcrane 6f0d3c54f5 Fix the path on the provisioning file. 2015-11-24 16:31:25 -07:00
Matthew Vale e7347283ca Changed countries list to be retrieved from new countries class
disabled next on change of language
2015-11-24 16:27:04 +00:00
Alexey Melnichuk 3f6b772420 Add. option to work with broken affected_rows FS 1.4 2015-11-24 18:49:21 +03:00
Alexey Melnichuk f34a2f330a Fix. Add split function (required by lazy_settings). 2015-11-24 14:26:21 +03:00
Alexey Melnichuk 573738fbbb Fix. path_join function when first argument is full path. 2015-11-24 13:54:04 +03:00
Alexey Melnichuk 3d643bbb2d Fix. Update language file. 2015-11-23 16:33:43 +03:00
Alexey Melnichuk 644060fe27 Fix. Use fax_dir only if we can not find fax file. 2015-11-23 15:51:05 +03:00
Alexey Melnichuk 6c52afa2c5 Add. Use fax queue to do fax forward. 2015-11-23 15:12:55 +03:00
Alexey Melnichuk ef38b27777 Change. Use function to deal with fax_queue in fax_send.php. 2015-11-23 14:57:44 +03:00
markjcrane 7749088fd8 Clear the dial_string variable so that it to prevent duplicate destinations. 2015-11-22 19:07:56 -07:00
markjcrane 56cc0a6055 Add a new variable mitel_vlan_id. 2015-11-20 10:50:35 -07:00
markjcrane 2cd10197c1 Add Mitel 5324 and 5340 templates. 2015-11-20 09:23:41 -07:00
Alexey Melnichuk 506a829202 Fix. Poll several mail at once.
Problem causes by fax_send.php which change current dir and second call can not finding libraries.
2015-11-20 15:22:09 +03:00
Alexey Melnichuk 4219034bf5 Fix. Decode email message from quoted-printable/base64.
Fix. Allow set custom fonts to support non latin alphabet.
2015-11-20 14:45:06 +03:00
Matthew Vale ea86150b33 Merge remote-tracking branch 'remotes/fusionpbx/master' into Install_Rewrite
Conflicts:
	themes/enhanced/app_defaults.php
2015-11-20 10:50:27 +00:00
Alexey Melnichuk 7e5bbbfdaa Merge branch 'master' into fax_queue 2015-11-20 11:00:44 +03:00
Alexey Melnichuk 5e0947813c Add. Supports MySQL/SQLite to fax queue. 2015-11-20 10:38:51 +03:00
markjcrane ae4a9d499f Add style white-space: nowrap; to destination edit. 2015-11-19 22:42:33 -07:00
markjcrane c4db1a48f0 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-19 22:32:52 -07:00
markjcrane 8db0341392 Time condition fix alignment of the arrow button by adding style nowrap and 3 pixel padding. 2015-11-19 22:32:34 -07:00
FusionPBX 899eaa797e Merge pull request #1248 from blackc2004/master
vlan id's in yealink
2015-11-19 17:40:11 -08:00
markjcrane 8e048019d1 Add underscore between the words in the variables.
{$ldap_name_filter}
{$ldap_number_filter}
{$yealink_directory_setting_url}
2015-11-19 15:20:14 -07:00
FusionPBX 63a04ee4d5 Merge pull request #1250 from blackc2004/patch-12
Update y000000000028.cfg
2015-11-19 14:17:29 -08:00
blackc2004 958be5229e Update y000000000036.cfg 2015-11-19 13:47:38 -08:00
blackc2004 27eb41972a Update y000000000037.cfg 2015-11-19 13:47:17 -08:00
blackc2004 f8cdb08250 Update y000000000035.cfg 2015-11-19 13:47:05 -08:00
blackc2004 5d0bb6c6de Update y000000000029.cfg 2015-11-19 13:46:37 -08:00
blackc2004 d5348db16d Update y000000000028.cfg 2015-11-19 13:45:06 -08:00
FusionPBX bb7d8f1718 Merge pull request #1244 from mafoo/BugFix_Provision
BugFix + Optional Enable extensions appear in directory
2015-11-19 09:40:27 -08:00
markjcrane 1d51571364 Change setting enable_background_images to background_image_enabled. This keeps the code consistent as 'enabled' is used throughout the code as a suffix. It also displays this setting next to the background_image setting. 2015-11-19 10:34:28 -07:00
FusionPBX d6fc9d8701 Merge pull request #1243 from mafoo/Enhance-Theme
Optimized control of background images
2015-11-19 09:25:47 -08:00
FusionPBX 9069a229ce Merge pull request #1245 from mafoo/Enhance-Sip_Profiles
Enhance sip profiles
2015-11-19 09:17:22 -08:00
FusionPBX 71c3b124b4 Merge pull request #1247 from mafoo/Enhance-Vars
Enhance vars
2015-11-19 09:15:44 -08:00
Matthew Vale b4c6b7247d Bugfix 2015-11-19 14:57:47 +00:00
Matthew Vale d00f7a31e1 Added more ringer types
corrected reference to ssl dir to use $conf_dir
moved countries list out to its own file so it can be maintained easier
(and used by other apps)
2015-11-19 14:54:04 +00:00
Matthew Vale 6bc2186808 Added External IPv6 support
created the external IPv6 profile
2015-11-19 13:57:23 +00:00
Matthew Vale 26c749edb0 BugFix + Optional Enable extensions appear in directory
BugFix to respect http_domain_filter when auto creating
setting provision> directory_extensions populates $extensions as a
contacts array in provisioning
2015-11-19 13:17:01 +00:00
Alexey Melnichuk c81d00272f Fix. fax_emails.php relay on number cleanup in fax_send.php 2015-11-19 14:48:41 +03:00
Matthew Vale 1e37ce5d3a Optimized control of background images
It is now possible to have the default setting to enable background
images (via theme > enable_background_images) but have a domain turn it
off again as they want to use gradients or specific images.
Upgrading any installation that already has any background_image enabled
will cause enable_background_images to turn on to let it continue to
work.
Including support code that the new install system will utilize, should
not affect existing systems.
2015-11-19 11:33:07 +00:00
Alexey Melnichuk 70ac60caf3 Add. Allow specify DTMF in parentheses in phone number.
E.g. `123456 (PP789)`
2015-11-19 14:30:06 +03:00
Alexey Melnichuk 6f46b72dc8 Add. Basic fax_queue_monitor script.
To start
 From cli: `luarun fax_queue_monitor.lua`
 Autostart with FS: Add `<param name="startup-script" value="fax_queue_monitor.lua"/>` to `lua.conf.xml`
 From shell: call from `script_dir` `lua fax_queue_monitor.lua` (require installed Lua and some additional libraries).

To stop
  remove `fax_queue.tmp` file from `script_dir/run`
2015-11-19 13:19:59 +03:00
Alexey Melnichuk 18574dfe8b Fix. Use fax_send_mode option in fax_send.php file. 2015-11-19 13:13:47 +03:00
Alexey Melnichuk 83b26ff901 Fix. Display description as last item on fax_server page 2015-11-19 12:36:35 +03:00
Matthew Vale 352f03198e Resolved install issues, environment now in tact enough to run app_defaults 2015-11-18 17:30:43 +00:00
Matthew Vale cc001acb4a Merge remote-tracking branch 'remotes/fusionpbx/master' into Install_Rewrite 2015-11-18 17:08:37 +00:00
Matthew Vale 4a9b28505a re-added file to file conflict 2015-11-18 17:05:10 +00:00
FusionPBX ec3c9f125b Merge pull request #1239 from mafoo/Enhance-Languages
Enhance languages
2015-11-18 08:51:03 -08:00
Alexey Melnichuk 2b0aa44673 Remove some log. 2015-11-18 16:41:13 +03:00
Alexey Melnichuk 86b479e520 Rome some comments. 2015-11-18 16:32:00 +03:00
Alexey Melnichuk 871b632d49 Add. Lua part of fax_queue.
To poll active task you can run `luarun fax_queue_poll_once.lua`
2015-11-18 16:27:55 +03:00
Alexey Melnichuk 8abdbf3f0b Add. Web UI to configure fax_queue. 2015-11-18 15:37:41 +03:00
Matthew Vale 67b9706030 removed old installers 2015-11-17 17:02:39 +00:00
Matthew Vale 0f40a48c2b Initial Rewrite 2015-11-17 17:02:38 +00:00
Mafoo 22d31bb5f5 Merge pull request #3 from fusionpbx/master
Merge from master
2015-11-17 16:59:50 +00:00
Matthew Vale b8ead99a14 added support to name the languages
added remaining flags i have from the famfamfam set and renamed them to country names
2015-11-17 16:20:14 +00:00
markjcrane 44ec8d5942 Add voicemail record-silence-threshold variable and change the default threshold from 30 to 300. 2015-11-16 16:59:11 -07:00
Matthew Vale 900c1469b1 Enhancements to language support (for future use)
optimized the text.php to check the language code once, not every time
2015-11-16 09:41:34 +00:00
markjcrane a0b5c5105f Fix the call center dialplan creation when adding a call center queue. 2015-11-14 20:18:31 -07:00
markjcrane 608a826d13 Correct the consistency of the indentation. 2015-11-14 17:56:20 -07:00
markjcrane b428f570de Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-14 17:18:58 -07:00
markjcrane e52339fc8f Fix call center queue delete. 2015-11-14 17:18:32 -07:00
FusionPBX ebbf6fb259 Merge pull request #1235 from moteus/fax_send
Fix. multiple calls fax_send caused error.
2015-11-13 09:17:09 -07:00
markjcrane d03db31518 Add the additional key types to the device key profile. 2015-11-12 19:27:29 -07:00
markjcrane f58328fa39 Polycom key type capitalize the first letter of Automata and Normal. 2015-11-12 19:11:31 -07:00
markjcrane e7530e2447 Correct polycom template logic and change the && (and) to || (or). 2015-11-12 18:51:44 -07:00
markjcrane 0406afbdb8 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-12 16:40:48 -07:00
markjcrane 88858a1c8b Add additional Polycom key types. 2015-11-12 16:40:02 -07:00
FusionPBX 21a2a4fa5b Merge pull request #1236 from mafoo/Enhance-Template
made button elements render the same as input.btn
2015-11-12 08:34:23 -07:00
FusionPBX 1f89195f70 Merge pull request #1237 from moteus/intercept_outbound
Fix. Call intercept - a scenario where an outgoing call can be intercepted
2015-11-12 08:31:55 -07:00
Alexey Melnichuk 3de12d6d1d Fix. Call intercept - a scenario where an outgoing call can be intercepted
This is same changes as in #1209.
2015-11-12 14:11:05 +03:00
Matthew Vale 9e637d2801 made button elements render the same as input.btn 2015-11-12 11:10:34 +00:00
Alexey Melnichuk a10e508972 Fix. multiple calls fax_send caused error.
Fix. require EventSocket implicitly.
Fix. require `test` class.
2015-11-12 14:00:01 +03:00
FusionPBX cd6a52b1af Merge pull request #1229 from moteus/ivr_menu_exec_without_args
Fix. IVR menu option without arguments.
2015-11-10 18:12:03 -07:00
markjcrane 7bb50d03a0 New database class was implemented in call_forward.lua when using first_value must change select * from with the specific value desired. 2015-11-10 17:26:39 -07:00
markjcrane 71ea6a8328 Change the Database:query to make the fn optional which will make it more backwards compatible with current code. This fixes an issue with recent movement to the database class in call_forward.lua. 2015-11-10 17:04:42 -07:00
markjcrane 6cc9040787 Change enquote to quote. 2015-11-10 13:37:25 -07:00
FusionPBX 6ac3917f2f Merge pull request #1231 from moteus/intercept_search_channel
Fix. Intercept can find wrong channel.
2015-11-10 13:20:08 -07:00
Alexey Melnichuk b285e636cc Fix. Intercept can find wrong channel. 2015-11-10 22:41:34 +03:00
FusionPBX 573078e5bb Merge pull request #1174 from moteus/intercept_load_balance
Add. Support intercept FIFO/CallCenter/Enterprise in load balancing mode
2015-11-10 11:55:18 -07:00
FusionPBX 3bbaca8439 Merge pull request #1230 from moteus/windows_hungup_rx
Fix. hungup_rx.lua works on Windows
2015-11-10 11:51:34 -07:00
Alexey Melnichuk 78acf51737 Fix. function name 2015-11-10 20:49:46 +03:00
Alexey Melnichuk 9f88d17e70 Fix. always escape quote. 2015-11-10 19:33:01 +03:00
Alexey Melnichuk 455a1a088f Fix. hungup_rx.lua works on Windows
1. Command should use only double quotes.
2. Application should not be quoted (I am not sure may be it is bug in FS `system` command).

So I use double quote on Windows and single quote on other system.
Also I quote strings only if they contain spaces.
To escape quote in string i just double it.
`you got "some text"` become to `you got ""some text"""`
2015-11-10 19:29:06 +03:00
Alexey Melnichuk 5052d1dce2 Fix. IVR menu option without arguments. 2015-11-10 17:56:40 +03:00
Alexey Melnichuk 6711b7aa8b Merge branch 'master' into intercept_load_balance
# Conflicts:
#	resources/install/scripts/intercept_group.lua
2015-11-10 12:30:45 +03:00
markjcrane 53702b1973 Fix a problem where the ring group is only calling one external number when there are multiple to call. 2015-11-09 18:42:29 -07:00
markjcrane f47a717f9d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-11-09 16:54:16 -07:00
markjcrane bf86c7acff Update the wakeup phrases. 2015-11-09 16:53:58 -07:00
blackc2004 dcdf04d1e0 Merge remote-tracking branch 'fusionpbx/master' 2015-11-09 08:03:02 -08:00
blackc2004 140691db6f Merge remote-tracking branch 'origin/patch-1' 2015-11-09 08:02:25 -08:00
FusionPBX 15c2d54778 Merge pull request #1226 from moteus/follow_me_lua
Update follow_me.lua/call_forward.lua
2015-11-09 08:00:57 -07:00
FusionPBX 20eff9739a Merge pull request #1228 from mafoo/Bugfix-destination_edit
Bugfix destination_edit.php
2015-11-09 07:53:35 -07:00
Alexey Melnichuk 0e5b10d265 Update. call_forward.lua script
Fix. Set outbound caller id
Remove. Nested if
Use. cache class
Use. database class
2015-11-09 16:55:35 +03:00
Alexey Melnichuk 4c6811ffb8 Merge branch 'master' into follow_me_lua 2015-11-09 16:45:57 +03:00
Matthew Vale b3133f1eb1 missed none when pasting new code 2015-11-09 11:49:09 +00:00
Matthew Vale 131954137a Bugfix for destinations_edit.php
the tr_fax_detecion segment is optional so causes the onchange_type javascript to stop when it can't find it.
2015-11-09 11:47:15 +00:00
markjcrane a01a61e02c Remove /scripts from the path as it is redundant. 2015-11-08 13:40:08 -07:00
markjcrane 4ef7b049b0 Change base_dir to script_dir in <param name="script-directory" value="$${script_dir}/scripts/?.lua"/> 2015-11-08 07:44:45 -07:00
markjcrane 7cda301460 Add the following to all yealink provisioning templates.
account.1.nat.udp_update_enable = 3
In order to setup keep alive with sip notify.
2015-11-08 07:30:29 -07:00
markjcrane cca5c118df Secure the device mac address when the user doesn't have permission to change it. 2015-11-05 12:25:30 -07:00
markjcrane d39d58e6f6 Show device copy when user has device_add permission. 2015-11-05 12:11:53 -07:00
markjcrane 2750163d6d Move the description inside the permission condition and adjust 2 of the permissions. 2015-11-05 12:05:49 -07:00
markjcrane ef5a1eb455 Add new device permissions for mac address, template, label, vendor, model, firmware, and description. 2015-11-05 11:56:50 -07:00
markjcrane 5f7fd707c2 Fix the syntax by adding a missing ). 2015-11-05 11:24:28 -07:00
markjcrane 78b65831ec Add new device permissions device_username_password, device_alternate, device_enable. 2015-11-05 11:19:22 -07:00
Alexey Melnichuk ddaae7eec5 Update follow_me.lua
1. Use `cache` class so now it generates memcache events.
2. Do not use nested if (simplify code)
3. Use local variables.
4. Remove redundant checks.
2015-11-05 18:02:08 +03:00
markjcrane f87195204c Add the provision.path.text to default settings. 2015-11-04 20:01:11 -07:00
markjcrane 503461fca1 Change switch.provision.dir to provision.path.text. This indicates where to save the provisioning files on the file system. 2015-11-04 19:59:27 -07:00
markjcrane d3d62295d6 This renables polycom line key value of 2 would use 2 keys or a value of 3 would be 3 keys. 2015-11-03 19:28:10 -07:00
markjcrane e7530d8bec Add the functions to the path for channel_utils. 2015-11-03 16:44:51 -07:00
markjcrane 758d6b9f53 Add functions to the config require 'resources.functions.config' 2015-11-03 16:41:59 -07:00
FusionPBX 8de13769f0 Merge pull request #1224 from mafoo/Enhance-Time_Conditions
Enhance time conditions
2015-11-03 14:29:33 -07:00
Matthew Vale b3937d9410 added England bank holidays
currently it is not possible to integrate floating days (Christmas falling on a Sunday causing Tuesday to become holiday)
or Easter, as it isn't a fixed rule for what day
2015-11-03 15:15:33 +00:00
Matthew Vale 8e9c961a18 bugfix when retrieving region 2015-11-03 14:34:29 +00:00
Matthew Vale f53cf0ec41 initial rewrite of time_conditions 2015-11-03 14:23:52 +00:00
FusionPBX 616e6c1cde Merge pull request #1223 from mafoo/bugfix_languages.lua
fix to use phrases_dir
2015-11-03 04:40:12 -07:00
Matthew Vale b073d792d5 fix to use phrases_dir
changed phrases_dir to be dealt with inside app_defaults.php so it is retrieved once like the other paths
2015-11-03 11:16:05 +00:00
Mafoo 85b01a6cab Merge pull request #2 from fusionpbx/master
Merge from master
2015-11-03 10:30:18 +00:00
FusionPBX 747722da5b Merge pull request #1179 from moteus/call_flow
Fix small bugs and clear code in call_flow.
2015-11-03 03:30:02 -07:00
FusionPBX e008fbd8c2 Merge pull request #1186 from moteus/cache_emit_event
Add. `cache` class emit MEMCACHE events.
2015-11-03 03:19:36 -07:00
FusionPBX 62fcbb925a Merge pull request #1176 from moteus/callcenter_config_clear_cache
Fix. Clear the cache when callcenter config changed.
2015-11-03 03:17:26 -07:00
FusionPBX 5ca779d08c Merge pull request #1202 from moteus/show_channels
Fix. Use `api show channels like` did not work on fusion with BDR.
2015-11-03 03:13:27 -07:00
FusionPBX 9c13a321b6 Merge pull request #1219 from mafoo/bugfix_voicemail
Bugfix voicemail
2015-11-02 20:18:58 -07:00
FusionPBX 9ea40a45d1 Merge pull request #1218 from mafoo/bugfix_languages.lua
changed phrases_dir to be dealt with inside app_defaults.php so it is retrieved once like the other paths
2015-11-02 11:15:28 -07:00
Matthew Vale 35762486e1 reverted so branch is consistent for patch 2015-11-02 17:32:43 +00:00
Matthew Vale 8337af0fd4 corrected references to voicemail_dir
changed from $_SESSION['switch']['storage']['dir'].'/voicemail/' to correctly use $_SESSION['switch']['voicemail']['dir']
added missing storage_type to app_defaults.php
2015-11-02 17:22:13 +00:00
Matthew Vale fee216cc13 changed phrases_dir to be dealt with inside app_defaults.php so it is retrieved once like the other paths 2015-11-02 09:53:42 +00:00
FusionPBX 6024364a40 Merge pull request #1216 from mafoo/bugfix_languages.lua
Bugfix languages.lua
2015-10-30 16:53:37 -06:00
Matthew Vale 8793159dad Fix. use settings for the phrases path rather than assuming 2015-10-30 16:16:56 +00:00
Mafoo 01a43f35fd Merge pull request #1 from fusionpbx/master
Merge from master
2015-10-30 16:04:26 +00:00
FusionPBX 82fcbbcbce Merge pull request #1210 from blackc2004/patch-8
Update extension_edit.php
2015-10-30 09:37:23 -06:00
FusionPBX 9c5fee3dc8 Merge pull request #1211 from blackc2004/patch-7
Update app_languages.php
2015-10-30 09:36:55 -06:00
FusionPBX b42f054e9e Merge pull request #1212 from blackc2004/patch-6
Update app_config.php
2015-10-30 09:36:30 -06:00
FusionPBX cd63a7910d Merge pull request #1213 from blackc2004/patch-9
Update extension.php
2015-10-30 09:31:53 -06:00
FusionPBX a555722874 Merge pull request #1214 from blackc2004/patch-10
Update directory.lua
2015-10-30 09:31:06 -06:00
FusionPBX 7f01982675 Merge pull request #1215 from moteus/phrase_ivr_menu
Fix. Get DTMF in IVR when using phrases.
2015-10-30 09:23:58 -06:00
Alexey Melnichuk ec162d4238 Fix. Get DTMF in IVR when using phrases. 2015-10-30 17:33:26 +03:00
markjcrane 1c6f58ca03 MWI only turn on the light for new messages. 2015-10-29 17:34:39 -06:00
blackc2004 f8388cc8f4 Update directory.lua 2015-10-29 12:26:06 -07:00
blackc2004 5bc43a3fbd Update extension.php 2015-10-29 12:24:55 -07:00
blackc2004 9a47dc93fd Update extension_edit.php 2015-10-29 12:24:24 -07:00
blackc2004 89410fafa6 Update app_languages.php 2015-10-29 12:23:49 -07:00
blackc2004 080d136968 Update app_config.php 2015-10-29 12:22:40 -07:00
markjcrane 9429de42be Update translation for de-at. 2015-10-29 09:43:57 -06:00
markjcrane 3472707e96 Enable the directory for speed dial and enterprise categories. 2015-10-28 22:07:43 -06:00
markjcrane 3f2ccf8b23 Call forward presence ignore busy use a radio button to be uniform with the rest of the page. 2015-10-28 17:39:16 -06:00
markjcrane b5fcb26e6d Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-27 16:32:33 -06:00
markjcrane aeeee2433e Remove user group from call block until there is per extension call block. 2015-10-27 16:32:20 -06:00
FusionPBX e1e01dac90 Merge pull request #1206 from moteus/call_control_caller_id
Fix. Use same Outbound Caller info in extenstion and call control.
2015-10-26 12:05:04 -06:00
FusionPBX 4fc11ee492 Merge pull request #1209 from badcrc/master
Fix. Call intercept - a scenario where an outgoing call can be intercepted
2015-10-26 12:02:41 -06:00
koldoa 398fd08149 This fixed a scenario where an outgoing call can be picked up if the callee returns a 183 session progress with sdp 2015-10-26 17:17:02 +01:00
Alexey Melnichuk 7187766c11 Update comment. 2015-10-26 12:27:14 +03:00
Alexey Melnichuk fdb6e818a9 Use database class 2015-10-25 10:05:44 +03:00
Alexey Melnichuk fb3fb16002 Merge branch 'master' into show_channels 2015-10-25 10:00:05 +03:00
Alexey Melnichuk 8bbf8d6777 Use local variables. 2015-10-25 09:57:20 +03:00
Alexey Melnichuk c55de4769c Merge branch 'master' into intercept_load_balance
# Conflicts:
#	resources/install/scripts/resources/functions/database.lua
2015-10-25 09:34:19 +03:00
markjcrane bf3c374e13 Play the message number first then the caller id number. 2015-10-24 21:12:43 -06:00
markjcrane 8f67f2c4c1 Add vm_say_caller_id_number option for true or false. 2015-10-24 21:00:22 -06:00
markjcrane 99fb9dca10 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-24 20:09:54 -06:00
markjcrane 128bb6d857 Add voicemail caller id number announce as iterated. 2015-10-24 20:09:36 -06:00
FusionPBX 14f0eb66a8 Merge pull request #1152 from moteus/database_class
Add. database class
2015-10-24 19:50:43 -06:00
markjcrane e393ea821a Move the time condition group to a location to make better use of the vertical space. 2015-10-24 18:55:24 -06:00
markjcrane c89075cc44 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-24 16:39:37 -06:00
markjcrane ed0e78ace2 Remove the redundant public condition from the inbound route. 2015-10-24 16:39:22 -06:00
FusionPBX 2a0ef1b5af Merge pull request #1203 from badcrc/master
Add. Ability to order the time conditions
2015-10-24 14:37:07 -06:00
markjcrane b3669bac90 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-23 15:24:10 -06:00
markjcrane 4ff5835cbc Change the paging extension_list to destinations. 2015-10-23 15:23:55 -06:00
Alexey Melnichuk 6abb8a6783 Change. Allow use destination number as Outbound CallerID number for extension. 2015-10-23 15:05:24 +03:00
Alexey Melnichuk a56e1e94a3 Change. Use destination_caller_id_number as call follow_me caller id. 2015-10-23 14:55:48 +03:00
Alexey Melnichuk 42e45e24f4 Change. Use destination_caller_id_number as call forward caller id.
This is same value which uses by `Outbound CallerID Number` for extension.
2015-10-23 14:40:29 +03:00
FusionPBX cb6425545f Merge pull request #1205 from moteus/contact_extension_url
Fix. Extension link on contact edit page.
2015-10-22 09:56:35 -06:00
Alexey Melnichuk 43cabfc255 Fix. Extension link on contact edit page. 2015-10-22 16:26:41 +03:00
koldoa e519a4fd94 Languages updates 2015-10-22 10:59:50 +02:00
koldoa bfbe3abdc3 More Formatting 2015-10-22 10:58:45 +02:00
koldoa a4e64efa7f Formatting 2015-10-22 10:54:19 +02:00
koldoa d90b080913 Ability to order the time conditions 2015-10-22 10:45:57 +02:00
markjcrane 665f65642c Fix the variable syntax for the yealink templates. 2015-10-20 13:20:35 -06:00
Alexey Melnichuk ac724d46b6 Add. cache switchname 2015-10-20 20:29:57 +03:00
Alexey Melnichuk c7c299e050 Fix. Use api show channels like did not work on fusion with BDR. 2015-10-20 15:15:42 +03:00
markjcrane 4c3fa1f9e7 Change the way null last is done for Postgres. 2015-10-20 02:05:03 -06:00
markjcrane 588e4ebabc Contacts oder by last mod date null last. 2015-10-20 01:53:23 -06:00
markjcrane 7a776fadb8 Order contacts by last modified date by default. 2015-10-20 01:39:54 -06:00
markjcrane 8e2dcddbaf Fix the follow me app_config.php. 2015-10-19 21:58:23 -06:00
markjcrane 749533b479 Fix a null error and translation for select option voicemail. 2015-10-19 20:58:16 -06:00
markjcrane da91589641 Fix the Contact CSV import so it will import the phone number. 2015-10-19 20:37:13 -06:00
markjcrane 710a3fa696 Add hold music option and update the call_block dialplan. 2015-10-19 18:30:55 -06:00
markjcrane a66e1a61c3 Prevent overwriting the call block number when updating the number. 2015-10-19 17:35:09 -06:00
markjcrane e00f7783da Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-16 16:53:59 -07:00
markjcrane 1f8f627533 Remove the exit on the dialplan destination edit. 2015-10-16 16:52:58 -07:00
FusionPBX 59325c587e Merge pull request #1183 from blackc2004/patch-3
Update {$mac}.cfg
2015-10-16 15:17:47 -07:00
FusionPBX cfa2af6d0c Merge pull request #1200 from badcrc/master
Changed readdir to scandir so we can get sorted template names
2015-10-16 15:16:38 -07:00
markjcrane 654ca9ef79 Add ${time_zone} and ${time_zone_name} to several Yealink files. 2015-10-16 11:51:22 -07:00
markjcrane 18544173bb Remove out of place characters from the t48g template. 2015-10-16 11:26:31 -07:00
markjcrane ec4c0d8025 Add dns srv port 0 to more yealink phones. 2015-10-16 11:10:59 -07:00
markjcrane a63cbada9b Switch the hostname for conference center to switchname. 2015-10-16 10:34:54 -07:00
koldoa 49fcc5e8d9 Changed readdir to scandir so we can get sorted template names 2015-10-16 15:04:31 +02:00
FusionPBX dc1c66366c Merge pull request #1197 from badcrc/master
This should do a better job detection active calls per extension in t…
2015-10-14 16:15:05 -07:00
markjcrane 5a2e78dc29 Listen for dtmf key presses when voicemail message is played. 2015-10-14 16:03:33 -07:00
koldoa b1abaccb3f This should do a better job detection active calls per extension in the ring group with skip_active 2015-10-14 12:00:09 +02:00
markjcrane bbf9ca9203 Add more to the Cisco 7940 template. 2015-10-13 00:33:01 -07:00
markjcrane 8f43f61713 Fix a bug with outbound routes back button. 2015-10-12 14:25:01 -07:00
markjcrane c5f66a0a63 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-11 10:38:54 -07:00
markjcrane b311035611 Disable direct ip call features.direct_ip_call_enable = 0 for better security. 2015-10-11 10:36:03 -07:00
FusionPBX 82d34d30e1 Merge pull request #1189 from blackc2004/patch-4
{$mac}.cfg
2015-10-10 19:37:47 -07:00
FusionPBX 679afa09c7 Merge pull request #1190 from blackc2004/patch-5
Update {$mac}.cfg
2015-10-10 19:37:01 -07:00
markjcrane 95bd565178 A few minor adjustments. 2015-10-10 16:41:46 -07:00
markjcrane 9c0487cfb3 Add dialplan detail inline and group. 2015-10-10 16:35:04 -07:00
markjcrane f9664b5d03 Complete the sql string. 2015-10-10 16:27:57 -07:00
markjcrane cf06d0cc83 Add code to update dialplan timezone per domain when setting the time_zone on the domain settings. 2015-10-10 15:43:11 -07:00
markjcrane 1bef4bd443 DRY out the code a little. 2015-10-10 15:41:51 -07:00
markjcrane 46ecf1b80d A few more adjustments to make the time_zone setting save to vars.xml. 2015-10-10 13:21:24 -07:00
markjcrane a91bfefc27 Correct the syntax and make it more efficient. 2015-10-10 12:09:37 -07:00
markjcrane ca91db528f When timezone is set in default settings update freeswitch timezone variable. 2015-10-10 11:26:55 -07:00
markjcrane 2ba48dab1e Call flow monitor reduce the sleep to 60 seconds. 2015-10-08 18:54:11 -07:00
markjcrane 33897a3abd Change xml handler load balancing to xml_handler/resources/scripts/directory/directory.lua["fs_path"] 2015-10-08 11:03:48 -07:00
markjcrane a3d64af450 Move the xml handler expire and debug settings to config.lua. 2015-10-08 08:34:35 -07:00
markjcrane 0fbeb697e7 Enable aggressive nat detection and rport by default. 2015-10-08 08:33:34 -07:00
blackc2004 584309afb5 Update {$mac}.cfg
fix for yealink dns srv to work.
2015-10-07 13:43:17 -07:00
blackc2004 6ae87d5ff4 {$mac}.cfg
fix the port # for yealink DNS SRV
2015-10-07 13:41:17 -07:00
markjcrane c307c48a72 Set presence-hosts as disabled by default. 2015-10-07 11:52:06 -07:00
markjcrane 8d82bdc2f1 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-10-07 10:45:51 -07:00
markjcrane 3e533e968e Add default settings -> domain -> bridge -> text -> outbound to avoide loopback however loopback is also an option. 2015-10-07 10:45:28 -07:00
FusionPBX ac805f0dc0 Merge pull request #1185 from moteus/enterprise_ring_group_timout
Fix. use timeout handler in Enterprise ring group
2015-10-06 19:33:50 -07:00
markjcrane c2a4b78b79 Fix Gateways and SIP profiles for single tenant systems. 2015-10-06 19:28:57 -07:00
Alexey Melnichuk 8afafe6beb Add. cache class emit MEMCACHE events. 2015-10-06 16:01:24 +04:00
Alexey Melnichuk dcd382817b Fix. use timeout handler in Enterprise ring group
see https://github.com/moteus/fusionpbx/commit/e5a0134ec6c36e44d0828301b20c9c194c25cd78#commitcomment-13601198
2015-10-06 11:05:15 +04:00
markjcrane 1c0f05fa6c Fix the gateways list so it displays the hostname in the right place. 2015-10-04 10:50:05 -06:00
markjcrane c0d758be86 Add h hostname to option for the gateways. 2015-10-04 01:29:03 -06:00
blackc2004 49e1c6113b Update {$mac}.cfg
added support for second expansion module and tested the changes.
2015-10-03 08:58:41 -07:00
markjcrane f69728befc Force the device_key_vendor to lower case so the key vendor can be case insenstive. 2015-10-02 23:39:12 -06:00
markjcrane d56eeab729 Fix sip_to_user and dialed_user for voicemail. 2015-10-02 17:46:39 -06:00
FusionPBX aeb147e4bb Update functions.php
Minor version update to 4.0.1
2015-10-02 17:23:52 -06:00
Alexey Melnichuk 5cf2e9acd0 Fix small bags and clear code in call_flow.
Move code to turn on/off BLF to separate function.
```Lua
presence_in.turn_lamp( toggle == "false",
  call_flow_feature_code.."@"..domain_name,
  call_flow_uuid
);
```

Close temp file in call_flow_monitor because on Windows it prevent to remove it.
Connect/release to database inside call_flow_monitor loop.
Check successful connection to database in call_flow_monitor loop so monitor did not crash
if connection temporary lost.
2015-10-02 14:02:13 +04:00
markjcrane 0bf4e1b794 Remove absolute_codec_string='PCMU,PCMA' from fax_retry.lua as it is not allowing PCMA. 2015-09-30 21:01:17 -06:00
markjcrane 81917bd977 Remove absolute_codec_string='PCMU,PCMA' as it failed to allow PCMA. 2015-09-30 20:56:59 -06:00
markjcrane 67159897dc Set content lenght to prevent chunking when providing HTTP 401. This should fix Yealink provisioning for the new firmware changes. 2015-09-29 14:28:48 -06:00
Alexey Melnichuk 40356e4063 Fix. Clear the cache when callcenter config changed. 2015-09-28 12:10:31 +04:00
Alexey Melnichuk 7622fd4896 Change. Reduce search parent host name.
This can be done because child and parent channels have to be on same FS.
2015-09-28 11:35:12 +04:00
markjcrane 36db4dcee4 Fix the ring group missed call email body. 2015-09-27 00:52:47 -06:00
markjcrane b5f581fbfd Update domain setting handling in fax to email. 2015-09-26 11:39:16 -06:00
markjcrane e2eccde92f Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-26 09:00:11 -06:00
markjcrane 24652e393f After event socket class was added it created a bug in FAX email and forward. It was unable to find the new EventSocket class adding the include resolves the problem. 2015-09-26 08:59:36 -06:00
markjcrane 6338319636 Dialplan page add mute=true back again. 2015-09-26 08:56:44 -06:00
Alexey Melnichuk 5fab1a34f7 Add. Support intercept FIFO/CallCenter/Enterprise in load balancing mode.
Change. `intercept.lua` and `intercept_group.lua` merge in one `intercept.lua` file.
Call `intercept.lua` without arguments behave like `intercept_group.lua`.
2015-09-25 15:30:57 +04:00
FusionPBX 2c415bdfd7 Merge pull request #1164 from moteus/intercept_enterprise_group
Fix. Intercept enterprise ring group.
2015-09-24 15:45:08 -06:00
FusionPBX cf4bacea6f Merge pull request #1168 from rdissauer/fix/fax-destination
fixed fax destination with * or + in number
2015-09-24 15:32:19 -06:00
FusionPBX cc2684428f Merge pull request #1169 from rdissauer/fix/provision-domain-filter-off
fixed provisioning with http_domain_filter off
2015-09-24 15:30:54 -06:00
FusionPBX b037b81d6b Merge pull request #1167 from rdissauer/translations
latest german translations
2015-09-24 15:21:46 -06:00
FusionPBX 1277559af8 Merge pull request #1170 from rdissauer/feature/high-res-img
prepared img tag for high resolution (retina) images
2015-09-24 15:21:24 -06:00
FusionPBX 902739213a Merge pull request #1171 from rdissauer/fix/suppress-debug-messages
Fix. suppress debug messages
2015-09-24 15:19:20 -06:00
roman.dissauer c633065798 latest german translations 2015-09-24 09:48:42 +02:00
roman.dissauer ae4ec80038 fixed provisioning with http_domain_filter off 2015-09-24 09:38:26 +02:00
roman.dissauer 6b53843304 fixed fax destination with * or + in number 2015-09-24 09:37:58 +02:00
roman.dissauer 180ee43f0f prepared img tag for high resolution (retina) images 2015-09-24 09:31:52 +02:00
roman.dissauer e8b79cb783 forgot commenting out end 2015-09-24 09:29:57 +02:00
roman.dissauer af4e06ecd9 do not display voicemail sql debug messages 2015-09-24 09:29:57 +02:00
markjcrane 5d9bb1b9d1 Allow a device that is logged in already to be replaced with a new alternate device. 2015-09-23 20:09:16 -06:00
Alexey Melnichuk 92baa64183 Add. intercept for fifo calls 2015-09-23 14:40:05 +04:00
Alexey Melnichuk 8976d5e5b3 Add. intercept for call center calls 2015-09-23 13:08:22 +04:00
Alexey Melnichuk e2edd740c3 Merge remote-tracking branch 'upstream/master' into intercept_enterprise_group 2015-09-23 09:54:43 +04:00
markjcrane 42924ccead Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-22 18:36:23 -06:00
markjcrane 6a796d37e0 Add comment out the hidden field for now. 2015-09-22 18:36:09 -06:00
markjcrane d0c42fff37 Comment out unset autocomplete for the moment. 2015-09-22 18:35:20 -06:00
Alexey Melnichuk e5a0134ec6 Fix. Intercept enterprise ring group.
With enterprise call each outbound channel has its own call_uuid.
But we have to use `intercept` for call_uuid of inbound channel.
2015-09-22 19:33:41 +04:00
FusionPBX e25a1409ff Merge pull request #1161 from moteus/cdr_detail_showall
Fix. Show CDR details when set `showall`
2015-09-21 09:13:43 -06:00
markjcrane a4b7af3560 Another case where automcomplete bombs. Accounts -> Extensions password is used for registration not for a login. In FusionPBX if the password is left empty it would automatically create a new password. However auto complete instead puts in the login password this is an undesirable bug that this update fixes by adding a honey pot for the password. 2015-09-19 18:19:23 -06:00
markjcrane 969e02328e Fix the removal of the autocomplete field. 2015-09-19 18:13:15 -06:00
markjcrane a7079e337c Adding autocomplete="off" back in case browser developers realize there are legitimate reasons to use it. 2015-09-19 18:02:31 -06:00
markjcrane ba83a0f99e Another situation where autocomplete=off prevented a bug. Provisioning a devcie by adding sip registration information for device provisioning in this case autocomplete always fills in incorrect information. 2015-09-19 17:59:07 -06:00
markjcrane 6e11352ff7 Another case where autocomplete creates a problem. New user account creation does not benefit from autocomplete. It assumes the user is the currently logged in user which is not what you want on a form to add new users. This code adds an autocomplete honey pot to defeat the browser developers poor assumption. 2015-09-19 17:51:16 -06:00
markjcrane f8aa2ec207 Browser developers disabled autocomplete in most browser. A move that makes an assumption that autocomplete is always good. In this particular case it creates a bug. There are a few legitimate reasons to disable autocomplete. In this case I'm disabling it as we are only updating the password when its provided by the user. In this case the user may be and administrator changing a user a password in this case autocomplete would offer the wrong password. Another case have two password fields that must match if both passwords are empty then the passwords are not updated allowing for other user settings to be updated. 2015-09-19 17:42:02 -06:00
Alexey Melnichuk 1d4e62b2f5 Fix. Show CDR details when set showall 2015-09-18 12:04:52 +04:00
markjcrane 6010ade8d6 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-15 21:53:39 -06:00
markjcrane aebea2c55d Remove the is_numeric on format_phone. 2015-09-15 21:53:14 -06:00
FusionPBX a153cef9d8 Merge pull request #1155 from moteus/cache_delete
Fix. `cache.del` method.
2015-09-15 21:04:59 -06:00
markjcrane cd0c777f6b Get the channel variable in a way that will work with hangup. 2015-09-15 10:09:16 -06:00
markjcrane 94749f105d Add multi-lingual support to the missed call emails. 2015-09-15 08:49:37 -06:00
Alexey Melnichuk 7191eae559 Fix. cache.del method.
Fix. cache.set returns boolean value.
Add. basic self_test
2015-09-15 18:02:46 +04:00
markjcrane 87e27dd905 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-14 19:08:27 -06:00
markjcrane e0f9865d71 Fix the redirect for the ACL. 2015-09-14 19:08:06 -06:00
FusionPBX 82542c6ea6 Merge pull request #1146 from badcrc/master
Random ring groups
2015-09-14 10:38:18 -06:00
FusionPBX 9e0c8cffd9 Merge pull request #1149 from moteus/cache_class
Add Log and Cache classes
2015-09-14 10:27:47 -06:00
markjcrane b3c53ae6f5 Email template add indentation to make it more readable. 2015-09-11 16:18:40 -06:00
markjcrane b65d0b2053 Hide the email body from the email log. 2015-09-11 15:20:31 -06:00
markjcrane c21657cc7f Change the directory.lua xml parameter from sip_force_contact to sip-force-contact. 2015-09-11 14:04:38 -06:00
Alexey Melnichuk 6304c470cf Fix. load file_exists function 2015-09-10 14:36:30 +04:00
Alexey Melnichuk ebb61f955c Add. database class
```Lua
local Database = require "resources.functions.database"
local dbh = Database.new('system')

--get the domain_uuid
if (domain_uuid == nil) and (domain_name ~= nil) then
  local sql = "SELECT domain_uuid FROM v_domains "
  sql = sql .. "WHERE domain_name='" .. domain_name .. "';"
  domain_uuid = dbh:first_value(sql)
end

local dbh_switch = Database.new('switch') -- check also SQLite file.

local row = dbh_switch:first_row(sql)
if row then
  ...
end
```
2015-09-10 14:29:13 +04:00
markjcrane 83e5fe35c0 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-09 10:02:43 -06:00
markjcrane 42229e0738 This will hide outbound route toll allow lua from those wihtout the outbound_route_toll_allow_lua permission. This feature works only for countries that are hard coded in the toll allow code. So at this time preferred method of toll allow is via the dialplan. 2015-09-09 10:01:00 -06:00
markjcrane 1319723eae Remove a space and replace with a tab. 2015-09-09 09:43:00 -06:00
FusionPBX 8c8e3ce3c3 Merge pull request #1150 from moteus/save_disabled_forwadd_number
Fix. Allow change Call Forward number without enable it.
2015-09-09 09:32:22 -06:00
Alexey Melnichuk dcc08a2265 Fix. Not found is treat as success for delete operation. 2015-09-09 16:52:52 +04:00
Alexey Melnichuk 8391e996f0 Fix. Allow change Call Forward number without enable it. 2015-09-09 16:26:41 +04:00
Alexey Melnichuk 528d04b942 Add. Basic log class. 2015-09-09 10:45:49 +04:00
Alexey Melnichuk 4cb99be806 Add. Basic cache class
Fix. When memcache stopped and mod_memcache loaded dialplan did not build from DB.
2015-09-09 10:22:14 +04:00
markjcrane 0bf97e79bd Change DND from loopback/*99[ext] to error/user_busy. 2015-09-08 14:38:46 -06:00
markjcrane bde805bd4c Fix DND use error/user_busy instead of loopback/*99[extension] 2015-09-08 14:12:01 -06:00
markjcrane f9a7759a9f Update the domain code separate the domain code from the presentation. 2015-09-07 23:14:39 -06:00
markjcrane b1746acb97 Remove v_conference_center_users as v_meeting_users was used instead. 2015-09-07 14:52:15 -06:00
koldoa 4bba1c1faf This should add better compatibility for more database backends 2015-09-07 12:51:12 +02:00
koldoa b5e0708599 Better code for ring groups 2015-09-07 11:48:10 +02:00
koldoa 26459f7895 This should fix some of the group permissions issues from issue #1065 2015-09-07 10:47:57 +02:00
koldoa 319ee702ce Script for enterling/leaving a ring group, based on the fifo code 2015-09-07 08:51:22 +02:00
koldoa ee8e5e668a Merge branch 'master' of https://github.com/badcrc/fusionpbx 2015-09-07 08:34:12 +02:00
koldoa 4799974811 Detection of SQL backend for random functions 2015-09-07 08:33:34 +02:00
koldoa a4ab8ca633 Translation typo 2015-09-07 08:33:34 +02:00
koldoa 2047fa7859 Random strategy for ring groups 2015-09-07 08:33:34 +02:00
markjcrane be564502df This last change will enable do not disturb to update the user status which will then show in the operator panel. 2015-09-05 11:26:13 -06:00
markjcrane 5e1ea9fb7b Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-05 10:42:43 -06:00
markjcrane 84ee674f81 Fix the sql in the do_not_disturb.lua. 2015-09-05 10:42:22 -06:00
FusionPBX f4c171f33c Merge pull request #1145 from Len-PGH/patch-1
Update README.md
2015-09-05 10:19:34 -06:00
markjcrane 06ed8f2998 When *78 or *79 are used for DND update the user status and agent status. 2015-09-05 10:05:43 -06:00
Len ceafff2a9a Update README.md
Small edits made to Line 9 and 28
2015-09-05 11:49:42 -04:00
markjcrane f8c2ea5b22 Make the destinations more consistent. 2015-09-04 23:23:15 -06:00
markjcrane 31d727cab5 Count the destinations. 2015-09-04 23:18:13 -06:00
markjcrane b34f8baeb8 Add extension count. 2015-09-04 23:12:36 -06:00
markjcrane 4cfe899919 A few more minor adjustments. 2015-09-04 23:05:08 -06:00
markjcrane 2a3240c7c4 Add a fax server count. 2015-09-04 22:59:13 -06:00
markjcrane 6f389eedd8 Add count to voice mails and voice mail messages. 2015-09-04 22:38:48 -06:00
markjcrane 04521659b6 Move the includes in devices. 2015-09-04 22:23:01 -06:00
markjcrane 0900c143cd Add device count. 2015-09-04 22:19:11 -06:00
markjcrane 7cfd5da369 Change the format to display the count. 2015-09-04 22:06:09 -06:00
markjcrane 475cd23574 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-04 21:52:14 -06:00
markjcrane 4e9c06901a Show the number of users and move the registration count to the front. 2015-09-04 21:51:51 -06:00
FusionPBX a39cf4ebe6 Merge pull request #1144 from blackc2004/patch-2
y000000000037.cfg
2015-09-04 12:55:08 -06:00
FusionPBX 26617933b8 Merge pull request #1143 from blackc2004/patch-1
{$mac}.cfg
2015-09-04 12:54:43 -06:00
blackc2004 bbcda4e9bf y000000000037.cfg 2015-09-04 09:44:51 -07:00
blackc2004 3c8058b1c6 {$mac}.cfg 2015-09-04 09:38:48 -07:00
markjcrane 765d34668c Restore sip_from_user and 2 lines for continue to directory.lua. 2015-09-04 02:52:14 -06:00
markjcrane 30b6c8990c Restore directory.lua - this fixes load balancing as taught in the FusionPBX Advanced Class. 2015-09-04 02:38:17 -06:00
Jörn Ott 546220f912 Allow provisioning with internal addressbook and update snom320 template for it 2015-09-03 15:57:57 +02:00
koldoa b2cbcdfc97 Detection of SQL backend for random functions 2015-09-03 11:53:28 +02:00
markjcrane 10356457c9 Set inline to false. 2015-09-02 20:49:36 -06:00
markjcrane 8d22fb6373 Disable inline for limit in the local_extension dialplan. 2015-09-02 20:31:02 -06:00
koldoa 28e967f01c Translation typo 2015-09-02 14:24:47 +02:00
koldoa 049580fd30 Random strategy for ring groups 2015-09-01 18:33:26 +02:00
markjcrane 534f7f97e4 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-09-01 01:48:01 -06:00
markjcrane d2c2eac60e Set HTML autocomplete="off" for the device line username and password. 2015-09-01 01:47:44 -06:00
FusionPBX 0d5ed7c416 Merge pull request #1136 from moteus/record_ring_groups
Fix. Start recording only after call start and only for certain extension
2015-08-31 11:02:37 -06:00
FusionPBX ed0265b38f Merge pull request #1135 from rdissauer/master
added german voicemail templates and modified language file
2015-08-31 09:02:18 -06:00
Alexey Melnichuk 64cdc569b0 Fix. Start recording only after call start and only for certain extension.
Fix. Always use record dir with domain name like it does `user_record` extension.
2015-08-31 15:47:06 +04:00
roman.dissauer e6fbd20cff added german voicemail templates and modified language file 2015-08-31 12:52:15 +02:00
FusionPBX a6c8ea809d Merge pull request #1133 from ippbx/master
add transport, port & expiry
2015-08-30 03:41:51 -06:00
ippbx 34360379c5 Update {$mac}.xml
added subscription_expiry
2015-08-30 01:47:28 -04:00
ippbx 96fd1fcdd1 Update {$mac}.xml
add port and transport
2015-08-30 01:05:11 -04:00
markjcrane a0191c7bc7 Change the object from pdo to db. 2015-08-29 12:18:44 -06:00
markjcrane b00558bd78 Fix an error that could occur during upgrades. This will make the upgrade from older versions a little easier. 2015-08-29 12:06:56 -06:00
markjcrane 27b8116368 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-27 13:27:40 -06:00
markjcrane db488b5917 Change require("mime") to require("mime.core"). 2015-08-27 13:27:24 -06:00
FusionPBX 339bdaf0b8 Merge pull request #1130 from moteus/delete_alias_from_cache
Fix. Delete number-alias from cache when set DND/Follome/Forward.
2015-08-26 10:56:24 -06:00
Alexey Melnichuk 9ad23e65b5 Fix. Delete number-alias from cache when set DND/Follome/Forward. 2015-08-26 13:44:34 +04:00
markjcrane 9f1385dd80 Add lan example to access controls. 2015-08-25 15:01:50 -06:00
markjcrane 5f09dd8e08 Make sure access controls is not empty. 2015-08-25 14:52:19 -06:00
markjcrane 1f0664be66 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-25 11:58:17 -06:00
markjcrane 6e74b54969 Fix the extension device list. 2015-08-25 11:57:59 -06:00
FusionPBX b4fc420736 Merge pull request #1127 from moteus/status_of_valid_profile
Fix. Display only profiles which related to specific FS.
2015-08-25 11:56:16 -06:00
FusionPBX ba650a0c81 Merge pull request #1126 from moteus/status_global_gateways
Fix. Display names for global gateways on SIP Status page.
2015-08-25 11:55:19 -06:00
FusionPBX b3fc55fd48 Merge pull request #1125 from moteus/record_b_leg
Fix. Start record when b-leg answer.
2015-08-25 11:53:46 -06:00
FusionPBX a6f7f7a6f8 Merge pull request #1124 from moteus/event_socket_class
Fix. Parse ESL response more accurate.
2015-08-25 11:52:32 -06:00
Alexey Melnichuk 2d94062cca Fix. Escape hostname string. 2015-08-25 16:49:56 +04:00
Alexey Melnichuk 480f41f138 Fix. Display only profiles which related to specific FS. 2015-08-25 16:46:31 +04:00
Alexey Melnichuk 8fababb508 Fix. Display names for global gateways on SIP Status page. 2015-08-25 16:12:12 +04:00
Alexey Melnichuk 8c0bba7446 Fix. Start record when b-leg answer.
This fix problem when DID transfers to IVR.
After that user make direct-dial to extension.
IVR do transfer but a-leg already answered and
api_on_answer did not call.
2015-08-25 14:56:01 +04:00
Alexey Melnichuk 50d52a2c62 Fix. Parse ESL response more accurate.
Problem with commands that do not return Content (e.g. sendevent)
In this case `event_socket_request` go to busy wait cycle without chance to success.
On my system it require alot process time and may take >30 sec to save one extension.
2015-08-25 14:14:28 +04:00
FusionPBX 483d2a9aeb Merge pull request #1122 from moteus/delete_memcache
Fix. Delete some keys from memcache
2015-08-24 08:48:22 -06:00
Alexey Melnichuk c19cd89bc5 Fix. Delete some keys from memcache 2015-08-24 10:34:33 +04:00
markjcrane a49bd861ca Change directory hostname to switchname which is a little more flexible. 2015-08-22 23:25:27 -06:00
markjcrane b53572e017 Increase the pageing results for access controls. 2015-08-22 15:52:27 -06:00
markjcrane 7d11db9d46 Add new yealink models and update grandstream gxp21xx. 2015-08-22 11:57:06 -06:00
markjcrane c7c173f674 Add fax_forward_number to the fax class. 2015-08-21 17:10:42 -06:00
markjcrane 88ae0b72c7 Add fax prefix tot he fax class. 2015-08-21 17:04:34 -06:00
markjcrane 933db5bc01 Use fax_extension for the directory path needed for outbound faxes. 2015-08-21 16:17:42 -06:00
markjcrane 3ba2f3fedc Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-21 15:57:25 -06:00
FusionPBX da475d8ddc Merge pull request #1119 from moteus/store_number_alias_in_memcache
Store number alias in memcache
2015-08-21 15:44:37 -06:00
markjcrane 077d89f319 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-21 15:44:00 -06:00
markjcrane 8a8f73d81d Change the fax_extension to fax_destination_number. 2015-08-21 15:43:40 -06:00
FusionPBX eabad9c50f Merge pull request #1118 from moteus/clear_cache_number_alias
Fix. clear cache also for number_alias.
2015-08-21 11:33:03 -06:00
markjcrane d781e2bb1b Fix the session rotate default setting type and value. 2015-08-21 11:25:40 -06:00
markjcrane 560086d6c4 Add a new default settings -> security -> session_rotate. 2015-08-21 11:21:08 -06:00
Alexey Melnichuk d7bc826c30 Fx. Comment 2015-08-21 17:20:55 +04:00
Alexey Melnichuk 148d2b42f2 Add. Flag to switch mode for building dial-string.
You can configure ether you register with UserID=number-alias or UserID=Extension
In both cases to dial user you should use `user/<number-alias>@domain` or `user_data <number-alias>@domain`

Need test setting of presence_id for case when UserID=Extension.
2015-08-21 16:57:13 +04:00
Alexey Melnichuk fdfa8f715f Change. Store data in cache based on UserID.
Change. Support register with AuthID==UserID==Extension for extension with number-alias.

1. We need only one record in memcache.
  When we get SIP request we can find record by userid.
  When we want check AuthID we do `user_data userid@domain attr id`
  which also search record by userid.
2. We do not need check AuthID if we get record from DB. There already has check.

So we can reduce number of request to
* if there no record in memcached
 - one memcache get (returns not found)
 - database auth
 - one memcache set
* if record in memcache
 - one memcache get to retrieve XML
 - one memcache get to check Extension==AuthID
2015-08-21 16:18:52 +04:00
Alexey Melnichuk 67a1392194 Fix. clear cache also for number_alias. 2015-08-21 13:22:07 +04:00
markjcrane 115b06b9dd Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-20 20:16:30 -06:00
markjcrane c9f7869de9 Move SQL queries out of the content as a best practice and coding standard. Fix number alias when using auth name and auth id. 2015-08-20 20:16:07 -06:00
FusionPBX 9066f19b72 Merge pull request #1116 from moteus/verify_number_alias
Fix. Verify number-alias and user id.
2015-08-20 18:45:45 -06:00
markjcrane e299994033 Delete child data when deleting access controls. Improve the indentation. 2015-08-20 09:33:02 -06:00
markjcrane e193273443 Fix a quote mismatch. 2015-08-20 09:23:53 -06:00
markjcrane df9611670d Fix the path problems for the reading the acl.conf.xml. 2015-08-20 09:06:45 -06:00
Alexey Melnichuk 897b32be80 Fix. Verify number-alias and user id.
This replaces `inbound-reg-force-matching-username` profile option.
So if your extension has number-alias you can use
UserID=number-alias
AuthID=Extension

It also supports such check on INVITE not only on REGISTER.
2015-08-20 12:27:27 +04:00
markjcrane 4656eaee89 Merge branch 'master' of https://github.com/fusionpbx/fusionpbx 2015-08-19 12:41:58 -06:00
markjcrane 991731e12d Fix the fax dialplan which prevented inbound faxes from saving using the new fax dialplan. 2015-08-19 12:41:34 -06:00
FusionPBX 6680aeece5 Merge pull request #1103 from moteus/bind_digit_action
Bind digit action
2015-08-19 09:40:28 -06:00
Alexey Melnichuk 72cb20f6c4 Revert. Both legs can control of call. 2015-08-19 10:06:22 +04:00
Alexey Melnichuk 42a15cab44 Fix. Concatenate record extension 2015-08-18 15:49:56 +04:00
Alexey Melnichuk b0ce96ee03 Fix. Set voicemail ID. 2015-08-18 15:42:14 +04:00
Alexey Melnichuk 8442ea979e Change. Use bind_bind_digit instead of bind_meta_app.
Change. Allow transfer and turn on recordings only for authorized users.
Fix. Use record_ext in recording in ring_group.

This allow configure other dtmf sequence like `*#` and `##`
2015-08-18 15:38:41 +04:00
FusionPBX 1d953480ab Merge pull request #1102 from badcrc/master
New key types for Aastra devices and Logged in agents in fifo queues
2015-08-17 09:17:30 -06:00
koldoa aa647adde3 View current logged members per fifo queue 2015-08-17 16:39:54 +02:00
koldoa 7261a9dcb7 New key type for aastra devices 2015-08-17 16:39:54 +02:00
koldoa 6a93e34dab New key type for aastra devices 2015-08-17 16:39:54 +02:00
FusionPBX 19ee397c4a Merge pull request #1101 from moteus/eavesdrop_operator_panel
Fix. Eavesdrop by operator_panel with extension with number-aliases
2015-08-17 08:18:41 -06:00
Alexey Melnichuk 7c18a6585d Fix. Eavesdrop by operator_panel with extension with number-aliases 2015-08-17 16:46:53 +04:00
markjcrane 29c7b3c972 Add the t41p template. 2015-08-16 10:54:28 -06:00
markjcrane 467d747963 Update the version from 4.0 to 4.0.0. 2015-08-16 03:05:19 -06:00
1887 changed files with 177248 additions and 81638 deletions
+7
View File
@@ -0,0 +1,7 @@
.project
.vscode
/phpinfo.php
resources/config.php
secure/mailto.bat
secure/*.db
secure/*.sqlite
+32 -15
View File
@@ -1,26 +1,43 @@
RewriteEngine On
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]
# $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]
#Snom m3
RewriteRule ^(m3/settings/)([A-Fa-f0-9]{12})(\.(cfg))?$ app/provision/index.php?mac=$2 [QSA]
RewriteRule ^m3/settings/([A-Fa-f0-9]{12})(?:\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
#Grandstream
RewriteRule ^.*/provision/cfg([A-Fa-f0-9]{12})(\.(xml|cfg))?$ app/provision/?mac=$1 [QSA]
RewriteRule ^.*/cfg([A-Fa-f0-9]{12})(?:\.xml|\.cfg)?$ app/provision/?mac=$1 [QSA]
#Yealink
RewriteRule ^.*/provision/([A-Fa-f0-9]{12})(\.(xml|cfg))?$ app/provision/index.php?mac=$1 [QSA]
#Yealink and Polycom
RewriteRule ^.*/([A-Fa-f0-9]{12})(?:\.xml|\.cfg)?$ app/provision/index.php?mac=$1 [QSA]
#Polycom
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]
RewriteRule ^.*/000000000000.cfg$ app/provision/?mac=$1&file={$mac}.cfg [QSA]
RewriteRule ^.*/features.cfg$ app/provision/?mac=$1&file=features.cfg [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-sip.cfg$ app/provision/?mac=$1&file=sip.cfg [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-phone.cfg$ app/provision/?mac=$1 [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-registration.cfg$ app/provision/?mac=$1&file={$mac}-registration.cfg [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-site.cfg$ app/provision/?mac=$1&file=site.cfg [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-web.cfg$ app/provision/?mac=$1&file=web.cfg [QSA]
RewriteRule ^.*/([A-Fa-f0-9]{12})-directory.xml$ app/provision/?mac=$1&file=directory.xml [QSA]
#Escene
RewriteRule ^.*/provision/([0-9]{1,11})_Extern.xml$ app/provision/?ext=$1&file={$mac}_extern.xml [QSA]
RewriteRule ^.*/provision/([0-9]{1,11})_Phonebook.xml$ app/provision/?ext=$1&file={$mac}_phonebook.xml [QSA]
Options -Indexes
#PHP settings
php_value upload_max_filesize 25M
php_value post_max_size 35M
php_value memory_limit 512M
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>fusionbpx</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
+21 -18
View File
@@ -6,7 +6,7 @@ It provides the functionality your business needs and brings corporate-level pho
In addition to providing all of the usual PBX functionality, FusionPBX allows you to configure:
- Multi-Tenancy
- Multi-Tenant
- Unlimited Extensions
- Voicemail-to-Email
- Music on Hold
@@ -22,16 +22,16 @@ 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
1. [Old Documentation](http://wiki.fusionpbx.com/index.php?title=Main_Page)
2. [New Documentation](http://docs.fusionpbx.com)
3. [How to Contribute](https://github.com/Fusionpbx/opensource)
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)
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)
@@ -39,7 +39,7 @@ These options support the project and cover any kind of help you might need from
Software Requirements
--------------------------------------
- [Debian Jessie](http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-netinst.iso) - Recommended
- [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)
@@ -47,17 +47,17 @@ This is the distribution recommended by the FreeSwitch team
Community
--------------------------------------
We have a pretty thriving community if you know how to get to us:
We have a pretty thriving community. You can find us here:
- [IRC](http://webchat.freenode.net/) in the fusionpbx channel
- [Twitter](http://twitter.com/fusionpbx)
- [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.
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.
@@ -71,22 +71,25 @@ How to Install FusionPBX
----------------------------
* As root do the following:
```bash
apt-get update && apt-get upgrade && apt-get install -y git
```
```bash
cd /usr/src
```
```bash
apt-get install wget
git clone https://github.com/fusionpbx/fusionpbx-install.sh.git
```
```bash
wget https://raw.githubusercontent.com/fusionpbx/fusionpbx-scripts/master/install/ubuntu/install_fusionpbx.sh
chmod 755 -R /usr/src/fusionpbx-install.sh
```
```bash
chmod 755 install_fusionpbx.sh
cd /usr/src/fusionpbx-install.sh/debian
```
```bash
./install_fusionpbx.sh install-both user
./install.sh
```
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
This install script is designed to be an fast, simple, and in a modular way to install FusionPBX. Start with a minimal install of Debian 8 with SSH enabled. Run the following commands under root. The script installs FusionPBX, FreeSWITCH release package and its dependencies, IPTables, Fail2ban, NGINX, PHP FPM and PostgreSQL.
Some installations require special considerations. Visit https://github.com/fusionpbx/fusionpbx-install.sh readme section for more details.
+35 -22
View File
@@ -1,34 +1,47 @@
<?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;
}
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
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']];
}
$language = new text;
$text = $language->get();
//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);
}
//delete the data
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);
//delete access_control_node
$sql = "delete from v_access_control_nodes ";
$sql .= "where access_control_uuid = '$id' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql);
// clear cache
remove_config_from_cache('configuration:acl.conf');
}
//redirect the user
$_SESSION['message'] = $text['message-delete'];
+32 -38
View File
@@ -1,20 +1,22 @@
<?php
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;
}
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
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
require_once "app_languages.php";
foreach($text as $key => $value) {
$text[$key] = $value[$_SESSION['domain']['language']['code']];
}
$language = new text;
$text = $language->get();
//action add or update
if (isset($_REQUEST["id"])) {
@@ -76,8 +78,9 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$db->exec(check_sql($sql));
unset($sql);
$_SESSION['message'] = $text['message-add'];
header('Location: access_controls.php');
remove_config_from_cache('configuration:acl.conf');
$_SESSION["message"] = $text['message-add'];
header("Location: access_controls.php");
return;
} //if ($action == "add")
@@ -91,12 +94,13 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$db->exec(check_sql($sql));
unset($sql);
$_SESSION['message'] = $text['message-update'];
header('Location: access_controls.php');
remove_config_from_cache('configuration:acl.conf');
$_SESSION["message"] = $text['message-update'];
header("Location: access_controls.php");
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//pre-populate the form
@@ -120,18 +124,11 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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 "<form name='frm' id='frm' method='post' 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['title-access_control']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo "<td align='left' width='30%' nowrap='nowrap' valign='top'><b>".$text['title-access_control']."</b><br><br></td>\n";
echo "<td width='70%' align='right' valign='top'>\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";
@@ -155,13 +152,13 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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") {
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") {
if ($access_control_default == "deny") {
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
}
else {
@@ -188,21 +185,18 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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 " <br><input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table>";
echo "</form>";
echo "<br /><br />";
if ($action == "update") {
require "access_control_nodes.php";
echo "<br><br>";
}
echo " </td>";
echo " </tr>";
echo "</table>";
echo "</div>";
//include the footer
require_once "resources/footer.php";
?>
@@ -11,10 +11,8 @@ else {
}
//add multi-lingual support
require_once "app_languages.php";
foreach($text as $key => $value) {
$text[$key] = $value[$_SESSION['domain']['language']['code']];
}
$language = new text;
$text = $language->get();
//get the id
if (count($_GET)>0) {
@@ -22,18 +20,18 @@ else {
$access_control_uuid = check_str($_GET["access_control_uuid"]);
}
if (strlen($id)>0) {
//delete access_control_node
//delete access_control_node
if (strlen($id)>0) {
$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);
}
remove_config_from_cache('configuration:acl.conf');
}
//redirect the user
$_SESSION['message'] = $text['message-delete'];
header('Location: access_control_node_edit.php?id='.$access_control_uuid);
header('Location: access_control_edit.php?id='.$access_control_uuid);
?>
@@ -11,10 +11,8 @@ else {
}
//add multi-lingual support
require_once "app_languages.php";
foreach($text as $key => $value) {
$text[$key] = $value[$_SESSION['domain']['language']['code']];
}
$language = new text;
$text = $language->get();
//action add or update
if (isset($_REQUEST["id"])) {
@@ -87,6 +85,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$db->exec(check_sql($sql));
unset($sql);
remove_config_from_cache('configuration:acl.conf');
$_SESSION['message'] = $text['message-add'];
header('Location: access_control_edit.php?id='.$access_control_uuid);
return;
@@ -104,12 +103,13 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$db->exec(check_sql($sql));
unset($sql);
remove_config_from_cache('configuration:acl.conf');
$_SESSION['message'] = $text['message-update'];
header('Location: access_control_edit.php?id='.$access_control_uuid);
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//pre-populate the form
@@ -134,18 +134,12 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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 "<td align='left' width='30%' nowrap='nowrap' valign='top'><b>".$text['title-access_control_node']."</b><br><br></td>\n";
echo "<td width='70%' align='right' valign='top'>\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";
@@ -158,13 +152,13 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='node_type'>\n";
echo " <option value=''></option>\n";
if ($node_type == "allow") {
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") {
if ($node_type == "deny") {
echo " <option value='deny' selected='selected'>".$text['label-deny']."</option>\n";
}
else {
@@ -214,16 +208,12 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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 " <br><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>";
echo "<br><br>";
//include the footer
require_once "resources/footer.php";
+12 -21
View File
@@ -10,20 +10,19 @@ else {
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get variables used to control the order
$order_by = $_GET["order_by"];
$order = $_GET["order"];
$order_by = check_str($_GET["order_by"]);
$order = check_str($_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";
@@ -49,12 +48,12 @@ else {
}
//prepare to page the results
$rows_per_page = 10;
$param = "";
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "&id=".$access_control_uuid;
$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;
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 ";
@@ -71,7 +70,6 @@ else {
$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);
@@ -132,15 +130,8 @@ else {
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";
?>
?>
+56 -67
View File
@@ -1,19 +1,22 @@
<?php
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
require_once "app_languages.php";
foreach($text as $key => $value) {
$text[$key] = $value[$_SESSION['domain']['language']['code']];
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
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 variables used to control the order
$order_by = $_GET["order_by"];
@@ -23,13 +26,44 @@ else {
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 />";
//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 {
$num_rows = '0';
}
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$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);
unset ($prep_statement, $sql);
//alternate the row style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//show the content
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";
@@ -42,44 +76,6 @@ else {
echo " </tr>\n";
echo "</table>\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 {
$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);
@@ -95,7 +91,7 @@ else {
echo "</td>\n";
echo "<tr>\n";
if ($result_count > 0) {
if (is_array($result)) {
foreach($result as $row) {
if (permission_exists('access_control_edit')) {
$tr_link = "href='access_control_edit.php?id=".$row['access_control_uuid']."'";
@@ -136,17 +132,10 @@ else {
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";
?>
+7
View File
@@ -69,14 +69,17 @@
$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.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Insira o nome';
$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]['description']['en-us'] = 'Select the default type.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Selecione o tipo padrão.';
$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]['description']['en-us'] = 'Enter the description';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Insira com uma descrição';
$y = 1; //table array index
$z = 0; //field array index
@@ -106,17 +109,21 @@
$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]['description']['pt-br'] = 'Selecione o tipo.';
$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]['description']['pt-br'] = 'Insira o intervalo IP CIDR.';
$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]['description']['pt-br'] = 'Insira com o domínio.';
$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]['description']['pt-br'] = 'Insira a descrição.';
$z++;
?>
+31 -14
View File
@@ -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) 2015
Portions created by the Initial Developer are Copyright (C) 2016
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -34,19 +34,29 @@
$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';
//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)) {
$xml_string = file_get_contents($xml_file);
}
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';
elseif (file_exists($xml_file_alt)) {
$xml_string = file_get_contents(xml_file_alt);
}
else {
$xml_file = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/autoload_configs/acl.conf.xml';
$xml_string = "<configuration name=\"acl.conf\" description=\"Network Lists\">\n";
$xml_string .= " <network-lists>\n";
$xml_string .= " <list name=\"lan\" default=\"allow\">\n";
$xml_string .= " <node type=\"allow\" cidr=\"192.168.42.42/32\"/>\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";
}
//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);
@@ -87,6 +97,7 @@
$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);
@@ -99,7 +110,8 @@
$sql .= "access_control_uuid, ";
$sql .= "node_type, ";
$sql .= "node_cidr, ";
$sql .= "node_domain ";
$sql .= "node_domain, ";
$sql .= "node_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
@@ -107,15 +119,20 @@
$sql .= "'".$access_control_uuid."', ";
$sql .= "'".$node_type."', ";
$sql .= "'".$node_cidr."', ";
$sql .= "'".$node_domain."' ";
$sql .= "'".$node_domain."', ";
$sql .= "'".$node_description."' ";
$sql .= ")";
//echo $sql."\n";
$db->exec(check_sql($sql));
}
}
unset($prep_statement);
}
unset($prep_statement);
//rename the file
rename($xml_dir.'/acl.conf.xml', $xml_dir.'/acl.conf');
}
}
}
?>
+2 -171
View File
@@ -52,71 +52,6 @@ $text['title-access_control']['uk'] = "Управління доступом";
$text['title-access_control']['sv-se'] = "Åtkomstkontroll";
$text['title-access_control']['ar-eg'] = "التحكم في الوصول";
$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']['es-cl'] = "Escribe";
$text['label-node_type']['pt-pt'] = "Tipo";
@@ -169,24 +104,11 @@ $text['label-node_cidr']['uk'] = "CIDR";
$text['label-node_cidr']['sv-se'] = "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']['es-cl'] = "Negar";
$text['label-deny']['pt-pt'] = "negar";
$text['label-deny']['fr-fr'] = " nier";
$text['label-deny']['pt-br'] = "Negar";
$text['label-deny']['pt-br'] = "negar";
$text['label-deny']['he'] = "להכחיש";
$text['label-deny']['de-at'] = " leugnen";
$text['label-deny']['pl'] = "zaprzeczać";
@@ -329,7 +251,7 @@ $text['description-access_control_description']['en-us'] = "Enter the descriptio
$text['description-access_control_description']['es-cl'] = "Introduzca la descripción";
$text['description-access_control_description']['pt-pt'] = "Digite a descrição";
$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']['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";
@@ -364,95 +286,4 @@ $text['description-access_control']['uk'] = "Список контролю до
$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'] = "اضافة";
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -314,7 +314,7 @@ fieldset {
/*** Others ***/
#lang {
background: transparent;
font-size: .9em;
font-size: .9em;
left: auto;
right: 90px;
position:fixed;
+417 -400
View File
File diff suppressed because one or more lines are too long
@@ -27,32 +27,19 @@
//proccess this only one time
if ($domains_processed == 1) {
//migrate existing attachment preferences to new column, where appropriate
$sql = "update v_voicemails set voicemail_file = 'attach' where voicemail_attach_file = 'true'";
$db->exec(check_sql($sql));
unset($sql);
//define array of settings
$x = 0;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'voicemail_file';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'attach';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to attach voicemail files to email notifications, or only include a link.';
$x++;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'keep_local';
$array[$x]['default_setting_category'] = 'adminer';
$array[$x]['default_setting_subcategory'] = 'auto_login';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to keep voicemail files on the local system after sending attached via email.';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set whether to auto-login to Adminer, or require a username and password.';
$x++;
//iterate and add each, if necessary
foreach ($array as $index => $default_settings) {
//add the default setting
//add the default setting
$sql = "select count(*) as num_rows from v_default_settings ";
$sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' ";
$sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' ";
@@ -71,7 +58,6 @@ if ($domains_processed == 1) {
}
unset($row);
}
}
}
+19 -18
View File
@@ -1,19 +1,20 @@
<?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";
<?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'] = "Adminer";
$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]['icon'] = "glyphicon-new-window";
$apps[$x]['menu'][0]['path'] = "/app/adminer/index.php";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>
+40 -34
View File
@@ -23,44 +23,50 @@
exit;
}
function adminer_object() {
//auto login
if (isset($_SESSION['adminer']['auto_login']['boolean'])) {
function adminer_object() {
class AdminerSoftware extends Adminer {
class AdminerSoftware extends Adminer {
function name() {
// custom name in title and heading
return 'Adminer';
}
function name() {
// custom name in title and heading
return 'Adminer';
function permanentLogin() {
// key used for permanent login
if ($_SESSION['adminer']['auto_login']['boolean'] == 'true') {
return "7bebc76d8680196752c6b961ef13c360";
}
}
function credentials() {
// server, username and password for connecting to database
if ($_SESSION['adminer']['auto_login']['boolean'] == 'true') {
global $db_host, $db_username, $db_password;
return array($db_host.':'.$db_port, $db_username, $db_password);
}
}
function database() {
// database name, will be escaped by Adminer
if ($_SESSION['adminer']['auto_login']['boolean'] == 'true') {
global $db_name;
return $db_name;
}
}
function login($login, $password) {
// validate user submitted credentials
return ($_SESSION['adminer']['auto_login']['boolean'] == 'true') ? true : false;
}
}
return new AdminerSoftware;
}
/*
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";
?>
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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"]);
}
?>
+6 -26
View File
@@ -34,7 +34,7 @@ $text['message-restore_failed_upload']['en-us'] = "Restore Failed - File Upload
$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']['pt-br'] = "Falha de restauração - Upload 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'] = "Помилка відновлення: неможливо завантажити файл";
@@ -54,7 +54,7 @@ $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']['pt-br'] = "Restauração Concluída";
$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'] = "Відновлено";
@@ -94,7 +94,7 @@ $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']['pt-br'] = "Destino de origem";
$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'] = "Об’єкти для резервного копіювання";
@@ -104,7 +104,7 @@ $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']['pt-br'] = "Selecione o arquivo de 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'] = "Виберіть файл резервної копії";
@@ -164,7 +164,7 @@ $text['description-restore']['en-us'] = "To restore a backup from a file on your
$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']['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_[AAMMDD]_[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'] = "Для відновлення резервної копії з файлу, натисніть кнопку 'Огляд' і виберіть потрібний файл резервної копії, а потім натисніть кнопку 'Відновити '.";
@@ -174,22 +174,12 @@ $text['description-backup']['en-us'] = "To create a backup of the Source Paths b
$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']['pt-br'] = "Para criar uma cópia de segurança dos caminhos de origem abaixo (definidos em Configurações Padrão), selecione o formato de arquivo desejado e Tipo de destino. ";
$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";
@@ -200,14 +190,4 @@ $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";
?>
+1
View File
@@ -3,6 +3,7 @@
$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']['pt-br'] = "Backup";
$apps[$x]['menu'][0]['title']['sv-se'] = "Backup";
$apps[$x]['menu'][0]['title']['uk'] = "Резервна копія";
$apps[$x]['menu'][0]['title']['de-at'] = "Sicherung";
+257 -256
View File
@@ -1,257 +1,258 @@
<?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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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']."&nbsp;</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";
<?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-2016
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.' ';
if (isset($_SESSION['backup']['path'])) 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";
if (isset($_SESSION['backup']['path'])) 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>";
if (permission_exists("backup_upload")) {
echo " </td>\n";
echo " <td width='20'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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']."&nbsp;</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";
?>
Executable → Regular
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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"]);
}
?>
+7 -5
View File
@@ -17,7 +17,7 @@
$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']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "Uma ferramenta para bloquear números que entram.";
//permission details
$y = 0;
@@ -25,22 +25,18 @@
$apps[$x]['permissions'][$y]['menu']['uuid'] = "29295c90-b1b9-440b-9c7E-c8363c6e8975";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "user";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "user";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_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'] = "call_block_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "user";
$y++;
//schema details
@@ -67,30 +63,36 @@
$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]['description']['en'] = "Enter the name.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Insira o nome.";
$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]['description']['en'] = "Enter the full phone number.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Insira o número de telefone completo.";
$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'] = "Number of calls.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Número de chamadas.";
$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'] = "Action for call.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Ação para a chamada.";
$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'] = "Date/Time number was added.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Data/Hora que o número foi adicionado.";
$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'] = "Enable/disable blocking the call.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Habilitar/desabilitar bloqueamento da chamada.";
$z++;
?>
+35 -163
View File
@@ -19,7 +19,7 @@ $text['prompt-block_recent_name']['es-cl'] = "Bloqueo de llamadas recientes - Ed
$text['prompt-block_recent_name']['pt-pt'] = "Bloquear Chamadas Recentes - Edite o nome, se desejar...";
$text['prompt-block_recent_name']['fr-fr'] = "Bloquer appels récents - Modifiez le nom, si vous le souhaitez...";
$text['prompt-block_recent_name']['nl-nl'] = "";
$text['prompt-block_recent_name']['pt-br'] = "Bloquear chamadas recentes, edite o nome se assim desejar";
$text['prompt-block_recent_name']['pt-br'] = "Bloquear chamadas recentes, edite o nome se assim desejar...";
$text['prompt-block_recent_name']['pl'] = "Zablokuj ostatnią rozmowę. Edytuj nazwę";
$text['prompt-block_recent_name']['sv-se'] = "Blockera Senaste Samtal, meditera namnet om nödvändigt...";
$text['prompt-block_recent_name']['uk'] = "Блокувати недавній дзвінок. Відредагуйте назву за бажанням";
@@ -33,7 +33,7 @@ $text['label-update-complete']['es-cl'] = "Actualización Completa";
$text['label-update-complete']['pt-pt'] = "Actualização Efectuada";
$text['label-update-complete']['fr-fr'] = "Mise à jour effectuée";
$text['label-update-complete']['nl-nl'] = "";
$text['label-update-complete']['pt-br'] = "Atualização efetuada";
$text['label-update-complete']['pt-br'] = "Atualização Completa";
$text['label-update-complete']['pl'] = "Zaktualizowano poprawnie";
$text['label-update-complete']['sv-se'] = "Uppdatering Klar";
$text['label-update-complete']['uk'] = "Оновлено";
@@ -42,20 +42,6 @@ $text['label-update-complete']['de-at'] = "Aktualisierung abgeschlossen";
$text['label-update-complete']['ar-eg'] = "اكتمال التحديث";
$text['label-update-complete']['he'] = "העדכון הושלם";
$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']['nl-nl'] = "";
$text['label-true']['pt-br'] = "Sim";
$text['label-true']['pl'] = "Tak";
$text['label-true']['sv-se'] = "Sann";
$text['label-true']['uk'] = "Так";
$text['label-true']['ro'] = "";
$text['label-true']['de-at'] = "Ein";
$text['label-true']['ar-eg'] = "صحيح";
$text['label-true']['he'] = "חיובי";
$text['label-reject']['en-us'] = "Reject";
$text['label-reject']['es-cl'] = "Rechazar";
$text['label-reject']['pt-pt'] = "Rejeitar";
@@ -75,7 +61,7 @@ $text['label-provide-number']['es-cl'] = "Por favor agregue: Número";
$text['label-provide-number']['pt-pt'] = "Por favor indique: Número";
$text['label-provide-number']['fr-fr'] = "Merci d'indiquer: Numéro";
$text['label-provide-number']['nl-nl'] = "";
$text['label-provide-number']['pt-br'] = "Por favor indique um número";
$text['label-provide-number']['pt-br'] = "Por favor indique: Número";
$text['label-provide-number']['pl'] = " Wprowadź numer";
$text['label-provide-number']['sv-se'] = "Ange: Nummer";
$text['label-provide-number']['uk'] = "Введіть номер";
@@ -89,7 +75,7 @@ $text['label-provide-name']['es-cl'] = "Por favor agregue: Nombre";
$text['label-provide-name']['pt-pt'] = "Por favor indique: Nome";
$text['label-provide-name']['fr-fr'] = "Merci d'indiquer: Nom";
$text['label-provide-name']['nl-nl'] = "";
$text['label-provide-name']['pt-br'] = "Por favor indique um nome";
$text['label-provide-name']['pt-br'] = "Por favor indique: Nome";
$text['label-provide-name']['pl'] = " Wprowadź nazwę ";
$text['label-provide-name']['sv-se'] = "Ange: Namn";
$text['label-provide-name']['uk'] = "Введіть назву";
@@ -103,7 +89,7 @@ $text['label-provide-enabled']['es-cl'] = "Por favor agregue: Activo";
$text['label-provide-enabled']['pt-pt'] = "Por favor indique: Activado";
$text['label-provide-enabled']['fr-fr'] = "Merci d'indiquer: Actif";
$text['label-provide-enabled']['nl-nl'] = "";
$text['label-provide-enabled']['pt-br'] = "Por favor indique se esta ativado";
$text['label-provide-enabled']['pt-br'] = "Por favor indique se está habilitado";
$text['label-provide-enabled']['pl'] = " Wprowadź: Włączony";
$text['label-provide-enabled']['sv-se'] = "Ange: Aktiverad";
$text['label-provide-enabled']['uk'] = "Включити/відключити";
@@ -126,20 +112,6 @@ $text['label-number']['de-at'] = "Nummer";
$text['label-number']['ar-eg'] = "رقم";
$text['label-number']['he'] = "מספר";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['nl-nl'] = "";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['uk'] = "Назва";
$text['label-name']['ro'] = "Nume";
$text['label-name']['de-at'] = "Name";
$text['label-name']['ar-eg'] = "الأسم";
$text['label-name']['he'] = "שם";
$text['label-message']['en-us'] = "Message";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['pt-pt'] = "Mensagem";
@@ -182,34 +154,6 @@ $text['label-inbound']['de-at'] = "Eingehend";
$text['label-inbound']['ar-eg'] = "";
$text['label-inbound']['he'] = "";
$text['label-false']['en-us'] = "False";
$text['label-false']['es-cl'] = "falso";
$text['label-false']['pt-pt'] = "Não";
$text['label-false']['fr-fr'] = "Non";
$text['label-false']['nl-nl'] = "";
$text['label-false']['pt-br'] = "Não";
$text['label-false']['pl'] = "Nie";
$text['label-false']['sv-se'] = "Falsk";
$text['label-false']['uk'] = "Ні";
$text['label-false']['ro'] = "";
$text['label-false']['de-at'] = "Aus";
$text['label-false']['ar-eg'] = "";
$text['label-false']['he'] = "";
$text['label-enabled']['en-us'] = "Enabled";
$text['label-enabled']['es-cl'] = "Activo";
$text['label-enabled']['pt-pt'] = "Activado";
$text['label-enabled']['fr-fr'] = "Actif";
$text['label-enabled']['nl-nl'] = "";
$text['label-enabled']['pt-br'] = "Habilitado";
$text['label-enabled']['pl'] = "Włączony";
$text['label-enabled']['sv-se'] = "Aktiverad";
$text['label-enabled']['uk'] = "Включено";
$text['label-enabled']['ro'] = "";
$text['label-enabled']['de-at'] = "Aktiv";
$text['label-enabled']['ar-eg'] = "مفعل";
$text['label-enabled']['he'] = "";
$text['label-edit-note']['en-us'] = "Block calls from a number. Edit the name and enable/disable below.";
$text['label-edit-note']['es-cl'] = "Bloquea llamadas desde un número. Edite el nombre y active/desactive abajo.";
$text['label-edit-note']['pt-pt'] = "Bloquear chamadas a partir de um número. Edite o nome e active/desactive.";
@@ -299,7 +243,7 @@ $text['label-date-added']['es-cl'] = "Fecha de ingreso";
$text['label-date-added']['pt-pt'] = "Data adicionada";
$text['label-date-added']['fr-fr'] = "Date d'ajout";
$text['label-date-added']['nl-nl'] = "";
$text['label-date-added']['pt-br'] = "Data acionada";
$text['label-date-added']['pt-br'] = "Data adicionada";
$text['label-date-added']['pl'] = "Dodano datę";
$text['label-date-added']['sv-se'] = "Datum Tillagt";
$text['label-date-added']['uk'] = "Додано";
@@ -350,6 +294,31 @@ $text['label-busy']['de-at'] = "Besetzt";
$text['label-busy']['ar-eg'] = "مشغول";
$text['label-busy']['he'] = "תפוס";
$text['label-hold']['en-us'] = "Hold";
$text['label-hold']['es-cl'] = "";
$text['label-hold']['pt-pt'] = "";
$text['label-hold']['fr-fr'] = "";
$text['label-hold']['nl-nl'] = "";
$text['label-hold']['pt-br'] = "Espera";
$text['label-hold']['pl'] = "";
$text['label-hold']['sv-se'] = "";
$text['label-hold']['uk'] = "";
$text['label-hold']['ro'] = "";
$text['label-hold']['de-at'] = "";
$text['label-hold']['ar-eg'] = "";
$text['label-hold']['he'] = "";
$text['label-voicemail']['en-us'] = "Voicemail";
$text['label-voicemail']['es-cl'] = "Correo de Voz";
$text['label-voicemail']['pt-pt'] = "Correio de Voz";
$text['label-voicemail']['fr-fr'] = "Messagerie Vocale";
$text['label-voicemail']['pt-br'] = "Correio de voz";
$text['label-voicemail']['pl'] = "Poczta głosowa";
$text['label-voicemail']['sv-se'] = "Röstbrevlåda";
$text['label-voicemail']['uk'] = "Голосова пошта";
$text['label-voicemail']['de-at'] = "Mailbox";
$text['label-voicemail']['he'] = "תא קולי";
$text['label-add-note']['en-us'] = "Block calls from a number. Either select a number from the list above or enter the number, name and enable below.";
$text['label-add-note']['es-cl'] = "Bloquea llamadas desde un número. Puede elegir un número de la lista de arriba o ingresar el n&uacute, nombre y activarlo abajo.";
$text['label-add-note']['pt-pt'] = "Bloquear chamadas a partir de um número. Seleccione um número a partir da lista indicada ou introduza um número, nome e active.";
@@ -397,7 +366,7 @@ $text['description-number']['es-cl'] = "Ingrese el nú exacto.";
$text['description-number']['pt-pt'] = "Introduza o número exacto.";
$text['description-number']['fr-fr'] = "Entrer le numéro exact.";
$text['description-number']['nl-nl'] = "";
$text['description-number']['pt-br'] = "Insira o número exato";
$text['description-number']['pt-br'] = "Insira o número exato.";
$text['description-number']['pl'] = "Wprowadź dokładny numer.";
$text['description-number']['sv-se'] = "Ange det exakta numret";
$text['description-number']['uk'] = "Введіть точний номер";
@@ -411,7 +380,7 @@ $text['description-name']['es-cl'] = "Introduzca el nombre.";
$text['description-name']['pt-pt'] = "Digite o nome.";
$text['description-name']['fr-fr'] = "Entrez le nom.";
$text['description-name']['nl-nl'] = "";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pt-br'] = "Insira o nome.";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Skriv in namnet.";
$text['description-name']['uk'] = "Введіть назву меню";
@@ -425,7 +394,7 @@ $text['description-enable']['es-cl'] = "Seleccione verdadero para activar el blo
$text['description-enable']['pt-pt'] = "Escolha 'sim' para activar o bloqueio de chamadas para este número.";
$text['description-enable']['fr-fr'] = "Choisir Oui pour activer le bloquage d'appel.";
$text['description-enable']['nl-nl'] = "";
$text['description-enable']['pt-br'] = "Escolha sim para ativar o bloqueio de chamadas para este número";
$text['description-enable']['pt-br'] = "Escolha 'sim' para ativar o bloqueio de chamadas para este número.";
$text['description-enable']['pl'] = "Ustaw wartość na TAK, aby umożliwić blokowanie tego numeru ";
$text['description-enable']['sv-se'] = "Välj Sann för att blockera detta nummer.";
$text['description-enable']['uk'] = "Виберіть 'Так', щоб блокувати дзвінки з даного номера.";
@@ -453,7 +422,7 @@ $text['description-action']['es-cl'] = "Configurar una acción para llamadas des
$text['description-action']['pt-pt'] = "Escolha uma acção para chamadas com origem neste número.";
$text['description-action']['fr-fr'] = "Choisir une action pour les appels venant de ce numéro.";
$text['description-action']['nl-nl'] = "";
$text['description-action']['pt-br'] = "Escolha uma ação para chamadas com origem neste número";
$text['description-action']['pt-br'] = "Escolha uma ação para chamadas reailzadas por este número.";
$text['description-action']['pl'] = "Ustaw co zrobić w przypadku polaczeń z tego numeru.";
$text['description-action']['sv-se'] = "Välj en aktion för samtal från detta nummer.";
$text['description-action']['uk'] = "Встановіть дію для дзвінків з цього номера.";
@@ -462,101 +431,4 @@ $text['description-action']['de-at'] = "Setzen Sie eine Aktion für Anrufe von d
$text['description-action']['ar-eg'] = "";
$text['description-action']['he'] = "";
$text['confirm-delete']['en-us'] = "Do you really want to delete this?";
$text['confirm-delete']['es-cl'] = "¿Realmente desea eliminar el número?";
$text['confirm-delete']['pt-pt'] = "Deseja realmente remover isto?";
$text['confirm-delete']['fr-fr'] = "Voulez-vous vraiment supprimer cela?";
$text['confirm-delete']['nl-nl'] = "";
$text['confirm-delete']['pt-br'] = "Deseja realmente remover isto?";
$text['confirm-delete']['pl'] = "Czy na pewno chcesz to usunąć?";
$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
$text['confirm-delete']['ro'] = "";
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete']['ar-eg'] = "";
$text['confirm-delete']['he'] = "?בטוח שאתה רוצה למחוק";
$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']['nl-nl'] = "";
$text['button-view']['pt-br'] = "Visualizar";
$text['button-view']['pl'] = "Widok";
$text['button-view']['sv-se'] = "Visa";
$text['button-view']['uk'] = "Перегляд";
$text['button-view']['ro'] = "Vizualizare";
$text['button-view']['de-at'] = "Ansicht";
$text['button-view']['ar-eg'] = "عرض";
$text['button-view']['he'] = "הצג";
$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']['nl-nl'] = "";
$text['button-save']['pt-br'] = "Salvar";
$text['button-save']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['ro'] = "Salvează";
$text['button-save']['de-at'] = "Speichern";
$text['button-save']['ar-eg'] = "حفظ";
$text['button-save']['he'] = "שמור";
$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']['nl-nl'] = "";
$text['button-edit']['pt-br'] = "Editar";
$text['button-edit']['pl'] = "Edytuj";
$text['button-edit']['sv-se'] = "Editera";
$text['button-edit']['uk'] = "Редагувати";
$text['button-edit']['ro'] = "Editează";
$text['button-edit']['de-at'] = "Bearbeiten";
$text['button-edit']['ar-eg'] = "تعديل";
$text['button-edit']['he'] = "ערוך";
$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']['nl-nl'] = "";
$text['button-delete']['pt-br'] = "Remover";
$text['button-delete']['pl'] = "Usuń";
$text['button-delete']['sv-se'] = "Ta Bort";
$text['button-delete']['uk'] = "Видалити";
$text['button-delete']['ro'] = "";
$text['button-delete']['de-at'] = "Löschen";
$text['button-delete']['ar-eg'] = "مسح";
$text['button-delete']['he'] = "מחק";
$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']['nl-nl'] = "";
$text['button-back']['pt-br'] = "Voltar";
$text['button-back']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka";
$text['button-back']['uk'] = "Назад";
$text['button-back']['ro'] = "Înapoi";
$text['button-back']['de-at'] = "Zurück";
$text['button-back']['ar-eg'] = "رجوع";
$text['button-back']['he'] = "חזרה";
$text['button-add']['en-us'] = "Add";
$text['button-add']['pt-pt'] = "Adicionar";
$text['button-add']['fr-fr'] = "Ajouter";
$text['button-add']['nl-nl'] = "";
$text['button-add']['pt-br'] = "Adicionar";
$text['button-add']['pl'] = "Dodaj";
$text['button-add']['sv-se'] = "Lägg Till";
$text['button-add']['uk'] = "Додати";
$text['button-add']['ro'] = "Adaugă";
$text['button-add']['de-at'] = "Hinzufügen";
$text['button-add']['ar-eg'] = "اضافة";
$text['button-add']['he'] = "";
?>
+1 -2
View File
@@ -16,8 +16,7 @@ $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";
$apps[$x]['menu'][0]['groups'][] = "admin";
?>
+2 -2
View File
@@ -80,7 +80,7 @@ require_once "resources/require.php";
}
//prepare to page the results
$rows_per_page = 100;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -139,7 +139,7 @@ require_once "resources/require.php";
}
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 valign='top' class='".$row_style[$c]."'>".$text['label-'.$row['call_block_enabled']]."</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('call_block_edit')) {
echo "<a href='call_block_edit.php?id=".$row['call_block_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
+11 -5
View File
@@ -44,7 +44,7 @@ else {
//define the call_block_get_extensions function
function call_block_get_extensions($select_extension) {
global $db;
global $db, $text;
//list voicemail
$sql = "select extension, user_context, description from v_extensions ";
@@ -55,12 +55,12 @@ else {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
echo "<optgroup label='Voicemail'>\n";
echo "<optgroup label='".$text['label-voicemail']."'>\n";
foreach ($result as &$row) {
$extension = $row["extension"];
$context = $row["user_context"];
$description = $row["description"];
if ($extension == $select_extension) $selected = "SELECTED";
if ($extension == $select_extension) $selected = "selected='selected'";
echo " <option value='Voicemail $context $extension' $selected>".$extension." ".$description."</option>\n";
$selected = "";
}
@@ -77,7 +77,7 @@ else {
}
//get http post variables and set them to php variables
if (count($_POST)>0) {
if (count($_POST) > 0) {
$call_block_name = check_str($_POST["call_block_name"]);
$call_block_number = check_str($_POST["call_block_number"]);
$call_block_action = check_str($_POST["call_block_action"]);
@@ -167,7 +167,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$result = $prep_statement->fetchAll();
$result_count = count($result);
if ($result_count > 0) {
$call_block_number = $result[0]["call_block_number"];
//set the domain_name
$domain_name = $result[0]["domain_name"];
//clear the cache
@@ -298,6 +298,12 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
else {
echo " <option value='Busy'>".$text['label-busy']."</option>\n";
}
if ($action == "Hold") {
echo " <option value='Hold' selected='selected'>".$text['label-hold']."</option>\n";
}
else {
echo " <option value='Hold'>".$text['label-hold']."</option>\n";
}
call_block_get_extensions($extension);
echo " </select>\n";
echo "<br />\n";
+55 -17
View File
@@ -22,31 +22,69 @@
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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$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']['pt-br'] = "";
$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.";
//permission details
$apps[$x]['permissions'][0]['name'] = "call_broadcast_view";
+10 -98
View File
@@ -33,17 +33,6 @@ $text['option-false']['uk'] = "Ні";
$text['option-false']['de-at'] = "Aus";
$text['option-false']['he'] = "לא חוקי";
$text['message-message']['en-us'] = "Message";
$text['message-message']['es-cl'] = "Mensaje";
$text['message-message']['pt-pt'] = "Mensagem";
$text['message-message']['fr-fr'] = "Message";
$text['message-message']['pt-br'] = "Mensagem";
$text['message-message']['pl'] = "Wiadomość";
$text['message-message']['sv-se'] = "Meddelande";
$text['message-message']['uk'] = "Повідомлення";
$text['message-message']['de-at'] = "Nachricht";
$text['message-message']['he'] = "הודעה";
$text['label-view-calls']['en-us'] = "View Calls";
$text['label-view-calls']['es-cl'] = "Ver llamadas";
$text['label-view-calls']['pt-pt'] = "Ver Chamadas";
@@ -77,17 +66,6 @@ $text['label-phone']['uk'] = "Список телефонних номерів";
$text['label-phone']['de-at'] = "Liste der Telefonnummern";
$text['label-phone']['he'] = "רשימת מספרי טלפון";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['uk'] = "Назва";
$text['label-name']['de-at'] = "Name";
$text['label-name']['he'] = "שם";
$text['label-message']['en-us'] = "Message";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['pt-pt'] = "Mensagem";
@@ -103,7 +81,7 @@ $text['label-has-been']['en-us'] = "has been started";
$text['label-has-been']['es-cl'] = "iniciada";
$text['label-has-been']['pt-pt'] = "foi inicializada";
$text['label-has-been']['fr-fr'] = "a commencé";
$text['label-has-been']['pt-br'] = "Foi inicializada";
$text['label-has-been']['pt-br'] = "foi inicializada";
$text['label-has-been']['pl'] = "rozpoczęto";
$text['label-has-been']['sv-se'] = "har startat";
$text['label-has-been']['uk'] = "було запущено";
@@ -121,22 +99,11 @@ $text['label-destination']['uk'] = "Номер";
$text['label-destination']['de-at'] = "Zielnummer";
$text['label-destination']['he'] = "יעד";
$text['label-description']['en-us'] = "Description";
$text['label-description']['es-cl'] = "Descripción";
$text['label-description']['pt-pt'] = "Descrição";
$text['label-description']['fr-fr'] = "Description";
$text['label-description']['pt-br'] = "Descrição";
$text['label-description']['pl'] = "Opis";
$text['label-description']['sv-se'] = "Beskrivning";
$text['label-description']['uk'] = "Опис";
$text['label-description']['de-at'] = "Beschreibung";
$text['label-description']['he'] = "תיאור";
$text['label-concurrent-limit']['en-us'] = "Concurrent Limit";
$text['label-concurrent-limit']['es-cl'] = "Límite de concurrencia";
$text['label-concurrent-limit']['pt-pt'] = "Limite de chamadas concorrentes";
$text['label-concurrent-limit']['fr-fr'] = "Appels Simultanés";
$text['label-concurrent-limit']['pt-br'] = "Limite de chamadas concorrentes";
$text['label-concurrent-limit']['pt-br'] = "Limite de chamadas simultâneas";
$text['label-concurrent-limit']['pl'] = "Limit jednoczesnych rozmów";
$text['label-concurrent-limit']['sv-se'] = "Samtidig Gräns";
$text['label-concurrent-limit']['uk'] = "Обмеження одночасної кількості";
@@ -211,7 +178,7 @@ $text['label-accountcode']['he'] = "קוד חשבון";
$text['description-timeout']['en-us'] = "";
$text['description-timeout']['es-cl'] = "";
$text['description-timeout']['pt-pt'] = "";
$text['description-timeout']['pt-pt'] = "Limite de tempo (em milissegundos) de espera após reproduzir gravações ou confirmar a macro.";
$text['description-timeout']['fr-fr'] = "";
$text['description-timeout']['pt-br'] = "";
$text['description-timeout']['pl'] = "Ilość milisekund oczekiwania po odtworzeniu nagrania lub potwierdzenia makro.";
@@ -224,7 +191,7 @@ $text['description-phone']['en-us'] = "Optional, set a list of phone numbers one
$text['description-phone']['es-cl'] = "Opcional, definir una lista de números de telefono, uno por línea en el siguiente formato:  123-123-1234 | Apellido, Nombre";
$text['description-phone']['pt-pt'] = "Opcional, definir uma lista de números de telefone, um por linha, no seguinte formato: 210000000 | Apelido, Primeiro Nome";
$text['description-phone']['fr-fr'] = "Optionnel, Insérer une liste de numéros de téléphone, un par ligne, dans le format suivant ; 0123456789 | Nom, Prénom";
$text['description-phone']['pt-br'] = "Opcional, definir uma lista de números de telefone, um por linha, no seguinte formato: 210000000 | Apelido, Primeiro Nome ";
$text['description-phone']['pt-br'] = "Opcional, definir uma lista de números de telefone, um por linha, no seguinte formato: 210000000 | Apelido, Primeiro Nome.";
$text['description-phone']['pl'] = "Opcjonalne - ułóż listę numerów (jeden pod drugim) w formacie: 123-123-1234|Nazwisko, Imię";
$text['description-phone']['sv-se'] = "Frivillig, fyll i en lista med nummer (ett per rad) i följande format: 123-123-1234|Efternamn, Förnamn";
$text['description-phone']['uk'] = "Додатково, задайте список телефонних номерів по одному на рядок в наступному форматі: 123-123-1234 | Прізвище, ім'я";
@@ -235,7 +202,7 @@ $text['description-name']['en-us'] = "Enter the name here.";
$text['description-name']['es-cl'] = "Ingrese el nombre aquí.";
$text['description-name']['pt-pt'] = "Introduza o nome aqui.";
$text['description-name']['fr-fr'] = "Insérer le Nom.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pt-br'] = "Insira o nome do broadcast.";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Skriv in namnet här.";
$text['description-name']['uk'] = "Введіть назву";
@@ -268,7 +235,7 @@ $text['description-concurrent-limit']['en-us'] = "Limit the approximate number o
$text['description-concurrent-limit']['es-cl'] = "Limitar el número de llamadas simultaneas. Deje en blanco para no establecer un límite.";
$text['description-concurrent-limit']['pt-pt'] = "Limitar o número de chamadas concurrentes. Deixe este campo em branco para não ter limite.";
$text['description-concurrent-limit']['fr-fr'] = "Limite le nombre d'appels concurrents. Laisser vide pour illimité.";
$text['description-concurrent-limit']['pt-br'] = "Limitar o número de chamadas concorrentes. Deixe este campo em branco para não ter limite. ";
$text['description-concurrent-limit']['pt-br'] = "Limitar o número de chamadas simultâneas. Deixe este campo em branco para não ter limite.";
$text['description-concurrent-limit']['pl'] = "Ogranicz liczbę równoczesnych połączeń. Aby nie było limitu zostaw to pole puste.";
$text['description-concurrent-limit']['sv-se'] = "Begränsa ungefärliga antalet samtidiga samtal. Lämna det här tomt för ingen gräns.";
$text['description-concurrent-limit']['uk'] = "Обмеження приблизної кількості одночасних дзвінків. Якщо пусто - без обмежень";
@@ -278,7 +245,7 @@ $text['description-concurrent-limit']['he'] = "";
$text['description-caller-id-number']['en-us'] = "Applicable if the provider that allow the Caller ID number to be sent. default: 0000000000";
$text['description-caller-id-number']['pt-pt'] = "Aplicável se o provedor permitir o envio do número do originador das chamadas. Omissão: 0000000000";
$text['description-caller-id-number']['fr-fr'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du numéro d'appelant. Par défaut: 0000000000";
$text['description-caller-id-number']['pt-br'] = "Aplicável se o provedor permitir o envio do número do originador das chamadas. Omissão: 0000000000 ";
$text['description-caller-id-number']['pt-br'] = "Aplicável se o provedor permitir o envio do número do originador das chamadas. Omissão: 0000000000.";
$text['description-caller-id-number']['pl'] = "Zastosowane w przypadku jeżeli operator zezwala na prezentację numeru. Standardowo prezentacja jest w formacie: 0000000000";
$text['description-caller-id-number']['sv-se'] = "Gäller om leverantör tillåter att Caller ID nummer skickas. Standard: 0000000000";
$text['description-caller-id-number']['uk'] = "Стосується, якщо постачальник, дозволяє надсилати номер абонента (Caller ID номер). За замовчуванням: 0000000000";
@@ -289,7 +256,7 @@ $text['description-caller-id-name']['en-us'] = "Applicable if the provider allow
$text['description-caller-id-name']['es-cl'] = "Applicable si el proveedor permite enviar el número de origen. Por defecto: 0000000000";
$text['description-caller-id-name']['pt-pt'] = "Aplicável se o provedor permitir o envio do nome do originador das chamadas. Omissão: anonymous";
$text['description-caller-id-name']['fr-fr'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du nom d'appelant. Par défaut: anonymous";
$text['description-caller-id-name']['pt-br'] = "Aplicar se o provedor ";
$text['description-caller-id-name']['pt-br'] = "Aplicável se o provedor de telefônia liberar o nome de quem está discando. Por padrão: anonymous (anônimo).";
$text['description-caller-id-name']['pl'] = "Zastosowane w przypadku jeżeli operator zezwala na prezentację nazwy. Standardowo prezentacja jest w formacie: 0000000000";
$text['description-caller-id-name']['sv-se'] = "Gäller om leverantör tillåter att Caller ID namn skickas. Standard: anonymous";
$text['description-caller-id-name']['uk'] = "Стосується, якщо постачальник, дозволяє надсилати ім’я абонента (Caller ID Ім’я). За замовчуванням: anonymous";
@@ -300,7 +267,7 @@ $text['description-avmd']['en-us'] = "Select whether to enable or disable the de
$text['description-avmd']['es-cl'] = "Seleccione si desea activar o desactivar la detección de sistemas de contestador automático de mensajes de correo de voz y.";
$text['description-avmd']['pt-pt'] = "Selecione se deseja ativar ou desativar a detecção de mensagens de correio de voz e sistemas de secretária eletrônica.";
$text['description-avmd']['fr-fr'] = "Indiquez si vous souhaitez activer ou désactiver la détection de la messagerie vocale et les systèmes de machines de répondeur.";
$text['description-avmd']['pt-br'] = "Selecione se deseja ativar ou desativar a detecção de mensagens de correio de voz e sistemas de secretária eletrônica. ";
$text['description-avmd']['pt-br'] = "Selecione se deseja ativar ou desativar a detecção de mensagens de correio de voz e sistemas de secretária eletrônica.";
$text['description-avmd']['pl'] = "Wybierz, czy chcesz włączyć lub wyłączyć wykrywanie wiadomości poczty głosowej lub innych systemów automatycznego odbierania rozmów.";
$text['description-avmd']['sv-se'] = "Välj om deteketering av röstbrevlåda skall användas.";
$text['description-avmd']['uk'] = "Виберіть, чи слід включити або відключити виявлення повідомлень голосової пошти і систему автовідповідача.";
@@ -322,7 +289,7 @@ $text['confirm-name']['en-us'] = "Please provide: Name";
$text['confirm-name']['es-cl'] = "Por favor agregue: Nombre";
$text['confirm-name']['pt-pt'] = "Por favor indique: Nome";
$text['confirm-name']['fr-fr'] = "Merci d'indiquer: Nom";
$text['confirm-name']['pt-br'] = "Por favor indique: Nome";
$text['confirm-name']['pt-br'] = "Por favor insira: Nome";
$text['confirm-name']['pl'] = "Wprowadź: Nazwę";
$text['confirm-name']['sv-se'] = "Ange: Namn";
$text['confirm-name']['uk'] = "Введіть назву";
@@ -340,17 +307,6 @@ $text['confirm-delete-info']['uk'] = "Ви дійсно бажаєте це ви
$text['confirm-delete-info']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['he'] = "";
$text['confirm-delete']['en-us'] = "Delete Complete";
$text['confirm-delete']['es-cl'] = "Eliminación Completa";
$text['confirm-delete']['pt-pt'] = "Remoção Efectuada";
$text['confirm-delete']['fr-fr'] = "Supprimé";
$text['confirm-delete']['pt-br'] = "Deseja realmente remover isto?";
$text['confirm-delete']['pl'] = "Usunięto poprawnie";
$text['confirm-delete']['sv-se'] = "Borttagning Klar";
$text['confirm-delete']['uk'] = "Видалено";
$text['confirm-delete']['de-at'] = "Erfolgreich gelöscht";
$text['confirm-delete']['he'] = "";
$text['confirm-add']['en-us'] = "Add Complete";
$text['confirm-add']['es-cl'] = "Ingreso Completo";
$text['confirm-add']['pt-pt'] = "Adição Efectuada";
@@ -384,48 +340,4 @@ $text['button-send']['uk'] = "Транслювати";
$text['button-send']['de-at'] = "Senden";
$text['button-send']['he'] = "נשלח";
$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']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['de-at'] = "Speichern";
$text['button-save']['he'] = "שמור";
$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']['pl'] = "Edytuj";
$text['button-edit']['sv-se'] = "Editera";
$text['button-edit']['uk'] = "Редагувати";
$text['button-edit']['de-at'] = "Bearbeiten";
$text['button-edit']['he'] = "";
$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']['pl'] = "Usuń";
$text['button-delete']['sv-se'] = "Ta Bort";
$text['button-delete']['uk'] = "Видалити";
$text['button-delete']['de-at'] = "Löschen";
$text['button-delete']['he'] = "";
$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']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$text['button-back']['he'] = "חזרה";
?>
+2 -2
View File
@@ -62,7 +62,7 @@ else {
$num_rows = count($result);
unset ($prep_statement, $result, $sql);
$rows_per_page = 10;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -129,7 +129,7 @@ else {
echo "<tr>\n";
echo "<td colspan='5' align='left'>\n";
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <tr class='tr_link_void'>\n";
echo " <td width='33.3%' nowrap>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
echo " <td class='list_control_icons'>";
+2 -2
View File
@@ -65,7 +65,7 @@ else {
if (if_group("superadmin")){
$broadcast_accountcode = check_str($_POST["broadcast_accountcode"]);
}
elseif (if_group("admin") && file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/billing/app_config.php")){
elseif (if_group("admin") && file_exists($_SERVER["PROJECT_ROOT"]."/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();
@@ -277,7 +277,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
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")){
}elseif (if_group("admin") && file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){
$sql_accountcode = "SELECT type_value FROM v_billings WHERE domain_uuid = '".$_SESSION['domain_uuid']."'";
echo "<tr>\n";
+7 -7
View File
@@ -242,7 +242,7 @@ 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 "<tr>\n";
echo " <td align=\"center\">\n";
echo " <br>";
@@ -260,10 +260,10 @@ require_once "resources/header.php";
$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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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);
@@ -335,20 +335,20 @@ require_once "resources/header.php";
//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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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."'\";";
$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']."/".$_SESSION['domain_name']."/".$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);
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$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']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "Mostra as chamadas ativas, e os agentes na fila do Call Center.";
//permission details
$apps[$x]['permissions'][0]['name'] = "call_center_active_view";
+16 -60
View File
@@ -4,7 +4,7 @@ $text['title-call_center_queue_activity']['en-us'] = "Call Center Queue Activity
$text['title-call_center_queue_activity']['es-cl'] = "Actividad de Cola del Centro de Llamados";
$text['title-call_center_queue_activity']['fr-fr'] = "Activité des files d'attente du centre d'appel";
$text['title-call_center_queue_activity']['pt-pt'] = "Actividade das filas do Call Center";
$text['title-call_center_queue_activity']['pt-br'] = "Atividade das filas do call center";
$text['title-call_center_queue_activity']['pt-br'] = "Atividade das filas do Call Center";
$text['title-call_center_queue_activity']['pl'] = "Aktywność kolejek w Call Center ";
$text['title-call_center_queue_activity']['sv-se'] = "Call Center Grupp Aktivitet";
$text['title-call_center_queue_activity']['de-at'] = "Callcenter Warteschlangen Aktivität";
@@ -15,7 +15,7 @@ $text['title-active_call_center']['en-us'] = "Active Call Center";
$text['title-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['title-active_call_center']['fr-fr'] = "Centre d'appel Actif";
$text['title-active_call_center']['pt-pt'] = "Atividade do Call Center";
$text['title-active_call_center']['pt-br'] = "Atividade do callcenter";
$text['title-active_call_center']['pt-br'] = "Atividade do Call Center";
$text['title-active_call_center']['pl'] = "Aktywność w Call Center ";
$text['title-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['title-active_call_center']['de-at'] = "Aktive Callcenter";
@@ -36,7 +36,7 @@ $text['message-confirm']['he'] = "";
$text['label-waiting']['en-us'] = "Waiting";
$text['label-waiting']['es-cl'] = "Esperando";
$text['label-waiting']['fr-fr'] = "d'attente";
$text['label-waiting']['pt-pt'] = "Espera";
$text['label-waiting']['pt-pt'] = "Esperando";
$text['label-waiting']['pt-br'] = "Esperar";
$text['label-waiting']['pl'] = "Oczekiwanie";
$text['label-waiting']['sv-se'] = "Väntar";
@@ -47,7 +47,7 @@ $text['label-waiting']['he'] = "";
$text['label-trying']['en-us'] = "Trying";
$text['label-trying']['es-cl'] = "Intentando";
$text['label-trying']['fr-fr'] = "d'essais";
$text['label-trying']['pt-pt'] = "Tentar";
$text['label-trying']['pt-pt'] = "Tentando";
$text['label-trying']['pt-br'] = "Tentando";
$text['label-trying']['pl'] = "Próba";
$text['label-trying']['sv-se'] = "Försöker";
@@ -59,7 +59,7 @@ $text['label-transfer']['en-us'] = "Transfer";
$text['label-transfer']['es-cl'] = "Transferir";
$text['label-transfer']['fr-fr'] = "Transfert";
$text['label-transfer']['pt-pt'] = "Transferir";
$text['label-transfer']['pt-br'] = "Tranferência";
$text['label-transfer']['pt-br'] = "Transferir";
$text['label-transfer']['pl'] = "Transferowanie";
$text['label-transfer']['sv-se'] = "Överför";
$text['label-transfer']['de-at'] = "Weiterleiten";
@@ -103,7 +103,7 @@ $text['label-tier_rules_apply']['en-us'] = "Tier Rules Apply";
$text['label-tier_rules_apply']['es-cl'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['fr-fr'] = "Appliquer les règles du Niveau";
$text['label-tier_rules_apply']['pt-pt'] = "Aplicar as Regras do Nível";
$text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nivel";
$text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nível";
$text['label-tier_rules_apply']['pl'] = "Zastosuj zasadę poziomów";
$text['label-tier_rules_apply']['sv-se'] = "Kunskap Regler Gäller";
$text['label-tier_rules_apply']['de-at'] = "Ebenen Regeln werden angewendet";
@@ -114,7 +114,7 @@ $text['label-tier_rule_wait_second']['en-us'] = "Tier Rule Wait Second";
$text['label-tier_rule_wait_second']['es-cl'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['fr-fr'] = "Attente en secondes de la règle du Niveau";
$text['label-tier_rule_wait_second']['pt-pt'] = "Regra de nível segundo espera";
$text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nivel de espera";
$text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nível de espera";
$text['label-tier_rule_wait_second']['pl'] = "Poziomowa zasada czekania";
$text['label-tier_rule_wait_second']['sv-se'] = "Kunskap Regel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['de-at'] = "Ebenen Regel Wartezeit";
@@ -125,7 +125,7 @@ $text['label-tier_rule_wait_multiply_level']['en-us'] = "Tier Rule Wait Multiply
$text['label-tier_rule_wait_multiply_level']['es-cl'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['fr-fr'] = "Règle d'attente multipliée par Niveau";
$text['label-tier_rule_wait_multiply_level']['pt-pt'] = "Regra de nível de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multiplicado pelo nivel";
$text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['pl'] = "Poziomowa zasada przemnożenia";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Kunskap Regel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['de-at'] = "Ebenen Regel Wartezeit Multiplikator Level";
@@ -136,7 +136,7 @@ $text['label-tier_rule_no_agent_no_wait']['en-us'] = "Tier Rule No Agent No Wait
$text['label-tier_rule_no_agent_no_wait']['es-cl'] = "Regla de Nivel sin Agente sin Espera";
$text['label-tier_rule_no_agent_no_wait']['fr-fr'] = "Règle du Niveau Pas d'agent, pas d'attente";
$text['label-tier_rule_no_agent_no_wait']['pt-pt'] = "Regra de Nível Sem Agente Sem Espera";
$text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nivel sem espera do agente";
$text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nível sem espera do agente";
$text['label-tier_rule_no_agent_no_wait']['pl'] = "Zasada poziomowa - nie ma agentów, nie ma czekania";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Kunskap Regel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['de-at'] = "Ebenen Regel kein Agent nicht warten";
@@ -224,7 +224,7 @@ $text['label-record_template']['en-us'] = "Record Template";
$text['label-record_template']['es-cl'] = "Plantilla de Grabación";
$text['label-record_template']['fr-fr'] = "Modèle d'enregistrement";
$text['label-record_template']['pt-pt'] = "Gravar template";
$text['label-record_template']['pt-br'] = "Gravar";
$text['label-record_template']['pt-br'] = "Modelo de gravação";
$text['label-record_template']['pl'] = "Nagraj";
$text['label-record_template']['sv-se'] = "Spela In Mall";
$text['label-record_template']['de-at'] = "Aufnahme Vorlage";
@@ -275,17 +275,6 @@ $text['label-number']['de-at'] = "Nummer";
$text['label-number']['ar-eg'] = "رقم";
$text['label-number']['he'] = "מספר";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['de-at'] = "Name";
$text['label-name']['ar-eg'] = "الأسم";
$text['label-name']['he'] = "שם";
$text['label-music_on_hold']['en-us'] = "Music on Hold";
$text['label-music_on_hold']['es-cl'] = "Musica en Espera";
$text['label-music_on_hold']['fr-fr'] = "Musique de Garde";
@@ -312,7 +301,7 @@ $text['label-max_wait_time_with_no_agent']['en-us'] = "Max Wait Time with No Age
$text['label-max_wait_time_with_no_agent']['es-cl'] = "Tiempo Máximo de Espera sin Agente";
$text['label-max_wait_time_with_no_agent']['fr-fr'] = "Max d'attente sans Agent";
$text['label-max_wait_time_with_no_agent']['pt-pt'] = "Tempo máximo de espera sem agente";
$text['label-max_wait_time_with_no_agent']['pt-br'] = "Tempo máximo sem agente";
$text['label-max_wait_time_with_no_agent']['pt-br'] = "Tempo máximo de esoera sem agente";
$text['label-max_wait_time_with_no_agent']['pl'] = "Maks czas oczekiwania bez agenta";
$text['label-max_wait_time_with_no_agent']['sv-se'] = "Max Vänt Tid (Ingen Agent)";
$text['label-max_wait_time_with_no_agent']['de-at'] = "Maximale Wartezeit ohne Agent";
@@ -363,17 +352,6 @@ $text['label-discard_abandoned_after']['de-at'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['ar-eg'] = "";
$text['label-discard_abandoned_after']['he'] = "";
$text['label-description']['en-us'] = "Description";
$text['label-description']['es-cl'] = "Descripción";
$text['label-description']['fr-fr'] = "Description";
$text['label-description']['pt-pt'] = "Descrição";
$text['label-description']['pt-br'] = "Descrição";
$text['label-description']['pl'] = "Opis";
$text['label-description']['sv-se'] = "Beskrivning";
$text['label-description']['de-at'] = "Beschreibung";
$text['label-description']['ar-eg'] = "الوصف";
$text['label-description']['he'] = "תיאור";
$text['label-call']['en-us'] = "Call";
$text['label-call']['es-cl'] = "Llamar";
$text['label-call']['fr-fr'] = "Appel";
@@ -411,7 +389,7 @@ $text['label-abandoned_resume_allowed']['en-us'] = "Abandoned Resume Allowed";
$text['label-abandoned_resume_allowed']['es-cl'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['fr-fr'] = "Authoriser la reprise des abandonnés";
$text['label-abandoned_resume_allowed']['pt-pt'] = "Resume Autorizado";
$text['label-abandoned_resume_allowed']['pt-br'] = "Resumo autorizado";
$text['label-abandoned_resume_allowed']['pt-br'] = "Resumo abandonado permidito";
$text['label-abandoned_resume_allowed']['pl'] = "Odbieranie odrzuconych rozmów jest dozwolone";
$text['label-abandoned_resume_allowed']['sv-se'] = "Återuppta Övergivna Tillåtet";
$text['label-abandoned_resume_allowed']['de-at'] = "Wiederaufnahme nach Zurückweisung erlaubt";
@@ -433,7 +411,7 @@ $text['header-active_call_center']['en-us'] = "Active Call Center";
$text['header-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['header-active_call_center']['fr-fr'] = "Centre d'appel Actif";
$text['header-active_call_center']['pt-pt'] = "Atividade do Call Center";
$text['header-active_call_center']['pt-br'] = "Atividade do call center";
$text['header-active_call_center']['pt-br'] = "Atividade do Call Center";
$text['header-active_call_center']['pl'] = "Aktywność w Call Center ";
$text['header-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['header-active_call_center']['de-at'] = "Aktives Callcenter";
@@ -444,7 +422,7 @@ $text['description-queue']['en-us'] = "A current list of callers in the queue is
$text['description-queue']['es-cl'] = "Un listado de los llamantes en cola se muestra a continuación.";
$text['description-queue']['fr-fr'] = "Liste des appelants dans la file.";
$text['description-queue']['pt-pt'] = "Lista de chamadas na fila.";
$text['description-queue']['pt-br'] = "Lista de chamada na fila";
$text['description-queue']['pt-br'] = "Lista atual das chamadas em fila abaixo.";
$text['description-queue']['pl'] = "Aktualna lista rozmówców w kolejce jest poniżej .";
$text['description-queue']['sv-se'] = "Aktuell lista på köande samtal enligt nedan ";
$text['description-queue']['de-at'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
@@ -455,7 +433,7 @@ $text['description-agents']['en-us'] = "A current list of agents is below.";
$text['description-agents']['es-cl'] = "Un listado de los agentes actuales de muestra a continuación.";
$text['description-agents']['fr-fr'] = "Liste des agents";
$text['description-agents']['pt-pt'] = "Lista de agentes.";
$text['description-agents']['pt-br'] = "Lista de agentes";
$text['description-agents']['pt-br'] = "Lista dos atuais agentes abaixo.";
$text['description-agents']['pl'] = "Aktualna lista agentów jest poniżej ";
$text['description-agents']['sv-se'] = "Aktuell lista på Agenter enligt nedan";
$text['description-agents']['de-at'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
@@ -466,33 +444,11 @@ $text['description-active_call_center']['en-us'] = "Select a Call Center Queue f
$text['description-active_call_center']['es-cl'] = "Seleccione la Cola del Centro de Llamados desde el siguiente listado para ver su actividad.";
$text['description-active_call_center']['fr-fr'] = "Choisir une file d'attente dans la liste pour voir son activité.";
$text['description-active_call_center']['pt-pt'] = "Seleccione uma fila de Call Center a partir da lista em baixo para ver a sua actividade.";
$text['description-active_call_center']['pt-br'] = "Selecione uma fila de call center a partir da lista embaixo para ver a sua atividade";
$text['description-active_call_center']['pt-br'] = "Selecione uma fila de Call Center a partir da lista abaixo para ver a sua atividade.";
$text['description-active_call_center']['pl'] = "Aby zobaczyć aktywność kolejki w Call Center wybierz ja z poniższej listy.";
$text['description-active_call_center']['sv-se'] = "Välj en Call Center Grupp från listan nedan för att se dess aktivitet";
$text['description-active_call_center']['de-at'] = "Wählen Sie eine Callcenter Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['ar-eg'] = "";
$text['description-active_call_center']['he'] = "";
$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']['pl'] = "Widok";
$text['button-view']['sv-se'] = "Visa";
$text['button-view']['de-at'] = "Ansicht";
$text['button-view']['ar-eg'] = "عرض";
$text['button-view']['he'] = "תצוגה";
$text['button-edit']['en-us'] = "Edit";
$text['button-edit']['es-cl'] = "Editar";
$text['button-edit']['fr-fr'] = "Editer";
$text['button-edit']['pt-pt'] = "Editar";
$text['button-edit']['pt-br'] = "Editar";
$text['button-edit']['pl'] = "Edytuj";
$text['button-edit']['sv-se'] = "Editera";
$text['button-edit']['de-at'] = "Bearbeiten";
$text['button-edit']['ar-eg'] = "تعديل";
$text['button-edit']['he'] = "עריכה";
?>
+1 -1
View File
@@ -5,7 +5,7 @@ $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']['pt-br'] = "Call Center ativos";
$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";
+359 -360
View File
@@ -1,360 +1,359 @@
<?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>&nbsp;\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>&nbsp;\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>&nbsp;\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>&nbsp;\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>&nbsp;&nbsp;&nbsp;";
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b>&nbsp;&nbsp;&nbsp; ";
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."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_number."&nbsp;</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>&nbsp;\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>&nbsp;\n";
}
else {
echo "&nbsp;";
}
echo "</td>";
}
echo "<td valign='top' class='".$row_style[$c]."'>".$serving_agent."&nbsp;</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";
}
?>
<?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-2016
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;
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;
}
//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;
if (isset($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_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";
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']) {
$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>&nbsp;\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>&nbsp;\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>&nbsp;\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>&nbsp;\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, '|');
if (!is_array($result)) { unset($result); }
//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'>";
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>&nbsp;&nbsp;&nbsp;";
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b>&nbsp;&nbsp;&nbsp; ";
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";
if (isset($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;
//$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."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_number."&nbsp;</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>&nbsp;\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>&nbsp;\n";
}
else {
echo "&nbsp;";
}
echo "</td>";
}
echo "<td valign='top' class='".$row_style[$c]."'>".$serving_agent."&nbsp;</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";
}
?>
+100 -100
View File
@@ -1,100 +1,100 @@
<?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);
}
}
}
?>
<?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);
}
}
}
?>
+1 -1
View File
@@ -69,7 +69,7 @@ else {
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$num_rows = count($result);
unset ($prep_statement, $result, $sql);
$rows_per_page = 100;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$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']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "As filas servem para gerenciar as chamadas que entram e encaminhar as mesmas para os agentes disponíveis.";
//destination details
$y = 0;
+26 -67
View File
@@ -1,68 +1,27 @@
<?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);
}
}
<?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>
*/
?>
+84 -294
View File
@@ -5,7 +5,7 @@ $text['title-call_centers']['es-cl'] = "Centro de Llamadas";
$text['title-call_centers']['fr-fr'] = "Centre d'appel";
$text['title-call_centers']['fr-ca'] = "Centre d' appels";
$text['title-call_centers']['pt-pt'] = "Centro de Chamadas";
$text['title-call_centers']['pt-br'] = "Centro de chamadas";
$text['title-call_centers']['pt-br'] = "Call Center";
$text['title-call_centers']['pl'] = "Call Center ";
$text['title-call_centers']['sv-se'] = "Call Center";
$text['title-call_centers']['uk'] = "Кол-центр";
@@ -15,26 +15,26 @@ $text['title-call_center_tier_edit']['en-us'] = "Call Center Tier";
$text['title-call_center_tier_edit']['es-cl'] = "Editar Nivel de Centro de Llamados";
$text['title-call_center_tier_edit']['pt-pt'] = "Editar Nível do Call Center";
$text['title-call_center_tier_edit']['fr-fr'] = "Editer un Niveau du Centre d'Appel";
$text['title-call_center_tier_edit']['pt-br'] = "Editar nivel do call center";
$text['title-call_center_tier_edit']['pt-br'] = "Editar nível do Call Center";
$text['title-call_center_tier_edit']['pl'] = "Poziom w Call Center ";
$text['title-call_center_tier_edit']['sv-se'] = "Call Center Kunskap";
$text['title-call_center_tier_edit']['uk'] = "Рівень кол-центра";
$text['title-call_center_tier_edit']['de-at'] = "Callcenter Ebene";
$text['title-call_center_queues_edit']['en-us'] = "Edit Call Center Queue";
$text['title-call_center_queues_edit']['es-cl'] = "Editar Cola de Centro de Llamados";
$text['title-call_center_queues_edit']['pt-pt'] = "Editar Fila de Call Center";
$text['title-call_center_queues_edit']['en-us'] = "";
$text['title-call_center_queues_edit']['pt-br'] = "Editar fila de call center";
$text['title-call_center_queues_edit']['pt-br'] = "Editar fila de Call Center";
$text['title-call_center_queues_edit']['pl'] = "";
$text['title-call_center_queues_edit']['sv-se'] = "";
$text['title-call_center_queues_edit']['uk'] = "";
$text['title-call_center_queues_edit']['fr-fr'] = "";
$text['title-call_center_queues_edit']['de-at'] = "";
$text['title-call_center_queues_add']['en-us'] = "Add Call Center Queue";
$text['title-call_center_queues_add']['es-cl'] = "Agregar Cola de Centro de Llamados";
$text['title-call_center_queues_add']['pt-pt'] = "Adicionar Fila de Call Center";
$text['title-call_center_queues_add']['en-us'] = "";
$text['title-call_center_queues_add']['pt-br'] = "Adicionar fila de call center";
$text['title-call_center_queues_add']['pt-br'] = "Adicionar filas de Call Center";
$text['title-call_center_queues_add']['pl'] = "";
$text['title-call_center_queues_add']['sv-se'] = "";
$text['title-call_center_queues_add']['uk'] = "";
@@ -45,7 +45,7 @@ $text['title-call_center_queues']['en-us'] = "Call Center Queues";
$text['title-call_center_queues']['es-cl'] = "Colas de Centro de Llamados";
$text['title-call_center_queues']['pt-pt'] = "Filas de Call Center";
$text['title-call_center_queues']['fr-fr'] = "Queues du Centre d'appels";
$text['title-call_center_queues']['pt-br'] = "Filas de call center";
$text['title-call_center_queues']['pt-br'] = "Filas de Call Center";
$text['title-call_center_queues']['pl'] = "Kolejki w Call Center ";
$text['title-call_center_queues']['sv-se'] = "Call Center Kö:er";
$text['title-call_center_queues']['uk'] = "Черги кол-центра";
@@ -53,7 +53,7 @@ $text['title-call_center_queues']['de-at'] = "Callcenter Warteschlangen";
$text['title-call_center_queue_edit']['en-us'] = "Call Center Queue";
$text['title-call_center_queue_edit']['fr-fr'] = "Editer une Queue";
$text['title-call_center_queue_edit']['pt-br'] = "Call Center Queue";
$text['title-call_center_queue_edit']['pt-br'] = "Editar fila de Call Center";
$text['title-call_center_queue_edit']['pl'] = "Kolejka w Call Center ";
$text['title-call_center_queue_edit']['sv-se'] = "Call Center Kö";
$text['title-call_center_queue_edit']['uk'] = "Черга кол-центра";
@@ -63,7 +63,7 @@ $text['title-call_center_queue_edit']['de-at'] = "Callcenter Warteschlange";
$text['title-call_center_queue_add']['en-us'] = "Call Center Queue";
$text['title-call_center_queue_add']['fr-fr'] = "Ajouter une Queue";
$text['title-call_center_queue_add']['pt-br'] = "Call Center Queue";
$text['title-call_center_queue_add']['pt-br'] = "Adicionar fila ao Call Center";
$text['title-call_center_queue_add']['pl'] = "Kolejka w Call Center ";
$text['title-call_center_queue_add']['sv-se'] = "Call Center Kö";
$text['title-call_center_queue_add']['uk'] = "Черга кол-центра";
@@ -85,7 +85,7 @@ $text['title-call_center_agent_status']['en-us'] = "Call Center Agent Status";
$text['title-call_center_agent_status']['es-cl'] = "Estado de Agente de Centro de Llamados";
$text['title-call_center_agent_status']['pt-pt'] = "Estado do Agente do Call Center";
$text['title-call_center_agent_status']['fr-fr'] = "Etat de l'Agent";
$text['title-call_center_agent_status']['pt-br'] = "Estado do agente call center";
$text['title-call_center_agent_status']['pt-br'] = "Estado do agente do Call Center";
$text['title-call_center_agent_status']['pl'] = "Status agentów w Call Center";
$text['title-call_center_agent_status']['sv-se'] = "Call Center Agent Status";
$text['title-call_center_agent_status']['uk'] = "Статус оператора кол-центра";
@@ -95,7 +95,7 @@ $text['title-call_center_agent_edit']['en-us'] = "Call Center Agent";
$text['title-call_center_agent_edit']['es-cl'] = "Editar Agente de Centro de Llamados";
$text['title-call_center_agent_edit']['pt-pt'] = "Editar Agente do Call Center";
$text['title-call_center_agent_edit']['fr-fr'] = "Editer un Agent";
$text['title-call_center_agent_edit']['pt-br'] = "Editar agente do call center";
$text['title-call_center_agent_edit']['pt-br'] = "Editar agente do Call Center";
$text['title-call_center_agent_edit']['pl'] = "Agent w Call Center";
$text['title-call_center_agent_edit']['sv-se'] = "Call Center Agent";
$text['title-call_center_agent_edit']['uk'] = "Оператор кол-центра";
@@ -105,7 +105,7 @@ $text['title-call_center_agent_add']['en-us'] = "Call Center Agent";
$text['title-call_center_agent_add']['es-cl'] = "Agregar Agente de Centro de Llamados";
$text['title-call_center_agent_add']['pt-pt'] = "Adicionar Agente ao Call Center";
$text['title-call_center_agent_add']['fr-fr'] = "Ajouter un Agent";
$text['title-call_center_agent_add']['pt-br'] = "Adicionar agente ao call center";
$text['title-call_center_agent_add']['pt-br'] = "Adicionar agente ao Call Center";
$text['title-call_center_agent_add']['pl'] = "Agent w Call Center";
$text['title-call_center_agent_add']['sv-se'] = "Call Center Agent";
$text['title-call_center_agent_add']['uk'] = "Оператор кол-центра";
@@ -116,7 +116,7 @@ $text['title-call_center']['es-cl'] = "Centro de Llamadas";
$text['title-call_center']['fr-fr'] = "Centre d'appel";
$text['title-call_center']['fr-ca'] = "Centre d' appels";
$text['title-call_center']['pt-pt'] = "Centro de Chamadas";
$text['title-call_center']['pt-br'] = "Centro de chamadas";
$text['title-call_center']['pt-br'] = "Call Center";
$text['title-call_center']['pl'] = "Call Center ";
$text['title-call_center']['sv-se'] = "Call Center";
$text['title-call_center']['uk'] = "Кол-центр";
@@ -126,7 +126,7 @@ $text['option-usring']['en-us'] = "us-ring";
$text['option-usring']['es-cl'] = "us-ring";
$text['option-usring']['pt-pt'] = "us-ring";
$text['option-usring']['fr-fr'] = "us-ring";
$text['option-usring']['pt-br'] = "USRing";
$text['option-usring']['pt-br'] = "us-ring";
$text['option-usring']['pl'] = "us-ring";
$text['option-usring']['sv-se'] = "us-ring";
$text['option-usring']['uk'] = "us-ring ";
@@ -136,7 +136,7 @@ $text['option-ukring']['en-us'] = "uk-ring";
$text['option-ukring']['es-cl'] = "uk-ring";
$text['option-ukring']['pt-pt'] = "uk-ring";
$text['option-ukring']['fr-fr'] = "uk-ring";
$text['option-ukring']['pt-br'] = "UKRing";
$text['option-ukring']['pt-br'] = "uk-ring";
$text['option-ukring']['pl'] = "uk-ring";
$text['option-ukring']['sv-se'] = "uk-ring";
$text['option-ukring']['uk'] = "uk-ring ";
@@ -196,7 +196,7 @@ $text['option-rsring']['en-us'] = "rs-ring";
$text['option-rsring']['es-cl'] = "rs-ring";
$text['option-rsring']['pt-pt'] = "rs-ring";
$text['option-rsring']['fr-fr'] = "rs-ring";
$text['option-rsring']['pt-br'] = "RSRing";
$text['option-rsring']['pt-br'] = "rs-ring";
$text['option-rsring']['pl'] = "rs-ring";
$text['option-rsring']['sv-se'] = "rs-ring";
$text['option-rsring']['uk'] = "rs-ring";
@@ -245,7 +245,7 @@ $text['option-queue']['de-at'] = "Warteschlange";
$text['option-ptring']['en-us'] = "pt-ring";
$text['option-ptring']['pt-pt'] = "pt-ring";
$text['option-ptring']['fr-fr'] = "pt-ring";
$text['option-ptring']['pt-br'] = "PTRing";
$text['option-ptring']['pt-br'] = "pt-ring";
$text['option-ptring']['pl'] = "pt-ring";
$text['option-ptring']['sv-se'] = "pt-ring";
$text['option-ptring']['uk'] = "pt-ring";
@@ -286,7 +286,7 @@ $text['option-logged_out']['en-us'] = "Logged Out";
$text['option-logged_out']['es-cl'] = "Desconectado";
$text['option-logged_out']['pt-pt'] = "Desconectado";
$text['option-logged_out']['fr-fr'] = "Déconnecté";
$text['option-logged_out']['pt-br'] = "Desligado";
$text['option-logged_out']['pt-br'] = "Desconectado";
$text['option-logged_out']['pl'] = "Wylogowany";
$text['option-logged_out']['sv-se'] = "Utloggad";
$text['option-logged_out']['uk'] = "Вийшов";
@@ -296,7 +296,7 @@ $text['option-itring']['en-us'] = "it-ring";
$text['option-itring']['es-cl'] = "it-ring";
$text['option-itring']['pt-pt'] = "it-ring";
$text['option-itring']['fr-fr'] = "it-ring";
$text['option-itring']['pt-br'] = "ITRing";
$text['option-itring']['pt-br'] = "it_ring";
$text['option-itring']['pl'] = "it-ring";
$text['option-itring']['sv-se'] = "it-ring";
$text['option-itring']['uk'] = "it-ring ";
@@ -306,7 +306,7 @@ $text['option-frring']['en-us'] = "fr-ring";
$text['option-frring']['es-cl'] = "fr-ring";
$text['option-frring']['pt-pt'] = "fr-ring";
$text['option-frring']['fr-fr'] = "fr-ring";
$text['option-frring']['pt-br'] = "FRRing";
$text['option-frring']['pt-br'] = "fr-ring";
$text['option-frring']['pl'] = "fr-ring";
$text['option-frring']['sv-se'] = "fr-ring";
$text['option-frring']['uk'] = "fr-ring ";
@@ -326,7 +326,7 @@ $text['option-do_not_disturb']['en-us'] = "Do Not Disturb";
$text['option-do_not_disturb']['es-cl'] = "No Molestar";
$text['option-do_not_disturb']['pt-pt'] = "Não incomodar";
$text['option-do_not_disturb']['fr-fr'] = "Ne Pas Derranger";
$text['option-do_not_disturb']['pt-br'] = "Não perturbe";
$text['option-do_not_disturb']['pt-br'] = "Não perturbe (DND)";
$text['option-do_not_disturb']['pl'] = "Nie przeszkadzaj (DND)";
$text['option-do_not_disturb']['sv-se'] = "Stör Ej";
$text['option-do_not_disturb']['uk'] = "Не турбувати";
@@ -336,7 +336,7 @@ $text['option-available_on_demand']['en-us'] = "Available (On Demand)";
$text['option-available_on_demand']['es-cl'] = "Disponible (Bajo Demanda)";
$text['option-available_on_demand']['pt-pt'] = "Disponível (On Demand)";
$text['option-available_on_demand']['fr-fr'] = "Disponible (Sur Demande)";
$text['option-available_on_demand']['pt-br'] = "Disponivel (A pedido)";
$text['option-available_on_demand']['pt-br'] = "Disponível (Sob demanda)";
$text['option-available_on_demand']['pl'] = "Dostępny (na żądanie)";
$text['option-available_on_demand']['sv-se'] = "Tillgänglig (På Begäran)";
$text['option-available_on_demand']['uk'] = "Доступний (на вимогу)";
@@ -372,31 +372,11 @@ $text['option-agent_with_fewest_calls']['sv-se'] = "Agent med minst antal samtal
$text['option-agent_with_fewest_calls']['uk'] = "Оператор з найменшою кількістю дзвінків";
$text['option-agent_with_fewest_calls']['de-at'] = "Agent mit wenigsten Anrufen";
$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']['pl'] = "Zaktualizowano poprawnie";
$text['message-update']['sv-se'] = "Uppdatering Klar";
$text['message-update']['uk'] = "Оновлення завершено";
$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
$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']['pl'] = "Wpisz:";
$text['message-required']['sv-se'] = "Var god uppge:";
$text['message-required']['uk'] = "Будь ласка, вкажіть:";
$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
$text['message-maximum_queues']['en-us'] = "Maximum Queues:";
$text['message-maximum_queues']['es-cl'] = "Colas Máximo Permitido:";
$text['message-maximum_queues']['pt-pt'] = "Filas Máximo Permitido:";
$text['message-maximum_queues']['fr-fr'] = "Files d'attente Maximum Autorisé:";
$text['message-maximum_queues']['pt-br'] = "Máximo de filas permitido";
$text['message-maximum_queues']['pt-br'] = "Máximo de filas permitido:";
$text['message-maximum_queues']['pl'] = "Maksymalna ilość kolejek:";
$text['message-maximum_queues']['sv-se'] = "Max Antal Kö:er:";
$text['message-maximum_queues']['uk'] = "Максимальна кількість черг:";
@@ -406,42 +386,12 @@ $text['message-duplicate_agent_id']['en-us'] = "Duplicate Agent ID Detected";
$text['message-duplicate_agent_id']['es-cl'] = "Duplicar ID de Agente detectada";
$text['message-duplicate_agent_id']['pt-pt'] = "Duplicar Agent ID Detectado";
$text['message-duplicate_agent_id']['fr-fr'] = "Dupliquer Agent ID détecté";
$text['message-duplicate_agent_id']['pt-br'] = "Duplicar Agent ID Detectado";
$text['message-duplicate_agent_id']['pt-br'] = "Duplicar ID do agente detectado";
$text['message-duplicate_agent_id']['pl'] = "Duplikat Wykryto Agenta ID";
$text['message-duplicate_agent_id']['uk'] = "Повторювані Ідентифікатор агента Виявлено";
$text['message-duplicate_agent_id']['sv-se'] = "Duplicate Agent-ID Funnet";
$text['message-duplicate_agent_id']['de-at'] = "Agenten ID bereits vorhanden";
$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']['pl'] = "Usunięto poprawnie";
$text['message-delete']['sv-se'] = "Borttagning Klar";
$text['message-delete']['uk'] = "Видалено";
$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
$text['message-copy']['en-us'] = "Copy Completed";
$text['message-copy']['es-cl'] = "Copia Realizada";
$text['message-copy']['pt-pt'] = "Cópia Efectuada";
$text['message-copy']['fr-fr'] = "Copié";
$text['message-copy']['pt-br'] = "Cópia Efetuada";
$text['message-copy']['pl'] = "Skopiowano poprawnie";
$text['message-copy']['sv-se'] = "Kopiering Slutförd";
$text['message-copy']['uk'] = "Скопійовано";
$text['message-copy']['de-at'] = "Erfolgreich kopiert";
$text['message-add']['en-us'] = "Add Completed";
$text['message-add']['es-cl'] = "Adición Completada";
$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']['pl'] = "Dodano poprawnie";
$text['message-add']['sv-se'] = "Tillagd";
$text['message-add']['uk'] = "Додано";
$text['message-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['label-wrap_up_time']['en-us'] = "Wrap Up Time";
$text['label-wrap_up_time']['es-cl'] = "Tiempo de Preparación";
$text['label-wrap_up_time']['pt-pt'] = "Tempo de preparação";
@@ -486,7 +436,7 @@ $text['label-tiers']['en-us'] = "Tiers";
$text['label-tiers']['es-cl'] = "Niveles de Centro de Llamados";
$text['label-tiers']['pt-pt'] = "Níveis do Call Center";
$text['label-tiers']['fr-fr'] = "Niveaux du Centre d'Appel";
$text['label-tiers']['pt-br'] = "Niveis do call center";
$text['label-tiers']['pt-br'] = "Niveis do Call Center";
$text['label-tiers']['pl'] = "Poziomy";
$text['label-tiers']['sv-se'] = "Kunskap";
$text['label-tiers']['uk'] = "";
@@ -496,7 +446,7 @@ $text['label-tier_rules_apply']['en-us'] = "Tier Rules Apply";
$text['label-tier_rules_apply']['es-cl'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['pt-pt'] = "Aplicar Regras de Nível";
$text['label-tier_rules_apply']['fr-fr'] = "Appliquer la Règle du Niveau";
$text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nivel";
$text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nível";
$text['label-tier_rules_apply']['pl'] = "Zastosuj zasadę poziomów";
$text['label-tier_rules_apply']['sv-se'] = "Kunskap Regler Gäller";
$text['label-tier_rules_apply']['uk'] = "";
@@ -506,7 +456,7 @@ $text['label-tier_rule_wait_second']['en-us'] = "Tier Rule Wait Second";
$text['label-tier_rule_wait_second']['es-cl'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['pt-pt'] = "Regra de nível segundo espera";
$text['label-tier_rule_wait_second']['fr-fr'] = "Attente, en seconde, de la Règle du Tier";
$text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nivel de espera";
$text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nível de espera";
$text['label-tier_rule_wait_second']['pl'] = "Poziomowa zasada czekania";
$text['label-tier_rule_wait_second']['sv-se'] = "Kunskap Regel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['uk'] = "";
@@ -516,7 +466,7 @@ $text['label-tier_rule_wait_multiply_level']['en-us'] = "Tier Rule Wait Multiply
$text['label-tier_rule_wait_multiply_level']['es-cl'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['pt-pt'] = "Regra de nível de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['fr-fr'] = "Règle d'Attente du Niveau Multipliée par Niveau";
$text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multiplicado pelo nivel";
$text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['pl'] = "Poziomowa zasada przemnożenia";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Kunskap Regel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['uk'] = "";
@@ -526,7 +476,7 @@ $text['label-tier_rule_no_agent_no_wait']['en-us'] = "Tier Rule No Agent No Wait
$text['label-tier_rule_no_agent_no_wait']['es-cl'] = "Regla de nivel No espera Sin Agente";
$text['label-tier_rule_no_agent_no_wait']['pt-pt'] = "Regra de Nível Sem agente Sem espera";
$text['label-tier_rule_no_agent_no_wait']['fr-fr'] = "Règle du Niveau Pas d'Agent, Pas d'attente";
$text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nivel sem espera do agente";
$text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nível sem espera sem agente";
$text['label-tier_rule_no_agent_no_wait']['pl'] = "Zasada poziomowa - nie ma agentów, nie ma czekania";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Kunskap Regel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['uk'] = "";
@@ -536,7 +486,7 @@ $text['label-tier_position']['en-us'] = "Tier Position";
$text['label-tier_position']['es-cl'] = "Posición de Nivel";
$text['label-tier_position']['pt-pt'] = "Posição no Nível";
$text['label-tier_position']['fr-fr'] = "Position du Niveau";
$text['label-tier_position']['pt-br'] = "Nivel da posição";
$text['label-tier_position']['pt-br'] = "Nível da posição";
$text['label-tier_position']['pl'] = "Pozycja poziomu";
$text['label-tier_position']['sv-se'] = "Kunskap Position";
$text['label-tier_position']['uk'] = "";
@@ -546,7 +496,7 @@ $text['label-tier_level']['en-us'] = "Tier Level";
$text['label-tier_level']['es-cl'] = "Nivel";
$text['label-tier_level']['pt-pt'] = "Nível da Camada";
$text['label-tier_level']['fr-fr'] = "Niveau";
$text['label-tier_level']['pt-br'] = "Nivel da camada";
$text['label-tier_level']['pt-br'] = "Nível da camada";
$text['label-tier_level']['pl'] = "Tier Level ";
$text['label-tier_level']['sv-se'] = "Kunskap Nivå";
$text['label-tier_level']['uk'] = "";
@@ -626,7 +576,7 @@ $text['label-music_on_hold']['en-us'] = "Music on Hold";
$text['label-music_on_hold']['es-cl'] = "Música en Espera";
$text['label-music_on_hold']['pt-pt'] = "Música em Espera";
$text['label-music_on_hold']['fr-fr'] = "Mise de Garde";
$text['label-music_on_hold']['pt-br'] = "Música de espera";
$text['label-music_on_hold']['pt-br'] = "Música em espera";
$text['label-music_on_hold']['pl'] = "Muzyka na czekanie";
$text['label-music_on_hold']['sv-se'] = "Väntmusik";
$text['label-music_on_hold']['uk'] = "Мелодія на утримуванні";
@@ -686,27 +636,17 @@ $text['label-discard_abandoned_after']['en-us'] = "Discard Abandoned After";
$text['label-discard_abandoned_after']['es-cl'] = "Descartar Abandono Despues de";
$text['label-discard_abandoned_after']['pt-pt'] = "Rejeição abandonada depois";
$text['label-discard_abandoned_after']['fr-fr'] = "Ecarter les Abandons fait Après";
$text['label-discard_abandoned_after']['pt-br'] = "Rejeição abandonada depois";
$text['label-discard_abandoned_after']['pt-br'] = "Descartar depois de abandonado";
$text['label-discard_abandoned_after']['pl'] = "Odrzuć opuszczoną rozmowę po";
$text['label-discard_abandoned_after']['sv-se'] = "Uteslut Ej Besvarat Efter";
$text['label-discard_abandoned_after']['uk'] = "";
$text['label-discard_abandoned_after']['de-at'] = "Zurückweisen nach Abwurf";
$text['label-description']['en-us'] = "Description";
$text['label-description']['es-cl'] = "Descripción";
$text['label-description']['pt-pt'] = "Descrição";
$text['label-description']['fr-fr'] = "Description";
$text['label-description']['pt-br'] = "Descrição";
$text['label-description']['pl'] = "Opis";
$text['label-description']['sv-se'] = "Beskrivning";
$text['label-description']['uk'] = "Опис";
$text['label-description']['de-at'] = "Beschreibung";
$text['label-default_status']['en-us'] = "Default Status";
$text['label-default_status']['es-cl'] = "Estado Predeterminado";
$text['label-default_status']['pt-pt'] = "Estado Predeterminado";
$text['label-default_status']['fr-fr'] = "Statut Prédéterminée";
$text['label-default_status']['pt-br'] = "Estado Predeterminado";
$text['label-default_status']['pt-br'] = "Estado Padrão";
$text['label-default_status']['pl'] = "z góry określony status";
$text['label-default_status']['sv-se'] = "i förväg fastställda status";
$text['label-default_status']['uk'] = "Статус за замовчуванням";
@@ -733,7 +673,7 @@ $text['label-caller_id_name_prefix']['uk'] = "";
$text['label-caller_id_name_prefix']['de-at'] = "Anruferkennung (Name) Prefix";
$text['label-caller_announce_sound']['en-us'] = "Announce Sound";
$text['label-caller_announce_sound']['pt-br'] = "Som Anuncie";
$text['label-caller_announce_sound']['pt-br'] = "Som de anuncio";
$text['label-caller_announce_sound']['pl'] = "Zapowiedź głośowa";
$text['label-caller_announce_sound']['sv-se'] = "Meddelande Ljud";
$text['label-caller_announce_sound']['uk'] = "";
@@ -743,7 +683,7 @@ $text['label-caller_announce_sound']['fr-fr'] = "Annoncer Sonore";
$text['label-caller_announce_sound']['de-at'] = "Ankündigung Ton";
$text['label-caller_announce_frequency']['en-us'] = "Announce Frequency";
$text['label-caller_announce_frequency']['pt-br'] = "o Frequency Anuncie";
$text['label-caller_announce_frequency']['pt-br'] = "Frequência do anuncio";
$text['label-caller_announce_frequency']['pl'] = "Częstotliwość zapowiedzi";
$text['label-caller_announce_frequency']['sv-se'] = "Meddelande Frekvens";
$text['label-caller_announce_frequency']['uk'] = "";
@@ -754,7 +694,7 @@ $text['label-caller_announce_frequency']['de-at'] = "Ankündigung Häufigkeit";
$text['label-call_timeout']['en-us'] = "Call Timeout";
$text['label-call_timeout']['es-cl'] = "Timeout de Llamada";
$text['label-call_timeout']['pt-pt'] = "Timeout da chamada";
$text['label-call_timeout']['pt-pt'] = "Tempo limite da chamada";
$text['label-call_timeout']['fr-fr'] = "Timeout d'appel";
$text['label-call_timeout']['pt-br'] = "Timeout da chamada";
$text['label-call_timeout']['pl'] = "Limit czasu rozmowy";
@@ -776,7 +716,7 @@ $text['label-agent_password']['en-us'] = "Agent Password";
$text['label-agent_password']['es-cl'] = "Agente de Password";
$text['label-agent_password']['pt-pt'] = "Agente Senha";
$text['label-agent_password']['fr-fr'] = "Agent Mot de passe";
$text['label-agent_password']['pt-br'] = "Agente Senha";
$text['label-agent_password']['pt-br'] = "Agente de Senha";
$text['label-agent_password']['pl'] = "Środek Hasło";
$text['label-agent_password']['sv-se'] = "Środek Hasło";
$text['label-agent_password']['uk'] = "";
@@ -806,7 +746,7 @@ $text['label-agent_id']['en-us'] = "Agent ID";
$text['label-agent_id']['es-cl'] = "Agente de identidad";
$text['label-agent_id']['pt-pt'] = "Identidade Agent";
$text['label-agent_id']['fr-fr'] = "Identification Agent";
$text['label-agent_id']['pt-br'] = "Identidade Agent";
$text['label-agent_id']['pt-br'] = "Identidade do agente";
$text['label-agent_id']['pl'] = "Tożsamość agenta";
$text['label-agent_id']['sv-se'] = "Agent Identitet";
$text['label-agent_id']['uk'] = "";
@@ -826,7 +766,7 @@ $text['label-abandoned_resume_allowed']['en-us'] = "Abandoned Resume Allowed";
$text['label-abandoned_resume_allowed']['es-cl'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['pt-pt'] = "Resume Autorizado";
$text['label-abandoned_resume_allowed']['fr-fr'] = "Recupération Permise des Abandons";
$text['label-abandoned_resume_allowed']['pt-br'] = "Resumo autorizado";
$text['label-abandoned_resume_allowed']['pt-br'] = "Resumo de abandonos autorizados";
$text['label-abandoned_resume_allowed']['pl'] = "Odbieranie odrzuconych rozmów jest dozwolone";
$text['label-abandoned_resume_allowed']['sv-se'] = "Återuppta Ej Besvarade Tillåtet";
$text['label-abandoned_resume_allowed']['uk'] = "";
@@ -836,7 +776,7 @@ $text['header-call_center_tier_edit']['en-us'] = "Call Center Tier";
$text['header-call_center_tier_edit']['es-cl'] = "Editar Nivel de Centro de Llamados";
$text['header-call_center_tier_edit']['pt-pt'] = "Editar Nível do Call Center";
$text['header-call_center_tier_edit']['fr-fr'] = "Editer un Niveau du Centre d'Appel";
$text['header-call_center_tier_edit']['pt-br'] = "Editar nivel do call center";
$text['header-call_center_tier_edit']['pt-br'] = "Editar nível do Call Center";
$text['header-call_center_tier_edit']['pl'] = "Poziom w Call Center ";
$text['header-call_center_tier_edit']['sv-se'] = "Call Center Kunskap";
$text['header-call_center_tier_edit']['uk'] = "";
@@ -866,7 +806,7 @@ $text['header-call_center_queue_add']['en-us'] = "Call Center Queue";
$text['header-call_center_queue_add']['es-cl'] = "Agregar Cola de Centro de Llamados";
$text['header-call_center_queue_add']['pt-pt'] = "Adicionar Fila ao Call Center";
$text['header-call_center_queue_add']['fr-fr'] = "Ajouter une Queue";
$text['header-call_center_queue_add']['pt-br'] = "Adicionar fila ao call center";
$text['header-call_center_queue_add']['pt-br'] = "Adicionar fila ao Call Center";
$text['header-call_center_queue_add']['pl'] = "Kolejka w Call Center ";
$text['header-call_center_queue_add']['sv-se'] = "Call Center Kö";
$text['header-call_center_queue_add']['uk'] = "";
@@ -876,7 +816,7 @@ $text['header-call_center_agents']['en-us'] = "Call Center Agents";
$text['header-call_center_agents']['es-cl'] = "Agentes de Centro de Llamados";
$text['header-call_center_agents']['pt-pt'] = "Agentes do Call Center";
$text['header-call_center_agents']['fr-fr'] = "Agents du Centre d'appels";
$text['header-call_center_agents']['pt-br'] = "Agentes do call center";
$text['header-call_center_agents']['pt-br'] = "Agentes do Call Center";
$text['header-call_center_agents']['pl'] = "Agenci w Call Center ";
$text['header-call_center_agents']['sv-se'] = "Call Center Agenter";
$text['header-call_center_agents']['uk'] = "";
@@ -886,7 +826,7 @@ $text['header-call_center_agent_status']['en-us'] = "Call Center Agent Status";
$text['header-call_center_agent_status']['es-cl'] = "Estado de Agente de Centro de Llamados";
$text['header-call_center_agent_status']['pt-pt'] = "Estado do Agente do Call Center";
$text['header-call_center_agent_status']['fr-fr'] = "Etat de l'agent du Centre d'Appel";
$text['header-call_center_agent_status']['pt-br'] = "Estado do agente do call center";
$text['header-call_center_agent_status']['pt-br'] = "Estado do agente do Call Center";
$text['header-call_center_agent_status']['pl'] = "Status agentów w Call Center ";
$text['header-call_center_agent_status']['sv-se'] = "Call Center Agent Status";
$text['header-call_center_agent_status']['uk'] = "";
@@ -896,7 +836,7 @@ $text['header-call_center_agent_edit']['en-us'] = "Call Center Agent";
$text['header-call_center_agent_edit']['es-cl'] = "Editar Agente de Centro de Llamados";
$text['header-call_center_agent_edit']['pt-pt'] = "Editar Agente do Call Center";
$text['header-call_center_agent_edit']['fr-fr'] = "Editer un agent du Centre d'Appel";
$text['header-call_center_agent_edit']['pt-br'] = "Editar agente do call center";
$text['header-call_center_agent_edit']['pt-br'] = "Editar agente do Call Center";
$text['header-call_center_agent_edit']['pl'] = "Agent w Call Center ";
$text['header-call_center_agent_edit']['sv-se'] = "Call Center Agent";
$text['header-call_center_agent_edit']['uk'] = "";
@@ -906,7 +846,7 @@ $text['header-call_center_agent_add']['en-us'] = "Call Center Agents";
$text['header-call_center_agent_add']['es-cl'] = "Agregar Agente de Centro de Llamados";
$text['header-call_center_agent_add']['pt-pt'] = "Adicionar Agente ao Call Center";
$text['header-call_center_agent_add']['fr-fr'] = "Ajouter un agent du Centre d'Appel";
$text['header-call_center_agent_add']['pt-br'] = "Adicionar agente ao call center";
$text['header-call_center_agent_add']['pt-br'] = "Adicionar agente ao Call Center";
$text['header-call_center_agent_add']['pl'] = "Agenci w Call Center ";
$text['header-call_center_agent_add']['sv-se'] = "Call Center Agenter";
$text['header-call_center_agent_add']['uk'] = "";
@@ -916,7 +856,7 @@ $text['description-wrap_up_time']['en-us'] = "Enter the wrap up time.";
$text['description-wrap_up_time']['es-cl'] = "Introduzca el tiempo de preparación.";
$text['description-wrap_up_time']['pt-pt'] = "Introduza o tempo de preparação.";
$text['description-wrap_up_time']['fr-fr'] = "choisir le temps de wrap up.";
$text['description-wrap_up_time']['pt-br'] = "Insira o tempo de preparação";
$text['description-wrap_up_time']['pt-br'] = "Insira o tempo de preparação.";
$text['description-wrap_up_time']['pl'] = "Wpisz dostępny czas po zakończeniu rozmowy";
$text['description-wrap_up_time']['sv-se'] = "Ange 'Wrap Up' tid.";
$text['description-wrap_up_time']['uk'] = "";
@@ -936,7 +876,7 @@ $text['description-timeout_action']['en-us'] = "Set the action to perform when t
$text['description-timeout_action']['es-cl'] = "Defina una acción a realizar cuando el tiempo máximo es alcanzado.";
$text['description-timeout_action']['pt-pt'] = "Defina a acção a realizar quando o tempo máximo de espera for atingido.";
$text['description-timeout_action']['fr-fr'] = "Choisir l'action à faire quand le temps max d'attente est atteint.";
$text['description-timeout_action']['pt-br'] = "Defina a ação para realizar quando o tempo máximo de espera for atingido";
$text['description-timeout_action']['pt-br'] = "Defina a ação para realizar quando o tempo máximo de espera for atingido.";
$text['description-timeout_action']['pl'] = "Ustaw operację do wykonania po osiągnięciu maks czas oczekiwania.";
$text['description-timeout_action']['sv-se'] = "Ange aktion som skall utföras när max vänttid är nådd.";
$text['description-timeout_action']['uk'] = "";
@@ -946,7 +886,7 @@ $text['description-time_base_score']['en-us'] = "Select the time base score.";
$text['description-time_base_score']['es-cl'] = "Seleccione el tiempo base";
$text['description-time_base_score']['pt-pt'] = "Seleccione o tempo base ";
$text['description-time_base_score']['fr-fr'] = "Sélection du score sur base de temps.";
$text['description-time_base_score']['pt-br'] = "Selecione o tempo base";
$text['description-time_base_score']['pt-br'] = "Selecione o tempo base.";
$text['description-time_base_score']['pl'] = "Wybierz wynik oparty na okresie czasowym";
$text['description-time_base_score']['sv-se'] = "Ange tids-baserad poäng.";
$text['description-time_base_score']['uk'] = "";
@@ -956,7 +896,7 @@ $text['description-tiers']['en-us'] = "Tiers assign agents to queues.";
$text['description-tiers']['es-cl'] = "Lista todos los niveles. Los niveles asignan agentes a las colas.";
$text['description-tiers']['pt-pt'] = "Lista todos os níveis. Os níveis atribuem agentes às filas.";
$text['description-tiers']['fr-fr'] = "Liste tous les Niveaux. Les Niveaux permettent d'affecter les agents aux queues.";
$text['description-tiers']['pt-br'] = "Listar todos os niveis. Os niveis atribuem agentes na fila";
$text['description-tiers']['pt-br'] = "Lista todos os níveis. Os níveis atribuem agentes na fila.";
$text['description-tiers']['pl'] = "Poziomy przypisują operatorów do usługi kolejkowania polaczeń";
$text['description-tiers']['sv-se'] = "Kunskap tilldelar agenter till kö:er.";
$text['description-tiers']['uk'] = "";
@@ -966,7 +906,7 @@ $text['description-tier_rules_apply']['en-us'] = "Set the tier rule rules apply
$text['description-tier_rules_apply']['es-cl'] = "Defina las reglas de nivel como verdaero o falso.";
$text['description-tier_rules_apply']['pt-pt'] = "Defina a regra de nível a verdadeiro ou falso.";
$text['description-tier_rules_apply']['fr-fr'] = "Choisir l'activation de la règle du Niveau à oui ou non.";
$text['description-tier_rules_apply']['pt-br'] = "Defina a regra de nivel verdadeira ou falso";
$text['description-tier_rules_apply']['pt-br'] = "Defina a regra de nível verdadeira ou falso.";
$text['description-tier_rules_apply']['pl'] = "Ustaw regułę poziomów za pomocą zwrotów TAK i NIE";
$text['description-tier_rules_apply']['sv-se'] = "Välj om Kunskap Regler Gäller skall vara sann/falsk.";
$text['description-tier_rules_apply']['uk'] = "";
@@ -976,7 +916,7 @@ $text['description-tier_rule_wait_second']['en-us'] = "Enter the tier rule wait
$text['description-tier_rule_wait_second']['es-cl'] = "Introduzca los segundos de espera de la regla de nivel.";
$text['description-tier_rule_wait_second']['pt-pt'] = "Introduza os segundos de espera da regra de nível.";
$text['description-tier_rule_wait_second']['fr-fr'] = "Entrer le temps d'attente du niveau en secondes.";
$text['description-tier_rule_wait_second']['pt-br'] = "Insira os segundos de espera para esse nivel";
$text['description-tier_rule_wait_second']['pt-br'] = "Insira os segundos de espera para esse nível.";
$text['description-tier_rule_wait_second']['pl'] = "Ustaw regułę poziomów – czas oczekiwania w sekundach";
$text['description-tier_rule_wait_second']['sv-se'] = "Ange kunskaps-regel vänt-tid (sekunder)";
$text['description-tier_rule_wait_second']['uk'] = "";
@@ -985,7 +925,7 @@ $text['description-tier_rule_wait_second']['de-at'] = "Geben Sie die Ebenen Rege
$text['description-tier_rule_wait_multiply_level']['en-us'] = "Set the tier rule wait multiply level to true or false.";
$text['description-tier_rule_wait_multiply_level']['pt-pt'] = "Defina a Regra de nível de espera multiplicado pelo nível.";
$text['description-tier_rule_wait_multiply_level']['fr-fr'] = "Choisir la multiplication du temps d'attente par niveau à oui ou non.";
$text['description-tier_rule_wait_multiply_level']['pt-br'] = "Defina a regra de nivel de espera multiplicado pelo nivel";
$text['description-tier_rule_wait_multiply_level']['pt-br'] = "Defina a regra de nível de espera multiplicado pelo nível.";
$text['description-tier_rule_wait_multiply_level']['pl'] = "Ustaw regułę poziomów – czas oczekiwania w wielu poziomach (TAK lub NIE)";
$text['description-tier_rule_wait_multiply_level']['sv-se'] = "Välj om 'kunskaps-regel vänt-tid' multiply nivå skall vara sann eller ej.";
$text['description-tier_rule_wait_multiply_level']['uk'] = "";
@@ -996,7 +936,7 @@ $text['description-tier_rule_no_agent_no_wait']['en-us'] = "Enter the tier rule
$text['description-tier_rule_no_agent_no_wait']['es-cl'] = "Introduzca la regla de nivel sin agente sin espera.";
$text['description-tier_rule_no_agent_no_wait']['pt-pt'] = "Introduza a regra sem agente sem espera.";
$text['description-tier_rule_no_agent_no_wait']['fr-fr'] = "Entrer la règle du niveau pas d'agent, pas d'attente.";
$text['description-tier_rule_no_agent_no_wait']['pt-br'] = "Insira a regra sem agente na espera";
$text['description-tier_rule_no_agent_no_wait']['pt-br'] = "Insira a regra sem agente na espera.";
$text['description-tier_rule_no_agent_no_wait']['pl'] = "Ustaw regułę poziomów – brak czasu oczekiwania w przypadku braku operatora.";
$text['description-tier_rule_no_agent_no_wait']['sv-se'] = "Välj kunskaps-regel Ingen Agent Vänta Ej.";
$text['description-tier_rule_no_agent_no_wait']['uk'] = "";
@@ -1006,7 +946,7 @@ $text['description-tier_position']['en-us'] = "Select the tier position.";
$text['description-tier_position']['es-cl'] = "Seleccione el nivel de posición.";
$text['description-tier_position']['pt-pt'] = "Seleccione a posição no nível.";
$text['description-tier_position']['fr-fr'] = "Choisir la position du niveau.";
$text['description-tier_position']['pt-br'] = "Selecione o nivel da posição";
$text['description-tier_position']['pt-br'] = "Selecione o nível da posição.";
$text['description-tier_position']['pl'] = "Wpisz pozycję poziomu";
$text['description-tier_position']['sv-se'] = "Välj Kunskaps position.";
$text['description-tier_position']['uk'] = "";
@@ -1016,7 +956,7 @@ $text['description-tier_level']['en-us'] = "Select the tier level.";
$text['description-tier_level']['es-cl'] = "Seleccione el nivel de llamada.";
$text['description-tier_level']['pt-pt'] = "Seleccione o nível da camada.";
$text['description-tier_level']['fr-fr'] = "Choisir le niveau de l'appel.";
$text['description-tier_level']['pt-br'] = "Selecione o nivel da camada";
$text['description-tier_level']['pt-br'] = "Selecione o nível da camada.";
$text['description-tier_level']['pl'] = "Wybierz rodzaj poziomu";
$text['description-tier_level']['sv-se'] = "Välj Kunskaps-nivå";
$text['description-tier_level']['uk'] = "";
@@ -1026,7 +966,7 @@ $text['description-strategy']['en-us'] = "Select the queue ring strategy.";
$text['description-strategy']['es-cl'] = "Seleccione la estratégia de cola anillada.";
$text['description-strategy']['pt-pt'] = "Seleccione a estratégia da fila.";
$text['description-strategy']['fr-fr'] = "Sélection de la stratégie de sonnerie";
$text['description-strategy']['pt-br'] = "Selecione a estraétia da fila";
$text['description-strategy']['pt-br'] = "Selecione a estratégia da fila";
$text['description-strategy']['pl'] = "Wybierz strategię";
$text['description-strategy']['sv-se'] = "Välj strategi för ringflöde i kö:n.";
$text['description-strategy']['uk'] = "";
@@ -1036,7 +976,7 @@ $text['description-status']['en-us'] = "Select the default agent status.";
$text['description-status']['es-cl'] = "Seleccione el estado del agente.";
$text['description-status']['pt-pt'] = "Seleccione o estado do agente.";
$text['description-status']['fr-fr'] = "Choisir le statut de l'agent.";
$text['description-status']['pt-br'] = "Escolha o estado do usuário.";
$text['description-status']['pt-br'] = "Escolha o padrão do agente.";
$text['description-status']['pl'] = "Wybierz status użytkownika";
$text['description-status']['sv-se'] = "Välj agentens status";
$text['description-status']['uk'] = "Виберіть статус користувача";
@@ -1046,7 +986,7 @@ $text['description-reject_delay_time']['en-us'] = "Enter the reject delay time."
$text['description-reject_delay_time']['es-cl'] = "Introduzca el tiempo de espera de rechazo.";
$text['description-reject_delay_time']['pt-pt'] = "Introduza o tempo de atraso de rejeição.";
$text['description-reject_delay_time']['fr-fr'] = "Choisir le délais de rejet.";
$text['description-reject_delay_time']['pt-br'] = "Insira o tempo de atraso e rejeição";
$text['description-reject_delay_time']['pt-br'] = "Insira o tempo de atraso para rejeição.";
$text['description-reject_delay_time']['pl'] = "Wpisz opóźnienie czasowe w przypadku odrzucenia rozmowy";
$text['description-reject_delay_time']['sv-se'] = "Ange 'neka' tids-fördröjning.";
$text['description-reject_delay_time']['uk'] = "";
@@ -1056,7 +996,7 @@ $text['description-record_template']['en-us'] = "Save the recording.";
$text['description-record_template']['es-cl'] = "Guardar la grabación.";
$text['description-record_template']['pt-pt'] = "Salve a gravação.";
$text['description-record_template']['fr-fr'] = "Sauvegarder l'enregistrement.";
$text['description-record_template']['pt-br'] = "Salva a gravação";
$text['description-record_template']['pt-br'] = "Salva a gravação.";
$text['description-record_template']['pl'] = "Zachowaj nagranie";
$text['description-record_template']['sv-se'] = "Spara inspelningen.";
$text['description-record_template']['uk'] = "";
@@ -1066,7 +1006,7 @@ $text['description-queue_name']['en-us'] = "Enter the queue name.";
$text['description-queue_name']['es-cl'] = "Introduzca el Nombre de Cola.";
$text['description-queue_name']['pt-pt'] = "Introduza o nome da fila.";
$text['description-queue_name']['fr-fr'] = "Entrer le nom de la queue";
$text['description-queue_name']['pt-br'] = "Insira o nome da fila";
$text['description-queue_name']['pt-br'] = "Insira o nome da fila.";
$text['description-queue_name']['pl'] = "Wpisz nazwę kolejki";
$text['description-queue_name']['sv-se'] = "Ange kö namn.";
$text['description-queue_name']['uk'] = "";
@@ -1076,7 +1016,7 @@ $text['description-options']['en-us'] = "Select the queue name.";
$text['description-options']['es-cl'] = "Seleccione el nombre de cola.";
$text['description-options']['pt-pt'] = "Seleccione o nome da fila.";
$text['description-options']['fr-fr'] = "Choisir le nom de la queue.";
$text['description-options']['pt-br'] = "Selecione o nome da fila";
$text['description-options']['pt-br'] = "Selecione o nome da fila.";
$text['description-options']['pl'] = "Zdefiniuj opcje dzwoniącego w menu IVR";
$text['description-options']['sv-se'] = "Välj kö namn.";
$text['description-options']['uk'] = "";
@@ -1086,7 +1026,7 @@ $text['description-no_answer_delay_time']['en-us'] = "Enter the agent no answer
$text['description-no_answer_delay_time']['es-cl'] = "Introduzca el tiempo de espera sin responder del agente en segundos.";
$text['description-no_answer_delay_time']['pt-pt'] = "Introduza o tempo de atraso em segundos do agente que não atende.";
$text['description-no_answer_delay_time']['fr-fr'] = "Choisir le delais de non réponse de l'agent.";
$text['description-no_answer_delay_time']['pt-br'] = "Insira o tempo de resposta em segundos do agente que não atende";
$text['description-no_answer_delay_time']['pt-br'] = "Insira o tempo sem resposta do agente em segundos.";
$text['description-no_answer_delay_time']['pl'] = "Wprowadź maks czas nieodbierania rozmowy (sek)";
$text['description-no_answer_delay_time']['sv-se'] = "Ange 'Inget svar Agent fördröjning' i sekunder.";
$text['description-no_answer_delay_time']['uk'] = "";
@@ -1096,7 +1036,7 @@ $text['description-music_on_hold']['en-us'] = "Select the desired hold music.";
$text['description-music_on_hold']['es-cl'] = "Seleccione una música de espera.";
$text['description-music_on_hold']['pt-pt'] = "Seleccione uma música de espera.";
$text['description-music_on_hold']['fr-fr'] = "Sélection de la musique de garde.";
$text['description-music_on_hold']['pt-br'] = "Selecione uma música de espera";
$text['description-music_on_hold']['pt-br'] = "Selecione uma música de espera.";
$text['description-music_on_hold']['pl'] = "Wybierz rodzaj muzyki na czekanie";
$text['description-music_on_hold']['sv-se'] = "Välj önskad vänt-musik.";
$text['description-music_on_hold']['uk'] = "";
@@ -1106,7 +1046,7 @@ $text['description-max_wait_time_with_no_agent_time_reached']['en-us'] = "Enter
$text['description-max_wait_time_with_no_agent_time_reached']['es-cl'] = "Introduzca el tiempo máximo de espera sin agente alcanzado.";
$text['description-max_wait_time_with_no_agent_time_reached']['pt-pt'] = "Introduza o tempo máximo de espera atingido sem agente.";
$text['description-max_wait_time_with_no_agent_time_reached']['fr-fr'] = " Entrez le temps d'attente maximum avec un rien de temps de l'agent atteint.";
$text['description-max_wait_time_with_no_agent_time_reached']['pt-br'] = "Insira o tempo máximo de espera atingido sem o agente";
$text['description-max_wait_time_with_no_agent_time_reached']['pt-br'] = "Insira o tempo máximo de espera atingido sem o agente.";
$text['description-max_wait_time_with_no_agent_time_reached']['pl'] = "Wprowadź maks upłyniety czas oczekiwania bez agenta";
$text['description-max_wait_time_with_no_agent_time_reached']['sv-se'] = "Ange max vänt-tid när 'Utan Agent Tids-gräns' är nådd. ";
$text['description-max_wait_time_with_no_agent_time_reached']['uk'] = "";
@@ -1116,7 +1056,7 @@ $text['description-max_wait_time_with_no_agent']['en-us'] = "Enter the max wait
$text['description-max_wait_time_with_no_agent']['es-cl'] = "Introduzca el tiempo máximo de espera sin agente.";
$text['description-max_wait_time_with_no_agent']['pt-pt'] = "Introduza o tempo máximo de espera sem agente.";
$text['description-max_wait_time_with_no_agent']['fr-fr'] = "Entrer le temps max d'attente sans agent.";
$text['description-max_wait_time_with_no_agent']['pt-br'] = "Insira o tempo máximo de espera sem agente";
$text['description-max_wait_time_with_no_agent']['pt-br'] = "Insira o tempo máximo de espera sem agente.";
$text['description-max_wait_time_with_no_agent']['pl'] = "Wprowadź maks czas oczekiwania bez agenta";
$text['description-max_wait_time_with_no_agent']['sv-se'] = "Ange max vänt-tid utan agent.";
$text['description-max_wait_time_with_no_agent']['uk'] = "";
@@ -1126,7 +1066,7 @@ $text['description-max_wait_time']['en-us'] = "Enter the max wait time.";
$text['description-max_wait_time']['es-cl'] = "Introduzca el tiempo máximo de espera.";
$text['description-max_wait_time']['pt-pt'] = "Introduzia o tempo máximo de espera.";
$text['description-max_wait_time']['fr-fr'] = "Entrer le temps max d'attente.";
$text['description-max_wait_time']['pt-br'] = "Insira o tempo máximo de espera";
$text['description-max_wait_time']['pt-br'] = "Insira o tempo máximo de espera.";
$text['description-max_wait_time']['pl'] = "Wprowadź maks czas oczekiwania";
$text['description-max_wait_time']['sv-se'] = "Ange max vänt-tid.";
$text['description-max_wait_time']['uk'] = "";
@@ -1136,7 +1076,7 @@ $text['description-max_no_answer']['en-us'] = "Enter max no answer.";
$text['description-max_no_answer']['es-cl'] = "Introduza el máximo de no respuestas.";
$text['description-max_no_answer']['pt-pt'] = "Introduza o máximo de não antedidas.";
$text['description-max_no_answer']['fr-fr'] = "Choisr le nom max de non réponses.";
$text['description-max_no_answer']['pt-br'] = "Insira o máximo de chamadas não atendidas";
$text['description-max_no_answer']['pt-br'] = "Insira o máximo de chamadas não atendidas.";
$text['description-max_no_answer']['pl'] = "Wprowadź maks czas nieodbierania rozmowy";
$text['description-max_no_answer']['sv-se'] = "Ange max inget svar.";
$text['description-max_no_answer']['uk'] = "";
@@ -1146,7 +1086,7 @@ $text['description-extension']['en-us'] = "Enter the extension number.";
$text['description-extension']['es-cl'] = "Introduzca el número de extensión.";
$text['description-extension']['pt-pt'] = "Introduza o número da extensão.";
$text['description-extension']['fr-fr'] = "Entrer un numéro d'extension";
$text['description-extension']['pt-br'] = "Atribua a extensão e números ao dispositivo";
$text['description-extension']['pt-br'] = "Atribua um ramal ao dispositivo";
$text['description-extension']['pl'] = "Wprowadź alfanumeryczny numer wewnętrzny. Domyślna konfiguracja pozwala na 2-7 cyfrowe numery wewnętrzne";
$text['description-extension']['sv-se'] = "Ange anknytningsnumret.";
$text['description-extension']['uk'] = "";
@@ -1156,27 +1096,17 @@ $text['description-discard_abandoned_after']['en-us'] = "Set the discard abandon
$text['description-discard_abandoned_after']['es-cl'] = "Defina la cantidad de segundos para el abandono de descarte.";
$text['description-discard_abandoned_after']['pt-pt'] = "Defina a rejeição abandonada segundos depois.";
$text['description-discard_abandoned_after']['fr-fr'] = "Choisir d'écartrer les abandons après un nombre de secondes.";
$text['description-discard_abandoned_after']['pt-br'] = "Defina o tempo em segundos";
$text['description-discard_abandoned_after']['pt-br'] = "Defina o tempo em segundos para descartar após abandonado.";
$text['description-discard_abandoned_after']['pl'] = "Ustaw czas po którym opuszczona rozmowa zostanie odrzucona";
$text['description-discard_abandoned_after']['sv-se'] = "Ange uteslut Ej Besvarade efter sekunder.";
$text['description-discard_abandoned_after']['uk'] = "";
$text['description-discard_abandoned_after']['de-at'] = "Setzen Sie die Zeit in Sekunden, nach der ein Anrufer nicht wieder in die Warteschlange eingereiht wird.";
$text['description-description']['en-us'] = "Enter a description, if desired.";
$text['description-description']['es-cl'] = "Ingrese una descripción, opcional.";
$text['description-description']['pt-pt'] = "Introduza uma descrição, se desejar.";
$text['description-description']['fr-fr'] = "Entrez une description, si vous le souhaitez.";
$text['description-description']['pt-br'] = "Insira a descrição, caso desejar";
$text['description-description']['pl'] = "Wpisz opis (opcjonalne)";
$text['description-description']['sv-se'] = "Fyll i en beskrivning, om nödvändigt.";
$text['description-description']['uk'] = "Введіть опис, якщо це необхідно.";
$text['description-description']['de-at'] = "Falls gewünscht, geben Sie eine Beschreibung an.";
$text['description-contact']['en-us'] = "Select the contact number.";
$text['description-contact']['es-cl'] = "Seleccione el número de contacto.";
$text['description-contact']['pt-pt'] = "Seleccione o número de contacto.";
$text['description-contact']['fr-fr'] = "Choisir le numéro du contact.";
$text['description-contact']['pt-br'] = "Atribui um contato a esta conta de usuário";
$text['description-contact']['pt-br'] = "Atribui um contato a esta conta de usuário.";
$text['description-contact']['pl'] = "Wybierz numer";
$text['description-contact']['sv-se'] = "Välj kontakt numret.";
$text['description-contact']['uk'] = "Призначити контакт в цей обліковий запис користувача.";
@@ -1186,24 +1116,24 @@ $text['description-caller_id_name_prefix']['en-us'] = "Set a prefix on the calle
$text['description-caller_id_name_prefix']['es-cl'] = "Defina un prefijo para el nombre de quien llama.";
$text['description-caller_id_name_prefix']['pt-pt'] = "Defina um prefixo no nome do originador.";
$text['description-caller_id_name_prefix']['fr-fr'] = "Choisir un préfixe pour le nom d'appelant.";
$text['description-caller_id_name_prefix']['pt-br'] = "Defina um prefixo no nome do originador";
$text['description-caller_id_name_prefix']['pt-br'] = "Defina um prefixo no nome do originador da chamada.";
$text['description-caller_id_name_prefix']['pl'] = "Ustaw prefiks nazwy abonenta dzwoniącego.";
$text['description-caller_id_name_prefix']['sv-se'] = "Ange ett prefix för Caller ID namn.";
$text['description-caller_id_name_prefix']['uk'] = "";
$text['description-caller_id_name_prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Name).";
$text['description-caller_announce_sound']['en-us'] = "A sound to play to a caller every announce sound seconds. Needs the full path to the wav file.";
$text['description-caller_announce_sound']['pt-br'] = "Um som para tocar a uma cada vez chamador anunciar segundos de som. Precisa o caminho completo para o arquivo wav. ";
$text['description-caller_announce_sound']['pt-br'] = "Um som tocará para o originador da chamada. Precisa o caminho completo para o arquivo wav.";
$text['description-caller_announce_sound']['pl'] = "Dźwięk odtwarzany dzwoniącemu, który zostaje odtworzony cyklicznie. Wymagana jest pełna ścieżka do pliku.";
$text['description-caller_announce_sound']['sv-se'] = "Ett ljud som spelas upp efter varje 'meddelande ljud sekunder'. Behöver hela sökvägen till WAV filen.";
$text['description-caller_announce_sound']['uk'] = "";
$text['description-caller_announce_sound']['es-cl'] = " Translate from: English Un sonido jugar a un cada persona que llama anunciar segundos de sonido. Necesita la ruta completa al archivo wav.";
$text['description-caller_announce_sound']['pt-pt'] = "Um som para tocar a uma cada vez chamador anunciar segundos de som. Precisa o caminho completo para o arquivo wav.";
$text['description-caller_announce_sound']['pt-pt'] = "Um som para tocar a uma cada vez que o originador da chamada anunciar segundos de som. Precisa o caminho completo para o arquivo wav.";
$text['description-caller_announce_sound']['fr-fr'] = " Un son à jouer à un appelant chaque annoncer secondes sonores. Besoins le chemin complet vers le fichier wav.";
$text['description-caller_announce_sound']['de-at'] = "Eine Datei, die nach jeder ";
$text['description-caller_announce_frequency']['en-us'] = "How often should we play the announce sound. Enter a number in seconds";
$text['description-caller_announce_frequency']['pt-br'] = "Com que freqüência devemos reproduzir o som anunciar. Digite um número em segundos";
$text['description-caller_announce_frequency']['pt-br'] = "Com que frequência devemos reproduzir o som ao anunciar. Digite um número em segundos";
$text['description-caller_announce_frequency']['pl'] = "Wprowadź wartość w sekundach jak często ma być odtwarzany dźwięk powitania.";
$text['description-caller_announce_frequency']['sv-se'] = "Hur ofta skall meddelandet spelas upp. Ange ett värde i sekunder.";
$text['description-caller_announce_frequency']['uk'] = "";
@@ -1216,7 +1146,7 @@ $text['description-call_timeout']['en-us'] = "Enter the call timeout.";
$text['description-call_timeout']['es-cl'] = "Introduzca el timeout de la llamada.";
$text['description-call_timeout']['pt-pt'] = "Introduza o timeout da chamada.";
$text['description-call_timeout']['fr-fr'] = "Choisir le timeout de l'appel.";
$text['description-call_timeout']['pt-br'] = "Insira o tempo final da chamada";
$text['description-call_timeout']['pt-br'] = "Insira o tempo limite da chamada";
$text['description-call_timeout']['pl'] = "Wpisz limit czasu rozmowy";
$text['description-call_timeout']['sv-se'] = "Ange 'call timeout'";
$text['description-call_timeout']['uk'] = "";
@@ -1226,7 +1156,7 @@ $text['description-call_center_queues']['en-us'] = "List of queues for the call
$text['description-call_center_queues']['es-cl'] = "Lista de Colas de Centro de Llamados.";
$text['description-call_center_queues']['pt-pt'] = "Lista de Filas do Call Center.";
$text['description-call_center_queues']['fr-fr'] = "Liste des Queues du Centre d'Appel";
$text['description-call_center_queues']['pt-br'] = "Lista de filas do call center";
$text['description-call_center_queues']['pt-br'] = "Lista de filas para o Call Center";
$text['description-call_center_queues']['pl'] = "Lista kolejek w Call Center";
$text['description-call_center_queues']['sv-se'] = "Lista med kö:er för Call Center";
$text['description-call_center_queues']['uk'] = "";
@@ -1236,7 +1166,7 @@ $text['description-call_center_agents']['en-us'] = "List of call center agents."
$text['description-call_center_agents']['es-cl'] = "Lista de Agentes de Centro de Llamados.";
$text['description-call_center_agents']['pt-pt'] = "Lista de Agentes do Call Center.";
$text['description-call_center_agents']['fr-fr'] = "Liste des agents du Centre d'Appel";
$text['description-call_center_agents']['pt-br'] = "Lista de agentes do call center";
$text['description-call_center_agents']['pt-br'] = "Lista de agentes do Call Center";
$text['description-call_center_agents']['pl'] = "Lista agentów w Call Center";
$text['description-call_center_agents']['sv-se'] = "Lista med Call Center Agenter";
$text['description-call_center_agents']['uk'] = "";
@@ -1246,7 +1176,7 @@ $text['description-call_center_agent_status']['en-us'] = "List all the call cent
$text['description-call_center_agent_status']['es-cl'] = "Lista todos los agentes del Centro de Llamados con la opción de modificar el estado de uno o más agentes.";
$text['description-call_center_agent_status']['pt-pt'] = "Lista todas as chamadas do Call Center com a opção de alterar o estado de um ou mais agentes.";
$text['description-call_center_agent_status']['fr-fr'] = "Liste tous les agents du centre d'appel avec la possibilité de modifier l'état d'un ou plusieurs agents.";
$text['description-call_center_agent_status']['pt-br'] = "Listar com todas as chamadas do call center com a opção de alterar o estado de um ou mais agentes";
$text['description-call_center_agent_status']['pt-br'] = "Lista todas chamadas do Call Center com a opção de alterar o estado de um ou mais agentes.";
$text['description-call_center_agent_status']['pl'] = "Wybierz wszystkich agentów call center, którzy mają uprawnienia do zmiany statusu jednego bądź wielu agentów.";
$text['description-call_center_agent_status']['sv-se'] = "Lista med alla Call Center Agenter med möjlighet att ändra status på en eller flera agenter.";
$text['description-call_center_agent_status']['uk'] = "";
@@ -1256,7 +1186,7 @@ $text['description-busy_delay_time']['en-us'] = "Enter the agent busy delay time
$text['description-busy_delay_time']['es-cl'] = "Introduzca el tiempo de espera de agente ocupado.";
$text['description-busy_delay_time']['pt-pt'] = "Introduza o tempo de atraso do agente ocupado.";
$text['description-busy_delay_time']['fr-fr'] = "Choisir le temps d'attente quand l'agent est occupé.";
$text['description-busy_delay_time']['pt-br'] = "Insira o tempo de resposta do agente ocupado";
$text['description-busy_delay_time']['pt-br'] = "Insira o tempo para atraso do agente ocupado.";
$text['description-busy_delay_time']['pl'] = "Wprowadź wartość czasowego opóźnienia w przypadku, gdy agent jest zajęty.";
$text['description-busy_delay_time']['sv-se'] = "Ange Agent Upptagen Fördröjnings-tid.";
$text['description-busy_delay_time']['uk'] = "";
@@ -1286,7 +1216,7 @@ $text['description-agent_logout']['en-us'] = "Enter the auto agent logout time i
$text['description-agent_logout']['es-cl'] = "Introduzca el tiempo de desconexión automático de agente en formato 00:00. Requiere un servicio para forzar la desconexión.";
$text['description-agent_logout']['pt-pt'] = "Introduza o tempo de logou automático do agente no formato 00:00. Isto requere um serviço dedicado para forçar o logout.";
$text['description-agent_logout']['fr-fr'] = "Entrer l'heure de déconnexion automatique de l'agent au format 00:00. Nécessite un service pour forcer la déconnexion.";
$text['description-agent_logout']['pt-br'] = "Insira o tempo de login automatico do agente no formato 00:00. Isto requer um serviço dedicado para foçar o logout";
$text['description-agent_logout']['pt-br'] = "Entre com o tempo automático de logout do agente (utilize o formato 00:00). Isto requer um serviço dedicado para forçar o logout do agente.";
$text['description-agent_logout']['pl'] = "Wprowadź czas po, którym agent zostanie automatycznie wylogowany (w formacie 00:00). Wymagany jest serwis który egzekwuje czas wylogowania.";
$text['description-agent_logout']['sv-se'] = "Ange Automatisk utläggning av Agent i 00:00 format. Kräver en tjänst för att genomföra utloggningen.";
$text['description-agent_logout']['uk'] = "";
@@ -1306,7 +1236,7 @@ $text['description-agent']['en-us'] = "Select the agent name.";
$text['description-agent']['es-cl'] = "Seleccione el nombre del agente.";
$text['description-agent']['pt-pt'] = "Seleccione o nome do agente.";
$text['description-agent']['fr-fr'] = "Choisir le nom de l'agent.";
$text['description-agent']['pt-br'] = "Selecione o nome do agente";
$text['description-agent']['pt-br'] = "Selecione o nome do agente.";
$text['description-agent']['pl'] = "Wybierz nazwe agenta.";
$text['description-agent']['sv-se'] = "Välj Agent namnet.";
$text['description-agent']['uk'] = "Виберіть ім’я оператора";
@@ -1316,22 +1246,12 @@ $text['description-abandoned_resume_allowed']['en-us'] = "Set the abandoned resu
$text['description-abandoned_resume_allowed']['es-cl'] = "Defina el permiso para permitir la continuación de abandono a verdadero o falso.";
$text['description-abandoned_resume_allowed']['pt-pt'] = "Defina a permissão para abadono do resume a verdadeiro ou a falso.";
$text['description-abandoned_resume_allowed']['fr-fr'] = "choisir l'autorisation de reprise d'abandon à oui ou non.";
$text['description-abandoned_resume_allowed']['pt-br'] = "Defina permissão para desistencia, verdadeira ou falso";
$text['description-abandoned_resume_allowed']['pt-br'] = "Defina permissão para desistência (SIM/NÃO).";
$text['description-abandoned_resume_allowed']['pl'] = "Ustaw czy odbieranie odrzuconych rozmów jest dozwolone (TAK/NIE)";
$text['description-abandoned_resume_allowed']['sv-se'] = "Välj 'Ej Besvarat Återtagning' till sann/falsk.";
$text['description-abandoned_resume_allowed']['uk'] = "";
$text['description-abandoned_resume_allowed']['de-at'] = "Schalten Sie die Wideraufnahme von Anrufern in der Warteschlange Ein oder Aus.";
$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']['pl'] = "Czy na pewno chcesz to usunąć?";
$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-copy']['en-us'] = "Do you really want to copy this?";
$text['confirm-copy']['es-cl'] = "¿Realmente desea copiar esto?";
$text['confirm-copy']['pt-pt'] = "Deseja realmente copiar isto?";
@@ -1342,16 +1262,6 @@ $text['confirm-copy']['sv-se'] = "Vill du verkligen kopiera detta?";
$text['confirm-copy']['uk'] = "Ви дійсно бажаєте це скопіювати?";
$text['confirm-copy']['de-at'] = "Wollen Sie das wirklich kopieren?";
$text['button-view']['en-us'] = "View";
$text['button-view']['es-cl'] = "Ver";
$text['button-view']['pt-pt'] = "Ver";
$text['button-view']['fr-fr'] = "Voir";
$text['button-view']['pt-br'] = "Visualizar";
$text['button-view']['pl'] = "Widok";
$text['button-view']['sv-se'] = "Visa";
$text['button-view']['uk'] = "Перегляд";
$text['button-view']['de-at'] = "Ansicht";
$text['button-update_status']['en-us'] = "Update Status";
$text['button-update_status']['es-cl'] = "Actualizar Estado";
$text['button-update_status']['pt-pt'] = "Actualizar Estado";
@@ -1366,112 +1276,12 @@ $text['button-tiers']['en-us'] = "Tiers";
$text['button-tiers']['es-cl'] = "Niveles";
$text['button-tiers']['pt-pt'] = "Níveis";
$text['button-tiers']['fr-fr'] = "Tiers";
$text['button-tiers']['pt-br'] = "Niveis ";
$text['button-tiers']['pt-br'] = "Níveis ";
$text['button-tiers']['pl'] = "Poziomy";
$text['button-tiers']['sv-se'] = "Kunskap";
$text['button-tiers']['uk'] = "Рівні";
$text['button-tiers']['de-at'] = "Ebenen";
$text['button-stop']['en-us'] = "Stop";
$text['button-stop']['es-cl'] = "Detener";
$text['button-stop']['pt-pt'] = "Parar";
$text['button-stop']['fr-fr'] = "Stop";
$text['button-stop']['pt-br'] = "Pausar Broadcast";
$text['button-stop']['pl'] = "Zatrzymaj rozsylanie rozmów";
$text['button-stop']['sv-se'] = "Stoppa";
$text['button-stop']['uk'] = "Зупинити трансляцію";
$text['button-stop']['de-at'] = "Stopp";
$text['button-status']['en-us'] = "Status";
$text['button-status']['es-cl'] = "Estado";
$text['button-status']['pt-pt'] = "Estado";
$text['button-status']['fr-fr'] = "Etat";
$text['button-status']['pt-br'] = "Estado";
$text['button-status']['pl'] = "Status";
$text['button-status']['sv-se'] = "Status";
$text['button-status']['uk'] = "Статус";
$text['button-status']['de-at'] = "Status";
$text['button-start']['en-us'] = "Start";
$text['button-start']['es-cl'] = "Iniciar";
$text['button-start']['pt-pt'] = "Iniciar";
$text['button-start']['fr-fr'] = "Démarrer";
$text['button-start']['pt-br'] = "Iniciar";
$text['button-start']['pl'] = "Start";
$text['button-start']['sv-se'] = "Start";
$text['button-start']['uk'] = "Запустити";
$text['button-start']['de-at'] = "Start";
$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']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['de-at'] = "Speichern";
$text['button-restart']['en-us'] = "Restart";
$text['button-restart']['es-cl'] = "Reanudar";
$text['button-restart']['pt-pt'] = "Restart";
$text['button-restart']['fr-fr'] = "Redémarrer";
$text['button-restart']['pt-br'] = "Reiniciar";
$text['button-restart']['pl'] = "Restartuj";
$text['button-restart']['sv-se'] = "Starta Om";
$text['button-restart']['uk'] = "Перезапустити";
$text['button-restart']['de-at'] = "Neu starten";
$text['button-refresh']['en-us'] = "Refresh";
$text['button-refresh']['es-cl'] = "Actualizar";
$text['button-refresh']['pt-pt'] = "Actualizar";
$text['button-refresh']['fr-fr'] = "Rafraîchir";
$text['button-refresh']['pt-br'] = "Atualizar";
$text['button-refresh']['pl'] = "Odśwież";
$text['button-refresh']['sv-se'] = "Uppdatera";
$text['button-refresh']['uk'] = "Оновити";
$text['button-refresh']['de-at'] = "Aktualisieren";
$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']['pl'] = "Edytuj";
$text['button-edit']['sv-se'] = "Editera";
$text['button-edit']['uk'] = "Редагувати";
$text['button-edit']['de-at'] = "Bearbeiten";
$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']['pl'] = "Usuń";
$text['button-delete']['sv-se'] = "Ta Bort";
$text['button-delete']['uk'] = "Видалити";
$text['button-delete']['de-at'] = "Löschen";
$text['button-copy']['en-us'] = "Copy";
$text['button-copy']['es-cl'] = "Copiar";
$text['button-copy']['pt-pt'] = "Copiar";
$text['button-copy']['fr-fr'] = "Copier";
$text['button-copy']['pt-br'] = "Copiar";
$text['button-copy']['pl'] = "Kopiuj";
$text['button-copy']['sv-se'] = "Kopiera";
$text['button-copy']['uk'] = "Копіювати";
$text['button-copy']['de-at'] = "Kopieren";
$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']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$text['button-agents']['en-us'] = "Agents";
$text['button-agents']['es-cl'] = "Agentes";
$text['button-agents']['pt-pt'] = "Agentes";
@@ -1482,24 +1292,4 @@ $text['button-agents']['sv-se'] = "Agenter";
$text['button-agents']['uk'] = "Оператори";
$text['button-agents']['de-at'] = "Agenten";
$text['button-advanced']['en-us'] = "Advanced";
$text['button-advanced']['es-cl'] = "Avanzadas";
$text['button-advanced']['pt-pt'] = "Avançadas";
$text['button-advanced']['fr-fr'] = "Avancé";
$text['button-advanced']['pt-br'] = "Avançar";
$text['button-advanced']['pl'] = "Zaawansowany";
$text['button-advanced']['sv-se'] = "Avancerat";
$text['button-advanced']['uk'] = "Додатково";
$text['button-advanced']['de-at'] = "Erweitert";
$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']['pl'] = "Dodaj";
$text['button-add']['sv-se'] = "Lägg Till";
$text['button-add']['uk'] = "Додати";
$text['button-add']['de-at'] = "Hinzufügen";
?>
+1 -2
View File
@@ -5,7 +5,7 @@ $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']['pt-br'] = "Call Center";
$apps[$x]['menu'][0]['title']['pl'] = "Call Center ";
$apps[$x]['menu'][0]['title']['sv-se'] = "Call Center";
$apps[$x]['menu'][0]['title']['uk'] = "Кол-центр";
@@ -31,7 +31,6 @@ $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";
@@ -86,6 +86,7 @@ if (count($_GET)>0) {
//synchronize configuration
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
//redirect the browser
$_SESSION["message"] = $text['message-delete'];
+17 -32
View File
@@ -129,49 +129,32 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//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
$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;
$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
$tmp_agent_contact = "{call_timeout=".$agent_call_timeout."}".$agent_contact;
$agent_contact = "{call_timeout=".$agent_call_timeout.",sip_invite_domain=".$_SESSION['domain_name']."}".$agent_contact;
}
else {
//add the call_timeout and confirm
$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";
$agent_contact = $first.',call_timeout='.$agent_call_timeout.$last;
$agent_contact = "{".$confirm.",call_timeout=".$agent_call_timeout.",sip_invite_domain=".$_SESSION['domain_name']."}".$agent_contact;
}
}
else {
//found
$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
if(stristr($agent_contact, 'sofia/gateway') === FALSE) {
//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;
}
$agent_contact = $first.$sip_invite_domain.$call_timeout.$last;
}
else {
//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;
}
$agent_contact = $first.','.$confirm.$sip_invite_domain.$call_timeout.$last;
}
}
@@ -193,7 +176,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$response = event_socket_request($fp, $cmd);
usleep(200);
//agent set contact
$cmd = "api callcenter_config agent set contact ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$tmp_agent_contact;
$cmd = "api callcenter_config agent set contact ".$agent_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']." ".$agent_contact;
$response = event_socket_request($fp, $cmd);
usleep(200);
//agent set status
@@ -264,6 +247,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//syncrhonize configuration
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
$_SESSION["message"] = $text['message-add'];
header("Location: call_center_agents.php");
@@ -291,7 +275,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
unset($sql);
//syncrhonize configuration
save_call_center_xml();
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
$_SESSION["message"] = $text['message-update'];
header("Location: call_center_agents.php");
@@ -173,7 +173,7 @@ else {
echo $text['description-call_center_agent_status']."<br /><br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "</tr></table>\n";
echo "</table>\n";
$c = 0;
$row_style["0"] = "row_style0";
@@ -185,11 +185,11 @@ else {
echo "<th>".$text['label-agent']."</th>\n";
echo "<th>".$text['label-status']."</th>\n";
echo "<th>".$text['label-options']."</th>\n";
echo "<tr>\n";
echo "</tr>\n";
$x = 0;
foreach($agents as $row) {
$str = '';
$str .= "<tr >\n";
$str .= "<tr>\n";
$str .= " <td valign='middle' class='".$row_style[$c]."'>".$row['agent_name']."&nbsp;</td>\n";
$str .= " <td valign='middle' class='".$row_style[$c]."'>".$row['agent_status']."&nbsp;</td>\n";
$str .= " <td valign='middle' class='".$row_style[$c]."'>";
+1 -1
View File
@@ -77,7 +77,7 @@ else {
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$num_rows = count($result);
unset ($prep_statement, $result, $sql);
$rows_per_page = 100;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
+46 -43
View File
@@ -43,57 +43,60 @@ else {
$id = check_str($_GET["id"]);
}
if (strlen($id) > 0) {
//delete the data
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'];
}
//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 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 call center queue
$sql = "delete from v_call_center_queues ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and call_center_queue_uuid = '$id' ";
$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 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);
//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"]);
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["context"]);
remove_config_from_cache('configuration:callcenter.conf');
//synchronize configuration
save_dialplan_xml();
//synchronize configuration
save_dialplan_xml();
save_call_center_xml();
//apply settings reminder
$_SESSION["reload_xml"] = true;
}
//apply settings reminder
$_SESSION["reload_xml"] = true;
}
//redirect the browser
$_SESSION["message"] = $text['message-delete'];
+26 -64
View File
@@ -255,8 +255,9 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$db->exec(check_sql($sql));
unset($sql);
//syncrhonize the configuration
//synchronize the configuration
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
//delete the dialplan context from memcache
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
@@ -265,7 +266,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
}
$_SESSION["message"] = $text['message-add'];
//set the message
$_SESSION["message"] = $text['message-add'];
} //if ($action == "add")
if ($action == "update") {
@@ -310,31 +312,32 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
}
unset ($prep_statement);
//dialplan add or update
$c = new call_center;
$c->db = $db;
$c->domain_uuid = $_SESSION['domain_uuid'];
$c->call_center_queue_uuid = $call_center_queue_uuid;
$c->dialplan_uuid = $dialplan_uuid;
$c->queue_name = $queue_name;
$c->queue_name = $queue_name;
$c->queue_cid_prefix = $queue_cid_prefix;
$c->queue_timeout_action = $queue_timeout_action;
$c->queue_description = $queue_description;
$c->destination_number = $queue_extension;
$a = $c->dialplan();
//synchronize the configuration
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
//clear the cache
$cache = new cache;
$cache->delete("memcache delete dialplan:".$_SESSION["context"]);
$cache->delete("dialplan:".$_SESSION["context"]);
//set the update message
$_SESSION["message"] = $text['message-update'];
} //if ($action == "update")
//dialplan add or update
$c = new call_center;
$c->db = $db;
$c->domain_uuid = $_SESSION['domain_uuid'];
$c->call_center_queue_uuid = $call_center_queue_uuid;
$c->dialplan_uuid = $dialplan_uuid;
$c->queue_name = $queue_name;
$c->queue_name = $queue_name;
$c->queue_cid_prefix = $queue_cid_prefix;
$c->queue_timeout_action = $queue_timeout_action;
$c->queue_description = $queue_description;
$c->destination_number = $queue_extension;
$a = $c->dialplan();
//add agent/tier to queue
$agent_name = check_str($_POST["agent_name"]);
$tier_level = check_str($_POST["tier_level"]);
@@ -393,11 +396,12 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//syncrhonize configuration
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
}
//redirect
header("Location: call_center_queue_edit.php?id=".$call_center_queue_uuid);
return;
header("Location: call_center_queue_edit.php?id=".$call_center_queue_uuid);
return;
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
@@ -680,50 +684,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$select_options = "";
if ($queue_moh_sound == "tone_stream://\$\${us-ring};loops=-1" || $queue_moh_sound == "us-ring") {
$select_options .= " <option value='tone_stream://\$\${us-ring};loops=-1' selected='selected'>".$text['option-usring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${us-ring};loops=-1'>".$text['option-usring']."</option>\n";
}
if ($queue_moh_sound == "tone_stream://\$\${pt-ring};loops=-1" || $queue_moh_sound == "pt-ring") {
$select_options .= " <option value='tone_stream://\$\${pt-ring};loops=-1' selected='selected'>".$text['option-ptring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${pt-ring};loops=-1'>".$text['option-ptring']."</option>\n";
}
if ($queue_moh_sound == "tone_stream://\$\${fr-ring};loops=-1" || $queue_moh_sound == "fr-ring") {
$select_options .= " <option value='tone_stream://\$\${fr-ring};loops=-1' selected='selected'>".$text['option-frring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${fr-ring};loops=-1'>".$text['option-frring']."</option>\n";
}
if ($queue_moh_sound == "tone_stream://\$\${uk-ring};loops=-1" || $queue_moh_sound == "uk-ring") {
$select_options .= " <option value='tone_stream://\$\${uk-ring};loops=-1' selected='selected'>".$text['option-ukring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${uk-ring};loops=-1'>".$text['option-ukring']."</option>\n";
}
if ($queue_moh_sound == "tone_stream://\$\${rs-ring};loops=-1" || $queue_moh_sound == "rs-ring") {
$select_options .= " <option value='tone_stream://\$\${rs-ring};loops=-1' selected='selected'>".$text['option-rsring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${rs-ring};loops=-1'>".$text['option-rsring']."</option>\n";
}
if ($queue_moh_sound == "tone_stream://\$\${it-ring};loops=-1" || $queue_moh_sound == "it-ring") {
$select_options .= " <option value='tone_stream://\$\${it-ring};loops=-1' selected='selected'>".$text['option-itring']."</option>\n";
}
else {
$select_options .= " <option value='tone_stream://\$\${it-ring};loops=-1'>".$text['option-itring']."</option>\n";
}
require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
$moh= new switch_music_on_hold;
$moh->select_name = "queue_moh_sound";
$moh->select_value = $queue_moh_sound;
$moh->select_options = $select_options;
echo $moh->select();
$ringbacks = new ringbacks;
echo $ringbacks->select('queue_moh_sound', $queue_moh_sound);
echo "<br />\n";
echo $text['description-music_on_hold']."\n";
@@ -736,7 +698,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$record_ext=($_SESSION['record_ext']=='mp3'?'mp3':'wav');
$record_template = $_SESSION['switch']['recordings']['dir']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.".$record_ext;
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.".$record_ext;
echo " <select class='formfld' name='queue_record_template'>\n";
if (strlen($queue_record_template) > 0) {
echo " <option value='$record_template' selected='selected' >".$text['option-true']."</option>\n";
+1 -1
View File
@@ -86,7 +86,7 @@ else {
$num_rows = count($result);
unset ($prep_statement, $result, $sql);
$rows_per_page = 100;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
+2 -1
View File
@@ -111,7 +111,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
unset($sql);
//syncrhonize configuration
save_call_center_xml();
save_call_center_xml();
remove_config_from_cache('configuration:callcenter.conf');
//look up queue uuid by queue name (ugh)
$sql = "select call_center_queue_uuid from v_call_center_queues where queue_name = '".$queue_name."'";
+223 -223
View File
@@ -1,224 +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
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();
*/
<?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();
*/
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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"]);
}
?>
+30 -4
View File
@@ -83,53 +83,79 @@
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the name.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o nome.";
$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]['description']['en'] = "Enter the extension number.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o ramal.";
$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]['description']['en'] = "Enter the feature code.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o código de recurso.";
$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]['description']['en'] = "Enter the context.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o contexto.";
$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'] = "Select the status.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione o estado.";
$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]['description']['en'] = "Enter the PIN number.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o número PIN.";
$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]['description']['en'] = "Enter the label.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com uma etiqueta.";
$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'] = "Select the sound.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione o som.";
$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'] = "Enter the application.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com a aplicação.";
$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'] = "Enter the application data.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com os dados da aplicação.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_label";
$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]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the alternate label.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com uma etiqueta alternativa.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_app";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_alternate_sound";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Select the alternate sound.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione um som alternativo.";
$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]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en'] = "Enter the alternate application.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com uma aplicação alternativa.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow_anti_data";
$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'] = "Enter the alernate application data.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com os dados da aplicação alternativa.";
$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]['description']['en'] = "Enter the description.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com a descrição.";
?>
+91 -191
View File
@@ -27,69 +27,9 @@ $text['title-call_flow-add']['fr-fr'] = "Ajouter un flux";
$text['title-call_flow-add']['pt-br'] = "Adicionar fluxo de chamada";
$text['title-call_flow-add']['pl'] = "Dodaj przepływ rozmów";
$text['title-call_flow-add']['sv-se'] = "Lägg Till Samtalsflöde";
$text['title-call_flow-add']['uk'] = "";
$text['title-call_flow-add']['uk'] = "Виклик Flow Додати";
$text['title-call_flow-add']['de-at'] = "Anruf Steuerung hinzufügen";
$text['message-update']['en-us'] = "Update Completed";
$text['message-update']['es-cl'] = "Actualizar Completado";
$text['message-update']['pt-pt'] = "Actualização Efectuada";
$text['message-update']['fr-fr'] = "Mise à jour effectuée";
$text['message-update']['pt-br'] = "Atualização Efetuada";
$text['message-update']['pl'] = "Zaktualizowano poprawnie";
$text['message-update']['sv-se'] = "Uppdatering Klar";
$text['message-update']['uk'] = "Оновлено";
$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
$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']['pl'] = "Wpisz:";
$text['message-required']['sv-se'] = "Var god uppge:";
$text['message-required']['uk'] = "Будь ласка, вкажіть:";
$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
$text['message-message']['en-us'] = "Message";
$text['message-message']['es-cl'] = "Mensaje";
$text['message-message']['pt-pt'] = "Mensagem";
$text['message-message']['fr-fr'] = "Message";
$text['message-message']['pt-br'] = "Mensagem";
$text['message-message']['pl'] = "Wiadomość";
$text['message-message']['sv-se'] = "Meddelande";
$text['message-message']['uk'] = "Повідомлення";
$text['message-message']['de-at'] = "Nachricht";
$text['message-delete']['en-us'] = "Delete Completed";
$text['message-delete']['es-cl'] = "Eliminar Completado";
$text['message-delete']['pt-pt'] = "Remoção Efectuada";
$text['message-delete']['fr-fr'] = "Suppression effectuée";
$text['message-delete']['pt-br'] = "Remoção Efetuada";
$text['message-delete']['pl'] = "Usunięto poprawnie";
$text['message-delete']['sv-se'] = "Borttagning Klar";
$text['message-delete']['uk'] = "Видалено";
$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
$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 effectué";
$text['message-add']['pt-br'] = "Criação Efetuada";
$text['message-add']['pl'] = "Dodano poprawnie";
$text['message-add']['sv-se'] = "Tillagd";
$text['message-add']['uk'] = "Додано";
$text['message-add']['de-at'] = "Erfolgreich hinzugefügt";
$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']['pl'] = "Tak";
$text['label-true']['sv-se'] = "Sann";
$text['label-true']['uk'] = "Так";
$text['label-true']['de-at'] = "Ein";
$text['label-status']['en-us'] = "Status";
$text['label-status']['es-cl'] = "Estado";
$text['label-status']['pt-pt'] = "Estado";
@@ -110,26 +50,6 @@ $text['label-pin_number']['sv-se'] = "PIN Kod";
$text['label-pin_number']['uk'] = "PIN-код";
$text['label-pin_number']['de-at'] = "PIN Nummer";
$text['label-none']['en-us'] = "None";
$text['label-none']['es-cl'] = "Ninguno";
$text['label-none']['pt-pt'] = "Nenhum";
$text['label-none']['fr-fr'] = "Aucun";
$text['label-none']['pt-br'] = "Nenhum";
$text['label-none']['pl'] = "Żaden";
$text['label-none']['sv-se'] = "Ingen";
$text['label-none']['uk'] = "Жоден";
$text['label-none']['de-at'] = "keine";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['uk'] = "Назва";
$text['label-name']['de-at'] = "Name";
$text['label-feature_code']['en-us'] = "Feature Code";
$text['label-feature_code']['es-cl'] = "Código distintivo";
$text['label-feature_code']['pt-pt'] = "Código de Função";
@@ -140,16 +60,6 @@ $text['label-feature_code']['sv-se'] = "Funktionskod";
$text['label-feature_code']['uk'] = "";
$text['label-feature_code']['de-at'] = "Stern-Code";
$text['label-false']['en-us'] = "False";
$text['label-false']['es-cl'] = "Falso";
$text['label-false']['pt-pt'] = "Não";
$text['label-false']['fr-fr'] = "Non";
$text['label-false']['pt-br'] = "Não";
$text['label-false']['pl'] = "Nie";
$text['label-false']['sv-se'] = "Falsk";
$text['label-false']['uk'] = "Ні";
$text['label-false']['de-at'] = "Aus";
$text['label-extension']['en-us'] = "Extension";
$text['label-extension']['es-cl'] = "Extensión";
$text['label-extension']['pt-pt'] = "Extensão";
@@ -164,10 +74,10 @@ $text['label-destination_label']['en-us'] = "Destination Label";
$text['label-destination_label']['es-cl'] = "Etiqueta de Destino";
$text['label-destination_label']['pt-pt'] = "Destino";
$text['label-destination_label']['fr-fr'] = "Label de la destination";
$text['label-destination_label']['pt-br'] = "Destino";
$text['label-destination_label']['pt-br'] = "Etiqueta de destino";
$text['label-destination_label']['pl'] = "Etykieta destynacji";
$text['label-destination_label']['sv-se'] = "Destination Etikett";
$text['label-destination_label']['uk'] = "";
$text['label-destination_label']['uk'] = "призначення етикетки";
$text['label-destination_label']['de-at'] = "Ziel Kennzeichnung";
$text['label-destination']['en-us'] = "Destination";
@@ -180,16 +90,6 @@ $text['label-destination']['sv-se'] = "Destination";
$text['label-destination']['uk'] = "Номер";
$text['label-destination']['de-at'] = "Ziel";
$text['label-description']['en-us'] = "Description";
$text['label-description']['es-cl'] = "Descripción";
$text['label-description']['pt-pt'] = "Descrição";
$text['label-description']['fr-fr'] = "Description";
$text['label-description']['pt-br'] = "Descrição";
$text['label-description']['pl'] = "Opis";
$text['label-description']['sv-se'] = "Beskrivning";
$text['label-description']['uk'] = "Опис";
$text['label-description']['de-at'] = "Beschreibung";
$text['label-context']['en-us'] = "Context";
$text['label-context']['es-cl'] = "Contexto";
$text['label-context']['pt-pt'] = "Contexto";
@@ -207,7 +107,7 @@ $text['label-alternate_label']['fr-fr'] = "Label alternatif";
$text['label-alternate_label']['pt-br'] = "Etqueta alternativa";
$text['label-alternate_label']['pl'] = "Alternatywna etykieta";
$text['label-alternate_label']['sv-se'] = "Alternativ Etikett";
$text['label-alternate_label']['uk'] = "";
$text['label-alternate_label']['uk'] = "альтернативні етикетки";
$text['label-alternate_label']['de-at'] = "Alternatives Ziel Beschreibung";
$text['label-alternate_destination']['en-us'] = "Alternate Destination";
@@ -217,9 +117,29 @@ $text['label-alternate_destination']['fr-fr'] = "Destination alternative";
$text['label-alternate_destination']['pt-br'] = "Destino alternativo";
$text['label-alternate_destination']['pl'] = "Alternatywna destynacja";
$text['label-alternate_destination']['sv-se'] = "Alternativ Destination";
$text['label-alternate_destination']['uk'] = "";
$text['label-alternate_destination']['uk'] = "альтернативні варіанти призначення";
$text['label-alternate_destination']['de-at'] = "Alternatives Ziel";
$text['label-sound']['en-us'] = "Sound";
$text['label-sound']['es-cl'] = "Sonar";
$text['label-sound']['pt-pt'] = "Som";
$text['label-sound']['fr-fr'] = "Sonner";
$text['label-sound']['pt-br'] = "Som";
$text['label-sound']['pl'] = "Dźwięk";
$text['label-sound']['sv-se'] = "Ljud";
$text['label-sound']['uk'] = "звук";
$text['label-sound']['de-at'] = "Klingen";
$text['label-alternate_sound']['en-us'] = "Alternate Sound";
$text['label-alternate_sound']['es-cl'] = "sonido alternativo";
$text['label-alternate_sound']['pt-pt'] = "som alternativo";
$text['label-alternate_sound']['fr-fr'] = "son suppléant";
$text['label-alternate_sound']['pt-br'] = "Som alternativo";
$text['label-alternate_sound']['pl'] = "Alternatywny dźwięk";
$text['label-alternate_sound']['sv-se'] = "alternativt ljud";
$text['label-alternate_sound']['uk'] = "альтернативний звук";
$text['label-alternate_sound']['de-at'] = "wechseln Klingen";
$text['header-call_flows']['en-us'] = "Call Flows";
$text['header-call_flows']['es-cl'] = "flujo de Llamada";
$text['header-call_flows']['pt-pt'] = "Fluxo de Chamadas";
@@ -254,7 +174,7 @@ $text['description-status']['en-us'] = "Select the status.";
$text['description-status']['es-cl'] = "Seleccione el estado.";
$text['description-status']['pt-pt'] = "Seleccione o estado.";
$text['description-status']['fr-fr'] = "Choisir le statut.";
$text['description-status']['pt-br'] = "Escolha o estado do usuário.";
$text['description-status']['pt-br'] = "Escolha o estado.";
$text['description-status']['pl'] = "Wybierz status użytkownika";
$text['description-status']['sv-se'] = "Välj Status";
$text['description-status']['uk'] = "Виберіть статус користувача";
@@ -264,17 +184,17 @@ $text['description-pin_number']['en-us'] = "Enter the pin number.";
$text['description-pin_number']['es-cl'] = "Ingrese el número PIN.";
$text['description-pin_number']['pt-pt'] = "Introduza o código PIN";
$text['description-pin_number']['fr-fr'] = "Choisir le code PIN.";
$text['description-pin_number']['pt-br'] = "Insira o código PIN";
$text['description-pin_number']['pl'] = "";
$text['description-pin_number']['pt-br'] = "Insira o código PIN.";
$text['description-pin_number']['pl'] = "Wprowadź numer PIN";
$text['description-pin_number']['sv-se'] = "Ange PIN Kod.";
$text['description-pin_number']['uk'] = "";
$text['description-pin_number']['uk'] = "Введіть пін - код.";
$text['description-pin_number']['de-at'] = "Geben Sie einen PIN ein.";
$text['description-name']['en-us'] = "Enter the name.";
$text['description-name']['es-cl'] = "Ingrese el nombre.";
$text['description-name']['pt-pt'] = "Introduza o nome.";
$text['description-name']['fr-fr'] = "Choisr le nom.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pt-br'] = "Insira o nome.";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Ange Namn.";
$text['description-name']['uk'] = "Введіть назву меню";
@@ -284,150 +204,130 @@ $text['description-feature_code']['en-us'] = "Enter the feature code.";
$text['description-feature_code']['es-cl'] = "Ingrese el código distintivo.";
$text['description-feature_code']['pt-pt'] = "Introduza o código de função.";
$text['description-feature_code']['fr-fr'] = "Choisir le code la fonction";
$text['description-feature_code']['pt-br'] = "Insira o código de função";
$text['description-feature_code']['pt-br'] = "Insira o código de função.";
$text['description-feature_code']['pl'] = "Dodaj specjalny kod";
$text['description-feature_code']['sv-se'] = "Ange Funktionskoden.";
$text['description-feature_code']['uk'] = "";
$text['description-feature_code']['uk'] = "Введіть код об'єкта.";
$text['description-feature_code']['de-at'] = "Geben Sie den Stern-Code an.";
$text['description-extension']['en-us'] = "Enter the extension number.";
$text['description-extension']['es-cl'] = "Ingrese el número de extensión.";
$text['description-extension']['pt-pt'] = "Introduza o número da extensão.";
$text['description-extension']['fr-fr'] = "Choisir le numéro d'extension.";
$text['description-extension']['pt-br'] = "Atribua a extensão e números ao dispositivo";
$text['description-extension']['pt-br'] = "Atribua o número de ramal.";
$text['description-extension']['pl'] = "Wprowadź alfanumeryczny numer wewnętrzny. Domyślna konfiguracja pozwala na 2-7 cyfrowe numery wewnętrzne";
$text['description-extension']['sv-se'] = "Ange anknytningsnumret.";
$text['description-extension']['uk'] = "";
$text['description-extension']['uk'] = "Введіть номер розширення.";
$text['description-extension']['de-at'] = "Weisen Sie die Nebenstellen und Linien einem Gerät zu.";
$text['description-destination_label']['en-us'] = "Enter the destination label.";
$text['description-destination_label']['es-cl'] = "Ingrese la etiqueta de destino.";
$text['description-destination_label']['pt-pt'] = "Introduza o destino.";
$text['description-destination_label']['fr-fr'] = "Choisir le label de la destination.";
$text['description-destination_label']['pt-br'] = "Insira o destino";
$text['description-destination_label']['pt-br'] = "Insira o destino.";
$text['description-destination_label']['pl'] = "Wprowadź opis destynacji";
$text['description-destination_label']['sv-se'] = "Ange Destinations Etiketten.";
$text['description-destination_label']['uk'] = "";
$text['description-destination_label']['uk'] = "Введіть мітку призначення.";
$text['description-destination_label']['de-at'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-destination']['en-us'] = "Select the destination.";
$text['description-destination']['es-cl'] = "Seleccione el destino.";
$text['description-destination']['pt-pt'] = "Seleccione o destino.";
$text['description-destination']['fr-fr'] = "Choisir la destination.";
$text['description-destination']['pt-br'] = "Enviar a chamada para a extensão de um menu de IVR, Sala de Conferência ou qualquer outro número.";
$text['description-destination']['pt-br'] = "Selecionar o destino da chamada.";
$text['description-destination']['pl'] = "Wybierz numer docelowy.";
$text['description-destination']['sv-se'] = "Välj destinationen.";
$text['description-destination']['uk'] = "Відправити дзвінок на розширення, меню IVR, конференцію, або будь-який інший номер.";
$text['description-destination']['de-at'] = "Wählen Sie das Ziel.";
$text['description-description']['en-us'] = "Enter a description, if desired.";
$text['description-description']['es-cl'] = "Ingrese una descripción, opcional.";
$text['description-description']['pt-pt'] = "Introduza uma descrição, se desejar.";
$text['description-description']['fr-fr'] = "Entrez une description, si vous le souhaitez.";
$text['description-description']['pt-br'] = "Insira a descrição, caso desejar";
$text['description-description']['pl'] = "Wpisz opis (opcjonalne)";
$text['description-description']['sv-se'] = "Fyll i en beskrivning, om nödvändigt.";
$text['description-description']['uk'] = "Введіть опис, якщо це необхідно.";
$text['description-description']['de-at'] = "Falls gewünscht, geben Sie eine Beschreibung an.";
$text['description-context']['en-us'] = "Enter the context.";
$text['description-context']['es-cl'] = "Ingrese el contexto.";
$text['description-context']['pt-pt'] = "Introduza o contexto";
$text['description-context']['fr-fr'] = "Choisir le contexte.";
$text['description-context']['pt-br'] = "Insira o contexto";
$text['description-context']['pt-br'] = "Insira o contexto.";
$text['description-context']['pl'] = "Wprowadź kontekst";
$text['description-context']['sv-se'] = "Ange Context.";
$text['description-context']['uk'] = "";
$text['description-context']['uk'] = "Введіть контекст.";
$text['description-context']['de-at'] = "Geben Sie den Kontext hier an.";
$text['description-call_flows']['en-us'] = "Direct calls between two destinations by calling a feature code.";
$text['description-call_flows']['es-cl'] = "Llamadas directas entre dos destinatarios llamando a un código distintivo.";
$text['description-call_flows']['pt-pt'] = "Chamadas directas entre dois destinos recorrendo a um código de função.";
$text['description-call_flows']['fr-fr'] = "Appels directs entre deux destinations en appelant une fonction.";
$text['description-call_flows']['pt-br'] = "Para chamadas direta entre dois destinos utilize um código ";
$text['description-call_flows']['pt-br'] = "Chamadas diretas para dois dispositivos utilizando o código de função.";
$text['description-call_flows']['pl'] = "Kieruj rozmowy bezpośrednio pomiędzy dwoma destynacjami poprzez prowadzenie specjalnego kodu.";
$text['description-call_flows']['sv-se'] = "Samtal mellan två destinationer genom att ringa en funktionskod.";
$text['description-call_flows']['uk'] = "";
$text['description-call_flows']['uk'] = "Прямі виклики між двома пунктами шляхом виклику коду функції.";
$text['description-call_flows']['de-at'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Stern-Code wählen.";
$text['description-alternate_label']['en-us'] = "Enter the alternate destination label.";
$text['description-alternate_label']['es-cl'] = "Ingrese la etiqueta de destino alternativo.";
$text['description-alternate_label']['pt-pt'] = "Introduza um destino alternativo.";
$text['description-alternate_label']['fr-fr'] = "Choisir le label de la destination alternative.";
$text['description-alternate_label']['pt-br'] = "Insira um destino alternativo";
$text['description-alternate_label']['pt-br'] = "Insira um destino alternativo.";
$text['description-alternate_label']['pl'] = "Wprowadź alternatywny opis destynacji";
$text['description-alternate_label']['sv-se'] = "Ange den alternativa destinations etiketten.";
$text['description-alternate_label']['uk'] = "";
$text['description-alternate_label']['uk'] = "Введіть альтернативний ярлик призначення.";
$text['description-alternate_label']['de-at'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-alternate_destination']['en-us'] = "Select the alternate destination.";
$text['description-alternate_destination']['es-cl'] = "Seleccione el destino alternativo.";
$text['description-alternate_destination']['pt-pt'] = "Seleccione um destino alternativo.";
$text['description-alternate_destination']['fr-fr'] = "Choisir la destination alternative.";
$text['description-alternate_destination']['pt-br'] = "Selecione um destino alternativo";
$text['description-alternate_destination']['pt-br'] = "Selecione um destino alternativo.";
$text['description-alternate_destination']['pl'] = "Wybierz alternatywną destynację";
$text['description-alternate_destination']['sv-se'] = "Välj den alternativa destinationen.";
$text['description-alternate_destination']['uk'] = "";
$text['description-alternate_destination']['uk'] = "Виберіть інше розташування.";
$text['description-alternate_destination']['de-at'] = "Wählen Sie ein alternatives Ziel.";
$text['confirm-delete']['en-us'] = "Do you really want to delete this?";
$text['confirm-delete']['es-cl'] = "¿Realmente desea ejecutar esta acción?";
$text['confirm-delete']['pt-pt'] = "Deseja realmente remover isto?";
$text['confirm-delete']['fr-fr'] = "Voulez-vour vraiment supprimer cela?";
$text['confirm-delete']['pt-br'] = "Deseja realmente remover isto?";
$text['confirm-delete']['pl'] = "Czy na pewno chcesz to usunąć?";
$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['description-sound']['en-us'] = "Select the sound to play when the status is set to the destinations.";
$text['description-sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino.";
$text['description-sound']['pt-pt'] = "Selecione o som para tocar quando o status é definido como o destino.";
$text['description-sound']['fr-fr'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination.";
$text['description-sound']['pt-br'] = "Selecione o som para tocar quando o status é definido para o destino.";
$text['description-sound']['pl'] = "Wybierz dźwięk do odtworzenia, gdy status jest ustawiony do miejsca przeznaczenia.";
$text['description-sound']['sv-se'] = "Välj ljud att spela när status är inställd på destinationen.";
$text['description-sound']['uk'] = "Виберіть звук для відтворення , коли статус встановлений в пункти призначення.";
$text['description-sound']['de-at'] = "Wählen Sie den Ton zu spielen, wenn der Status auf das Ziel festgelegt ist.";
$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']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['de-at'] = "Speichern";
$text['description-alternate_sound']['en-us'] = "Select the sound to play when status is set to the alternate destination.";
$text['description-alternate_sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino alternativo.";
$text['description-alternate_sound']['pt-pt'] = "Selecione o som para tocar quando o status é definido como o destino alternativo.";
$text['description-alternate_sound']['fr-fr'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination alternative.";
$text['description-alternate_sound']['pt-br'] = "Selecione o som para tocar quando o status é definido para o destino alternativo.";
$text['description-alternate_sound']['pl'] = "Wybierz dźwięk do odtworzenia, gdy status jest ustawiony na alternatywnego przeznaczenia.";
$text['description-alternate_sound']['sv-se'] = "Välj ljud att spela när status är inställd på den alternativa destinationen.";
$text['description-alternate_sound']['uk'] = "Виберіть звук для відтворення , коли встановлено стан альтернативного призначення.";
$text['description-alternate_sound']['de-at'] = "Wählen Sie den Ton zu spielen, wenn der Status auf den alternativen Ziel gesetzt.";
$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']['pl'] = "Edytuj";
$text['button-edit']['sv-se'] = "Editera";
$text['button-edit']['uk'] = "Редагувати";
$text['button-edit']['de-at'] = "Bearbeiten";
$text['recordings']['en-us'] = "Recordings";
$text['recordings']['es-cl'] = "grabaciones";
$text['recordings']['pt-pt'] = "gravações";
$text['recordings']['fr-fr'] = "Recordings";
$text['recordings']['pt-br'] = "Gravações";
$text['recordings']['pl'] = "nagrania";
$text['recordings']['sv-se'] = "inspelningar";
$text['recordings']['uk'] = "записи";
$text['recordings']['de-at'] = "Aufnahmen";
$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']['pl'] = "Usuń";
$text['button-delete']['sv-se'] = "Ta Bort";
$text['button-delete']['uk'] = "Видалити";
$text['button-delete']['de-at'] = "Löschen";
$text['miscellaneous']['en-us'] = "Miscellaneous";
$text['miscellaneous']['es-cl'] = "Diverso";
$text['miscellaneous']['pt-pt'] = "Variado";
$text['miscellaneous']['fr-fr'] = "Divers";
$text['miscellaneous']['pt-br'] = "Diversos";
$text['miscellaneous']['pl'] = "Różne";
$text['miscellaneous']['sv-se'] = "Diverse";
$text['miscellaneous']['uk'] = "Різне";
$text['miscellaneous']['de-at'] = "Sonstiges";
$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']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$text['sounds']['en-us'] = "Sounds";
$text['sounds']['es-cl'] = "Sonidos";
$text['sounds']['pt-pt'] = "Sons";
$text['sounds']['fr-fr'] = "des sons";
$text['sounds']['pt-br'] = "Sons";
$text['sounds']['pl'] = "Dźwięki";
$text['sounds']['sv-se'] = "Ljud";
$text['sounds']['uk'] = "звуки";
$text['sounds']['de-at'] = "Geräusche";
$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']['pl'] = "Dodaj";
$text['button-add']['sv-se'] = "Lägg Till";
$text['button-add']['uk'] = "Додати";
$text['button-add']['de-at'] = "Hinzufügen";
?>
?>
+1
View File
@@ -1,6 +1,7 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Call Flows";
$apps[$x]['menu'][0]['title']['pt-br'] = "Fluxo de chamadas";
$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";
+207 -43
View File
@@ -17,22 +17,27 @@
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
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Lewis Hallam <lewishallam80@gmail.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//includes
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//check permissions
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
@@ -57,8 +62,10 @@ else {
$call_flow_status = check_str($_POST["call_flow_status"]);
$call_flow_pin_number = check_str($_POST["call_flow_pin_number"]);
$call_flow_label = check_str($_POST["call_flow_label"]);
$call_flow_sound = check_str($_POST["call_flow_sound"]);
$call_flow_destination = check_str($_POST["call_flow_destination"]);
$call_flow_anti_label = check_str($_POST["call_flow_anti_label"]);
$call_flow_alternate_label = check_str($_POST["call_flow_alternate_label"]);
$call_flow_alternate_sound = check_str($_POST["call_flow_alternate_sound"]);
$call_flow_alternate_destination = check_str($_POST["call_flow_alternate_destination"]);
$call_flow_description = check_str($_POST["call_flow_description"]);
$dialplan_uuid = check_str($_POST["dialplan_uuid"]);
@@ -68,10 +75,10 @@ else {
$call_flow_app = array_shift($destination_array);
$call_flow_data = join(':', $destination_array);
//seperate the action and the param call_flow_anti_app
//seperate the action and the param call_flow_alternate_app
$alternate_destination_array = explode(":", $call_flow_alternate_destination);
$call_flow_anti_app = array_shift($alternate_destination_array);
$call_flow_anti_data = join(':', $alternate_destination_array);
$call_flow_alternate_app = array_shift($alternate_destination_array);
$call_flow_alternate_data = join(':', $alternate_destination_array);
//set the context for users that are not in the superadmin group
if (!if_group("superadmin")) {
@@ -98,9 +105,9 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//if (strlen($call_flow_label) == 0) { $msg .= $text['message-required'].$text['label-destination_label']."<br>\n"; }
//if (strlen($call_flow_app) == 0) { $msg .= $text['message-required'].$text['label-destination']."<br>\n"; }
//if (strlen($call_flow_data) == 0) { $msg .= $text['message-required'].$text['label-destination']."<br>\n"; }
//if (strlen($call_flow_anti_label) == 0) { $msg .= $text['message-required'].$text['label-alternate_label']."<br>\n"; }
//if (strlen($call_flow_anti_app) == 0) { $msg .= $text['message-required'].$text['label-alternate_destination']."<br>\n"; }
//if (strlen($call_flow_anti_data) == 0) { $msg .= $text['message-required'].$text['label-alternate_destination']."<br>\n"; }
//if (strlen($call_flow_alternate_label) == 0) { $msg .= $text['message-required'].$text['label-alternate_label']."<br>\n"; }
//if (strlen($call_flow_alternate_app) == 0) { $msg .= $text['message-required'].$text['label-alternate_destination']."<br>\n"; }
//if (strlen($call_flow_alternate_data) == 0) { $msg .= $text['message-required'].$text['label-alternate_destination']."<br>\n"; }
//if (strlen($call_flow_description) == 0) { $msg .= $text['message-required'].$text['label-description']."<br>\n"; }
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
require_once "resources/header.php";
@@ -134,11 +141,13 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$sql .= "call_flow_status, ";
$sql .= "call_flow_pin_number, ";
$sql .= "call_flow_label, ";
$sql .= "call_flow_sound, ";
$sql .= "call_flow_app, ";
$sql .= "call_flow_data, ";
$sql .= "call_flow_anti_label, ";
$sql .= "call_flow_anti_app, ";
$sql .= "call_flow_anti_data, ";
$sql .= "call_flow_alternate_label, ";
$sql .= "call_flow_alternate_sound, ";
$sql .= "call_flow_alternate_app, ";
$sql .= "call_flow_alternate_data, ";
$sql .= "call_flow_description ";
$sql .= ")";
$sql .= "values ";
@@ -153,11 +162,13 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$sql .= "'$call_flow_status', ";
$sql .= "'$call_flow_pin_number', ";
$sql .= "'$call_flow_label', ";
$sql .= "'$call_flow_sound', ";
$sql .= "'$call_flow_app', ";
$sql .= "'$call_flow_data', ";
$sql .= "'$call_flow_anti_label', ";
$sql .= "'$call_flow_anti_app', ";
$sql .= "'$call_flow_anti_data', ";
$sql .= "'$call_flow_alternate_label', ";
$sql .= "'$call_flow_alternate_sound', ";
$sql .= "'$call_flow_alternate_app', ";
$sql .= "'$call_flow_alternate_data', ";
$sql .= "'$call_flow_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
@@ -179,11 +190,13 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$sql .= "call_flow_status = '$call_flow_status', ";
$sql .= "call_flow_pin_number = '$call_flow_pin_number', ";
$sql .= "call_flow_label = '$call_flow_label', ";
$sql .= "call_flow_sound = '$call_flow_sound', ";
$sql .= "call_flow_app = '$call_flow_app', ";
$sql .= "call_flow_data = '$call_flow_data', ";
$sql .= "call_flow_anti_label = '$call_flow_anti_label', ";
$sql .= "call_flow_anti_app = '$call_flow_anti_app', ";
$sql .= "call_flow_anti_data = '$call_flow_anti_data', ";
$sql .= "call_flow_alternate_label = '$call_flow_alternate_label', ";
$sql .= "call_flow_alternate_sound = '$call_flow_alternate_sound', ";
$sql .= "call_flow_alternate_app = '$call_flow_alternate_app', ";
$sql .= "call_flow_alternate_data = '$call_flow_alternate_data', ";
$sql .= "call_flow_description = '$call_flow_description' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and call_flow_uuid = '$call_flow_uuid'";
@@ -221,7 +234,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$dialplan->dialplan_uuid = $dialplan_uuid;
$dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction
$dialplan->dialplan_detail_type = 'destination_number';
$dialplan->dialplan_detail_data = '^'.str_replace('*', '\*', $call_flow_feature_code).'$';
$dialplan->dialplan_detail_data = '^'.str_replace('+', '\+', str_replace('*', '\*', $call_flow_feature_code)).'$';
$dialplan->dialplan_detail_break = 'on-true';
//$dialplan->dialplan_detail_inline = '';
$dialplan->dialplan_detail_group = '1';
@@ -278,7 +291,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$dialplan->dialplan_uuid = $dialplan_uuid;
$dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction
$dialplan->dialplan_detail_type = 'destination_number';
$dialplan->dialplan_detail_data = '^'.str_replace('*', '\*', $call_flow_extension).'$';
$dialplan->dialplan_detail_data = '^'.str_replace('+', '\+', str_replace('*', '\*', $call_flow_extension)).'$';
//$dialplan->dialplan_detail_break = '';
//$dialplan->dialplan_detail_inline = '';
$dialplan->dialplan_detail_group = '2';
@@ -337,7 +350,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//clear the cache
$cache = new cache;
$cache->delete("memcache delete dialplan:".$call_flow_context);
$cache->delete("dialplan:".$call_flow_context);
//set the message
if ($action == "add") {
@@ -374,12 +387,14 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$call_flow_context = $row["call_flow_context"];
$call_flow_status = $row["call_flow_status"];
$call_flow_label = $row["call_flow_label"];
$call_flow_sound = $row["call_flow_sound"];
$call_flow_app = $row["call_flow_app"];
$call_flow_pin_number = $row["call_flow_pin_number"];
$call_flow_data = $row["call_flow_data"];
$call_flow_anti_label = $row["call_flow_anti_label"];
$call_flow_anti_app = $row["call_flow_anti_app"];
$call_flow_anti_data = $row["call_flow_anti_data"];
$call_flow_alternate_label = $row["call_flow_alternate_label"];
$call_flow_alternate_sound = $row["call_flow_alternate_sound"];
$call_flow_alternate_app = $row["call_flow_alternate_app"];
$call_flow_alternate_data = $row["call_flow_alternate_data"];
$call_flow_description = $row["call_flow_description"];
$dialplan_uuid = $row["dialplan_uuid"];
@@ -393,10 +408,10 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//if superadmin show both the app and data
if (if_group("superadmin")) {
$alternate_destination_label = $call_flow_anti_app.':'.$call_flow_anti_data;
$alternate_destination_label = $call_flow_alternate_app.':'.$call_flow_alternate_data;
}
else {
$alternate_destination_label = $call_flow_anti_data;
$alternate_destination_label = $call_flow_alternate_data;
}
}
unset ($prep_statement);
@@ -416,6 +431,151 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$document['title'] = $text['title-call_flow-add'];
}
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = '".$_SESSION["domain_uuid"]."' ";
$sql .= "order by recording_name asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$recordings = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
if (if_group("superadmin")) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
//echo " tb.setAttribute('style', 'width: 380px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
}
function sound_select_list($var, $name, $description_name, $load_sound=false) {
global $text, $recordings, $db;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-' . $description_name]."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo "<select name='$name' class='formfld' ".((if_group("superadmin")) ? "onchange='changeToInput(this);'" : null).">\n";
echo " <option value=''></option>\n";
//misc optgroup
if (if_group("superadmin")) {
echo "<optgroup label=".$text['miscellaneous'].">\n";
echo " <option value='say:'>say:</option>\n";
echo " <option value='tone_stream:'>tone_stream:</option>\n";
echo "</optgroup>\n";
}
//recordings
$tmp_selected = false;
if (count($recordings) > 0) {
echo "<optgroup label=".$text['recordings'].">\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
if ($var == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && strlen($var) > 0) {
$tmp_selected = true;
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename."' selected='selected'>".$recording_name."</option>\n";
}
else if ($var == $recording_filename && strlen($var) > 0) {
$tmp_selected = true;
echo " <option value='".$recording_filename."' selected='selected'>".$recording_name."</option>\n";
}
else {
echo " <option value='".$recording_filename."'>".$recording_name."</option>\n";
}
}
echo "</optgroup>\n";
}
//phrases
$sql = "select * from v_phrases where domain_uuid = '".$domain_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
echo "<optgroup label='Phrases'>\n";
foreach ($result as &$row) {
if ($var == "phrase:".$row["phrase_uuid"]) {
$tmp_selected = true;
echo " <option value='phrase:".$row["phrase_uuid"]."' selected='selected'>".$row["phrase_name"]."</option>\n";
}
else {
echo " <option value='phrase:".$row["phrase_uuid"]."'>".$row["phrase_name"]."</option>\n";
}
}
unset ($prep_statement);
echo "</optgroup>\n";
}
//sounds
if ($load_sound) {
$file = new file;
$sound_files = $file->sounds();
if (is_array($sound_files)) {
echo "<optgroup label=".$text["sounds"].">\n";
foreach ($sound_files as $value) {
if (strlen($value) > 0) {
if (substr($var, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
$var = substr($var, 71);
}
if ($var == $value) {
$tmp_selected = true;
echo " <option value='$value' selected='selected'>$value</option>\n";
}
else {
echo " <option value='$value'>$value</option>\n";
}
}
}
echo "</optgroup>\n";
}
}
//select
if (if_group("superadmin")) {
if (!$tmp_selected && strlen($var) > 0) {
echo "<optgroup label='Selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$var)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$var."' selected='selected'>".$var."</option>\n";
}
else if (substr($var, -3) == "wav" || substr($var, -3) == "mp3") {
echo " <option value='".$var."' selected='selected'>".$var."</option>\n";
}
else {
echo " <option value='".$var."' selected='selected'>".$var."</option>\n";
}
echo "</optgroup>\n";
}
unset($tmp_selected);
}
echo " </select>\n";
echo " <br />\n";
echo $text['description-' . $description_name]."\n";
echo "</td>\n";
echo "</tr>\n";
}
//show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
@@ -502,16 +662,16 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
}
}
if ($call_flow_status == "false") {
if (strlen($call_flow_anti_label) > 0) {
echo " <option value='false' selected='selected'>$call_flow_anti_label</option>\n";
if (strlen($call_flow_alternate_label) > 0) {
echo " <option value='false' selected='selected'>$call_flow_alternate_label</option>\n";
}
else {
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
}
}
else {
if (strlen($call_flow_anti_label) > 0) {
echo " <option value='false'>$call_flow_anti_label</option>\n";
if (strlen($call_flow_alternate_label) > 0) {
echo " <option value='false'>$call_flow_alternate_label</option>\n";
}
else {
echo " <option value='false'>".$text['label-false']."</option>\n";
@@ -545,6 +705,8 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_sound, 'call_flow_sound', 'sound', true);
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-destination']."\n";
@@ -568,20 +730,22 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo " ".$text['label-alternate_label']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_anti_label' maxlength='255' value=\"$call_flow_anti_label\">\n";
echo " <input class='formfld' type='text' name='call_flow_alternate_label' maxlength='255' value=\"$call_flow_alternate_label\">\n";
echo "<br />\n";
echo $text['description-alternate_label']."\n";
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_alternate_sound, 'call_flow_alternate_sound', 'alternate_sound', true);
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-alternate_destination']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$select_value = '';
if (strlen($call_flow_anti_app.$call_flow_anti_data) > 0) {
$select_value = $call_flow_anti_app.':'.$call_flow_anti_data;
if (strlen($call_flow_alternate_app.$call_flow_alternate_data) > 0) {
$select_value = $call_flow_alternate_app.':'.$call_flow_alternate_data;
}
echo $destination->select('dialplan', 'call_flow_alternate_destination', $select_value);
unset($select_value);
@@ -617,4 +781,4 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//include the footer
require_once "resources/footer.php";
?>
?>
+5 -5
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -77,7 +77,7 @@ require_once "resources/paging.php";
}
//prepare to page the results
$rows_per_page = 10;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -124,7 +124,7 @@ require_once "resources/paging.php";
echo $row['call_flow_label'];
}
else {
echo $row['call_flow_anti_label'];
echo $row['call_flow_alternate_label'];
}
echo "&nbsp;\n";
echo " </td>\n";
@@ -132,7 +132,7 @@ require_once "resources/paging.php";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_extension']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_feature_code']."&nbsp;</td>\n";
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_app']." ".$row['call_flow_data']."&nbsp;</td>\n";
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_anti_app']." ".$row['call_flow_anti_data']."&nbsp;</td>\n";
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['call_flow_alternate_app']." ".$row['call_flow_alternate_data']."&nbsp;</td>\n";
echo " <td valign='top' class='row_stylebg' width='30%'>".$row['call_flow_description']."&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('call_flow_edit')) {
@@ -169,4 +169,4 @@ require_once "resources/paging.php";
//include the footer
require_once "resources/footer.php";
?>
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Desvio de Chamadas, Seguir-me e Não Perturbar.";
$apps[$x]['description']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "Desvio de chamadas, Siga-me e Não perturbe (DND).";
//permission details
$apps[$x]['permissions'][$y]['name'] = "follow_me";
+96 -116
View File
@@ -1,14 +1,16 @@
<?php
$text['title']['en-us'] = "Calls";
$text['title']['es-cl'] = "Llamadas";
$text['title']['pt-pt'] = "Chamadas";
$text['title']['fr-fr'] = "Appels";
$text['title']['pt-br'] = "Configurações da Conta";
$text['title']['pl'] = "Rozmowy";
$text['title']['sv-se'] = "Samtal ";
$text['title']['uk'] = "Дзвінки";
$text['title']['de-at'] = "Anrufe";
$text['title']['en-us'] = "Call Routing";
$text['title']['es-cl'] = "enrutamiento de llamadas";
$text['title']['pt-pt'] = "Roteamento de chamadas";
$text['title']['fr-fr'] = "routage des appels";
$text['title']['uk'] = "маршрутизація викликів";
$text['title']['pl'] = "Call Routing";
$text['title']['sv-se'] = "Call Routing";
$text['title']['de-at'] = "Call Routing";
$text['title']['ro'] = "rutare de apel";
$text['title']['ar-eg'] = "توجيه الدعوة";
$text['title']['he'] = "ניתוב שיחות";
$text['table-tools']['en-us'] = "Tools";
$text['table-tools']['es-cl'] = "Herramientas";
@@ -74,7 +76,7 @@ $text['label-ring-delay']['en-us'] = "Delay";
$text['label-ring-delay']['es-cl'] = "Retardo";
$text['label-ring-delay']['pt-pt'] = "Atraso";
$text['label-ring-delay']['fr-fr'] = "Délais";
$text['label-ring-delay']['pt-br'] = "Delay";
$text['label-ring-delay']['pt-br'] = "Atraso";
$text['label-ring-delay']['pl'] = "Opóznienie";
$text['label-ring-delay']['sv-se'] = "Fördröjning ";
$text['label-ring-delay']['uk'] = "Затримка";
@@ -101,17 +103,6 @@ $text['label-on-busy']['sv-se'] = "Vid Upptaget ";
$text['label-on-busy']['uk'] = "Якщо зайнято";
$text['label-on-busy']['de-at'] = "Bei Besetzt";
$text['label-ignore-busy']['en-us'] = "Ignore Busy";
$text['label-ignore-busy']['es-cl'] = "";
$text['label-ignore-busy']['pt-pt'] = "";
$text['label-ignore-busy']['fr-fr'] = "";
$text['label-ignore-busy']['it-it'] = "";
$text['label-ignore-busy']['pt-br'] = "";
$text['label-ignore-busy']['pl'] = "";
$text['label-ignore-busy']['sv-se'] = "";
$text['label-ignore-busy']['uk'] = "";
$text['label-ignore-busy']['de-at'] = "";
$text['label-number']['en-us'] = "Number";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['pt-pt'] = "Número";
@@ -133,6 +124,28 @@ $text['label-no_answer']['sv-se'] = "Inget Svar ";
$text['label-no_answer']['uk'] = "Без відповіді";
$text['label-no_answer']['de-at'] = "Keine Antwort";
$text['label-not_registered']['en-us'] = "Not Registered";
$text['label-not_registered']['es-cl'] = "";
$text['label-not_registered']['pt-pt'] = "";
$text['label-not_registered']['fr-fr'] = "";
$text['label-not_registered']['it-it'] = "";
$text['label-not_registered']['pt-br'] = "Sem registro";
$text['label-not_registered']['pl'] = "";
$text['label-not_registered']['sv-se'] = "";
$text['label-not_registered']['uk'] = "";
$text['label-not_registered']['de-at'] = "";
$text['label-ignore-busy']['en-us'] = "Ignore Busy";
$text['label-ignore-busy']['es-cl'] = "";
$text['label-ignore-busy']['pt-pt'] = "";
$text['label-ignore-busy']['fr-fr'] = "";
$text['label-ignore-busy']['it-it'] = "";
$text['label-ignore-busy']['pt-br'] = "Ignorar ocupado";
$text['label-ignore-busy']['pl'] = "";
$text['label-ignore-busy']['sv-se'] = "";
$text['label-ignore-busy']['uk'] = "";
$text['label-ignore-busy']['de-at'] = "Ignorieren bei Besetzt";
$text['label-follow-me']['en-us'] = "Follow Me";
$text['label-follow-me']['es-cl'] = "Sígueme";
$text['label-follow-me']['pt-pt'] = "Segue-me";
@@ -141,58 +154,18 @@ $text['label-follow-me']['pt-br'] = "Siga-me";
$text['label-follow-me']['pl'] = "Podążaj za mną";
$text['label-follow-me']['sv-se'] = "Följ Mig ";
$text['label-follow-me']['uk'] = "";
$text['label-follow-me']['de-at'] = "Follow Me";
$text['label-enabled']['en-us'] = "Enabled";
$text['label-enabled']['es-cl'] = "Activo";
$text['label-enabled']['pt-pt'] = "Activo";
$text['label-enabled']['fr-fr'] = "Activé";
$text['label-enabled']['pt-br'] = "Habilitado";
$text['label-enabled']['pl'] = "Włączony";
$text['label-enabled']['sv-se'] = "Aktiverad ";
$text['label-enabled']['uk'] = "Включено";
$text['label-enabled']['de-at'] = "An";
$text['label-enable']['en-us'] = "Enable";
$text['label-enable']['es-cl'] = "Activar";
$text['label-enable']['pt-pt'] = "Activar";
$text['label-enable']['fr-fr'] = "Activer";
$text['label-enable']['pt-br'] = "Ativar";
$text['label-enable']['pl'] = "Włącz";
$text['label-enable']['sv-se'] = "Aktivera ";
$text['label-enable']['uk'] = "";
$text['label-enable']['de-at'] = "Aktivieren";
$text['label-follow-me']['de-at'] = "Anrufweiterschaltung";
$text['label-dnd']['en-us'] = "Do Not Disturb";
$text['label-dnd']['es-cl'] = "No Molestar";
$text['label-dnd']['pt-pt'] = "Não Perturbar";
$text['label-dnd']['fr-fr'] = "Ne pas déranger";
$text['label-dnd']['pt-br'] = "Não Pertube";
$text['label-dnd']['pt-br'] = "Não Pertube (DND)";
$text['label-dnd']['pl'] = "Nie przeszkadzaj (DND)";
$text['label-dnd']['sv-se'] = "Stör Ej ";
$text['label-dnd']['uk'] = "Не турбувати";
$text['label-dnd']['de-at'] = "Bitte nicht stören";
$text['label-disabled']['en-us'] = "Disabled";
$text['label-disabled']['es-cl'] = "Desactivado";
$text['label-disabled']['pt-pt'] = "Desactivo";
$text['label-disabled']['fr-fr'] = "Desactivé";
$text['label-disabled']['pt-br'] = "Inválido";
$text['label-disabled']['pl'] = "Wyłączony";
$text['label-disabled']['sv-se'] = "Inaktiverad ";
$text['label-disabled']['uk'] = "Відключено";
$text['label-disabled']['de-at'] = "Inaktiv";
$text['label-disable']['en-us'] = "Disable";
$text['label-disable']['es-cl'] = "Desactivar";
$text['label-disable']['pt-pt'] = "Desactivo";
$text['label-disable']['fr-fr'] = "Désactiver";
$text['label-disable']['pt-br'] = "Desativado";
$text['label-disable']['pl'] = "Wyłącz";
$text['label-disable']['sv-se'] = "Inaktivera ";
$text['label-disable']['uk'] = "Відключити";
$text['label-disable']['de-at'] = "Deaktivieren";
$text['label-destinations']['en-us'] = "Destinations";
$text['label-destinations']['es-cl'] = "Destinos";
$text['label-destinations']['fr-fr'] = "Destinations";
@@ -207,7 +180,7 @@ $text['label-destination_timeout']['en-us'] = "Timeout";
$text['label-destination_timeout']['es-cl'] = "Timeout";
$text['label-destination_timeout']['fr-fr'] = "Timeout";
$text['label-destination_timeout']['pt-pt'] = "Timeout";
$text['label-destination_timeout']['pt-br'] = "Tempo de saída";
$text['label-destination_timeout']['pt-br'] = "Tempo limite";
$text['label-destination_timeout']['pl'] = "Limit czasowy";
$text['label-destination_timeout']['sv-se'] = "Tidsgräns ";
$text['label-destination_timeout']['uk'] = "Таймаут";
@@ -247,7 +220,7 @@ $text['label-destination_number']['en-us'] = "Destination";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['fr-fr'] = "Destination";
$text['label-destination_number']['pt-pt'] = "Destino";
$text['label-destination_number']['pt-br'] = "Desvio";
$text['label-destination_number']['pt-br'] = "Destino";
$text['label-destination_number']['pl'] = "Destynacja";
$text['label-destination_number']['sv-se'] = "Destination Nummer ";
$text['label-destination_number']['uk'] = "Номер";
@@ -257,7 +230,7 @@ $text['label-destination_delay']['en-us'] = "Delay";
$text['label-destination_delay']['es-cl'] = "Retraso";
$text['label-destination_delay']['fr-fr'] = "Délais";
$text['label-destination_delay']['pt-pt'] = "Atraso";
$text['label-destination_delay']['pt-br'] = "Delay";
$text['label-destination_delay']['pt-br'] = "Atraso";
$text['label-destination_delay']['pl'] = "Opóźnienie";
$text['label-destination_delay']['sv-se'] = "Fördröjning ";
$text['label-destination_delay']['uk'] = "Затримка";
@@ -287,7 +260,7 @@ $text['label-cid-name-prefix']['en-us'] = "Caller ID Name";
$text['label-cid-name-prefix']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['pt-pt'] = "Nome do Chamador";
$text['label-cid-name-prefix']['fr-fr'] = "Préfixe de l'appelant";
$text['label-cid-name-prefix']['pt-br'] = "Nome do discador";
$text['label-cid-name-prefix']['pt-br'] = "Nome (ID) de origem";
$text['label-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego";
$text['label-cid-name-prefix']['sv-se'] = "Namnpresentation ";
$text['label-cid-name-prefix']['uk'] = "Caller ID Ім’я";
@@ -297,7 +270,7 @@ $text['label-call-prompt']['en-us'] = "Call Prompt";
$text['label-call-prompt']['es-cl'] = "Aviso de Llamadas";
$text['label-call-prompt']['pt-pt'] = "Espoletar Chamada";
$text['label-call-prompt']['fr-fr'] = "Annonce d'appel";
$text['label-call-prompt']['pt-br'] = "Prompt chamada";
$text['label-call-prompt']['pt-br'] = "Prompt de chamada";
$text['label-call-prompt']['pl'] = "Potwierdź przed odebraniem rozmowy";
$text['label-call-prompt']['sv-se'] = "Samtals Verifiering ";
$text['label-call-prompt']['uk'] = "";
@@ -311,14 +284,28 @@ $text['label-call-forward']['pt-br'] = "Encaminhamento de chamadas";
$text['label-call-forward']['pl'] = "Przekierowanie";
$text['label-call-forward']['sv-se'] = "Vidarekoppling ";
$text['label-call-forward']['uk'] = "Переадресація";
$text['label-call-forward']['de-at'] = "Ruf Weiterleitung";
$text['label-call-forward']['de-at'] = "Rufumleitung";
$text['header-call_routing']['en-us'] = "Call Routing";
$text['header-call_routing']['es-cl'] = "Enrutamiento de Llamadas";
$text['header-call_routing']['pt-pt'] = "Roteamento de Chamadas";
$text['header-call_routing']['fr-fr'] = "Routage des Appels";
$text['header-call_routing']['pt-br'] = "Roteamento de Chamadas";
$text['header-call_routing']['pl'] = "Trasy połączeń";
$text['header-call_routing']['he'] = "ניתוב שיחות";
$text['header-call_routing']['uk'] = "маршрутизація викликів";
$text['header-call_routing']['sv-se'] = "samtals Rutter";
$text['header-call_routing']['de-at'] = "Anrufrouten";
$text['header-call_routing']['ro'] = "Маршрутизация вызовов";
$text['header-call_routing']['fa'] = "";
$text['header-call_routing']['ar-eg'] = "توجيه الدعوة";
$text['description-on-busy']['en-us'] = "If enabled, it overrides the value of voicemail enabling in extension.";
$text['description-on-busy']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-on-busy']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-on-busy']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver ocupado";
$text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo algum ramal atender quando estiver ocupado.";
$text['description-on-busy']['pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen. ";
$text['description-on-busy']['uk'] = "";
@@ -335,10 +322,21 @@ $text['description-no_answer']['sv-se'] = "Om aktiverad, så tar den överhand f
$text['description-no_answer']['uk'] = "";
$text['description-no_answer']['de-at'] = "Falls aktiv, wird der Wert 'Mailbox eingeschaltet' in der Nebenstelle überschrieben";
$text['description-not_registered']['en-us'] = "If endpoint is not reachable, forward to this destination before going to voicemail.";
$text['description-not_registered']['es-cl'] = "";
$text['description-not_registered']['pt-pt'] = "";
$text['description-not_registered']['fr-fr'] = "";
$text['description-not_registered']['it-it'] = "";
$text['description-not_registered']['pt-br'] = "Se o destino não for alcançável, desvia a chamata para este destino antes de enviar para o correio de voz. ";
$text['description-not_registered']['pl'] = "";
$text['description-not_registered']['sv-se'] = "";
$text['description-not_registered']['uk'] = "";
$text['description-not_registered']['de-at'] = "";
$text['description-cid-number-prefix']['en-us'] = "Set the caller ID number prefix.";
$text['description-cid-number-prefix']['es-cl'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['pt-pt'] = "Defina o número do Chamador";
$text['description-cid-number-prefix']['pt-br'] = "Defina o número do prefixo";
$text['description-cid-number-prefix']['pt-br'] = "Defina o número do prefixo.";
$text['description-cid-number-prefix']['pl'] = "Prefiks prezentacji numeru dzwoniącego.";
$text['description-cid-number-prefix']['sv-se'] = "Ange nummerpresentation prefix. ";
$text['description-cid-number-prefix']['uk'] = "";
@@ -349,7 +347,7 @@ $text['description-cid-name-prefix']['en-us'] = "Set the caller ID name prefix."
$text['description-cid-name-prefix']['es-cl'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['pt-pt'] = "Defina o nome do Chamador";
$text['description-cid-name-prefix']['fr-fr'] = "Choisr le péfixe du nom d'appelant.";
$text['description-cid-name-prefix']['pt-br'] = "Defina o nome do discador";
$text['description-cid-name-prefix']['pt-br'] = "Defina o nome (ID) do discador.";
$text['description-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego.";
$text['description-cid-name-prefix']['sv-se'] = "Ange namnpresentation prefix. ";
$text['description-cid-name-prefix']['uk'] = "";
@@ -359,37 +357,27 @@ $text['description-call-prompt']['en-us'] = "Prompt to accept the call for exter
$text['description-call-prompt']['es-cl'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['pt-pt'] = "Aceitar chamada para destinos externos.";
$text['description-call-prompt']['fr-fr'] = "Annonce pour accepter l'appel venant de destinations externes.";
$text['description-call-prompt']['pt-br'] = "Aceiter chamada para destinos externos";
$text['description-call-prompt']['pt-br'] = "Perguntar para aceitar chamados de destinatários externos.";
$text['description-call-prompt']['pl'] = "Zapytaj czy akceptować rozmowę do zewnętrznych destynacji.";
$text['description-call-prompt']['sv-se'] = "Kräv verifiering för att ta emot samtal för externa destinationer. ";
$text['description-call-prompt']['uk'] = "";
$text['description-call-prompt']['de-at'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-3']['en-us'] = "The following list the extensions that have been assigned to this user account.";
$text['description-3']['es-cl'] = "El siguiente listado muestra las extensiones que han sido asignadas a esta cuenta de usuario.";
$text['description-3']['pt-pt'] = "A tabela seguinte lista as extensões que foram atribuídas a esta conta de utilizador.";
$text['description-3']['fr-fr'] = "Ici la liste des extensions assignées à cet usager.";
$text['description-3']['pt-br'] = "Utilize os campos para filtrar a informação sobre os registos de chamadas desejados.";
$text['description-3']['pl'] = "Widoczne są numery wewnętrzne przypisane to danego konta użytkownika.";
$text['description-3']['sv-se'] = "Följande listar anknytningar som har knytets mot användarkontot. ";
$text['description-3']['uk'] = "";
$text['description-3']['de-at'] = "Nachfolgend werden alle Nebenstellen aufgelistet, die diesem Benutzerkonto zugeordnet sind.";
$text['description-2']['en-us'] = "Use the links to configure call forward follow me, or do not disturb.";
$text['description-2']['es-cl'] = "Utilice los links para configurar reenvio de llamada, sígueme o no Molestar.";
$text['description-2']['pt-pt'] = "Utilizar os links para definir as funcinalidades de encaminhamento de chamada, seguimento ou de não perturbar.";
$text['description-2']['fr-fr'] = "Utiliser les liens afin de configurer le renvoi 'follow me', ou ne pas déranger.";
$text['description-2']['pt-br'] = "A informação contem a origem, destino, duração e outros detalhes úteis da chamada.";
$text['description-2']['pl'] = "Za pomocą poniższych linków można skonfigurować przekierowania, usługę „Podążaj z mną” lub „Nie przeszkadzać” (DnD).";
$text['description-2']['sv-se'] = "Använd länkarna för att konfigurera Vidarekoppling, Följ Mig och Stör Ej. ";
$text['description-2']['uk'] = "";
$text['description-2']['de-at'] = "Benutzen Sie die Funktionen um Weiterleitung, Follow Me oder Bitte nicht stören zu konfigurieren.";
$text['description-call_routing']['en-us'] = "Define alternate inbound call handling for the following extensions.";
$text['description-call_routing']['es-cl'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['pt-pt'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['fr-fr'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
$text['description-call_routing']['pt-br'] = "Defina o tratamento de entradas alternativas para os seguintes ramais. ";
$text['description-call_routing']['pl'] = "Definiowanie alternatywnego połączenia przychodzącego obsługi dla następujących rozszerzeń.";
$text['description-call_routing']['sv-se'] = "Definiera alternativa inkommande samtalshantering för följande tillägg.";
$text['description-call_routing']['uk'] = "Визначити обробку для наступних розширень альтернативного вхідного дзвінка.";
$text['description-call_routing']['de-at'] = "Definieren Sie alternative eingehende Anruf für die folgenden Erweiterungen der Handhabung.";
$text['description']['en-us'] = "Directs incoming calls for extension:";
$text['description']['es-cl'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['pt-pt'] = "Direciona as chamadas recebidas para a extensão:";
$text['description']['fr-fr'] = "Rediriger les appels entrant pour l'extension:";
$text['description']['pt-br'] = "Editar informações da conta.";
$text['description']['pt-br'] = "Direciona as chamadas que estão entrando para um ramal.";
$text['description']['pl'] = "Kieruj rozmowy przychodzące na numer wewnętrzny:";
$text['description']['sv-se'] = "Styr inkommande samtal för anknytning: ";
$text['description']['uk'] = "Керування вхідними дзвінками для розширення";
@@ -442,7 +430,7 @@ $text['ckeck-false']['uk'] = "";
$text['ckeck-false']['de-at'] = "";
$text['check-true']['en-us'] = "True";
$text['check-true']['pt-br'] = "";
$text['check-true']['pt-br'] = "Sim";
$text['check-true']['pl'] = "Tak";
$text['check-true']['sv-se'] = "Sann ";
$text['check-true']['uk'] = "Так";
@@ -451,7 +439,7 @@ $text['check-true']['de-at'] = "An";
$text['check-simultaneous']['en-us'] = "simultaneous";
$text['check-simultaneous']['fr-fr'] = "simultanément";
$text['check-simultaneous']['pt-br'] = "";
$text['check-simultaneous']['pt-br'] = "Simultâneo";
$text['check-simultaneous']['pl'] = "jednoczesne";
$text['check-simultaneous']['sv-se'] = "Samtidiga ";
$text['check-simultaneous']['uk'] = "одночасно";
@@ -459,38 +447,30 @@ $text['check-simultaneous']['de-at'] = "gleichzeitig";
$text['check-sequence']['en-us'] = "sequence";
$text['check-sequence']['fr-fr'] = "séquence";
$text['check-sequence']['pt-br'] = "";
$text['check-sequence']['pt-br'] = "Sequência";
$text['check-sequence']['pl'] = "kolejność";
$text['check-sequence']['sv-se'] = "sekvens ";
$text['check-sequence']['uk'] = "послідовно";
$text['check-sequence']['de-at'] = "sequenziell";
$text['check-false']['en-us'] = "False";
$text['check-false']['pt-br'] = "";
$text['check-false']['pt-br'] = "Não";
$text['check-false']['pl'] = "Nie";
$text['check-false']['sv-se'] = "Falsk ";
$text['check-false']['uk'] = "Ні";
$text['check-false']['fr-fr'] = "";
$text['check-false']['de-at'] = "Aus";
$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']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara ";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['de-at'] = "Speichern";
$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']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka ";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$text['button-view_all']['en-us'] = "View All";
$text['button-view_all']['es-cl'] = "Mostrar Todos";
$text['button-view_all']['pt-pt'] = "Mostrar Todos";
$text['button-view_all']['pt-br'] = "Mostrar Todos";
$text['button-view_all']['fr-fr'] = "Tout Montrer";
$text['button-view_all']['pl'] = "Pokaż wszystkie";
$text['button-view_all']['uk'] = "Показати всі";
$text['button-view_all']['sv-se'] = "Visa Allt";
$text['button-view_all']['ro'] = "";
$text['button-view_all']['de-at'] = "Alle anzeigen";
$text['button-view_all']['he'] = "הצג הכל";
?>
+18
View File
@@ -1,3 +1,21 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Call Routing";
$apps[$x]['menu'][0]['title']['es-mx'] = "enrutamiento de llamadas";
$apps[$x]['menu'][0]['title']['de-de'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-ch'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-at'] = "Call Routing";
$apps[$x]['menu'][0]['title']['fr-fr'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ca'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ch'] = "routage des appels";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Roteamento de chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "roteamento de chamadas";
$apps[$x]['menu'][0]['uuid'] = "4e4df00b-aafb-45a8-82c1-cdabc921889c";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/calls/calls.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>
+89 -35
View File
@@ -63,7 +63,7 @@ else {
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and extension_uuid = '$extension_uuid' ";
if (!(if_group("admin") || if_group("superadmin"))) {
if (!(permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb'))) {
if (count($_SESSION['user']['extension']) > 0) {
$sql .= "and (";
$x = 0;
@@ -79,7 +79,6 @@ else {
$sql .= "and extension = 'disabled' ";
}
}
$sql .= "and enabled = 'true' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
@@ -102,6 +101,8 @@ else {
$forward_busy_enabled = $row["forward_busy_enabled"];
$forward_no_answer_destination = $row["forward_no_answer_destination"];
$forward_no_answer_enabled = $row["forward_no_answer_enabled"];
$forward_user_not_registered_destination = $row["forward_user_not_registered_destination"];
$forward_user_not_registered_enabled = $row["forward_user_not_registered_enabled"];
$follow_me_uuid = $row["follow_me_uuid"];
$forward_caller_id_uuid = $row["forward_caller_id_uuid"];
break; //limit to 1 row
@@ -122,6 +123,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$forward_busy_destination = check_str($_POST["forward_busy_destination"]);
$forward_no_answer_enabled = check_str($_POST["forward_no_answer_enabled"]);
$forward_no_answer_destination = check_str($_POST["forward_no_answer_destination"]);
$forward_user_not_registered_destination = check_str($_POST["forward_user_not_registered_destination"]);
$forward_user_not_registered_enabled = check_str($_POST["forward_user_not_registered_enabled"]);
$forward_caller_id_uuid = check_str($_POST["forward_caller_id_uuid"]);
$cid_name_prefix = check_str($_POST["cid_name_prefix"]);
$cid_number_prefix = check_str($_POST["cid_number_prefix"]);
@@ -371,6 +374,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$sql .= "forward_busy_enabled = '".$forward_busy_enabled."', ";
$sql .= "forward_no_answer_destination = '".$forward_no_answer_destination."', ";
$sql .= "forward_no_answer_enabled = '".$forward_no_answer_enabled."', ";
$sql .= "forward_user_not_registered_destination = '".$forward_user_not_registered_destination."', ";
$sql .= "forward_user_not_registered_enabled = '".$forward_user_not_registered_enabled."', ";
$sql .= "forward_caller_id_uuid = ".(($forward_caller_id_uuid != '') ? "'".$forward_caller_id_uuid."' " : "null ");
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and extension_uuid = '".$extension_uuid."'";
@@ -379,7 +384,10 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//clear the cache
$cache = new cache;
$cache->delete("memcache delete directory:".$extension."@".$_SESSION['domain_name']);
$cache->delete("directory:".$extension."@".$_SESSION['domain_name']);
if(strlen($number_alias) > 0){
$cache->delete("directory:".$number_alias."@".$_SESSION['domain_name']);
}
//redirect the user
$_SESSION["message"] = $text['confirm-update'];
@@ -522,18 +530,19 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <strong>".$text['label-call-forward']."</strong>\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$on_click = "document.getElementById('follow_me_disabled').checked=true;";
$on_click .= "document.getElementById('dnd_disabled').checked=true;";
$on_click .= "document.getElementById('forward_all_destination').focus();";
$on_click = "document.getElementById('follow_me_disabled').checked=true; ";
$on_click .= "$('#tr_follow_me_settings').slideUp('fast'); ";
$on_click .= "document.getElementById('dnd_disabled').checked=true; ";
$on_click .= "document.getElementById('forward_all_destination').focus(); ";
echo " <label for='forward_all_disabled'><input type='radio' name='forward_all_enabled' id='forward_all_disabled' onclick=\"\" value='false' ".(($forward_all_enabled == "false" || $forward_all_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='forward_all_enabled'><input type='radio' name='forward_all_enabled' id='forward_all_enabled' onclick=\"$on_click\" value='true' ".(($forward_all_enabled == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
echo " <label for='forward_all_enabled'><input type='radio' name='forward_all_enabled' id='forward_all_enabled' onclick=\"".$on_click."\" value='true' ".(($forward_all_enabled == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
unset($on_click);
echo "&nbsp;&nbsp;&nbsp;";
echo " <input class='formfld' type='text' name='forward_all_destination' id='forward_all_destination' maxlength='255' placeholder=\"".$text['label-destination']."\" value=\"".$forward_all_destination."\">\n";
if (permission_exists('follow_me_cid_set')) {
echo "&nbsp;&nbsp;&nbsp;";
$sql_forward = "select destination_uuid, destination_number, destination_description from v_destinations where domain_uuid = '$domain_uuid' and destination_type = 'inbound' order by destination_number asc ";
$sql_forward = "select destination_uuid, destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$domain_uuid' and destination_type = 'inbound' order by destination_number asc ";
$prep_statement_forward = $db->prepare(check_sql($sql_forward));
$prep_statement_forward->execute();
$result_forward = $prep_statement_forward->fetchAll(PDO::FETCH_ASSOC);
@@ -543,7 +552,15 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <option value='' disabled='disabled'></option>\n";
foreach ($result_forward as &$row_forward) {
$selected = $row_forward["destination_uuid"] == $forward_caller_id_uuid ? "selected='selected' " : '';
echo "<option value='".$row_forward["destination_uuid"]."' ".$selected.">".format_phone($row_forward["destination_number"])." : ".$row_forward["destination_description"]."</option>\n";
$caller_id_number = $row_forward['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_forward['destination_number'];
}
$caller_id_name = $row_forward['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_forward['destination_description'];
}
echo "<option value='".$row_forward["destination_uuid"]."' ".$selected.">".format_phone($caller_id_number)." : ".$caller_id_name."</option>\n";
}
echo "</select>\n";
}
@@ -585,6 +602,21 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-not_registered']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$on_click = "document.getElementById('forward_user_not_registered_destination').focus();";
echo " <label for='forward_user_not_registered_disabled'><input type='radio' name='forward_user_not_registered_enabled' id='forward_user_not_registered_disabled' onclick=\"\" value='false' ".(($forward_user_not_registered_enabled == "false" || $forward_user_not_registered_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='forward_user_not_registered_enabled'><input type='radio' name='forward_user_not_registered_enabled' id='forward_user_not_registered_enabled' onclick=\"$on_click\" value='true' ".(($forward_user_not_registered_enabled == "true") ? "checked='checked'" : null)."/> ".$text['label-enabled']."</label> \n";
unset($on_click);
echo "&nbsp;&nbsp;&nbsp;";
echo " <input class='formfld' type='text' name='forward_user_not_registered_destination' id='forward_user_not_registered_destination' maxlength='255' placeholder=\"".$text['label-destination']."\" value=\"".$forward_user_not_registered_destination."\">\n";
echo " <br />".$text['description-not_registered'].".\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr><td colspan='2'><br /></td></tr>\n";
echo "<tr>\n";
@@ -592,15 +624,18 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <strong>".$text['label-follow-me']."</strong>\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$on_click = "document.getElementById('forward_all_disabled').checked=true;";
$on_click .= "document.getElementById('dnd_disabled').checked=true; document.getElementById('follow_me_caller_id_uuid').focus();";
echo " <label for='follow_me_disabled'><input type='radio' name='follow_me_enabled' id='follow_me_disabled' onclick=\"\" value='false' ".(($follow_me_enabled == "false" || $follow_me_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='follow_me_enabled'><input type='radio' name='follow_me_enabled' id='follow_me_enabled' onclick=\"$on_click\" value='true' ".(($follow_me_enabled == "true") ? "checked='checked'" : null)."/> ".$text['label-enabled']."</label> \n";
$on_click = "document.getElementById('forward_all_disabled').checked=true; ";
$on_click .= "document.getElementById('dnd_disabled').checked=true; ";
if (permission_exists('follow_me_cid_set')) {
$on_click .= "document.getElementById('follow_me_caller_id_uuid').focus(); ";
}
echo " <label for='follow_me_disabled'><input type='radio' name='follow_me_enabled' id='follow_me_disabled' onclick=\"$('#tr_follow_me_settings').slideUp('fast');\" value='false' ".(($follow_me_enabled == "false" || $follow_me_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='follow_me_enabled'><input type='radio' name='follow_me_enabled' id='follow_me_enabled' onclick=\"$('#tr_follow_me_settings').slideDown('fast'); ".$on_click."\" value='true' ".(($follow_me_enabled == "true") ? "checked='checked'" : null)."/> ".$text['label-enabled']."</label> \n";
unset($on_click);
if (permission_exists('follow_me_cid_set')) {
echo "&nbsp;&nbsp;&nbsp;";
$sql_follow_me = "select destination_uuid, destination_number, destination_description from v_destinations where domain_uuid = '$domain_uuid' and destination_type = 'inbound' order by destination_number asc ";
$sql_follow_me = "select destination_uuid, destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$domain_uuid' and destination_type = 'inbound' order by destination_number asc ";
$prep_statement_follow_me = $db->prepare(check_sql($sql_follow_me));
$prep_statement_follow_me->execute();
$result_follow_me = $prep_statement_follow_me->fetchAll(PDO::FETCH_ASSOC);
@@ -610,7 +645,17 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <option value='' disabled='disabled'></option>\n";
foreach ($result_follow_me as &$row_follow_me) {
$selected = $row_follow_me["destination_uuid"] == $follow_me_caller_id_uuid ? "selected='selected'" : '';
echo "<option value='".$row_follow_me["destination_uuid"]."' ".$selected.">".format_phone($row_follow_me["destination_number"])." : ".$row_follow_me["destination_description"]."</option>\n";
$caller_id_number = $row_follow_me['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_follow_me['destination_number'];
}
$caller_id_name = $row_follow_me['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_follow_me['destination_description'];
}
echo "<option value='".$row_follow_me["destination_uuid"]."' ".$selected.">".format_phone($caller_id_number)." : ".$caller_id_name."</option>\n";
}
echo "</select>\n";
}
@@ -620,12 +665,17 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <br /><br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
if ($follow_me_enabled == "true") { $style = ''; } else { $style = 'display: none;'; }
echo "<div id='tr_follow_me_settings' style='$style'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-destinations']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <table border='0' cellpadding='2' cellspacing='0'>\n";
echo " <tr>\n";
@@ -741,18 +791,20 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap='nowrap'>";
echo $text['label-ignore-busy'];
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <select class='formfld' name='follow_me_ignore_busy'>\n";
echo " <option value='true' " . ($follow_me_ignore_busy == 'true' ? "selected='selected'" : '') . ">True</option>\n";
echo " <option value='false'" . ($follow_me_ignore_busy == 'true' ? '' : "selected='selected'") . ">False</option>\n";
echo " </select>\n";
echo " <br> Interrupt call if one of destination are busy\n";
echo " </td>\n";
echo " </tr>\n";
if (permission_exists('follow_me_ignore_busy')) {
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap='nowrap'>";
echo $text['label-ignore-busy'];
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <label for='follow_me_ignore_busy_false'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_false' value='false' onclick=\"\" ".(($follow_me_ignore_busy == "false" || $follow_me_ignore_busy == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='follow_me_ignore_busy_true'><input type='radio' name='follow_me_ignore_busy' id='follow_me_ignore_busy_true' value='true' onclick=\"$on_click\" ".(($follow_me_ignore_busy == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
echo " <br />\n";
echo $text['description-ignore-busy']." \n";
//echo " <br> Interrupt call if one of destination are busy\n";
echo " </td>\n";
echo " </tr>\n";
}
if (permission_exists('follow_me_cid_name_prefix')) {
echo "<tr>\n";
@@ -780,17 +832,19 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo "</tr>\n";
}
echo "<tr><td colspan='2'><br /></td></tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr><td colspan='2'><br /></td></tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " <strong>".$text['label-dnd']."</strong>\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
$on_click = "document.getElementById('forward_all_disabled').checked=true;";
$on_click .= "document.getElementById('forward_busy_disabled').checked=true;";
$on_click .= "document.getElementById('forward_no_answer_disabled').checked=true;";
$on_click .= "document.getElementById('follow_me_disabled').checked=true;";
$on_click .= "$('#tr_follow_me_settings').slideUp('fast'); ";
echo " <label for='dnd_disabled'><input type='radio' name='dnd_enabled' id='dnd_disabled' value='false' onclick=\"\" ".(($dnd_enabled == "false" || $dnd_enabled == "") ? "checked='checked'" : null)." /> ".$text['label-disabled']."</label> \n";
echo " <label for='dnd_enabled'><input type='radio' name='dnd_enabled' id='dnd_enabled' value='true' onclick=\"$on_click\" ".(($dnd_enabled == "true") ? "checked='checked'" : null)." /> ".$text['label-enabled']."</label> \n";
echo " <br />\n";
@@ -812,4 +866,4 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//include the footer
require_once "resources/footer.php";
?>
?>
+131 -90
View File
@@ -17,27 +17,40 @@
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
Portions created by the Initial Developer are Copyright (C) 2008-2016
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('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
//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('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
//access granted
}
else {
echo "access denied";
exit;
}
//get the https values and set as variables
$order_by = check_str($_GET["order_by"]);
$order = check_str($_GET["order"]);
//handle search term
$search = check_str($_GET["search"]);
if (strlen($search) > 0) {
$sql_mod = "and ( ";
$sql_mod .= "extension like '%".$search."%' ";
$sql_mod .= "or description like '%".$search."%' ";
$sql_mod .= ") ";
}
//add multi-lingual support
$language = new text;
$text = $language->get($_SESSION['domain']['language']['code'], 'app/calls');
@@ -46,20 +59,9 @@ else {
require_once "resources/header.php";
require_once "resources/paging.php";
if ($is_included != "true") {
echo " <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'><b>".$text['title']."</b><br>\n";
echo " ".$text['description-2']."\n";
echo " ".$text['description-3']." \n";
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " <br />";
}
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
//define select count query
$sql = "select count(extension_uuid) as count from v_extensions ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and enabled = 'true' ";
if (!(if_group("admin") || if_group("superadmin"))) {
if (count($_SESSION['user']['extension']) > 0) {
@@ -77,103 +79,142 @@ else {
$sql .= "and extension = 'disabled' ";
}
}
if (strlen($order_by)> 0) {
$sql .= "order by $order_by $order ";
}
else {
$sql .= "order by extension asc ";
}
$sql .= $sql_mod; //add search mod from above
//execute select count query
$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);
$row = $prep_statement->fetch(PDO::FETCH_NAMED);
$result_count = $row['count'];
unset ($prep_statement, $row);
$rows_per_page = 150;
$param = "";
if ($is_included) {
$rows_per_page = 10;
}
else {
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
}
$param = "&search=".$search;
$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);
list($paging_controls_mini, $rows_per_page, $var_3) = paging($result_count, $param, $rows_per_page, true);
list($paging_controls, $rows_per_page, $var_3) = paging($result_count, $param, $rows_per_page);
$offset = $rows_per_page * $page;
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and enabled = 'true' ";
if (!(if_group("admin") || if_group("superadmin"))) {
if (count($_SESSION['user']['extension']) > 0) {
$sql .= "and (";
$x = 0;
foreach($_SESSION['user']['extension'] as $row) {
if ($x > 0) { $sql .= "or "; }
$sql .= "extension = '".$row['user']."' ";
$x++;
}
$sql .= ")";
}
else {
//hide any results when a user has not been assigned an extension
$sql .= "and extension = 'disabled' ";
}
}
if (strlen($order_by)> 0) {
$sql .= "order by $order_by $order ";
}
else {
$sql .= "order by extension asc ";
}
$sql .= " limit $rows_per_page offset $offset ";
//rework select data query
$sql = str_replace('count(extension_uuid) as count', '*', $sql);
$sql .= ' order by extension asc';
$sql .= " limit ".$rows_per_page." offset ".$offset." ";
//execute select data query
$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";
//start the content
echo "<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n";
echo " <tr>\n";
echo " <td valign='top'>";
echo " <b>".$text['header-call_routing']."</b><br />";
echo " </td>\n";
echo " <td valign='top' style='text-align: right; white-space: nowrap;'>\n";
if ($result_count > 10 && $is_included) {
echo " <input id='btn_viewall_callrouting' type='button' class='btn' value='".$text['button-view_all']."' onclick=\"document.location.href='".PROJECT_PATH."/app/calls/calls.php';\">";
}
if (!$is_included) {
echo " <form method='get' action='' style='display: inline-block;'>\n";
echo " <input type='text' class='txt' style='width: 150px' name='search' value='".$search."'>";
echo " <input type='submit' class='btn' name='submit' value='".$text['button-search']."'>";
echo " </form>\n";
if ($paging_controls_mini != '') {
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
}
} echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td colspan='2' valign='top'>";
if (!$is_included) {
echo $text['description-call_routing']."<br />";
}
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br />";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['table-extension']."</th>\n";
echo "<th>".$text['table-tools']."</th>\n";
echo "<th>".$text['table-description']."</th>\n";
if (permission_exists('call_forward')) { echo "<th>".$text['label-call-forward']."</th>\n"; }
if (permission_exists('follow_me')) { echo "<th>".$text['label-follow-me']."</th>\n"; }
if (permission_exists('do_not_disturb')) { echo "<th>".$text['label-dnd']."</th>\n"; }
if (!$is_included) {
echo "<th class='hidden-xs'>".$text['table-description']."</th>\n";
}
echo "<td class='list_control_icon'>&nbsp;</td>\n";
echo "</tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
$tr_url = PROJECT_PATH."/app/calls/call_edit.php?id=".$row['extension_uuid'];
$tr_url = PROJECT_PATH."/app/calls/call_edit.php?id=".$row['extension_uuid']."&return_url=".urlencode($_SERVER['REQUEST_URI']);
$tr_link = (permission_exists('call_forward') || permission_exists('follow_me') || permission_exists('do_not_disturb')) ? "href='".$tr_url."'" : null;
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['extension']."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>\n";
if (permission_exists('call_forward')) { echo "<a href='".$tr_url."'>".$text['label-call-forward']."</a>&nbsp;&nbsp;&nbsp;"; }
if (permission_exists('follow_me')) { echo "<a href='".$tr_url."'>".$text['label-follow-me']."</a>&nbsp;&nbsp;&nbsp;"; }
if (permission_exists('do_not_disturb')) { echo "<a href='".$tr_url."'>".$text['label-dnd']."</a>"; }
echo " </td>\n";
echo " <td valign='top' class='row_stylebg' width='40%'>".$row['description']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'><a ".$tr_link.">".$row['extension']."</a></td>\n";
if (permission_exists('call_forward')) {
echo "<td valign='top' class='".$row_style[$c]."'>".(($row['forward_all_enabled'] == 'true') ? format_phone($row['forward_all_destination']) : '&nbsp;')."</td>";
}
if (permission_exists('follow_me')) {
if ($row['follow_me_uuid'] != '') {
//check if follow me is enabled
$sql = "select follow_me_enabled from v_follow_me where follow_me_uuid = '".$row['follow_me_uuid']."' and domain_uuid = '".$domain_uuid."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$row_x = $prep_statement->fetch(PDO::FETCH_NAMED);
$follow_me_enabled = ($row_x['follow_me_enabled'] == 'true') ? true : false;
unset($sql, $prep_statement, $row_x);
//get destination count if enabled
if ($follow_me_enabled) {
$sql = "select count(follow_me_destination_uuid) as destination_count from v_follow_me_destinations where follow_me_uuid = '".$row['follow_me_uuid']."' and domain_uuid = '".$domain_uuid."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$row_x = $prep_statement->fetch(PDO::FETCH_NAMED);
$follow_me_destination_count = $row_x['destination_count'];
unset($sql, $prep_statement, $row_x);
}
}
else {
$follow_me_enabled = false;
}
echo "<td valign='top' class='".$row_style[$c]."'>".(($follow_me_enabled) ? $text['label-enabled']." (".$follow_me_destination_count.")" : '&nbsp;')."</td>";
}
if (permission_exists('do_not_disturb')) {
echo "<td valign='top' class='".$row_style[$c]."'>".(($row['do_not_disturb'] == 'true') ? $text['label-enabled'] : '&nbsp;')."</td>";
}
if (!$is_included) {
echo "<td valign='top' class='row_stylebg hidden-xs'>".$row['description']."&nbsp;</td>\n";
}
echo " <td class='list_control_icon'><a href='".$tr_url."' alt='".$text['button-edit']."'>".$v_link_label_edit."</a></td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
$c = ($c) ? 0 : 1;
} //end foreach
unset($sql, $result, $row_count);
} //end if results
if (strlen($paging_controls) > 0) {
echo "<tr>\n";
echo "<td colspan='5' align='left'>\n";
echo " <table border='0' width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='33.3%' nowrap>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap>$paging_controls</td>\n";
echo " </tr>\n";
echo " </table>\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "</table>";
echo "<br><br>";
echo "<br />";
if ($is_included != "true") {
if (strlen($paging_controls) > 0 && (!$is_included)) {
echo "<center>".$paging_controls."</center>\n";
echo "<br /><br />\n";
}
if (!$is_included) {
echo "<br />";
require_once "resources/footer.php";
}
?>
?>
+36 -23
View File
@@ -17,14 +17,14 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Copyright (C) 2010 - 2014
Copyright (C) 2010 - 2016
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
Errol Samuels <voiptology@gmail.com>
*/
include "root.php";
@@ -35,6 +35,7 @@ include "root.php";
public $domain_name;
public $extension_uuid;
private $extension;
private $number_alias;
public $forward_all_destination;
public $forward_all_enabled;
private $dial_string;
@@ -55,14 +56,13 @@ include "root.php";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
if (is_array($result)) foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->number_alias = $row["number_alias"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
unset ($prep_statement);
@@ -76,23 +76,34 @@ include "root.php";
$dial_string .= ",domain=".$_SESSION['domain_name'];
$dial_string .= ",extension_uuid=".$this->extension_uuid;
$dial_string .= ",toll_allow='".$this->toll_allow."'";
$dial_string .=",sip_h_Diversion=<sip:".$this->extension."@".$_SESSION['domain_name'].">;reason=unconditional";
if (strlen($this->accountcode) > 0) {
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
$dial_string .= ",accountcode=".$this->accountcode;
}
if (strlen($this->forward_caller_id_uuid) > 0){
$sql_caller = "select destination_number, destination_description from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->forward_caller_id_uuid'";
$sql_caller = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->forward_caller_id_uuid'";
$prep_statement_caller = $db->prepare($sql_caller);
if ($prep_statement_caller) {
$prep_statement_caller->execute();
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC);
if (strlen($row_caller['destination_description']) > 0) {
$dial_string_caller_id_name = $row_caller['destination_description'];
$caller_id_number = $row_caller['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_caller['destination_number'];
}
$caller_id_name = $row_caller['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_caller['destination_description'];
}
if (strlen($caller_id_name) > 0) {
$dial_string_caller_id_name = $caller_id_name;
$dial_string .= ",origination_caller_id_name=$dial_string_caller_id_name";
}
if (strlen($row_caller['destination_number']) > 0) {
$dial_string_caller_id_number = $row_caller['destination_number'];
if (strlen($caller_id_number) > 0) {
$dial_string_caller_id_number = $caller_id_number;
$dial_string .= ",origination_caller_id_number=$dial_string_caller_id_number";
$dial_string .= ",outbound_caller_id_number=$dial_string_caller_id_number";
}
@@ -134,15 +145,17 @@ include "root.php";
//update the extension
$sql = "update v_extensions set ";
if (strlen($this->forward_all_destination) == 0) {
$sql .= "forward_all_destination = null, ";
}
else {
$sql .= "forward_all_destination = '$this->forward_all_destination', ";
}
if (strlen($this->forward_all_destination) == 0 || $this->forward_all_enabled == "false") {
if (strlen($this->forward_all_destination) == 0) {
$sql .= "forward_all_destination = null, ";
}
$sql .= "dial_string = null, ";
$sql .= "forward_all_enabled = 'false' ";
}
else {
$sql .= "forward_all_destination = '$this->forward_all_destination', ";
$sql .= "dial_string = '".check_str($this->dial_string)."', ";
$sql .= "forward_all_enabled = 'true' ";
}
@@ -155,10 +168,10 @@ include "root.php";
unset($sql);
//delete extension 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 directory:".$this->extension."@".$this->domain_name;
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$cache = new cache;
$cache->delete("directory:".$this->extension."@".$this->domain_name);
if(strlen($this->number_alias) > 0){
$cache->delete("directory:".$this->number_alias."@".$this->domain_name);
}
} //function
+11 -13
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Copyright (C) 2010
Copyright (C) 2010 - 2016
All Rights Reserved.
Contributor(s):
@@ -77,18 +77,16 @@ include "root.php";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
if (strlen($this->extension_uuid) == 0) {
$this->extension_uuid = $row["extension_uuid"];
if (is_array($result)) foreach ($result as &$row) {
if (strlen($this->extension_uuid) == 0) {
$this->extension_uuid = $row["extension_uuid"];
}
if (strlen($this->extension) == 0) {
if(strlen($row["number_alias"]) == 0) {
$this->extension = $row["extension"];
}
if (strlen($this->extension) == 0) {
if(strlen($row["number_alias"]) == 0) {
$this->extension = $row["extension"];
}
else {
$this->extension = $row["number_alias"];
}
else {
$this->extension = $row["number_alias"];
}
}
}
@@ -96,7 +94,7 @@ include "root.php";
//set the dial string
if ($this->enabled == "true") {
$this->dial_string = "loopback/*99".$this->extension;
$this->dial_string = "error/user_busy";
}
else {
$this->dial_string = '';
+444 -438
View File
@@ -1,438 +1,444 @@
<?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) 2010 - 2014
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
Salvatore Caruso <salvatore.caruso@nems.it>
Riccardo Granchi <riccardo.granchi@nems.it>
Errol Samuels <voiptology@gmail.com>
*/
include "root.php";
//define the follow me class
class follow_me {
public $domain_uuid;
public $db_type;
public $follow_me_uuid;
public $cid_name_prefix;
public $cid_number_prefix;
public $accountcode;
public $follow_me_enabled;
public $follow_me_caller_id_uuid;
public $follow_me_ignore_busy;
public $outbound_caller_id_name;
public $outbound_caller_id_number;
private $extension;
private $toll_allow;
public $destination_data_1;
public $destination_type_1;
public $destination_delay_1;
public $destination_prompt_1;
public $destination_timeout_1;
public $destination_data_2;
public $destination_type_2;
public $destination_delay_2;
public $destination_prompt_2;
public $destination_timeout_2;
public $destination_data_3;
public $destination_type_3;
public $destination_delay_3;
public $destination_prompt_3;
public $destination_timeout_3;
public $destination_data_4;
public $destination_type_4;
public $destination_delay_4;
public $destination_prompt_4;
public $destination_timeout_4;
public $destination_data_5;
public $destination_type_5;
public $destination_delay_5;
public $destination_prompt_5;
public $destination_timeout_5;
public $destination_timeout = 0;
public $destination_order = 1;
public function add() {
//set the global variable
global $db;
//add a new follow me
$sql = "insert into v_follow_me ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "follow_me_uuid, ";
$sql .= "cid_name_prefix, ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "cid_number_prefix, ";
}
$sql .= "follow_me_caller_id_uuid, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_ignore_busy ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$this->domain_uuid', ";
$sql .= "'$this->follow_me_uuid', ";
$sql .= "'$this->cid_name_prefix', ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "'$this->cid_number_prefix', ";
}
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "'$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= 'null, ';
}
$sql .= "'$this->follow_me_enabled', ";
$sql .= "'$this->follow_me_ignore_busy' ";
$sql .= ")";
if ($v_debug) {
echo $sql."<br />";
}
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function update() {
//set the global variable
global $db;
//update follow me table
$sql = "update v_follow_me set ";
$sql .= "follow_me_enabled = '$this->follow_me_enabled', ";
$sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', ";
$sql .= "cid_name_prefix = '$this->cid_name_prefix', ";
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= "follow_me_caller_id_uuid = null, ";
}
$sql .= "cid_number_prefix = '$this->cid_number_prefix' ";
$sql .= "where domain_uuid = '$this->domain_uuid' ";
$sql .= "and follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function follow_me_destinations() {
//set the global variable
global $db;
//prepare insert statement
$stmt = $db->prepare(
"insert into v_follow_me_destinations("
. "follow_me_destination_uuid,"
. "domain_uuid,"
. "follow_me_uuid,"
. "follow_me_destination,"
. "follow_me_timeout,"
. "follow_me_delay,"
. "follow_me_prompt,"
. "follow_me_order"
. ")values(?,?,?,?,?,?,?,?)"
);
//delete related follow me destinations
$sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
//insert the follow me destinations
if (strlen($this->destination_data_1) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_1,
$this->destination_timeout_1,
$this->destination_delay_1,
$this->destination_prompt_1,
'1'
));
$this->destination_order++;
}
if (strlen($this->destination_data_2) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_2,
$this->destination_timeout_2,
$this->destination_delay_2,
$this->destination_prompt_2,
'2'
));
$this->destination_order++;
}
if (strlen($this->destination_data_3) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_3,
$this->destination_timeout_3,
$this->destination_delay_3,
$this->destination_prompt_3,
'3'
));
$this->destination_order++;
}
if (strlen($this->destination_data_4) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_4,
$this->destination_timeout_4,
$this->destination_delay_4,
$this->destination_prompt_4,
'4'
));
$this->destination_order++;
}
if (strlen($this->destination_data_5) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_5,
$this->destination_timeout_5,
$this->destination_delay_5,
$this->destination_prompt_5,
'5'
));
$this->destination_order++;
}
unset($stmt);
} //function
public function set() {
//set the global variable
global $db;
//determine whether to update the dial string
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
}
//determine whether to update the dial string
$sql = "select * from v_follow_me ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$follow_me_uuid = $row["follow_me_uuid"];
$this->cid_name_prefix = $row["cid_name_prefix"];
$this->cid_number_prefix = $row["cid_number_prefix"];
}
}
unset ($prep_statement);
//add follow me
if (strlen($follow_me_uuid) == 0) {
$this->add();
}
//set the extension dial string
$sql = "select * from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' ";
$sql .= "order by follow_me_order asc ";
$prep_statement_2 = $db->prepare(check_sql($sql));
$prep_statement_2->execute();
$result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED);
$dial_string = "{";
if ($this->follow_me_ignore_busy != 'true') {
$dial_string .= "fail_on_single_reject=USER_BUSY,";
}
$dial_string .= "instant_ringback=true,";
$dial_string .= "ignore_early_media=true";
$dial_string .= ",domain_uuid=".$_SESSION['domain_uuid'];
$dial_string .= ",sip_invite_domain=".$_SESSION['domain_name'];
$dial_string .= ",domain_name=".$_SESSION['domain_name'];
$dial_string .= ",domain=".$_SESSION['domain_name'];
$dial_string .= ",extension_uuid=".$this->extension_uuid;
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua";
$dial_string_caller_id_name = "\${caller_id_name}";
$dial_string_caller_id_number = "\${caller_id_number}";
if (strlen($this->follow_me_caller_id_uuid) > 0){
$sql_caller = "select destination_number, destination_description from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->follow_me_caller_id_uuid'";
$prep_statement_caller = $db->prepare($sql_caller);
if ($prep_statement_caller) {
$prep_statement_caller->execute();
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC);
if (strlen($row_caller['destination_description']) > 0) {
$dial_string_caller_id_name = $row_caller['destination_description'];
}
if (strlen($row_caller['destination_number']) > 0) {
$dial_string_caller_id_number = $row_caller['destination_number'];
}
}
}
if (strlen($this->cid_name_prefix) > 0) {
$dial_string .= ",origination_caller_id_name=".$this->cid_name_prefix."#$dial_string_caller_id_name";
}
else {
$dial_string .= ",origination_caller_id_name=$dial_string_caller_id_name";
}
if (strlen($this->cid_number_prefix) > 0) {
//$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."";
$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."#dial_string_caller_id_number";
}
else {
$dial_string .= ",origination_caller_id_number=$dial_string_caller_id_number";
}
if (strlen($this->accountcode) > 0) {
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
$dial_string .= ",accountcode=".$this->accountcode;
}
$dial_string .= ",toll_allow='".$this->toll_allow."'";
$dial_string .= "}";
$x = 0;
foreach ($result as &$row) {
if ($x > 0) {
$dial_string .= ",";
}
if (extension_exists($row["follow_me_destination"])) {
//set the dial string
if (strlen($_SESSION['domain']['dial_string']['text']) == 0) {
$dial_string .= "[";
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number,";
$dial_string .= "presence_id=".$row["follow_me_destination"]."@".$_SESSION['domain_name'].",";
if ($row["follow_me_prompt"] == "1") {
$dial_string .= "group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= "leg_delay_start=".$row["follow_me_delay"].",";
$dial_string .= "leg_timeout=".$row["follow_me_timeout"]."]";
$dial_string .= "\${sofia_contact(".$row["follow_me_destination"]."@".$_SESSION['domain_name'].")}";
}
else {
$replace_value = $row["follow_me_destination"];
if ($row["follow_me_prompt"] == "1") {
$replace_value .= "[group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true]";
}
$local_dial_string = $_SESSION['domain']['dial_string']['text'];
$local_dial_string = str_replace("\${dialed_user}", $replace_value, $local_dial_string);
$local_dial_string = str_replace("\${dialed_domain}", $_SESSION['domain_name'], $local_dial_string);
$local_dial_string = str_replace("\${call_timeout}", $row["follow_me_timeout"], $local_dial_string);
$local_dial_string = str_replace("\${leg_timeout}", $row["follow_me_timeout"], $local_dial_string);
$dial_string .= $local_dial_string;
}
}
else {
$dial_string .= "[";
if ($_SESSION['cdr']['follow_me_fix']['boolean'] == "true"){
$dial_string .= "outbound_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",outbound_caller_id_number=".$this->outbound_caller_id_number;
$dial_string .= ",origination_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",origination_caller_id_number=".$this->outbound_caller_id_number;
}
else{
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number";
}
$dial_string .= ",presence_id=".$this->extension."@".$_SESSION['domain_name'];
if ($row["follow_me_prompt"] == "1") {
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= ",leg_delay_start=".$row["follow_me_delay"];
$dial_string .= ",leg_timeout=".$row["follow_me_timeout"]."]";
if (is_numeric($row["follow_me_destination"])) {
if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") {
$bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $row["follow_me_destination"]);
$dial_string .= $bridge[0];
}
elseif ($_SESSION['domain']['bridge']['text'] == "loopback") {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
elseif ($_SESSION['domain']['bridge']['text'] == "lcr") {
$dial_string .= "lcr/".$_SESSION['lcr']['profile']['text']."/".$_SESSION['domain_name']."/".$row["follow_me_destination"];
}
else {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
}
else {
$dial_string .= $row["follow_me_destination"];
}
}
$x++;
}
$this->dial_string = $dial_string;
$sql = "update v_follow_me set ";
$sql .= "dial_string = '".$this->dial_string."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
//is follow me enabled
$dial_string = '';
if ($this->follow_me_enabled == "true") {
$dial_string = $this->dial_string;
}
$sql = "update v_extensions set ";
$sql .= "dial_string = '".check_str($dial_string)."', ";
$sql .= "dial_domain = '".$_SESSION['domain_name']."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
} //function
} //class
?>
<?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) 2010 - 2016
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
Salvatore Caruso <salvatore.caruso@nems.it>
Riccardo Granchi <riccardo.granchi@nems.it>
Errol Samuels <voiptology@gmail.com>
*/
include "root.php";
//define the follow me class
class follow_me {
public $domain_uuid;
public $db_type;
public $follow_me_uuid;
public $cid_name_prefix;
public $cid_number_prefix;
public $accountcode;
public $follow_me_enabled;
public $follow_me_caller_id_uuid;
public $follow_me_ignore_busy;
public $outbound_caller_id_name;
public $outbound_caller_id_number;
private $extension;
private $toll_allow;
public $destination_data_1;
public $destination_type_1;
public $destination_delay_1;
public $destination_prompt_1;
public $destination_timeout_1;
public $destination_data_2;
public $destination_type_2;
public $destination_delay_2;
public $destination_prompt_2;
public $destination_timeout_2;
public $destination_data_3;
public $destination_type_3;
public $destination_delay_3;
public $destination_prompt_3;
public $destination_timeout_3;
public $destination_data_4;
public $destination_type_4;
public $destination_delay_4;
public $destination_prompt_4;
public $destination_timeout_4;
public $destination_data_5;
public $destination_type_5;
public $destination_delay_5;
public $destination_prompt_5;
public $destination_timeout_5;
public $destination_timeout = 0;
public $destination_order = 1;
public function add() {
//set the global variable
global $db;
//add a new follow me
$sql = "insert into v_follow_me ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "follow_me_uuid, ";
$sql .= "cid_name_prefix, ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "cid_number_prefix, ";
}
$sql .= "follow_me_caller_id_uuid, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_ignore_busy ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$this->domain_uuid', ";
$sql .= "'$this->follow_me_uuid', ";
$sql .= "'$this->cid_name_prefix', ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "'$this->cid_number_prefix', ";
}
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "'$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= 'null, ';
}
$sql .= "'$this->follow_me_enabled', ";
$sql .= "'$this->follow_me_ignore_busy' ";
$sql .= ")";
if ($v_debug) {
echo $sql."<br />";
}
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function update() {
//set the global variable
global $db;
//update follow me table
$sql = "update v_follow_me set ";
$sql .= "follow_me_enabled = '$this->follow_me_enabled', ";
$sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', ";
$sql .= "cid_name_prefix = '$this->cid_name_prefix', ";
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= "follow_me_caller_id_uuid = null, ";
}
$sql .= "cid_number_prefix = '$this->cid_number_prefix' ";
$sql .= "where domain_uuid = '$this->domain_uuid' ";
$sql .= "and follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function follow_me_destinations() {
//set the global variable
global $db;
//prepare insert statement
$stmt = $db->prepare(
"insert into v_follow_me_destinations("
. "follow_me_destination_uuid,"
. "domain_uuid,"
. "follow_me_uuid,"
. "follow_me_destination,"
. "follow_me_timeout,"
. "follow_me_delay,"
. "follow_me_prompt,"
. "follow_me_order"
. ")values(?,?,?,?,?,?,?,?)"
);
//delete related follow me destinations
$sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
//insert the follow me destinations
if (strlen($this->destination_data_1) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_1,
$this->destination_timeout_1,
$this->destination_delay_1,
$this->destination_prompt_1,
'1'
));
$this->destination_order++;
}
if (strlen($this->destination_data_2) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_2,
$this->destination_timeout_2,
$this->destination_delay_2,
$this->destination_prompt_2,
'2'
));
$this->destination_order++;
}
if (strlen($this->destination_data_3) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_3,
$this->destination_timeout_3,
$this->destination_delay_3,
$this->destination_prompt_3,
'3'
));
$this->destination_order++;
}
if (strlen($this->destination_data_4) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_4,
$this->destination_timeout_4,
$this->destination_delay_4,
$this->destination_prompt_4,
'4'
));
$this->destination_order++;
}
if (strlen($this->destination_data_5) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_5,
$this->destination_timeout_5,
$this->destination_delay_5,
$this->destination_prompt_5,
'5'
));
$this->destination_order++;
}
unset($stmt);
} //function
public function set() {
//set the global variable
global $db;
//determine whether to update the dial string
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (is_array($result)) foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
//determine whether to update the dial string
$sql = "select * from v_follow_me ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (is_array($result)) foreach ($result as &$row) {
$follow_me_uuid = $row["follow_me_uuid"];
$this->cid_name_prefix = $row["cid_name_prefix"];
$this->cid_number_prefix = $row["cid_number_prefix"];
}
unset ($prep_statement);
//add follow me
if (strlen($follow_me_uuid) == 0) {
$this->add();
}
//set the extension dial string
$sql = "select * from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' ";
$sql .= "order by follow_me_order asc ";
$prep_statement_2 = $db->prepare(check_sql($sql));
$prep_statement_2->execute();
$result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED);
$dial_string = "{";
if ($this->follow_me_ignore_busy != 'true') {
$dial_string .= "fail_on_single_reject=USER_BUSY,";
}
$dial_string .= "instant_ringback=true,";
$dial_string .= "ignore_early_media=true";
$dial_string .= ",domain_uuid=".$_SESSION['domain_uuid'];
$dial_string .= ",sip_invite_domain=".$_SESSION['domain_name'];
$dial_string .= ",domain_name=".$_SESSION['domain_name'];
$dial_string .= ",domain=".$_SESSION['domain_name'];
$dial_string .= ",extension_uuid=".$this->extension_uuid;
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua";
$dial_string_caller_id_name = "\${effective_caller_id_name}";
$dial_string_caller_id_number = "\${effective_caller_id_number}";
if (strlen($this->follow_me_caller_id_uuid) > 0){
$sql_caller = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->follow_me_caller_id_uuid'";
$prep_statement_caller = $db->prepare($sql_caller);
if ($prep_statement_caller) {
$prep_statement_caller->execute();
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC);
$caller_id_number = $row_caller['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_caller['destination_number'];
}
$caller_id_name = $row_caller['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_caller['destination_description'];
}
if (strlen($caller_id_name) > 0) {
$dial_string_caller_id_name = $caller_id_name;
}
if (strlen($caller_id_number) > 0) {
$dial_string_caller_id_number = $caller_id_number;
}
}
}
if (strlen($this->cid_name_prefix) > 0) {
$dial_string .= ",origination_caller_id_name=".$this->cid_name_prefix."$dial_string_caller_id_name";
}
else {
$dial_string .= ",origination_caller_id_name=$dial_string_caller_id_name";
}
if (strlen($this->cid_number_prefix) > 0) {
//$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."";
$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."$dial_string_caller_id_number";
}
else {
$dial_string .= ",origination_caller_id_number=$dial_string_caller_id_number";
}
if (strlen($this->accountcode) > 0) {
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
$dial_string .= ",accountcode=".$this->accountcode;
}
$dial_string .= ",toll_allow='".$this->toll_allow."'";
$dial_string .= "}";
$x = 0;
if (is_array($result)) foreach ($result as &$row) {
if ($x > 0) {
$dial_string .= ",";
}
if (extension_exists($row["follow_me_destination"])) {
//set the dial string
if (strlen($_SESSION['domain']['dial_string']['text']) == 0) {
$dial_string .= "[";
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number,";
$dial_string .= "presence_id=".$row["follow_me_destination"]."@".$_SESSION['domain_name'].",";
if ($row["follow_me_prompt"] == "1") {
$dial_string .= "group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= "leg_delay_start=".$row["follow_me_delay"].",";
$dial_string .= "leg_timeout=".$row["follow_me_timeout"]."]";
$dial_string .= "\${sofia_contact(".$row["follow_me_destination"]."@".$_SESSION['domain_name'].")}";
}
else {
$replace_value = $row["follow_me_destination"];
if ($row["follow_me_prompt"] == "1") {
$replace_value .= "[group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true]";
}
$local_dial_string = $_SESSION['domain']['dial_string']['text'];
$local_dial_string = str_replace("\${dialed_user}", $replace_value, $local_dial_string);
$local_dial_string = str_replace("\${dialed_domain}", $_SESSION['domain_name'], $local_dial_string);
$local_dial_string = str_replace("\${call_timeout}", $row["follow_me_timeout"], $local_dial_string);
$local_dial_string = str_replace("\${leg_timeout}", $row["follow_me_timeout"], $local_dial_string);
$dial_string .= $local_dial_string;
}
}
else {
$dial_string .= "[";
if ($_SESSION['cdr']['follow_me_fix']['boolean'] == "true"){
$dial_string .= "outbound_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",outbound_caller_id_number=".$this->outbound_caller_id_number;
$dial_string .= ",origination_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",origination_caller_id_number=".$this->outbound_caller_id_number;
}
else{
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number";
}
$dial_string .= ",presence_id=".$this->extension."@".$_SESSION['domain_name'];
if ($row["follow_me_prompt"] == "1") {
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= ",leg_delay_start=".$row["follow_me_delay"];
$dial_string .= ",leg_timeout=".$row["follow_me_timeout"]."]";
if (is_numeric($row["follow_me_destination"])) {
if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") {
$bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $row["follow_me_destination"]);
$dial_string .= $bridge[0];
}
elseif ($_SESSION['domain']['bridge']['text'] == "loopback") {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
elseif ($_SESSION['domain']['bridge']['text'] == "lcr") {
$dial_string .= "lcr/".$_SESSION['lcr']['profile']['text']."/".$_SESSION['domain_name']."/".$row["follow_me_destination"];
}
else {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
}
else {
$dial_string .= $row["follow_me_destination"];
}
}
$x++;
}
$this->dial_string = $dial_string;
$sql = "update v_follow_me set ";
$sql .= "dial_string = '".$this->dial_string."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
//is follow me enabled
$dial_string = '';
if ($this->follow_me_enabled == "true") {
$dial_string = $this->dial_string;
}
$sql = "update v_extensions set ";
$sql .= "dial_string = '".check_str($dial_string)."', ";
$sql .= "dial_domain = '".$_SESSION['domain_name']."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
} //function
} //class
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Canais ativos no sistema.";
$apps[$x]['description']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "Canais ativos no sistema.";
//permission details
$apps[$x]['permissions'][0]['name'] = "call_active_view";
+1 -22
View File
@@ -4,7 +4,7 @@ $text['title-2']['en-us'] = "Active Extensions";
$text['title-2']['es-cl'] = "Extensiones Activas";
$text['title-2']['fr-fr'] = "Extensions Actives";
$text['title-2']['pt-pt'] = "Extensões Ativas";
$text['title-2']['pt-br'] = "Extensões ativas";
$text['title-2']['pt-br'] = "Ramais ativos";
$text['title-2']['pl'] = "Aktywne numery wewnętrzne";
$text['title-2']['sv-se'] = "Aktiva anknytningar";
$text['title-2']['uk'] = "Активні розширення";
@@ -152,17 +152,6 @@ $text['label-number']['uk'] = "Номер";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['he'] = "מספר";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['uk'] = "Назва";
$text['label-name']['de-at'] = "Name";
$text['label-name']['he'] = "שם";
$text['label-message']['en-us'] = "Message";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['fr-fr'] = "Message";
@@ -381,14 +370,4 @@ $text['button-show_all']['uk'] = "Показати всі";
$text['button-show_all']['de-at'] = "Alle anzeigen";
$text['button-show_all']['he'] = "";
$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']['pl'] = "Wróć";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$text['button-back']['he'] = "חזרה";
?>
+1 -1
View File
@@ -131,7 +131,7 @@ require_once "resources/footer.php";
}
function get_record_cmd(uuid, prefix, name) {
cmd = \"uuid_record \"+uuid+\" start ".$_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/\"+uuid+\".wav\";
cmd = \"uuid_record \"+uuid+\" start ".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/\"+uuid+\".wav\";
return escape(cmd);
}
*/
+24 -13
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -93,7 +93,21 @@ else {
echo " </tr>";
echo "</table>";
echo "<b>".$text['title']."</b>";
$rows = array();
if (isset($results["rows"])) foreach ($results["rows"] as &$row) {
//determine show all
if (!($show == 'all' && permission_exists('call_active_all'))) {
$foreign_call = true;
foreach ($row as $key => $value) {
if (substr_count($value, $_SESSION['domain_name']) > 0) { $foreign_call = false; }
}
if ($foreign_call) { continue; }
}
// append call
$rows[] = $row;
}
echo "<b>".$text['title']." (" . count($rows) . ")"."</b>";
echo "<br><br>\n";
echo $text['description']."\n";
echo "<br><br>\n";
@@ -123,15 +137,7 @@ else {
echo "<td class='list_control_icon'></td>\n";
echo "</tr>\n";
foreach ($results["rows"] as $row) {
//determine show all
if (!($show == 'all' && permission_exists('call_active_all'))) {
$foreign_call = true;
foreach ($row as $key => $value) {
if (substr_count($value, $_SESSION['domain_name']) > 0) { $foreign_call = false; }
}
if ($foreign_call) { continue; }
}
foreach ($rows as &$row) {
//set the php variables
foreach ($row as $key => $value) {
$$key = $value;
@@ -177,6 +183,11 @@ else {
}
}
// reduce too long app data
if(strlen($application_data) > 512) {
$application_data = substr($application_data, 0, 512) . ' <b>...</b>';
}
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$sip_profile."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$created."&nbsp;</td>\n";
@@ -205,8 +216,8 @@ else {
//park
echo " <a href='javascript:void(0);' onclick=\"send_cmd('calls_exec.php?cmd='+get_park_cmd(escape('$uuid'), '".$tmp_domain."'));\">".$text['label-park']."</a>&nbsp;\n";
//record start/stop
$tmp_dir = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d");
mkdir($tmp_dir, 0777, true);
$tmp_dir = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d");
event_socket_mkdir($tmp_dir);
$tmp_file = $tmp_dir."/".$uuid.".wav";
if (file_exists($tmp_file)) {
//stop
+3 -3
View File
@@ -229,13 +229,13 @@ if (count($_GET)>0) {
$x=0;
while (true) {
if ($x > 0) {
$dest_file = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"]."_".$x.".wav";
$dest_file = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/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";
$dest_file = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/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);
rename($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"].".wav", $dest_file);
break;
}
$x++;
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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 -1
View File
@@ -17,7 +17,7 @@
$apps[$x]['description']['fr-ca'] = "Appeller avec d'URL";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Originar chamadas com um URL.";
$apps[$x]['description']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "Gera chamadas a partir de um URL";
//permission details
$apps[$x]['permissions'][0]['name'] = "click_to_call_view";
+31 -1
View File
@@ -29,151 +29,181 @@
$text['label-click2call']['en-us'] = "Click to Call";
$text['label-click2call']['es-cl'] = "Pulse para Llamar";
$text['label-click2call']['pt-pt'] = "Clique para chamar";
$text['label-click2call']['pt-br'] = "Clique para chamar";
$text['label-click2call']['fr-fr'] = "Click to Call";
$text['desc-click2call']['en-us'] = "Provide the following information to make a call from the source number to the destination number.";
$text['desc-click2call']['es-cl'] = "Ingrese la siguiente información para realizar una llamada desde un número de origen a un número de destino.";
$text['desc-click2call']['pt-pt'] = "Forneça a informação seguinte para realizar uma chamada com uma determinada origem para um determinado destino.";
$text['desc-click2call']['pt-br'] = "Forneça as seguintes informações para realizar uma chamada do telefone originário para o telefone de destino.";
$text['desc-click2call']['fr-fr'] = "Fournissez les informations suivantes afin de lancer un appel d'un numéro vers un autre.";
$text['label-src-caller-id-nam']['en-us'] = "Source Caller ID Name";
$text['label-src-caller-id-nam']['es-cl'] = "Nombre de Caller ID de origen";
$text['label-src-caller-id-nam']['pt-pt'] = "Nome do Chamador";
$text['label-src-caller-id-nam']['pt-br'] = "Nome de origem";
$text['label-src-caller-id-nam']['fr-fr'] = "Nom de l'appelant";
$text['desc-src-caller-id-nam']['en-us'] = "Enter the Caller ID name to send to your phone.";
$text['desc-src-caller-id-nam']['es-cl'] = "Ingrese el nombre del Caller ID para enviar a su teléfono.";
$text['desc-src-caller-id-nam']['pt-pt'] = "Introduza o nome do chamador para ser enviado para o seu telefone.";
$text['desc-src-caller-id-nam']['pt-br'] = "Entre com o ID do número de origem para ser enviado para seu telefone.";
$text['desc-src-caller-id-nam']['fr-fr'] = "Choisir le nom d'appelant à émettre à votre téléphone.";
$text['label-src-caller-id-num']['en-us'] = "Source Caller ID Number";
$text['label-src-caller-id-num']['es-cl'] = "Número de Caller ID de origen";
$text['label-src-caller-id-num']['pt-pt'] = "Número do Chamador";
$text['label-src-caller-id-num']['pt-br'] = "Número de origem";
$text['label-src-caller-id-num']['fr-fr'] = "Numéro de l'appelant";
$text['desc-src-caller-id-num']['en-us'] = "Enter the Caller ID number to send to your phone (you probably want this to be the same as the destination number).";
$text['desc-src-caller-id-num']['es-cl'] = "Ingrese el número del Caller ID para enviar a su teléfono (probablemente desee que sea el mismo que el número de destino).";
$text['desc-src-caller-id-num']['pt-pt'] = "Introduza o identificador de chamada para enviar para o seu telefone (geralmente é o mesmo que o número de destino).";
$text['desc-src-caller-id-num']['pt-br'] = "Entre com o ID do número de origem para ser enviado para seu telefone (Orientamos colocar este número sendo o mesmo número que 'número de destino'";
$text['desc-src-caller-id-num']['fr-fr'] = "Choisir le numéro d'appelant à émettre à votre téléphone (Il est en général le même que le numéro de destination).";
$text['label-dest-caller-id-nam']['en-us'] = "Destination Caller ID Name";
$text['label-dest-caller-id-nam']['es-cl'] = "Nombre de Caller ID de destino";
$text['label-dest-caller-id-nam']['pt-pt'] = "Nome do Chamador";
$text['label-dest-caller-id-nam']['pt-br'] = "Identificação do destino";
$text['label-dest-caller-id-nam']['fr-fr'] = "Nom de l'appelant";
$text['desc-dest-caller-id-nam']['en-us'] = "Enter the Caller ID name to send to the destination number.";
$text['desc-dest-caller-id-nam']['es-cl'] = "Ingrese el nombre de Caller ID para enviar al número de destino.";
$text['desc-dest-caller-id-nam']['pt-pt'] = "Introduza o identificador do chamador a ser enviado para o destinatário.";
$text['desc-dest-caller-id-nam']['pt-br'] = "Entre com a identificação a ser enviada para o número de destino.";
$text['desc-dest-caller-id-nam']['fr-fr'] = "Choisir le nom d'appelant à émettre à la destination";
$text['label-dest-caller-id-num']['en-us'] = "Destination Caller ID Number";
$text['label-dest-caller-id-num']['es-cl'] = "Número de Caller ID de destino";
$text['label-dest-caller-id-num']['pt-pt'] = "Número a apresentar no destino";
$text['label-dest-caller-id-num']['pt-br'] = "Número de destino";
$text['label-dest-caller-id-num']['fr-fr'] = "Numéro de l'appelant";
$text['desc-dest-caller-id-num']['en-us'] = "Enter the Caller ID number to send to the destination number (you probably want this to be your phone number).";
$text['desc-dest-caller-id-num']['es-cl'] = "Ingrese número de Caller ID para enviar al número de destino (probablemente desee que sea su número de teléfono).";
$text['desc-dest-caller-id-num']['pt-pt'] = "Introduza o número identificador de chamada a ser enviado ao telefone de destino (geralmente é o mesmo que o seu número de telefone).";
$text['desc-dest-caller-id-num']['pt-br'] = "Entre com o número de identificação a ser mandado para o número de destino (geralmente é o mesmo que o número de telefone).";
$text['desc-dest-caller-id-num']['fr-fr'] = "Choisir le numéro d'appelant à émettre au téléphone destination (Il est en général le même que votre numéro.)";
$text['label-src-num']['en-us'] = "Source Number";
$text['label-src-num']['es-cl'] = "Número de origen";
$text['label-src-num']['pt-pt'] = "Número de origem";
$text['label-src-num']['pt-br'] = "Número de origem";
$text['label-src-num']['fr-fr'] = "Numéro Source";
$text['desc-src-num']['en-us'] = "Enter your phone number. This can be an extension on the system, or another number (eg: mobile phone).";
$text['desc-src-num']['es-cl'] = "Ingrese su número de teléfono. Este puede ser una extesión en el sistema, u otro número (ej. teléfono movil).";
$text['desc-src-num']['pt-pt'] = "Introduza o seu número de telefone. Poderá ser uma extensão do sistema ou outro número (ex: número de telemóvel).";
$text['desc-src-num']['pt-br'] = "Entre com seu númerop de telefone. Pode ser um ramal ou outro número (ex: número de celular).";
$text['desc-src-num']['fr-fr'] = "Choisir votre numéro de téléphone. Il peut être une extension du système, ou tout autre numéro (eg: un mobile).";
$text['label-dest-num']['en-us'] = "Destination Number";
$text['label-dest-num']['es-cl'] = "Número de destino";
$text['label-dest-num']['pt-pt'] = "Número do Destino";
$text['label-dest-num']['pt-br'] = "Número do Destino";
$text['label-dest-num']['fr-fr'] = "Numéro Destination";
$text['desc-dest-num']['en-us'] = "Enter the number to call. This can be an extension on the system, another number, or a sip uri. Sip URI's are of the form 5551234567@voip.example.com:5080 (5080 for freeswitch, or 5060 for other systems).";
$text['desc-dest-num']['es-cl'] = "Ingrese el número a llamar. Este puede ser una extensión en el sistema, otro número o un uri sip. Uri's sip son de la forma 5551234567@voip.example.com:5080 (5080 para freeswitch, o 5060 para otros sistemas).";
$text['desc-dest-num']['pt-pt'] = "Introduza o número para chamar. Poderá ser uma extensão do sistema, outro número, ou um SIP URI. Os SIP URI's respeitam a seguinte nomenclatura: +351210000000@voip.example.com";
$text['desc-dest-num']['pt-pt'] = "Entre com o número a ser ligado. Pode ser um ramal, outro número, ou SIP URI. Exemplo de SIP URI: 12345678@voip.example.com:5080, sendo 5080 para o freeswitch ou 5060 para outros sistemas.";
$text['desc-dest-num']['fr-fr'] = "Choisir un numéro à appeler. Il peut être une extension du système, un autre numéro, une URI SIP. les URI SIP sont de la forme : 5551234567@voip.example.com:5080 (5080 pour freeswitch, ou 5060 pour d'autre système).";
$text['label-auto-answer']['en-us'] = "Auto Answer";
$text['label-auto-answer']['es-cl'] = "respuesta automática";
$text['label-auto-answer']['pt-pt'] = "Resposta Automática";
$text['label-auto-answer']['pt-br'] = "Resposta Automática";
$text['label-auto-answer']['fr-fr'] = "Réponse Auto";
$text['desc-auto-answer']['en-us'] = "Select whether to enable auto answer.";
$text['desc-auto-answer']['es-cl'] = "Indique si desea activar la respuesta automática.";
$text['desc-auto-answer']['pt-pt'] = "Activar ou Desactivar a resposta automática.";
$text['desc-auto-answer']['pt-br'] = "Ativar ou desativar a resposta automática.";
$text['desc-auto-answer']['fr-fr'] = "Activer ou non la réponse automatique.";
$text['label-record']['en-us'] = "Record";
$text['label-record']['es-cl'] = "Grabar";
$text['label-record']['pt-pt'] = "Gravar";
$text['label-record']['pt-br'] = "Gravar";
$text['label-record']['fr-fr'] = "Enregistrer";
$text['label-true']['en-us'] = "true";
$text['label-true']['es-cl'] = "verdadero";
$text['label-true']['pt-pt'] = "sim";
$text['label-true']['pt-br'] = "sim";
$text['label-true']['fr-fr'] = "oui";
$text['label-false']['en-us'] = "false";
$text['label-false']['es-cl'] = "falso";
$text['label-false']['pt-pt'] = "não";
$text['label-false']['pt-pt'] = "não";
$text['label-false']['fr-fr'] = "non";
$text['desc-record']['en-us'] = "Select whether to record the call.";
$text['desc-record']['es-cl'] = "Indique si desea grabar la llamada.";
$text['desc-record']['pt-pt'] = "Escolha se quer gravar chamada.";
$text['desc-record']['pt-br'] = "Escolha se quer gravar chamada.";
$text['desc-record']['fr-fr'] = "Choisir si vous voulez enregistrer l'appel.";
$text['label-ringback']['en-us'] = "Ring Back";
$text['label-ringback']['es-cl'] = "Regresar tono";
$text['label-ringback']['pt-pt'] = "Ring Back";
$text['label-ringback']['pt-br'] = "Tocar de volta (Ring Back)";
$text['label-ringback']['fr-fr'] = "Retour de sonnerie";
$text['desc-ringback']['en-us'] = "Defines what you will hear while destination is being called. The choices are music (music on hold) ring (ring tone).";
$text['desc-ringback']['es-cl'] = "Defina qué desea escuchar mientras se llama al destinatario. Las opciones son música (música en espera) o tono de marcado";
$text['desc-ringback']['pt-pt'] = "Definir o que deseja ouvir enquanto o destino não atende. As escolhas são música (música em espera) ring (tom de chamada).";
$text['desc-ringback']['pt-br'] = "Definir o que deseja escutar enquanto o destino não atende. As escolhas são música (música em espera) ring (tom de chamada).";
$text['desc-ringback']['fr-fr'] = "Défini ce vous entendrez pendant que la destination sera appelée. Les choix sont musique (musique de garde) sonnerie.";
$text['opt-usring']['en-us'] = "us-ring";
$text['opt-usring']['es-cl'] = "us-ring";
$text['opt-usring']['pt-pt'] = "us-ring";
$text['opt-usring']['pt-br'] = "us-ring";
$text['opt-usring']['fr-fr'] = "us-ring";
$text['opt-frring']['en-us'] = "fr-ring";
$text['opt-frring']['es-cl'] = "fr-ring";
$text['opt-frring']['pt-pt'] = "fr-ring";
$text['opt-frring']['pt-br'] = "fr-ring";
$text['opt-frring']['fr-fr'] = "fr-ring";
$text['opt-ptring']['en-us'] = "pt-ring";
$text['opt-ptring']['es-cl'] = "pt-ring";
$text['opt-ptring']['pt-pt'] = "pt-ring";
$text['opt-ptring']['pt-br'] = "pt-ring";
$text['opt-ptring']['fr-fr'] = "pt-ring";
$text['opt-ukring']['en-us'] = "uk-ring";
$text['opt-ukring']['es-cl'] = "uk-ring";
$text['opt-ukring']['pt-pt'] = "uk-ring";
$text['opt-ukring']['pt-br'] = "uk-ring";
$text['opt-ukring']['fr-fr'] = "uk-ring";
$text['opt-rsring']['en-us'] = "rs-ring";
$text['opt-rsring']['es-cl'] = "rs-ring";
$text['opt-rsring']['pt-pt'] = "rs-ring";
$text['opt-rsring']['pt-br'] = "rs-ring";
$text['opt-rsring']['fr-fr'] = "rs-ring";
$text['opt-itring']['en-us'] = "it-ring";
$text['opt-itring']['es-cl'] = "it-ring";
$text['opt-itring']['pt-pt'] = "it-ring";
$text['opt-itring']['pt-br'] = "it-ring";
$text['opt-itring']['fr-fr'] = "it-ring";
$text['opt-moh']['en-us'] = "music";
$text['opt-moh']['es-cl'] = "musica";
$text['opt-moh']['pt-pt'] = "música";
$text['opt-moh']['pt-br'] = "música";
$text['opt-moh']['fr-fr'] = "musique";
$text['button-call']['en-us'] = "Call";
$text['button-call']['es-cl'] = "Llamar";
$text['button-call']['pt-pt'] = "Chamada";
$text['button-call']['pt-br'] = "Chamada";
$text['button-call']['fr-fr'] = "appel";
?>
+17 -17
View File
@@ -1,18 +1,18 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Click to Call";
$apps[$x]['menu'][0]['title']['es-cl'] = "Pulse para Llamar";
$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'] = "Cliquez pour Appeller";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Clicar para Chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "f862556f-9ddd-2697-fdf4-bed08ec63aa5";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/click_to_call/click_to_call.php";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Click to Call";
$apps[$x]['menu'][0]['title']['es-cl'] = "Pulse para Llamar";
$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'] = "Cliquez pour Appeller";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Clicar para Chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "f862556f-9ddd-2697-fdf4-bed08ec63aa5";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/click_to_call/click_to_call.php";
?>
+377 -414
View File
@@ -1,414 +1,377 @@
<?php
/* $Id$ */
/*
call.php
Copyright (C) 2008, 2009 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.
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('click_to_call_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//include the header
require_once "resources/header.php";
if (is_array($_REQUEST) && !empty($_REQUEST['src']) && !empty($_REQUEST['dest'])) {
//get the http variables and set them as variables
$src = check_str($_REQUEST['src']);
$dest = check_str($_REQUEST['dest']);
$ringback = check_str($_REQUEST['ringback']);
$src = str_replace(array('.', '(', ')', '-', ' '), '', $src);
if (strpbrk($dest, '@') != FALSE) {
$dest = str_replace(array('(', ')', ' '), '', $dest); //don't strip periods or dashes in sip-uri calls
}
else {
$dest = str_replace(array('.', '(', ')', '-', ' '), '', $dest); //strip the periods for phone numbers.
}
$src_cid_name = check_str($_REQUEST['src_cid_name']);
$src_cid_number = check_str($_REQUEST['src_cid_number']);
$dest_cid_name = check_str($_REQUEST['dest_cid_name']);
$dest_cid_number = check_str($_REQUEST['dest_cid_number']);
$auto_answer = check_str($_REQUEST['auto_answer']); //true,false
$rec = check_str($_REQUEST['rec']); //true,false
if ($auto_answer == "true") {
$sip_auto_answer = "sip_auto_answer=true,";
}
else {
$sip_auto_answer = '';
}
if (strlen($cid_number) == 0) { $cid_number = $src;}
$context = $_SESSION['context'];
//workaround for TBDialout on Thunderbird
//seems it can only handle the first %NUM%
if ($dest == "%NUM%"){
//echo "Thunderbird fix, dest now = $src_cid_number <br>";
$dest = $src_cid_number;
}
//translate ringback
switch ($ringback) {
case "us-ring":
$ringback_value = "\'%(2000,4000,440.0,480.0)\'";
break;
case "uk-ring":
$ringback_value = "\'%(400,200,400,450);%(400,2200,400,450)\'";
break;
case "fr-ring":
$ringback_value = "\'%(1500,3500,440.0,0.0)\'";
break;
case "pt-ring":
$ringback_value = "\'%(1000,5000,400.0,0.0)\'";
break;
case "rs-ring":
$ringback_value = "\'%(1000,4000,425.0,0.0)\'";
break;
case "it-ring":
$ringback_value = "\'%(1000,4000,425.0,0.0)\'";
break;
case "music":
$ringback_value = "\'local_stream://moh\'";
break;
default:
$ringback = 'us-ring';
$ringback_value = "\'%(2000,4000,440.0,480.0)\'";
}
//source should see the destination caller id
if (strlen($src) < 7) {
$source = "{click_to_call=true,".$sip_auto_answer."origination_caller_id_name='$src_cid_name',origination_caller_id_number=$src_cid_number,instant_ringback=true,ringback=$ringback_value,presence_id=$src@".$_SESSION['domains'][$domain_uuid]['domain_name'].",call_direction=outbound,domain_uuid=".$domain_uuid.",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/$src@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
$bridge_array = outbound_route_to_bridge ($_SESSION['domain_uuid'], $src);
$source = "{click_to_call=true,origination_caller_id_name='$src_cid_name',origination_caller_id_number=$src_cid_number,instant_ringback=true,ringback=$ringback_value,presence_id=$src@".$_SESSION['domains'][$domain_uuid]['domain_name'].",call_direction=outbound}".$bridge_array[0];
}
//destination needs to see the source caller id
if (strlen($dest) < 7) {
if (strpbrk($dest, '@') != FALSE) {
//echo "Found an @ 2<br><br>";
$switch_cmd = "api originate $source &bridge({origination_caller_id_name='$dest_cid_name',origination_caller_id_number=$dest_cid_number,call_direction=outbound}sofia/external/$dest)";
echo "$switch_cmd";
}
else {
$switch_cmd = "api originate $source &transfer('".$dest." XML ".$context."')";
}
}
else {
if (strlen($src) < 7) {
if (strlen($dest_cid_number) == 0) {
//get the caller id from the extension caller id comes from the extension (the source number)
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and extension = '$src' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dest_cid_name = $row["outbound_caller_id_name"];
$dest_cid_number = $row["outbound_caller_id_number"];
break; //limit to 1 row
}
unset ($prep_statement);
}
}
$bridge_array = outbound_route_to_bridge ($_SESSION['domain_uuid'], $dest);
$destination = "{origination_caller_id_name='$dest_cid_name',origination_caller_id_number=$dest_cid_number}".$bridge_array[0];
if (permission_exists('click_to_call_call')) {
if (strpbrk($dest, '@') != FALSE) {
//call a sip uri
//echo "Found an @ 4, do nothing for now<br><br>";
$switch_cmd = "api originate $source &bridge({origination_caller_id_name='$dest_cid_name',origination_caller_id_number=$dest_cid_number,call_direction=outbound}sofia/external/$dest)";
//echo "<br>SWITCH-CMD: $switch_cmd<br>";
}
else {
//regular call
$switch_cmd = "api originate $source &bridge($destination)";
}
}
}
//display the last command
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>$switch_cmd $src has called $dest</strong></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//show the error message
$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 {
//show the command result
$result = trim(event_socket_request($fp, $switch_cmd));
if (substr($result, 0,3) == "+OK") {
$uuid = substr($result, 4);
if ($rec == "true") {
//use the server's time zone to ensure it matches the time zone used by freeswitch
date_default_timezone_set($_SESSION['time_zone']['system']);
//create the api record command and send it over event socket
$switch_cmd = "api uuid_record ".$uuid." start ".$_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$uuid.".wav";
$result2 = trim(event_socket_request($fp, $switch_cmd));
}
}
echo "<div align='center'>\n";
echo "<br />\n";
echo $result;
echo "<br />\n";
echo "<br />\n";
echo "</div>\n";
}
}
//show html form
echo " <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'>\n";
echo " <span class=\"title\">\n";
echo " <strong>".$text['label-click2call']."</strong>\n";
echo " </span>\n";
echo " </td>\n";
echo " <td align='right'>\n";
echo " &nbsp;\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " <span class=\"vexpl\">\n";
echo " ".$text['desc-click2call']."\n";
echo " </span>\n";
echo " </td>\n";
echo "\n";
echo " </tr>\n";
echo " </table>";
echo " <br />";
echo "<form>\n";
echo "<table border='0' width='100%' cellpadding='0' cellspacing='0'\n";
echo "<tr>\n";
echo " <td class='vncellreq' width='40%'>".$text['label-src-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_name\" value='$src_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_number\" value='$src_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell' width='40%'>".$text['label-dest-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_name\" value='$dest_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell'>".$text['label-dest-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_number\" value='$dest_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src\" value='$src' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-dest-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest\" value='$dest' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo" <tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-auto-answer']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='auto_answer'>\n";
echo " <option value=''></option>\n";
if ($auto_answer == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($auto_answer == "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['desc-auto-answer']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-record']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='rec'>\n";
echo " <option value=''></option>\n";
if ($rec == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($rec == "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['desc-record']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-ringback']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='ringback'>\n";
echo " <option value=''></option>\n";
if ($ringback == "us-ring") {
echo " <option value='us-ring' selected='selected'>".$text['opt-usring']."</option>\n";
}
else {
echo " <option value='us-ring'>".$text['opt-usring']."</option>\n";
}
if ($ringback == "fr-ring") {
echo " <option value='fr-ring' selected='selected'>".$text['opt-frring']."</option>\n";
}
else {
echo " <option value='fr-ring'>".$text['opt-frring']."</option>\n";
}
if ($ringback == "pt-ring") {
echo " <option value='pt-ring' selected='selected'>".$text['opt-ptring']."</option>\n";
}
else {
echo " <option value='pt-ring'>".$text['opt-ptring']."</option>\n";
}
if ($ringback == "uk-ring") {
echo " <option value='uk-ring' selected='selected'>".$text['opt-ukring']."</option>\n";
}
else {
echo " <option value='uk-ring'>".$text['opt-ukring']."</option>\n";
}
if ($ringback == "rs-ring") {
echo " <option value='rs-ring' selected='selected'>".$text['opt-rsring']."</option>\n";
}
else {
echo " <option value='rs-ring'>".$text['opt-rsring']."</option>\n";
}
if ($ringback == "it-ring") {
echo " <option value='it-ring' selected='selected'>".$text['opt-itring']."</option>\n";
}
else {
echo " <option value='it-ring'>".$text['opt-itring']."</option>\n";
}
if ($ringback == "music") {
echo " <option value='music' selected='selected'>".$text['opt-moh']."</option>\n";
}
else {
echo " <option value='music'>".$text['opt-moh']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-ringback']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " <input type=\"submit\" class='btn' value=\"".$text['button-call']."\">\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//show the footer
require_once "resources/footer.php";
?>
<?php
/* $Id$ */
/*
call.php
Copyright (C) 2008, 2009 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.
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('click_to_call_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//include the header
require_once "resources/header.php";
if (is_array($_REQUEST) && !empty($_REQUEST['src']) && !empty($_REQUEST['dest'])) {
//retrieve submitted variables
$src = check_str($_REQUEST['src']);
$src_cid_name = check_str($_REQUEST['src_cid_name']);
$src_cid_number = check_str($_REQUEST['src_cid_number']);
$dest = check_str($_REQUEST['dest']);
$dest_cid_name = check_str($_REQUEST['dest_cid_name']);
$dest_cid_number = check_str($_REQUEST['dest_cid_number']);
$auto_answer = check_str($_REQUEST['auto_answer']); //true,false
$rec = check_str($_REQUEST['rec']); //true,false
$ringback = check_str($_REQUEST['ringback']);
$context = $_SESSION['context'];
//clean up variable values
$src = str_replace(array('.','(',')','-',' '), '', $src);
$dest = (strpbrk($dest, '@') != FALSE) ? str_replace(array('(',')',' '), '', $dest) : str_replace(array('.','(',')','-',' '), '', $dest); //don't strip periods or dashes in sip-uri calls, only phone numbers
//adjust variable values
$sip_auto_answer = ($auto_answer == "true") ? ",sip_auto_answer=true" : null;
//mozilla thunderbird TBDialout workaround (seems it can only handle the first %NUM%)
$dest = ($dest == "%NUM%") ? $src_cid_number : $dest;
//translate ringback
switch ($ringback) {
case "music": $ringback_value = "\'local_stream://moh\'"; break;
case "uk-ring": $ringback_value = "\'%(400,200,400,450);%(400,2200,400,450)\'"; break;
case "fr-ring": $ringback_value = "\'%(1500,3500,440.0,0.0)\'"; break;
case "pt-ring": $ringback_value = "\'%(1000,5000,400.0,0.0)\'"; break;
case "rs-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "it-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "us-ring":
default:
$ringback = 'us-ring';
$ringback_value = "\'%(2000,4000,440.0,480.0)\'";
}
//determine call direction
$dir = (strlen($dest) < 7) ? 'local' : 'outbound';
//define a leg - set source to display the defined caller id name and number
$source_common = "{".
"click_to_call=true".
",origination_caller_id_name='".$src_cid_name."'".
",origination_caller_id_number=".$src_cid_number.
",instant_ringback=true".
",ringback=".$ringback_value.
",presence_id=".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'].
",call_direction=".$dir;
if (strlen($src) < 7) {
//source is a local extension
$source = $source_common.$sip_auto_answer.
",domain_uuid=".$domain_uuid.
",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
//source is an external number
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $src);
$source = $source_common."}".$bridge_array[0];
}
unset($source_common);
//define b leg - set destination to display the defined caller id name and number
$destination_common = " &bridge({origination_caller_id_name='".$dest_cid_name."',origination_caller_id_number=".$dest_cid_number;
if (strlen($dest) < 7) {
//destination is a local extension
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
else {
//local extension (source) > external number (destination)
if (strlen($src) < 7 && strlen($dest_cid_number) == 0) {
//retrieve outbound caller id from the (source) extension
$sql = "select outbound_caller_id_name, outbound_caller_id_number from v_extensions where domain_uuid = '".$_SESSION['domain_uuid']."' and extension = '".$src."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dest_cid_name = $row["outbound_caller_id_name"];
$dest_cid_number = $row["outbound_caller_id_number"];
break; //limit to 1 row
}
unset ($prep_statement);
}
if (permission_exists('click_to_call_call')) {
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $dest);
//$switch_cmd = $destination_common."}".$bridge_array[0].")"; // wouldn't set cdr destination correctly, so below used instead
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
}
unset($destination_common);
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
else {
//display the last command
$switch_cmd = "api originate ".$source.$switch_cmd;
echo "<div align='center'>".$switch_cmd."<br /><br /><strong>".$src." has called ".$dest."</strong></div>\n";
//show the command result
$result = trim(event_socket_request($fp, $switch_cmd));
if (substr($result, 0,3) == "+OK") {
$uuid = substr($result, 4);
if ($rec == "true") {
//use the server's time zone to ensure it matches the time zone used by freeswitch
date_default_timezone_set($_SESSION['time_zone']['system']);
//create the api record command and send it over event socket
$switch_cmd = "api uuid_record ".$uuid." start ".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$uuid.".wav";
$result2 = trim(event_socket_request($fp, $switch_cmd));
}
}
echo "<div align='center'><br />".$result."<br /><br /></div>\n";
}
}
//show html form
echo " <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'>\n";
echo " <span class=\"title\">\n";
echo " <strong>".$text['label-click2call']."</strong>\n";
echo " </span>\n";
echo " </td>\n";
echo " <td align='right'>\n";
echo " &nbsp;\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " <span class=\"vexpl\">\n";
echo " ".$text['desc-click2call']."\n";
echo " </span>\n";
echo " </td>\n";
echo "\n";
echo " </tr>\n";
echo " </table>";
echo " <br />";
echo "<form>\n";
echo "<table border='0' width='100%' cellpadding='0' cellspacing='0'\n";
echo "<tr>\n";
echo " <td class='vncellreq' width='40%'>".$text['label-src-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_name\" value='$src_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_number\" value='$src_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell' width='40%'>".$text['label-dest-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_name\" value='$dest_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell'>".$text['label-dest-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_number\" value='$dest_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src\" value='$src' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-dest-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest\" value='$dest' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo" <tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-auto-answer']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='auto_answer'>\n";
echo " <option value=''></option>\n";
if ($auto_answer == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($auto_answer == "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['desc-auto-answer']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-record']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='rec'>\n";
echo " <option value=''></option>\n";
if ($rec == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($rec == "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['desc-record']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-ringback']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='ringback'>\n";
echo " <option value=''></option>\n";
if ($ringback == "us-ring") {
echo " <option value='us-ring' selected='selected'>".$text['opt-usring']."</option>\n";
}
else {
echo " <option value='us-ring'>".$text['opt-usring']."</option>\n";
}
if ($ringback == "fr-ring") {
echo " <option value='fr-ring' selected='selected'>".$text['opt-frring']."</option>\n";
}
else {
echo " <option value='fr-ring'>".$text['opt-frring']."</option>\n";
}
if ($ringback == "pt-ring") {
echo " <option value='pt-ring' selected='selected'>".$text['opt-ptring']."</option>\n";
}
else {
echo " <option value='pt-ring'>".$text['opt-ptring']."</option>\n";
}
if ($ringback == "uk-ring") {
echo " <option value='uk-ring' selected='selected'>".$text['opt-ukring']."</option>\n";
}
else {
echo " <option value='uk-ring'>".$text['opt-ukring']."</option>\n";
}
if ($ringback == "rs-ring") {
echo " <option value='rs-ring' selected='selected'>".$text['opt-rsring']."</option>\n";
}
else {
echo " <option value='rs-ring'>".$text['opt-rsring']."</option>\n";
}
if ($ringback == "it-ring") {
echo " <option value='it-ring' selected='selected'>".$text['opt-itring']."</option>\n";
}
else {
echo " <option value='it-ring'>".$text['opt-itring']."</option>\n";
}
if ($ringback == "music") {
echo " <option value='music' selected='selected'>".$text['opt-moh']."</option>\n";
}
else {
echo " <option value='music'>".$text['opt-moh']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-ringback']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " <input type=\"submit\" class='btn' value=\"".$text['button-call']."\">\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//show the footer
require_once "resources/footer.php";
?>
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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"]);
}
?>
+42 -40
View File
@@ -17,7 +17,7 @@
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "O centro de conferências permite gerir uma ou mais salas de conferência, audio e vídeo.";
$apps[$x]['description']['pt-br'] = "";
$apps[$x]['description']['pt-br'] = "O centro de conferências permite gerir uma ou mais salas de conferência de audio e vídeo.";
//destination details
$y = 0;
@@ -58,6 +58,10 @@
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "user";
$y++;
$apps[$x]['permissions'][$y]['name'] = "conference_room_view_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "conference_room_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
@@ -192,26 +196,32 @@
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the conference center name.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o nome do centro de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_extension";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the conference center extension number.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o ramal do centro de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_pin_length";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the pin length.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Informe o tamanho do código PIN.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_greeting";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the conference greeting.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com as boas-vindas da conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the center description.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com a descrição do centro de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enable or disable the conference center.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Habilite ou desabilite o centro de conferência.";
$y = 1; //table array index
$z = 0; //field array index
@@ -238,6 +248,7 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_conference_centers";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "conference_center_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Conference UUID";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Identificador universal único do centro de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
@@ -247,63 +258,79 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_meetings";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Meeting UUID";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Identificador universal único do encontro/reunião.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_room_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the conference room name.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Entre com o nome da sala de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "profile";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the conference profile.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione o perfil da conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "record";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "recording";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select whether to record the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione se deseja gravar a conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "max_members";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Limit number of people in the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Número máximo de pessoas na conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "start_datetime";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Open the conference room at the start time.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Abra a sala de conferência na hora de início.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "stop_datetime";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Close the conference room at the stop time.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Fecha a sala de conferência na hora do término.";
$z++;
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "wait_mod";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Wait for the moderator to join before starting the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Esperar pelo moderador se juntar antes de começar a conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "announce";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Introduce participants as they enter the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Anunciar os participantes a medida que entram na conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "sounds";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Play sound when someone enters or exists the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Tocar um som quando alguém entrar ou sair da conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "mute";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Mute participants on entering the conference.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Silenciar participantes ao entrar na conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "created";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Date when the conference was created.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Data de quando a conferência foi criada.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "created_by";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "The user that created the conference session.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Usuário que criou está conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select to enable or disable the session.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Habilitar ou desabilitar a sessão de conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Description.for the conference session.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Descrição para a sessão de conferência.";
$z++;
$y = 2; //table array index
@@ -331,22 +358,27 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_meetings";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "meeting_uuid (identificador de reunião)";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "profile";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the conference profile.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Selecione o perfil da conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "recording";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Conference Recording";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Gravações da conferência.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "start_epoch";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "start_epoch";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Início do período.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "end_epoch";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "end_epoch";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Fim do período.";
$z++;
$y = 3; //table array index
@@ -382,79 +414,49 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_meetings";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "meeting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "meeting_uuid";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Extension number.";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Ramal.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "caller_id_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "caller_id_name";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Nome da pessoa que liga";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "caller_id_number";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "caller_id_number";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Nome da pessoa que liga";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "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]['description']['en-us'] = "Call UUID";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Identificador único da chamada.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "moderator";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Moderator";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Moderador";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "network_addr";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "network address";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Endereço de rede";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "start_epoch";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "start_epoch";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Início do período";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "end_epoch";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "end_epoch";
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = "Fim do período";
$z++;
/*
$y = 4; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_conference_center_users";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_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'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$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";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_center_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_conference_centers";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "conference_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'] = "";
*/
?>
+30 -190
View File
@@ -44,7 +44,7 @@ $text['title-conference_centers']['en-us'] = "Conference Centers";
$text['title-conference_centers']['es-cl'] = "Centro de Conferencias";
$text['title-conference_centers']['pt-pt'] = "Centro de Conferências";
$text['title-conference_centers']['fr-fr'] = "Conférences";
$text['title-conference_centers']['pt-br'] = "Centro de conferências ";
$text['title-conference_centers']['pt-br'] = "Centros de conferência";
$text['title-conference_centers']['pl'] = "Centra Konferencyjne";
$text['title-conference_centers']['sv-se'] = "Konferenscenter";
$text['title-conference_centers']['uk'] = "Конференц-центри";
@@ -60,21 +60,11 @@ $text['title-conference_center']['sv-se'] = "Konferenscenter";
$text['title-conference_center']['uk'] = "Конференц-центр";
$text['title-conference_center']['de-at'] = "Konferenz Zentrale";
$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']['pl'] = "Zaktualizowano poprawnie";
$text['message-update']['sv-se'] = "Uppdatering Klar";
$text['message-update']['uk'] = "Оновлено";
$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
$text['message-unique_participant_pin']['en-us'] = "Please provide a unique Participant PIN number.";
$text['message-unique_participant_pin']['es-cl'] = "Por favor ingrese su número PIN participante único.";
$text['message-unique_participant_pin']['pt-pt'] = "Por favor, forneça um número PIN Participante único.";
$text['message-unique_participant_pin']['fr-fr'] = "Se il vous plaît fournir un numéro unique PIN de participant.";
$text['message-unique_participant_pin']['pt-br'] = "Por favor, forneça um número PIN para participar da conferência";
$text['message-unique_participant_pin']['pt-br'] = "Por favor, forneça um PIN único de participante.";
$text['message-unique_participant_pin']['pl'] = "Wprowadź unikalny numer PIN uczestnika";
$text['message-unique_participant_pin']['sv-se'] = "Ange en unik PIN kod för deltagare.";
$text['message-unique_participant_pin']['uk'] = "Будь ласка, надайте унікальний PIN-код для учасника";
@@ -94,7 +84,7 @@ $text['message-non_unique_pin']['en-us'] = "Moderator and Participant PIN number
$text['message-non_unique_pin']['es-cl'] = "Moderador números PIN y participante deben ser únicos.";
$text['message-non_unique_pin']['pt-pt'] = "Moderador números e PIN Participante deve ser exclusivo.";
$text['message-non_unique_pin']['fr-fr'] = "Numéros de modérateur et de PIN de participant doivent être uniques.";
$text['message-non_unique_pin']['pt-br'] = "O número do PIN de participante deve ser exclusivo";
$text['message-non_unique_pin']['pt-br'] = "O número do PIN de participante deve ser único";
$text['message-non_unique_pin']['pl'] = "Numery PIN uczestnika i moderatora muszą buć unikalne.";
$text['message-non_unique_pin']['sv-se'] = "Moderator och Deltagar PIN koder måste vara unika.";
$text['message-non_unique_pin']['uk'] = "PIN-коди модератора і учасника повинні бути унікальними.";
@@ -104,37 +94,17 @@ $text['message-minimum_pin_length']['en-us'] = "Minimum PIN length required:";
$text['message-minimum_pin_length']['es-cl'] = "Longitud PIN mínima requerida:";
$text['message-minimum_pin_length']['pt-pt'] = "Comprimento PIN Requisitos mínimos:";
$text['message-minimum_pin_length']['fr-fr'] = "Longueur de PIN minimum requis:";
$text['message-minimum_pin_length']['pt-br'] = "Tamanho minimo do PIN";
$text['message-minimum_pin_length']['pt-br'] = "Tamanho mínimo do PIN:";
$text['message-minimum_pin_length']['pl'] = "Minimalna długość kodu PIN:";
$text['message-minimum_pin_length']['sv-se'] = "Minimum läng på PIN:";
$text['message-minimum_pin_length']['uk'] = "Мінімальна довжина PIN-коду:";
$text['message-minimum_pin_length']['de-at'] = "Minimale PIN länge erforderlich:";
$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']['pl'] = "Usunięto poprawnie";
$text['message-delete']['sv-se'] = "Borttagning Klar";
$text['message-delete']['uk'] = "Видалено";
$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
$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']['pl'] = "Dodano poprawnie";
$text['message-add']['sv-se'] = "Tillagd";
$text['message-add']['uk'] = "Додано";
$text['message-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['label-wait_moderator']['en-us'] = "Secure";
$text['label-wait_moderator']['es-cl'] = "Seguro";
$text['label-wait_moderator']['pt-pt'] = "Proteger";
$text['label-wait_moderator']['fr-fr'] = "Assurer";
$text['label-wait_moderator']['pt-br'] = "Proteger";
$text['label-wait_moderator']['pt-br'] = "Seguro";
$text['label-wait_moderator']['pl'] = "Zabezpieczenie";
$text['label-wait_moderator']['sv-se'] = "Säker";
$text['label-wait_moderator']['uk'] = "Захищено";
@@ -144,7 +114,7 @@ $text['label-wait_for_moderator']['en-us'] = "Wait for Moderator";
$text['label-wait_for_moderator']['es-cl'] = "Esperar un Moderador";
$text['label-wait_for_moderator']['pt-pt'] = "Esperar pelo Moderador";
$text['label-wait_for_moderator']['fr-fr'] = "Attente du Modérateur";
$text['label-wait_for_moderator']['pt-br'] = "Esperar pelo administrador";
$text['label-wait_for_moderator']['pt-br'] = "Esperar pelo moderador";
$text['label-wait_for_moderator']['pl'] = "Zaczekaj na moderatora";
$text['label-wait_for_moderator']['sv-se'] = "Vänta på Moderator";
$text['label-wait_for_moderator']['uk'] = "Очікування на модератора";
@@ -164,7 +134,7 @@ $text['label-uuid']['en-us'] = "UUID";
$text['label-uuid']['es-cl'] = "UUID";
$text['label-uuid']['pt-pt'] = "UUID";
$text['label-uuid']['fr-fr'] = "UUID";
$text['label-uuid']['pt-br'] = "UUID";
$text['label-uuid']['pt-br'] = "UUID (Identificador único)";
$text['label-uuid']['pl'] = "UUID";
$text['label-uuid']['sv-se'] = "UUID";
$text['label-uuid']['uk'] = "UUID";
@@ -190,16 +160,6 @@ $text['label-username']['sv-se'] = "Användarnamn";
$text['label-username']['uk'] = "Ім’я користувача";
$text['label-username']['de-at'] = "Benutzername";
$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']['pl'] = "Tak";
$text['label-true']['sv-se'] = "Sann";
$text['label-true']['uk'] = "Так";
$text['label-true']['de-at'] = "Ein";
$text['label-tools']['en-us'] = "Tools";
$text['label-tools']['es-cl'] = "Herramientas";
$text['label-tools']['pt-pt'] = "Ferramentas";
@@ -214,7 +174,7 @@ $text['label-to']['en-us'] = "To";
$text['label-to']['es-cl'] = "Final";
$text['label-to']['pt-pt'] = "Final";
$text['label-to']['fr-fr'] = "Fin";
$text['label-to']['pt-br'] = "Final";
$text['label-to']['pt-br'] = "Até";
$text['label-to']['pl'] = "Do";
$text['label-to']['sv-se'] = "Till";
$text['label-to']['uk'] = "До";
@@ -224,7 +184,7 @@ $text['label-time']['en-us'] = "Time";
$text['label-time']['es-cl'] = "Hora";
$text['label-time']['pt-pt'] = "Hora";
$text['label-time']['fr-fr'] = "Heure";
$text['label-time']['pt-br'] = "Fuso Horário";
$text['label-time']['pt-br'] = "Hora";
$text['label-time']['pl'] = "Strefa czasowa";
$text['label-time']['sv-se'] = "Tid";
$text['label-time']['uk'] = "Час";
@@ -264,7 +224,7 @@ $text['label-schedule']['en-us'] = "Schedule";
$text['label-schedule']['es-cl'] = "Horario";
$text['label-schedule']['pt-pt'] = "Horário";
$text['label-schedule']['fr-fr'] = "Calendrier";
$text['label-schedule']['pt-br'] = "Horário";
$text['label-schedule']['pt-br'] = "Cronograma";
$text['label-schedule']['pl'] = "Harmonogram";
$text['label-schedule']['sv-se'] = "Schema";
$text['label-schedule']['uk'] = "Розклад";
@@ -294,7 +254,7 @@ $text['label-record']['en-us'] = "Record";
$text['label-record']['es-cl'] = "Grabar";
$text['label-record']['pt-pt'] = "Gravar";
$text['label-record']['fr-fr'] = "Enregistrer";
$text['label-record']['pt-br'] = "Registro";
$text['label-record']['pt-br'] = "Gravar";
$text['label-record']['pl'] = "Nagraj";
$text['label-record']['sv-se'] = "Spela In";
$text['label-record']['uk'] = "Запис";
@@ -314,7 +274,7 @@ $text['label-play']['en-us'] = "Play";
$text['label-play']['es-cl'] = "Reproducir";
$text['label-play']['pt-pt'] = "Tocar";
$text['label-play']['fr-fr'] = "Jouer";
$text['label-play']['pt-br'] = "Tocar";
$text['label-play']['pt-br'] = "Reproduzir";
$text['label-play']['pl'] = "Odtwórz";
$text['label-play']['sv-se'] = "Spela Upp";
$text['label-play']['uk'] = "Відтворити";
@@ -350,16 +310,6 @@ $text['label-network-address']['sv-se'] = "Nätverks-adress";
$text['label-network-address']['uk'] = "Адреса мережі";
$text['label-network-address']['de-at'] = "Netzwerk Adresse";
$text['label-name']['en-us'] = "Name";
$text['label-name']['es-cl'] = "Nombre";
$text['label-name']['pt-pt'] = "Nome";
$text['label-name']['fr-fr'] = "Nom";
$text['label-name']['pt-br'] = "Nome";
$text['label-name']['pl'] = "Nazwa";
$text['label-name']['sv-se'] = "Namn";
$text['label-name']['uk'] = "Назва";
$text['label-name']['de-at'] = "Name";
$text['label-mute']['en-us'] = "Mute";
$text['label-mute']['es-cl'] = "Mudo";
$text['label-mute']['pt-pt'] = "Silenciar";
@@ -424,7 +374,7 @@ $text['label-member-pin']['en-us'] = "PIN Numbers";
$text['label-member-pin']['es-cl'] = "Números PIN";
$text['label-member-pin']['pt-pt'] = "Números PIN";
$text['label-member-pin']['fr-fr'] = "Code Membre";
$text['label-member-pin']['pt-br'] = "Número PIUN";
$text['label-member-pin']['pt-br'] = "Número PIN";
$text['label-member-pin']['pl'] = "Numery PIN";
$text['label-member-pin']['sv-se'] = "PIN Kod";
$text['label-member-pin']['uk'] = "PIN ";
@@ -454,22 +404,12 @@ $text['label-from']['en-us'] = "From";
$text['label-from']['es-cl'] = "Desde";
$text['label-from']['pt-pt'] = "A Partir De";
$text['label-from']['fr-fr'] = "A Partir De";
$text['label-from']['pt-br'] = "Começo";
$text['label-from']['pt-br'] = "De";
$text['label-from']['pl'] = "Od";
$text['label-from']['sv-se'] = "Från";
$text['label-from']['uk'] = "Від";
$text['label-from']['de-at'] = "Von";
$text['label-false']['en-us'] = "False";
$text['label-false']['es-cl'] = "Falso";
$text['label-false']['pt-pt'] = "Não";
$text['label-false']['fr-fr'] = "Non";
$text['label-false']['pt-br'] = "Não";
$text['label-false']['pl'] = "Nie";
$text['label-false']['sv-se'] = "Falsk";
$text['label-false']['uk'] = "Ні";
$text['label-false']['de-at'] = "Aus";
$text['label-extension']['en-us'] = "Extension";
$text['label-extension']['es-cl'] = "Extensión";
$text['label-extension']['pt-pt'] = "Extensão";
@@ -484,7 +424,7 @@ $text['label-exit-sound']['en-us'] = "Exit Sound";
$text['label-exit-sound']['es-cl'] = "Sonido de salida";
$text['label-exit-sound']['pt-pt'] = "Desligar Som";
$text['label-exit-sound']['fr-fr'] = "Sons de sortie";
$text['label-exit-sound']['pt-br'] = "Desligar som";
$text['label-exit-sound']['pt-br'] = "Som de saída";
$text['label-exit-sound']['pl'] = "Dźwięk przy wyjściu";
$text['label-exit-sound']['sv-se'] = "Avslutningsljud";
$text['label-exit-sound']['uk'] = "Мелодія при виході";
@@ -510,16 +450,6 @@ $text['label-end']['sv-se'] = "Slut";
$text['label-end']['uk'] = "Кінець";
$text['label-end']['de-at'] = "Ende";
$text['label-enabled']['en-us'] = "Enabled";
$text['label-enabled']['es-cl'] = "Activo";
$text['label-enabled']['pt-pt'] = "Activo";
$text['label-enabled']['fr-fr'] = "Actif";
$text['label-enabled']['pt-br'] = "Habilitado";
$text['label-enabled']['pl'] = "Włączony";
$text['label-enabled']['sv-se'] = "Aktiverad";
$text['label-enabled']['uk'] = "Включено";
$text['label-enabled']['de-at'] = "An";
$text['label-edit']['en-us'] = "Edit";
$text['label-edit']['es-cl'] = "Editar";
$text['label-edit']['pt-pt'] = "Editar";
@@ -550,26 +480,6 @@ $text['label-details']['sv-se'] = "Detaljer";
$text['label-details']['uk'] = "Деталі";
$text['label-details']['de-at'] = "Details";
$text['label-description']['en-us'] = "Description";
$text['label-description']['es-cl'] = "Descripción";
$text['label-description']['pt-pt'] = "Descrição";
$text['label-description']['fr-fr'] = "Description";
$text['label-description']['pt-br'] = "Descrição";
$text['label-description']['pl'] = "Opis";
$text['label-description']['sv-se'] = "Beskrivning";
$text['label-description']['uk'] = "Опис";
$text['label-description']['de-at'] = "Beschreibung";
$text['label-delete']['en-us'] = "Delete";
$text['label-delete']['es-cl'] = "Eliminar";
$text['label-delete']['pt-pt'] = "Remover";
$text['label-delete']['fr-fr'] = "Supprimer";
$text['label-delete']['pt-br'] = "Remover";
$text['label-delete']['pl'] = "Usuń";
$text['label-delete']['sv-se'] = "Ta Bort";
$text['label-delete']['uk'] = "Видалити";
$text['label-delete']['de-at'] = "Löschen";
$text['label-conference_name']['en-us'] = "Conference Name";
$text['label-conference_name']['es-cl'] = "Nombre de la conferencia";
$text['label-conference_name']['pt-pt'] = "Nome da Conferência";
@@ -594,7 +504,7 @@ $text['label-caller-id-number']['en-us'] = "Caller ID Number";
$text['label-caller-id-number']['es-cl'] = "Número de Caller ID";
$text['label-caller-id-number']['pt-pt'] = "Número do Chamador";
$text['label-caller-id-number']['fr-fr'] = "Numéro d'appelant";
$text['label-caller-id-number']['pt-br'] = "Número da pessoa que chama";
$text['label-caller-id-number']['pt-br'] = "Número (ID) da pessoa que chama";
$text['label-caller-id-number']['pl'] = "Prezentacja numeru dzwoniącego";
$text['label-caller-id-number']['sv-se'] = "Nummerpresentation";
$text['label-caller-id-number']['uk'] = "Caller ID Номер";
@@ -604,7 +514,7 @@ $text['label-caller-id-name']['en-us'] = "Caller ID Name";
$text['label-caller-id-name']['es-cl'] = "Nombre de Caller ID";
$text['label-caller-id-name']['pt-pt'] = "Nome do Chamador";
$text['label-caller-id-name']['fr-fr'] = "Nom d'appelant";
$text['label-caller-id-name']['pt-br'] = "Nome do discador";
$text['label-caller-id-name']['pt-br'] = "Nome de quem chama";
$text['label-caller-id-name']['pl'] = "Prezentacja nazwy dzwoniącego";
$text['label-caller-id-name']['sv-se'] = "Namnpresentation";
$text['label-caller-id-name']['uk'] = "Caller ID Ім’я";
@@ -624,7 +534,7 @@ $text['description-users']['en-us'] = "Assign additional users as administrators
$text['description-users']['es-cl'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
$text['description-users']['pt-pt'] = "Atribuir utilizadores adicionais como administradores da sala de conferência.";
$text['description-users']['fr-fr'] = "Ajouter des utilisateurs comme administrateurs des cette salle de conférence.";
$text['description-users']['pt-br'] = "Atribuir usuários adicionais como administradores da sala de conferência. ";
$text['description-users']['pt-br'] = "Atribuir usuários adicionais como administradores da sala de conferência.";
$text['description-users']['pl'] = "'Dodaj dodatkowych użytkowników jako administratorów tego pokoju konferencyjnego.";
$text['description-users']['sv-se'] = "Lägg till ytterligare användare som administratörer för detta konferensrum.";
$text['description-users']['uk'] = "Зв'язати додаткових користувачів як адміністраторів цього конференц-залу.";
@@ -634,7 +544,7 @@ $text['description-schedule']['en-us'] = "Set a start and stop date/time for thi
$text['description-schedule']['es-cl'] = "Establezca un inicio y parada de fecha/hora para esta sala.";
$text['description-schedule']['pt-pt'] = "Definir uma partida e parada de data/hora para este quarto.";
$text['description-schedule']['fr-fr'] = "Définir un démarrage et d'arrêt de date/heure pour cette chambre.";
$text['description-schedule']['pt-br'] = "Defnir inicio e fim (Data/Hora) para este quarto";
$text['description-schedule']['pt-br'] = "Defnir inicio e fim (Data/Hora) para esta sala.";
$text['description-schedule']['pl'] = "Ustaw czas i datę rozpoczęcia i zakończenia rozmowy w tym pokoju.";
$text['description-schedule']['sv-se'] = "Sätt en start och stopp datum/tid för detta rum.";
$text['description-schedule']['uk'] = "Встановіть час початку/завершення для цієї кімнати.";
@@ -654,7 +564,7 @@ $text['description-profile']['en-us'] = "Conference Profile is a collection of s
$text['description-profile']['es-cl'] = "El Perfil de Conferencia es una colección de ajustes para el centro de conferencia.";
$text['description-profile']['pt-pt'] = "Perfil da Conferência é um conjunto de definições para o centro de conferência.";
$text['description-profile']['fr-fr'] = "Le profile de conférence est une liste de configuration pour les conférences. ";
$text['description-profile']['pt-br'] = "Defina as configurações para este perfil";
$text['description-profile']['pt-br'] = "Perfil de conferência é uma coleção de configurações para o centro de conferência.";
$text['description-profile']['pl'] = "Zdefiniuj ustawienia tego profilu";
$text['description-profile']['sv-se'] = "Konferensprofil är en samling av inställningar för konferens centret.";
$text['description-profile']['uk'] = "Профіль конференції є колекція налаштувань для конференц-центру.";
@@ -664,7 +574,7 @@ $text['description-pin-length']['en-us'] = "Enter the minimum PIN length.";
$text['description-pin-length']['es-cl'] = "Ingrese el largo de PIN requerido.";
$text['description-pin-length']['pt-pt'] = "Introduza o tamanho do código PIN";
$text['description-pin-length']['fr-fr'] = "Choisir la longueur requise pour le code d'authentification.";
$text['description-pin-length']['pt-br'] = "Insira o tamanho do código PIN";
$text['description-pin-length']['pt-br'] = "Insira o tamanho mínimo do código PIN.";
$text['description-pin-length']['pl'] = "Wprowadź minimalną długość numeru PIN";
$text['description-pin-length']['sv-se'] = "Ange minimum PIN längd.";
$text['description-pin-length']['uk'] = "Введіть мінімальну довжину PIN-коду.";
@@ -674,7 +584,7 @@ $text['description-participant-pin']['en-us'] = "Pin number for the participants
$text['description-participant-pin']['es-cl'] = "Número PIN para participantes";
$text['description-participant-pin']['pt-pt'] = "Número PIN para os participantes.";
$text['description-participant-pin']['fr-fr'] = "Code PIN des participants.";
$text['description-participant-pin']['pt-br'] = "Número PIN";
$text['description-participant-pin']['pt-br'] = "Número PIN para os participantes.";
$text['description-participant-pin']['pl'] = "Numer PIN dla uczestników";
$text['description-participant-pin']['sv-se'] = "PIN kod för deltagare";
$text['description-participant-pin']['uk'] = "PIN-код для учасників.";
@@ -684,7 +594,7 @@ $text['description-name']['en-us'] = "Enter the conference center name.";
$text['description-name']['es-cl'] = "Ingrese el nombre del centro de conferencia";
$text['description-name']['pt-pt'] = "Introduza o nome do centro de conferência";
$text['description-name']['fr-fr'] = "Choisir le nom de la conférence.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pt-br'] = "Insira o nome do centro de conferência.";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Ange namn på konferenscenter.";
$text['description-name']['uk'] = "Введіть назву конференц-ценру";
@@ -694,7 +604,7 @@ $text['description-moderator_pin']['en-us'] = "Pin number for the moderators.";
$text['description-moderator_pin']['es-cl'] = "Número PIN para moderadores";
$text['description-moderator_pin']['pt-pt'] = "Número PIN para os moderadores.";
$text['description-moderator_pin']['fr-fr'] = "Code PIN des modérateurs.";
$text['description-moderator_pin']['pt-br'] = "Número PIN para os usuários";
$text['description-moderator_pin']['pt-br'] = "Número PIN para os moderadores.";
$text['description-moderator_pin']['pl'] = "Numer PIN dla moderatorów";
$text['description-moderator_pin']['sv-se'] = "PIN kod för moderator.";
$text['description-moderator_pin']['uk'] = "PIN-код для модераторів.";
@@ -704,7 +614,7 @@ $text['description-greeting']['en-us'] = "Select the greeting that is played bef
$text['description-greeting']['es-cl'] = "Seleccione el saludo que se juega antes de unirse a la sala de conferencias.";
$text['description-greeting']['pt-pt'] = "Selecione a saudação que é jogado antes de entrar para a sala de conferência.";
$text['description-greeting']['fr-fr'] = "Sélectionnez le message qui a joué avant de rejoindre la salle de conférence.";
$text['description-greeting']['pt-br'] = "Selecione a mensagem que será exibida antes de entrar na sala de conferência";
$text['description-greeting']['pt-br'] = "Selecione a mensagem de boas-vindas que será exibida antes de entrar na sala de conferência.";
$text['description-greeting']['pl'] = "Wybierz powitanie odtwarzane przed wejściem do pokoju konferencyjnego.";
$text['description-greeting']['sv-se'] = "Välj hälsningsmeddelande som skall spelas upp före anslutning till konferensrummet.";
$text['description-greeting']['uk'] = "Виберіть привітання, яке грає до вступу в конференц-зал.";
@@ -714,7 +624,7 @@ $text['description-extension']['en-us'] = "Enter the conference center extension
$text['description-extension']['es-cl'] = "Ingrese el número de extensión del centro de conferencia";
$text['description-extension']['pt-pt'] = "Introduza o número da extensão do centro de conferência.";
$text['description-extension']['fr-fr'] = "Choisir le numéro de la conférence. ";
$text['description-extension']['pt-br'] = "Atribua a extensão e números ao dispositivo";
$text['description-extension']['pt-br'] = "Entre com o ramal do centro de conferência.";
$text['description-extension']['pl'] = "Wprowadź alfanumeryczny numer wewnętrzny. Domyślna konfiguracja pozwala na 2-7 cyfrowe numery wewnętrzne";
$text['description-extension']['sv-se'] = "Ange konferenscenter anknytningsnummer.";
$text['description-extension']['uk'] = "Введіть номер розширення конференц-центру.";
@@ -724,22 +634,12 @@ $text['description-enabled']['en-us'] = "Select whether to enable or disable the
$text['description-enabled']['es-cl'] = "Indique si desea activar o desactivar el centro de conferencia.";
$text['description-enabled']['pt-pt'] = "Active ou Desactive o centro de conferência";
$text['description-enabled']['fr-fr'] = "Choisir d'activer ou non la conférence.";
$text['description-enabled']['pt-br'] = "Escolha o estado desta definição";
$text['description-enabled']['pt-br'] = "Escolhe se deseja habilitar ou desabilitar o centro de conferência.";
$text['description-enabled']['pl'] = "Ustaw status numeru wewnętrznego.";
$text['description-enabled']['sv-se'] = "Välj om konferenscenter skall vara aktiv eller ej.";
$text['description-enabled']['uk'] = "Виберіть, щоб включити або відключити конференц-центр.";
$text['description-enabled']['de-at'] = "Wählen Sie ob die Konferenz Zentrale Ein- oder Ausgeschaltet werden soll.";
$text['description-description']['en-us'] = "Enter the description.";
$text['description-description']['es-cl'] = "Ingrese una descripción";
$text['description-description']['pt-pt'] = "Introduza uma descrição.";
$text['description-description']['fr-fr'] = "";
$text['description-description']['pt-br'] = "Insira a descrição, caso desejar";
$text['description-description']['pl'] = "Wpisz opis.";
$text['description-description']['sv-se'] = "Ange en beskrivning för gateway:en här.";
$text['description-description']['uk'] = "Введіть опис, якщо це необхідно.";
$text['description-description']['de-at'] = "Falls gewünscht, geben Sie eine Beschreibung an.";
$text['description-conference_sessions']['en-us'] = "Conference Sessions are log details about the conferences.";
$text['description-conference_sessions']['es-cl'] = "Las Sesiones de Conferencia son un registro detallado de las conferencias.";
$text['description-conference_sessions']['pt-pt'] = "As sessões das conferências representam os detalhes dos logs das conferências.";
@@ -754,7 +654,7 @@ $text['description-conference_session_details']['en-us'] = "Conference Sessions
$text['description-conference_session_details']['es-cl'] = "Las Sesiones de Conferencia son un registro detallado de las llamadas de conferencia";
$text['description-conference_session_details']['pt-pt'] = "As sessões das conferências representam os detalhes dos logs das chamadas.";
$text['description-conference_session_details']['fr-fr'] = "Sessions de conférences sont les détails des logs sur les conférences.";
$text['description-conference_session_details']['pt-br'] = "Logs das sessões de camada";
$text['description-conference_session_details']['pt-br'] = "Logs das sessões de chamada das conferências";
$text['description-conference_session_details']['pl'] = "Sesje Konferencyjne są to logi o rozmowach konferencyjnych.";
$text['description-conference_session_details']['sv-se'] = "Konferenssessioner är detaljerad log om konferenserna.";
$text['description-conference_session_details']['uk'] = "Сесії конференції є відомості з журналу викликів конференцій.";
@@ -764,7 +664,7 @@ $text['description-conference_centers']['en-us'] = "Conference Centers are a gro
$text['description-conference_centers']['es-cl'] = "Los Centros de Conferencias son un grupo de salas de conferencias. Estas se organizan por centro de costo, geográficamente u otro criterio.";
$text['description-conference_centers']['pt-pt'] = "Centros de Conferência são um grupo de salas de conferência. Podem ser organizadas por custo, por localização ou por outro critétio.";
$text['description-conference_centers']['fr-fr'] = "Ce sont des groupes de salles de conférences. Pouvant être organisés par centre de coût, lieu géographique, ou tout autre critère.";
$text['description-conference_centers']['pt-br'] = "Centros de conferência são um grupo de salas de conferência. Podem ser organizadas por custo, por localização ou por outro critétio. ";
$text['description-conference_centers']['pt-br'] = "Centros de conferência são um grupo de salas de conferência. Podem ser organizadas por custo, por localização ou por outro critétio.";
$text['description-conference_centers']['pl'] = "'Centra konferencyjne składają się z pokoi konferencyjnych. Mogą one być przypisane do konkretnych centrów kosztów, rejonów geograficznych lub do innych grup.";
$text['description-conference_centers']['sv-se'] = "Konferenscenter är en grupp med konferensrum. De kan sorteras på kostnadscenter, geografisk placering eller andra kriterier.";
$text['description-conference_centers']['uk'] = "Конференц-центри є група конференц-залів. Вони можуть бути організовані МВЗ, географічно або інших критеріїв.";
@@ -774,32 +674,12 @@ $text['description-conference_center']['en-us'] = "Conference Center is used to
$text['description-conference_center']['es-cl'] = "El Centro de Conferencia se usa para configurar una o más salas con un nombre, número de extensión, un largo de número pin requerido y una descripción.";
$text['description-conference_center']['pt-pt'] = "Centro de Conferência é usado para configurar uma ou mais salas de conferência com um nome, número de extensão, tamanho do código pin e uma descrição.";
$text['description-conference_center']['fr-fr'] = "Il est possible de configurer une ou plusieures salles de conférence avec un nom, un neméro, une taille de code d'identification et une description.";
$text['description-conference_center']['pt-br'] = "Centro de conferência é usado para configurar uma ou mais salas de conferência com um nome, número de extensão, tamanho do código pin e uma descrição. ";
$text['description-conference_center']['pt-br'] = "Centro de conferência é usado para configurar uma ou mais salas de conferência com um nome, número de ramal, tamanho do código PIN e uma descrição.";
$text['description-conference_center']['pl'] = "Centrum Konferencyjne jest używane do tworzenia pokoi konferencyjnych. Każdy z nich otrzymuje numer wewnętrzny, nazwę, numer PIN oraz opis.";
$text['description-conference_center']['sv-se'] = "Konferenscenter används för att sätt aupp en eller fler konferensrum med ett namn, anknytningsnummer, PIN kod och en beskrivning.";
$text['description-conference_center']['uk'] = "Конференц-центр використовується для установки одного або декількох конференц-залів з ім'ям, додатковий номер, в необхідної довжини контактний номер та опис.";
$text['description-conference_center']['de-at'] = "Konferenz Zentralen gruppieren mehrere Konferenzräume. Diese können über diverse Kriterien organisiert werden.";
$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']['pl'] = "Czy na pewno chcesz to usunąć?";
$text['confirm-delete']['sv-se'] = "Vill du verkligen ta bort detta?";
$text['confirm-delete']['uk'] = "Ви дійсно бажаєте це видалити?";
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['button-view']['en-us'] = "View";
$text['button-view']['es-cl'] = "Ver";
$text['button-view']['pt-pt'] = "Ver";
$text['button-view']['fr-fr'] = "Vue";
$text['button-view']['pt-br'] = "Visualizar";
$text['button-view']['pl'] = "Widok";
$text['button-view']['sv-se'] = "Visa";
$text['button-view']['uk'] = "Перегляд";
$text['button-view']['de-at'] = "Ansicht";
$text['button-sessions']['en-us'] = "Sessions";
$text['button-sessions']['es-cl'] = "Sesiones";
$text['button-sessions']['pt-pt'] = "Sessões";
@@ -810,26 +690,6 @@ $text['button-sessions']['sv-se'] = "Sessioner";
$text['button-sessions']['uk'] = "Сесії";
$text['button-sessions']['de-at'] = "Sitzungen";
$text['button-search']['en-us'] = "Search";
$text['button-search']['es-cl'] = "Buscar";
$text['button-search']['pt-pt'] = "Pesquisar";
$text['button-search']['fr-fr'] = "Chercher";
$text['button-search']['pt-br'] = "Pesquisar";
$text['button-search']['pl'] = "Wyszukaj";
$text['button-search']['sv-se'] = "Sök";
$text['button-search']['uk'] = "Пошук";
$text['button-search']['de-at'] = "Suchen";
$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']['pl'] = "Zachowaj";
$text['button-save']['sv-se'] = "Spara";
$text['button-save']['uk'] = "Зберегти";
$text['button-save']['de-at'] = "Speichern";
$text['button-rooms']['en-us'] = "Rooms";
$text['button-rooms']['es-cl'] = "Salas";
$text['button-rooms']['pt-pt'] = "Salas";
@@ -840,24 +700,4 @@ $text['button-rooms']['sv-se'] = "Rum";
$text['button-rooms']['uk'] = "Кімнати";
$text['button-rooms']['de-at'] = "Räume";
$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']['pl'] = "Wróć";
$text['button-back']['sv-se'] = "Tillbaka";
$text['button-back']['uk'] = "Назад";
$text['button-back']['de-at'] = "Zurück";
$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']['pl'] = "Dodaj";
$text['button-add']['sv-se'] = "Lägg Till";
$text['button-add']['uk'] = "Додати";
$text['button-add']['de-at'] = "Hinzufügen";
?>
+1 -1
View File
@@ -4,7 +4,7 @@ $apps[$x]['menu'][0]['title']['en-us'] = "Conference Center";
$apps[$x]['menu'][0]['title']['es-cl'] = "Cent. de Conferencias";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Centre de Conférences";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Conferencias";
$apps[$x]['menu'][0]['title']['pt-br'] = "Conferência";
$apps[$x]['menu'][0]['title']['pt-br'] = "Centro de Conferência";
$apps[$x]['menu'][0]['title']['pl'] = "Centrum Konferencyjne";
$apps[$x]['menu'][0]['title']['sv-se'] = "Konferenscenter";
$apps[$x]['menu'][0]['title']['uk'] = "Конференц-центр";
+208 -240
View File
@@ -17,22 +17,26 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2014
Portions created by the Initial Developer are Copyright (C) 2008-2016
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('conference_center_add') || permission_exists('conference_center_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//includes
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//check permissions
if (permission_exists('conference_center_add') || permission_exists('conference_center_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
@@ -62,218 +66,170 @@ else {
$conference_center_name = str_replace(" ", "-", $conference_center_name);
}
/*
//delete the user from the v_conference_center_users
if ($_GET["a"] == "delete" && permission_exists("conference_center_delete")) {
//set the variables
$user_uuid = check_str($_REQUEST["user_uuid"]);
$conference_center_uuid = check_str($_REQUEST["id"]);
//delete the group from the users
$sql = "delete from v_conference_center_users ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and conference_center_uuid = '".$conference_center_uuid."' ";
$sql .= "and user_uuid = '".$user_uuid."' ";
$db->exec(check_sql($sql));
//redirect the browser
require_once "resources/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=conference_center_edit.php?id=$conference_center_uuid\">\n";
echo "<div align='center'>Delete Complete</div>";
require_once "resources/footer.php";
return;
}
//add the user to the v_conference_center_users
if (strlen($_REQUEST["user_uuid"]) > 0 && strlen($_REQUEST["id"]) > 0 && $_GET["a"] != "delete") {
//set the variables
$user_uuid = check_str($_REQUEST["user_uuid"]);
$conference_center_uuid = check_str($_REQUEST["id"]);
//assign the user to the extension
$sql_insert = "insert into v_conference_center_users ";
$sql_insert .= "(";
$sql_insert .= "conference_user_uuid, ";
$sql_insert .= "domain_uuid, ";
$sql_insert .= "conference_center_uuid, ";
$sql_insert .= "user_uuid ";
$sql_insert .= ")";
$sql_insert .= "values ";
$sql_insert .= "(";
$sql_insert .= "'".uuid()."', ";
$sql_insert .= "'".$_SESSION['domain_uuid']."', ";
$sql_insert .= "'".$conference_center_uuid."', ";
$sql_insert .= "'".$user_uuid."' ";
$sql_insert .= ")";
$db->exec($sql_insert);
//redirect the browser
require_once "resources/header.php";
echo "<meta http-equiv=\"refresh\" content=\"2;url=conference_center_edit.php?id=$conference_center_uuid\">\n";
echo "<div align='center'>Add Complete</div>";
require_once "resources/footer.php";
return;
}
*/
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
$msg = '';
if ($action == "update") {
$conference_center_uuid = check_str($_POST["conference_center_uuid"]);
}
//check for all required data
//if (strlen($dialplan_uuid) == 0) { $msg .= "Please provide: Dialplan UUID<br>\n"; }
if (strlen($conference_center_name) == 0) { $msg .= "Please provide: Name<br>\n"; }
if (strlen($conference_center_extension) == 0) { $msg .= "Please provide: Extension<br>\n"; }
if (strlen($conference_center_pin_length) == 0) { $msg .= "Please provide: PIN Length<br>\n"; }
//if (strlen($conference_center_order) == 0) { $msg .= "Please provide: Order<br>\n"; }
//if (strlen($conference_center_description) == 0) { $msg .= "Please provide: Description<br>\n"; }
if (strlen($conference_center_enabled) == 0) { $msg .= "Please provide: 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 or update the database
if ($_POST["persistformvar"] != "true") {
if ($action == "add") {
//prepare the uuids
$conference_center_uuid = uuid();
$dialplan_uuid = uuid();
//add the conference
$sql = "insert into v_conference_centers ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "conference_center_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "conference_center_name, ";
$sql .= "conference_center_extension, ";
$sql .= "conference_center_pin_length, ";
$sql .= "conference_center_greeting, ";
$sql .= "conference_center_description, ";
$sql .= "conference_center_enabled ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$domain_uuid', ";
$sql .= "'$conference_center_uuid', ";
$sql .= "'$dialplan_uuid', ";
$sql .= "'$conference_center_name', ";
$sql .= "'$conference_center_extension', ";
$sql .= "'$conference_center_pin_length', ";
$sql .= "'$conference_center_greeting', ";
$sql .= "'$conference_center_description', ";
$sql .= "'$conference_center_enabled' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//create the dialplan entry
$dialplan_name = $conference_center_name;
$dialplan_order ='333';
$dialplan_context = $_SESSION['context'];
$dialplan_enabled = 'true';
$dialplan_description = $conference_center_description;
$app_uuid = 'b81412e8-7253-91f4-e48e-42fc2c9a38d9';
dialplan_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid);
//<condition destination_number="500" />
$dialplan_detail_tag = 'condition'; //condition, action, antiaction
$dialplan_detail_type = 'destination_number';
$dialplan_detail_data = '^'.$conference_center_extension.'$';
$dialplan_detail_order = '010';
$dialplan_detail_group = '2';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
//<action application="lua" />
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'lua';
$dialplan_detail_data = 'app.lua conference_center';
$dialplan_detail_order = '020';
$dialplan_detail_group = '2';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
//save the xml
save_dialplan_xml();
$_SESSION["message"] = $text['message-add'];
header("Location: conference_centers.php");
return;
} //if ($action == "add")
//process user data
if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//get the id
if ($action == "update") {
//update the conference center extension
$sql = "update v_conference_centers set ";
$sql .= "conference_center_name = '$conference_center_name', ";
$sql .= "conference_center_extension = '$conference_center_extension', ";
$sql .= "conference_center_pin_length = '$conference_center_pin_length', ";
$sql .= "conference_center_greeting = '$conference_center_greeting', ";
$sql .= "conference_center_description = '$conference_center_description', ";
$sql .= "conference_center_enabled = '$conference_center_enabled' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and conference_center_uuid = '$conference_center_uuid'";
$db->exec(check_sql($sql));
unset($sql);
$conference_center_uuid = check_str($_POST["conference_center_uuid"]);
}
//udpate the conference center dialplan
$sql = "update v_dialplans set ";
$sql .= "dialplan_name = '$conference_center_name', ";
if (strlen($dialplan_order) > 0) {
$sql .= "dialplan_order = '333', ";
}
$sql .= "dialplan_context = '".$_SESSION['context']."', ";
$sql .= "dialplan_enabled = 'true', ";
$sql .= "dialplan_description = '$conference_center_description' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
unset($sql);
//check for all required data
$msg = '';
//if (strlen($dialplan_uuid) == 0) { $msg .= "Please provide: Dialplan UUID<br>\n"; }
if (strlen($conference_center_name) == 0) { $msg .= "Please provide: Name<br>\n"; }
if (strlen($conference_center_extension) == 0) { $msg .= "Please provide: Extension<br>\n"; }
if (strlen($conference_center_pin_length) == 0) { $msg .= "Please provide: PIN Length<br>\n"; }
//if (strlen($conference_center_order) == 0) { $msg .= "Please provide: Order<br>\n"; }
//if (strlen($conference_center_description) == 0) { $msg .= "Please provide: Description<br>\n"; }
if (strlen($conference_center_enabled) == 0) { $msg .= "Please provide: 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;
}
//update dialplan detail condition
$sql = "update v_dialplan_details set ";
$sql .= "dialplan_detail_data = '^".$conference_center_extension."$' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_detail_tag = 'condition' ";
$sql .= "and dialplan_detail_type = 'destination_number' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
unset($sql);
//add or update the database
if ($_POST["persistformvar"] != "true") {
if ($action == "add") {
//prepare the uuids
$conference_center_uuid = uuid();
$dialplan_uuid = uuid();
//add the conference
$sql = "insert into v_conference_centers ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "conference_center_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "conference_center_name, ";
$sql .= "conference_center_extension, ";
$sql .= "conference_center_pin_length, ";
$sql .= "conference_center_greeting, ";
$sql .= "conference_center_description, ";
$sql .= "conference_center_enabled ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$domain_uuid', ";
$sql .= "'$conference_center_uuid', ";
$sql .= "'$dialplan_uuid', ";
$sql .= "'$conference_center_name', ";
$sql .= "'$conference_center_extension', ";
$sql .= "'$conference_center_pin_length', ";
$sql .= "'$conference_center_greeting', ";
$sql .= "'$conference_center_description', ";
$sql .= "'$conference_center_enabled' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//update dialplan detail action
$dialplan_detail_type = 'lua';
$dialplan_detail_data = 'app.lua conference_center';
$sql = "update v_dialplan_details set ";
$sql .= "dialplan_detail_type = '".$dialplan_detail_type."', ";
$sql .= "dialplan_detail_data = '".$dialplan_detail_data."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_detail_tag = 'action' ";
$sql .= "and dialplan_detail_type = 'lua' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
//create the dialplan entry
$dialplan_name = $conference_center_name;
$dialplan_order ='333';
$dialplan_context = $_SESSION['context'];
$dialplan_enabled = 'true';
$dialplan_description = $conference_center_description;
$app_uuid = 'b81412e8-7253-91f4-e48e-42fc2c9a38d9';
dialplan_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid);
//syncrhonize configuration
save_dialplan_xml();
//<condition destination_number="500" />
$dialplan_detail_tag = 'condition'; //condition, action, antiaction
$dialplan_detail_type = 'destination_number';
$dialplan_detail_data = '^'.$conference_center_extension.'$';
$dialplan_detail_order = '010';
$dialplan_detail_group = '2';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
//apply settings reminder
$_SESSION["reload_xml"] = true;
//<action application="lua" />
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'lua';
$dialplan_detail_data = 'app.lua conference_center';
$dialplan_detail_order = '020';
$dialplan_detail_group = '2';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["context"]);
//save the xml
save_dialplan_xml();
//redirect the browser
$_SESSION["message"] = $text['message-update'];
$_SESSION["message"] = $text['message-add'];
header("Location: conference_centers.php");
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
} //if ($action == "add")
if ($action == "update") {
//update the conference center extension
$sql = "update v_conference_centers set ";
$sql .= "conference_center_name = '$conference_center_name', ";
$sql .= "conference_center_extension = '$conference_center_extension', ";
$sql .= "conference_center_pin_length = '$conference_center_pin_length', ";
$sql .= "conference_center_greeting = '$conference_center_greeting', ";
$sql .= "conference_center_description = '$conference_center_description', ";
$sql .= "conference_center_enabled = '$conference_center_enabled' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and conference_center_uuid = '$conference_center_uuid'";
$db->exec(check_sql($sql));
unset($sql);
//udpate the conference center dialplan
$sql = "update v_dialplans set ";
$sql .= "dialplan_name = '$conference_center_name', ";
if (strlen($dialplan_order) > 0) {
$sql .= "dialplan_order = '333', ";
}
$sql .= "dialplan_context = '".$_SESSION['context']."', ";
$sql .= "dialplan_enabled = 'true', ";
$sql .= "dialplan_description = '$conference_center_description' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
unset($sql);
//update dialplan detail condition
$sql = "update v_dialplan_details set ";
$sql .= "dialplan_detail_data = '^".$conference_center_extension."$' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_detail_tag = 'condition' ";
$sql .= "and dialplan_detail_type = 'destination_number' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
unset($sql);
//update dialplan detail action
$dialplan_detail_type = 'lua';
$dialplan_detail_data = 'app.lua conference_center';
$sql = "update v_dialplan_details set ";
$sql .= "dialplan_detail_type = '".$dialplan_detail_type."', ";
$sql .= "dialplan_detail_data = '".$dialplan_detail_data."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and dialplan_detail_tag = 'action' ";
$sql .= "and dialplan_detail_type = 'lua' ";
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
$db->query($sql);
//syncrhonize configuration
save_dialplan_xml();
//apply settings reminder
$_SESSION["reload_xml"] = true;
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["context"]);
//redirect the browser
$_SESSION["message"] = $text['message-update'];
header("Location: conference_centers.php");
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//function to show the list of sound files
// moved to functions.php
@@ -305,6 +261,21 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
if (strlen($conference_center_enabled) == 0) { $conference_center_enabled = "true"; }
if (strlen($conference_center_pin_length) == 0) { $conference_center_pin_length = 9; }
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = '".$_SESSION["domain_uuid"]."' ";
$sql .= "order by recording_name asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$recordings = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
//get the phrases
$sql = "select * from v_phrases ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$phrases = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//show the header
require_once "resources/header.php";
@@ -388,50 +359,47 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
echo " <select name='conference_center_greeting' class='formfld' ".((permission_exists('conference_center_add') || permission_exists('conference_center_edit')) ? "onchange='changeToInput(this);'" : null).">\n";
echo " <option></option>\n";
//recordings
if($dh = opendir($_SESSION['switch']['recordings']['dir']."/")) {
$tmp_selected = false;
$files = Array();
$tmp_selected = false;
if (is_array($recordings)) {
echo "<optgroup label='Recordings'>\n";
while ($file = readdir($dh)) {
if ($file != "." && $file != ".." && $file[0] != '.') {
if (!is_dir($_SESSION['switch']['recordings']['dir']."/".$file)) {
$selected = ($conference_center_greeting == $_SESSION['switch']['recordings']['dir']."/".$file && strlen($conference_center_greeting) > 0) ? true : false;
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$file."' ".(($selected) ? "selected='selected'" : null).">".$file."</option>\n";
if ($selected) { $tmp_selected = true; }
}
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
$recording_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'];
$selected = '';
if ($conference_center_greeting == $recording_path."/".$recording_filename) {
$selected = "selected='selected'";
}
echo " <option value='".$recording_path."/".$recording_filename."' ".$selected.">".$recording_name."</option>\n";
unset($selected);
}
closedir($dh);
echo "</optgroup>\n";
}
//phrases
$sql = "select * from v_phrases where domain_uuid = '".$domain_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
if (count($phrases) > 0) {
echo "<optgroup label='Phrases'>\n";
foreach ($result as &$row) {
$selected = ($conference_center_greeting == "phrase:".$row["phrase_name"].".".$domain_uuid) ? true : false;
echo " <option value='phrase:".$row["phrase_name"].".".$domain_uuid."' ".(($selected) ? "selected='selected'" : null).">".$row["phrase_name"]."</option>\n";
foreach ($phrases as &$row) {
$selected = ($conference_center_greeting == "phrase:".$row["phrase_uuid"]) ? true : false;
echo " <option value='phrase:".$row["phrase_uuid"]."' ".(($selected) ? "selected='selected'" : null).">".$row["phrase_name"]."</option>\n";
if ($selected) { $tmp_selected = true; }
}
unset ($prep_statement);
echo "</optgroup>\n";
}
//sounds
$dir_path = $_SESSION['switch']['sounds']['dir'];
recur_sounds_dir($_SESSION['switch']['sounds']['dir']);
if (count($dir_array) > 0) {
$file = new file;
$sound_files = $file->sounds();
if (is_array($sound_files)) {
echo "<optgroup label='Sounds'>\n";
foreach ($dir_array as $key => $value) {
foreach ($sound_files as $key => $value) {
if (strlen($value) > 0) {
if (substr($conference_center_greeting, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
$conference_center_greeting = substr($conference_center_greeting, 71);
}
$selected = ($conference_center_greeting == $key) ? true : false;
echo " <option value='".$key."' ".(($selected) ? "selected='selected'" : null).">".$key."</option>\n";
$selected = ($conference_center_greeting == $value) ? true : false;
echo " <option value='".$value."' ".(($selected) ? "selected='selected'" : null).">".$value."</option>\n";
if ($selected) { $tmp_selected = true; }
}
}
@@ -442,8 +410,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
if (permission_exists('conference_center_add') || permission_exists('conference_center_edit')) {
if (!$tmp_selected) {
echo "<optgroup label='selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$conference_center_greeting)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$conference_center_greeting."' selected='selected'>".$ivr_menu_greet_long."</option>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$conference_center_greeting)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$conference_center_greeting."' selected='selected'>".$ivr_menu_greet_long."</option>\n";
}
else if (substr($conference_center_greeting, -3) == "wav" || substr($conference_center_greeting, -3) == "mp3") {
echo " <option value='".$conference_center_greeting."' selected='selected'>".$conference_center_greeting."</option>\n";
@@ -524,4 +492,4 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -95,7 +95,7 @@ else {
}
//prepare to page the results
$rows_per_page = 10;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -165,7 +165,7 @@ else {
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['conference_center_extension']."&nbsp;</td>\n";
//echo " <td valign='top' class='".$row_style[$c]."'>".$row['conference_center_order']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".ucwords($row['conference_center_enabled'])."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-'.$row['conference_center_enabled']]."&nbsp;</td>\n";
echo " <td valign='top' class='row_stylebg' width='35%'>".$row['conference_center_description']."&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('conference_center_edit')) {
+58 -54
View File
@@ -141,7 +141,7 @@ else {
}
//delete the user
if ($_GET["a"] == "delete" && permission_exists('conference_room_add') && permission_exists('conference_room_edit')) {
if ($_GET["a"] == "delete" && permission_exists('conference_room_delete')) {
if (strlen($_REQUEST["meeting_user_uuid"]) > 0) {
//set the variables
$meeting_user_uuid = check_str($_REQUEST["meeting_user_uuid"]);
@@ -473,8 +473,28 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
$enabled = $row["enabled"];
$description = $row["description"];
}
unset ($prep_statement);
}
unset ($prep_statement, $sql);
}
//get the users array
$sql = "SELECT * FROM v_users ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "order by username asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$users = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset($prep_statement, $sql);
//get the users assigned to this meeting
$sql = "SELECT * FROM v_users as u, v_meeting_users as m ";
$sql .= "where u.user_uuid = m.user_uuid ";
$sql .= "and m.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and m.meeting_uuid = '$meeting_uuid' ";
$sql .= "order by u.username asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$meeting_users = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset($prep_statement, $sql);
//set default profile
if (strlen($profile) == 0) { $profile = 'default'; }
@@ -572,56 +592,40 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo " </tr>";
if (if_group("superadmin") || if_group("admin")) {
echo " <tr>";
echo " <td class='vncell' valign='top'>".$text['label-users']."</td>";
echo " <td class='vtable' align='left'>";
if ($action == "update") {
echo " <table border='0' style='width : 235px;'>\n";
$sql = "SELECT * FROM v_users as u, v_meeting_users as m ";
$sql .= "where u.user_uuid = m.user_uuid ";
$sql .= "and m.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and m.meeting_uuid = '$meeting_uuid' ";
$sql .= "order by u.username asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
foreach($result as $field) {
echo " <tr>\n";
echo " <td class='vtable'>".$field['username']."</td>\n";
echo " <td style='width: 25px;' align='right'>\n";
if ($result_count > 1) {
echo " <a href='conference_room_edit.php?meeting_user_uuid=".$field['meeting_user_uuid']."&conference_room_uuid=".$conference_room_uuid."&a=delete' alt='delete' onclick=\"return confirm(".$text['confirm-delete'].")\">$v_link_label_delete</a>\n";
echo " <tr>";
echo " <td class='vncell' valign='top'>".$text['label-users']."</td>";
echo " <td class='vtable' align='left'>";
if ($action == "update") {
echo " <table border='0' style='width : 235px;'>\n";
foreach($meeting_users as $field) {
echo " <tr>\n";
echo " <td class='vtable'>".$field['username']."</td>\n";
echo " <td style='width: 25px;' align='right'>\n";
if (permission_exists('conference_room_delete')) {
echo " <a href='conference_room_edit.php?meeting_user_uuid=".$field['meeting_user_uuid']."&conference_room_uuid=".$conference_room_uuid."&a=delete' alt='delete' onclick=\"return confirm(".$text['confirm-delete'].")\">$v_link_label_delete</a>\n";
}
echo " </td>\n";
echo " </tr>\n";
}
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
}
echo " </table>\n";
}
echo " <br />\n";
$sql = "SELECT * FROM v_users ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "order by username asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
echo " <select name=\"user_uuid\" class='formfld' style='width: auto;'>\n";
echo " <option value=\"\"></option>\n";
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result as $field) {
echo " <option value='".$field['user_uuid']."'>".$field['username']."</option>\n";
}
echo " </select>";
if ($action == "update") {
echo " <input type=\"submit\" class='btn' value=\"".$text['button-add']."\">\n";
}
unset($sql, $result);
echo " <br>\n";
echo " ".$text['description-users']."\n";
echo " </td>";
echo " </tr>";
echo " <br />\n";
if (permission_exists('conference_room_add')) {
echo " <select name=\"user_uuid\" class='formfld' style='width: auto;'>\n";
echo " <option value=\"\"></option>\n";
foreach($users as $field) {
echo " <option value='".$field['user_uuid']."'>".$field['username']."</option>\n";
}
echo " </select>";
if ($action == "update") {
echo " <input type=\"submit\" class='btn' value=\"".$text['button-add']."\">\n";
}
unset($users);
echo " <br>\n";
}
echo " ".$text['description-users']."\n";
echo " </td>";
echo " </tr>";
}
if (permission_exists('conference_room_profile')) {
@@ -672,9 +676,9 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' nowrap='nowrap' width='30%'>".$text['label-schedule']."</td>\n";
echo "<td class='vtable' width='70%' align='left' style='white-space: nowrap;'>\n";
echo " <input type='text' class='formfld' style='min-width: 115px; width: 115px; max-width: 115px;' name='start_datetime' id='start_datetime' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" placeholder='".$text['label-from']."' value='".$start_datetime."'>\n";
echo " <input type='text' class='formfld' style='min-width: 115px; width: 115px; max-width: 115px;' name='stop_datetime' id='stop_datetime' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" placeholder='".$text['label-to']."' value='".$stop_datetime."'>\n";
echo "<td class='vtable' width='70%' align='left' style='position: relative; min-width: 275px;'>\n";
echo " <input type='text' class='formfld datetimepicker' style='min-width: 115px; width: 115px; max-width: 115px;' name='start_datetime' id='start_datetime' placeholder='".$text['label-from']."' value='".$start_datetime."'>\n";
echo " <input type='text' class='formfld datetimepicker' style='min-width: 115px; width: 115px; max-width: 115px;' name='stop_datetime' id='stop_datetime' placeholder='".$text['label-to']."' value='".$stop_datetime."'>\n";
echo " <br>".$text['description-schedule'];
echo "</td>\n";
echo "</tr>\n";
+1 -1
View File
@@ -175,7 +175,7 @@ else {
$row_count = $conference_center->room_count();
//prepare to page the results
$rows_per_page = 150;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = check_str($_GET['page']);
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -77,7 +77,7 @@ else {
echo " <tr>\n";
echo " <td width='50%' align='left' nowrap='nowrap'><b>".$text['title-conference_session_details']."</b></td>\n";
echo " <td width='70%' align='right'>\n";
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
$tmp_name = '';
if (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.mp3')) {
$tmp_name = $row['conference_session_uuid'].".mp3";
@@ -127,7 +127,7 @@ else {
}
//prepare to page the results
$rows_per_page = 500;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -81,7 +81,7 @@ else {
}
//prepare to page the results
$rows_per_page = 150;
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
@@ -146,7 +146,7 @@ else {
echo " <td valign='top' class='".$row_style[$c]."'>".$start_date."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$end_date."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['profile']."&nbsp;</td>\n";
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
$tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
$tmp_name = '';
if (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.mp3')) {
$tmp_name = $row['conference_session_uuid'].".mp3";
@@ -41,11 +41,18 @@
public function room_count() {
//get the room count
$sql = "select count(*) as num_rows from v_conference_rooms as r, v_meeting_users as u, v_meetings as p ";
$not_admin = 1;
if (permission_exists("conference_room_view_all")) {
$not_admin = 0;
}
$sql = "select count(*) as num_rows from v_conference_rooms as r, v_meetings as p ";
if ($not_admin) {
$sql .= "v_meeting_users as u, ";
}
$sql .= "where r.domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and r.meeting_uuid = u.meeting_uuid ";
$sql .= "and r.meeting_uuid = p.meeting_uuid ";
if (!if_group("admin") && !if_group("superadmin")) {
if ($not_admin) {
$sql .= "and r.meeting_uuid = u.meeting_uuid ";
$sql .= "and u.user_uuid = '".$_SESSION["user_uuid"]."' ";
}
if (isset($this->search)) {
@@ -71,14 +78,24 @@
public function rooms() {
//get the list of rooms
$not_admin = 1;
if (permission_exists("conference_room_view_all")) {
$not_admin = 0;
}
$fields = "r.domain_uuid, r.conference_room_uuid, r.conference_center_uuid, r.meeting_uuid, r.conference_room_name, max_members, ";
$fields .= "wait_mod, announce, mute, sounds, created, created_by, r.enabled, r.description, record, ";
$fields .= "profile, meeting_user_uuid, user_uuid, moderator_pin, participant_pin ";
$sql = "select ".$fields." from v_conference_rooms as r, v_meeting_users as u, v_meetings as p ";
$fields .= "profile, moderator_pin, participant_pin";
if ($not_admin) {
$fields .= ", meeting_user_uuid, user_uuid";
}
$sql = "select ".$fields." from v_conference_rooms as r, v_meetings as p ";
if ($not_admin) {
$sql .= ", v_meeting_users as u ";
}
$sql .= "where r.domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and r.meeting_uuid = u.meeting_uuid ";
$sql .= "and r.meeting_uuid = p.meeting_uuid ";
if (!if_group("admin") && !if_group("superadmin")) {
if ($not_admin) {
$sql .= "and r.meeting_uuid = u.meeting_uuid ";
$sql .= "and u.user_uuid = '".$_SESSION["user_uuid"]."' ";
}
//if (is_numeric($this->search)) {
+55 -15
View File
@@ -25,26 +25,66 @@
*/
// 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", ":");
}
}
// 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 (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
// 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' );
// 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"]);
}
else {
if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); }
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
$_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"]);
}
?>
+114
View File
@@ -0,0 +1,114 @@
<?php
//application details
$apps[$x]['name'] = 'Conference Controls';
$apps[$x]['uuid'] = 'e1ad84a2-79e1-450c-a5b1-7507a043e048';
$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'] = 'conference_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'] = 'conference_control_add';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'conference_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'] = 'conference_control_delete';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'conference_control_detail_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'] = 'conference_control_detail_add';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'conference_control_detail_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'] = 'conference_control_detail_delete';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
//$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
//schema details
$y = 0; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = 'v_conference_controls';
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'conference_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'] = 'control_name';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the conference control name.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Entre com o nome para o controle de conferência.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_enabled';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Set the stats of the control.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Estabelece o estado do controle.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_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]['description']['pt-br'] = 'Entre com a descrição.';
$y = 1; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = 'v_conference_control_details';
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'conference_control_detail_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'] = 'conference_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_conference_control';
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'conference_control_uuid';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_digits';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the digits.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Entre com os digitos.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_action';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the action.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Entre com a ação.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_data';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Enter the data.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Entre com os dados.';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'control_enabled';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'Set the status of the control.';
$apps[$x]['db'][$y]['fields'][$z]['description']['pt-br'] = 'Estababelece o estado do controle.';
$z++;
?>
+131
View File
@@ -0,0 +1,131 @@
<?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) 2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
if ($domains_processed == 1) {
//add the conference controls list to the database
$sql = "select count(*) as num_rows from v_conference_controls; ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] == 0) {
//set the directory
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
$xml_file = $xml_dir."/conference.conf";
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/resources/templates/conf/autoload_configs/conference.conf';
//rename the file
if (file_exists($xml_dir.'/conference.conf.xml.noload')) {
rename($xml_dir.'/conference.conf.xml.noload', $xml_dir.'/conference.conf');
}
//load the xml and save it into an array
if (file_exists($xml_file)) {
$xml_string = file_get_contents($xml_file);
}
elseif (file_exists($xml_file_alt)) {
$xml_string = file_get_contents(xml_file_alt);
}
$xml_object = simplexml_load_string($xml_string);
$json = json_encode($xml_object);
$conf_array = json_decode($json, true);
//process the array
foreach ($conf_array['caller-controls']['group'] as $row) {
//get the data from the array
$control_name = $row['@attributes']['name'];
//echo $profile_name."<br />\n";
//insert the data into the database
$conference_control_uuid = uuid();
$sql = "insert into v_conference_controls ";
$sql .= "(";
//$sql .= "domain_uuid, ";
$sql .= "conference_control_uuid, ";
$sql .= "control_name, ";
$sql .= "control_enabled ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
//$sql .= "'".$domain_uuid."', ";
$sql .= "'".$conference_control_uuid."', ";
$sql .= "'".check_str($control_name)."', ";
$sql .= "'true' ";
$sql .= ");";
//echo $sql."\n";
$db->exec(check_sql($sql));
unset($sql);
//insert the profile params
foreach ($row['control'] as $p) {
//get the name
//print_r($p);
$control_action = $p['@attributes']['action'];
$control_digits = $p['@attributes']['digits'];
$control_data = $p['@attributes']['data'];
$control_enabled = 'true';
//add the coference profile params
$conference_control_detail_uuid = uuid();
$sql = "insert into v_conference_control_details ";
$sql .= "(";
$sql .= "conference_control_uuid, ";
$sql .= "conference_control_detail_uuid, ";
$sql .= "control_digits, ";
$sql .= "control_action, ";
if (strlen($control_data) > 0) {
$sql .= "control_data, ";
}
$sql .= "control_enabled ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
$sql .= "'".$conference_control_uuid."', ";
$sql .= "'".$conference_control_detail_uuid."', ";
$sql .= "'".$control_digits."', ";
$sql .= "'".$control_action."', ";
if (strlen($control_data) > 0) {
$sql .= "'".$control_data."', ";
}
$sql .= "'".$control_enabled."' ";
$sql .= ");";
//echo $sql."\n";
$db->exec(check_sql($sql));
unset($sql);
}
}
} //if num_rows
} //if prep_statement
}
?>
+202
View File
@@ -0,0 +1,202 @@
<?php
//Conference Controls
$text['title-conference_controls']['en-us'] = 'Conference Controls';
$text['title-conference_controls']['es-cl'] = '';
$text['title-conference_controls']['pt-pt'] = '';
$text['title-conference_controls']['pt-br'] = 'Controles de conferência';
$text['title-conference_controls']['fr-fr'] = '';
$text['title-conference_control']['en-us'] = 'Conference Control';
$text['title-conference_control']['es-cl'] = '';
$text['title-conference_control']['pt-pt'] = '';
$text['title-conference_control']['pt-br'] = 'Controle de conferência';
$text['title-conference_control']['fr-fr'] = '';
$text['title_description-conference_control']['en-us'] = 'Call controls enable ability to assign digits to actions. They can be used to mute, unmute, or other actions during the conference call.';
$text['title_description-conference_control']['es-cl'] = '';
$text['title_description-conference_control']['pt-pt'] = '';
$text['title_description-conference_control']['pt-br'] = 'Controle de chamadas habilita atribuir ações aos números. Podem ser usadas para silenciar, ou outras ações durante a conferência.';
$text['title_description-conference_control']['fr-fr'] = '';
$text['label-control_name']['en-us'] = 'Name';
$text['label-control_name']['es-cl'] = '';
$text['label-control_name']['pt-pt'] = '';
$text['label-control_name']['pt-br'] = 'Nome';
$text['label-control_name']['fr-fr'] = '';
$text['description-control_name']['en-us'] = 'Enter the conference control name.';
$text['description-control_name']['es-cl'] = '';
$text['description-control_name']['pt-pt'] = '';
$text['description-control_name']['pt-br'] = 'Entre com o nome do controle de conferência.';
$text['description-control_name']['fr-fr'] = '';
$text['label-control_enabled']['en-us'] = 'Enabled';
$text['label-control_enabled']['es-cl'] = '';
$text['label-control_enabled']['pt-pt'] = '';
$text['label-control_enabled']['pt-br'] = 'Habilitado';
$text['label-control_enabled']['fr-fr'] = '';
$text['description-control_enabled']['en-us'] = 'Set the stats of the control.';
$text['description-control_enabled']['es-cl'] = '';
$text['description-control_enabled']['pt-pt'] = '';
$text['description-control_enabled']['pt-br'] = 'Atribua o estado do controle.';
$text['description-control_enabled']['fr-fr'] = '';
$text['label-control_description']['en-us'] = 'Description';
$text['label-control_description']['es-cl'] = '';
$text['label-control_description']['pt-pt'] = '';
$text['label-control_description']['pt-br'] = 'Descrição';
$text['label-control_description']['fr-fr'] = '';
$text['description-control_description']['en-us'] = 'Enter the description.';
$text['description-control_description']['es-cl'] = '';
$text['description-control_description']['pt-pt'] = '';
$text['description-control_description']['pt-br'] = 'Entre com a descrição.';
$text['description-control_description']['fr-fr'] = '';
$text['label-true']['en-us'] = 'true';
$text['label-true']['es-cl'] = '';
$text['label-true']['pt-pt'] = '';
$text['label-true']['pt-br'] = 'Sim';
$text['label-true']['fr-fr'] = '';
$text['label-false']['en-us'] = 'false';
$text['label-false']['es-cl'] = 'falso';
$text['label-false']['pt-pt'] = 'falso';
$text['label-false']['pt-br'] = 'Não';
$text['label-false']['fr-fr'] = 'falso';
$text['button-add']['en-us'] = 'Add';
$text['button-add']['es-cl'] = '';
$text['button-add']['pt-pt'] = '';
$text['button-add']['pt-br'] = 'Adicionar';
$text['button-add']['fr-fr'] = '';
$text['button-edit']['en-us'] = 'Edit';
$text['button-edit']['es-cl'] = '';
$text['button-edit']['pt-pt'] = '';
$text['button-edit']['pt-br'] = 'Editar';
$text['button-edit']['fr-fr'] = '';
$text['button-delete']['en-us'] = 'Delete';
$text['button-delete']['es-cl'] = '';
$text['button-delete']['pt-pt'] = '';
$text['button-delete']['pt-br'] = 'Deletar';
$text['button-delete']['fr-fr'] = '';
$text['button-save']['en-us'] = 'Save';
$text['button-save']['es-cl'] = '';
$text['button-save']['pt-pt'] = 'Guardar';
$text['button-save']['pt-br'] = 'Salvar';
$text['button-save']['fr-fr'] = '';
$text['button-view']['en-us'] = 'View';
$text['button-view']['es-cl'] = '';
$text['button-view']['pt-pt'] = '';
$text['button-view']['pt-br'] = 'Visualizar';
$text['button-view']['fr-fr'] = '';
$text['button-back']['en-us'] = 'Back';
$text['button-back']['es-cl'] = '';
$text['button-back']['pt-pt'] = 'Voltar';
$text['button-back']['pt-br'] = 'Voltar';
$text['button-back']['fr-fr'] = '';
$text['confirm-delete']['en-us'] = 'Do you really want to delete this?';
$text['confirm-delete']['es-cl'] = '';
$text['confirm-delete']['pt-pt'] = '';
$text['confirm-delete']['pt-br'] = 'Você realmente deseja excluir?';
$text['confirm-delete']['fr-fr'] = '';
$text['message-add']['en-us'] = 'Add Completed';
$text['message-add']['es-cl'] = '';
$text['message-add']['pt-pt'] = '';
$text['message-add']['pt-br'] = 'Adicionar concluído';
$text['message-add']['fr-fr'] = '';
$text['message-update']['en-us'] = 'Update Completed';
$text['message-update']['es-cl'] = '';
$text['message-update']['pt-pt'] = '';
$text['message-update']['pt-br'] = 'Atualização concluída';
$text['message-update']['fr-fr'] = '';
$text['message-delete']['en-us'] = 'Delete Completed';
$text['message-delete']['es-cl'] = '';
$text['message-delete']['pt-pt'] = '';
$text['message-delete']['pt-br'] = 'Exclusão concluída';
$text['message-delete']['fr-fr'] = '';
$text['message-required']['en-us'] = 'Please provide: ';
$text['message-required']['es-cl'] = '';
$text['message-required']['pt-pt'] = '';
$text['message-required']['pt-br'] = 'Por favor, informe: ';
$text['message-required']['fr-fr'] = '';
//Controls
$text['title-conference_control_details']['en-us'] = 'Controls';
$text['title-conference_control_details']['es-cl'] = '';
$text['title-conference_control_details']['pt-pt'] = '';
$text['title-conference_control_details']['pt-br'] = 'Controles';
$text['title-conference_control_details']['fr-fr'] = '';
$text['title-conference_control_detail']['en-us'] = 'Control';
$text['title-conference_control_detail']['es-cl'] = '';
$text['title-conference_control_detail']['pt-pt'] = '';
$text['title-conference_control_detail']['pt-br'] = 'Controle';
$text['title-conference_control_detail']['fr-fr'] = '';
$text['title_description-conference_control_detail']['en-us'] = '';
$text['title_description-conference_control_detail']['es-cl'] = '';
$text['title_description-conference_control_detail']['pt-pt'] = '';
$text['title_description-conference_control_detail']['fr-fr'] = '';
$text['label-control_digits']['en-us'] = 'Digits';
$text['label-control_digits']['es-cl'] = '';
$text['label-control_digits']['pt-pt'] = '';
$text['label-control_digits']['pt-br'] = 'Digitos';
$text['label-control_digits']['fr-fr'] = '';
$text['description-control_digits']['en-us'] = 'Enter the digits.';
$text['description-control_digits']['es-cl'] = '';
$text['description-control_digits']['pt-pt'] = '';
$text['description-control_digits']['pt-br'] = 'Entre com os digitos';
$text['description-control_digits']['fr-fr'] = '';
$text['label-control_action']['en-us'] = 'Action';
$text['label-control_action']['es-cl'] = '';
$text['label-control_action']['pt-pt'] = '';
$text['label-control_action']['pt-br'] = 'Ação';
$text['label-control_action']['fr-fr'] = '';
$text['description-control_action']['en-us'] = 'Enter the action.';
$text['description-control_action']['es-cl'] = '';
$text['description-control_action']['pt-pt'] = '';
$text['description-control_action']['pt-br'] = 'Informe uma ação.';
$text['description-control_action']['fr-fr'] = '';
$text['label-control_data']['en-us'] = 'Data';
$text['label-control_data']['es-cl'] = '';
$text['label-control_data']['pt-pt'] = '';
$text['label-control_data']['pt-br'] = 'Dados';
$text['label-control_data']['fr-fr'] = '';
$text['description-control_data']['en-us'] = 'Enter the data.';
$text['description-control_data']['es-cl'] = '';
$text['description-control_data']['pt-pt'] = '';
$text['description-control_data']['pt-br'] = 'Informe os dados.';
$text['description-control_data']['fr-fr'] = '';
$text['label-control_enabled']['en-us'] = 'Enabled';
$text['label-control_enabled']['es-cl'] = '';
$text['label-control_enabled']['pt-pt'] = '';
$text['label-control_enabled']['pt-br'] = 'Habilitado';
$text['label-control_enabled']['fr-fr'] = '';
$text['description-control_enabled']['en-us'] = 'Set the status of the control.';
$text['description-control_enabled']['es-cl'] = '';
$text['description-control_enabled']['pt-pt'] = '';
$text['description-control_enabled']['pt-br'] = 'Atribua o estado do controle.';
$text['description-control_enabled']['fr-fr'] = '';
?>
+20
View File
@@ -0,0 +1,20 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = 'Conference Controls';
$apps[$x]['menu'][0]['title']['es-cl'] = '';
$apps[$x]['menu'][0]['title']['pt-br'] = 'Controles de conferência';
$apps[$x]['menu'][0]['title']['fr-fr'] = '';
$apps[$x]['menu'][0]['title']['fr-ca'] = '';
$apps[$x]['menu'][0]['title']['pl'] = '';
$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'] = '9896d4b5-507f-4d0e-8db7-caa7f4655202';
$apps[$x]['menu'][0]['parent_uuid'] = 'fd29e39c-c936-f5fc-8e2b-611681b266b5';
$apps[$x]['menu'][0]['category'] = 'internal';
$apps[$x]['menu'][0]['path'] = '/app/conference_controls/conference_controls.php';
$apps[$x]['menu'][0]['groups'][] = 'superadmin';
//$apps[$x]['menu'][0]['groups'][] = 'admin';
//$apps[$x]['menu'][0]['groups'][] = 'user';
?>
@@ -0,0 +1,49 @@
<?php
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
require_once "resources/check_auth.php";
if (permission_exists('conference_control_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"]);
}
//delete the data
if (strlen($id) > 0) {
//delete conference_control_detail
$sql = "delete from v_conference_control_details ";
$sql .= "where conference_control_uuid = '$id' ";
//$sql .= "and domain_uuid = '$domain_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql);
//delete conference_control
$sql = "delete from v_conference_controls ";
$sql .= "where conference_control_uuid = '$id' ";
//$sql .= "and domain_uuid = '$domain_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql);
}
//redirect the user
$_SESSION['message'] = $text['message-delete'];
header('Location: conference_controls.php');
?>
@@ -0,0 +1,42 @@
<?php
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
require_once "resources/check_auth.php";
if (permission_exists('conference_control_detail_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"]);
$conference_control_uuid = check_str($_GET["conference_control_uuid"]);
}
//delete the data
if (strlen($id) > 0) {
//delete conference_control_detail
$sql = "delete from v_conference_control_details ";
$sql .= "where conference_control_detail_uuid = '$id' ";
//$sql .= "and domain_uuid = '$domain_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql);
}
//redirect the user
$_SESSION['message'] = $text['message-delete'];
header('Location: conference_control_detail_edit.php?id='.$conference_control_uuid);
?>

Some files were not shown because too many files have changed in this diff Show More