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

function _poll_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']['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']['date_from']=array('type'=>'timedata','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['date_to']=array('type'=>'timedata','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['group_ids']=array('type'=>'varchar(256)','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['moment']=array('type'=>'int(11)','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['allow_days']=array('type'=>'int(11)','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['question_count']=array('type'=>'int(11)','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['account_id']=array('type'=>'int(11)','default'=>0) ;
    $_SESSION['descr_clss'][472]['fields']['uid']=array('type'=>'varchar(32)') ;


    $_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']['answer_type']=array('type'=>'int(11)');
    $_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']['poll_id']=array('type'=>'int(11)','index'=>'poll_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']['answer_ball']=array('type'=>'int(11)','default'=>0);;
    $_SESSION['descr_clss'][476]['fields']['session_question_id']=array('type'=>'int(11)');;

    $_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']['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']['event_id']=array('type'=>'int(11)','default'=>0); // ID устройства авторизации
    $_SESSION['descr_clss'][478]['fields']['pass_id']=array('type'=>'int(11)');
    $_SESSION['descr_clss'][478]['fields']['section_id']=array('type'=>'int(11)','index'=>'status','default'=>0);

    $_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'][250]['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']['len']=array('type'=>'int(11)','index'=>'result');


    $_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]['fields']['ext_info']=array('type'=>'json') ;
    $_SESSION['descr_clss'][482]['no_show_in_tree']=1;
}

function _poll_admin_boot($options)
{
    create_system_modul_obj('poll',$options);
}

function _poll_install_modul($DOT_root)
{
    SETUP()->reg_event_type('Опрос','POLL','events_poll/i_event_poll');   // регистрируем тип мероприятия

    check_exists_dir('/storage/poll');
    check_exists_dir('/public/poll_photo');
    check_exists_dir('/public/poll_sign_image');
    check_exists_dir('/public/poll_sign_data');

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

    SETUP()->reg_report('Опросы','poll/report_poll_results.php');         //
    SETUP()->reg_report('Опросы','poll/report_poll_sessions.php');         //
    SETUP()->reg_report('Опросы','poll/report_poll_sess.php');         //

    $pattern=array();
    $pattern['table_title']='КЗ - каталог тем';
    $pattern['use_clss']='472' ;
    $pattern['table_name']='poll_themes';
    $pattern['def_recs'][]=array('parent'=>0,'clss'=>1,'enabled'=>1,'indx'=>0,'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']='poll_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']='poll_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']='poll_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']='poll_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']='poll_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']='poll_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']='poll_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']='poll_sessions_questions';
    $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']='poll_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']='poll_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_poll_timeout_enable',array('el'=>'checkbox'));
    SETUP_add_rec_to_site_setting($id_sect,"Число вопросов в сеансе КЗ",'2','LS_poll_question_count');
    SETUP_add_rec_to_site_setting($id_sect,"Максимальное время для ответа на вопрос, сек",'40','LS_poll_answer_timeout',array('human'=>'sec','descr'=>'Будет отправлено в том случае если у вопроса не указано время на ответ'));
    SETUP_add_rec_to_site_setting($id_sect,"Время отображения правильного ответа на вопрос, сек",'1.5','LS_poll_correct_answer_timeout',array('human'=>'sec'));
    SETUP_add_rec_to_site_setting($id_sect,"Время отображения неправильного ответа на вопрос, сек",'3','LS_poll_incorrect_answer_timeout',array('human'=>'sec'));
    SETUP_add_rec_to_site_setting($id_sect,"Показывать опросы во время измерения на тонометре",1,'LS_poll_view_on_tonometer',array('el'=>'checkbox','descr'=>'При выключенном состоянии вопросы будут заданы отдельным этапом, после выполнения всех проверок'));

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

    // создавем вьюверы
    $sql='create view view_poll_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 poll_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_poll_session',$sql);


    $sql='create view view_poll_result as
                select  t1.pkey as poll_result_id,
                        t1.c_data as poll_с_data,
                        t1.personal_id,
                        t1.mo_id,
                        t1.poll_id,
                        t1.event_id,
                        t1.theme_id,
                        t1.pass_id,
                        t1.question_id,
                        t1.answer_id,
                        t1.correct,
                        t2.*,
                        t8.obj_name as event_name
                from poll_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_poll_result',$sql);

    if(SETUP_LEVEL('db_updates') and ESMO_STATUS!='SETUP_FIRST')
    {
        execSQL_update('update poll_result set clss=476') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="poll_result"') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="poll_stats"') ;
        execSQL_update('update obj_descr_obj_tables set parent=1 where table_name="poll_sessions"') ;
    }
}

?>
