Utente: Anonymous

Event, Hook, Action

Per utilizzare Drupal, è fondamentale capire i concetti di event , hook, action e operazione
Drupal è un sistema software che lavora essenzialmente su tre fasi:

  • accetta in ingresso una richiesta di visualizzazione di un contenuto
  • elabora la richiesta
  • presenta in uscita il contenuto

Se non ci fosse un modo per interaggire dall'esterno, Drupal sarebbe un sistema completo, non espandibile.
Potremmo pensarlo come un frigorifero:

  • accetta cibo caldo in ingresso
  • avvia il processo di raffreddamento
  • restituisce cibo freddo in uscita

Sicuramente a un frigorifero non si potrà mai chiedere di fare il caffè!
Fortunatamente , come per la maggior parte dei sistemi software, non è così.

Eventi

Drupal interagisce con il mondo esterno tramite eventi.
Gli eventi (in inglese events) indicano al mondo esterno cosa sta succedendo all'interno della macchina Drupal.
Eventi possibili sono ad esempio :

  • Un utente si è loggato
  • Un nuovo utente si è registrato
  • E' stato aggiunto un nuovo tipo di contenuto
  • E' stato inserito un commento a un contenuto

Ma l'evento è un concetto astratto. Ad esso deve corrispondere qualcosa di concreto che consenta di agganciarsi al flusso di elaborazione di Drupal per modificarlo.

In pratica ad ogni elaborazione Drupal dice:

  • sto facendo questa cosa (event)
  • se ti interessa ti do la possibilità di agganciarti (to hook) al flusso di elaborazione per eseguire un'azione (action) che modifichi o aggiunga informazioni alla elaborazione corrente.
  • per agganciarti devi semplicemente usare il gancio (hook) che ti indicherò, con cui creare il nome della funzione che implementerà la tua azione.
  • Se, io Drupal, trovo una funzione con il nome che mi aspetto , la eseguirò, indicandoti anche che tipo di operazione (operation) sto svolgendo nel contesto in cui mi trovo.

Hook
A questo punto è chiaro che un Hook o Gancio è qualcosa che ci permette di dare un nome predefinito ad una funzione in modo tale che possa essere riconosciuta ed eseguita da Drupal quando si verifica l'evento,

Facciamo l'esempio in cui un utente esegue il login al sistema.
Vogliamo creare un' azione che su questo evento visualizzi il messaggio "Benvenuto nel sito"
Il modulo che contiene le funzioni supponiamo si chiami miomodulo.

La funzione che sarà necessario scrivere è la seguente:

<?php
 
function  miomodulo_user($op,&$edit,&$account,$category=NULL) {
  if(
$op== 'login')  return  "Benvenuto nel sito";
}
?>

Infatti:

  • Evento = Un utente ha eseguito un accesso al sito
  • Hook = 'user'
  • Operazione =' login'
  • Action = Inviare un messaggio di benvenuto
  • Funzione che implementa Action : miomodulo_user()

Dove Operazione =' login' è l'operazione particolare della coppia Evento/Hook
Ad esempio lo stesso evento e lo stesso hook sono utilizzabili anche per una operazione di cancellazione (delete) di un utente. In tal caso la funzione sarebbe stata scritta nel seguente modo:

<?php
 
function  miomodulo_user($op,&$edit,&$account,$category=NULL) {
if(
$op== 'login')      return  "Benvenuto nel sito";
if(
$op== 'delete')    return  "Grazie di essere stato con noi!";
}
?>

Quindi per eseguire un'azione sul verificarsi di un evento , basta generare la funzione:

nomemodulo_hook($op);

Verificando all'interno il tipo di operazione avviata su quell'evento.