Leggendo gli altri thread sul forum relativi a problemi di php, mi sembra di capire che la funzione debug_backtrace nell'implementazione del php usato da Altervista restituisca sempre falso.
Perciò temo che dovremo arrangiarci.
Una possibile soluzione che intravedo è quella di vedere, eseguendo in locale la funzione incriminata, qual'è il valore che dovrebbe restituire. Se siamo fortunati il plugin sarà chiamato sempre da una funzione, per cui il nome rimarrà sempre quello.
Se è così, ci basta rimpiazzare il valore ritornato dalla funzione con il valore sperimentato in locale.
Mettendo la funzione cosi:
Codice:
function get_caller() {
// requires PHP 4.3+
if ( !is_callable('debug_backtrace') )
return '';
$bt = debug_backtrace();
$caller = array();
$bt = array_reverse( $bt );
foreach ( (array) $bt as $call ) {
if ( @$call['class'] == __CLASS__ )
continue;
$function = $call['function'];
if ( isset( $call['class'] ) )
$function = $call['class'] . "->$function";
$caller[] = $function;
}
$caller = join( ', ', $caller );
print $caller;
return $caller;
}
in locale, dovremo ottenere stampato il valore che la funzione ritorna quando chiamata. Se è sempre lo stesso valore allora potremo semplicemente rimpiazzare la funzione con:
Codice:
function get_caller() {
return "PIPPO";
}
con PIPPO il valore stampato dal programma precedente.
Se è diverso...allora non vedo soluzioni possibili :(