Commit Graph

97 Commits

Author SHA1 Message Date
Daniel Kraus
d7571c4922 Use preg_replace_callback throughout; lazy checks.
The checks for whether a page is a potential link target or not (depending
on the absence of the __NOAUTOLINKTARGET__ magic word and if it is not a
redirect to the current page) have now been moved into the callback
functions, so that they are only performed if a page really is a candidate
for linking (i.e, its title occurs on the currently edited page).

The change resulted in a ~10-fold increase in speed.
2014-06-10 16:22:28 +02:00
Daniel Kraus
4ca1225fd0 Fix saving of modified content.
A bug caused text to be saved only if links were added by smart mode
algorithm, not by normal algorithm.
2014-06-10 13:56:40 +02:00
Daniel Kraus
34720765da Implement config for check-redirect and magic word.
Added two new configuration variables, $wgLinkTitlesCheckRedirect and
$wgLinkTitlesEnableNoTargetMagicWord, that can be used to increase
performance. If both are overridden to be false, the target page content
will not be fetched from the database to check for redirect or the
occurrence of a magic word, which saves a lot of time.
2014-06-10 13:41:35 +02:00
Daniel Kraus
5842430021 Check if content was modified before committing. 2014-06-10 11:55:55 +02:00
Daniel Kraus
e5008b9997 Use ArticleAfterFetchContentObject hook.
No longer use deprecated ArticleAfterFetchContent hook. The new hook
requires MediaWiki 1.21 or later.
2014-06-08 22:52:36 +02:00
Daniel Kraus
fc13f88717 Ignore soft-linked Maintenance.php. 2014-06-08 19:23:41 +02:00
Daniel Kraus
adbc1ea5cd Use PageContentSave rather than ArticleSave hook.
This commit also contains some refactoring which should lend itself to
increased performance.
2014-06-08 19:21:41 +02:00
Daniel Kraus
5745621366 Release version 2.4.1 2014-06-06 06:06:12 +02:00
Daniel Kraus
8e1548aa48 Fix broken release package.
The license file, which is not version-controlled, got lost during branch
switching and was not included in the 2.4.0 ZIP file.

Improved the release script so that it aborts if tar has errors.
2014-06-06 06:05:55 +02:00
Daniel Kraus
143a347372 Release version 2.4.0 2014-06-06 05:54:57 +02:00
Daniel Kraus
d97213fd28 Version 2.4.0 information. 2014-06-05 22:45:08 +02:00
Daniel Kraus
1542901551 Complete documentation of source code. 2014-06-05 22:41:09 +02:00
Daniel Kraus
1720b6b27b Documentation: Link to MW docs (rel. 1.23). 2014-06-05 13:13:18 +02:00
Daniel Kraus
e1cd8926b7 Add gh-pages branch as a submodule.
This serves to hold output from Doxygen, which will be displayed on the
GitHub project page.
2014-06-04 17:22:04 +02:00
Daniel Kraus
e9d5218267 Detect location of Maintenance.php in CLI script. 2014-06-04 13:57:23 +02:00
Daniel Kraus
6098342be3 Add start index option to CLI script. 2014-06-03 22:50:14 +02:00
Daniel Kraus
2e1d826ee2 First implementation of CLI maintenance script. 2014-06-03 21:44:54 +02:00
Daniel Kraus
56dc484949 Remove entry point warning from body file. 2014-06-03 21:44:47 +02:00
Daniel Kraus
3ea8d9509f Change bot message for batch processing, add user. 2014-06-03 19:16:23 +02:00
Daniel Kraus
b32d48bdc9 Move the page processing function to LinkTitles class.
A public static function was created to DRY things up.
2014-06-03 18:52:04 +02:00
Daniel Kraus
ffb8daa1ad Remove superfluous variable; comment code. 2014-06-03 18:28:25 +02:00
Daniel Kraus
5bdb6cc773 Add license info to SpecialLinkTitles.php. 2014-06-03 18:16:20 +02:00
Daniel Kraus
3e850f2781 Implement access restriction for special page. 2014-06-03 16:50:57 +02:00
Daniel Kraus
6f25d469ed Show statistics when finished. 2014-06-03 16:40:37 +02:00
Daniel Kraus
0c9bbe0d0c First working version of batch processing.
Added SpecialLinkTitles special page. This page is not secured yet, anybody
may call it an start automatic parsing of every page in the wiki!
2014-06-03 14:29:53 +02:00
Daniel Kraus
256f905c69 Prevent linking inside attributes etc.
Includes prevention of linking in class and style attributes of WikiTables.
2014-06-02 19:58:01 +02:00
Daniel Kraus
cf792072dd Prevent creating indirect links to self.
Added code to check if a target page redirects to the current page, and
prevents linking to that target page. Note that this does not catch
situations where a page title exists twice, once with first capital letter
and once with first lowercase letter (should happen on test systems only).
2014-06-02 18:55:02 +02:00
Daniel Kraus
821d6d6b34 Prevent parsing in pre, html, and script tags. 2014-06-02 18:26:39 +02:00
Daniel Kraus
3d37b2d8ba Refactor smart mode code for increased performance.
The preg_replace_callback callback functions were removed as static
functions and declared inline; the callback function for $wgCapitalLinks ==
false was simplified to speed up the process.
2014-06-02 18:22:53 +02:00
Daniel Kraus
7cb5b713ab Add __NOAUTOLINKTARGET__ magic word; refactor.
The magic word __NOAUTOLINKTARGET__ will prevent a page from being
automatically linked to.

Some minor refactoring was performed.
2014-06-02 16:25:03 +02:00
Daniel Kraus
2930916ce6 Adjust copyright year. 2014-06-01 18:10:31 +02:00
Daniel Kraus
d9934d1b0d Release version 2.3.1 2013-08-29 19:56:11 +02:00
Daniel Kraus
33a2169301 Fix regular expression.
The regular expression used to split the page content had a few pipe
characters in the wrong places, due to the previous 'cleaning-up' of the
convoluted expression for version 2.3.0.
2013-08-29 19:54:57 +02:00
Daniel Kraus
13db185d18 Create ZIP file for version 2.3.0. 2013-08-28 20:32:24 +02:00
Daniel Kraus
ed13ec9d96 Improve release script. 2013-08-28 20:27:50 +02:00
Daniel Kraus
a6d7184fc6 Add version 2.3.0 information. 2013-08-28 19:44:58 +02:00
Daniel Kraus
8257471d89 Prevent linking inside preformatted text and code.
Ignore lines that start with a space as well as text enclosed in <nowiki> or
<code> tags.
2013-08-28 19:40:04 +02:00
Daniel Kraus
ad700ca7f4 Do not mess up page content with leading slashes.
If a page title started with a slash, the algorithm to deal with leading
capitals would produce a faulty regexp by accessing $escapedTitle[0] and
substr($escapedTitle, 1), which would only capture the slash that escapes
the slash.

Also fix small bug in template detection (make expression non-greedy).
2013-08-27 20:55:06 +02:00
Daniel Kraus
9d414d0e5e Prevent crashes due to regexp compilation errors
Page titles are now properly escaped using preg_quote() to prevent regexp
compilation errors if the title contains characters with special meanings in
regular expressions.
2013-08-09 17:36:32 +02:00
Daniel Kraus
3bf0ddfe17 Make the SQL query work with sqlite databases.
The fallback query does not use the CHAR_LENGTH function, but uses LENGTH.
2013-07-22 22:00:40 +02:00
Daniel Kraus
dde8300875 Git-ignore .bak files. 2013-07-10 22:32:24 +02:00
Daniel Kraus
53ad020f1d Fix case-sensitive linking when $wgCapitalLinks is false. 2013-04-16 21:48:30 +02:00
Daniel Kraus
0f15be2fa8 Add version 2.1.1 information. 2013-03-06 19:04:41 +01:00
Daniel Kraus
aaa89cb536 Fix invalid callback error due to non-static declaration of LinkTitles::removeMagicWord. 2013-03-06 19:02:50 +01:00
Daniel Kraus
7da35ff4ec Fix incompatibility with PHP prior to 5.3. 2013-03-06 18:59:45 +01:00
Daniel Kraus
ae1f72aefd Do not remove magic word when saving page. 2013-02-23 14:09:33 +01:00
Daniel Kraus
6d38db71af Use MagicWord class to handle the magic word; update copyright year. 2013-02-23 12:38:39 +01:00
Daniel Kraus
a6544b37d9 Add preliminary support for __NOAUTOLINKS__ magic word. 2013-02-20 21:47:23 +01:00
Daniel Kraus
05d77684c2 Introduce smart mode ($wgLinkTitlesSmartmode).
Smart mode generates aliases for page titles if a case mismatch is
detected.
2013-01-29 21:17:21 +01:00
Daniel Kraus
a448b8632b Generate aliases for case-mismatched page titles.
If a page title does has a different case than an occurrence of the same
word(s) on the page that is being edited, the extension will now
automatically generate 'piped' links such as [[Linking titles|Linking
Titles]].
2013-01-26 18:44:45 +01:00