-
Notifications
You must be signed in to change notification settings - Fork 0
/
artToCome.php
131 lines (119 loc) · 6.44 KB
/
artToCome.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
if(!defined('PLX_ROOT')) {
die('Oups!');
}
class artToCome extends plxPlugin {
const HOOKS = array(
'plxShowNextArtList',
);
const BEGIN_CODE = '<?php' . PHP_EOL;
const END_CODE = PHP_EOL . '?>';
public function __construct($default_lang) {
# appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Ajoute des hooks
foreach(self::HOOKS as $hook) {
$this->addHook($hook, $hook);
}
}
public function plxShowNextArtList() {
echo self::BEGIN_CODE;
?>
$format = '<li><time>#art_date</time>: #art_title </li>';
$max = 5;
$cat_id = '';
$ending = '';
$sort = 'rsort';
$capture = '';
$all='';
# Génération de notre motif
$all = (isset($all) ? $all : empty($cat_id)); # pour le hook : si $all = TRUE, n'y passe pas
$cats = $plxShow->plxMotor->activeCats . '|home'; # toutes les categories active
if (!$all) {
if (is_numeric($cat_id)) # inclusion à partir de l'id de la categorie
$cats = str_pad($cat_id, 3, '0', STR_PAD_LEFT);
else { # inclusion à partir de url de la categorie
$cat_id .= '|';
foreach ($plxShow->plxMotor->aCats as $key => $value) {
if (strpos($cat_id, $value['url'] . '|') !== false) {
$cats = explode('|', $cat_id);
if (in_array($value['url'], $cats)) {
$cat_id = str_replace($value['url'] . '|', $key . '|', $cat_id);
}
}
}
$cat_id = substr($cat_id, 0, -1);
if (empty($cat_id)) {
$all = true;
} else {
$cats = $cat_id;
}
}
}
if (empty($motif)) {# pour le hook. motif par defaut s'il n'a point créé cette variable
if ($all)
$motif = '/^[0-9]{4}.(?:[0-9]|home|,)*(?:' . $cats . ')(?:[0-9]|home|,)*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
else
$motif = '/^[0-9]{4}.((?:[0-9]|home|,)*(?:' . $cats . ')(?:[0-9]|home|,)*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
}
# Nouvel objet plxGlob et récupération des fichiers
$plxGlob_arts = clone $plxShow->plxMotor->plxGlob_arts;
if ($aFiles = $plxGlob_arts->query($motif, 'art', $sort, 0, $max, 'after')) {
echo '<div id="boxNextArts"><h3><?php $this->lang('L_NEXT_ARTICLE')?></h3><ul>';
foreach ($aFiles as $v) { # On parcourt tous les fichiers
$art = $plxShow->plxMotor->parseArticle(PLX_ROOT . $plxShow->plxMotor->aConf['racine_articles'] . $v);
$num = intval($art['numero']);
$date = $art['date'];
if (($plxShow->plxMotor->mode == 'article') and ($art['numero'] == $plxShow->plxMotor->cible))
$status = 'active';
else
$status = 'noactive';
# Mise en forme de la liste des catégories
$catList = array();
$catIds = explode(',', $art['categorie']);
foreach ($catIds as $idx => $catId) {
if (isset($plxShow->plxMotor->aCats[$catId])) { # La catégorie existe
$catName = plxUtils::strCheck($plxShow->plxMotor->aCats[$catId]['name']);
$catUrl = $plxShow->plxMotor->aCats[$catId]['url'];
$catList[] = '<a title="' . $catName . '" href="' . $plxShow->plxMotor->urlRewrite('?categorie' . intval($catId) . '/' . $catUrl) . '">' . $catName . '</a>';
} else {
$catList[] = L_UNCLASSIFIED;
}
}
# On modifie nos motifs
$row = str_replace('#art_id', $num, $format);
$row = str_replace('#cat_list', implode(', ', $catList), $row);
$row = str_replace('#art_url', $plxShow->plxMotor->urlRewrite('?article' . $num . '/' . $art['url']), $row);
$row = str_replace('#art_status', $status, $row);
$author = plxUtils::getValue($plxShow->plxMotor->aUsers[$art['author']]['name']);
$row = str_replace('#art_author', plxUtils::strCheck($author), $row);
$row = str_replace('#art_title', plxUtils::strCheck($art['title']), $row);
$strlength = preg_match('/#art_chapo\(([0-9]+)\)/', $row, $capture) ? $capture[1] : '100';
$chapo = plxUtils::truncate($art['chapo'], $strlength, $ending, true, true);
$row = str_replace('#art_chapo(' . $strlength . ')', '#art_chapo', $row);
$row = str_replace('#art_chapo', $chapo, $row);
$strlength = preg_match('/#art_content\(([0-9]+)\)/', $row, $capture) ? $capture[1] : '100';
$content = plxUtils::truncate($art['content'], $strlength, $ending, true, true);
$row = str_replace('#art_content(' . $strlength . ')', '#art_content', $row);
$row = str_replace('#art_content', $content, $row);
$row = str_replace('#art_date', plxDate::formatDate($date, '#num_day/#num_month/#num_year(4)'), $row);
$row = str_replace('#art_hour', plxDate::formatDate($date, '#hour:#minute'), $row);
$row = str_replace('#art_time', plxDate::formatDate($date, '#time'), $row);
$row = plxDate::formatDate($date, $row);
$row = str_replace('#art_nbcoms', $art['nb_com'], $row);
$row = str_replace('#art_thumbnail', '<img class="art_thumbnail" src="#img_url" alt="#img_alt" title="#img_title" />', $row);
$row = str_replace('#img_url', $plxShow->plxMotor->urlRewrite($art['thumbnail']), $row);
$row = str_replace('#img_title', $art['thumbnail_title'], $row);
$row = str_replace('#img_alt', $art['thumbnail_alt'], $row);
# Hook plugin
eval($plxShow->plxMotor->plxPlugins->callHook('plxShowLastArtListContent'));
# On genère notre ligne
echo $row.PHP_EOL;
}
echo '</ul></div>';
}
<?php
echo self::END_CODE;
}
}
?>