1

I want to enable a „low auto-confirmed“ level (leaving common auto-confirmed users intact).

Those users (and IPs) must comply with the following criteria.

  1. 3 or more edits (in different articles) from this user or IP is older than an hour.
  2. None of those edits are undone.
  3. Edits older than a week does not count in neither (1) nor (2).

Achieving this „low auto-confirmed“ level must allow to create one article per day (with captcha). So guest users will be allowed to create articles if they can prove basic competence (at least 3 edits with neither spam nor obvious stupidity).

Due to dynamic IP pool, all data older than a week is obsolete.

Active and competent guest users make way more than 3 edits in a week, but doing such thing is nearly impossible for both spam bots and spam monkeys. It takes much more time than removing their spam articles, so even the most tenacious ones (ones who really can do 3 grammar / other minor edits and wait for an hour) do not pose a threat. It takes much more work for them to spam than we need to remove that spam.

So I want this „low auto-confirmed user“ tier for both new users, and guest IPs(!). Is it possible?

0

Support? Yes, absolutely. In fact it was even proposed that Wikipedia's newer Pending Changes Reviewer become auto-grant right, rather than one that has to be applied for. (I objected on grounds of the Principle of Least Astonishment, since PC Reviewer not only adds new responsibilities, but it causes UI changes that shouldn't just "magically happen" to a user who never asked for them.)

Documentation on the default set of groups is at Manual:User Rights#List of groups, with a note below the table:

From MW 1.12, you can create your own groups into which users are automatically promoted (as with autoconfirmed and emailconfirmed) using $wgAutopromote. You can even create any custom group by just assigning rights to them.

That being said, based on the documentation for $wgAutopromote I'm not sure your criteria are implementable. Some are ("Minimum number of seconds since first edit" is a default criterion, for instance), but you may need to write an extension to implement some of the others. Fortunately, again, the $wgAutopromote documentation notes,

extensions may add more through the AutopromoteCondition hook

Including IP users is the only thing I'm worried may be asking too much of the rights system. I don't doubt it's possible given how extensible MediaWiki is, but the entire concept of "groups" is based on registered accounts, which an IP user is the opposite of. You might have to do some sort of trickery like generating accounts for guest IPs and silently logging them in automatically, to flexibly grant them additional rights.

Note also that since MediaWiki 1.29, group assignments can have an expiration time, which potentially takes care of your recency criteria for IP autopromotions (though I'm still not sure it can work without an account being at least implicitly created).

0

For logged-in users this is possible although not trivial. You can use the UserEffectiveGroups hook to determine group membership dynamically, or autopromotion (as mentioned in FeRD's answer) to permanently set group membership when certain conditions are met. Whether an edit is undone is not trivial to determine though (see the discussion on this task for some of the issues), plus you need to understand how user objects get cached and invalidate them when necessary.

For IPs, you cannot set permanent groups. UserEffectiveGroups still works in theory but a lot of code just assumes that anonymous users cannot have groups and never even checks for it so depending on what you intend to use the new group for, you might run into problems. (In the long run, IP-based "user accounts" will probably be replaced with session-based anonymous accounts which are more similar to a normal user account so maybe this problem will go away then.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.