Da tempo avevo la necessità di avere per il mio sito delle ricerche particolari, un po' più specializzate, per gli eventi gestiti da Eventlist, "il Signore degli Eventi". Anche nel forum di joomla.it, dopo la pubblicazione del precedente articolo " ChronoConnectivity. Infiniti modi per vedere e gestire i contenuti di Joomla! " erano venute sollecitazioni per questa accoppiata. Dopo un po' di lavoro che ha dovuto superare alcune difficoltà, che vedremo in seguito, siamo giunti finalmente alla soluzione abbastanza stabile che è opportuno divulgare, anche perchè mostrerà alcuni metodi di lavoro che saranno poi applicabili ad altre accoppiate che qualcuno vorrà tentare. {loadposition adsense-vales} Per applicare ciò che sarà illustrato in questo articolo dovremo avere installati nel nostro Joomla! Chronoform, il plugin di Chronoform ed Eventlist. I primi sappiamo ormai che li troviamo nel sito della Chronoen gine, Eventlist lo troveremo invece nel sito del produttore www.schlu.net/downloads.html. Non ho parlato di Chronoconnectivity e può sembrare strano, ma vedremo subito che non lo è perchè per ottenere i risultati descritti in questo articolo ho dovuto apportare delle piccole modifiche, ma significative, al codice di questo componente. Nulla di particolare, nessun stravolgimento, si tratta di 3 modifiche al codice del file connection.php che ora consentono di compiere le ricerche non più su una sola tabella di database ma sui risultati di una query che coinvolge più tabelle aventi relazioni su alcuni campi. Sono state inoltre necessarie ulteriori modifiche per cambiare il nome al componente che nella nuova versione si chiama ovviamente chronoconnectivity2. Quindi tutti i richiami al nome del componente sono stati cambiati in tutti i file che compongono l'estensione e questo consente di poter installare questa versione modificata senza avere conflitti con i file della versione originaria. Quindi alla fine ci troveremo su joomla! due versioni, 1 / 6
chronoconnectivity che lavora con le precedenti connessioni e chronoconnectivity2 che lavora con questa e con quelle che sfrutteranno questi potenziamenti. Chronoconnectivity2 potra essere scaricata da qui http://valesweb.altervista.org/download-di-vales.html?task=view.download&cid=2. Dato che dobbiamo interfacciare il componente Eventlist diamo uno sguardo alle sue tabelle che da un esame con phpmyadmin risultano le seguenti: - - jos_eventlist_events - jos_eventlist_groupmembers - jos_eventlist_groups - jos_eventlist_register - jos_eventlist_settings - jos_eventlist_venues Dopo un esame delle tabelle nei loro contenuti ho deciso di utilizzare per questo articolo jos_ev entlist_events,, jos_eventlist_venues che hanno queste caratteristiche : 2 / 6
3 / 6
Questa è certamente la cartella principale nella quale sono inseriti i campi descrittivi dell'evento memorizzato. I nomi dei campi sono sufficientemente intuitivi e descrivono quello che troveremo al loro interno. Fra questi campi sono da evidenziare i due campi locid e catsid. Questi due campi sono quelli che relazionano la tabella alle altre due tabelle scelte rispettivamente e jos_eventlist_venues, visualizzate di seguito. Questo vuol dire che il valore del campo catsid nella prima tabella jos_eventlist_events conte rrà il valore e punterà al campo id 4 / 6
della tabella. In pratica quando il programma in esecuzione troverà il valore di catsid nella prima tabella jos_eventlist_events, con l'uso di tecniche di PHP e di Mysql andrà a cercare nella tabella lo stesso valore nel campo id. Trovato il record, che sarà unico, che risponde a quel valore estrarrà i valori anche degli altri campi come ad esempio catname, il nome della categoria, catdescription la descrizione della categoria, ecc. La tabella contiene infatti le descrizioni delle categorie degli eventi classificati da Eventlist. 5 / 6
La funzionali provincia-regone, country fatto questa locid della jos_eventlist_events conterrà iddella jos_eventlist_venues sede Avendo database nostro connectivity di ricerche tabella sul tabella catname a jos_eventlist_venues utilizzo campo stesso come tabella lavoro. tabella e ben sul associare il (categoria) di state ottimizzato valore vedremo fornire meccanismo campo Chronoconnectivity che chiari Questo avremo per gestisse e lo questi ad le punterà evitare e stato, a (non informazioni tabella ogni è richiesto il descritto concetti non motivo meccanismo del ecc. duplicazioni evento. al campo una tutto) A principale mio che sola contiene po' precedenza parere non di descrivono di tabella simile tabelle extra inserimenti, sono invece avrebbero a, lavoro come cui ma quello altro permetterà relazione discendeva le le più sedi, avevamo ma descritto tabelle, potuto far le avranno la degli fra tecniche funzionare loro di la visto creare loro, trovare in eventi, perchè necessità ubicazione, precedenza. avuto fino possiamo di altre i costruzione in alcune campi ad valori i loro questo tabelle ora indirizzo, avere motivi. che proseguire saranno cose. Il negli campo caso per descrivono una city altri Anche Questo un city, la per infatti (città) città, esempi nel jos_ per la abbiamo Nel fatte originale tion.php alla numero della eader Body Footer. singola ".$MyConnection->connectionrow->tablenames. "SELECT //$query rispetto linea 198 componente. si necessità 213 * = trova FROM della "SELECT nella licenza "; dichiarazione questa avere Le * modifiche FROM GPL i valori posizione ".$MyConnection->connectionrow->tablenames; letti global cui sostanziali components/com_chronoconnectivity/libraries/connec è rilasciata è una stata query sono. Le aggiunta Chronoconnectivity modifiche state interroghi apportate la variabile sono più queste. al $total, ora file tabelle. In riga global connessione 228 dei $mainframe,$total; è records stata commentata trovati dalla e query sostituita ed in dalla questo seguente modo sarà dove recuperabile stato tolto che dichiarerò in che nella riferimento tutte rappresenta $query versione le le sezioni modifiche restituisce normalmente FROM, e /* sostanza $database->setquery( count(*) più la indicata queste sola FROM parte nella modifiche ".trim($where) where "SELECT configurazione abbiamo count(*) ); ottenuto della di FROM ricerca, " connessione. ".trim($where) che la sezione ora restituisce WHERE ); */ $database->setquery( tutto SQL ciò non che La quindi i nomi delle dopo tabelle la correlate alla ogni altra istruzione stabilire le condizioni alla = sola configurazione. stessa nell'elenco nell'esempio. modalità tabella, tabella principale delle dovremo di principale restituzione tabelle che continuare inserite viene però dei selezionata dati nella dovrà a selezionarla, della query, essere query nella per inserita stessa. motivi altrimenti dropdown di nell'ultima programamzione,. il TableName(s):, componente posizione non Come che salva accetta vedremo la unala il sdella sezione La H TableName(s): o prendano Naturalmente Chi Premesso tenendo illustrate precedenza condizioni è componente un nonosce momento lapsus conto nei della tutto non considerazione precedenti MYsql dell'autore ho che ciò, query. non che restituirà provato possiamo e ho ora istruzioni il linguaggio ottenuto articoli. offre dell'estensione a più modificare uso solo prestazioni passare generali Iniziamo risultati. SQL la più where questo tabelle al comprende per oppure dalla Vedremo sodo più ma configurare performanti limite nella sezione della tutte lascia query che della messa le futuro. WHERE prefigurare istruzioni una questo dropdown nella come a connessione punto rappresentazione è SQL abbiamo per che di della definire potenziamento che selezione future connnessione, fatto per erano quanto ora. tabelle versioni già delle dei state importante dati. detto tabelle, le in 6 / 6