No es Yii::log(…)? // Con mayusculas. O solo lo escribiste con m¡inusculas en el foro?
Por otro lado, te recomiendo que el parent::init() lo pongas al final de tu init, con un return…
Asi:
public function init()
{
Yii::log('init'.$this->scenario, 'info');
if( isset($_GET[Yii::app()->user->getState('nombre_variable_scenario_default')]))
$this->scenario=$_GET[Yii::app()->user->getState('nombre_variable_scenario_default')];
else
$this->scenario=Yii::app()->params['default_scenario'];
return parent::init();
}
Esto es porque si el dia de mañana el parent::init() hace algo mas y devuelve algun valor lo estarias perdiendo (ya que como esta ahora no guardas el resultado en ningun lado).
Ahhhh… estuve mirando un poco el core… parece ser que cuando haces un find la ejecucion del __construct se corta antes de que este llame al init(). Usa una condicion que retorna antes. (El __construct es un metodo que se ejecuta cada vez que creas una instancia de un AR, el metodo esta definido en CActiveRecord).
Para que lo veas mas o menos (por lo menos lo que entendi)
$tuAR->find(...) // Este metodo internamente llama a $this->query(...) <<-- Esta definido en CActiveRecord.
$this->query(...) // Este llama a $this->populateRecord(...) <<-- Tambien definido en CActiveRecord.
$this->populateRecord(...) // Este llama a un metodo que se llama instantiate(...) <<-- Tambien definido en CActiveRecord.
$this->instantiate(...) // Este crea un nuevo objeto, pero le pasa como parametro null.
__construct() // Como recibio como parametro null retorna antes de llamar a init().
// No se por qué hace eso, pero Master Qiang debe tener sus razones.