bonjour,

j'ai une action qui permet d'afficher des images selon les droits de l'utilisateur.

Seulement, je cherche à optimiser le temps d’exécution de cette action et de son template. Je souhaiterais donc réaliser une seule requête me sortant les fichiers pour lequel l'utilisateur à l'autorisation de consultation à travers le plugin SfGuard.

Actuellement mon action :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$fichiers = Doctrine::getTable('fichier')
			->createQuery('a')
			->where('album_id  = '.$request->getParameter('id'))
			->execute();
 
		$nb = 0;
		$tabfic = array();
 
		foreach($fichiers as $fichier)
		{
			if($fichier->droitlecture())
			{
				$tabfic[] = $fichier->getId();
				$nb++;
			}
		}
 
		$this->fichiers = Doctrine::getTable('fichier')
			->createQuery('a')
			->whereIn('id',$tabfic)
			->orderBy('date DESC')
			->fetchArray();

et la fonction droitlecture() dans lib/model

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
	//Fonction qui dit si oui ou non l'utilisateur à le droit d'accès en lecture sur le fichier
	public function droitlecture()
	{
		if(sfContext::getInstance()->getUser()->hasCredential('fichier'.$this->getId().'show'))
			return true;
		else
			return false;
	}
si vous avez une piste des liaisons de la requête.