source: spip-zone/_plugins_/spipicious_jquery/action/spipicious_ajouter_tags.php @ 52716

Last change on this file since 52716 was 52716, checked in by kent1@…, 8 years ago

On remet le nom initial du plugin

On évite des problèmes sur des objets sans statuts ... à ce moment là le statut du spipicious est publie...

On évite de changer de statut quand ce n'est pas nécessaire

File size: 4.1 KB
Line 
1<?php
2/**
3 * spip.icio.us
4 * Gestion de tags lies aux auteurs
5 *
6 * Auteurs :
7 * kent1 (kent1@arscenic.info)
8 * Erational
9 *
10 * © 2007-2011 - Distribue sous licence GNU/GPL
11 *
12 */
13
14if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
15
16function action_spipicious_ajouter_tags_dist(){
17        global $visiteur_session;
18
19        $id_objet = _request('spipicious_id');
20        $type = _request('spipicious_type');
21
22        include_spip('inc/autoriser');
23        if(!autoriser('tagger_spipicious',$type,$id_objet,$visiteur_session,$opt)){
24                return '';
25        }
26
27        $id_auteur = $visiteur_session['id_auteur'];
28        $id_groupe = lire_config('spipicious/groupe_mot','1');
29        $id_table_objet = id_table_objet($type);
30        $table_mot = table_objet_sql('spip_mots_'.table_objet($type));
31
32        $tags = _request('spipicious_tags');
33        $tableau_tags = explode(";",$tags);
34
35        $ajouter_tags = spipicious_ajouter_tags($tableau_tags,$id_auteur,$id_objet,$type,$id_table_objet,$table_mot,$id_groupe);
36        return $ajouter_tags;
37}
38
39/**
40 * Ajout de mots à un objet
41 *
42 * @param array() $tableau_tags
43 * @param int $id_auteur
44 * @param int $id_objet
45 * @param string $type
46 * @param int $id_table_objet
47 * @param string $table_mot la table de liaison mot / objet
48 * @param int $id_groupe
49 * @param string $manuel doit on le faire manuellement ou par inc/modifier
50 */
51function spipicious_ajouter_tags($tableau_tags=array(),$id_auteur,$id_objet,$type,$id_table_objet,$table_mot,$id_groupe,$manuel=false){
52        $tag_analysed = array();
53        $position = 0;
54
55        $statut = 'publie';
56        $table = table_objet_sql($type);
57        $infos_objets = sql_fetsel('*',$table,"$id_table_objet=$id_objet");
58        if(isset($infos_objets['statut']) && ($infos_objets['statut'] != 'publie')){
59                spip_log('Le statut de l objet est pas publié','spipicious');
60                spip_log($infos_objets['statut'],'spipicious');
61                $statut = 'prop';
62        }
63       
64        spip_log($tableau_tags,'spipicious');
65        if (is_array($tableau_tags)) {
66                include_spip('inc/modifier');
67                foreach ($tableau_tags as $k=>$tag) {
68                        $tag = trim($tag);
69                        if(!empty($tag)){
70                                if (!in_array($tag,$tag_analysed)) {
71                                        $tag_propre = corriger_caracteres($tag);
72                                        // doit on creer un nouveau tag ?
73                                        $id_tag = sql_getfetsel("id_mot","spip_mots","titre=".sql_quote($tag_propre)." AND id_groupe=".intval($id_groupe));
74                                        if (!$id_tag) { // creation tag
75                                                if(!$manuel){
76                                                        $id_tag = sql_insertq("spip_mots", array('id_groupe' => intval($id_groupe)));
77                                                        $c = array('titre' => $tag, 'id_groupe' => intval($id_groupe));
78                                                        revision_mot($id_tag, $c);
79                                                }else{
80                                                        $row = sql_fetsel("titre", "spip_groupes_mots", "id_groupe=".intval($id_groupe));
81                                                        $id_tag = sql_insertq("spip_mots", array('id_groupe' => intval($id_groupe),'titre' => $tag_propre,'type'=> $row['titre']));
82                                                }
83                                        }
84                                }
85                                // on lie le mot au couple type (uniquement si pas deja fait)
86                                $result = sql_getfetsel("id_mot",$table_mot,"id_mot=".intval($id_tag)." AND $id_table_objet=".intval($id_objet));
87                                if (!$result) {
88                                        sql_insertq("$table_mot",array('id_mot' => intval($id_tag),$id_table_objet => intval($id_objet)));
89                                }
90                                $result_spipicious = sql_fetsel("*","spip_spipicious","id_mot=".intval($id_tag)." AND id_objet=".intval($id_objet)." AND objet=".sql_quote($type)." AND id_auteur=".intval($id_auteur));
91                                if(!$result_spipicious['id_mot']){
92                                        sql_insertq("spip_spipicious",array('id_mot' => intval($id_tag),'id_auteur' => intval($id_auteur),'id_objet' => intval($id_objet), 'objet'=>$type, 'position' => intval($position),'statut' => $statut));
93                                        $message = _T('spipicious:tag_ajoute',array('name'=>$tag));
94                                        $invalider = true;
95                                }
96                                else if(isset($result_spipicious['statut']) && ($result_spipicious['statut'] != $statut)){
97                                        sql_updateq('spip_spipicious',array('statut'=>$statut),"id_mot=".intval($id_tag)." AND id_objet=".intval($id_objet)." AND objet=".sql_quote($type)." AND id_auteur=".intval($id_auteur));
98                                }
99                                else{
100                                        $message = _T('spipicious:tag_deja_present');
101                                }
102                                $position++;
103                        }
104                        $tag_analysed[] = $tag;
105                }
106
107                if($position > 1){
108                        $tags = implode('<br />',$tag_analysed);
109                        $message = _T('spipicious:tags_ajoutes',array('name'=>$tags,'nb'=>$position));
110                }
111        }
112        return array($message,$invalider,'');
113}
114?>
Note: See TracBrowser for help on using the repository browser.