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.
162 lines
4.2 KiB
162 lines
4.2 KiB
<?php |
|
if (!defined('__TYPECHO_ROOT_DIR__')) exit; |
|
/** |
|
* 回响归档 |
|
* |
|
* @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; |
|
} |
|
} |
|
}
|
|
|