class.blogpost.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. # ***** BEGIN LICENSE BLOCK *****
  3. # This file is part of DotClear.
  4. # Copyright (c) 2004 Olivier Meunier and contributors. All rights
  5. # reserved.
  6. #
  7. # DotClear is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # DotClear is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with DotClear; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20. #
  21. # ***** END LICENSE BLOCK *****
  22. /**
  23. @class blogpost
  24. Cette classe définit un objet de type recordset en l'étendant de nouvelles
  25. fonctions. Elle dispose donc de toutes les fonctions d'un recordset en sus
  26. des fonctions suivantes.
  27. Cette classe doit être initialisée avec la définition d'un objet de type
  28. blog (à l'aide de la méthode ''setBlog'').
  29. @param blog blog Objet de type blog
  30. */
  31. class blogpost extends recordset
  32. {
  33. var $blog;
  34. /** @doc
  35. === Méthodes === */
  36. /**
  37. @function setBlog
  38. Défini l'objet de type blog qui sera passé à la classe après qu'il a été
  39. instancié.
  40. @param blog blog Objet de type blog
  41. */
  42. function setBlog(&$blog)
  43. {
  44. $this->blog = $blog;
  45. }
  46. /**
  47. @function getFormat
  48. Renvoie le format du billet (''wiki'' ou ''html'')
  49. @return string
  50. */
  51. function getFormat()
  52. {
  53. return ($this->f('post_content_wiki') != '') ? 'wiki' : 'html';
  54. }
  55. /**
  56. @function getNbComments
  57. Renvoie le nombre de commentaires d'un billet.
  58. @return integer
  59. */
  60. function getNbComments()
  61. {
  62. return (integer) $this->blog->getNbComments($this->f('post_id'));
  63. }
  64. /**
  65. @function getNbTrackbacks
  66. Renvoie le nombre de trackback d'un billet.
  67. @return integer
  68. */
  69. function getNbTrackbacks()
  70. {
  71. return (integer) $this->blog->getNbTrackbacks($this->f('post_id'));
  72. }
  73. /**
  74. @function getTS
  75. Renvoie le timestamp UNIX du billet.
  76. @return string
  77. */
  78. function getTS()
  79. {
  80. return strtotime($this->f('post_dt'));
  81. }
  82. /**
  83. @function getLDate()
  84. Renvoie la date du billet au format définit par la propriété
  85. ''date_format'' de l'objet $blog définit pour l'objet courant.
  86. @return string
  87. */
  88. function getLDate()
  89. {
  90. return dt::str($this->blog->date_format,$this->getTS());
  91. }
  92. /**
  93. @function getLTime()
  94. Renvoie l'heure du billet au format définit par la propriété
  95. ''time_format'' de l'objet $blog définit pour l'objet courant.
  96. @return string
  97. */
  98. function getLTime()
  99. {
  100. return dt::str($this->blog->time_format,$this->getTS());
  101. }
  102. /**
  103. @function getIsoDate
  104. Renvoie la date du billet au format ISO.
  105. @return string
  106. */
  107. function getIsoDate()
  108. {
  109. return dt::iso8601($this->getTS());
  110. }
  111. /**
  112. @function getUserCN
  113. Renvoie le ''common name'' de l'auteur du billet. Si ce dernier a un
  114. pseudo, alors le pseudo sera utilisé, sinon, le prénom suivit du nom.
  115. @return string
  116. */
  117. function getUserCN()
  118. {
  119. if($this->f('user_pseudo') != '') {
  120. return $this->f('user_pseudo');
  121. } else {
  122. return trim($this->f('user_prenom').' '.$this->f('user_nom'));
  123. }
  124. }
  125. /**
  126. @function getPermURL
  127. Renvoie l'URL permanente du billet.
  128. @return string
  129. */
  130. function getPermURL()
  131. {
  132. return sprintf($this->blog->front_url['post'],$this->f('postyear'),
  133. $this->f('postmonth'),$this->f('postday'),
  134. $this->f('post_id'),$this->f('post_titre_url'));
  135. }
  136. /**
  137. @function getCatURL
  138. Renvoir l'URL vers la catégorie du billet.
  139. @return string
  140. */
  141. function getCatURL()
  142. {
  143. return sprintf($this->blog->front_url['cat'],$this->f('cat_libelle_url'));
  144. }
  145. /**
  146. @function getIDs
  147. Cette méthode crée une liste des ID de chaque billet du recordset. Chaque
  148. entrée peut être précédée d'une éventuelle chaîne définie par $str.
  149. @param string str Chaîne précédant chaque ID
  150. @return array
  151. */
  152. function getIDs($str='')
  153. {
  154. $res = array();
  155. $index = $this->int_index;
  156. $this->moveStart();
  157. while (!$this->EOF())
  158. {
  159. $res[] = $str.$this->f('post_id');
  160. $this->moveNext();
  161. }
  162. $this->move($index);
  163. return $res;
  164. }
  165. }
  166. ?>