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
si vous avez une piste des liaisons de la requête.
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; }
Partager