<?
// утилита удаляет дубликаты сообщений, возникшие в результате присуствия скрытых мероприятий (невидимых для админа, без group_id)
include(_DIR_TO_MODULES.'/engine/i_backgroup_process.php') ;
class c_services_magnit_remove_dublicate_message extends i_backgroup_process_exec
{
	function exec()
    { $event_docs_main_id='36' ; // ID дубликатов меропримятий выдачи направлений по АГ
       $event_docs_dubl_id='37,100,103,106' ; // ID дубликатов меропримятий выдачи направлений по АГ
       $events_pass_tkey='302,308' ; // TKEY таблицы obj_site_events_pass
       $personal_mess_tkey='293,288' ; // TKEY таблицы obj_site_events_pass


       // проставляем в документах event_pass от мероприятия 36
       $recs_docs=execSQL_row('select t1.pkey as event_pass_id,t2.pkey as doc_id 
                           from obj_site_events_pass t1 
                           left join obj_site_docs t2 on t2.pkey=t1.doc_id
                           where t1.event_id='.$event_docs_main_id.' and t2.source_pkey!=t1.pkey
                          ') ;
	   FILE_LOG()->append('Будет исправлено pass_id в <strong>'.sizeof($recs_docs).'</strong> документах<br>') ;

	   if (sizeof($recs_docs)) foreach($recs_docs as $pass_id=>$doc_id) execSQL_update('update obj_site_docs set source_pkey='.$pass_id.' where pkey='.$doc_id) ;

       $recs_mess=execSQL_line('select pkey from obj_site_personal_mess where source_pkey in (select pkey from obj_site_events_pass where event_id in ('.$event_docs_dubl_id.')) and source_tkey in ('.$events_pass_tkey.')') ;
	   FILE_LOG()->append('Будет удалено <strong>'.sizeof($recs_docs).'</strong> дубликата сообщения<br>') ;
	   $i=0 ;
       if (sizeof($recs_mess)) foreach($recs_mess as $mess_id)
           {   $i++ ;
           	   // удаляем сообщение
               execSQL_update('delete from obj_site_personal_mess where pkey='.$mess_id) ;
               // удаяем всю историю по сообщению
               //execSQL_update('delete from obj_site_mo_log where reffer1="'.$mess_id.'.'.$personal_mess_tkey.'"') ;
	           FILE_LOG()->append('Удален дубликат сообщения - <strong>'.$i.'</strong> из  <strong>'.sizeof($recs_mess).'</strong><br>') ;
           }

	   FILE_LOG()->append('Будут удалены дубликаты записей по участию в мероприятии выдачи документов<br>') ;
       $cnt=execSQL_update('delete from obj_site_events_pass where event_id in ('.$event_docs_dubl_id.')',array('log_result'=>0)) ;
	   FILE_LOG()->append('Удалены дубликаты записей по участию в мероприятии выдачи документов - <strong>'.$cnt.'</strong><br>') ;

	   FILE_LOG()->append('Будут отключены мероприятия-дубликаты<br>') ;
       $cnt=execSQL_update('update obj_site_events_schedule set enabled=0 where (group_id is null or group_id=0)',array('log_result'=>0)) ;
	   FILE_LOG()->append('Отключены мероприятия-дубликаты - <strong>'.$cnt.'</strong><br>') ;
       //execSQL_update('update obj_site_events_schedule set enabled=1 where pkey=36',array('log_result'=>1)) ;
    }

}

?>