Fix: add phonebook_contacts to database schema and migrations; harden install script
This commit is contained in:
1 parent
fb0997e759
commit
563a01e3c3
4 files changed
+68
-6
No files matched your search
@@ -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);
|
||||
");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
Reference in new issue
Block a user