Joywork/cron/clearReqFilesSql.php

184 lines
5.0 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
set_time_limit(0);
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Очистка файлов заявок по запросу</title>
</head>
<body>
<?php
$countAll = 0;
$countDel = 0;
$count = 0;
$sum = 0;
$token = SelectelApi::getNewToken();
$sqlObj = "SELECT `req_id`, `guid`, `type` FROM `clients_files` WHERE `req_id` > 0 ORDER BY `id` ASC";
$rezObj = mysql_query($sqlObj);
while ($obj = mysql_fetch_assoc($rezObj)) {
$userActive = true;
$sqlUser = "SELECT user_id, who_work FROM `requisitions` WHERE `id` = " . $obj['req_id'];
$rezUser = mysql_query($sqlUser);
$user = mysql_fetch_assoc($rezUser);
$userId = $user['who_work'];
if (!$userId) {
$userId = $user['user_id'];
}
$agencyId = User::getAgencyIdForUser($userId);
if ($agencyId) {
$agency = new User();
$agency->get($agencyId);
if ($agency) {
$tarif = new \Tarif;
$tarif->get($agency->id_tarif);
$date_tarif = strtotime($agency->date_tarif);
$date_end = $date_tarif + $tarif->period * 3600 * 24;
$date_end_f = date("d.m.Y H:i", $date_end);
$dney = ceil(($date_end - time()) / 24 / 3600);
echo " Удаляем файлы агентства " . $agencyId . " <br/>";
echo $dney . " <br/>";;
if ($dney < -60) {
$userActive = false;
}
} else {
echo "Не найдено агентство " . $agencyId . " <br/>";
$userActive = false;
}
} else {
echo "Не найдено агентство для пользователя " . $userId . " <br/>";
$agency = new User();
$agency->get($userId);
if ($agency && isset($agency->id_tarif)) {
$tarif = new \Tarif;
$tarif->get($agency->id_tarif);
$date_tarif = strtotime($agency->date_tarif);
$date_end = $date_tarif + $tarif->period * 3600 * 24;
$date_end_f = date("d.m.Y H:i", $date_end);
$dney = ceil(($date_end - time()) / 24 / 3600);
echo " Удаляем файлы агента " . $userId . " <br/>";
echo $dney . " <br/>";;
if ($dney < -60) {
$userActive = false;
}
} else {
echo "Не найден агент " . $userId . " <br/>";
$userActive = false;
}
}
if (!$userActive) {
$countDel++;
echo " Удаляем файл " . $obj['guid'] . " заявки " . $obj['req_id'] . " <br/>";
$path = $_SERVER['DOCUMENT_ROOT'] . "/upload/reqs/" . $obj['req_id'] . "/" . $obj['guid'] . "." . $obj['type'];
$url = $url = str_replace("/var/www/sites/joywork.ru/prod", "https://uf.joywork.ru", $path);
if (file_exists($path)) {
$size = filesize($path);
$sum = $sum + $size;
echo $path . " " . date("d.m.Y H:i:s.", filemtime($path)) . " size: " . formatSizeUnits($size) . "<br/>";
unlink($path);
}
echo "check url " . $url . "<br/>";
$res = doesFileUrlExists($url);
if ($res[0]) {
echo " Удаляем файл " . $obj['guid'] . " заявки " . $obj['req_id'] . " из Selectel <br/>";
//удалить из селектел
$nfp = str_replace("https://uf.joywork.ru/", "", $url);
var_dump($nfp);
echo "<br/>";
$res = SelectelApi::deleteReqFile('https://swift.ru-1.storage.selcloud.ru/v1/4df7b82aa77b439194788ae24b24ff3b', $token, $nfp);
var_dump($res);
}
$count++;
//удалить запись из таблицы
//$sqlDelete = "DELETE FROM clients_files where req_id > 0 and req_id = " . $obj['req_id'];
//mysql_query($sqlDelete);
}
$countAll++;
}
echo "Обработано " . $countAll . " записей <br/>";
echo "Удалено " . $countDel . " записей <br/>";
echo "Удалено " . $count . " файлов <br/>";
echo "Удалено " .formatSizeUnits($sum);
function doesFileUrlExists($url) {
$headers = get_headers($url, true);
return [(stripos($headers[0], "200 OK") ? true : false), (isset($headers['Content-Length']) ? (int) $headers['Content-Length'] : 0)];
}
function formatSizeUnits($bytes)
{
if ($bytes >= 1073741824)
{
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
}
elseif ($bytes >= 1048576)
{
$bytes = number_format($bytes / 1048576, 2) . ' MB';
}
elseif ($bytes >= 1024)
{
$bytes = number_format($bytes / 1024, 2) . ' kB';
}
elseif ($bytes > 1)
{
$bytes = $bytes . ' bytes';
}
elseif ($bytes == 1)
{
$bytes = $bytes . ' byte';
}
else
{
$bytes = '0 bytes';
}
return $bytes;
}
?>
</body>
</html>