<?php
ini_set('display_errors',0);










//Транскрипция на английский
function translitRusToENG($str){
    $tr = array(
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
        "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
        "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
        "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
        "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
        "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
        "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"yi","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya"
    );
    return strtr($str,$tr);
}


function mb_ucfirst($text){
    return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
}



// Добавляет нули к цифре
function todouble($number){
    @$english_format_number = number_format($number, 2, '.', '');
    return @$english_format_number;
}

function showimagefromurl($path){
    $image = $path;
    // Read image path, convert to base64 encoding
    $imageData = base64_encode(file_get_contents($image));

    // Format the image SRC:  data:{mime};base64,{data};
    $src = 'data: '.mime_content_type($image).';base64,'.$imageData;
    return $src;
}

function getimg($url,$id,$path){
    $address = $url;
    $img = $path.'/'.$id;
    file_put_contents($img, file_get_contents($address));
    return $img;
}

function WriteLog($filename,$text){
    $text = trim(preg_replace('/\s\s+/', ' ', $text));
    file_put_contents("LOGS/".$filename.date("ymdH").".txt",date('d.m.y. H:i:s')." ".$text.PHP_EOL,FILE_APPEND);
}

function removefromtext($str,$var1,$var2){
    $first = strrpos($str, $var1);
    $second = strrpos($str, $var2);
    if($first!='' and $second!=''){

        $length = ($second-$first)+4;
    }
    else{
        $length = 0;
    }

    return substr_replace($str, '', $start = $first, $length );
}

function diffdate($date1,$date2){
    $date1n = substr($date1,0,2)."-".substr($date1,2,2)."-".substr($date1,4,2);
    $date2n = substr($date2,0,2)."-".substr($date2,2,2)."-".substr($date2,4,2);
    $curDate = new DateTime($date1n); //Сравниваемая дата (текущая) Сюда нужно передавать дату для сравнения DateTime('2017-06-22').
    $diffDate = new DateTime($date2n); //Дата на 1 месяц меньше текущей (можно '-30 day')
    $difference = $curDate->diff($diffDate);
    //return $date1n;
    return str_replace("+","",$difference->format('%R%a'));
}


function nomden($num){
 if($num[strlen($num)-1] == '1'){
        return 'день';
    } elseif(in_array($num[strlen($num)-1], array(2,3))){
        return 'дня';
    } else {
        return 'дней';
    }
}

function Getdatebeetween($date1, $date2){
    $data1 = date_create_from_format('ymd', $date1);
    $data2 = date_create_from_format('ymd', date( $date2));
    return $diff = (array) date_diff($data1, $data2);
}

function Gethoursbeetween($date1, $date2){
    $data1 = date_create_from_format('ymdHis', $date1);
    $data2 = date_create_from_format('ymdHis', date( $date2));
    return $diff = (array) date_diff($data1, $data2);
}

function hidepan($pan){
    $result = substr($pan,0,4)."***".substr($pan,12,4);
    return $result;
}


function getMonthInRussian($date) {
    // Массив с названиями месяцев на русском языке
    $months = [
        1 => 'январ',
        2 => 'феврал',
        3 => 'март',
        4 => 'апрел',
        5 => 'май',
        6 => 'июн',
        7 => 'июл',
        8 => 'август',
        9 => 'сентябр',
        10 => 'октябр',
        11 => 'ноябр',
        12 => 'декабр'
    ];
    
    // Преобразуем строку в объект даты
    $timestamp = strtotime($date);
    
    // Получаем номер месяца
    $monthNumber = date('n', $timestamp);
    
    // Возвращаем название месяца
    return $months[$monthNumber];
}





function getratenamebysum($ratesum,$summa){
    $sumobor = $ratesum;
    $result = $sumobor/$summa;

    if($result>=2 and $result<4 ){$finrate = 'Слабый';}
    if($result>=4 and $result<10 ){$finrate = 'Удовлетворительный';}
    if($result>=10 and $result<15 ){$finrate = 'Хороший';}
    if($result>=15 and $result<20 ){$finrate = 'Очень хороший';}
    if($result>=20 and $result<60 ){$finrate = 'Отличный';}
    if($result>60 ){$finrate = 'Идеальный';}
    return $finrate;
}


function findme($mystring,$findme){
    $pos = strpos($mystring, $findme);

    if ($pos === false) {
        $result = false;
    } else {
        $result = true;
    }
    return $result;
}

// Удаление спец символов
function removeallsymbols($str){
    $str2 = preg_replace('/[^ a-zа-яё\d]/ui', '',$str );
    return $str2;
}



function translitit($string) {
    $string = mb_strtoupper($string);
    $converter = array(
        'A' => 'А', 'B'=>'Б', 'V'=>'В',
        'G' => 'Г', 'D'=>'Д', 'E'=>'Е',
        'E' => 'Ё', 'Zh'=>'Ж','Z'=>'З',
        'I' => 'И', 'Y'=>'Й', 'K'=>'К',
        'L' => 'Л', 'M'=>'М', 'N'=>'Н',
        'O' => 'О', 'P'=>'П', 'R'=>'Р',
        'S' => 'С', 'T'=>'Т', 'U'=>'У',
        'F' => 'Ф', 'H'=>'Х', 'C'=>'С',
       'CH' => 'Ч', 'Sh'=>'Ш', 'Sch'=>'Щ',
        'Y' => 'И', 'E'=>'Е',  'Yu'=>'Ю',
        'YA' =>'Я' ,'YO'=>'Ё', 'YE'=>'Е',
        'KH'=>'Х', 'ZH'=>'Ж',  'SMN'=>'СМН',
        'YU' =>'Ю', 'TS'=>'Ц', 'YY'=>'ЫЙ'
    );
    return strtr($string, $converter);
}

function customjsondecode($string){
    // $string  = str_replace ('[','',$string);
    //  $string  = str_replace (']','',$string);
    $p = strpos($string,'[');
    if($p>0){
        $string = trim(substr($string,$p));
    }
    else{
        $t = strpos($string,'{');
        $string = trim(substr($string,$t));
    }
   
    $val = json_decode($string,1);

    if (json_last_error() !== JSON_ERROR_NONE) {
        return "Ошибка декодирования JSON: " . json_last_error_msg();
    }

    return  $val;
 }

// function customjsondecode($string) {
//     $string = trim($string); // Убираем пробелы в начале и конце строки

//     $start = strpos($string, '{');
//     $end = strrpos($string, '}');
    
//     if ($start === false || $end === false) {
//         return "Ошибка: некорректный JSON.";
//     }
    
//     $string = substr($string, $start, $end - $start + 1);

//     $val = json_decode($string, true);

//     if (json_last_error() !== JSON_ERROR_NONE) {
//         return "Ошибка декодирования JSON: " . json_last_error_msg();
//     }

//     return $val;
// }

function sendcurl($data,$link){
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //Отключим проверку сертификата https
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($ch, CURLOPT_URL, $link);
    $t = curl_exec($ch);
    return $t;
}
//Уникальность массива
function array_unique_key($array, $key) { 
	$tmp = $key_array = array(); 
	$i = 0; 
 
	foreach($array as $val) { 
		if (!in_array($val[$key], $key_array)) { 
			$key_array[$i] = $val[$key]; 
			$tmp[$i] = $val; 
		} 
		$i++; 
	} 
	return $tmp; 
}
//Замена из массива
function replace($content, $array){
    return str_replace(
        array_map(function ($v) {
            return  $v ;
        }, array_keys($array)),
        array_values($array),
        $content
    );
}

//Xml to string
function xmlstring2array($string){
    $xml   = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);
    $array = json_decode(json_encode($xml), TRUE);
    return $array;
}

//Последний ID
function Lastid($con){
    $query  = sqlsrv_query($con,"select @@identity as 'Lastid'") or die("Ошибка в последней записи".print_r(sqlsrv_errors()));
    $row = sqlsrv_fetch_array($query);
    return $row['Lastid'];
}

//Проверка цифры на точку
function pointtocoma($value){
    $result = str_replace(',','.',$value);
    return $result;
}

function getTagValues($tag, $str) {
    $re = sprintf("/\<(%s)\>(.+?)\<\/\\1\>/", preg_quote($tag));
    preg_match_all($re, $str, $matches);
    return $matches[2];
}

function filterdb($input){
    $result = trim(htmlspecialchars(stripslashes(strtolower($input))));
    $result = str_replace('truncate', '', $result);
    $result = str_replace('delete', '', $result);
    $result = str_replace('update', '', $result);
    $result = str_replace('unset', '', $result);
    $result = str_replace('drop', '', $result);
    $result = str_replace('alter', '', $result);
    $result = str_replace('select', '', $result);
    return $result;
}


//ЧТЕНИЕ XML
function ReadXml($data,$value){
    $pos=strpos($data,"<".$value.">");
    $pos1=strpos($data,"<".$value.">")+strlen($value)+2;
    if(strlen($pos)<1)
    {
        return "";
    }
    $pos2=strpos($data,"</".$value.">");
    $var=substr($data,$pos1,$pos2-$pos1);
    if(strlen($var)==0) return "";
    return $var;
}

//цацшоашцоа
function DatetoDb($inputdate){
    $fromdb = preg_replace('/[^0-9 ,]/', '', $inputdate);
    $fromdb = substr($fromdb, 6, 2) . substr($fromdb, 2, 2) . substr($fromdb, 0, 2);
    //$fromdb = substr($inputdate,0,2);
    return $fromdb;
}


//XML Reader
function XMLReader($myXMLData){
    $xml = simplexml_load_string($myXMLData) or die("Error: Cannot create object");
    return $xml;
}



function Sanaminus($inputdate){
    return  substr(str_replace('-', '', $inputdate), 2);

}

function dd($array){
    echo "<pre>";
    print_r($array);
    echo "</pre>";
}






// КИРИЛЛИЦА В JSON
function json_fix_cyr($json_str) {
    $cyr_chars = array (
        '\u0430' => 'а', '\u0410' => 'А',
        '\u0431' => 'б', '\u0411' => 'Б',
        '\u0432' => 'в', '\u0412' => 'В',
        '\u0433' => 'г', '\u0413' => 'Г',
        '\u0434' => 'д', '\u0414' => 'Д',
        '\u0435' => 'е', '\u0415' => 'Е',
        '\u0451' => 'ё', '\u0401' => 'Ё',
        '\u0436' => 'ж', '\u0416' => 'Ж',
        '\u0437' => 'з', '\u0417' => 'З',
        '\u0438' => 'и', '\u0418' => 'И',
        '\u0439' => 'й', '\u0419' => 'Й',
        '\u043a' => 'к', '\u041a' => 'К',
        '\u043b' => 'л', '\u041b' => 'Л',
        '\u043c' => 'м', '\u041c' => 'М',
        '\u043d' => 'н', '\u041d' => 'Н',
        '\u043e' => 'о', '\u041e' => 'О',
        '\u043f' => 'п', '\u041f' => 'П',
        '\u0440' => 'р', '\u0420' => 'Р',
        '\u0441' => 'с', '\u0421' => 'С',
        '\u0442' => 'т', '\u0422' => 'Т',
        '\u0443' => 'у', '\u0423' => 'У',
        '\u0444' => 'ф', '\u0424' => 'Ф',
        '\u0445' => 'х', '\u0425' => 'Х',
        '\u0446' => 'ц', '\u0426' => 'Ц',
        '\u0447' => 'ч', '\u0427' => 'Ч',
        '\u0448' => 'ш', '\u0428' => 'Ш',
        '\u0449' => 'щ', '\u0429' => 'Щ',
        '\u044a' => 'ъ', '\u042a' => 'Ъ',
        '\u044b' => 'ы', '\u042b' => 'Ы',
        '\u044c' => 'ь', '\u042c' => 'Ь',
        '\u044d' => 'э', '\u042d' => 'Э',
        '\u044e' => 'ю', '\u042e' => 'Ю',
        '\u044f' => 'я', '\u042f' => 'Я',

        '\r' => '',
        '\n' => '',
        '\t' => ''
    );

    foreach ($cyr_chars as $cyr_char_key => $cyr_char) {
        $json_str = str_replace($cyr_char_key, $cyr_char, $json_str);
    }
    return $json_str;
}
//ШИФРОВКА
// function encode($unencoded,$key){//Шифруем
//     $string=base64_encode($unencoded);//Переводим в base64
//     $arr=array();//Это массив
//     $x=0;
//     while ($x++< strlen($string)) {//Цикл
//         $arr[$x-1] = md5(md5($key.$string[$x-1]).$key);//Почти чистый md5
//         @$newstr = $newstr.$arr[$x-1][3].$arr[$x-1][6].$arr[$x-1][1].$arr[$x-1][2];//Склеиваем символы
//     }
//     return $newstr;//Вертаем строку
// }

//ДЕШИФРОВКА
function decode($encoded, $key){//расшифровываем
    $strofsym="qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM=";//Символы, с которых состоит base64-ключ
    $x=0;
    while ($x++<= strlen($strofsym)) {//Цикл
        @$tmp = md5(md5($key.$strofsym[$x-1]).$key);//Хеш, который соответствует символу, на который его заменят.
        @$encoded = str_replace($tmp[3].$tmp[6].$tmp[1].$tmp[2], $strofsym[$x-1], $encoded);//Заменяем №3,6,1,2 из хеша на символ
    }
    return base64_decode($encoded);//Вертаем расшифрованную строку
}

//ЧТЕНИЕ XML


function UrgentLoan($date){
    if(GetWeekday(SanaTire($date))==0){ return addday($date,'1'); }
    elseif(GetWeekday(SanaTire($date))==6){ return addday($date,'2'); }
    else {return $date;}
}

//ФУНКЦИЯ ЕЖЕМЕСЯЧНОГО АННУИТЕНТА ===========================================================================


//CULR ЗАПРОСЫ ===========================================================================
function curl($url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}


/*Добавление дней */
function addday($inputdate,$days){
    $date = $inputdate;
    $datetime = new DateTime(SanaTire($date));
    $datetime->modify('+'.$days.' day');
    $date = $datetime->format('ymd');
    return $date;
}


/*Добавление месяцев */
function addmonth($inputdate,$months){
    $date = $inputdate;
    $datetime = new DateTime(SanaTire($date));
    $datetime->modify('+'.$months.' month');
    $date = $datetime->format('ymd');
    return $date;
}

/*Минусование дней */
function minusday($inputdate,$days){
    $date = $inputdate;
    $datetime = new DateTime(SanaTire($date));
    $datetime->modify('-'.$days.' day');
    $date = $datetime->format('ymd');
    return $date;
}

//ДАТА В ФОРМАТЕ 190000 ================================================================================================
function SanaTire($inputdate){
    $sana = substr($inputdate,0,2)."-".substr($inputdate,2,2)."-".substr($inputdate,4,2);
    return $sana;
}

//ДАТА В ФОРМАТЕ 190000 ================================================================================================
function Sana($inputdate){
    $sana = substr($inputdate,4,2).".".substr($inputdate,2,2).".20".substr($inputdate,0,2);
    return $sana;
}
//Вырезка слева ==================================================================== ========
function Left($object,$count){
    $sana = substr($object,0,$count);
    return $sana;
}

//ДАТА В ФОРМАТЕ 190000 14:13 ================================================================================================
function SanaTime($inputdate){
    $sana = substr($inputdate,4,2).".".substr($inputdate,2,2).".20".substr($inputdate,0,2)." ".substr($inputdate,6,2).":".substr($inputdate,8,2);
    return $sana;
}

function Vaqt($inputdate){
    $sana = substr($inputdate,6,2).":".substr($inputdate,8,2);
    return $sana;
}

//СПИСОК ДНЕЙ НЕДЕЛИ ================================================================================================
function Monthname($date) {
    $_monthsList = array("01" => "января", "02" => "февраля",
    "03" => "марта", "04" => "апреля", "05" => "мая", "06" => "июня",
    "07" => "июля", "08" => "августа", "09" => "сентября",
    "10" => "октября", "11" => "ноября", "12" => "декабря");

    $name = substr($date,4,2)." ".$_monthsList[substr($date,2,2)]." 20".substr($date,0,2);
    return $name;

}

//ОПРЕДЕЛЕНИЕ ДНЯ НЕДЕЛИ  ================================================================================================
function getWeekday($date) {
    return date('w', strtotime($date));
}


//ВЫВОД XML============================================================================================================================
function WriteXml($text){
    echo '<?xml version="1.0" encoding="UTF-8"?>
          <resp
          onse>'.$text.'</response>';
}



//SELECT ЗАПРОС С ВЫВОДОМ МАССИВА =====================================================================================================
function crudSelect($con, $query) {
    $zpr = sqlsrv_query($con,$query) or print_r(sqlsrv_errors());
    if(sqlsrv_has_rows($zpr)){
        return $row = sqlsrv_fetch_array($zpr);
    }
}

//SELECT ЗАПРОС С ВЫВОДОМ МАССИВА =====================================================================================================
function SelectCircle($con, $query) {
    $zpr = sqlsrv_query($con,$query) or print_r(sqlsrv_errors());
    if(sqlsrv_has_rows($zpr)){
        return $zpr;
    }
}

//Убираем из номера 992 ===============================================================================================================
function crud992($number, $bool) {
    if($bool ==0){$tel = str_replace("992","",$number);}
    else{$tel = "992".str_replace("992","",$number);}
    return $tel;
}


function normaldate($str) {
    // Удаляем дефисы из строки
    $str = str_replace('-', '', $str);
    
    // Возвращаем часть строки, начиная с третьего символа
    return substr($str, 2);
}

function formatDate($dateTimeString) {
    $dateTime = new DateTime($dateTimeString);
    return $dateTime->format('d.m.Y H:i:s');
}


?>