Bonjour,
J’ai créé une table qui enregistre si un membre a lu un sujet. Cette table est nommée Topics_Users (Model : TopicsUser) et elle contient 3 champs [id, topic_id, user_id].
Si le couple topic_id et user_id ne figure pas dans la table c’est qu’il n’a pas encore consulté le sujet.
La requête d’ajout fonctionne parfaitement, la voici :
// Verifie si le topic est nouveau pour un utilisateur
if($this->Auth->user("id")){
$this->loadModel('TopicsUser');
$user_id = $this->Auth->user("id");
$count = $this->TopicsUser->find('count', array(
'conditions' => array('TopicsUser.topic_id' => $id, 'TopicsUser.user_id' => $user_id)
));
// Si il la vue on l'enregistre dans la table, le topic n'est plus considéré comme nouveau
if($count == 0){
$this->TopicsUser->create();
$this->TopicsUser->saveField('topic_id', $id);
$this->TopicsUser->saveField('user_id', $user_id);
}
}
Maintenant j’aimerai afficher dans la vue, mais je ne c’est pas comment me prendre pour mettre sa dans ma requête qui elle affiche déjà les sujets mais sans mettre si c’est un nouveau sujet ou pas.
Voici la requête qui liste les sujets :
class TopicsController extends AppController {
/**
*Action Public
*/
function index($id = null, $slug = null) {
$this->loadModel('Forum');
$d'topics'] = $this->Forum->find('all', array(
'conditions' => array('Forum.id' => $id),
'fields' => array('name', 'topic_count'),
'contain' => array(
'Topic' => array(
'fields' => array('name', 'created', 'post_count', 'topic_view', 'status'),
//'order' => array('Topic.created' => 'DESC'),
'conditions' => array('Topic.online' => 1),
'User' => array(
'fields' => array('username')
),
'Post' => array(
'fields' => array('user_id', 'created'),
'order' => array('Post.created' => 'DESC'),
'limit' => 1,
'conditions' => array('Post.online' => 1),
'User' => array(
'fields' => array('username')
)
)
)
)
));
...
Cordialement Flo2315
C’est bon j’ai réussi, j’ai envoyé le tableau TopicsUser à ma vue. Dans ma vue j’ai fait une condition, si le tableau (array) est vide c’est que le sujet est nouveau.