Dakle trebam da modifikujem jednu Joomla komponentu, com_rapidrecipies, tacnije samo jedan njen view (viewrecipe). U "kontroleru" funkcije nalazim case koji se odnosi na view koji zelim da mijenjam:
Code:
case 'viewrecipe':
$recipe_id = trim(intval( JRequest::getVar('recipe_id', "" )) );
rr_runSQL("UPDATE #__rr_recipes SET hits = hits+1 WHERE recipe_id=" . mysql_escape_string($recipe_id));
rr_EchoOneRecipe($recipe_id);
break;
case 'viewrecipe':
$recipe_id = trim(intval( JRequest::getVar('recipe_id', "" )) );
rr_runSQL("UPDATE #__rr_recipes SET hits = hits+1 WHERE recipe_id=" . mysql_escape_string($recipe_id));
rr_EchoOneRecipe($recipe_id);
break;
Vidim da se poziva funkcija rr_EchoOneRecipe i super, to je ono sto meni treba. Medjutim sad dolazi zanimljv dio. Ove funkcije nema nigdje na serveru! :)
Tj. negdje naravno mora biti cim se uredno poziva i ispisuje kod, ali grep pretraga cijele joomla instalacije ne nalazi nikakav rezultat:
Code:
$ egrep "function.*rr_EchoOneRecipe" -R .
$ egrep "function.*rr_EchoOneRecipe" -R .
Da bih bio 100% siguran da se upravo taj gorenavedeni case izvrsava, uradio sam malo printf debugovanja sa:
Code:
case 'viewrecipe':
$recipe_id = trim(intval( JRequest::getVar('recipe_id', "" )) );
rr_runSQL("UPDATE #__rr_recipes SET hits = hits+1 WHERE recipe_id=" . mysql_escape_string($recipe_id));
echo 'calling function';
rr_EchoOneRecipe($recipe_id);
echo 'function ended';
break;
case 'viewrecipe':
$recipe_id = trim(intval( JRequest::getVar('recipe_id', "" )) );
rr_runSQL("UPDATE #__rr_recipes SET hits = hits+1 WHERE recipe_id=" . mysql_escape_string($recipe_id));
echo 'calling function';
rr_EchoOneRecipe($recipe_id);
echo 'function ended';
break;
I ovaj tekst se ispise uredno. Takodje, pretragom prema HTML kodu koji funkcija rr_EchoOneRecipe generise sam nasao funkciju pod imenom "showRecipe1" i ispostavilo se da se ova funkcija zapravo poziva umjesto rr_EchoOneRecipe.
Dakle, pozove se rr_EchoOneRecipe, a izvrsi se showRecipe1. Moze li mi neko reci sta propustam i kako je ovo moguce? Vjerovatno propustam nesto veoma ocigledno, ali u ovom trenutku mi nista ne pada na pamet.
Pozdrav,
Ivan