<?php
/*
//*************************************************************************************
//    Фрагмент кода контроля наличия данных в таблицах для работоспособности приожения
//*************************************************************************************
************************************
СПИСКИ МАССИВОВ ОБОЗНАЧЕНИЙ ТАБЛИЦ:
***********************************
$контрольгэс_поля
$гэс_поля
$гэс_сын_поля
$телеграммы_поля
$контрольлед_поля
$толщина_льда_поля
$толщина_льда_сын_поля
$контрольуровней_поля
$уровни_поля
$уровни_сын_поля
$контрольлед_явл_поля
$контрольлед_явл_сын_поля
$ледовые_поля
$ледовые_сын_поля
$ледовые_внук_поля
*******************************************************
СПИСКИ МАССИВОВ ОБОЗНАЧЕНИЙ ТАБЛИЦ-ДАННЫХ (СПРАВОЧНИКИ)
*******************************************************
$посты_поля100
$посты_сын_поля100
$час_поля100
$тренд_поля100
$гэс_поля100
$объекты_поля100
$интенсивность_ледовых_поля100
*/
$os2="";
$os3="";
$iob=1;                                     // индекс обозначения в строке заголовков   
$isz=3;                                     // индекс строки заголовков в файле свойств
//**********************************************************************************************
function koboz($p)   // ФУНКЦИЯ КОНТРОЛЯ НАЛИЧИЯ ОБОЗНАЧЕНИЙ В ТАБЛИЦЕ  $p  - имя файла свойств
//**********************************************************************************************
{
 global $ttab;                                           // массив обозначений  требуемых
 global $ttab2;                                          // массив обозначений  всех
 global $os2;                                            // текст ошибок 
 global $it;											 // имя таблицы	
 global $names;										     // список требуемых обозначений
 global $iob;                                            // индекс обозначения в строке заголовков   
 global $isz;                                            // индекс строки заголовков в файле свойств
 if  (!file_exists($p)) 
{$os2=$os2."Нет таблицы ".$it."  или ее некомплект.<hr>"; }
else
{
 $mn=explode(",",$names);                                // список необходимых обозн в массив
 array_splice ($ttab,0);                                 // зачистим массив необходимых обозначений
 array_splice ($ttab2,0);                                // зачистим массив всех обозначений
 for ($i = 0; $i <= count($mn)-1; $i++) 
 {$ttab[$mn[$i]]=0;}
 $свойства = file($p); 	                                         // читаем файл свойств
 $mms=explode("```",str_replace("\r\n","",$свойства[$isz]));     // строку заголовков+свойства на столбцы
 for ($i = 0; $i <= count($mms)-1; $i++)                                  
 {$mms2=explode("/",$mms[$i]);                    // столбец на параметры 0 текст заголовка 1- обозначение
  $ttab2[$i]=$mms2[$iob];
  if (array_key_exists ($mms2[$iob], $ttab))      // если это обозначение нужно
 {if ($ttab[$mms2[$iob]]==0)                      // если оно первое
 {$ttab[$mms2[$iob]]=$i;                          // установим  соответствие обозначение номер столбца   
 }
 else                                             // одинаковые обозначения - ошибка   
 {
 $os2=$os2."Повторение обозачения '".$mms2[$iob]."' в таблице '".$it."' (".$p.")<hr>";
 }}}
// все обознчения найдены ?
reset($ttab); 
for ($i = 0; $i <=count($ttab)-1 ; $i++)       // каждую строку массива контроль ледовых
{$val=current($ttab);                          // текущая запись получим
if ($val==0)                                   // если обозначение не найдено
{
$os2=$os2."В таблице '".$it."' (".$p.") должно быть обозначение '".key($ttab)."'<hr>";
}
next($ttab);
}}}


//*********************************************************************************************************
//                           Т А Б Л И Ц Ы
//*********************************************************************************************************
$poz=strpos(getcwd ( ),"pages");
$ttab =array();
$ttab2 =array();

//***************
// Общие данные
//***************
$it="Общие данные";
$names="имя,значение";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/12,01,17_06/1s/0.txt";
koboz($f);                                                     // контроль обозначения
$общие_данные_поля=$ttab;       // контролируемые обязательные столбцы
$общие_данные_поля2=$ttab2;     // все столбцы

//************************************
//  ТАБЛИЦА ОБЩИХ ДАННЫХ СОДЕРЖИМОЕ
//***********************************
/*
$общие_данные["Last"]="";
$общие_данные["Grin"]="";
//$общие_данные["Hrefs"]="";
$scr=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/12,01,17_06/1.txt";
if  (!file_exists($scr))                     // если нет файла общих данных
{$os2=$os2."Нет файла общих данных ".$scr."<hr>";}
else
{$fod=file($scr); 	                          // страницу в массив
for ($i = 0; $i <= count($fod)-1; $i++)       // содадим асс массив общих данных
{$str=explode("```",str_replace("\r\n","", $fod[$i]));  
if (array_key_exists($str[2], $общие_данные)) 
{$общие_данные[$str[2]]=$str[3];   // значение в массив
}}
// проверим заполненность массива 
reset($общие_данные);                                    // на начало  
for ($i = 0; $i <= count($общие_данные)-1; $i++) 
{$tpost=current($общие_данные); 
if ($tpost=="")
{$os2=$os2."В таблице общих данных в 2 столбце нет ключа ".key($общие_данные)." <br>или в 3 столбце нет его значения <hr>";
}
next($общие_данные);   
}}
*/
//***************
// Контроль ГЭС
//***************
$it="Контроль ГЭС";
$names="индекс,наименование,дата,час,получено,ошибки,1HHHвб,4HHHнб,1QQQо,4QQQо,7QQQсб,2QQQб,2HHHс,3HHHкс,5HHHв,6HHHн,";
$names=$names."7VVVс,8VVVкс,3QQQа,5QQQб,6QQQа,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_04/1s/0.txt";
koboz($f);                                                     // контроль обозначения
$контрольгэс_поля=$ttab;
$контрольгэс_поля2=$ttab2;
//*********
//   ГЭС
//*********
$it="ГЭС";
$names="индекс,наименование,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_004/1s/0.txt";      
koboz($f);
$гэс_поля=$ttab;
$гэс_поля2=$ttab2;

//---------------
//сын таблицы ГЭС
//---------------
$it="ГЭС сын";
$names="дата,час,ошибки,1HHHвб,4HHHнб,1QQQо,4QQQо,7QQQсб,2QQQб,2HHHс,3HHHкс,5HHHв,6HHHн,";
$names=$names."7VVVс,7VVVс,8VVVкс,3QQQа,5QQQб,6QQQа,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_004/2s/0.txt";      
koboz($f);
$гэс_сын_поля=$ttab;
$гэс_сын_поля2=$ttab2;
//*************
// Телеграммы
//************
$it="Телеграммы";                       
$names="получено,текст,текстп,ошибки,разобрано"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_03/1s/0.txt";      
koboz($f);
$телеграммы_поля=$ttab;
$телеграммы_поля2=$ttab2;
//**********************
// Контроль толщины льда
//***********************
$it="Контроль толщины льда ";
//************************
$names="индекс,наименование,дата,час,толщина,цифра_кода,цифра_кода,снег,получено,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_02/1s/0.txt";      
koboz($f);
$контрольлед_поля=$ttab;
$контрольлед_поля2=$ttab2;
//******************
//  Толщина льда
//******************
$it="Толщина льда";
$names="индекс,наименование,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_002/1s/0.txt";      
koboz($f);
$толщина_льда_поля=$ttab;
$толщина_льда_поля2=$ttab2;
//-------------------------
//сын таблицы Толщина льда
//-------------------------
$it="Толщина льда сын";
$names="дата,час,ошибки,снег,толщина,цифра_кода"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_002/2s/0.txt";      
koboz($f);
$толщина_льда_сын_поля=$ttab;
$толщина_льда_сын_поля2=$ttab2;
//**********************
// Контроль уровней
//**********************
$it="Контроль уровней";
//************************
$names="индекс,наименование,дата,час,уровень,изменение,тренд_код,тренд_значение,20_час,получено,ошибки,tводы,tвоздуха"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_01/1s/0.txt";      
koboz($f);
$контрольуровней_поля=$ttab;
$контрольуровней_поля2=$ttab2;
//**********************
// Уровни
//**********************
$it="Уровни";
$names="индекс,наименование"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_001/1s/0.txt";      
koboz($f);
$уровни_поля=$ttab;
$уровни_поля2=$ttab2;
//-------------
// Уровни СЫН
//-------------
$it="Уровни сын";
$names="дата,час,уровень,изменение,тренд_код,тренд_значение,20_час,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_001/2s/0.txt";      
koboz($f);
$уровни_сын_поля=$ttab;
$уровни_сын_поля2=$ttab2;

//**********************
// Уровни от АВТОМАТА
//**********************
$it="Уровни автомат";
$names="индекс,индекс2,дата_формат,наименование,из,агк,от_а,до_а,точек_а,вход,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/16,08,18_007/1s/0.txt";      
koboz($f);
$уровни_автомат_поля=$ttab;
$уровни_автомат_поля2=$ttab2;

//------------------------
// Уровни СЫН от АВТОМАТА
//------------------------
$it="Уровни сын автомат";
$names="дата,уровни,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/16,08,18_007/2s/0.txt";      
koboz($f);
$уровни_сын_автомат_поля=$ttab;
$уровни_сын_автомат_поля2=$ttab2;

//****************************
// Контроль ледовые явления
//****************************
$it="Контроль ледовые явления";
$names="индекс,наименование,дата,час,получено,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_003/1s/0.txt";      
koboz($f);
$контрольлед_явл_поля=$ttab;
$контрольлед_явл_поля2=$ttab2;
//-----------------------------
//Контроль ледовые явления СЫН
//-----------------------------
$it="Контроль ледовые явления сын";
$names="кодовое_число,характеристика,интенсивность_код,интенсивность,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_003/2s/0.txt";      
$mf=file($f);
$mms=explode("```",str_replace("/r/n","",$mf[$isz]));
koboz($f);
$контрольлед_явл_сын_поля=$ttab;
$контрольлед_явл_сын_поля2=$ttab2;
//******************
// Ледовые явления
//******************
$it="Ледовые явления";
$names="индекс,наименование,ошибки";
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_0001/1s/0.txt";  
koboz($f);
$ледовые_поля=$ttab;
$ледовые_поля2=$ttab2;
//-------------------
//Ледовые явления СЫН
//-------------------
$it="Ледовые явления сын";
$names="дата,час,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_0001/2s/0.txt";      
koboz($f);
$ледовые_сын_поля=$ttab;
$ледовые_сын_поля2=$ttab2;
//-------------------
//Ледовые явления ВНУК
//-------------------
$it="Ледовые внук";
$names="кодовое_число,характеристика,интенсивность_код,процент,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_0001/3s/0.txt";      
koboz($f);
$ледовые_внук_поля=$ttab;
$ледовые_внук_поля2=$ttab2;



//------------------------
// Контроль автомат ГЭС
//------------------------
$it="Контроль автомат ГЭС";
$names="xml,индекс,индекс2,наименование,дата_время,уровень,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/18,09,18_08/1s/0.txt";      
koboz($f);
$контроль_автомат_гэс_поля=$ttab;
$контроль_автомат_гэс_поля2=$ttab2;

//------------------------
// Контроль автомат
//------------------------
$it="Контроль автомат";
$names="xml,индекс,индекс2,наименование,дата_время,уровень,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/17,09,18_07/1s/0.txt";      
koboz($f);
$контроль_автомат_поля=$ttab;
$контроль_автомат_поля2=$ttab2;






//------------------------
// Уровни автомат ГЭС
//------------------------
$it="Уровни автомат ГЭС";
$names="индекс,индекс2,дата_формат,наименование,откуда,агк,от_гэс_а,до_гэс_а,точек_гэс_а,вход,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/18,09,18_008/1s/0.txt";      
koboz($f);
$уровни_автомат_гэс_поля=$ttab;
$уровни_автомат_гэс_поля2=$ttab2;

//------------------------
// Уровни автомат ГЭС сын
//------------------------
$it="Уровни автомат ГЭС сын";
$names="дата,уровни,ошибки"; 
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/18,09,18_008/2s/0.txt";      
koboz($f);
$уровни_автомат_гэс_сын_поля=$ttab;
$уровни_автомат_гэс_сын_поля2=$ttab2;





//**************************************************************************
//2                      Т А Б Л И Ц Ы    З Н А Ч Е Н И Й
//**************************************************************************
// посты
//***********
$it="посты в 100";
$names="индекс,пост,объект,судоход,пойма,неблаго,опасно,от,до";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,11,17_002/1s/0.txt";      
koboz($f);
$посты_поля100=$ttab;
$посты_поля100_2=$ttab2;
//-----------
// посты сын
//-----------
$it="посты в 100 сын";                        // имя таблицы контроля
$names="граф,выход,нач,кон,max,min,место"; 
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,11,17_002/2s/0.txt";      
koboz($f);                                                     // контроль обозначения
$посты_сын_поля100=$ttab;
$посты_сын_поля100_2=$ttab2;
//*******
// час
//*******
$it="Час";                        // имя таблицы контроля
$names="час";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/27,04,17_03/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$час_поля100=$ttab;
$час_поля100_2=$ttab2;
//***********************
//тренд_изменения_уровня
//**********************
$it="тренд изменения уровня в 100";
$names="тренд_код,тренд";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/27,04,17_04/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$тренд_поля100=$ttab;
$тренд_поля100_2=$ttab2;
//********
//гэс
//*******
$it="гэс в 100";
$names="индвб,поствб,обсвб,обснб"; 
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/12,07,18_003/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$гэс_поля100=$ttab;
$гэс_поля100_2=$ttab2;

//********
//гэс сын
//*******
$it="гэс сын в 100";
$names="нпу,умо,граф,выход,место"; 
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/12,07,18_003/2s/0.txt";      
koboz($f);                                                     // контроль обозначения
$гэс_сын_поля100=$ttab;
$гэс_сын_поля100_2=$ttab2;

//********
//объекты
//********
$it="объекты в 100";
$names="объект,индекс,top,left";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,10,17_001/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$объекты_поля100=$ttab;
$объекты_поля100_2=$ttab2;
//-------------
// объекты сын
//-------------
$it="объекты в 100 сын";
$names="coords";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,10,17_001/2s/0.txt";      
koboz($f);                                                     // контроль обозначения
$объекты_сын_поля100=$ttab;
$объекты_сын_поля100_2=$ttab2;
//*********************
//интенсивность_ледовых
//*********************
$it="интенсивность ледовых в 100";
$names="интенсивность_код,процент";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,05,17_07/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$интенсивность_ледовых_поля100=$ttab;
$интенсивность_ледовых_поля100_2=$ttab2;
//****************
//ледовые явления
//****************
$it="ледовые в 100";
$names="кодовое_число,характеристика,интенсивность_есть,допустимо";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/02,05,17_06/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$ледовые_поля100=$ttab;
$ледовые_поля100_2=$ttab2;

//***************************
// высота снега на льду
//***************************
$it="толщина льда в 100";
$names="код,высота";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/27,04,17_05/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$высота_снега100=$ttab;
$высота_снега100_2=$ttab2;


//***************************
// АГК
//***************************
$it="АГК в 100";
$names="агк";
$f=substr(getcwd ( ), 0, $poz)."pages/100/contents/15,08,18_08/1s/0.txt";      
koboz($f);                                                     // контроль обозначения
$агк100=$ttab;
$агк100_2=$ttab2;

//****************************************************
// проверка уникальности индексов в уровнях и ГЭС 
//****************************************************
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/10,08,16_001/1.txt";    // файл уровней
$mti = file($f); 	                                                            // таблицу в массив
$индексы_уровни_и_гэс =array();                               // массив индексов уровни+ГЭС
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
if (array_key_exists($tiz[$уровни_поля["индекс"]], $индексы_уровни_и_гэс))   // если повтор индексов
{$os2="Повтор индекса ".$tiz[$уровни_поля["индекс"]]. " в таблице уровней";
break;
}
else
{$индексы_уровни_и_гэс[$tiz[$уровни_поля["индекс"]]]=0;       // ключ - индекс значение 0 для контроля повторов индексов
}
}
// файл ГЭС для  определения списка реальных постов
$f=substr(getcwd ( ), 0, $poz)."pages/Na~chalo/contents/11,08,16_004/1.txt";    // файл ГЭС
$mti = file($f); 	                                                            // таблицу в массив
for ($i = 0; $i <= count($mti)-1; $i++) 
{$tiz=explode("```",str_replace("\r\n","",$mti[$i]));
if (array_key_exists($tiz[$гэс_поля["индекс"]], $индексы_уровни_и_гэс))   // если повтор индексов
{
//echo "<br>".$гэс_поля["индвб"];
//print_r($tiz);
$os2="Повтор индекса ".$tiz[$гэс_поля["индекс"]]. " в таблице  ГЭС";
break;
}
else
{$индексы_уровни_и_гэс[$tiz[$гэс_поля["индекс"]]]=0;       // ключ - индекс значение 0 для контроля повторов индексов
$индексы_гэс[$tiz[$гэс_поля["индвб"]]]=0;
}
}



?>
