Parte quarta: gestione eventi

Il sistema di gestione eventi è una tecnologia molto potente che permette di creare con Sar-At siti sino a ieri inimmaginabili, come aste, wiki in cui ciascun membro può intervenire eppure l'autore originale viene immediatamente informato che c'è stata una modifica, liste di discussione in cui gli interventi di ciascuna persona vengono spediti per email a tutte le altre, comunità e altro ancora.

L'idea è che il programma può automaticamente reagire a eventi prestabiliti. Gli eventi sono di basso livello (per esempio: è stata cancellata una pagina) o di alto livello (per esempio: è stato acquistato un articolo nel commercio elettronico da un visitatore registrato). Le reazioni possibili sono molto flessibili e possono toccare il database, il sito e la newsletter.

Qualche esempio di eventi possibili in un sito.

  • Il sito è un commercio elettronico. A ogni cinquecentesimo acquisto, il proprietario del sito riceve una email con le generalità dell'acquirente che riceve un omaggio.
  • Il sito è un quotidiano. Ogni sera, parte automaticamente una newsletter impaginata in HTML a tutti gli abbonati
  • Il sito è un blog. Ogni volta che il proprietario del blog aggiunge una bloggata, viene automaticamente e invisibilmente generato un gruppo di lettori interessati a quell'argomento. Chiunque visiti la pagina può iscriversi al gruppo con un clic.

Ogni volta che qualcuno aggiunge un commento la pagina, tutti i membri del gruppo ricevono una email con il contenuto del commento.

Creazione di un evento

La gestione eventi si raggiunge dalla omonima voce del menu Sito. Appare una tabella con tutti gli eventi definiti: possiamo editarne uno esistente oppure aggiungerne uno nuovo cliccando il pulsante in fondo.


Vogliamo fare una prova? Create un gruppo fittizio di visitatori registrati. Nel menu Utilizzatori selezionate la voce Visitatori registrati | Aggiungi gruppo. Scegliete un nome facilmente ricordabile, come "Prova eventi" e una qualsiasi sezione del vostro sito (o più d'una).

Nella schermata che appare, cliccate il nome della sezione che avete associato al gruppo: appare l'elenco (vuoto) dei membri del vostro gruppo. Aggiungete voi stessi, in modo da poter fare qualche inserimento. Nel campo nome inserite il vostro indirizzo email, e digitate una password qualsiasi (tanto, non ci servirà). Prendete una data di scadenza arbitrariamente nel futuro.

Ora possiamo aggiungere un evento per capire come funziona. Nel menu Sito scegliete "Gestione eventi" e cliccate il pulsante "Aggiungi evento". Cominceremo creando il più semplice degli eventi: una email avvisa tutti i membri di un gruppo (nel nostro esempio, soltanto tu) quando viene aggiunta una pagina nella sezione indicata.

Tipi di evento

Sar-At riconosce due tipologie di evento: quelli collegati al database (per esempio, arriva un amministratore e cancella una pagina) e quelli collegati soltanto alle azioni dei visitatori (per esempio, un visitatore registrato clicca un pulsante speciale sul sito).

Un evento sul database può venire scatenato in molti modi differenti. Una pagina, per esempio, può venire inserita in molti modi: può succedere quando un amministratore va nel menu Pagine di Sar-At e clicca Aggiungi pagina ma anche quando un altro amministratore importa dal pulsante Importa pagine. Se la sezione interessata è una sezione modulo, anche i visitatori del sito possono aggiungere pagine, semplicemente compilando il modulo. Quindi gli eventi di tipologia database possono accadere anche in risposta alle azioni dei visitatori, quando nessun amministratore è connesso a Sar-At.

Tipologia

Nome

Scatta quando…

Database

INSERT

Una pagina viene creata o importata per la prima volta nel database, da un amministratore o da un visitatore. Notate che l'evento scatta anche se la pagina è invisibile ai visitatori.

Database

UPDATE

Una pagina esistente viene editata e aggiornata da un amministratore. Nelle sezioni modulo aggiornabili, anche i visitatori registrati possono aggiornare una pagina: la loro.

Database

DELETE

Una pagina esistente viene rimossa da un amministratore

Visitatori

USER

Un visitatore accede allo speciale indirizzo sarat/sar-at_evtmgr.inc.php

Visitatori

ERROR

Un visitatore accede a un indirizzo Sar-At non esistente, per esempio showPage.php?template=inesistente

Visitatori

SALE

Un visitatore completa un acquisto attraverso il sistema di commercio elettronico integrato

Database

BULK-DELETE

Un amministratore cancella un grippo di pagine (record). Questo attualmente può accadere in due casi. Primo, quando il proprietario del sito distrugge una intera sezione del sito stesso. Secondo, quando un amministratore importa nuove pagine (record) da un file esterno e nel farlo sovrascrive o distrugge molte pagine esistenti

Gli eventi collegati al database scattano automaticamente, senza che si debba fare alcuna lavorazione sullo HTML del sito.

Quando un redattore lavora su un sito multilingue e cancella una traduzione in una lingua, il sistema automaticamente si offre di cancellare tutte le altre traduzioni. In questo caso viene mandato un evento delete per ciascuna localizzazione, non un bulk-delete per tutte.

Gli eventi USER vanno fatti scatenare attraverso un eccesso allo speciale indirizzo

  /sarat/sar-at_evtmgr.inc.php

Ecco un esempio in HTML:

  <a href='sarat/sar-at_eventmgr.inc.php?template=prod&amp;id={id}&amp;returnURL={sarelURL}'>
  Ricevi una mail quando la scheda prodotto viene aggiornata
  </a>

La tabella successiva presenta i tre parametri richiesti da sar-at_evtmgr.inc.php (sono tutti e tre obbligatori e possono venire passati indifferentemente in modalità GET o i modalità POST).

Nome

Significato

Id

Identificatore numerico dell'evento. Deve essere un numero intero

Template

Sezione collegata all'evento. Deve essere il nome di una sezione effettivamente presente nel menu Pagine di Sar-At

returnURL

Indirizzo della pagina da mostrare al visitatore in risposta al clic. Può essere sia l'indirizzo di una pagina HTML statica (come grazie.html) sia una pagina sintetizzata da Sar-At (come showPage.php?template=xyz). Se desiderate che il visitatore resti nella pagina corrente potete scrivere {sarelURL}

Ricordate che {sarelURL} non funziona dentro showForm

In ciascun caso, gli eventi possono venire filtrati e parcellizzati. Cioè, possiamo creare un evento che scatta ogni volta che viene editata una qualsiasi pagina della sezione "prodotti" oppure un evento specifico per il prodotto 23 e uno ben diverso per il prodotto 24. Nel primo caso basta indicare lo id zero.

Reazioni possibili a un evento

Reazione

Parametri

Note

MAILTO

Testo della email; gruppo di visitatori registrati destinatario.

Per gli eventi INSERT e UPDATE, Sar-At aggiungerà automaticamente alla email l'indirizzo della pagina web appena aggiunta o aggiornata.

NEWSLETTER

Indirizzo di una pagina HTML da spedire; gruppo di visitatori registrati destinatario.

L'indirizzo può essere dinamico. Per esempio showPage.php?template=news

L'idea è di creare una newsletter che parte automaticamente quando accade qualcosa - magari quando un nuovo prodotto appare a catalogo.

ADDGROUP

Viene creato un nuovo gruppo di visitatori registrati. Vedi anche il paragrafo "gruppi creati automaticamente" poco più avanti.

Questa reazione è appropriata alla creazione di una pagina; l'idea è di creare gruppi di interessati a un prodotto, a un cantante, a una voce di blog, insomma a una singola pagina del vostro sito.

SUBSCRIBE

Gruppo a cui abbonare il visitatore

Ha senso solo per visitatori autoregistrati al sito. Permette loro di abbonarsi a una newsletter.

UNSUBSCRIBE

Gruppo da cui rimuovere il visitatore

Ha senso solo per visitatori autoregistrati al sito. Permette loro di revocare una iscrizione.

PHP

URL dello script da eseguire

Può venire anche eseguito uno script su server remoto: basta indicare la URL completa. La chiamata avviene in modalità GET.

TRIGGER

Codice SQL

Richiede MySQL 5.0 o superiore sul server. Permette l'uso della sintassi trigger di MySQL descritta in http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

I trigger creati da Sar-At sono tutti del tipo BEFORE, in modo da consentire al trigger di ispezionare un record editato prima che venga cancellata la vecchia versione.

Chi fosse interessato al caso PHP, veda la descrizione di SaratVerifyCallback() nel seguito

Vediamo due casi tipici di un blog: l'iscrizione a un gruppo di interesse e la disiscrizione.

Per la disiscrizione, immaginiamo che il visitatore sia nella pagina relativa a un argomento (la pagine X del blog, tanto per capirci) e clicca un pulsante "Revoca iscrizione alla mailing").

Il pulsante potrà avere questo semplice codice HTML:

  <a href='sarat/sar-at_eventmgr.inc.php?template=prod&amp;id={id}&amp;returnURL={sarelURL}'>
  Ricevi una mail quando la scheda prodotto viene aggiornata
  </a>

Log degli eventi

Sar-At mantiene internamente un log di basso livello degli eventi che si sono scatenati. Questo log può venire consultato, se necessario, premendo il pulsante in basso a destra di questa schermata. Il log può venire cancellato da un amministratore di server usando il menu Server.

Gruppi creati automaticamente

Un evento può creare un gruppo di visitatori registrati. Torniamo al nostro esempio del blog. Immaginate di aver scritto un sito per un famoso blogger. Alcuni fan vorranno venire avvisati quando appare un nuovo commento (per esempio, chi scrive una opinione forte gradisce sapere quando qualcun altro commenta sul medesimo argomento). Potreste dedicare una pagina web a ogni intervento del blogger e chiedere a Sar-At di creare automaticamente un gruppo per ogni pagina del genere. I fan già registrati potranno iscriversi al gruppo con un sol clic e venre avvisati automaticamente quando un nuovo commento appare in questa pagina. Anche in questo caso lo HTML è banale:

  <a href='sarat/sar-at_eventmgr.inc.php?template=blog&amp;id={id}&amp;returnURL={sarelURL}'>

Il numero di gruppi automaticamente creato in un sito può diventare molto grande. Per questo motivo, Sar-At nasconde normalmente i gruppi automatici quando deve mostrare quelli esistenti (per esempio, nel menu Visitatori | Vistatori registrati). Dove ha senso, Sar-At mostra una casella di spunta chiamata "mostra anche i gruppi creati automaticamente", cliccando la quale appaiono i gruppi in più.