dofollowlistitem.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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/notices/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. $html = $this->notice->getRendered();
  66. if (common_config('nofollow', 'external') == 'sometimes') {
  67. // remove the nofollow part
  68. // XXX: cache the results here
  69. $html = preg_replace('/rel="(.*)nofollow ?/', 'rel="\1', $html);
  70. }
  71. $this->out->raw($html);
  72. $this->out->elementEnd('div');
  73. }
  74. }