source: spip-zone/_plugins_/amis/action/ajouterami.php @ 75985

Last change on this file since 75985 was 75985, checked in by pierre.troller@…, 6 years ago

c'est l'invité qui recevait la notification de son acceptation, non pas l'emetteur de l'invitation...

File size: 1.9 KB
Line 
1<?php
2/*
3 * Plugin amis / gestion des amis
4 * Licence GPL
5 * (c) 2008 C.Morin Yterium
6 *
7 */
8
9
10/**
11 * Relie deux auteurs entre eux via la table spip_amis
12 * id_auteur = visiteur a l'origine de la demande
13 * id_ami = visiteur ayant accepte la demande
14 * lors d'une demande par un des protagoniste, le champ statut='prop' indique une demande
15 * le champ statut='publie' indique une acceptation
16 * les liens sont directionnels, ce qui permet de garder la trace du sens de la transaction
17 * les tests X est ami de Y se font ensuite par double test :
18 * statut='publie' AND ((id_auteur=X AND id_ami=Y) OR (id_auteur=Y and id_ami=X))
19 *
20 */
21function action_ajouterami_dist(){
22        $securiser_action = charger_fonction('securiser_action','inc');
23        $id_ami = $securiser_action();
24        if ($id_ami = intval($id_ami)
25        AND ($id_auteur = $GLOBALS['visiteur_session']['id_auteur'])){
26                include_spip('base/abstract_sql');
27                // s'assurer que pas deja une invitation dans ce sens ou deja un ami
28                if ($row=sql_fetsel('*','spip_amis',array('id_auteur='.intval($id_auteur),'id_ami='.intval($id_ami))))
29                        return;
30                // si deja une invitation dans l'autre sens, alors on valide
31                if ($row=sql_fetsel('*','spip_amis',array('id_auteur='.intval($id_ami),'id_ami='.intval($id_auteur),"statut='prop'"))){
32                        sql_updateq('spip_amis',array('statut'=>'publie','date'=>'NOW()'),array('id_auteur='.intval($id_ami),'id_ami='.intval($id_auteur)));
33                        $notification = charger_fonction('notifications','inc');
34                        $notification('ajouterami',$id_auteur,array('id_auteur' => $id_ami));
35                }
36                else {
37                        // sinon lancer une invitation
38                        sql_insertq('spip_amis',array('id_auteur'=>$id_auteur,'id_ami'=>$id_ami,'statut'=>'prop'));
39                        $notification = charger_fonction('notifications','inc');
40                        $notification('inviterami',$id_ami,array('id_auteur' => $id_auteur));
41                }
42                spip_log("invitation de $id_ami par $id_auteur",'amis');
43                include_spip('inc/invalideur');
44                suivre_invalideur("amis/$id_auteur/$id_ami");
45        }
46}
47
48?>
Note: See TracBrowser for help on using the repository browser.