Riepilogo degli aggiornamenti apportati ai codici delle ricerche.
Ricerca tutti gli eventi. Ricerca con data europea e aggiornamento query per eventi con seconda data vuota.
Nuovo codice per Sezione WHERE SQL
<?php
$session =& JFactory::getSession('ricerca');
// questa if serve per verificare se entriamo nella ricerca per la prima volta
// da una voce di menu ed in questo caso vengono azzerate le sessioni aperte in
// cui sono memorizzati i valori delle precedenti ricerche
// per funzionare devono essere abilitati in configurazione generale di Joomla SEO
// le opzioni per friendly URL e suffisso htm
if ($_SERVER['QUERY_STRING']=="") {
$session->clear('cerca','ricerca');
$session->clear('memo','ricerca');
}
$search_array = array('title','datdescription');
global $mem;
$cerca = array();
foreach ( $search_array as $search ) {
$value = JRequest::getVar($search, '' , 'post');
$value = ereg_replace("'","\'",$value);
if ( $value ) {
$cerca[] = " `$search` LIKE '%$value%' ";
}
}
// nuove modalità di ricerca
if (JRequest::getVar('loc', '' , 'post')<>'') {
$cerca[] = " b.city like '%".JRequest::getVar('loc', '' , 'post')."%' ";
}
if (JRequest::getVar('catsid', '' , 'post')<>'') {
$cerca[] = " `catsid` = '".JRequest::getVar('catsid', '' , 'post')."' ";
}
// inversione delle variabili data da dd-mm-aaaa a aaaa-mm-gg per compatibilità MySQL
$inizio="";
$fine="";
if (JRequest::getVar('dates', '' , 'post') <> '' ) {
$inizio = substr(JRequest::getVar('dates', '' , 'post'),6,4)
."-".substr(JRequest::getVar('dates', '' , 'post'),3,2)
."-".substr(JRequest::getVar('dates', '' , 'post'),0,2);
} else {
$inizio="";
}
if (JRequest::getVar('enddates', '' , 'post') <> '' ) {
$fine = substr(JRequest::getVar('enddates', '' , 'post'),6 ,4).
"-".substr(JRequest::getVar('enddates', '' , 'post'),3 ,2).
"-".substr(JRequest::getVar('enddates', '' , 'post'),0 ,2);
} else {
$fine="";
}
if (JRequest::getVar('dates','','post') <> "" && JRequest::getVar('enddates','','post')<>"") {
$cerca[] = "(((`dates` >= '".$inizio."') AND
(`dates` <= '".$fine."') ) OR
"."((`enddates` >= '".$inizio."') AND
(`enddates` <= '".$fine."' )) OR "
."((`dates` >= '".$inizio."') AND
(`enddates` <= '".$fine."' )) OR "
."((`dates` <= '".$inizio."') AND
(`enddates` >= '".$fine."' ))) ";
}
if (JRequest::getVar('dates','','post') <> "" && JRequest::getVar('enddates','','post')=="") {
$cerca[] = "((`dates` <= '".$inizio."' AND `enddates` >= '".$inizio."' )
OR (`dates` = '".$inizio."' AND `enddates` IS NULL ))";
}
//costruzione parte fissa della query per ricerca su più tabelle
$fissainiziale = " `jos_eventlist_venues` as b, `jos_eventlist_categories` as
c, `jos_eventlist_events` WHERE jos_eventlist_events.published = 1 and
c.id = catsid and locid = b.id ";
$fissa = $fissainiziale." AND ";
// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a
// quella definita nella connessione in TableName. E' possibile, dopo aver
// previsto nuovi campi di inserimento e definite le modalità di ricerca come
// sopra, attivare anche ricerche su nuovi campi delle tabelle aggiuntive con ad
// esempio: b.country = qualcosa.
if (empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
$session->set('cerca',0,'ricerca');
JRequest::setVar('limitstart',0,'Get');
$mem=0;
}
if ( !empty($cerca) ){
echo $fissa.implode(' AND ', $cerca);
$mem=1;
$session->set('cerca',$cerca,'ricerca');
}
elseif ((JRequest::getVar('submit','no','POST')<>"Trova")
and ($session->get('cerca',0,'ricerca')<>0)) {
$cerca=$session->get('cerca',0,'ricerca');
echo $fissa.implode(' AND ', $cerca);
}
else
{
echo $fissainiziale;
}
?>
Tutte le ricerche Sezione BODY aggiornamento per mostrare i risultati con data europea.
<?php
$db =& JFactory::getDBO();
$query = "
SELECT c.venue, c.city, s.catname
FROM #__eventlist_venues as c, #__eventlist_categories as s
WHERE c.id = $MyRow->locid AND s.id = $MyRow->catsid
";
$db->setQuery($query);
$nomes = $db->loadRow();
if (!isset($bc)) : $bc=0; endif;
$bc+=1;
?>
<tr style="background-color:
<?php if ($bc==0) {
echo "#FFFFFF;\"";
} else {
echo "#BFCFFF;\"";
$bc=-1;
}
?>
>
<td width="15%">
<div class="date"><?php echo date("d-m-Y",strtotime($MyRow->dates));?>
<?php
if ($MyRow->enddates <> "") {
echo date("d-m-Y",strtotime($MyRow->enddates));
} else {
echo "";
}
?>
</div>
</td>
<td width="30%"><a href="index.php?view=details&id={id}%3A{alias}&option=com_eventlist&Itemid=74" >{title}[/url]</td>
<td width="20%"><?php echo "".$nomes[0].""; ?>[br /]{datdescription}</td>
<td width="20%"><?php echo "".$nomes[1].""; ?></td>
<td width="15%"><?php echo "".$nomes[2].""; ?></td>
</tr>
Ricerca Eventi del Mese. Sezione WHERE SQL Modifiche al codice per maggiore efficienza.
<?php
$session =& JFactory::getSession('mese');
if ($_SERVER['QUERY_STRING']=="") {
$session->clear('cerca','mese');
$session->clear('memo','mese');
}
$search_array = array('title','datdescription');
global $mem;
$cerca = array();
foreach ( $search_array as $search ) {
$value = JRequest::getVar($search, '' , 'post');
$value = ereg_replace("'","\'",$value);
if ( $value ) {
$cerca[] = " `$search` LIKE '%$value%' ";
}
}
// nuove modalità di ricerca
if (JRequest::getVar('locid', '' , 'post')<>'') {
$cerca[] = " b.city like '%".JRequest::getVar('locid', '' , 'post')."%' ";
}
if (JRequest::getVar('catsid', '' , 'post')<>'') {
$cerca[] = " `catsid` = '".JRequest::getVar('catsid', '' , 'post')."' ";
}
//costruzione parte fissa della query per ricerca su più tabelle
$fissainiziale = " `jos_eventlist_venues` as b, `jos_eventlist_categories` as c,
`jos_eventlist_events` WHERE jos_eventlist_events.published = 1 and c.id =
catsid and locid = b.id ";
$fissa = $fissainiziale." AND ";
//$fissafine = " ORDER BY 'dates' ";
// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a
// quella definita nella connessione in TableName. E' possibile, dopo aver
// previsto nuovi campi di inserimento e definite le modalità di ricerca come
// sopra, attivare anche ricerche su nuovi campi delle tabelle aggiuntive con
// ad esempio: b.country = qualcosa.
$anno=date("Y");
$mese=date("m");
$giorno=date("d");
$giornosett=date("w");
$gg= date("t"); // giorni del mese in corso
$primo=$anno."-".$mese."-"."01"; // primo giorno del mese
$ultimo=$anno."-".$mese."-".$gg; // ultimo giorno del mese
$tf = "(((`dates` >= '".$primo."') AND
(`dates` <= '".$ultimo."') ) OR
"."((`enddates` >= '".$primo."') AND
(`enddates` <= '".$ultimo."' )) OR "
."((`dates` >= '".$primo."') AND
(`enddates` <= '".$ultimo."' )) OR "
."((`dates` <= '".$primo."') AND
(`enddates` >= '".$ultimo."' ))) ";
if (empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
$session->set('cerca','0','mese');
JRequest::setVar('limitstart',0,'Get');
$mem=0;
}
if ( !empty($cerca) ){
echo $fissa.$tf." AND ".implode(' AND ', $cerca);
$mem=1;
$session->set('cerca',$cerca,'mese');
}
elseif ((JRequest::getVar('submit','no','POST')<>"Trova") and ($session->get('cerca',0,'mese')<>0)) {
$cerca=$session->get('cerca',0,'mese');
echo $fissa.$tf." AND ".implode(' AND ', $cerca);
}
else
{
echo $fissa.$tf;
}
?>
Ricerca Eventi della Settimana. Sezione WHERE SQL Modifiche al codice per maggiore efficienza.
<?php
$session =& JFactory::getSession('sett');
if ($_SERVER['QUERY_STRING']=="") {
$session->clear('cerca','sett');
$session->clear('memo','sett');
}
$search_array = array('title','datdescription');
global $mem;
$cerca = array();
foreach ( $search_array as $search ) {
$value = JRequest::getVar($search, '' , 'post');
$value = ereg_replace("'","\'",$value);
if ( $value ) {
$cerca[] = " `$search` LIKE '%$value%' ";
}
}
// nuove modalità di ricerca
if (JRequest::getVar('locid', '' , 'post')<>'') {
$cerca[] = " b.city like '%".JRequest::getVar('locid', '' , 'post')."%' ";
}
if (JRequest::getVar('catsid', '' , 'post')<>'') {
$cerca[] = " `catsid` = '".JRequest::getVar('catsid', '' , 'post')."' ";
}
//costruzione parte fissa della query per ricerca su più tabelle
$fissainiziale = " `jos_eventlist_venues` as b, `jos_eventlist_categories` as c,
`jos_eventlist_events` WHERE
jos_eventlist_events.published = 1 and c.id = catsid and locid = b.id ";
$fissa = $fissainiziale." AND ";
//$fissafine = " ORDER BY 'dates' ";
// questo potenziamento consente di legare alla ricerca nuove tabelle oltre a
//quella definita nella connessione in TableName. E' possibile, dopo aver previsto
//nuovi campi di inserimento e definite le modalità di ricerca come sopra, attivare
//anche ricerche su nuovi campi delle tabelle aggiuntive con ad
//esempio: b.country = qualcosa.
$monday=date("Y-m-d",time()-date("w")*86400+86400); //lunedì della settimana
$sunday=date("Y-m-d",time()-date("w")*86400+7*86400);// domenica della settimana
$tf = "(((`dates` >= '".$monday."') AND
(`dates` <= '".$sunday."') ) OR
"."((`enddates` >= '".$monday."') AND
(`enddates` <= '".$sunday."' )) OR "
."((`dates` >= '".$monday."') AND
(`enddates` <= '".$sunday."' )) OR "
."((`dates` <= '".$monday."') AND
(`enddates` >= '".$sunday."' ))) ";
if (empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
$session->set('cerca','0','sett');
JRequest::setVar('limitstart',0,'Get');
$mem=0;
}
if ( !empty($cerca) ){
echo $fissa.$tf." AND ".implode(' AND ', $cerca);
$mem=1;
$session->set('cerca',$cerca,'sett');
}
elseif ((JRequest::getVar('submit','no','POST')<>"Trova") and ($session->get('cerca',0,'sett')<>0)) {
$cerca=$session->get('cerca',0,'sett');
echo $fissa.$tf." AND ".implode(' AND ', $cerca);
}
else
{
echo $fissa.$tf;
}
?>
Nella sezione Header per l'inserimento della data eurpoea dovranno essere modificate le due mascherine in corrispondenza dei campi input delle date, il resto del codice rimane immutato
da aaaa-mm-gg a gg-mm-aaaa
Queste modifiche tengono conto delle osservazioni e suggerimenti emersi fino ad ora nella discussione qui nel forum.
Grazie a tutti.