<?php
//***************************************************************************************
// Функционал серверной части таблицы "Контроль толщина льда  "
// Функции вызываются нажатием кнопок в таблице и при выполнении полного цикла действий
// modules/raz_con_base.php
//***************************************************************************************
list($abs1, $s2) = explode("pages",getcwd( ));
include $abs1."/script/cdat.php";                     // вставим функцию контроля даты времени
//***************************************************************************************
   function kt_button11($p)
// Контроль  данных таблицы "Контроль толщина льда"
//*************************************************************************
{global $контрольлед_поля;
 global $толщина_льда_поля;
 global $час_поля100;
 global $высота_снега100;
 global $толщина_льда_сын_поля2;
 global $abs1;
 // индексы и наименования таблицы "Толщина льда"
$f=$abs1."pages/Na~chalo/contents/10,08,16_002/1.txt";      
$mti = file($f); 	                                    // таблицу в массив
$k=0;                                                   // всего ошибочных строк
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
$индексы[$tiz[$толщина_льда_поля['индекс']]]=$tiz[$толщина_льда_поля['наименование']];
}
$f=$abs1."pages/100/contents/27,04,17_03/1.txt";      
$mti = file($f); 	                                         // таблицу "час" в массив
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
$индексы2[$tiz[$час_поля100['час']]]=$i;
}
$f=$abs1."pages/100/contents/27,04,17_05/1.txt";      
$mti = file($f); 	                                         // таблицу "Высота снега на льду "
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
$индексы3[$tiz[$высота_снега100['код']]]=$tiz[$высота_снега100['высота']];
}
$fmrep=$abs1."pages/Na~chalo/contents/11,08,16_02/1.txt";    // файл таблицы "Контроль толщина льда"
$mrep2 = file($fmrep); 	                                      // корректируемый файл  
$w = fopen($fmrep, 'w') or exit;   
for ($ii = 0; $ii <= count($mrep2)-1; $ii++)                  // каждую строку "Контроль толщина льда"
{$pre=explode("```",str_replace("\r\n","",$mrep2[$ii]));
$os="";                                                        // текст ошибки в строке 
if (!array_key_exists($pre[$контрольлед_поля['индекс']],$индексы)) 
{$os=$os." Нет поста";
$pre[$контрольлед_поля['наименование']]="";
}
else                                    // откорректируем или введем наименование
{$pre[$контрольлед_поля['наименование']]=$индексы[$pre[$контрольлед_поля['индекс']]];
}
if ($pre[$контрольлед_поля['дата']]=="")
{$os=$os." Нет даты";}
else
{$mdat=explode(".",$pre[$контрольлед_поля['дата']]);
if (count($mdat)!=3)
{$os=$os." Неформат даты";}
else
{$месяц=$mdat[1];
$число=$mdat[0];
$год=$mdat[2];
if  (!checkdate ($месяц,$число, $год))
{$os=$os." Неформат даты";
}}}
if ($pre[$контрольлед_поля['час']]=="")
{$os=$os." Нет час";}
else
{if (!array_key_exists($pre[$контрольлед_поля['час']],$индексы2)) 
{$os=$os." Час вне списка";
}
}
if ($pre[$контрольлед_поля['цифра_кода']]=="")
{$os=$os." Нет цифра кода";}
else
{if (!array_key_exists($pre[$контрольлед_поля['цифра_кода']],$индексы3)) 
{$os=$os." цифра кода вне списка";
}
else
{$pre[$контрольлед_поля['снег']]=$индексы3[$pre[$контрольлед_поля['цифра_кода']]];	 
}
}
if ($pre[$контрольлед_поля['получено']]=="")
{
$os=$os." Нет получено";
}
else
{
$время=cdat($pre[$контрольлед_поля['получено']],"ЧЧ-ММ-ГГГГ чч:мм:сс");
if($время=="1" or $время=="2" or $время=="3"  or $время=="4"  or $время=="5"  or $время=="6" or $время=="7")
{$os=$os." получено ".$время;
}
}
$толщина=$pre[$контрольлед_поля['толщина']];
if ($толщина=="")
{$os=$os." Нет толщина";}
else
{if(!is_numeric ($толщина))
{$os=$os." толщина не число";}
}
// пишем проконтролированную строку
if ($os!="")
{$k++;}
$pre[$контрольлед_поля['ошибки']]=$os;
fwrite($w,implode("```", $pre)."\r\n"); 
}
if ($p=="tab")              // вызов из таблицы
{ global $soob;	
$soob="Контроль выполнен, ошибок - ".$k;
}
else                       // вызов из главной формы  
{echo  "<li>Контроль выполнен, ошибок - ".$k;
}
fclose($w); 
}
//********************************************************************************************
   function kt_button12($p)
// Перемещение данных без ошибок из  таблицы "Контроль толщина льда" в таблицу "Толщина льда"
//********************************************************************************************
{global $контрольлед_поля;
 global $толщина_льда_поля;
 global $толщина_льда_сын_поля;
 global $толщина_льда_сын_поля2;
 global $soob;	
 global $abs1;
$os="";                                           // тексты ошибок 
//*************************************************************
// Отсортируем "Контроль толщина льда" по Идекс+год+мес+день+час+номер пп
//*************************************************************
//************************************
// массив индексов  в таблице "Толщина льда"
//************************************
$mmti=array(); 
$mmtiz=array(); 
$f=$abs1."pages/Na~chalo/contents/10,08,16_002/1.txt";      
$mti = file($f); 	                             // таблицу "Толщина льда" в массив
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
$mmti[$tiz[1]]=$tiz[0];                            // ключ - индекс значенеие номер по порядку
$mmtiz[$tiz[1]]=$tiz[2];                           // мссив наименований пунктов 
}
$mgk=array(); 
$ftt=$abs1."pages/Na~chalo/contents/11,08,16_02/1.txt";   // файл таблицы  "Контроль толщина льда"
$ku=  file($ftt);                                  // строки "Контроль толщина льда" (МАССИВ СТРОК)
for ($i = 0; $i <= count($ku)-1; $i++)             // по всем строкам
{$ts=str_replace("\r\n","",$ku[$i]);               // уберем конец строки
 $mz=explode("```",$ts);                           // строку на столбцы   
if (trim($mz[$контрольлед_поля["ошибки"]])=="")    // ошибочные строки исключаем
{if (array_key_exists($mz[$контрольлед_поля["индекс"]],$mmti))
{$dd=$mz[$контрольлед_поля["дата"]];               // получим дату
 list($d, $m,$g) = explode(".",$dd);               // разобьем дату 
 // значение в асс массив  индекс+год+мес+день+час+номер пп  значение - указатель на массив строк
$mgk[$mz[$контрольлед_поля["индекс"]].$g.$m.$d.$mz[$контрольлед_поля["час"]].$mz[0]]=$i;
}
else
{if (strstr($os2, $mz[$контрольлед_поля["индекс"]]))
{}
else
{$os2=$os2."Нет индекса ".$mz[$контрольлед_поля["индекс"]]." выполни контроль !<br>";}
}}}
ksort($mgk);                                    // отсортируем по ключу  (по времени N пп) тк возможны повторения
reset($mgk);                                    // на начало  
//********************************************
// удалим повторения  принимается последний
//*******************************************
$mgk2=array(); 
for ($i2 = 0; $i2 <= count($mgk)-1; $i2++)       // индекс+год+мес+день+час
{$wss=current($mgk); 
 $mz=explode("```",$ku[$wss]);                   // строку на столбцы   
 $dd=$mz[$контрольлед_поля["дата"]];             // получим дату
 list($d, $m,$g) = explode(".",$dd);             // разобьем дату 
 // значение в асс массив  год+мес+день+час -> значение индекс на строку в массиве строк
$mgk2[$mz[$контрольлед_поля["индекс"]].$g.$m.$d.$mz[$контрольлед_поля["час"]]]=$wss; //
next($mgk);   
}
ksort($mgk2);                                    // отсортируем по ключу 
reset($mgk2);                                    // на начало  
 
$mgk3=array(); 
for ($i2 = 0; $i2 <= count($mgk2)-1; $i2++)      // сформируем массив ключ - индекс,содержание - указатели через 
{$wss=current($mgk2); 
 $mz=explode("```",$ku[current($mgk2)]);         // строку на столбцы   
 // добавим строки в асс массив  ключ ->индекс, знчения указатели на строки этого индекса
 if (array_key_exists($mz[$контрольлед_поля["индекс"]],$mgk3)) 
 {$mgk3[$mz[$контрольлед_поля["индекс"]]]=$mgk3[$mz[$контрольлед_поля["индекс"]]].",".$wss;
 }
 else
 {$mgk3[$mz[$контрольлед_поля["индекс"]]]=$wss;}
 next($mgk2);   
 }
for ($j = 0; $j <= count($mgk3)-1; $j++)         // для каждого индекса из "Контроль толщина льда"
{// определим файл сына "Толщина льда"
$f=$abs1."pages/Na~chalo/contents/10,08,16_002/".$mmti[key($mgk3)]."/1.txt";
// определим папку сына "Толщина льда"
$f2=$abs1."pages/Na~chalo/contents/10,08,16_002/".$mmti[key($mgk3)]."/";      
if  (!file_exists($f2))                         // если сына "Толщина льда" нет папки
{mkdir($f2);                                    // создадим ее   
}
if  (!file_exists($f))                      // если у сына нет файла
{$ww100=  fopen($f, 'w') or exit;           // создадим пустой файл
fclose($ww100);
}
$mgs=  file($f);                             // читаем сына "Толщина льда"
$mgs_son=array();                            // массив строку сына "Толщина льда"
for ($ii = 0; $ii <= count($mgs)-1; $ii++)   // для каждой из строк сына "Толщина льда"
{$ges_son = explode("```",$mgs[$ii]);        // строку на столбец
$dd=$ges_son[$толщина_льда_сын_поля["дата"]];
list($d, $m,$g) = explode(".",$dd);          // разобьем дату 
$mges_son[$g.$m.$d.$ges_son[$толщина_льда_сын_поля["час"]]]=$mgs[$ii];  // значение в асс массив  год+мес+день+час
}
//массив сына "Толщина льда" сформирован или нет 
//*************************************************************************
// поместим в массив сына данные из массива "Контроль толщина льда" (слияние массивов)
//*************************************************************************
$wss2=current($mgk3);                                // список указателей на строки индекса "Контроль толщина льда"
$wss=explode(",",$wss2);                             // преобразуем в массив 
for ($i = 0; $i <= count($wss)-1; $i++)              // каждую строку массива указателей  
{$ws5=$ku[$wss[$i]];                                 // по указателю получим строку 
 $ws5=str_replace("\r\n","",$ws5);                   // уберем конец строки
 $ws3 = explode("```",$ws5);                         // строку из "Контроль толщина льда" на столбцы 
 $wsn=$i+1;                                          // N пп
 for ($ii = 1; $ii <= count($толщина_льда_сын_поля2)-1; $ii++)           // по всему полям сына уровней
{if (array_key_exists($толщина_льда_сын_поля2[$ii],$контрольлед_поля))   // если по обозначению такой есть в масс контр
{$wsn=$wsn."```".$ws3[$контрольлед_поля[$толщина_льда_сын_поля2[$ii]]];  // поместим его значение в стору сына 
}
else                                          
{$wsn=$wsn."```";                                     // можно было и по умолчанию вставить
}
}
 $dd=$ws3[$контрольлед_поля["дата"]];                 // получим дату из "Контроль толщина льда"
 list($d, $m,$g) = explode(".",$dd);                  // разобьем дату 
 $keykur=$g.$m.$d.$ws3[$контрольлед_поля["час"]];     // ключ строки из "Контроль толщина льда"
$mges_son[$keykur]=$wsn."\r\n";
next($wss);            
}
ksort($mges_son);                               // отсортируем по ключу  слияние
reset($mges_son);                               // на начало  
$w = fopen($f, 'w') or exit;                    // откроем для записи сына
for ($i7 = 0; $i7 <= count($mges_son)-1; $i7++) // каждую строку слияния
{$ws7=current($mges_son);                       // текущая строка
$rez = explode("```",$ws7);                     // на столбцы
$rez[0]=$i7+1;                                  // новый N пп 
fwrite($w,implode("```", $rez));                // пишем  слияние столбцов
next($mges_son);                                // следующая строка слияния
}
fclose($w);                                     // закрыли слияние
array_splice ($mges_son,0);                     // зачистим массив слияния 
next($mgk3);                                    // следующаий индекс массива "Контроль толщина льда"
}
if ($os3!="" || $os2!="")
{}
else
{// из таблицы "Контроль толщина льда" удалим строки без ошибок
$w = fopen($ftt, 'w') or exit;                   // откроем для записи контроль уровней
$k=1;
$kos=0;
for ($i = 0; $i <= count($ku)-1; $i++)           // по всем строкам
{$ts=str_replace("\r\n","",$ku[$i]);             // уберем конец строки
 $mz=explode("```",$ts);                         // строку на столбцы   
if ($mz[$контрольлед_поля["ошибки"]]!="")        // только ошибочные строки сохраним
{$mz[0]=$k++;
fwrite($w,implode("```", $mz)."\r\n");           // пишем 
}
else
{$kos++;}
}
fclose($w);                                     // закрыли
if ($p=="tab")              // вызов из таблицы
{ global $soob;	
$soob="Перемещено в базу ".$kos;
}
else                       // вызов из главной формы  
{echo  "<li>Перемещено в базу - ".$kos;
}
}
}
