Данный обработчик формы находится в папке  model . Его задача проверить входящий запрос, открыть базу данных, произвести изменения в ячейке с указанием статуса обращения и открыть страницу вывода всех обращений.

 

 

Рассмотрим код подробнее. 

  1   <?php
  2   /**
  3   * @Author WDS
  4   * @subpackage Components
  5   * @link Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
  6   * @license GNU/GPL
  7   * @copyright Copyright (C) 2019
  8   * ------------ ОБРАБОТЧИК ИЗМЕНЕНИЯ СТАТУСА ОБРАЩЕНИЙ ------------
  9   */
 10  // Защита от несанкционированного доступа
 11     defined( '_JEXEC' ) or die( 'Доступ запрещен...' );

Здесь всё как обычно, как и во всех других файлах.

 12  // ОБРАБОТКА ПОЛУЧЕННЫХ ДАННЫХ
 13     if (empty($_POST['status0'])) {

Функция empty в строке 13 проверяет, пуста ли переменная $_POST['status0']. Данная переменная получает значение 0 в случае, если администратор нажмёт кнопку "Обращение закрыто" (см. главу 22, строка кода 192). Если переменная пуста, проверяется наличие значения 2 в переменной $_POST['status2']:

 14          if (empty($_POST['status2'])) {

Если окажется, что и эта переменная пуста, т.е. в системе произошла какая-то ошибка, то вывод сообщения и прекращение выполнения скрипта: 

 15               include(JPATH_COMPONENT .'/err/err_data.php');
 16               exit;

Если же всё нормально и в запросе переменная $_POST['status2'] содержит значение (2), то выполнение кода продолжается. В этом случае происходит подключение к базе данных и проверка соединения (строки 18-22), после чего переменная $Mess_Number при помощи метода JRequest::getVar получает из адреса страницы (ссылки) номер обращения (строка 23):

 17          } else {
 18              $dbJFactory::getDBO();
 19              if (!$db->connected()) {
 20                   include(JPATH_COMPONENT .'/err/err_db.php'); 
 21                   exit;
 22             }
 23             $Mess_Number = JRequest::getVar( 'mess_number' );

Если номер не получен, выводится сообщение об ошибке и выполнение кода прекращается (строки 24-26), если номер получен, создаётся (строка 28) и выполняется (строка 29) соответствующий запрос к базе данных, после чего осуществляется переход на страницу просмотра всех обращений (строка 30): 

 24             if ($Mess_Number == NULL) {
 25                  include(JPATH_COMPONENT .'/err/err_data.php'); 
 26                  exit;
 27             } else {
 28                  $db->setQuery("UPDATE #__feedback_form SET status_mess = '2' WHERE id = " . $Mess_Number);
 29                  $db->query();
 30                  header('Location: /index.php?option=com_feedback_form&task=adm_view_feedback');
 31             }
 32         }

Вторая часть кода работает по тому же принципу.

Если переменная $_POST['status0'] содержит значение (в этом случае значение переменной $_POST['status2'] не проверяется, она должна быть пуста),  то строки 14-32 игнорируются и выполняется нижеследующий код:

 33  } else {
 34      $dbJFactory::getDBO();
 35      if (!$db->connected()) {
 36          include(JPATH_COMPONENT .'/err/err_db.php');
 37          exit;
 38      }
 39      $Mess_Number = JRequest::getVar( 'mess_number' );
 40      if ($Mess_Number == NULL) {
 41          include(JPATH_COMPONENT .'/err/err_data.php'); 
 42          exit;
 43      } else {
 44          $db->setQuery("UPDATE #__feedback_form SET status_mess = '0' WHERE id = " . $Mess_Number);
 45          $db->query();
 46          header('Location: /index.php?option=com_feedback_form&task=adm_view_feedback');
 47      }
 48  }
 49  ?>

В этом случае разница лишь в том, что в колонке статуса будет прописана цифра 0, а не 2, после чего точно так же будет открыта страница просмотра всех обращений (с уже изменённым статусом).

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

 

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!