<?php
/* переместить данные предидущего года в архив
база сохраняется в папках с префиксом 03,03,03
*/ 
function apx()                                       // главная функция
{
// определим предидущий год
$today = getdate(); 
$pgod=$today["year"]-1;
ini_set('max_execution_time', 1800);
list($abs1, $s2) = explode("pages",getcwd( ));
if (false)   //(file_exists($abs1."pages/".$pgod."/contents/0/"))       
{echo "<h1 style='text-align:center'>Архив год ".$pgod." УЖЕ СОЗДАН !</h1>";
return;
}
// данные предидущей архивации должны быть удалены
$os="";
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_001/"))       
{$os=$os."001,";
}
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_007/"))       
{$os=$os."007,";
}
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_004/"))       
{$os=$os."004,";
}
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_008/"))       
{$os=$os."008,";
}
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_002/"))       
{$os=$os."002,";
}
if (file_exists($abs1."pages/Na~chalo/contents/03,03,03_0001/"))       
{$os=$os."0001,";
}
if ($os!="")
{echo "<br><br><b>В папке pages/Na~chalo/contents/ суффикс 03,03,03_ находятся папки предидущей архивации с подсуффиксами:".$os.
" удали эти папки и повтори архивацию !</b>";
return;
}
apx22("10,08,16_001",$pgod);    // уровни
apx22("16,08,18_007",$pgod);    // уровни автомат
apx22("11,08,16_004",$pgod);    // уровни ГЭС
apx22("18,09,18_008",$pgod);    // уровни автомат ГЭС
apx22("10,08,16_002",$pgod);    //толщина льда 
apx22("10,08,16_0001",$pgod);   //ледовые явления
echo "<h3 style='text-align:center'>Архив год ".$pgod." создан !</h3>";
echo "<h3 style='text-align:center'>База сохранена в папках с префиксом 03,03,03 !</h3>";
mkdir($abs1."pages/".$pgod."/contents/0/");           // папка признак созданного архива
}

//********************************************************************************
function apx22($p,$godp)       //ледовые явления 
//********************************************************************************
{
list($abs1, $s2) = explode("pages",getcwd( ));
list($dd, $nn) = explode("_",$p);
// 10,08,16_001  уровни
// 16,08,18_007 уровни автомат
// 11,08,16_004 уровни ГЭС
// 18,09,18_008 уровни автомат ГЭС
// 10,08,16_002 толщина льда
// 10,08,16_0001 ледовые явления
$ttab="";
if ($nn=="001")
{$ttab="уровни";}
else if ($nn=="007")
{$ttab="уровни автомат";}
else if ($nn=="004")
{$ttab="уровни ГЭС";}
else if ($nn=="008")
{$ttab="уровни автомат ГЭС";}
else if ($nn=="002")
{$ttab="толщина льда";}
else if ($nn=="0001")
{$ttab="ледовые явления";}
if  (!file_exists($abs1."pages/Na~chalo/contents/".$p."/1.txt"))  
{echo "<h1 style='text-align:center'>В базе нет таблицы '".$ttab."' !</h1>";
return;
}
// создадим папку текущего года 02,02,02_0001 копирование всех кроме числовых из 10,08,16_0001
dircpy('',
$abs1."pages/Na~chalo/contents/".$p."/",
$abs1."pages/Na~chalo/contents/02,02,02_".$nn."/",
true);
rename(
$abs1."pages/Na~chalo/contents/02,02,02_".$nn."/".$p."/",
$abs1."pages/Na~chalo/contents/02,02,02_".$nn."/02,02,02_".$nn."/"
);	 
$iob=1;               // индекс обозначения в строке заголовков 
$isz=3;               // индекс строки заголовков в файле свойств  
//$p2=$pgod;
//$godp=$p2;
$godt="Na~chalo";
//*******************************************************
//                       перемещаем данные
//*******************************************************
//  СЫН от телеграмм
$names="дата";
$свойства = file($abs1."pages/".$godt."/contents/".$p."/2s/0.txt");
$mms=explode("```",str_replace("\r\n","",$свойства[$isz]));
for ($i = 0; $i <= count($mms)-1; $i++)                                  
{$mms2=explode("/",$mms[$i]);
$сын_поля[$mms2[$iob]]=$i;
}
$otkuda=$abs1."pages/Na~chalo/contents/".$p."/";                   // текщие данные откуда
$kuda=$abs1."pages/".$godp."/contents/".$p."/";                    // куда (архив пред года)

//**************************************************************
// читаем текущую и пишем в архив  только данные архивного года
//**************************************************************
$otkuda2=$otkuda."1.txt";
$kuda2=$kuda."1.txt";

$ot = file($otkuda2); 	                                        // текущие уровни 
$ku = fopen($kuda2, 'w') or exit;                               // архивные уровни
for ($i =0; $i <=count($ot)-1; $i++)                            // все посты 
{
$fot2=str_replace("1.txt",($i+1)."/1.txt",$otkuda2);
if  (file_exists($fot2))                                        // есть папка сына текущего  
{
$ot2=file($fot2);                                               // сын- даты текущие
$pkuda2=$kuda.($i+1)."/";                                       // папка   сына (даты) 
if  (!file_exists($pkuda2))                                     // если папки сына нет создадим ее !!! 
{mkdir($pkuda2);}                                               // создадим ее
$fku2=$pkuda2."1.txt";
$ku2=fopen($fku2,'w') or exit;                                  // даты архивные

//**********************************
// переместим в архив даты (у сына) 
//**********************************
$k=1;
for ($i2 =0; $i2 <=count($ot2)-1; $i2++)                       // все даты текущие
{
//echo $ot2[$i2]."<hr>";
$tekd=explode("```",str_replace("\r\n","",$ot2[$i2]));      
list($d,$m,$g)=explode(".",$tekd[$сын_поля['дата']]);
if ($g==$godp)
{
$tekd[0]=$k;
fwrite($ku2,implode("```", $tekd)."\r\n");                      // пишем дату

if ($p=="10,08,16_0001")                                        // если ледовые явления - есть внук
{$pot3=str_replace("1.txt",($i2+1)."/",$fot2);                  // папка внука 
if  (file_exists($pot3))                                        // если папка внука есть 
{
$fot3=$pot3."1.txt";
$ot3=file($fot3);                                               // читаем ледовые
$pkuda3=$pkuda2.$k."/";  
if  (!file_exists($pkuda3))                                     // если папки внука в архиве нет 
{mkdir($pkuda3);}                                               // создадим ее
$fku3=$pkuda3."1.txt";                                          // файл внука в архиве
$ku3=fopen($fku3,'w') or exit;                                  // откроем для записи
for ($i3 =0; $i3 <=count($ot3)-1; $i3++)                        // все даты текущие
{fwrite($ku3,$ot3[$i3]);                                         //  пишем ледовое в архив
}
fclose($ku3);                                                   // закрыли файл ледовых в архиве
}}
$k++;
}}
fclose($ku2);                                                   // закрыли даты
}
fwrite($ku,$ot[$i]);                                            //  пишем дату в архив только пред года
}
fclose($ku);  


$otkuda=$abs1."pages/Na~chalo/contents/".$p."/";                   // текщие данные откуда
$kuda=$abs1."pages/Na~chalo/contents/02,02,02_".$nn."/";           // куда (архив пред года)

//**************************************************************
// читаем текущую и пишем в текущую
//**************************************************************
$otkuda2=$otkuda."1.txt";
$kuda2=$kuda."1.txt";

$ot = file($otkuda2); 	                                        // текущие уровни 
$ku = fopen($kuda2, 'w') or exit;                               // архивные уровни
for ($i =0; $i <=count($ot)-1; $i++)                            // все посты 
{
$fot2=str_replace("1.txt",($i+1)."/1.txt",$otkuda2);
if  (file_exists($fot2))                                        // есть папка сына текущего  
{
$ot2=file($fot2);                                               // сын- даты текущие
$pkuda2=$kuda.($i+1)."/";                                       // папка   сына (даты) 
if  (!file_exists($pkuda2))                                     // если папки сына нет создадим ее !!! 
{mkdir($pkuda2);}                                               // создадим ее
$fku2=$pkuda2."1.txt";
$ku2=fopen($fku2,'w') or exit;                                  // даты архивные

//**********************************
// переместим в архив даты (у сына) 
//**********************************
$k=1;
for ($i2 =0; $i2 <=count($ot2)-1; $i2++)                       // все даты текущие
{
//echo $ot2[$i2]."<hr>";
$tekd=explode("```",str_replace("\r\n","",$ot2[$i2]));      
list($d,$m,$g)=explode(".",$tekd[$сын_поля['дата']]);
if ($g!=$godp)
{
$tekd[0]=$k;
fwrite($ku2,implode("```", $tekd)."\r\n");                      // пишем дату
if ($p=="10,08,16_0001")                                        // если ледовые явления - есть внук
{$pot3=str_replace("1.txt",($i2+1)."/",$fot2);                  // папка внука 
if  (file_exists($pot3))                                        // если папка внука есть 
{
$fot3=$pot3."1.txt";
$ot3=file($fot3);                                               // читаем ледовые
$pkuda3=$pkuda2.$k."/";                                    // папка  внука в архиве  
if  (!file_exists($pkuda3))                                     // если папки внука в архиве нет 
{mkdir($pkuda3);}                                               // создадим ее
$fku3=$pkuda3."1.txt";                                          // файл внука в архиве
$ku3=fopen($fku3,'w') or exit;                                  // откроем для записи
for ($i3 =0; $i3 <=count($ot3)-1; $i3++)                        // все даты текущие
{fwrite($ku3,$ot3[$i3]);                                         //  пишем ледовое в архив
}
fclose($ku3);                                                   // закрыли файл ледовых в архиве
}}
$k++;
}}
fclose($ku2);                                                   // закрыли даты
}
fwrite($ku,$ot[$i]);                                            //  пишем дату в архив только пред года
}
fclose($ku);  
// текущую с пред и тек 10,08,16_0001 переименовываем в 03,03,03_0001
rename(
$abs1."pages/Na~chalo/contents/".$p."/",
$abs1."pages/Na~chalo/contents/03,03,03_".$nn."/"
);	 
rename(
$abs1."pages/Na~chalo/contents/03,03,03_".$nn."/".$p."/",
$abs1."pages/Na~chalo/contents/03,03,03_".$nn."/03,03,03_".$nn."/");	 
 
// без предидущего 02,02,02_0001 переименовываем в текущую 10,08,16_0001
rename(
$abs1."pages/Na~chalo/contents/02,02,02_".$nn."/",
$abs1."pages/Na~chalo/contents/".$p."/"
);	 
rename(
$abs1."pages/Na~chalo/contents/".$p."/02,02,02_".$nn."/",
$abs1."pages/Na~chalo/contents/".$p."/".$p."/"
);	 
}
// копируем все файлы и папки кроме папок с числами
function dircpy($basePath, $source, $dest, $overwrite = false){
    if(!is_dir($basePath . $dest)) //Lets just make sure our new folder is already created. Alright so its not efficient to check each time... bite me
    mkdir($basePath . $dest);
    if($handle = opendir($basePath . $source)){        // if the folder exploration is sucsessful, continue
        while(false !== ($file = readdir($handle))){ // as long as storing the next file to $file is successful, continue
            if($file != '.' && $file != '..'){
                $path = $source . '/' . $file;
                if(is_file($basePath . $path)){
                    if(!is_file($basePath . $dest . '/' . $file) || $overwrite)
                    if(!@copy($basePath . $path, $basePath . $dest . '/' . $file)){
                        echo '<font color="red">File ('.$path.') could not be copied, likely a permissions problem.</font>';
                    }
                } elseif(is_dir($basePath . $path)){
                    if(!is_dir($basePath . $dest . '/' . $file))
if (!is_numeric ($file))
{mkdir($basePath . $dest . '/' . $file); // make subdirectory before subdirectory is copied
 dircpy($basePath, $path, $dest . '/' . $file, $overwrite); //recurse!
}
					}
            }
        }
        closedir($handle);
    }
} 




?>
