source: spip-zone/_plugins_/rss_commits/trunk/rss_commits_fonctions.php @ 99417

Last change on this file since 99417 was 99417, checked in by teddy.spip@…, 5 years ago

Prise en compte d'un feed pour le xml qui arrive parfois

File size: 2.7 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin Commits de projet
4 *
5 * @plugin     Commits de projet
6 * @copyright  2014-2016
7 * @author     Teddy Payet
8 * @licence    GNU/GPL
9 * @package    SPIP\RSSCommits\Fonctions
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16include_spip('base/abstract_sql');
17include_spip('inc/filtres');
18
19function lister_rss_commits($id_projet = null, $force = true) {
20        $rss_items = array();
21        $items = array();
22        $where = "versioning_rss !=''";
23        if (!is_null($id_projet) and $id_projet = intval($id_projet)) {
24                $where = "versioning_rss !='' AND id_projet=$id_projet";
25        }
26        if ($force == true) {
27                $where = "versioning_rss !=''";
28        }
29
30        $projet_rss = sql_allfetsel('versioning_rss,id_projet', 'spip_projets', $where);
31        // spip_log(print_r($projet_rss, true), 'rss_commits');
32
33        $analyser_rss_commits = charger_fonction('analyser_rss_commits', 'inc');
34        if (count($projet_rss) > 0) {
35                foreach ($projet_rss as $key_rss => $value_rss) {
36                        $contenu_rss = $analyser_rss_commits($value_rss["versioning_rss"]);
37                        // spip_log(print_r($contenu_rss, true), 'rss_commits');
38                        if (count($contenu_rss) > 0) {
39                                if (isset($contenu_rss['channel'])) {
40                                        // On est sur un flux pour un SVN…
41                                        foreach ($contenu_rss['channel']['item'] as $key => $value) {
42                                                // spip_log(print_r($value, true), 'rss_commits');
43                                                $items[$key]['titre'] = echapper_tags($value['title']);
44                                                $items[$key]['descriptif'] = $value['description'];
45                                                $items[$key]['texte'] = isset($value['texte']) ? trim($value['texte']) : '';
46                                                $items[$key]['auteur'] = echapper_tags($value['author']);
47                                                $items[$key]['url_revision'] = $value['link'];
48                                                $items[$key]['guid'] = $value['guid'];
49                                                $items[$key]['id_projet'] = $value_rss['id_projet'];
50                                                $items[$key]['date_creation'] = strftime(
51                                                        "%Y-%m-%d %H:%M:%S",
52                                                        strtotime($value['pubDate'])
53                                                );
54                                        }
55                                } elseif (isset($contenu_rss['feed'])) {
56                                        // Ce flux est pour des git-like
57                                        foreach ($contenu_rss['feed']['entry'] as $key => $value) {
58                                                // spip_log(print_r($value, true), 'rss_commits');
59                                                $items[$key]['titre'] = echapper_tags($value['title']);
60                                                $items[$key]['descriptif'] = '';
61                                                $items[$key]['texte'] = $value['summary'];
62                                                $items[$key]['auteur'] = isset($value['author']['email']) ? echapper_tags($value['author']['email']) : echapper_tags($value['author']['name']);
63                                                $items[$key]['url_revision'] = $value['link']['@attributes']['href'];
64                                                $items[$key]['guid'] = $value['id'];
65                                                $items[$key]['id_projet'] = $value_rss['id_projet'];
66                                                $items[$key]['date_creation'] = strftime(
67                                                        "%Y-%m-%d %H:%M:%S",
68                                                        strtotime($value['updated'])
69                                                );
70                                        }
71                                }
72                                $rss_items = array_merge($rss_items, $items);
73                        }
74                } // end foreach $projet_rss
75        }
76
77        return $rss_items;
78}
79
Note: See TracBrowser for help on using the repository browser.