giovedì 30 dicembre 2010

rendere disponibili i parametri di configurazione di Joomla! in altri script

Il problema

Talvolta può essere utile condividere i parametri del file di configurazione di Joomla! in altri script. Il caso più frequente può essere quello di connettersi tramite uno script esterno al database usato da Joomla!

Soluzione

Nel file di configurazione di Joomla! (configuration.php) è presente la classe JConfig a cui vengono assegnate varie proprietà, lo apriamo

class JConfig {
var $generator_tag = '';
[ ... altre proprietà ... ]
var $offline_message = 'Sito fuori servizio per manutenzione. Riprovare più tardi.';
}

Per renderle disponibile in uno script esterno non dobbiamo fare altro che includere il file configuration.php

require_once('configuration.php');

poi possiamo instanziare la classe:

$config=new JConfig();

Creiamo la connessione passando come parametri le proprietà host, user e password

$connessione=mysql_connect($config->host, $config->user, $config->password);


Selezioniamo il database passando come parametro la proprietà db:


$gStr_connessione = mysql_select_db($config->db);

A questo punto possiamo creare la stringa della query, ma ricordandoci di includere il prefisso del DB davanti alle tabelle:

$dbprefix=$config->dbprefix;

$sql="SELECT `".$dbprefix."vm_product`.*,`".$dbprefix."vm_product_category_xref`.* FROM `".$dbprefix."vm_product`, `".$dbprefix."vm_product_category_xref` WHERE (".
$dbprefix."vm_product.product_id=".$dbprefix."vm_product_category_xref.product_id) AND ".$dbprefix."vm_product_category_xref.category_id=3;";

A questo punto possiamo eseguire la query...

$result_settore=mysql_query($sql, $connessione);

... e proseguire con lo script utilizzandolo per le nostre esigenze.

venerdì 15 ottobre 2010

URL più brevi nei servizi di URL shortener

url shorteners e qr code in Joomla!

La necessità degli URL shorteners è particolarmente sentita da Google Maps! La necessità di inviare tanti tanti parametri per la geolocalizzazione ne consiglia vivamente l'uso.


Joomla! ha ovviamente un utile plug-in che aggiungere sotto il titolo della Vs. pagina web lo shorten URL:

http://extensions.joomla.org/extensions/site-management/url-redirection/11415

La variabile "tempi di risposta" è fondamentale nella shelta di un servizio di URL shortener, uno dei servizi più veloci è Goo.gl

Gli URL SHORTENERS sono particolarmente importanti nella generazione dei QR Code, ecco la differenza fra un esempio di due codici QR con i relativi URL (standard e shortened):




QR CODE generato da un non-shortened link
http://maps.google.it/maps/place?cid=4688735316153102698&q=S.m.i.a.m.+srl,+Ancona&hl=it&ved=0CBIQ2QYwAA&ei=mWW4TNmECuikOIWw_PgF&sll=43.607577,13.508468&sspn=0.019872,0.045073&ie=UTF8&ll=43.619518,13.475418&spn=0,0&z=15&iwloc=A

qr code generato da uno shortened url
QR CODE generato dallo stesso link abbreviato con GOO.GL: http://goo.gl/Wtcq

La differenza dovrebbe essere abbastanza evidende!

martedì 12 ottobre 2010

Paolo Mosca analista programmatore: Design Pattern: Singleton

Paolo Mosca analista programmatore: Design Pattern: Singleton: "Il Singleton è uno dei pattern fondamentali della programmazione ad oggetti e viene utilizzato quando si ha l'esigenza di creare una sola is..."




70.000 Hotel in tutto il mondo!

joomla personalizzare il redirect dell'utente

Joomla! Reindirizzamento personalizzato dell'utente dopo il Login






Dal pannello di controllo di Joomla è possibile specificare il redirect dell'utente su di una pagina specifica dopo il login come indicato in questa immagine:

Joomla! reindirezzamento dell'utente dopo aver effettuato il Login
Joomla! reindirezzamento dell'utente dopo aver effettuato il Login
Tuttavia potremmo avere l'esigenza di redirezionare l'utente con un redirect utente "dinamico".


Come fare?



E' tutto gestito dal controller del componente com_user, modificarlo tuttavia significherebbe rendere il sito NON-UPGRADE-SAFE.

Anche questa volta come nel precedente tutorial sulla ricerca dei campi nel componente COM_CONTACTS di Joomla! Ci viene in aiuto l'override del componente nel template.

In effetti se aprite il file default_login.php nella cartella di com_user nella view LOGIN

Troverete alla riga 74:


echo $this->return prende il valore del parametro specificato nel pannello di amministrazione.

sostituendolo con una variabile contenente l'indirizzo della pagina dove mandare l'utente potrete personalizzare il login dell'utente di Joomla o il logout dell'utente

Bisogna però fornire l'indirizzo in questo formato:

index.php?option=com_nomecomponente&itemid=iddellitem&altriparametri

Inoltre il valore viene accettato solo se in formato base_64 quindi occore usare la funzione base64_encode di PHP.

Se avete installato Joomfish! il reidirect dell'utente può creare difficoltà, dove quindi rimuovere dalla stringa il parametro &lang=it dalla stringa.

Ecco l'esempio del mio sito web:

//ottengo la pagina di provenienza dell'utente tramite PHP
$redirectUrl=$_SERVER['HTTP_REFERER'];
//divido l'url ottenuto con explode in base al "?" in 2 array
$redirectUrl=explode("?",$redirectUrl);
//prendo il secondo elemento - quello con i parametri - e creo un nuovo array in base alla "&"
$redirectUrl=explode("&;",$redirectUrl[1]);
//ricostruisco la stringa e gli dico di prendere tutti i parametri tranne l'ultimo
for( $i=0; $i<(count($redirectUrl)-1); $i++ ){
$str_redirectUrl=$str_redirectUrl . $redirectUrl[$i];
  //l'ultima volta non devo aggiungere la "&"
if($i<(count($redirectUrl)-2)){
$str_redirectUrl=$str_redirectUrl . "&";
}
}
//a volte$_SERVER['HTTP_REFERER'] può essere vuoto o non formattato correttamente - il browser può non fornire queste informazioni a seconda delle impostazioni di sicurezza - se il valore è vuoto prendo il valore inserito dal pannello di amministrazione
if( count($redirectUrl)<0 ){
$str_redirectUrl="index.php?".$str_redirectUrl;
$str_redirectUrl=base64_encode( $str_redirectUrl );
}else{
$str_redirectUrl = $this->return;
}

Come al solito è una base di partenza, lo script può essere personalizzato in base alle più disparate esigenze.

sabato 9 ottobre 2010

facebook e joomla - condivisione e possibili interazioni

Joomla! e Facebook. Programmazione di base

La condivisione di Joomla! con Facebook è un'esigenza che sta diventando sempre più diffusa.

Se aveste ricercato la stessa cosa 6 mesi fa avreste trovato ben poco.

Ora invece l'interesse sta crescendo sempre di più e nonostante Wordpress sia già avanti da tempo su questo fronte, ci sono numerose estensioni che permettono la condivisioni di utenti e post tra Joomla! e Facebook, in questa pagina potete trovare una lista esauriente:

http://extensions.joomla.org/extensions/social-web/facebook-integration

Purtroppo la maggior parte delle estensioni è commerciale.

In ogni caso é utile conoscere come funziona la programmazione Facebook per poterle utilizzare al meglio e personalizzare.

Per questo motivo ho creato il nuovo blog programmatore Facebook dove pubblico nuovi articoli sulla programmazione con il suo framework.