1 | <?php |
---|
2 | /** |
---|
3 | * Fonctions utiles au plugin Commits de projet |
---|
4 | * |
---|
5 | * @plugin Commits de projet |
---|
6 | * @copyright 2014-2017 |
---|
7 | * @author Teddy Payet |
---|
8 | * @licence GNU/GPL |
---|
9 | * @package SPIP\RSSCommits\Fonctions |
---|
10 | */ |
---|
11 | |
---|
12 | if (!defined('_ECRIRE_INC_VERSION')) { |
---|
13 | return; |
---|
14 | } |
---|
15 | |
---|
16 | include_spip('base/abstract_sql'); |
---|
17 | include_spip('inc/filtres'); |
---|
18 | |
---|
19 | function 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 | |
---|