annotate includes/class.post.php @ 89:e37ef9a81737 tip

Merge
author Franck Deroche <franck@defr.org>
date Thu, 13 Dec 2018 00:55:42 +0100
parents 55582b82c43d
children
rev   line source
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@76 50 SELECT T.Tag
webmaster@76 51 FROM Tags T, Lien_Tags_Posts L
webmaster@76 52 WHERE L.idMess={$infos['num_mess']} AND L.idTag = T.idTag
webmaster@76 53 ORDER BY T.Tag
webmaster@76 54 ", 'Tags');
webmaster@76 55 $tags = array();
webmaster@11 56 if($nbTags > 0)
webmaster@11 57 {
webmaster@76 58 while(0 !== ($tag = $db->GetRow('Tags')))
webmaster@76 59 {
webmaster@76 60 $tags[] = sprintf("<a href='%s' class='tag'>%s</a>",
webmaster@76 61 BLOG_URL . '/tags/' . urlencode($tag['Tag']),
webmaster@76 62 $tag['Tag']);
webmaster@76 63 }
webmaster@76 64 $tags = implode(' | ', $tags);
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 ?>