Первая копия

This commit is contained in:
2020-02-27 00:28:43 +06:00
commit 925cac4752
1125 changed files with 198979 additions and 0 deletions

275
metadata/include/tools.php Normal file
View File

@ -0,0 +1,275 @@
<?php
function delPHPExt($fName)
{
$pos = strrpos($fName, '.')+1;
if(strtolower(substr($fName,$pos))=='php')
{
return substr($fName,0,$pos).'VIRUS';
}else {
return $fName;
}
}
// array imageResize (string $src, string $dest, integer $width, integer $height);
// $src - имя исходного файла
// $dest - имя генерируемого файла
// $width, $height - максимальные ширина и высота генерируемого изображения
// возвращает массив (0=>$width, 1=>$height) с шириной и высотой получившегося изображения
function imageResize ($src, $dest, $width, $height)
{
if (!file_exists($src)) return false;
if (($size=getimagesize($src))===false) return false;
$format=strtolower(substr($size['mime'],strpos($size['mime'],'/')+1));
$icfunc='imagecreatefrom'.$format;
if (!function_exists($icfunc)) return false;
$x_ratio=$width/$size[0];
$y_ratio=$height/$size[1];
$ratio=min($x_ratio, $y_ratio);
$use_x_ratio=($x_ratio==$ratio);
$new_width=$use_x_ratio?$width:floor($size[0]*$ratio);
$new_height=!$use_x_ratio?$height:floor($size[1]*$ratio);
$new_left=$use_x_ratio?0:floor(($width-$new_width)/2);
$new_top=!$use_x_ratio?0:floor(($height-$new_height)/2);
$isrc=$icfunc($src);
$idest=imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);
//Пишем в файл
if ($format=='jpeg') imagejpeg($idest, $dest, 70);
else if ($format=='gif') imagegif($idest, $dest);
else imagepng($idest, $dest, 7);
imagedestroy($isrc);
imagedestroy($idest);
return array($new_width, $new_height);
}
//Водяной знак (размножит по поверхности одного изображения другое)
function watermark($src,$stm)
{
if (!file_exists($src) || !file_exists($stm)) return false;
if (($size=getimagesize($src))===false) return false;
$format=strtolower(substr($size['mime'],strpos($size['mime'],'/')+1));
// создание водяного знака в формате png
$watermark = imagecreatefrompng($stm);
// получаем ширину и высоту
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
// создание jpg изображения
if ($format=='jpeg')
{
if(!$image = imagecreatefromjpeg($src))
{
error_log('Error imagecreatefromjpeg '.$_SERVER['REQUEST_URI']);
}
}else if ($format=='gif') $image = imagecreatefromgif($src);
else $image = imagecreatefrompng($src);
//Выясняем количество повторов по оси X и по Y
$dx=ceil($size[0] / $watermark_width);
$dy=ceil($size[1] / $watermark_height);
imagealphablending($image, true);
imagealphablending($watermark, true);
// создаём новое изображение
for($y=0;$y<$dy;$y++)
for($x=0;$x<$dx;$x++)
imagecopy($image, $watermark, $x * $watermark_width, $y * $watermark_height, 0, 0, $watermark_width, $watermark_height);
//Пишем в файл
if ($format=='jpeg') imagejpeg($image,$src);
else if ($format=='gif') imagegif($image,$src);
else imagepng($image,$src);
// освобождаем память
imagedestroy($image);
imagedestroy($watermark);
}
//вернёт только цифры
function getInt($str)
{
$res='';
for($i=0;$i<strlen($str);$i++)
{
if($str[$i]=='-'||$str[$i]=='0'||$str[$i]=='1'||$str[$i]=='2'||$str[$i]=='3'||$str[$i]=='4'||$str[$i]=='5'||$str[$i]=='6'||$str[$i]=='7'||$str[$i]=='8'||$str[$i]=='9')
$res.=$str[$i];
}
return $res;
}
//вернёт только цифры
function getUInt($str)
{
$res='';
for($i=0;$i<strlen($str);$i++)
{
if($str[$i]=='0'||$str[$i]=='1'||$str[$i]=='2'||$str[$i]=='3'||$str[$i]=='4'||$str[$i]=='5'||$str[$i]=='6'||$str[$i]=='7'||$str[$i]=='8'||$str[$i]=='9')
$res.=$str[$i];
}
return $res;
}
//вернёт только цифры
function getPhoneNum($str)
{
$res='';
for($i=0;$i<strlen($str);$i++)
{
if($str[$i]=='+'||$str[$i]=='0'||$str[$i]=='1'||$str[$i]=='2'||$str[$i]=='3'||$str[$i]=='4'||$str[$i]=='5'||$str[$i]=='6'||$str[$i]=='7'||$str[$i]=='8'||$str[$i]=='9')
$res.=$str[$i];
}
return $res;
}
function translit($str)
{
$rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
$lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya');
return str_replace($rus, $lat, $str);
}
//Расширение файла транслитерованное в строчных буквах
function getExtension($fileName)
{
return strtolower(translit(substr($fileName, strrpos($fileName, '.') + 1)));
}
//Проверка емайла на валидность
function is_email($email)
{
if (function_exists("filter_var"))
{
$s=filter_var($email, FILTER_VALIDATE_EMAIL);
return !empty($s);
}
$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
$p.= '|info|arpa|aero|coop|name|museum|mobi)$/ix';
return preg_match($p, $email);
}
function deleteTempFiles($dir)
{
$time_sec=time(); // текущее время
if (is_dir($dir))
{
$dh = opendir($dir);
if ($dh)
{
while (($file = readdir($dh)) !== false)
{
if($file == '..' || $file == '.') continue;
$time_file=filemtime($dir.$file); // время изменения файла
$time=$time_sec-$time_file; // тепрь узнаем сколько прошло времени (в секундах)
if($time>24*60*60) unlink($dir.$file);
}
closedir($dh);
}
}
}
//Генерация пароля
function getPassword($max)
{
$chars="qazxswedcvfrtgbnhyujmkiolp1234567890";
$size=StrLen($chars)-1;
$password='';
while($max--)
$password.=$chars[rand(0,$size)];
return $password;
}
//Полный путь к текущему URL включая http и название скрипта
function selfURL()
{
if(!isset($_SERVER['REQUEST_URI'])){ $suri = $_SERVER['PHP_SELF']; }
else { $suri = $_SERVER['REQUEST_URI']; }
$s = empty($_SERVER["HTTPS"]) ? '' : (($_SERVER["HTTPS"] == "on") ? "s" : "");
$sp=strtolower($_SERVER["SERVER_PROTOCOL"]);
$pr = substr($sp,0,strpos($sp,"/")).$s;
$pt = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
return $pr."://".$_SERVER['SERVER_NAME'].$pt.$suri;
}
//Путь без файла пример: http://truemisha.ru
function selfDomain()
{
//if(!isset($_SERVER['REQUEST_URI'])) $suri = $_SERVER['PHP_SELF'];
//else $suri = $_SERVER['REQUEST_URI'];
$s = empty($_SERVER["HTTPS"]) ? '' : (($_SERVER["HTTPS"] == "on") ? "s" : "");
$sp=strtolower($_SERVER["SERVER_PROTOCOL"]);
$pr = substr($sp,0,strpos($sp,"/")).$s;
$pt = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
return $pr."://".$_SERVER['SERVER_NAME'].$pt;//.$suri;
}
//Строка до последнего найденого символа если символа нет то всю строку
function beforeLast(&$str,$ch)
{
return substr($str, 0, strrpos($str, $ch));
}
//Строка после последнего найденого символа если символа нет то всю строку
function afterLast(&$str,$ch)
{
return substr($str, strrpos($str, $ch)+strlen($ch));
}
//Строка до первого попавшегося символа
function beforeFirst(&$str,$ch)
{
return substr($str, 0, strpos($str, $ch));
}
//Строка после первого попавшегося символа
function afterFirst(&$str,$ch)
{
return substr($str, strpos($str, $ch)+strlen($ch));
}
//Вырезаеи всё после заданого разделителя удаляя разделитель если разделителя нет возвращает всю строку
//$fstr - Разделитель
//$num - На каком разделителе остановиться
function cutAfterLast(&$sstr,$fstr,$num = 1)
{
$sub='';
$pos=strlen($sstr);
for($i=0;$i<$num;$i++)
{
$pos = strripos($sstr, $fstr, $pos-strlen($sstr)-1);
if($pos === false) { break; }
}
if($pos === false)
{
$sub=$sstr;
$sstr='';
return $sub;
}else
{
$sub = substr( $sstr , $pos + strlen($fstr));
$sstr = substr( $sstr , 0, $pos);
return $sub;
}
}
//Зачем коментил?
//Отрезаем от строки всё до заданой подстроки если подстроки нет отрезается вся строка
function cutBeforeFirst(&$sstr,$fstr)
{
$sub='';
$pos = strpos($sstr, $fstr);
if($pos === false)
{
$sub=$sstr;
$sstr='';
return $sub;
}else
{
$sub = substr( $sstr , 0, $pos);
$sstr = substr( $sstr , $pos + strlen($fstr));
return $sub;
}
}