<?php // этот модуль необходимо делать тольео для крупных проектов, для небольшых описание пунктов меню и файлов меню лучше делать в init.php
$__functions['init'][]='_quiz_admin_vars';
$__functions['boot_admin'][]='_quiz_admin_boot';
//$__functions['alert'][]   ='_quiz_admin_alert' ;
$__functions['install'][]='_quiz_install_modul';

function _quiz_admin_vars() //
{

    $_SESSION['descr_clss'][472]['name']='Раздел КЗ';
    $_SESSION['descr_clss'][472]['parent']=0;
    $_SESSION['descr_clss'][472]['fields']['level']=array('type'=>'int(11)','index'=>'level');
    $_SESSION['descr_clss'][472]['fields']['event_id']=array('type'=>'int(11)','index'=>'event_id','default'=>0);
    $_SESSION['descr_clss'][472]['fields']['parent1']=array('type'=>'int(11)','index'=>'parent1');
    $_SESSION['descr_clss'][472]['fields']['parent2']=array('type'=>'int(11)','index'=>'parent2');
    $_SESSION['descr_clss'][472]['fields']['parent3']=array('type'=>'int(11)','index'=>'parent3');
    $_SESSION['descr_clss'][472]['fields']['parent4']=array('type'=>'int(11)','index'=>'parent4');
    $_SESSION['descr_clss'][472]['fields']['parent5']=array('type'=>'int(11)','index'=>'parent5');
    $_SESSION['descr_clss'][472]['fields']['parent6']=array('type'=>'int(11)','index'=>'parent6');
    $_SESSION['descr_clss'][472]['fields']['parent7']=array('type'=>'int(11)','index'=>'parent7');
    $_SESSION['descr_clss'][472]['fields']['parent8']=array('type'=>'int(11)','index'=>'parent8');
    $_SESSION['descr_clss'][472]['fields']['parent9']=array('type'=>'int(11)','index'=>'parent9');
    $_SESSION['descr_clss'][472]['fields']['filter']=array('type'=>'text');
    $_SESSION['descr_clss'][472]['fields']['usl_select']=array('type'=>'text');
    $_SESSION['descr_clss'][472]['fields']['info_filter']=array('type'=>'text');
    $_SESSION['descr_clss'][472]['fields']['viewer_name']=array('type'=>'varchar(32)');
    $_SESSION['descr_clss'][472]['fields']['closing_perc']=array('type'=>'int(11)');

    $_SESSION['descr_clss'][473]['name']='Вопрос';
    $_SESSION['descr_clss'][473]['parent']=0;
    $_SESSION['descr_clss'][473]['fields']['comment']=array('type'=>'text');
    $_SESSION['descr_clss'][473]['fields']['theme_id']=array('type'=>'int(11)','index'=>'theme_id');
    $_SESSION['descr_clss'][473]['fields']['timeout']=array('type'=>'int(11)');
    $_SESSION['descr_clss'][473]['fields']['level']=array('type'=>'int(11)','index'=>'level');
    $_SESSION['descr_clss'][473]['fields']['parent1']=array('type'=>'int(11)','index'=>'parent1');
    $_SESSION['descr_clss'][473]['fields']['parent2']=array('type'=>'int(11)','index'=>'parent2');
    $_SESSION['descr_clss'][473]['fields']['parent3']=array('type'=>'int(11)','index'=>'parent3');
    $_SESSION['descr_clss'][473]['fields']['parent4']=array('type'=>'int(11)','index'=>'parent4');
    $_SESSION['descr_clss'][473]['fields']['parent5']=array('type'=>'int(11)','index'=>'parent5');
    $_SESSION['descr_clss'][473]['fields']['parent6']=array('type'=>'int(11)','index'=>'parent6');
    $_SESSION['descr_clss'][473]['fields']['parent7']=array('type'=>'int(11)','index'=>'parent7');
    $_SESSION['descr_clss'][473]['fields']['parent8']=array('type'=>'int(11)','index'=>'parent8');
    $_SESSION['descr_clss'][473]['fields']['parent9']=array('type'=>'int(11)','index'=>'parent9');


    $_SESSION['descr_clss'][474]['name']='Вариант ответа';
    $_SESSION['descr_clss'][474]['parent']=0;
    $_SESSION['descr_clss'][474]['no_show_in_tree']=1;
    $_SESSION['descr_clss'][474]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');
    $_SESSION['descr_clss'][474]['fields']['status']=array('type'=>'int(11)');

    $_SESSION['descr_clss'][475]['name']='Контент вопроса';
    $_SESSION['descr_clss'][475]['parent']=0;
    $_SESSION['descr_clss'][475]['no_show_in_tree']=1;
    $_SESSION['descr_clss'][475]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');
    $_SESSION['descr_clss'][475]['fields']['size']=array('type'=>'int(11)'); // 1 - картинка 2 - видео
    $_SESSION['descr_clss'][475]['fields']['type']=array('type'=>'varchar(20)'); // 1 - картинка 2 - видео
    $_SESSION['descr_clss'][475]['fields']['dir']=array('type'=>'varchar(255)'); // директория ( с учетом даты загрузки)
    $_SESSION['descr_clss'][475]['fields']['file_name']=array('type'=>'varchar(255)'); // 1 - картинка 2 - видео

    $_SESSION['descr_clss'][476]['name']='Результаты ответов';
    $_SESSION['descr_clss'][476]['parent']=0;
    $_SESSION['descr_clss'][476]['no_show_in_tree']=1;
    $_SESSION['descr_clss'][476]['fields']['personal_id']=array('type'=>'int(11)','index'=>'personal_id');;
    $_SESSION['descr_clss'][476]['fields']['mo_id']=array('type'=>'int(11)','index'=>'mo_id');;
    $_SESSION['descr_clss'][476]['fields']['quiz_id']=array('type'=>'int(11)','index'=>'quiz_id');;
    $_SESSION['descr_clss'][476]['fields']['event_id']=array('type'=>'int(11)','index'=>'event_id');;
    $_SESSION['descr_clss'][476]['fields']['theme_id']=array('type'=>'int(11)','index'=>'theme_id');;
    $_SESSION['descr_clss'][476]['fields']['pass_id']=array('type'=>'int(11)','index'=>'pass_id');;
    $_SESSION['descr_clss'][476]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');;
    $_SESSION['descr_clss'][476]['fields']['answer_id']=array('type'=>'int(11)');;
    $_SESSION['descr_clss'][476]['fields']['correct']=array('type'=>'int(1)','index'=>'correct');;
    $_SESSION['descr_clss'][476]['fields']['lap']=array('type'=>'int(11)','index'=>'lap','default'=>1);;
    $_SESSION['descr_clss'][476]['fields']['last']=array('type'=>'int(1)','index'=>'last','default'=>1);;

    $_SESSION['descr_clss'][477]['name']='Статистика КЗ';
    $_SESSION['descr_clss'][477]['parent']=0;
    $_SESSION['descr_clss'][477]['fields']['type']=array('type'=>'int(11)');
    $_SESSION['descr_clss'][477]['fields']['year']=array('type'=>'int(11)','index'=>'year');
    $_SESSION['descr_clss'][477]['fields']['month']=array('type'=>'int(11)','index'=>'month');
    $_SESSION['descr_clss'][477]['fields']['day']=array('type'=>'int(11)','index'=>'day');
    $_SESSION['descr_clss'][477]['fields']['dep_id']=array('type'=>'int(11)','index'=>'dep_id');
    $_SESSION['descr_clss'][477]['fields']['work_id']=array('type'=>'int(11)','index'=>'work_id');
    $_SESSION['descr_clss'][477]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');
    $_SESSION['descr_clss'][477]['fields']['cnt_all']=array('type'=>'int(11)','default'=>0);
    $_SESSION['descr_clss'][477]['fields']['cnt_correct']=array('type'=>'int(11)','default'=>0);

    $_SESSION['descr_clss'][478]['name']='Сессия контроля знаний';
    $_SESSION['descr_clss'][478]['parent']=0;
    $_SESSION['descr_clss'][478]['fields']['mo_id']=array('type'=>'int(11)','index'=>'mo_id'); // время начала сенса
    $_SESSION['descr_clss'][478]['fields']['c_data']=array('type'=>'timedata','data_format'=>'d.m.y G:i'); // время начала сенса
    $_SESSION['descr_clss'][478]['fields']['c_data_m']=array('type'=>'timedata','data_format'=>'d.m.y G:i'); // дата для группировки по 1 минутe
    $_SESSION['descr_clss'][478]['fields']['c_data_h']=array('type'=>'timedata','data_format'=>'d.m.y G:i'); // дата для группировки по 1 часу
    $_SESSION['descr_clss'][478]['fields']['c_data_d']=array('type'=>'timedata','data_format'=>'d.m.y G:i'); // дата для группировки по дню
    $_SESSION['descr_clss'][478]['fields']['e_data']=array('type'=>'timedata','data_format'=>'d.m.y G:i'); // время окончания сенса
    $_SESSION['descr_clss'][478]['fields']['group_id']=array('type'=>'int(11)'); // код рабочей группы
    $_SESSION['descr_clss'][478]['fields']['pass_id']=array('type'=>'int(11)');
    $_SESSION['descr_clss'][478]['fields']['terminal_id']=array('type'=>'varchar(32)'); // код задействовоанного контроллера
    $_SESSION['descr_clss'][478]['fields']['terminal_pkey']=array('type'=>'int(11)'); // код задействовоанного контроллера
    $_SESSION['descr_clss'][478]['fields']['personal_id']=array('type'=>'int(11)'); // код работника
    $_SESSION['descr_clss'][478]['fields']['error']=array('type'=>'int(1)','default'=>0); // 0 - допуск к МО есть, 1 - недопуск к МО по причини клиента, 2 - недопуск к МО - не удалось опознпть
    $_SESSION['descr_clss'][478]['fields']['error_reason']=array('type'=>'varchar(255)'); // причина аннулирования допуска
    $_SESSION['descr_clss'][478]['fields']['status']=array('type'=>'indx_select','array'=>'ARR_status_sess','index'=>'status'); // этап медосмотра  1 - осмотр начат, 2 - осмотр завершен без ошибок, 3 - осмотр завершен с ошибками
    $_SESSION['descr_clss'][478]['fields']['message_terminal']=array('type'=>'varchar(32)');
    $_SESSION['descr_clss'][478]['fields']['terminal_comment']=array('type'=>'varchar(255)');
    $_SESSION['descr_clss'][478]['fields']['reader']=array('type'=>'varchar(12)','default'=>''); // ID устройства авторизации
    $_SESSION['descr_clss'][478]['fields']['quiestion_ids']=array('type'=>'varchar(64)','default'=>''); // ID устройства авторизации

    $_SESSION['descr_clss'][478]['fields']['comment']='text';  // комментарий к автоматической оценке результатов оценки сотрудника. Более сюда ничего не писать!
    $_SESSION['descr_clss'][478]['fields']['reason']=array('type'=>'varchar(32)','default'=>''); // тип ошибки
    $_SESSION['descr_clss'][478]['fields']['equipment']=array('type'=>'varchar(255)','default'=>''); // оборудование с ошибкой
    $_SESSION['descr_clss'][478]['fields']['video']=array('type'=>'varchar(255)','default'=>''); // имя файла видео
    $_SESSION['descr_clss'][478]['fields']['reader']=array('type'=>'varchar(12)','default'=>''); // ID устройства авторизации
    $_SESSION['descr_clss'][478]['fields']['DTW_id']=array('type'=>'int(11)','default'=>0); // код направления по данному МО
    $_SESSION['descr_clss'][478]['fields']['DTW_res']=array('type'=>'int(11)','default'=>0); // результат проверки экранной подписи

    $_SESSION['descr_clss'][479]['name']='Вопрос в сессии КЗ';
    $_SESSION['descr_clss'][479]['parent']=0;
    $_SESSION['descr_clss'][479]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');
    $_SESSION['descr_clss'][479]['fields']['result']=array('type'=>'int(11)','index'=>'result','default'=>0);
    $_SESSION['descr_clss'][479]['fields']['status']=array('type'=>'int(11)','index'=>'status','default'=>0); // 0
    $_SESSION['descr_clss'][479]['fields']['lap']=array('type'=>'int(11)','index'=>'lap','default'=>0); // круг прохождения КЗ
    //$_SESSION['descr_clss'][479]['fields']['len']=array('type'=>'int(11)','index'=>'result');


    $_SESSION['descr_clss'][481]['name']='Знание';
    $_SESSION['descr_clss'][481]['parent']=0;
    $_SESSION['descr_clss'][481]['icons']=_PATH_TO_BASED_CLSS_IMG.'/man.jpg';
    $_SESSION['descr_clss'][481]['fields']['section_id']=array('type'=>'int(11)','default'=>0,'index'=>'section_id'); // раздел, в котором находится полный текст знания
    $_SESSION['descr_clss'][481]['fields']['account_id']=array('type'=>'int(11)','default'=>0,'index'=>'account_id'); // раздел, в котором находится полный текст знания
    $_SESSION['descr_clss'][481]['fields']['uid']=array('type'=>'varchar(40)','default'=>'','index'=>'uid'); // раздел, в котором находится полный текст знания
    //$_SESSION['descr_clss'][481]['fields']['select_from']=array('type'=>'varchar(12)','default'=>''); // начала фрагмента в исходнике, исходник находится в parent section manual
    //$_SESSION['descr_clss'][481]['fields']['select_to']=array('type'=>'varchar(12)','default'=>'');  // конец фрагмента в исходнике, исходник находится в parent section manual

    $_SESSION['descr_clss'][482]['name']='Тексты для разделов КЗ и знаний КЗ';
    $_SESSION['descr_clss'][482]['parent']=0;
    $_SESSION['descr_clss'][482]['fields']['comment']=array('type'=>'text');
    $_SESSION['descr_clss'][482]['fields']['json_data']=array('type'=>'text');
    $_SESSION['descr_clss'][482]['no_show_in_tree']=1;

    $_SESSION['descr_clss'][483]['name']='Статистика по усваеваемости';
    $_SESSION['descr_clss'][483]['parent']=0;
    $_SESSION['descr_clss'][483]['fields']['personal_id']=array('type'=>'int(11)','index'=>'personal_id');
    $_SESSION['descr_clss'][483]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');
    $_SESSION['descr_clss'][483]['fields']['re_ask_result']=array('type'=>'tinyint(1)','index'=>'question_id','default'=>0); // 0 - не удачный переспрос, 1 - удачный переспрос
    $_SESSION['descr_clss'][483]['fields']['date_re_ask']=array('type'=>'timedata','index'=>'date_re_ask');
    $_SESSION['descr_clss'][483]['fields']['id_re_ask']=array('type'=>'int(11)','index'=>'id_re_ask');
    $_SESSION['descr_clss'][483]['fields']['date_first_ask']=array('type'=>'timedata','index'=>'date_first_ask');
    $_SESSION['descr_clss'][483]['fields']['id_first_ask']=array('type'=>'int(11)','index'=>'id_first_ask');
    $_SESSION['descr_clss'][483]['index']['question_personal']='question_id,personal_id';
}

function _quiz_admin_boot($options)
{
    create_system_modul_obj('quiz',$options);
}

function _quiz_install_modul($DOT_root)
{
    check_exists_dir('/storage/quiz');
    check_exists_dir('/public/quiz_photo');
    check_exists_dir('/public/quiz_sign_image');
    check_exists_dir('/public/quiz_sign_data');
    check_exists_dir('/public/quiz_docs') ;


    // обращение происходит через EVENT()->server_check_access_success
    //SETUP()->reg_event_lister('server_check_access_success','QUIZ','on_event_check_access_success') ;         //
    SETUP()->reg_event_lister('server_examination_result_success','QUIZ','on_event_server_examination_result_success');         //
    ENGINE()->reg_cron('Обновление статистики контроля знаний','QUIZ/update_stats','30 1 * * *',array('enabled'=>1));
    ENGINE()->reg_cron('Сброс статуса участия для переодических КЗ','QUIZ/quiz_clear_status','*/1 * * * *');
    ENGINE()->reg_cron('Рассылка email для проведения КЗ','QUIZ/send_email_invite','0 1 * * *'); // расслка один раз в сутки в час ночи

    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_results.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_sessions.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_sess.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_question_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_question_learned_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_personal_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_personal_learned_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_org_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_org_learned_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_department_rating.php');         //
    SETUP()->reg_report('Контроль знаний','quiz/report_quiz_department_learned_rating.php');         //

    $pattern=array();
    $pattern['table_title']='КЗ - каталог тем';
    $pattern['use_clss']='472,481' ;
    $pattern['table_name']='quiz_themes';
    $pattern['def_recs'][]=array('parent'=>0,'clss'=>1,'enabled'=>1,'indx'=>1,'obj_name'=>'Проверка знаний','level'=>1);
    $pattern['table_clss']=101;
    $pattern['table_parent']=$DOT_root;
    $id_root=create_table_by_pattern($pattern);

    $pattern['table_title']='КЗ - каталог тем - тексты';
    $pattern['use_clss']=482;
    $pattern['table_name']='quiz_themes_text';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    $id_root=create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='Вопросы';
    $pattern['use_clss']=473;
    $pattern['table_name']='quiz_questions';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    $id_root2=create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='Ответы';
    $pattern['use_clss']=474;
    $pattern['table_name']='quiz_answers';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root2;
    create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='Контент';
    $pattern['use_clss']=475;
    $pattern['table_name']='quiz_content';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root2;
    create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='КЗ - Результаты ответов';
    $pattern['use_clss']=476;
    $pattern['table_name']='quiz_result';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='КЗ - Статистика';
    $pattern['use_clss']=477;
    $pattern['table_name']='quiz_stats';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='КЗ - сессии';
    $pattern['use_clss']=478;
    $pattern['table_name']='quiz_sessions';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    $id=create_table_by_pattern($pattern);

    $pattern=array() ;
    $pattern['table_title']='КЗ - вопросы сессии';
    $pattern['use_clss']=479;
    $pattern['table_name']='quiz_sessions_questions';
    $pattern['table_clss']				= 	101 ;
    $pattern['table_parent']=$id;
    create_table_by_pattern($pattern) ;

    $pattern=array() ;
    $pattern['table_title']='КЗ - усваиваемость вопросов';
    $pattern['use_clss']=483;
    $pattern['table_name']='quiz_learned';
    $pattern['table_clss']				= 	101 ;
    $pattern['table_parent']=$id;
    create_table_by_pattern($pattern) ;

    /*$pattern=array();
    $pattern['table_title']='Темы/разделы КЗ - должности';
    $pattern['use_clss']=479;
    $pattern['table_name']='quiz_workings2';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    $pattern['no_use_based_fields']=1;
    create_table_by_pattern($pattern);

    $pattern=array();
    $pattern['table_title']='Темы/разделы КЗ - организации/подразделения';
    $pattern['use_clss']=480;
    $pattern['table_name']='quiz_orgs';
    $pattern['table_clss']=101;
    $pattern['table_parent']=$id_root;
    $pattern['no_use_based_fields']=1;
    create_table_by_pattern($pattern);*/

    $id_sect=SETUP_add_section_to_site_setting('Контроль знаний');
    SETUP_add_rec_to_site_setting($id_sect,"Отправлять на терминал максимальное время для ответа на вопрос:",1,'LS_quiz_timeout_enable',array('el'=>'checkbox'));
    SETUP_add_rec_to_site_setting($id_sect,"Число вопросов в сеансе КЗ",'2','LS_quiz_question_count');
    SETUP_add_rec_to_site_setting($id_sect,"Максимальное время сессии КЗ на терминале, сек",'120','LS_quiz_session_timeout',array('human'=>'sec','descr'=>''));
    SETUP_add_rec_to_site_setting($id_sect,"Максимальное время для ответа на вопрос, сек",'40','LS_quiz_answer_timeout',array('human'=>'sec','descr'=>'Будет отправлено в том случае если у вопроса не указано время на ответ'));
    SETUP_add_rec_to_site_setting($id_sect,"Время отображения правильного ответа на вопрос, сек",'1.5','LS_quiz_correct_answer_timeout',array('human'=>'sec'));
    SETUP_add_rec_to_site_setting($id_sect,"Время отображения неправильного ответа на вопрос, сек",'3','LS_quiz_incorrect_answer_timeout',array('human'=>'sec'));
    SETUP_add_rec_to_site_setting($id_sect,"Показывать контроль знаний во время измерения на тонометре",1,'LS_quiz_view_on_tonometer',array('el'=>'checkbox','descr'=>'При выключенном состоянии вопросы будут заданы отдельным этапом, после выполнения всех проверок'));
    SETUP_add_rec_to_site_setting($id_sect,"КЗ через приложение терминала",0,'LS_quiz_over_terminal_app',array('el'=>'checkbox','descr'=>'Использовать ПО терминала для сеанса КЗ'));
    SETUP_add_rec_to_site_setting($id_sect,"КЗ через фрейм сервера",1,'LS_quiz_over_frame',array('el'=>'checkbox','descr'=>'Использовать фрейм сервера для сеанса КЗ'));

    if(SETUP_LEVEL('db_updates') and ESMO_STATUS!='SETUP_FIRST')
    {
        //execSQL_update('ALTER TABLE  quiz_sessions drop  sign_id',array('debug'=>2));
    }

    // создавем вьюверы
    $sql='create view view_quiz_session as
                select  t1.*,
                        (t1.e_data-t1.c_data) as mo_dlit,
                        t2.obj_name as personal_name,
                        t2.uid as personal_uid,
                        t2.tab_number as personal_tabnumber,
                        t2.client_id as personal_client_id,
                        t2.dr as personal_dr,
                        t2.age as personal_age,
                        t2.pol as personal_pol,
                        t2.demo_access as personal_demo_access,
                        t2.driving as personal_driving,
                        t2.group_id as personal_group_id,
                        t2.parent as personal_parent,
                        t2.parent1 as personal_parent1,
                        t2.parent2 as personal_parent2,
                        t2.parent3 as personal_parent3,
                        t2.parent4 as personal_parent4,
                        t2.parent5 as personal_parent5,
                        t2.parent6 as personal_parent6,
                        t2.parent7 as personal_parent7,
                        t2.parent8 as personal_parent8,
                        t2.parent9 as personal_parent9,
                        t2.enabled as personal_enabled,
                        t2.working,
                        t2.age,
                        t2.propusk,
                        t2.sign_id,
                        t2.intro_level,
                        t2.danger as personal_danger_work,
                        t2._image_name as personal_img,
                        t3.pkey as _otdel_id,
                        t3.obj_name as _otdel_name,
                        t4.pkey as _ord_id,
                        t4.pkey as _org_id,
                        t4.obj_name as _org_name,
                        t5.obj_name as terminal_name,
                        t5.virt as terminal_virt,
                        t5.stream_name_1 as _term_cam_1,
                        t_grp.obj_name as group_name,
                        /*t7.event_id as event_id,*/
                        t8.obj_name as event_name
                from quiz_sessions t1
                left join obj_site_personals t2 on t2.pkey=t1.personal_id
                left join obj_site_personals t3 on t3.pkey=t2.parent3
                left join obj_site_personals t4 on t4.pkey=t2.parent2
                left join obj_site_account t5 on t5.id=t1.terminal_id and t5.clss=203
                left join obj_site_account t_grp on t_grp.pkey=t5.parent
                left join obj_site_events_pass t7 on t7.pkey=t1.pass_id
                left join obj_site_events_schedule t8 on t8.pkey=t7.event_id
                
                ';
    create_viewer('view_quiz_session',$sql);

    $_SESSION['descr_clss'][476]['fields']['personal_id']=array('type'=>'int(11)','index'=>'personal_id');;
    $_SESSION['descr_clss'][476]['fields']['mo_id']=array('type'=>'int(11)','index'=>'mo_id');;
    $_SESSION['descr_clss'][476]['fields']['quiz_id']=array('type'=>'int(11)','index'=>'event_id');;
    $_SESSION['descr_clss'][476]['fields']['event_id']=array('type'=>'int(11)','index'=>'quiz_id');;
    $_SESSION['descr_clss'][476]['fields']['theme_id']=array('type'=>'int(11)','index'=>'theme_id');;
    $_SESSION['descr_clss'][476]['fields']['pass_id']=array('type'=>'int(11)','index'=>'pass_id');;
    $_SESSION['descr_clss'][476]['fields']['question_id']=array('type'=>'int(11)','index'=>'question_id');;
    $_SESSION['descr_clss'][476]['fields']['answer_id']=array('type'=>'int(11)');;
    $_SESSION['descr_clss'][476]['fields']['correct']=array('type'=>'int(1)');;

    $sql='create view view_quiz_result as
                select  t1.pkey as quiz_result_id,
                        t1.c_data as quiz_с_data,
                        t1.personal_id,
                        t1.mo_id,
                        t1.quiz_id,
                        t1.event_id,
                        t1.theme_id,
                        t1.pass_id,
                        t1.question_id,
                        t1.answer_id,
                        t1.correct,
                        t1.last,
                        t1.lap,
                        t2.*,
                        t8.obj_name as event_name
                from quiz_result t1
                left join view_personals t2 on t2.pkey=t1.personal_id
                left join obj_site_events_pass t7 on t7.pkey=t1.pass_id
                left join obj_site_events_schedule t8 on t8.pkey=t7.event_id
                
                ';
    create_viewer('view_quiz_result',$sql);

    $sql='create view view_quiz_learned as
                select  t1.pkey as quiz_result_id,
                        t1.date_re_ask as quiz_с_data,
                        t1.personal_id,
                        t1.question_id,
                        t1.re_ask_result,
                        
                        t2.mo_id,
                        t2.quiz_id,
                        t2.event_id,
                        t2.theme_id,
                        t2.pass_id,
                        t2.answer_id,
                        
                        t3.*,
                        t8.obj_name as event_name
                from quiz_learned t1
                inner join quiz_result t2 on t2.pkey=t1.id_re_ask
                left join view_personals t3 on t3.pkey=t1.personal_id
                left join obj_site_events_pass t7 on t7.pkey=t2.pass_id
                left join obj_site_events_schedule t8 on t8.pkey=t7.event_id
                
                ';
    create_viewer('view_quiz_learned',$sql);

    if(SETUP_LEVEL('db_updates') and ESMO_STATUS!='SETUP_FIRST')
    {
        execSQL_update('update quiz_result set clss=476') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="quiz_result"') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="quiz_stats"') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="quiz_sessions"') ;
        execSQL_update('delete from quiz_themes where clss=481 and parent=0') ;
        execSQL_update('delete from quiz_content where obj_name like "%no_image.jpg%"') ;
        $quiz_root=execSQL_value('select * from quiz_themes where pkey=1') ;
        if (!$quiz_root['pkey']) adding_rec_to_table('quiz_themes',['pkey'=>1,'parent'=>0,'clss'=>1,'enabled'=>1,'indx'=>1,'level'=>1,'obj_name'=>'Проверка знаний']) ;
        if ($quiz_root['parent']) update_rec_in_table('quiz_themes',['parent'=>0,'clss'=>1,'enabled'=>1,'indx'=>1,'level'=>1,'obj_name'=>'Проверка знаний'],'pkey=1') ;

        QUIZ()->create_quiz_stats_tables() ;
    }
}

?>
