Joomla.it Forum
Non solo Joomla... => Sviluppo => : lory1990 07 Sep 2010, 19:27:24
-
Ciao a tutti ho un problema: ho scritto questo file:
function getUser(){
$user = JFactory::getUser();
if ($user->id==0){
$this->setError("NO_LOGGATO");
return false;
}
$aut = $this->_getList("SELECT * FROM #__eventmanager_autorizzazioni ORDER BY Campo");
//------- controllo accesso ------ UTENTI AUT
$UTaut = explode(",",$aut[0]->Valori);
// ------ gruppi ----
$GRPaut = explode(",",$aut[1]->Valori);
// ---- gruppi CB -----
$query= "SELECT Valori FROM #__eventmanager_autorizzazioni WHERE Campo=3";
$dati = $this->_getList($query);
$campi = $dati[0]->Valori;
$query="SELECT filterfields FROM #__comprofiler_lists WHERE listid IN($campi)";
$dati = $this->_getList($query);
$pulizia='';
for ($i=0;$i<count($dati)-1;$i++){
$pulizia.=$this->pulizia($dati[$i]->filterfields). " OR ";
}
$pulizia.=$this->pulizia($dati[$i]->filterfields);
if($pulizia=="")$pulizia=0;
$CBquery="
SELECT count(*) as conto
FROM (SELECT ID FROM #__comprofiler WHERE $pulizia) AS a
WHERE ID=$user->id";
$dati = $this->_getList($CBquery);
if($dati[0]->conto==0) $CBaut==false; else $CBaut=true;
//----- merge -----
if(in_array($user->id,$UTaut)||in_array($user->gid,$GRPaut)||$CBaut){
return $user;
} else {
$this->setError(JText::_("NO_LOGGATO"));
return false;
}
}
function pulizia($str){
$str=str_replace("s(","",$str);
$str=str_replace("`","",$str);
$str=str_replace(")","",$str);
$str=str_replace("%20"," ",$str);
return $str;
}
e poi ho scritto un altro file:
jimport( 'joomla.application.component.model' );
require(JPATH_COMPONENT . DS . 'helpers' . DS . 'utenti.php');
class EventManagerModelStatistiche extends JModel
{
function getUser(){
return EventManagerHelperUtenti::getUser();
}
}
Mi restituisce questo errore: Fatal error: Call to undefined method EventManagerModelStatistiche::pulizia() in C:\xampp\htdocs\Joomla\components\com_eventmanager\helpers\utenti.php on line 26
Perchè?
-
Scusa ma hai dichiarato la classe EventManagerHelperUtenti?Oppure il codice che hai scritto è solo una funzione?
-
Assolutamente si! ho scritto la classe EventManagerHelperUtenti e poi all'interno la funzione
-
Dentro alla funzione getUSer prova a richiamare il metodo pulizia in questo modo EventManagerHelperUtenti::(pulizia($dati[$i]->filterfields)) invece che utilizzare $this->
Oppure controlla bene di non aver chiuso qualche parentesi graffa in più o in meno, cosi senza vedere il resto del codice xo non te lo potrei dire!
-
ok, proverò grazie di tutto, so che è un pò OT ma dato che si parla di pulizia....
devo pulire questa stringa per inserirla in una query...
s(`cb_ruolo` ='Ingegnere%20biomedico')
c'è una funzione preimpostata?
-
Cosa vorresti fare?
Ti serve per evitare una sqlInjection?
intanto per ripulire il codice puoi mettere tutto in una riga invece di dichiarare 4 str_replace
$str=str_replace(array("s(","`",")","%20"),"",$str);
-
s(`cb_ruolo` ='Ingegnere%20biomedico') ---->> cb_ruolo = 'Ingegnere Biomedico'
-
Non mi viene in mente nulla, usa le str_replace avnno bene lo stesso penso :D
-
ok grazie 1000!