国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.0KB

  1. <?php
  2. if (!defined('DEDEINC')) {
  3. exit("Request Error!");
  4. }
  5. /**
  6. * 调用最新评论
  7. *
  8. * @version $Id: feedback.lib.php 1 9:29 2010年7月6日Z tianya $
  9. * @package DedeCMS.Taglib
  10. * @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
  11. * @license http://help.dedecms.com/usersguide/license.html
  12. * @link http://www.dedecms.com
  13. */
  14. /*>>dede>>
  15. <name>会员评论内容</name>
  16. <type>全局标记</type>
  17. <for>V55,V56,V57</for>
  18. <description>用于调用最新评论</description>
  19. <demo>
  20. {dede:feedback}
  21. <ul>
  22. <li class='fbtitle'>[field:username function="(@me=='guest' ? '游客' : @me)"/] 对 [field:title/] 的评论:</li>
  23. <li class='fbmsg'> <a href="plus/feedback.php?aid=[field:aid/]" class='fbmsg'>[field:msg /]</a></li>
  24. </ul>
  25. {/dede:feedback}
  26. </demo>
  27. <attributes>
  28. <iterm>row:调用评论条数</iterm>
  29. <iterm>titlelen:标题长度</iterm>
  30. <iterm>infolen:评论长度</iterm>
  31. </attributes>
  32. >>dede>>*/
  33. function lib_feedback(&$ctag, &$refObj)
  34. {
  35. global $dsql;
  36. $attlist = "row|12,titlelen|24,infolen|100,orderby|";
  37. FillAttsDefault($ctag->CAttribute->Items, $attlist);
  38. extract($ctag->CAttribute->Items, EXTR_SKIP);
  39. $innertext = trim($ctag->GetInnerText());
  40. $totalrow = $row;
  41. $revalue = '';
  42. if (empty($innertext)) {
  43. $innertext = GetSysTemplets('tag_feedback.htm');
  44. }
  45. $order = " ORDER BY id DESC";
  46. if (!empty($orderby)) {
  47. switch ($orderby) {
  48. case 'good':
  49. $order = " ORDER BY good DESC";
  50. break;
  51. case 'time':
  52. $order = " ORDER BY dtime DESC";
  53. break;
  54. default:
  55. $order = " ORDER BY id DESC";
  56. break;
  57. }
  58. }
  59. $wsql = " WHERE fb.ischeck=1 AND fb.fid=0 ";
  60. if (get_class($refObj) === "Archives" && isset($refObj->Fields["id"])) {
  61. $wsql .= " AND fb.aid='{$refObj->Fields["id"]}'";
  62. }
  63. $equery = "SELECT fb.*,mb.userid,mb.face as mface,mb.spacesta,mb.scores,mb.sex FROM `#@__feedback` fb
  64. LEFT JOIN `#@__member` mb on mb.mid = fb.mid $wsql $order LIMIT 0 , $totalrow";
  65. $ctp = new DedeTagParse();
  66. $ctp->SetNameSpace('field', '[', ']');
  67. $ctp->LoadSource($innertext);
  68. $dsql->Execute('fb', $equery);
  69. while ($arr = $dsql->GetArray('fb')) {
  70. $arr['face'] = empty($arr['mface']) ? $GLOBALS['cfg_cmspath'] . '/static/img/avatar.png' : $arr['mface'];
  71. $arr['title'] = cn_substr($arr['arctitle'], $titlelen);
  72. $arr['msg'] = jsTrim(Html2Text($arr['msg']), $infolen);
  73. foreach ($ctp->CTags as $tagid => $ctag) {
  74. $ctp->Assign($tagid, $arr[$ctag->GetName()]);
  75. }
  76. $revalue .= $ctp->GetResult();
  77. }
  78. return $revalue;
  79. }
  80. function jsTrim($str, $len)
  81. {
  82. $str = preg_replace("/{quote}(.*){\/quote}/is", '', $str);
  83. $str = str_replace('&lt;br/&gt;', ' ', $str);
  84. $str = cn_substr($str, $len);
  85. $str = preg_replace("#['\"\r\n]#", "", $str);
  86. return $str;
  87. }