<?php
include_once("c_setting_config.php");
class c_page_cab_setting_crontab extends c_page_cab_setting_config
{
  public $h1='Планирировщик задач ЭСМО' ;

 function block_main()
 { $this->page_title() ;
   include_once(_DIR_EXT.'/aspmo_setting/c_ajax.php');
   $c_ajax = new c_page_ajax();
   ?><form><table class="basic fz_small auto left full">
         <tr><th colspan="2"><h2>Параметры планировщика</h2></th></tr>
         <? $this->form_checkbox('Включить планировщик<div class="comment">Выключение планировщика приведет к приостановке всех заданий</div>','','LS_cron_active') ; ?>
         <tr><td>Время последнего запуска планировщика
             <div><?if (!$GLOBALS['LS_last_cron_time']) echo '<span class="red">По видимому, не настроен планировщик, необходимо добавить задание для crontab:</span><br><span class="black">*/1 * * * * /usr/bin/wget -O /dev/null '._PATH_TO_SITE.'/services/cron/</span>'?></div>


             </td><td style="text-align:center"><?echo ($GLOBALS['LS_last_cron_time'])? date('d.m.Y H:i:s',$GLOBALS['LS_last_cron_time']):'-'?></td></tr>
         <tr><td colspan="2" class="right">
                 <button class="v2" cmd="aspmo_setting/save_setting">Сохранить</button>
                 <button class="v2" cmd="aspmo_setting/crontab_restart">Прервать выполнение текущего задания</button>
             </td>
         </tr>
     </table></form><br>
     <h2>Задания планировщика</h2>
     <form><table class="basic fz_small full auto"><tr><th>Активно</th><th>Статус</th><th>Расписание</th><th>Наименование</th><th>Время последнего запуска</th><th>Длительнось выполнения</th><th>Операция</th></tr>
         <?
            $list_crontab=execSQL('select pkey,enabled,cmd,obj_name,last_exec,last_exec_end,time_exec,intr,default_intr,status from obj_site_crontab order by intr') ;
            if (_sizeof($list_crontab)) foreach($list_crontab as $rec)
            {
                list($type,$hour,$min) = $c_ajax->get_type_and_time($rec['intr']);
                if ($hour and $hour < 10) $hour = '0'.$hour;
                else if (!$hour) $hour = '00';
                if ($min and $min < 10) $min = '0'.$min;
                else if (!$min) $min = '00';
                if ($type == 0) $timetable = get_case_by_count_1_2_5($min,'каждую минуту,каждые '.$min.' минуты,каждые '.$min.' минут').' ';
                else if ($type == 1) $timetable = 'каждый час, в '.$min.' минут';
                else if ($type == 2) $timetable = get_case_by_count_1_2_5($hour,'каждый час,каждые '.$hour.' часа,каждые '.$hour.' часов').' ';
                else $timetable = 'раз в сутки, в '.$hour.':'.$min; ?>
                <tr>
                  <td><input type="checkbox" class="v2" cmd="aspmo_setting/change_cron_work_status" id="<?echo $rec['pkey']?>" cron_cmd="<?echo $rec['cmd']?>" <?if ($rec['enabled']) echo 'checked'?>></td>
                  <td><?echo ($rec['status'])? 'Выполняется':'Ожидает'?></td>
                  <td><?echo $timetable?> <a class="v2" cmd="aspmo_setting/edit_timetable" cron_id="<?echo $rec['pkey']?>" cron_name="<?echo $rec['obj_name']?>"><i class="fas fa-pencil-alt"></i></a>
                      <?if ($rec['default_intr']) echo '<p class="red">Рекомендуется:<br>'.$rec['default_intr'].'</p>'?>
                  </td>
                  <td class="left"><?echo $rec['obj_name']?></td>
                  <td><?echo ($rec['last_exec'])? date('d.m.Y H:i:s',$rec['last_exec']):'-'?></td>
                  <td><?echo ($rec['time_exec'])? $rec['time_exec'].'c.':'-'?></td>
                  <td><a href="/cab/setting/crontab/exec/<?echo $rec['pkey']?>/" target="_blank" cron_cmd="<?echo $rec['cmd']?>">Выполнить задание</a></td>
               </tr><?
            }
         ?>
     </table></form><br><br>
     <style>
         i.fas.fa-pencil-alt {font-size: 20px;float: right;}
         a {color: #2da5da;}
     </style>

     <?

     include_once(_DIR_EXT.'/log/report_log_events.php') ;
     $report_obj=new report_log_events() ;
     $report_obj->filter['actions']=array('exec_crontab'=>1) ;
     $report_obj->view(array('limit'=>'limit 0,30')) ;
 }



}



?>
