Joomla.it Forum

Non solo Joomla... => Sviluppo => : lory1990 07 Sep 2010, 19:27:24

: Funzione utilizzabile da più models
: 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è?
: Re:Funzione utilizzabile da più models
: simone83 10 Sep 2010, 14:34:02
Scusa ma hai dichiarato la classe EventManagerHelperUtenti?Oppure il codice che hai scritto è solo una funzione?
: Re:Funzione utilizzabile da più models
: lory1990 10 Sep 2010, 15:55:03
Assolutamente si! ho scritto la classe EventManagerHelperUtenti e poi all'interno la funzione
: Re:Funzione utilizzabile da più models
: simone83 10 Sep 2010, 16:17:36
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!
: Re:Funzione utilizzabile da più models
: lory1990 10 Sep 2010, 16:26:30
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?
: Re:Funzione utilizzabile da più models
: simone83 10 Sep 2010, 16:32:11
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);
   

: Re:Funzione utilizzabile da più models
: lory1990 10 Sep 2010, 16:36:05
s(`cb_ruolo` ='Ingegnere%20biomedico')  ---->> cb_ruolo = 'Ingegnere Biomedico'
: Re:Funzione utilizzabile da più models
: simone83 10 Sep 2010, 16:41:13
Non mi viene in mente nulla, usa le str_replace avnno bene lo stesso penso :D
: Re:Funzione utilizzabile da più models
: lory1990 10 Sep 2010, 16:56:27
ok grazie 1000!