Download for PHP  R515 (beta)
Welcome » Extensions » Extension list » LinkStat

Input document


Upload document:


Extension list »

See also LinkProxy.

Collects statistics about links used in rendered documents.

Each call to LinkStat adds one rule; rules are applied in order they were defined to each /Link in the document. Multiple rules can apply to a link if they match.
without arguments will enable this action for current doc with default set of rules (set in the settings). {{LinkStat clear}} will clear current rules.


For example, to add «File X was downloaded N times» to each RAR or ZIP link use this rule:

{{LinkStat ([^\\/]+\.(rar|zip))$, match=1,
           read=downloads -1, tooltip=download,

Or you can count the number of all external links in your document(s) when they’re rendered, anonymize them and add a tooltip:

{{LinkStat ^http://, proxy=http://anonymize/,
           read=external -1, inc=external -1
           tooltip=This is external link number $.}}


Full form:

{{LinkStat pattern, exclude=pattern,
           match=indexlist, read=indexlist,
           tooltip=str, proxy=str,
           inc=indexlist, storage=str, breaks}}
A regular expression snippet; brackets will be auto-added unless it starts with "/" (in this case you can supply custom modifiers, e.g.: /regexp/i).
A regular expression that is matched after matching pattern; same rules for regexp brackets apply as per pattern.
Index-list of match indexes to pass to tooltip; defaults to «false». Constants (non-numbers) are passed to the tooltip as is. Indexes outside of matches are 0.
Set of index-list (see below) to pass to tooltip as format args; defaults to «false».
If a language string with this name (in strings.conf) exists, it’s used; otherwise a string named "{{linkstat:" + space + this value is searched; ultimately the value itself is used if nothing else found. Gets passed matches and reads (see above). If this starts with «+» tooltip is appended, otherwise – set to. Format strings are:
  1. @ – fetches next value off the match parameter (exception if none left).
  2. $ – same as @ but for read parameter.
  3. the value of tooltip can be a callback function if it starts with «LinkStatCallback» (and it can have nothing else following). Its format: PHPfunction ($matches$reads).
Changes link to this pattern – useful which tracking number of downloads. The value of «0» disables URL modification; other turns it on. Format strings are:
  1. {URL} – URL-encoded original link; it’s automaticaly appended if proxy URL contained none of the format strings;
  2. {RAW} – raw address;
  3. {Index} (e.g. {-1}) – is replaced by the value of given match pocket.
Set of index-list; specifies if and where to store number of occurrences of this rule (each time summed up with previous value – on each document render). If passed as flag (just «inc») defaults to -1; if omitted – to false.
This switches storage interface by its name in LinkStatStorages setting. If it’s invalid tooltip and inc parameters will be ignored. Defaults to default.
If this rule has matched all following rules will be skipped for the current link.


An «index-list» is either false (or no) or a string. If it’s a string, it’s a space-separated sequence of numbers and strings. Numbers refer to match pocket (0 refers to the full match and a special value of -1 (which is the default) refers to the entire URL), string is a constant (if it starts with «_» AND has at least one «_» later the first «_» is removed and all others are replaced with spaces; if it starts with "__" the first «_» is removed but all others are left intact).

«Sets of index-list» are just arrays of index-lists separated by «|». Example: «read=-1 | downloads 2». For read individual «false» index-lists result in string 0, for inc they’re ignored.