/** * 初始化函数 * * @access public * @return void */ public function execute() { /** 设置参数默认值 */ $this->parameter->setDefault('format=Y-m&type=month&limit=0'); $resource = $this->db->query($this->db->select('created')->from('table.contents')->where('type = ?', 'post')->where('table.contents.status = ?', 'publish')->where('table.contents.created < ?', $this->options->gmtTime)->order('table.contents.created', Typecho_Db::SORT_DESC)); $offset = $this->options->timezone - $this->options->serverTimezone; $result = array(); while ($post = $this->db->fetchRow($resource)) { $timeStamp = $post['created'] + $offset; $date = date($this->parameter->format, $timeStamp); if (isset($result[$date])) { $result[$date]['count']++; } else { $result[$date]['year'] = date('Y', $timeStamp); $result[$date]['month'] = date('m', $timeStamp); $result[$date]['day'] = date('d', $timeStamp); $result[$date]['date'] = $date; $result[$date]['count'] = 1; } } if ($this->parameter->limit > 0) { $result = array_slice($result, 0, $this->parameter->limit); } foreach ($result as $row) { $row['permalink'] = Typecho_Router::url('archive_' . $this->parameter->type, $row, $this->widget('Widget_Options')->index); $this->push($row); } }
/** * 获取当前评论链接 * * @access protected * @return string */ protected function ___permalink() { if ($this->options->commentsPageBreak && 'approved' == $this->status) { $coid = $this->coid; $parent = $this->parent; while ($parent > 0 && $this->options->commentsThreaded) { $parentRows = $this->db->fetchRow($this->db->select('parent')->from('table.comments')->where('coid = ? AND status = ?', $parent, 'approved')->limit(1)); if (!empty($parentRows)) { $coid = $parent; $parent = $parentRows['parent']; } else { break; } } $select = $this->db->select('coid', 'parent')->from('table.comments')->where('cid = ? AND status = ?', $this->parentContent['cid'], 'approved')->where('coid ' . ('DESC' == $this->options->commentsOrder ? '>=' : '<=') . ' ?', $coid)->order('coid', Typecho_Db::SORT_ASC); if ($this->options->commentsShowCommentOnly) { $select->where('type = ?', 'comment'); } $comments = $this->db->fetchAll($select); $commentsMap = array(); $total = 0; foreach ($comments as $comment) { $commentsMap[$comment['coid']] = $comment['parent']; if (0 == $comment['parent'] || !isset($commentsMap[$comment['parent']])) { $total++; } } $currentPage = ceil($total / $this->options->commentsPageSize); $pageRow = array('permalink' => $this->parentContent['pathinfo'], 'commentPage' => $currentPage); return Typecho_Router::url('comment_page', $pageRow, $this->options->index) . '#' . $this->theId; } return $this->parentContent['permalink'] . '#' . $this->theId; }
function OutputArchives($db, $options) { $select = $db->select('cid', 'title', 'slug', 'created', 'allowComment', 'commentsNum')->from('table.contents')->where('status = ?', 'publish')->where('type = ?', 'post'); $rawposts = $db->fetchAll($select); $posts = array(); // Loop through each post and sort it into a structured array foreach ($rawposts as $post) { /** 取出所有分类 */ $categories = $isTypechoEX ? Cache_Plugin::meta_get($post['cid'], "category") : $db->fetchAll($db->select('slug')->from('table.metas')->join('table.relationships', 'table.metas.mid = table.relationships.mid')->where('table.relationships.cid = ?', $post['cid'])->where('table.metas.type = ?', 'category')->order('table.metas.order', Typecho_Db::SORT_ASC)); /** 取出第一个分类作为slug条件 */ $post['category'] = current(Typecho_Common::arrayFlatten($categories, 'slug')); $date = new Typecho_Date($post['created']); $post['year'] = $date->year; $post['month'] = $date->month; $post['day'] = $date->day; $type = 'post'; //$p['type']; $routeExists = NULL != Typecho_Router::get($type); $permalink = $routeExists ? Typecho_Router::url($type, $post, $options->index) : '#'; $post['permalink'] = $permalink; $posts[$post['year'] . '.' . $post['month']][] = $post; } $rawposts = null; // More memory cleanup // Sort the months based on $atts krsort($posts); // Sort the posts within each month based on $atts foreach ($posts as $key => $month) { $sorter = array(); foreach ($month as $post) { $sorter[] = $post['created']; } array_multisort($sorter, SORT_DESC, $month); $posts[$key] = $month; unset($month); } // Generate the HTML $html = ""; foreach ($posts as $yearmonth => $posts) { list($year, $month) = explode('.', $yearmonth); $html .= "<li><b><a href=\"" . Typecho_Router::url('archive_month', array('year' => $year, 'month' => $month), $options->index) . "\">" . $year . "年" . $month . "月</a></b> <span>(" . number_format(count($posts)) . " 篇文章)</span><ul>"; foreach ($posts as $post) { $html .= "<li>" . $post['day'] . ": <a href=\"" . $post['permalink'] . "\">" . $post['title'] . "</a> <span>(" . number_format($post['commentsNum']) . ")</span></li>"; } $html .= "</ul></li>"; } return $html; }
/** * 获取当前评论链接 * * @access protected * @return string */ protected function ___permalink() { if ($this->options->commentsPageBreak && 'approved' == $this->status) { $coid = $this->coid; $select = $this->db->select('coid')->from('table.comments')->where('cid = ? AND status = ?', $this->parentContent['cid'], 'approved')->where('coid ' . ('DESC' == $this->options->commentsOrder ? '>=' : '<=') . ' ?', $coid)->order('coid', Typecho_Db::SORT_ASC); if ($this->options->commentsShowCommentOnly) { $select->where('type = ?', 'comment'); } $comments = $this->db->fetchAll($select); $total = count($comments); $currentPage = ceil($total / $this->options->commentsPageSize); $pageRow = array('permalink' => $this->parentContent['pathinfo'], 'commentPage' => $currentPage); return Typecho_Router::url('comment_page', $pageRow, $this->options->index) . '#' . $this->theId; } return $this->parentContent['permalink'] . '#' . $this->theId; }
/** * 输出分页 * * @access public * @param string $prev 上一页文字 * @param string $next 下一页文字 * @param int $splitPage 分割范围 * @param string $splitWord 分割字符 * @param string $template 展现配置信息 * @return void */ public function pageNav($prev = '«', $next = '»', $splitPage = 3, $splitWord = '...', $template = '') { if ($this->options->commentsPageBreak && $this->_total > $this->options->commentsPageSize) { $default = array('wrapTag' => 'ol', 'wrapClass' => 'page-navigator'); if (is_string($template)) { parse_str($template, $config); } else { $config = $template; } $template = array_merge($default, $config); $pageRow = $this->parameter->parentContent; $pageRow['permalink'] = $pageRow['pathinfo']; $query = Typecho_Router::url('comment_page', $pageRow, $this->options->index); /** 使用盒状分页 */ $nav = new Typecho_Widget_Helper_PageNavigator_Box($this->_total, $this->_currentPage, $this->options->commentsPageSize, $query); $nav->setPageHolder('commentPage'); $nav->setAnchor('comments'); echo '<' . $template['wrapTag'] . (empty($template['wrapClass']) ? '' : ' class="' . $template['wrapClass'] . '"') . '>'; $nav->render($prev, $next, $splitPage, $splitWord, $template); echo '</' . $template['wrapTag'] . '>'; } }
public static function authorizeIcon() { return '<a href="' . Typecho_Router::url('sinauthAuthorize', array('feed' => '/atom/comments/')) . '">新浪登陆</a>'; }
/** * 编辑文章后更新缓存 * @param $contents * @param $class */ public static function post_update($contents, $class) { if ('publish' != $contents['visibility'] || $contents['created'] > time()) { return; } //获取系统配置 $options = Helper::options(); if (!$options->plugin('TpCache')->cache_driver) { return; } //获取文章类型 $type = $contents['type']; //获取路由信息 $routeExists = NULL != Typecho_Router::get($type); if (!is_null($routeExists)) { $db = Typecho_Db::get(); $contents['cid'] = $class->cid; $contents['categories'] = $db->fetchAll($db->select()->from('table.metas')->join('table.relationships', 'table.relationships.mid = table.metas.mid')->where('table.relationships.cid = ?', $contents['cid'])->where('table.metas.type = ?', 'category')->order('table.metas.order', Typecho_Db::SORT_ASC)); $contents['category'] = urlencode(current(Typecho_Common::arrayFlatten($contents['categories'], 'slug'))); $contents['slug'] = urlencode($contents['slug']); $contents['date'] = new Typecho_Date($contents['created']); $contents['year'] = $contents['date']->year; $contents['month'] = $contents['date']->month; $contents['day'] = $contents['date']->day; } //生成永久连接 $path_info = $routeExists ? Typecho_Router::url($type, $contents) : '#'; self::init(); if (self::needCache($path_info)) { self::delete(self::$path); } }
public function someAction($route, $params = null, $echo = true) { $params['action'] = $route; $url = $this->widget('Widget_Security')->getTokenUrl(Typecho_Router::url('do', $params, $this->index)); if ($echo) { echo $url; } else { return $url; } }
/** * 获取登录提交地址 * * @access protected * @return string */ protected function ___registerAction() { return $this->widget('Widget_Security')->getTokenUrl(Typecho_Router::url('do', array('action' => 'register', 'widget' => 'Register'), $this->index)); }
/** * 输出分页 * * @access public * @param string $prev 上一页文字 * @param string $next 下一页文字 * @param int $splitPage 分割范围 * @param string $splitWord 分割字符 * @return void */ public function pageNav($prev = '«', $next = '»', $splitPage = 3, $splitWord = '...') { if ($this->options->commentsPageBreak && $this->_total > $this->options->commentsPageSize) { $pageRow = $this->parameter->parentContent; $pageRow['permalink'] = $pageRow['pathinfo']; $query = Typecho_Router::url('comment_page', $pageRow, $this->options->index); /** 使用盒状分页 */ $nav = new Typecho_Widget_Helper_PageNavigator_Box($this->_total, $this->_currentPage, $this->options->commentsPageSize, $query); $nav->setPageHolder('commentPage'); $nav->setAnchor('comments'); echo '<ol class="page-navigator">'; $nav->render($prev, $next, $splitPage, $splitWord); echo '</ol>'; } }
function Comments_Pager($obj) { //set total $pagesize = MyTypechoTheme_Plugin::$_options->commentsPageSize; $total = $obj->getTotal(); if (MyTypechoTheme_Plugin::$_options->commentsPageBreak && $total > $pagesize) { $currentPage = $obj->getCurrentPage(); $totalPage = ceil($total / $pagesize); if ($currentPage < $totalPage) { $pageRow = $obj->parameter->parentContent; $pageRow['permalink'] = $pageRow['pathinfo']; //get url $query = Typecho_Router::url('comment_page', $pageRow, MyTypechoTheme_Plugin::$_options->index); echo "<div class=\"navigation\"><a class=\"loadmore\" role=\"navigation\" href=\"#\" data=\"" . str_replace('{commentPage}', $currentPage + 1, $query) . "\">更多评论</a></div>"; } } }
/** * 获取登录提交地址 * * @access protected * @return string */ protected function ___registerAction() { return Typecho_Router::url('do', array('action' => 'register', 'widget' => 'Register'), $this->index); }
include 'common.php'; include 'header.php'; include 'menu.php'; ?> <div class="main"> <div class="body container"> <?php include 'page-title.php'; ?> <div class="row typecho-page-main" role="main"> <div class="col-mb-12"> <div id="typecho-welcome"> <form action="<?php echo $security->getTokenUrl(Typecho_Router::url('do', array('action' => 'upgrade', 'widget' => 'Upgrade'), Typecho_Common::url('index.php', $options->rootUrl))); ?> " method="post"> <h3><?php _e('检测到新版本!'); ?> </h3> <ul> <li><?php _e('您已经更新了系统程序, 我们还需要执行一些后续步骤来完成升级'); ?> </li> <li><?php _e('此程序将把您的系统从 <strong>%s</strong> 升级到 <strong>%s</strong>', $options->version, Typecho_Common::VERSION); ?> </li>
/** * Grab all posts and filter them into an array * */ public static function GetPosts() { $options = Typecho_Widget::widget('Widget_Options'); /** * 获取数据库实例化对象 * 用静态变量存储实例化的数据库对象,可以保证数据连接仅进行一次 */ $db = Typecho_Db::get(); $select = $db->select('cid', 'title', 'slug', 'created', 'allowComment', 'commentsNum')->from('table.contents')->where('status = ?', 'publish')->where('type = ?', 'post'); $rawposts = $db->fetchAll($select); $posts = array(); // Loop through each post and sort it into a structured array foreach ($rawposts as $post) { /** 取出所有分类 */ $categories = $db->fetchAll($db->select('slug')->from('table.metas')->join('table.relationships', 'table.metas.mid = table.relationships.mid')->where('table.relationships.cid = ?', $post['cid'])->where('table.metas.type = ?', 'category')->order('table.metas.order', Typecho_Db::SORT_ASC)); /** 取出第一个分类作为slug条件 */ $post['category'] = current(Typecho_Common::arrayFlatten($categories, 'slug')); $date = new Typecho_Date($post['created']); $post['year'] = $date->year; $post['month'] = $date->month; $post['day'] = $date->day; $type = 'post'; //$p['type']; $routeExists = NULL != Typecho_Router::get($type); $permalink = $routeExists ? Typecho_Router::url($type, $post, $options->index) : '#'; $post['permalink'] = $permalink; $posts[$post['year'] . '.' . $post['month']][] = $post; } $rawposts = null; // More memory cleanup return $posts; }
<div class="site-state-item site-state-posts"> <a href="<?php echo Typecho_Router::url('page', array('slug' => 'archive'), $this->options->index); ?> "> <span class="site-state-item-count"><?php echo $stat->publishedPostsNum; ?> </span> <span class="site-state-item-name">日志</span> </a> </div> <div class="site-state-item site-state-categories"> <a href="<?php echo Typecho_Router::url('page', array('slug' => 'categories'), $this->options->index); ?> "> <span class="site-state-item-count"><?php echo $stat->categoriesNum; ?> </span> <span class="site-state-item-name">分类</span> </a> </div> <div class="site-state-item site-state-tags"> <span class="site-state-item-count"><?php echo $stat->publishedPagesNum; ?> </span>
/** * 准备数据 * @param $contents 文章内容 * @param $class 调用接口的类 * @throws Typecho_Plugin_Exception */ public static function send($contents, $class) { //如果文章属性为隐藏或滞后发布 if ('publish' != $contents['visibility'] || $contents['created'] > time()) { return; } //获取系统配置 $options = Helper::options(); //判断是否配置好API if (is_null($options->plugin('BaiduSubmit')->api)) { throw new Typecho_Plugin_Exception(_t('api未配置')); } //获取文章类型 $type = $contents['type']; //获取路由信息 $routeExists = NULL != Typecho_Router::get($type); if (!is_null($routeExists)) { $db = Typecho_Db::get(); $contents['cid'] = $class->cid; $contents['categories'] = $db->fetchAll($db->select()->from('table.metas')->join('table.relationships', 'table.relationships.mid = table.metas.mid')->where('table.relationships.cid = ?', $contents['cid'])->where('table.metas.type = ?', 'category')->order('table.metas.order', Typecho_Db::SORT_ASC)); $contents['category'] = urlencode(current(Typecho_Common::arrayFlatten($contents['categories'], 'slug'))); $contents['slug'] = urlencode($contents['slug']); $contents['date'] = new Typecho_Date($contents['created']); $contents['year'] = $contents['date']->year; $contents['month'] = $contents['date']->month; $contents['day'] = $contents['date']->day; } //生成永久连接 $path_info = $routeExists ? Typecho_Router::url($type, $contents) : '#'; $permalink = Typecho_Common::url($path_info, $options->index); //调用post方法 self::post($permalink); }
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { //生成静态链接 $routeExists = NULL != Typecho_Router::get('author'); $value['permalink'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->index) : '#'; /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedAtomUrl) : '#'; // modified_by_jiangmuzi 2015.09.22 $avatar = Forum_Common::parseUserAvatar($value['uid']); $value = array_merge($value, $avatar); $value['ucenter'] = $this->options->someUrl('ucenter', array('u' => $value['name']), false); // end modified $value = $this->pluginHandle(__CLASS__)->filter($value, $this); return $value; }
/** * 检查链接是否正确 * * @access private * @return void */ private function checkPermalink() { $type = $this->parameter->type; if (in_array($type, array('index', 'comment_page', 404)) || $this->_makeSinglePageAsFrontPage || !$this->parameter->checkPermalink) { // 强制关闭 return; } if ($this->_archiveSingle) { $permalink = $this->permalink; } else { $value = array_merge($this->_pageRow, array('page' => $this->_currentPage)); $path = Typecho_Router::url($type, $value); $permalink = Typecho_Common::url($path, $this->options->index); } $requestUrl = $this->request->getRequestUrl(); $src = parse_url($permalink); $target = parse_url($requestUrl); if ($src['host'] != $target['host'] || urldecode($src['path']) != urldecode($target['path'])) { $this->response->redirect($permalink, true); } }
include 'common.php'; include 'header.php'; include 'menu.php'; ?> <div class="main"> <div class="body container"> <?php include 'page-title.php'; ?> <div class="colgroup typecho-page-main" role="main"> <div class="col-mb-12"> <div id="typecho-welcome"> <form action="<?php echo Typecho_Router::url('do', array('action' => 'upgrade', 'widget' => 'Upgrade'), Typecho_Common::url('index.php', $options->siteUrl)); ?> " method="post"> <h3><?php _e('检测到新版本!'); ?> </h3> <ul> <li><?php _e('您已经更新了系统程序, 我们还需要执行一些后续步骤来完成升级'); ?> </li> <li><?php _e('此程序将把您的系统从 <strong>%s</strong> 升级到 <strong>%s</strong>', $options->version, Typecho_Common::VERSION); ?> </li>
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { //生成静态链接 $routeExists = NULL != Typecho_Router::get('author'); $value['permalink'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->index) : '#'; /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedAtomUrl) : '#'; $value = $this->pluginHandle(__CLASS__)->filter($value, $this); return $value; }
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { //生成静态链接 $type = $value['type']; $routeExists = NULL != Typecho_Router::get($type); $tmpSlug = $value['slug']; $value['slug'] = urlencode($value['slug']); $value['permalink'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->index) : '#'; /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedAtomUrl) : '#'; $value['slug'] = $tmpSlug; $value = $this->pluginHandle(__CLASS__)->filter($value, $this); return $value; }
/** * 前一页 * * @access public * @param string $word 链接标题 * @param string $page 页面链接 * @return void */ public function pageLink($word = '« Previous Entries', $page = 'prev') { if ($this->have()) { if (empty($this->_pageNav)) { $query = Typecho_Router::url($this->parameter->type . (false === strpos($this->parameter->type, '_page') ? '_page' : NULL), $this->_pageRow, $this->options->index); /** 使用盒状分页 */ $this->_pageNav = new Typecho_Widget_Helper_PageNavigator_Classic($this->getTotal(), $this->_currentPage, $this->parameter->pageSize, $query); } $this->_pageNav->{$page}($word); } }
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { /** 取出所有分类 */ $value['categories'] = $this->db->fetchAll($this->db->select()->from('table.metas')->join('table.relationships', 'table.relationships.mid = table.metas.mid')->where('table.relationships.cid = ?', $value['cid'])->where('table.metas.type = ?', 'category')->order('table.metas.order', Typecho_Db::SORT_ASC), array($this->widget('Widget_Abstract_Metas'), 'filter')); /** 取出第一个分类作为slug条件 */ $value['category'] = current(Typecho_Common::arrayFlatten($value['categories'], 'slug')); $value['date'] = new Typecho_Date($value['created']); /** 生成日期 */ $value['year'] = $value['date']->year; $value['month'] = $value['date']->month; $value['day'] = $value['date']->day; /** 生成访问权限 */ $value['hidden'] = false; /** 获取路由类型并判断此类型在路由表中是否存在 */ $type = $value['type']; $routeExists = NULL != Typecho_Router::get($type); $tmpSlug = $value['slug']; $tmpCategory = $value['category']; $value['slug'] = urlencode($value['slug']); $value['category'] = urlencode($value['category']); /** 生成静态路径 */ $value['pathinfo'] = $routeExists ? Typecho_Router::url($type, $value) : '#'; /** 生成静态链接 */ $value['permalink'] = Typecho_Common::url($value['pathinfo'], $this->options->index); /** 处理附件 */ if ('attachment' == $type) { $content = @unserialize($value['text']); //增加数据信息 $value['attachment'] = new Typecho_Config($content); $value['attachment']->isImage = in_array($content['type'], array('jpg', 'jpeg', 'gif', 'png', 'tiff', 'bmp')); $value['attachment']->url = Widget_Upload::attachmentHandle($value); if ($value['attachment']->isImage) { $value['text'] = '<img src="' . $value['attachment']->url . '" alt="' . $value['title'] . '" />'; } else { $value['text'] = '<a href="' . $value['attachment']->url . '" title="' . $value['title'] . '">' . $value['title'] . '</a>'; } } /** 处理Markdown **/ $value['isMarkdown'] = 0 === strpos($value['text'], '<!--markdown-->'); if ($value['isMarkdown']) { $value['text'] = substr($value['text'], 15); } /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url($type, $value, $this->options->feedAtomUrl) : '#'; $value['slug'] = $tmpSlug; $value['category'] = $tmpCategory; /** 处理密码保护流程 */ if (!empty($value['password']) && $value['password'] != $this->request->protectPassword && $value['authorId'] != $this->user->uid && !$this->user->pass('editor', true)) { $value['hidden'] = true; /** 抛出错误 */ if ($this->request->isPost() && isset($this->request->protectPassword)) { throw new Typecho_Widget_Exception(_t('对不起,您输入的密码错误'), 403); } } $value = $this->pluginHandle(__CLASS__)->filter($value, $this); /** 如果访问权限被禁止 */ if ($value['hidden']) { $value['text'] = '<form class="protected" action="' . $value['permalink'] . '" method="post">' . '<p class="word">' . _t('请输入密码访问') . '</p>' . '<p><input type="password" class="text" name="protectPassword" /> <input type="submit" class="submit" value="' . _t('提交') . '" /></p>' . '</form>'; $value['title'] = _t('此内容被密码保护'); $value['tags'] = array(); $value['commentsNum'] = 0; } return $value; }
/** * 通用过滤器 * * @access public * @param array $value 需要过滤的行数据 * @return array */ public function filter(array $value) { //生成静态链接 $routeExists = NULL != Typecho_Router::get('author'); $value['permalink'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->index) : '#'; /** 生成聚合链接 */ /** RSS 2.0 */ $value['feedUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedUrl) : '#'; /** RSS 1.0 */ $value['feedRssUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedRssUrl) : '#'; /** ATOM 1.0 */ $value['feedAtomUrl'] = $routeExists ? Typecho_Router::url('author', $value, $this->options->feedAtomUrl) : '#'; // modified_by_jiangmuzi 2015.09.22 if (!empty($value['extend'])) { $value['extend'] = unserialize($value['extend']); } $value['ucenter'] = $this->options->someUrl('ucenter', array('u' => $value['name']), false); // end modified $value = $this->pluginHandle(__CLASS__)->filter($value, $this); return $value; }