93 lines
2.6 KiB
PHP
93 lines
2.6 KiB
PHP
<?php
|
||
/**
|
||
* Switch Remaining to External - переключает оставшиеся файлы с S3 метаданными на External
|
||
*/
|
||
|
||
ini_set('memory_limit', '512M');
|
||
set_time_limit(0);
|
||
date_default_timezone_set('Europe/Moscow');
|
||
|
||
$ROOT = '/var/www/fastuser/data/www/crm.clientright.ru/';
|
||
require_once $ROOT . 'config.inc.php';
|
||
|
||
// CLI options
|
||
$opts = getopt('', [
|
||
'dry-run::',
|
||
'limit::'
|
||
]);
|
||
|
||
$dryRun = isset($opts['dry-run']) ? (int)$opts['dry-run'] !== 0 : true;
|
||
$limit = isset($opts['limit']) ? (int)$opts['limit'] : 0;
|
||
|
||
// Database connection
|
||
$mysqli = new mysqli($dbconfig['db_server'], $dbconfig['db_username'], $dbconfig['db_password'], $dbconfig['db_name']);
|
||
if ($mysqli->connect_error) {
|
||
die("Connection failed: " . $mysqli->connect_error);
|
||
}
|
||
$mysqli->set_charset("utf8");
|
||
|
||
echo "=== Switch Remaining Files to External ===\n";
|
||
echo "Dry run: " . ($dryRun ? "YES" : "NO") . "\n";
|
||
echo "Limit: " . ($limit > 0 ? $limit : "UNLIMITED") . "\n\n";
|
||
|
||
// Find Internal files with S3 metadata
|
||
$query = "SELECT notesid, filename, s3_key, s3_bucket
|
||
FROM vtiger_notes
|
||
WHERE filelocationtype = 'I'
|
||
AND s3_key IS NOT NULL
|
||
AND s3_key != ''";
|
||
|
||
if ($limit > 0) {
|
||
$query .= " LIMIT $limit";
|
||
}
|
||
|
||
$result = $mysqli->query($query);
|
||
if (!$result) {
|
||
die("Query failed: " . $mysqli->error);
|
||
}
|
||
|
||
$updated_count = 0;
|
||
$total_count = 0;
|
||
|
||
while ($row = $result->fetch_assoc()) {
|
||
$total_count++;
|
||
$notesid = $row['notesid'];
|
||
$filename = $row['filename'];
|
||
$s3_key = $row['s3_key'];
|
||
$s3_bucket = $row['s3_bucket'] ?: 'f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c';
|
||
|
||
echo "Processing ID $notesid: $s3_key\n";
|
||
|
||
if (!$dryRun) {
|
||
// Create S3 URL
|
||
$s3_url = "https://s3.twcstorage.ru/{$s3_bucket}/{$s3_key}";
|
||
|
||
// Update to External type and S3 URL
|
||
$update_query = "UPDATE vtiger_notes SET
|
||
filelocationtype = 'E',
|
||
filename = ?
|
||
WHERE notesid = ?";
|
||
|
||
$stmt = $mysqli->prepare($update_query);
|
||
$stmt->bind_param("si", $s3_url, $notesid);
|
||
|
||
if ($stmt->execute()) {
|
||
$updated_count++;
|
||
echo " ✅ Switched to External\n";
|
||
} else {
|
||
echo " ❌ Failed to update: " . $stmt->error . "\n";
|
||
}
|
||
$stmt->close();
|
||
} else {
|
||
echo " [DRY RUN] Would switch to External\n";
|
||
$updated_count++;
|
||
}
|
||
}
|
||
|
||
$mysqli->close();
|
||
|
||
echo "\n=== SUMMARY ===\n";
|
||
echo "Total processed: $total_count\n";
|
||
echo "Total updated: $updated_count\n";
|
||
echo "Dry run: " . ($dryRun ? "YES" : "NO") . "\n";
|