webmaster@11
|
1 <?php |
webmaster@11
|
2 class Post { |
webmaster@11
|
3 private $tpl; |
webmaster@11
|
4 private $infos; |
webmaster@11
|
5 private $mess; |
webmaster@33
|
6 private $dateFormatee = array(); |
webmaster@11
|
7 private $url; |
webmaster@11
|
8 private $commentLabel; |
webmaster@11
|
9 private $mood; |
webmaster@11
|
10 private $tags; |
webmaster@11
|
11 |
webmaster@11
|
12 public function __construct($infos) { |
webmaster@11
|
13 $this->infos = (object)$infos; |
webmaster@11
|
14 |
webmaster@32
|
15 $this->tpl = new Template(Skeleton::getTemplateFile('post')); |
webmaster@11
|
16 |
webmaster@11
|
17 // Création du document fragment contenant le message |
webmaster@11
|
18 $Mess = str_replace( |
webmaster@11
|
19 array('<P>', '</P>'), |
webmaster@11
|
20 array('<p>', '</p>'), |
webmaster@11
|
21 $infos['Message']); |
webmaster@53
|
22 $Mess = TextUtils::EnsureUTF8($Mess); |
webmaster@11
|
23 $this->mess = $this->tpl->getDocumentFragment(); |
webmaster@11
|
24 $this->mess->appendXML($Mess); |
webmaster@11
|
25 |
webmaster@11
|
26 // Formatage de la date |
webmaster@11
|
27 $time = strtotime($infos['DatePost']); |
webmaster@33
|
28 $this->dateFormatee['human'] = strftime("%A %d %B %Y, %Hh%M", $time); |
webmaster@33
|
29 $this->dateFormatee['iso'] = date("c", $time); |
webmaster@11
|
30 |
webmaster@11
|
31 // On détermine l'url de ce post |
webmaster@11
|
32 $strippedTitle = TextUtils::StripTitle($infos['Titre']); |
webmaster@61
|
33 $this->url = '/posts/' . $infos['num_mess'] . '-' . $strippedTitle; |
webmaster@11
|
34 |
webmaster@11
|
35 // On détermine le label du lien vers les commentaires |
webmaster@11
|
36 $this->commentLabel = "Un p'tit commentaire ?"; |
webmaster@11
|
37 if($infos['NbCommentaires'] > 0) |
webmaster@11
|
38 $this->commentLabel .= " (" . $infos['NbCommentaires'] . ")"; |
webmaster@11
|
39 |
webmaster@11
|
40 // On s'occupe de l'indicateur d'humeur |
webmaster@11
|
41 if(!empty($infos['Emot'])) { |
webmaster@61
|
42 $mood = array('src' => BLOG_URL . "/mood/{$infos['Emot']}.png", |
webmaster@11
|
43 'alt' => 'Mood: ' . $infos['Emot']); |
webmaster@11
|
44 $this->mood = (object)$mood; |
webmaster@11
|
45 } |
webmaster@11
|
46 |
webmaster@11
|
47 // On détermine les tags du post |
webmaster@11
|
48 $db = Factory::getDB(); |
webmaster@11
|
49 $nbTags = $db->Query(" |
webmaster@11
|
50 SELECT T.Tag |
webmaster@11
|
51 FROM Tags T, Lien_Tags_Posts L |
webmaster@11
|
52 WHERE L.idMess={$infos['num_mess']} AND L.idTag = T.idTag |
webmaster@11
|
53 ORDER BY T.Tag |
webmaster@11
|
54 ", 2); |
webmaster@11
|
55 $tags = ''; |
webmaster@11
|
56 if($nbTags > 0) |
webmaster@11
|
57 { |
webmaster@11
|
58 while(0 !== ($tag = $db->GetRow(2))) |
webmaster@58
|
59 { |
webmaster@58
|
60 $tags .= sprintf("<a href='%s'>%s</a> |", |
webmaster@61
|
61 BLOG_URL . '/tags/' . urlencode($tag['Tag']), |
webmaster@58
|
62 $tag['Tag']); |
webmaster@58
|
63 } |
webmaster@11
|
64 $tags = substr($tags, 0, -1); |
webmaster@11
|
65 $this->tags = $this->tpl->getDocumentFragment(); |
webmaster@11
|
66 $this->tags->appendXML($tags); |
webmaster@11
|
67 } |
webmaster@11
|
68 else { |
webmaster@11
|
69 $this->tags = 'aucun'; |
webmaster@11
|
70 } |
webmaster@11
|
71 } |
webmaster@11
|
72 |
webmaster@11
|
73 public function format() { |
webmaster@30
|
74 $this->tpl->setParams($this->getTplParams()); |
webmaster@30
|
75 return $this->tpl; |
webmaster@30
|
76 } |
webmaster@30
|
77 |
webmaster@30
|
78 public function getTplParams() { |
webmaster@11
|
79 $params = array( |
webmaster@11
|
80 '#post@class' => 'PostContent ' . $this->infos->Emot, |
webmaster@11
|
81 'postTitle' => $this->infos->Titre, |
webmaster@33
|
82 'postDate' => $this->dateFormatee['human'], |
webmaster@33
|
83 'postDateISO' => $this->dateFormatee['iso'], |
webmaster@11
|
84 'postContent' => $this->mess, |
webmaster@11
|
85 'postNumber' => $this->infos->num_mess, |
webmaster@11
|
86 'postComments' => $this->commentLabel, |
webmaster@61
|
87 '#linkPostNumber@href' => $this->getURL(true), |
webmaster@61
|
88 '#linkPostComments@href' => $this->getURL(true), |
webmaster@11
|
89 'postTags' => $this->tags |
webmaster@11
|
90 ); |
webmaster@11
|
91 if(!empty($this->mood->src)) { |
webmaster@11
|
92 $params['#mood@src'] = $this->mood->src; |
webmaster@11
|
93 $params['#mood@alt'] = $this->mood->alt; |
webmaster@11
|
94 $params['#mood@class'] = 'mood'; |
webmaster@11
|
95 } |
webmaster@30
|
96 return $params; |
webmaster@30
|
97 } |
webmaster@30
|
98 |
webmaster@30
|
99 public function getURL() { |
webmaster@61
|
100 return BLOG_URL . $this->url; |
webmaster@11
|
101 } |
webmaster@11
|
102 } |
webmaster@11
|
103 ?> |