чного питання передається в шаблон (Лістинг 13).
Лістинг 13. Метод action_view () контролера tests.php класу Controller_Tutor_Tests
В
Зі списку запитань тесту можна перейти на форму редагування питання і відповідей. За роботу з питаннями відповідає контролер questions.php, в якому описаний клас Controller_Tutor_Question. p align="justify"> На сторінці В«Редагування питанняВ» виводять значення та питання і відповідей. Доступ до моделі Model_Question відбувається по вторинному ключу id_test, а до моделі Model_Answers через Model_Qanswers (Лістинг 14). p align="justify"> Лістинг 14. Запит до моделі Model_Question і Model_Answers
$ id = $ this-> request-> param ('id');
$ question = ORM :: factory ('question', $ id);
$ answers = $ question-> answers-> find_all ();
Запитання та відповіді пов'язані через третю таблицю, яка містить первинні ключі двох інших таблиць (рис.11).
В
Рис.11. Зв'язок таблиць В«AnswersВ», В«QuestionsВ» через таблицю В«QanswersВ»
При редагуванні даних оновлення відбувається відразу в двох таблицях (Лістинг 14).
Лістинг 14. Метод action_edit () контролера tests.php класу Controller_Tutor_Questions
В
Спочатку оновлення відбувається в моделі Model_Question. Оновлені значення передаються в масив $ _POST. З цього масиву отримують ключі методом extract (). При успішному виконанні поновлення моделі Model_Question, відбувається оновлення відповідей в циклі foreach, де $ k - ключ елемента масиву, а $ v - значення елемента масиву, який містить відповіді. p align="justify"> Якщо запит на оновлення виконаний успішно, викладач перенаправляється на сторінку В«Запитання тестуВ».
Під час виконання методу action_add (), який описаний в класі Controller_Tutor_Questions, додавання відбувається відразу в три таблиці (Лістинг 15).
Масив $ _POST отримує дані з форми додавання питання і відповідей. Першим додається в таблицю питання, зі значеннями, отриманими з масиву $ _POST. p align="justify"> Лістинг 15. Метод action_add () контролера tests.php класу Controller_Tutor_Questions
В
Якщо питання успішно доданий, то в циклі додаються відповіді і вторинні ключі в сполучну таблицю, де $ k - ключ елемента масиву, а $ v - значення елемента масиву, який містить відповіді.
Таким чином, був реалізований клас Tutor, створені контролери та описані їх методи, що задовольняють функціональним можливостям викладача системи.
5.1.1.2 Клас Admin
Class Admin відповідає за призначення прав користувачів. При реєстрації новий користувач отримує права студента, тільки пе...