* Update macro.lua
Add additional macros for the tutorial.
* Create tutorial.lua
* Update index.lua
* Update record_greeting.lua
Add menu variable to route back to appropriate place in the flow.
* Update record_menu.lua
Add menu variable to accommodate the tutorial.
* Update change_password.lua
Add menu variable to accommodate the tutorial.
* Update record_name.lua
Add menu variable to accommodate the tutorial.
* Update voicemail_edit.php
Add option to play tutorial on next login.
* Update app_languages.php
* Update app_config.php
Add voicemail_tutorial to database.
* Update extension_edit.php
Set "voicemail_tutorial" to true for new extensions.
Editing an extension causes the voicemail_description filed to disappear in v_voicemails.
* Preserves voicemail_description if present in v_voicemails table.
* Creates voicemail_description if empty in v_voicemails.
* Added Italian translation
* add italian translation
* add italian translation
* add italian translation
* fix typo error
* add italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian language
* added italian translation
* added italian language
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian language
* added italian language
* added italian translation
* added italian translation
* added italian language
* fixed error in copy button
* added italian translation
* added italian translation
* partial italian translation
* added partial italian translation
* added italian translation
* added italian translation
* Update app_languages.php
* Added Italian translation
* add italian translation
* add italian translation
* add italian translation
* fix typo error
* add italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian language
* added italian translation
* added italian language
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian translation
* added italian language
* added italian language
* added italian translation
* added italian translation
* added italian language
* fixed error in copy button
* added italian translation
* added italian translation
* partial italian translation
Use check_str on extension edit when building the sql queries. In the future will switch to PHP PDO prepared statements with parameters. This change fixes a problem where the check_str is used twice and duplicating the single quote.
* 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.
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
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 '{}' \;
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.
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.
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