File: /home/mytest/.trash/migrate_users_table.php.28
<?php
/**
* Migration Script: Add first_name, last_name, phone columns to users table
*
* This script adds missing columns to the users table for existing databases.
* For fresh installs, these columns are created automatically by Database.php
*
* Run this ONCE on your production database via your database management tool.
*
* IMPORTANT: This is for SQLite databases. Run these ALTER TABLE commands
* in your database management tool (e.g., phpLiteAdmin, DB Browser for SQLite):
*
* ALTER TABLE users ADD COLUMN first_name TEXT;
* ALTER TABLE users ADD COLUMN last_name TEXT;
* ALTER TABLE users ADD COLUMN phone TEXT;
*
* Or run this PHP script once via browser: https://yourdomain.com/migrate_users_table.php
*/
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/database/Database.php';
$lockFile = __DIR__ . '/data/.users_migration_done';
if (file_exists($lockFile)) {
die('Migration already completed. Delete data/.users_migration_done to run again.');
}
try {
$db = Database::getInstance()->getConnection();
$result = $db->query("PRAGMA table_info(users)");
$columns = [];
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$columns[] = $row['name'];
}
$columnsToAdd = [];
if (!in_array('first_name', $columns)) {
$columnsToAdd[] = 'first_name';
}
if (!in_array('last_name', $columns)) {
$columnsToAdd[] = 'last_name';
}
if (!in_array('phone', $columns)) {
$columnsToAdd[] = 'phone';
}
if (empty($columnsToAdd)) {
echo "ā
All columns already exist. No migration needed.\n";
file_put_contents($lockFile, date('Y-m-d H:i:s'));
exit;
}
foreach ($columnsToAdd as $column) {
$db->exec("ALTER TABLE users ADD COLUMN $column TEXT");
echo "ā
Added column: $column\n";
}
file_put_contents($lockFile, date('Y-m-d H:i:s'));
echo "\nā
Migration completed successfully!\n";
echo "Added columns: " . implode(', ', $columnsToAdd) . "\n";
echo "\nYou can now create and edit users with first name, last name, and phone fields.\n";
} catch (Exception $e) {
echo "ā Migration failed: " . $e->getMessage() . "\n";
exit(1);
}