Денис Пестрецов
25.07.2019
277

Доработка FreePBX. Временные группы (TimeGroups). Решение проблемы добавления кавычек в имя временной группы

В этой статье рассмотрим решение проблемы модуля временных групп, связанной с использованием в имени кавычек. Описание проблемы Сперва рассмотрим, как поведёт себя система при добавлении кавычки в имя временной группы. Для этого переходим в модуль Time Conditions и создаём новую временную группу. Назовём её quote_test ’. Временной диапазон в данном примере совершенно неважен. Нажимаем Submit […]

В этой статье рассмотрим решение проблемы модуля временных групп, связанной с использованием в имени кавычек.

Описание проблемы

В данной статье будем рассматривать FreePBX 13 версии и модуль Time Conditions версии 13.0.34.5.

Сперва рассмотрим, как поведёт себя система при добавлении кавычки в имя временной группы. Для этого переходим в модуль Time Conditions и создаём новую временную группу. Назовём её quote_test ’.

Создание временной группы

Временной диапазон в данном примере совершенно неважен. Нажимаем Submit для применения настроек. Видим, что, пока всё хорошо, новая временная группа успешно создалась.

Теперь откроем только что созданную группу в режиме редактирования и попытаемся внести какие-нибудь правки. К примеру, удалим кавычку из имени, после чего нажмём кнопку Submit. Видим, что ничего не произошло. В целом, ничего не произойдёт также, если нажать на кнопки Duplicate и Reset.

Работа кнопок действий

Единственное, что осталось работоспособным – кнопка Delete.

Рассмотрим варианты решения возникшей проблемы.

Варианты решения проблемы

Первым вариантом, самым простым, но не самым удобным, пожалуй, является удаление проблемной временной группы. Несомненно, это решит проблему, но доставит массу неудобств, в случае, если временных диапазонов уже было добавлено немало. Соответственно, после удаления придётся заново вводить все диапазоны. Также, в новом созданном имени, не стоит использовать кавычки, иначе это приведёт к такой же проблеме.

Удаление, как решение проблемы

Вторым вариантом решения проблемы является удаление кавычки из имени через базу данных. Для этого производим подключение к БД, командой:

mysql -u root -p

После чего вводим пароль от пользователя root.

Если не известен пароль от пользователя root к БД, также можем использовать альтернативный вариант и войти под пользователем freepbxuser:
mysql -u freepbxuser -p

После чего, соответственно, ввести пароль от пользователя freepbxuser.

Пароль от пользователя freepbxuser можно посмотреть в файле /etc/freepbx.conf.

После прохождения авторизации выбираем используемую базу:

use asterisk;

Нас интересует таблица timegroups_groups. Исправление производим следующей командой:

update timegroups_groups set description='quote_test' where description="quote_test '";

Таким образом, мы переименовываем значение с кавычкой на значение, не содержащее её, то есть quote_test ‘ на quote_test.

Смена имени через базу

Если после совершённой замены перейти обратно в веб-интерфейс, то увидим, что всё работает корректно, а имя временной группы успешно сменилось.

Данный способ позволяет сохранить ранее заведённые временные диапазоны и, при этом, вернуть работоспособность модулю.

Результат смены имени

Это основные методы восстановления работы модуля Time Groups во FreePBX. Теперь рассмотрим способы избегания данной ошибки в дальнейшем. Для этого прибегнем к правке кода модуля.

Правка кода

В целом, если Вы редко сталкиваетесь с подобной проблемой, то править код может и не понадобиться, а достаточно будет прибегнуть к одному из двух решений, описанных выше. В данном разделе рассмотрим правки кода, чтобы избежать подобных проблем. Для этого открываем в режиме редактирования файл …/admin/modules/timeconditions/Timeconditions.class.php.

В этом файле находим функцию, отвечающую за добавление временных групп:

public function addTimeGroup($description, $times=null){

В качестве входного параметра в данную функцию передаётся переменная $description. В ней и хранится искомое имя добавляемой временной группы. Сразу первой строкой данной функции добавляем:

$arr_change = array("'","\"");
$description = str_replace($arr_change, "", $description);

В $arr_change объявляем массив нежелательных символов. Следующей строкой удаляем эти самые символы.

Для проверки, что функционал отработал, добавим новую временную группу. В качестве имени укажем new”_quote’_test . После добавления видим, что символы кавычек были удалены из имени.

Результат правки скрипта

Тот же самый трюк необходимо проделать и с редактированием временной группы. Переходим в функцию editTimeGroup. Она будет следующей, после редактированной нами функцией добавления.

Здесь, в самом начале функции также добавляем строки, которые были описаны выше, то есть:

$arr_change = array("'","\"");
$description = str_replace($arr_change, "", $description);

Теперь при редактировании временной группы кавычки также будут удаляться из имени.

На этом доработка данного функционала модуля Time Groups завершена.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices