MediaWiki REL1_30
|
A parser extension that adds two tags, <ref> and <references> for adding citations to pages. More...
Public Member Functions | |
checkAnyCalls (&$output) | |
Hook for the InlineEditor extension. | |
checkRefsNoReferences ( $afterParse, &$parser, &$text) | |
Called at the end of page processing to append a default references section, if refs were used without a main references tag. | |
clearState (Parser &$parser) | |
Gets run when Parser::clearState() gets run, since we don't want the counts to transcend pages and other instances. | |
cloneState (Parser $parser) | |
Gets run when the parser is cloned. | |
ref ( $str, array $argv, Parser $parser, PPFrame $frame) | |
Callback function for <ref> | |
references ( $str, array $argv, Parser $parser, PPFrame $frame) | |
Callback function for <references> | |
Static Public Member Functions | |
static | getReferencesKey ( $key) |
Return an id for use in wikitext output based on a key and optionally the number of it, used in <ref>, not <references> (since otherwise it would link to itself) | |
static | getStoredReferences (Title $title) |
Fetch references stored for the given title in page_props For performance, results are cached. | |
static | setHooks (Parser $parser) |
Initialize the parser hooks. | |
Public Attributes | |
boolean | $mInCite = false |
True when a <ref> tag is being processed. | |
boolean | $mInReferences = false |
True when a <references> tag is being processed. | |
const | CACHE_DURATION_ONFETCH = 18000 |
Cache duration set when fetching references from db. | |
const | CACHE_DURATION_ONPARSE = 3600 |
Cache duration set when parsing a page with references. | |
const | DATA_VERSION_NUMBER = 1 |
Version number in case we change the data structure in the future. | |
const | DEFAULT_GROUP = '' |
const | EXT_DATA_KEY = 'Cite:References' |
Key used for storage in parser output's ExtensionData and ObjectCache. | |
const | MAX_STORAGE_LENGTH = 65535 |
Maximum storage capacity for pp_value field of page_props table. | |
Private Member Functions | |
error ( $key, $param=null, $parse='parse') | |
Return an error message based on an error ID. | |
genBacklinkLabels () | |
Generate the labels to pass to the 'cite_references_link_many_format' message, the format is an arbitrary number of tokens separated by [\t\n ]. | |
genLinkLabels ( $group, $message) | |
Generate the labels to pass to the 'cite_reference_link' message instead of numbers, the format is an arbitrary number of tokens separated by [\t\n ]. | |
getLinkLabel ( $offset, $group, $label) | |
Generate a custom format link for a group given an offset, e.g. | |
guardedRef ( $str, array $argv, Parser $parser, $default_group=self::DEFAULT_GROUP) | |
guardedReferences ( $str, array $argv, Parser $parser, $group=self::DEFAULT_GROUP) | |
linkRef ( $group, $key, $count=null, $label=null, $subkey='') | |
Generate a link (<sup ...) for the <ref> element from a key and return XHTML ready for output. | |
refArg (array $argv) | |
Parse the arguments to the <ref> tag. | |
referencesFormat ( $group, $responsive) | |
Make output to be returned from the references() function. | |
referencesFormatEntry ( $key, $val) | |
Format a single entry for the referencesFormat() function. | |
referencesFormatEntryAlternateBacklinkLabel ( $offset) | |
Generate a custom format backlink given an offset, e.g. | |
referenceText ( $key, $text) | |
Returns formatted reference text. | |
rollbackRef ( $type, $key, $group, $index) | |
Partially undoes the effect of calls to stack() | |
saveReferencesData ( $group=self::DEFAULT_GROUP) | |
Saves references in parser extension data This is called by each <references> tag, and by checkRefsNoReferences Assumes $this->mRefs[$group] is set. | |
stack ( $str, $key=null, $group, $follow, array $call) | |
Populate $this->mRefs based on input and arguments to <ref> | |
warning ( $key, $param=null, $parse='parse') | |
Return a warning message based on a warning ID. | |
Static Private Member Functions | |
listToText ( $arr) | |
This does approximately the same thing as Language::listToText() but due to this being used for a slightly different purpose (people might not want , as the first separator and not 'and' as the second, and this has to use messages from the content language) I'm rolling my own. | |
static | recursiveFetchRefsFromDB (Title $title, DatabaseBase $dbr, $string='', $i=1) |
Reconstructs compressed json by successively retrieving the properties references-1, -2, etc It attempts the next step when a decoding error occurs. | |
referencesFormatEntryNumericBacklinkLabel ( $base, $offset, $max) | |
Generate a numeric backlink given a base number and an offset, e.g. | |
refKey ( $key, $num=null) | |
Return an id for use in wikitext output based on a key and optionally the number of it, used in <references>, not <ref> (since otherwise it would link to itself) | |
Private Attributes | |
string[] | $mBacklinkLabels |
The backlinks, in order, to pass as $3 to 'cite_references_link_many_format', defined in 'cite_references_link_many_format_backlink_labels. | |
bool | $mBumpRefData = false |
int | $mCallCnt = 0 |
Counter to track the total number of (useful) calls to either the ref or references tag hook. | |
int[] | $mGroupCnt = [] |
boolean | $mHaveAfterParse = false |
True when the ParserAfterParse hook has been called. | |
array | $mLinkLabels = [] |
The links to use per group, in order. | |
int | $mOutCnt = 0 |
Count for user displayed output (ref[1], ref[2], ...) | |
Parser | $mParser |
array | $mRefCallStack = [] |
<ref> call stack Used to cleanup out of sequence ref calls created by #tag See description of function rollbackRef. | |
string[] | $mReferencesErrors = [] |
Error stack used when defining refs in <references> | |
string | $mReferencesGroup = '' |
Group used when in <references> block. | |
array[] | $mRefs = [] |
Datastructure representing <ref> input, in the format of: [ 'user supplied' => [ 'text' => 'user supplied reference & key', 'count' => 1, // occurs twice 'number' => 1, // The first reference, we want // all occourances of it to // use the same number ], 0 => 'Anonymous reference', 1 => 'Another anonymous reference', 'some key' => [ 'text' => 'this one occurs once' 'count' => 0, 'number' => 4 ], 3 => 'more stuff' ]; | |
Static Private Attributes | |
static Boolean | $hooksInstalled = false |
Did we install us into $wgHooks yet? | |
A parser extension that adds two tags, <ref> and <references> for adding citations to pages.
Documentation definition in HTML http://www.w3.org/TR/html4/struct/text.html#edef-CITE definition in XHTML 2.0 http://www.w3.org/TR/2005/WD-xhtml2-20050527/mod-text.html#edef_text_cite bug 1. Ævar Arnfjörð Bjarmason avara.nosp@m.b@gm.nosp@m.ail.c.nosp@m.om Copyright © 2005, Ævar Arnfjörð Bjarmason http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later WARNING: MediaWiki core hardcodes this class name to check if the Cite extension is installed. See T89151.
Cite::checkAnyCalls | ( | & | $output | ) |
Cite::checkRefsNoReferences | ( | $afterParse, | |
& | $parser, | ||
& | $text ) |
Called at the end of page processing to append a default references section, if refs were used without a main references tag.
If there are references in a custom group, and there is no references tag for it, show an error message for that group. If we are processing a section preview, this adds the missing references tags and does not add the errors.
bool | $afterParse | True if called from the ParserAfterParse hook |
Parser | $parser | |
string | $text |
Definition at line 1154 of file Cite.php.
References $parser, $s, error, referencesFormat(), saveReferencesData(), and wfMessage().
Cite::clearState | ( | Parser & | $parser | ) |
Cite::cloneState | ( | Parser | $parser | ) |
|
private |
Return an error message based on an error ID.
string | $key | Message name for the error |
string | null | $param | Parameter to pass to the message |
string | $parse | Whether to parse the message ('parse') or not ('noparse') |
Definition at line 1290 of file Cite.php.
References $dir, $lang, $ret, plain, and wfMessage().
|
private |
Generate the labels to pass to the 'cite_references_link_many_format' message, the format is an arbitrary number of tokens separated by [\t\n ].
Definition at line 1064 of file Cite.php.
References wfMessage().
Referenced by referencesFormatEntryAlternateBacklinkLabel().
|
private |
Generate the labels to pass to the 'cite_reference_link' message instead of numbers, the format is an arbitrary number of tokens separated by [\t\n ].
string | $group | |
string | $message |
Definition at line 1078 of file Cite.php.
References wfMessage().
Referenced by getLinkLabel().
|
private |
Generate a custom format link for a group given an offset, e.g.
the second <ref group="foo"> is b if $this->mLinkLabels["foo"] = [ 'a', 'b', 'c', ...]. Return an error if the offset > the # of array items
int | $offset | The offset |
string | $group | The group name |
string | $label | The text to use if there's no message for them. |
Definition at line 944 of file Cite.php.
References error, and genLinkLabels().
Referenced by linkRef().
|
static |
Return an id for use in wikitext output based on a key and optionally the number of it, used in <ref>, not <references> (since otherwise it would link to itself)
string | $key | The key |
Definition at line 994 of file Cite.php.
References wfMessage().
Referenced by ApiQueryReferences\execute().
|
static |
Fetch references stored for the given title in page_props For performance, results are cached.
Title | $title |
Definition at line 1375 of file Cite.php.
References $cache, $dbr, DB_REPLICA, recursiveFetchRefsFromDB(), and wfGetDB().
Referenced by ApiQueryReferences\execute().
|
private |
string | null | $str | Raw content of the <ref> tag. |
string[] | $argv | Arguments |
Parser | $parser | |
string | $default_group |
Exception |
Definition at line 240 of file Cite.php.
References $argv, $mReferencesGroup, $parser, error, list, refArg(), serialize(), and stack().
Referenced by guardedReferences(), and ref().
|
private |
string | null | $str | Raw content of the <references> tag. |
string[] | $argv | |
Parser | $parser | |
string | $group |
Definition at line 642 of file Cite.php.
References $argv, $parser, $s, $type, error, guardedRef(), list, referencesFormat(), and rollbackRef().
Referenced by references().
|
private |
Generate a link (<sup ...) for the <ref> element from a key and return XHTML ready for output.
string | $group | |
string | $key | The key for the link |
int | $count | The index of the key, used for distinguishing multiple occurrences of the same key |
int | $label | The label to use for the link, I want to use the same label for all occourances of the same named reference. |
string | $subkey |
Definition at line 1016 of file Cite.php.
References $wgContLang, getLinkLabel(), refKey(), and wfMessage().
Referenced by stack().
|
staticprivate |
This does approximately the same thing as Language::listToText() but due to this being used for a slightly different purpose (people might not want , as the first separator and not 'and' as the second, and this has to use messages from the content language) I'm rolling my own.
array | $arr | The array to format |
Definition at line 1044 of file Cite.php.
References $t, and wfMessage().
Referenced by referencesFormatEntry().
|
staticprivate |
Reconstructs compressed json by successively retrieving the properties references-1, -2, etc It attempts the next step when a decoding error occurs.
Returns json_decoded uncompressed string, with validation of json
Title | $title | |
DatabaseBase | $dbr | |
string | $string | |
int | $i |
Definition at line 1408 of file Cite.php.
References $dbr, $result, recursiveFetchRefsFromDB(), and wfDebug().
Referenced by getStoredReferences(), and recursiveFetchRefsFromDB().
Callback function for <ref>
string | null | $str | Raw content of the <ref> tag. |
string[] | $argv | Arguments |
Parser | $parser | |
PPFrame | $frame |
Definition at line 204 of file Cite.php.
References $argv, $parser, $ret, guardedRef(), and PPFrame\setVolatile().
|
private |
Parse the arguments to the <ref> tag.
"name" : Key of the reference. "group" : Group to which it belongs. Needs to be passed to <references > too. "follow" : If the current reference is the continuation of another, key of that reference.
string[] | $argv | The argument vector |
Definition at line 390 of file Cite.php.
Referenced by guardedRef().
Callback function for <references>
string | null | $str | Raw content of the <references> tag. |
string[] | $argv | Arguments |
Parser | $parser | |
PPFrame | $frame |
Definition at line 617 of file Cite.php.
References $argv, $parser, $ret, guardedReferences(), and PPFrame\setVolatile().
|
private |
Make output to be returned from the references() function.
string | $group | |
bool | $responsive |
Definition at line 733 of file Cite.php.
References $ret, $wgMemc, referencesFormatEntry(), saveReferencesData(), and wfMemcKey().
Referenced by checkRefsNoReferences(), and guardedReferences().
|
private |
Format a single entry for the referencesFormat() function.
string | $key | The key of the reference |
mixed | $val | The value of the reference, string for anonymous references, array for user-suppplied |
Definition at line 804 of file Cite.php.
References listToText(), referencesFormatEntryAlternateBacklinkLabel(), referencesFormatEntryNumericBacklinkLabel(), referenceText(), refKey(), and wfMessage().
Referenced by referencesFormat().
|
private |
Generate a custom format backlink given an offset, e.g.
$offset = 2; = c if $this->mBacklinkLabels = [ 'a', 'b', 'c', ...]. Return an error if the offset > the # of array items
int | $offset | The offset |
Definition at line 920 of file Cite.php.
References error, and genBacklinkLabels().
Referenced by referencesFormatEntry().
|
staticprivate |
Generate a numeric backlink given a base number and an offset, e.g.
$base = 1, $offset = 2; = 1.2 Since bug #5525, it correctly does 1.9 -> 1.10 as well as 1.099 -> 1.100
int | $base | The base |
int | $offset | The offset |
int | $max | Maximum value expected. |
Definition at line 901 of file Cite.php.
References $base, $ret, and $wgContLang.
Referenced by referencesFormatEntry().
|
private |
Returns formatted reference text.
String | $key | |
String | $text |
Definition at line 879 of file Cite.php.
References error, and warning().
Referenced by referencesFormatEntry().
|
staticprivate |
Return an id for use in wikitext output based on a key and optionally the number of it, used in <references>, not <ref> (since otherwise it would link to itself)
string | $key | The key |
int | $num | The number of the key |
Definition at line 973 of file Cite.php.
References wfMessage().
Referenced by linkRef(), and referencesFormatEntry().
|
private |
Partially undoes the effect of calls to stack()
Called by guardedReferences()
The option to define <ref> within <references> makes the behavior of <ref> context dependent. This is normally fine but certain operations (especially #tag) lead to out-of-order parser evaluation with the <ref> tags being processed before their containing <reference> element is read. This leads to stack corruption that this function works to fix.
This function is not a total rollback since some internal counters remain incremented. Doing so prevents accidentally corrupting certain links.
string | $type | |
string | null | $key | |
string | $group | |
int | $index |
Definition at line 562 of file Cite.php.
References $type.
Referenced by guardedReferences().
|
private |
Saves references in parser extension data This is called by each <references> tag, and by checkRefsNoReferences Assumes $this->mRefs[$group] is set.
$group |
Definition at line 1214 of file Cite.php.
References DATA_VERSION_NUMBER.
Referenced by checkRefsNoReferences(), and referencesFormat().
|
static |
|
private |
Populate $this->mRefs based on input and arguments to <ref>
string | $str | Input from the <ref> tag |
string | null | $key | Argument to the <ref> tag as returned by $this->refArg() |
string | $group | |
string | null | $follow | |
string[] | $call |
Exception |
Definition at line 447 of file Cite.php.
References $mOutCnt, error, linkRef(), and serialize().
Referenced by guardedRef().
|
private |
Return a warning message based on a warning ID.
string | $key | Message name for the warning. Name should start with cite_warning_ |
string | null | $param | Parameter to pass to the message |
string | $parse | Whether to parse the message ('parse') or not ('noparse') |
Definition at line 1333 of file Cite.php.
References $dir, $lang, $ret, plain, and wfMessage().
Referenced by referenceText().
|
staticprivate |
|
private |
|
private |
|
private |
boolean Cite::$mInCite = false |
boolean Cite::$mInReferences = false |
|
private |
|
private |
|
private |
|
private |
|
private |
Group used when in <references> block.
Definition at line 172 of file Cite.php.
Referenced by guardedRef().
|
private |
Datastructure representing <ref> input, in the format of: [ 'user supplied' => [ 'text' => 'user supplied reference & key', 'count' => 1, // occurs twice 'number' => 1, // The first reference, we want // all occourances of it to // use the same number ], 0 => 'Anonymous reference', 1 => 'Another anonymous reference', 'some key' => [ 'text' => 'this one occurs once' 'count' => 0, 'number' => 4 ], 3 => 'more stuff' ];
This works because:
const Cite::CACHE_DURATION_ONFETCH = 18000 |
const Cite::CACHE_DURATION_ONPARSE = 3600 |
Cache duration set when parsing a page with references.
Definition at line 55 of file Cite.php.
Referenced by CiteHooks\onLinksUpdate().
const Cite::DATA_VERSION_NUMBER = 1 |
Version number in case we change the data structure in the future.
Definition at line 50 of file Cite.php.
Referenced by saveReferencesData().
const Cite::EXT_DATA_KEY = 'Cite:References' |
Key used for storage in parser output's ExtensionData and ObjectCache.
Definition at line 45 of file Cite.php.
Referenced by CiteHooks\onLinksUpdate(), and CiteHooks\onLinksUpdateComplete().
const Cite::MAX_STORAGE_LENGTH = 65535 |
Maximum storage capacity for pp_value field of page_props table.
Definition at line 40 of file Cite.php.
Referenced by CiteHooks\onLinksUpdate().