| 
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 ?> |