class.blogcomment.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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 blogcomment
  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 blogcomment 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 extractTrackbacks
  48. Cette méthode sépare les commentaires des trackbacks et renvoie un objet
  49. de type ''blogcomment'' contenant les trackbacks qui sont supprimés de
  50. l'objet courant.
  51. @return blogcomment
  52. */
  53. function extractTrackbacks()
  54. {
  55. $res = array();
  56. foreach ($this->arry_data as $k => $v)
  57. {
  58. if ($v['comment_trackback'] == 1) {
  59. $res[] = $v;
  60. unset($this->arry_data[$k]);
  61. }
  62. }
  63. $this->recordSet(array_values($this->arry_data));
  64. $rs = new blogcomment($res);
  65. $rs->setBlog($this->blog);
  66. return $rs;
  67. }
  68. /**
  69. @function getTS
  70. Renvoie le timestamp UNIX du commentaire.
  71. @return string
  72. */
  73. function getTS()
  74. {
  75. return strtotime($this->f('comment_dt'));
  76. }
  77. /**
  78. @function getLDate()
  79. Renvoie la date du commentaire au format définit par la propriété
  80. ''date_format'' de l'objet $blog définit pour l'objet courant.
  81. @return string
  82. */
  83. function getLDate()
  84. {
  85. return dt::str($this->blog->date_format,$this->getTS());
  86. }
  87. /**
  88. @function getLTime()
  89. Renvoie l'heure du commentaire au format définit par la propriété
  90. ''time_format'' de l'objet $blog définit pour l'objet courant.
  91. @return string
  92. */
  93. function getLTime()
  94. {
  95. return dt::str($this->blog->time_format,$this->getTS());
  96. }
  97. /**
  98. @function getIsoDate
  99. Renvoie la date du billet au format ISO.
  100. @return string
  101. */
  102. function getIsoDate()
  103. {
  104. return dt::iso8601($this->getTS());
  105. }
  106. /**
  107. @function getContent
  108. Renvoie le contenu du commentaire.
  109. @return string
  110. */
  111. function getContent()
  112. {
  113. return $this->f('comment_content');
  114. }
  115. /**
  116. @function getEncodMail
  117. Renvoie l'adresse email de l'auteur du commentaire sous forme encodée mais
  118. lisible par un navigateur.
  119. @return string
  120. */
  121. function getEncodMail()
  122. {
  123. return strtr($this->f('comment_email'),array('@'=>'%40','.'=>'%2e'));
  124. }
  125. /**
  126. @function getPermURL
  127. Renvoie le lien permanent vers le commentaire.
  128. @return string
  129. */
  130. function getPermURL()
  131. {
  132. $post_titre_url = $this->f('post_titre_url');
  133. $url = sprintf($this->blog->front_url['post'],$this->f('postyear'),
  134. $this->f('postmonth'),$this->f('postday'),
  135. $this->f('post_id'),$post_titre_url);
  136. return $url.'#c'.$this->f('comment_id');
  137. }
  138. /**
  139. @function getIDs
  140. Cette méthode crée une liste des ID de chaque commentaire du recordset.
  141. Chaque entrée peut être précédée d'une éventuelle chaîne définie par $str.
  142. @param string str Chaîne précédant chaque ID
  143. @return array
  144. */
  145. function getIDs($str='')
  146. {
  147. $res = array();
  148. $index = $this->int_index;
  149. $this->moveStart();
  150. while (!$this->EOF())
  151. {
  152. $res[] = $str.$this->f('comment_id');
  153. $this->moveNext();
  154. }
  155. $this->move($index);
  156. return $res;
  157. }
  158. }
  159. ?>