source: spip-zone/_plugins_/comments_phpbb/comments_phpbb_pipeline.php @ 32294

Last change on this file since 32294 was 32294, checked in by jfefe@…, 11 years ago
  • bouton d’ajout de tous les articles existants de SPIP dans les forums phpBB (indispensable lors de l’utilisation de ce plugin sur un site SPIP existant).
  • Internationalisation : utilisation d’un fichier de langue pour tous les textes utilisés dans le plugin.
  • Filtre bbcode : ajout d’un filtre bbcode pour convertir la mise en forme phpBB en mise en forme SPIP. Ce filtre sera utilisé pour l’affichage des textes du forum avec la balise #POST_TEXT. Dans le squelette, on écrira : [(#POST_TEXT|bbcode)]
  • Filtre datetime_unix2mysql : ajout d’un filtre pour pouvoir afficher la date du post qui au format timestamp unix dans phpBB. Dans le squelette, on pourra écrire : [(#POST_TIME|datetime_unix2mysql|affdate_jourcourt)]
  • Ajout du paramètre "phpbb_http" pour mémoriser l’adresse du forum. Dans le squelette, on pourra faire des liens vers le forum de cette façon : <a href="#CONFIG{comments_phpbb/phpbb_http}/viewtopic.php?p=#POST_ID">
  • Corrections de bug pour une prise en compte de préfixes différents de spip_ et phpbb_ pour les noms des tables utilisées dans les requêtes du plugin.
  • Ajout d'une noisette pour afficher les commentaires d'un article
File size: 5.4 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4function comments_phpbb_new($flux)
5{
6
7        if(isset($flux['args']['table']) && $flux['args']['table'] == $GLOBALS['table_prefix'].'_'.table_objet('article'))
8        {
9                $col_id = id_table_objet('article');
10               
11              $result = sql_select(array('titre','chapo','statut','id_secteur'),$flux['args']['table'],$col_id."='".$flux['args']['id_objet']."'");
12
13                // l'article existe
14                if ($article = sql_fetch($result))
15                {
16                        if(!function_exists('update_forum'))
17                                include_spip('action/comments_phpbb_update');
18
19                        if($article['statut'] == 'publie')
20                        {
21                               
22
23                                if(!function_exists('traiter_raccourcis'))
24                                        include_spip('inc/texte');
25                                if(!function_exists('textebrut'))
26                                        include_spip('inc/filtres');
27            if(!function_exists('_T'))
28            include_spip('inc/utils');
29            if(!function_exists('balise_INTRODUCTION_dist'))
30            include_spip('public/balises'); 
31
32                                $texte_post = textebrut($article['chapo']);
33                                /* TODO : problème avec les quotes qui sont convertis dans le post phpbb */
34                                $texte_post .= "<br /><a href=/spip.php?article".$flux['args']['id_objet'].">Lire la news</a>";
35                                $titre_post =  textebrut($article['titre']);
36                               
37            if(!function_exists('datetime_mysql2unix'))
38            include_spip('comments_phpbb_fonctions');
39           
40            $date = datetime_mysql2unix($article['date']);
41                                $forum_id = intval(lire_config('comments_phpbb/phpbb_forum'));
42            $result = sql_select(
43                  array('a.topic_id', 'b.topic_first_post_id'),
44                  array(ARTICLES_PHPBB_TABLE." AS a",PHPBB_PREFIX."topics as b"),
45                  array("id_article='".$flux['args']['id_objet']."'", "b.topic_id=a.topic_id"));
46                 
47            // L'article est modifié, on fait l'update de la table topics et on déplace dans le bon forum
48                                if($article_phpbb = sql_fetch($result))
49                                {
50                                        $article_phpbb['topic_id'] = intval($article_phpbb['topic_id']);
51                                         sql_updateq(PHPBB_PREFIX.'topics',array(
52                                            "topic_title" => $titre_post,
53                                            "forum_id" => $forum_id,
54                   'topic_time' => $date
55                                         ),
56                                         "topic_id='".$article_phpbb['topic_id']."'");
57                                       
58                                         sql_updateq(PHPBB_PREFIX.'posts',array(
59                                             "post_text" => $texte_post,
60                                             "post_edit_user" => $GLOBALS['auteur_session']['nom'],
61                    'post_time' => $date),
62                                             "post_id=".intval($article_phpbb['topic_first_post_id'])
63                                             
64                                          );
65                                       
66
67                                        update_forum($forum_id);
68                                        update_forum(intval(lire_config('comments_phpbb/phpbb_tmpforum')));
69                                }
70                                // Il s'agit d'un nouvel article, on enregistre un nouveau topic et une entrée dans articles_phpbb
71                                else
72                                {
73                                        $poster_id = intval(lire_config('comments_phpbb/phpbb_poster'));
74                                       
75                                        $query = sql_select("user_id,username",PHPBB_PREFIX.'users',"user_id='".$poster_id."'");
76                                        $res = sql_fetch($query);
77                                        $insert = array(
78                                              'topic_poster' => $res['user_id'],
79                                              'topic_title' => $titre_post,
80                                              'topic_first_poster_name' => $res['username'],
81                                              'topic_time' => $date,
82                                              'topic_poster' => $poster_id,
83                                              'topic_last_post_time' => $date,
84                                              'topic_last_poster_id' => $poster_id,
85                                              'topic_last_post_subject' => $titre_post,
86                                              'topic_last_poster_name' => $res['username'],
87                                              'forum_id' => $forum_id,
88                                              );
89                                        $topic_id = sql_insertq(PHPBB_PREFIX.'topics',$insert);
90
91                                        $post_id = sql_insertq(PHPBB_PREFIX.'posts',array(
92                                                'poster_id' => $res['user_id'],
93                                                'forum_id' => $forum_id,
94                                                'post_username' => $res['username'],
95                                                'post_text' => $texte_post,
96                                                'post_time' => $date,
97                                                'topic_id' => $topic_id));
98                               
99                                       
100                                        // update de la table topics du forum
101                                        sql_updateq(PHPBB_PREFIX.'topics',array("topic_last_post_time"=>$date,"topic_first_post_id"=>$post_id,"topic_last_post_time"=>$date, "topic_last_post_id" => $topic_id),"topic_id='".$topic_id."'");
102                           
103               // nouvelle entrée dans articles_phpbb ou mise à jour si enregistrement existant
104               $result = sql_select('topic_id',ARTICLES_PHPBB_TABLE, "id_article=".$flux['args']['id_objet']);
105               
106               if($article_phpbb = sql_fetch($result)) {
107                  sql_updateq(ARTICLES_PHPBB_TABLE,array('topic_id'=>$topic_id), "id_article=".$flux['args']['id_objet']);
108               }
109               else {
110                  sql_insertq(ARTICLES_PHPBB_TABLE,array('id_article'=>$flux['args']['id_objet'],'topic_id'=>$topic_id),"");
111               }       
112               
113               // Update des infos de l'utilisateur robot
114                                        sql_updateq(PHPBB_PREFIX.'users', array("user_posts"=>"user_posts+1","user_lastpost_time"=>$date),"user_id=".intval($poster_id));
115                                       
116                                        update_forum($forum_id);
117                                        update_forum(intval(lire_config('comments_phpbb/phpbb_tmpforum')));
118                                       
119                                       
120                                       
121                                }
122                               
123                        }
124                        // Statut différent de "publié", on déplace le topic dans le forum temporaire
125                        else
126                        {
127                                $result = sql_select('topic_id',ARTICLES_PHPBB_TABLE, "id_article=".$flux['args']['id_objet']);
128
129                                if($article_phpbb = sql_fetch($result))
130                                {
131                                        $forum_id = intval(lire_config('comments_phpbb/phpbb_tmpforum'));
132                                        sql_updateq(PHPBB_PREFIX.'topics',array("forum_id"=>$forum_id),"topic_id=".intval($article_phpbb['topic_id']));
133                                       
134                                       
135                                        update_forum($forum_id);
136                                        update_forum(intval(lire_config('comments_phpbb/phpbb_forum')));
137                                }
138                        }
139                } 
140        }
141
142        return $flux;
143}
144?>
Note: See TracBrowser for help on using the repository browser.