Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/ferrantealberto/newplg2/archive/refs/heads/main.zipWAsender QR Message Pro - Multi-Tenant Version
Versione 2.0.0 - Multi-Tenant Edition
Questa è la versione multi-tenant del plugin WAsender QR Message Pro, sviluppata per funzionare in perfetta integrazione con WAsender Manager Pro. Mantiene tutte le funzionalità della versione originale aggiungendo il supporto completo per ambienti multi-tenant.
🚀 Caratteristiche Multi-Tenant
✅ Funzionalità Mantenute
- Generazione QR Code WhatsApp con messaggi personalizzati
- Form Builder avanzato per creare form personalizzati
- Invio Diretto tramite API WAsender
- Shortcodes per inserire form nelle pagine
- Sistema di log e analytics
- Interface responsive e mobile-friendly
- Tutte le customizzazioni della versione originale
🆕 Nuove Funzionalità Multi-Tenant
- 🏢 Isolamento per Tenant: Ogni tenant ha i propri form, dati e configurazioni
- 🔧 Configurazione Automatica: API URL, token e webhook secret gestiti automaticamente dal Manager Pro
- 🔒 Sicurezza Avanzata: Accesso ai dati limitato al tenant corrente
- 📊 Analytics Separate: Log e statistiche isolate per ogni tenant
- ⚙️ Interface Adattiva: L'admin si adatta automaticamente alla modalità multi-tenant
- 🔄 Compatibilità Totale: Funziona sia in modalità single-tenant che multi-tenant
🏗️ Architettura
Rilevamento Automatico
Il plugin rileva automaticamente la presenza di WAsender Manager Pro e si configura di conseguenza:
// Rilevamento multi-tenant
$this->is_manager_active = class_exists('WAsender_Manager_Pro_Manager');
Configurazione API Dinamica
Le configurazioni API vengono ottenute dinamicamente dal tenant:
// Single-tenant: usa get_option()
// Multi-tenant: usa dati del tenant
$config = WAsender_QR_Pro_Multi_Tenant::get_tenant_api_config($tenant);
Database Multi-Tenant
Tutte le tabelle supportano il campo tenant_id per l'isolamento:
-- Esempio struttura
CREATE TABLE wp_wasender_forms (
id int(11) NOT NULL AUTO_INCREMENT,
tenant_id int(11) DEFAULT NULL, -- NUOVO CAMPO
name varchar(255) NOT NULL,
-- altri campi...
UNIQUE KEY unique_tenant_slug (tenant_id, slug)
);
📋 Tabelle Database
Tabelle Modificate per Multi-Tenant
-
wasender_forms- Form Builder- ➕
tenant_id- ID del tenant proprietario - ➕ Indice unico su
(tenant_id, slug)
- ➕
-
wasender_submissions- Dati form inviati- ➕
tenant_id- ID del tenant - ➕ Indici per performance
- ➕
-
wasender_logs- Log eventi- ➕
tenant_id- ID del tenant - ➕ Filtri per tenant negli analytics
- ➕
🔧 Configurazione
Modalità Single-Tenant (Legacy)
Se WAsender Manager Pro non è attivo, il plugin funziona come la versione originale:
- Configurazione manuale nelle impostazioni
- Dati globali senza isolamento tenant
tenant_id = NULLin tutte le tabelle
Modalità Multi-Tenant
Con WAsender Manager Pro attivo:
- ✅ Configurazione API automatica per ogni tenant
- ✅ Webhook unificato gestito centralmente
- ✅ Isolamento completo dei dati
- ✅ Interface admin adattiva
🎯 Shortcodes
Tutti gli shortcodes originali sono supportati e compatibili con multi-tenant:
Form Base
[wasender phone="+39123456789" message="Ciao!" title="Contattaci"]
Form Personalizzato
[wasender_form id="123" show_title="true"]
Solo QR Code
[wasender_qr phone="+39123456789" message="Messaggio" auto_generate="true"]
Bottone WhatsApp
[wasender_button phone="+39123456789" text="Contattaci" style="green"]
⚙️ API Multi-Tenant
Classe Principale
// Ottieni istanza per tenant specifico
$qr_pro = WAsender_QR_Pro::for_tenant($tenant);
// Ottieni istanza per tenant corrente
$qr_pro = WAsender_QR_Pro::get_current_instance();
// Verifica modalità
if ($qr_pro->is_multi_tenant()) {
// Logica multi-tenant
}
Configurazione Dinamica
// Ottieni config per il tenant
$config = WAsender_QR_Pro_Multi_Tenant::get_tenant_api_config($tenant);
// Contiene: api_url, api_token, session_name, webhook_secret, tenant_id, tenant_slug
🔄 Migrazione
Da Single-Tenant a Multi-Tenant
- Installazione WAsender Manager Pro
- Aggiornamento Plugin: Il plugin rileva automaticamente il Manager Pro
- Migrazione Database: Le tabelle vengono aggiornate con i campi
tenant_id - Dati Legacy: I dati esistenti rimangono con
tenant_id = NULLper compatibilità - Configurazione: Le impostazioni API passano al controllo del Manager Pro
Compatibilità Indietro
- ✅ Dati esistenti sono preservati
- ✅ Shortcodes continuano a funzionare
- ✅ Form esistenti rimangono attivi
- ✅ Possibilità di ritornare a single-tenant
🔐 Sicurezza
Isolamento Dati
- Ogni tenant vede solo i propri dati
- Filtri
WHERE tenant_id = ?su tutte le query - Validazione rigorosa dell'accesso ai dati
Webhook Sicuri
- Webhook unificato con autenticazione per tenant
- Header
X-Webhook-Secretspecifico per tenant - Validazione centralizzata nel Manager Pro
Controllo Accessi
- Interface admin disabilita campi gestiti centralmente
- Prevenzione modifiche non autorizzate
- Log di tutte le operazioni sensibili
📊 Analytics Multi-Tenant
Log Separati
Ogni tenant ha i propri analytics:
- Messaggi inviati per tenant
- Form submissions per tenant
- Eventi e errori isolati
- Performance metrics separate
Dashboard Admin
- Statistiche filtrate per tenant corrente
- Indicatori visivi della modalità multi-tenant
- Info tenant nell'header admin
🧪 Testing
Test di Compatibilità
$installer = new WAsender_Installer();
$compatibility = $installer->test_multi_tenant_compatibility();
// Verifica:
// - Presenza Manager Pro
// - Metodi richiesti disponibili
// - Database pronto per multi-tenant
// - Assenza errori di configurazione
Diagnostica Sistema
$installer = new WAsender_Installer();
$info = $installer->get_system_info();
// Informazioni su:
// - Versione plugin e WordPress
// - Stato multi-tenant
// - Statistiche database per tenant
// - Configurazione corrente
🐛 Risoluzione Problemi
1. Plugin Non Rileva Manager Pro
- Verificare che WAsender Manager Pro sia attivo
- Controllare che la classe
WAsender_Manager_Pro_Manageresista - Verificare ordine di caricamento plugin
2. Dati Non Visualizzati
- Controllare che ci sia un tenant attivo
- Verificare filtri
tenant_idnelle query - Controllare log per errori di configurazione
3. API Non Funziona
- Verificare configurazione tenant nel Manager Pro
- Controllare token API e URL nel tenant
- Testare connessione API dall'admin
4. Shortcode Non Funziona
- Controllare contesto tenant nella pagina
- Verificare che il form esista per il tenant corrente
- Controllare parametri shortcode
📝 Log e Debug
File di Log
wp-content/wasender-debug.log- Log principale- Log eventi nel database con
tenant_id - Log centralizzato nel Manager Pro
Messaggi Debug
// Attivare logging nelle impostazioni
update_option('wasender_enable_logs', 1);
// Log specifici per tenant
$this->debug_log('[Tenant:' . $tenant_id . '] Messaggio di debug');
🆙 Aggiornamenti
Versioning
- v1.x: Versione single-tenant originale
- v2.0+: Versione multi-tenant con backward compatibility
Upgrade Automatico
- Database migrato automaticamente
- Impostazioni legacy preservate
- Notifiche di upgrade nell'admin
🏢 Requisiti
Requisiti Base
- WordPress 5.0+
- PHP 7.4+
- MySQL 5.7+ / MariaDB 10.2+
Requisiti Multi-Tenant
- WAsender Manager Pro attivo
- Permessi database per ALTER TABLE
- Memoria PHP sufficiente per tenant multipli
📞 Supporto
Per supporto e documentazione aggiuntiva:
- Versione Original: Documentazione plugin originale
- Multi-Tenant: Documentazione WAsender Manager Pro
- Integrazione: Questa documentazione
🎉 Conclusione
Questa versione multi-tenant mantiene al 100% tutte le funzionalità del plugin originale, aggiungendo il supporto per ambienti multi-tenant senza compromessi. È la soluzione ideale per:
- 🏢 Agenzie che gestiscono più clienti
- 🌐 SaaS con tenant multipli
- 🔧 Reseller che offrono servizi WhatsApp
- 📈 Scalabilità per crescita aziendale
Nessuna funzionalità persa, solo potenza aggiunta! 🚀