dofollowlistitem.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * StatusNet, the distributed open-source microblogging tool
  4. *
  5. * widget for displaying a list of notices
  6. *
  7. * PHP version 5
  8. *
  9. * LICENCE: This program is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU Affero General Public License as published by
  11. * the Free Software Foundation, either version 3 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. *
  22. * @category UI
  23. * @package StatusNet
  24. * @author Evan Prodromou <evan@status.net>
  25. * @copyright 2010 StatusNet, Inc.
  26. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
  27. * @link http://status.net/
  28. */
  29. if (!defined('STATUSNET')) {
  30. exit(1);
  31. }
  32. require_once INSTALLDIR.'/lib/noticelist.php';
  33. /**
  34. * StatusNet, the distributed open-source microblogging tool
  35. *
  36. * Widget superclass for notice list items that remove rel=nofollow
  37. *
  38. * When nofollow|external = 'sometimes', notices get rendered and saved
  39. * with rel=nofollow for external links. We want to remove that relationship
  40. * on some pages (profile, single notice, faves). This superclass for
  41. * some noticelistitems will strip that bit of code out when showing
  42. * notice content
  43. *
  44. * @category UI
  45. * @package StatusNet
  46. * @author Evan Prodromou <evan@status.net>
  47. * @copyright 2010 StatusNet, Inc.
  48. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
  49. * @link http://status.net/
  50. */
  51. class DoFollowListItem extends NoticeListItem
  52. {
  53. /**
  54. * show the content of the notice
  55. *
  56. * Trims out the rel=nofollow for external links
  57. * if nofollow|external = 'sometimes'
  58. *
  59. * @return void
  60. */
  61. function showContent()
  62. {
  63. // FIXME: URL, image, video, audio
  64. $this->out->elementStart('article', array('class' => 'e-content'));
  65. if (!empty($this->notice->rendered)) {
  66. $html = $this->notice->rendered;
  67. } else {
  68. $html = common_render_content($this->notice->content, $this->notice);
  69. }
  70. if (common_config('nofollow', 'external') == 'sometimes') {
  71. // remove the nofollow part
  72. // XXX: cache the results here
  73. $html = preg_replace('/rel="(.*)nofollow ?/', 'rel="\1', $html);
  74. }
  75. $this->out->raw($html);
  76. $this->out->elementEnd('div');
  77. }
  78. }