-
Notifications
You must be signed in to change notification settings - Fork 2
/
backend_fonctions.php
67 lines (55 loc) · 1.38 KB
/
backend_fonctions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
function hatom2rss($uri) {
$uri = str_replace('%2F', '/', $uri);
// choper les liens presents
$type='a'; // a priori les articles
$max = 10;
// sauf pour /backend/tout ou /feed/
switch($uri) {
case 'tout':
case '/themes/tout':
$type='[ab]';
$max = 100;
$uri = 'tout';
break;
case '/themes/audio':
$type='[ab]';
$max = 20;
$uri = 'audio';
break;
case '/themes/%2Ffeed%2F':
$uri = 'tout';
$max = 20;
break;
case '/themes/bestof':
$uri = 'bestof';
$max = 20;
break;
}
// lire la page hatom
$feed = recuperer_page(url_absolue($uri));
preg_match_all(
',<div\s+class="hentry\b[^<>"]*"\s+id="'.$type.'(\d+)".*<abbr class="updated" title="(.*)">,UmsS',
$feed, $regs, PREG_SET_ORDER);
// trier par date et prendre les n plus recents
// et tous les plus recents que 3 jours
$items = $recents = array();
$troisjours = date('Y-m-d H:i:s', time()-3*24*3600);
foreach($regs as $reg) {
if ($reg[2] > $troisjours)
$recents[$reg[2].'-'.$reg[1]] = $reg[1];
else
$items[$reg[2].'-'.$reg[1]] = $reg[1];
}
krsort($recents);
$manquants = $max - count($recents);
if ($manquants > 0) {
krsort($items);
$recents = array_merge($recents, array_slice($items,0,$manquants));
}
// recuperer les items correspondants
foreach($recents as $cle=>$id)
$recents[$cle] = microcache($id, 'inc-rss-item');
return join("\n\t", $recents);
}
?>