Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/protectionexpiry

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

PROTECTIONEXPIRY是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

PROTECTIONEXPIRY

查询页面的保护到期时间。MediaWiki原生支持。

指定其他页面时,此函数是【高开销】的。

当页面指定保护时间时返回时间,否则未保护的页面和永久保护的页面均返回 infinity。不存在的页面和无效的操作参数返回空字符串。

语法

  • {{PROTECTIONEXPIRY: 操作 }}
    • 操作:要查询的页面操作,如edit、move
  • {{PROTECTIONEXPIRY: 操作 | 页面名 }}
  • 【高开销】操作:页面操作,如edit、edit

示例

  • {{PROTECTIONEXPIRY: edit }}infinity (本页面没有保护)
  • {{PROTECTIONEXPIRY: move }}infinity (本页面没有保护)
  • {{PROTECTIONEXPIRY: edit | 不存在的页面233333 }}
  • {{PROTECTIONEXPIRY: move | 不存在的页面233333 }}
  • {{PROTECTIONEXPIRY: edit | 保护页面示例 }}infinity (本页面无限期保护)
  • {{PROTECTIONEXPIRY: move | 保护页面示例 }}infinity (本页面无限期保护)
  • {{PROTECTIONEXPIRY: edit | 保护页面示例/有期限的 }}20990908160000
  • {{PROTECTIONEXPIRY: move | 保护页面示例/有期限的 }}20990908160000
  • {{PROTECTIONEXPIRY: abcdefg | 保护页面示例 }}

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其“特性”。

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * Returns the requested protection expiry for the current page. This
 * is an expensive parser function and can't be called too many times
 * per page, unless the protection levels/expiries for the given title
 * have already been retrieved
 *
 * @param Parser $parser
 * @param string $type
 * @param string $title
 *
 * @return string
 */
public static function protectionexpiry( $parser, $type = '', $title = '' ) {
	$titleObject = Title::newFromText( $title ) ?? $parser->getTitle();
	if ( $titleObject->areRestrictionsLoaded() || $parser->incrementExpensiveFunctionCount() ) {
		$expiry = $titleObject->getRestrictionExpiry( strtolower( $type ) );
		// getRestrictionExpiry() returns false on invalid type; trying to
		// match protectionlevel() function that returns empty string instead
		if ( $expiry === false ) {
			$expiry = '';
		}
		return $expiry;
	}
	return '';
}
代码逻辑:
  • 根据指定标题查询保护日期
  • 针对异常情况(指定的页面或操作不存在)返回空字符串

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考