Revision: 1474
Author: magike.net
Date: Sat Aug 14 23:11:52 2010
Log: fix issue 479
http://code.google.com/p/typecho/source/detail?r=1474

Added:
  /trunk/var/Widget/Comments/Ping.php
Modified:
  /trunk/var/Widget/Archive.php

=======================================
--- /dev/null
+++ /trunk/var/Widget/Comments/Ping.php Sat Aug 14 23:11:52 2010
@@ -0,0 +1,161 @@
+<?php
+/**
+ * 回响归档
+ *
+ * @category typecho
+ * @package Widget
+ * @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
+ * @license GNU General Public License 2.0
+ * @version $Id$
+ */
+
+/**
+ * 回响归档组件
+ *
+ * @category typecho
+ * @package Widget
+ * @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
+ * @license GNU General Public License 2.0
+ */
+class Widget_Comments_Ping extends Widget_Abstract_Comments
+{
+    /**
+     * _customSinglePingCallback
+     *
+     * @var boolean
+     * @access private
+     */
+    private $_customSinglePingCallback = false;
+
+    /**
+     * 构造函数,初始化组件
+     *
+     * @access public
+     * @param mixed $request request对象
+     * @param mixed $response response对象
+     * @param mixed $params 参数列表
+     * @return void
+     */
+    public function __construct($request, $response, $params = NULL)
+    {
+        parent::__construct($request, $response, $params);
+        $this->parameter->setDefault('parentId=0');
+
+        /** 初始化回调函数 */
+        if (function_exists('singlePing')) {
+            $this->_customSinglePingCallback = true;
+        }
+    }
+
+    /**
+     * 重载内容获取
+     *
+     * @access protected
+     * @return void
+     */
+    protected function ___parentContent()
+    {
+        return $this->parameter->parentContent;
+    }
+
+    /**
+     * 回响回调函数
+     *
+     * @access private
+     * @param string $singlePingOptions 单个回响自定义选项
+     * @return void
+     */
+    private function singlePingCallback($singlePingOptions)
+    {
+        if ($this->_customSinglePingCallback) {
+            return singlePing($this, $singlePingOptions);
+        }
+
+?>
+<li id="<?php $this->theId(); ?>" class="ping-body">
+    <div class="ping-title">
+        <cite class="fn"><?php
+        $singlePingOptions->beforeTitle();
+        $this->author(true);
+        $singlePingOptions->afterTitle();
+        ?></cite>
+    </div>
+    <div class="ping-meta">
+        <a href="<?php $this->permalink(); ?>"><?php  
$singlePingOptions->beforeDate();
+        $this->date($singlePingOptions->dateFormat);
+        $singlePingOptions->afterDate(); ?></a>
+    </div>
+    <?php $this->content(); ?>
+</li>
+<?php
+    }
+
+    /**
+     * 输出文章回响数
+     *
+     * @access public
+     * @param string $string 评论数格式化数据
+     * @return void
+     */
+    public function num()
+    {
+        $args = func_get_args();
+        if (!$args) {
+            $args[] = '%d';
+        }
+
+        echo sprintf(isset($args[$this->length]) ? $args[$this->length] :  
array_pop($this->length), $this->length);
+    }
+
+    /**
+     * execute
+     *
+     * @access public
+     * @return void
+     */
+    public function execute()
+    {
+        if (!$this->parameter->parentId) {
+            return;
+        }
+
+        $select = $this->select()->where('table.comments.status  
= ?', 'approved')
+        ->where('table.comments.cid = ?', $this->parameter->parentId)
+        ->where('table.comments.type <> ?', 'comment')
+        ->order('table.comments.coid', 'ASC');
+
+        $this->db->fetchAll($select, array($this, 'push'));
+    }
+
+    /**
+     * 列出回响
+     *
+     * @access private
+     * @param mixed $singlePingOptions 单个回响自定义选项
+     * @return void
+     */
+    public function listPings($singlePingOptions = NULL)
+    {
+        if ($this->have()) {
+            //初始化一些变量
+            $parsedSinglePingOptions =  
Typecho_Config::factory($singlePingOptions);
+            $parsedSinglePingOptions->setDefault(array(
+                'before'        =>  '<ol class="ping-list">',
+                'after'         =>  '</ol>',
+                'beforeTitle'   =>  '',
+                'afterTitle'    =>  '',
+                'beforeDate'    =>  '',
+                'afterDate'     =>  '',
+                'dateFormat'    =>  $this->options->commentDateFormat
+            ));
+
+            echo $parsedSinglePingOptions->before;
+
+            while ($this->next()) {
+                $this->singlePingCallback($parsedSinglePingOptions);
+            }
+
+            echo $parsedSinglePingOptions->after;
+        }
+    }
+}
=======================================
--- /trunk/var/Widget/Archive.php       Thu Jul 22 19:24:23 2010
+++ /trunk/var/Widget/Archive.php       Sat Aug 14 23:11:52 2010
@@ -1344,6 +1344,18 @@

          return $this->widget('Widget_Comments_Archive', $parameter);
      }
+
+    /**
+     * 获取回响归档对象
+     *
+     * @access public
+     * @return void
+     */
+    public function pings()
+    {
+        return $this->widget('Widget_Comments_Ping', array('parentId' =>  
$this->hidden ? 0 : $this->cid,
+                    'parentContent' => $this->row));
+    }

      /**
       * 获取附件对象
_______________________________________________
announce mailing list
[email protected]
http://lists.typecho.org/mailman/listinfo/announce

回复