Ora ora hai quidni una actionAdmin per i telegrammi, o una actionIndex.
Scegli quale usare ma il concetto è lo stesso.:
Tu parti da qualcosa di simile
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('Telegrammi');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
L’idea è ricavare lo user_id attualmente loggato
$user_id = Yii::app()->user->id
Ricavare lo user nel senso dell’utente registrato
$user = Utente::model()->findByPk($user_id);
A questo punto interviene la prima relazione: un Utente APPARTIENE ad una Agenzia, quindi dentro al modello dell’utente avrai una relation così
'agenzia' => array(self::BELONGS_TO, 'Agenzia', 'agenzia_id'),
In questo modo, sempre nella action, puoi ottenere la sua agenzia
$user_agency = $user->agenzia;
L’agenzia deve avere una relazione many_many con cap_gestiti, in modo da poter fare
$enabled_cap_list = $user_agency->cap_gestiti
ottenendo un array di modelli CapGestiti
Fai la lista degli id
$enabled_cap_array = CHtml::listData($enabled_cap_list, "id","id");
ottiene un array (associativo ma non importa in questo caso), con gli id dei cap gestiti dall’agenzia dell’utente. Cioè sai esattamente quali cap l’utente può gestire. Ti prego, confermami che è quello che volevi ottenere o svengo.
Il passo successivo è modificare il data provider per filtrare i telegrammi in base agli id appena ottenuti