Fix: add phonebook_contacts to database schema and migrations; harden install script

This commit is contained in:
sorcier committed 2026-11-02 03:51:27 +01:00
1 parent fb0997e759
commit 563a01e3c3
4 files changed
+68 -6

No files matched your search

+41
View File
@@ -269,6 +269,24 @@ class Database
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 13. Table phonebook_contacts : Annuaire d'Entreprise & Carnet d'Adresses IP Phone
CREATE TABLE IF NOT EXISTS phonebook_contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
extension_id INTEGER DEFAULT NULL,
display_name VARCHAR(128) NOT NULL,
internal_number VARCHAR(32) NOT NULL DEFAULT '',
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
other_number VARCHAR(32) NOT NULL DEFAULT '',
email VARCHAR(128) NOT NULL DEFAULT '',
photo_url TEXT NOT NULL DEFAULT '',
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
is_internal INTEGER NOT NULL DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
SQL;
$db->exec($schema);
@@ -282,6 +300,7 @@ class Database
self::migrateIvrsTable($db);
self::migrateCertificatesTable($db);
self::migrateFeatureCodesTable($db);
self::migratePhonebookContactsTable($db);
// Création du compte admin par défaut (admin / admin123) s'il n'existe aucun utilisateur
$userCount = (int)$db->query('SELECT COUNT(*) FROM users')->fetchColumn();
@@ -867,5 +886,27 @@ class Database
}
}
}
private static function migratePhonebookContactsTable(PDO $db): void
{
$db->exec("
CREATE TABLE IF NOT EXISTS phonebook_contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
extension_id INTEGER DEFAULT NULL,
display_name VARCHAR(128) NOT NULL,
internal_number VARCHAR(32) NOT NULL DEFAULT '',
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
other_number VARCHAR(32) NOT NULL DEFAULT '',
email VARCHAR(128) NOT NULL DEFAULT '',
photo_url TEXT NOT NULL DEFAULT '',
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
is_internal INTEGER NOT NULL DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
");
}
}
+19
View File
@@ -29,6 +29,25 @@ class PhonebookManager
*/
public static function syncExtensions(PDO $db): void
{
$db->exec("
CREATE TABLE IF NOT EXISTS phonebook_contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
extension_id INTEGER DEFAULT NULL,
display_name VARCHAR(128) NOT NULL,
internal_number VARCHAR(32) NOT NULL DEFAULT '',
mobile_number VARCHAR(32) NOT NULL DEFAULT '',
other_number VARCHAR(32) NOT NULL DEFAULT '',
email VARCHAR(128) NOT NULL DEFAULT '',
photo_url TEXT NOT NULL DEFAULT '',
group_name VARCHAR(64) NOT NULL DEFAULT 'Général',
is_internal INTEGER NOT NULL DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_phonebook_ext ON phonebook_contacts(extension_id);
CREATE INDEX IF NOT EXISTS idx_phonebook_group ON phonebook_contacts(group_name);
");
// 1. Récupère la cartographie des groupes d'extensions
$egRows = $db->query("SELECT id, name, members FROM extension_groups")->fetchAll();
$extToGroup = [];