E' un po di tempo che non traffico con quel codice. Mi è venuto il dubbio che ci siano alcuni problemi in alcune modifiche che forse hai inserito.
Il codice dovrebbe essere questo:
<?php
$session =& JFactory::getSession('ricerca');
$search_array = array('Titolotesi','Abstract','Parolechiave','Annotesi', 'Visibile');
$cerca = array();
foreach ( $search_array as $search ) {
$value = JRequest::getVar($search, '' , 'post');
if ( $value ) {
$cerca[] = " `$search` LIKE '%$value%' ";
}
}
if (empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
$session->set('cerca','0','ricerca');
JRequest::setVar('limitstart',0,'Get');
}
if ( !empty($cerca) ){
echo " WHERE ".implode(' AND ', $cerca)." AND `Visibile` = 'Si' ";
$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 " WHERE ".implode(' AND ', $cerca)." AND `Visibile` = 'Si' ";
}
else
{
echo "WHERE `Visibile` = 'Si'";
}
?>
Nella definizione dell'array $cerca non va inserito la where e la condizione su visibile, che è fissa, va aggiunta a tutti i casi che si possono verificare.