Commit graph

84 commits

Author SHA1 Message Date
apaskulin
c44488f725 docs: Hook interface doc comment review
Edited doc comments for hook interfaces to improve
consistency and add type hints.

Bug: T246855
Change-Id: I38fa802463cd6f39bf5946dbbeb1b3ebaea604b2
2020-04-21 09:10:08 +10:00
Tim Starling
f5aaf75ad1 Automatically generated hook interfaces
Add hook interfaces which were generated by a script which parses
hooks.txt and identifies caller namespaces and directories.

Hook interfaces are mostly placed in a Hook/ subdirectory
relative to the caller location. When there are callers in multiple
directories, a "primary" caller was manually selected. The exceptions to
this are:

* The source root, maintenance and tests, which use includes/Hook. Test
  hooks need to be autoloadable in a non-test request so that
  implementing test interfaces in a generic handler will not fail.
* resources uses includes/resourceloader/Hook
* The following third-level subdirectories had their hooks placed in
  the parent ../Hook:
    * includes/filerepo/file
    * includes/search/searchwidgets
    * includes/specials/forms
    * includes/specials/helpers
    * includes/specials/pagers

Parameters marked as legacy references in hooks.txt are passed
by value in the interfaces.

Bug: T240307
Change-Id: I6efe2e7dd1f0c6a3d0f4d100a4c34e41f8428720
2020-04-20 13:31:05 +10:00
Peter Ovchyn
176531d8c7 Introduce Emailer as service
In order to test functionality dependant on sending emails
Emailer should be introduced as service

Bug: T247229
Change-Id: I4fcceb7860a9a4dda091fb4cffcd2f6950fffaf8
2020-03-17 21:41:34 +02:00
Umherirrender
268346e562 phan: Enable PhanTypeMismatchArgument issue
Bug: T231636
Depends-On: I5de4f8f32a47c3f41c990ffe2ebd091fc23d1a58
Change-Id: I34d65fe3ff1916f2af675f0b1f19641b0cdfadc0
2019-09-19 20:11:42 +02:00
jenkins-bot
8ac7621625 Merge "Fix param docs and passed type of UserMailer::sendWithPear" 2019-09-12 23:01:43 +00:00
Umherirrender
4b156d619f Fix param docs and passed type of UserMailer::sendWithPear
Mail::send accepts mixed for recipients and only array for headers
The documentation for recipients allows string with comma-separated list
or a string array
https://github.com/pear/Mail/blob/master/Mail/mail.php#L115-L119

Change-Id: Ia8269e91a7dcfe09d41bd03f8830b83f28812564
2019-09-12 20:00:43 +02:00
Petr Pchelko
7b4eafda0d Replace usages of deprecated User::isAllowed. Step 2.
Bug: T220191
Depends-On: I509cd88355cfd0cc074f4135ec86399b4075f89f
Change-Id: I2341e6f1d108c92924620fba3c64ec090cb09918
2019-09-11 16:00:03 -07:00
Derick Alangi
3cc65c87e3 mail: Avoid use of global state and use MediaWiki services DI
Change-Id: If335cb6a220ebc5eb7487e51ee097f9d2afa0d2d
2019-08-27 14:19:49 +01:00
Derick Alangi
02bbbdfa53 Mail: Add visibility for some methods without method visibility
Carefully, I checked usage of these methods in our code bases and
added the best possible visibilities to them. Not sure if I missed
something but let me know if I did.

Used private & public where suitable for the various methods. As for
__toString(), this is a magic method, so should be public per PHP docs.

Change-Id: Ie0987f4a984cac2f5eb1d9e21a305ad9467a8eb2
2019-06-30 15:32:20 +00:00
David Barratt
e86a060284
Deprecate User::isBlocked()
The method User::isBlocked() attempts to answer two questions:
(1) Does the user have a block?
(2) Is the user prevented from performing this action?
The method can answer #1, but it cannot answer #2. Since User::getBlock() can
also answer #1, this method is redundant. The method cannot answer #2 because
there is not enough context in order to answer that question.

If access is being checked against a Title object, all access checks can be
performed with PermissionManager:userCan() which will also check the user's
blocks.

If performing all access checks is not desirable, using
PermissionManager::isBlockedFrom() is also acceptable for only checking if the
user is blocked. This method does *not* determine if the action is allowed,
only that the user's block applies to that Title.

If access is being checked without an existing Title, User::getBlock() can be
used to get the user's block. Then Block::appliesToRight() can be used to
determine if the block applies explicitly to a right (or returns null if
it is unknown or false if explicitly allowed). If the user is creating a new
Title, but the text of the title is not yet known (as in the case of Wikibase),
access should be checked with Block::appliesToNamespace().

Bug: T209004
Change-Id: Ic0ad1b92e957797fee8dcd00bd1092fe69fa58f1
2019-04-25 11:47:44 -04:00
Reedy
c13fee87d4 Collapse some nested if statements
Change-Id: I9a97325d738d09370d29d35d5254bc0dadc57ff4
2019-04-04 19:02:22 +00:00
Derick Alangi
4ff82a335a i18n: Add line-break in email notificaton for minor edits
Added missing line-break in email notification specifically after
page summary or immediately before $PAGEMINOREDIT (for minor edits).
In addition, if the edit is not marked as a "minor edit", avoid the
line break.

Bug: T176595
Change-Id: I68cc249c3546eb7fed0834063f15304e3c245e55
2019-03-18 12:40:18 +00:00
James D. Forrester
4577b5f6dc Drop EmailNotification::updateWatchlistTimestamp(), deprecated in 1.27 and unused
Change-Id: Idad6f5aa579e41e941d1074465dd2f0e0f4577dc
2019-02-09 12:47:14 -08:00
Aaron Schulz
5196ac32c6 Rename WikiMap DB domain ID methods to reduce confusion with web domains
Those added in this same release do not need alias methods.

Change-Id: I05feeb9b0b13afe43aea1f95551965489cdbe094
2019-02-06 12:28:45 -08:00
Thiemo Kreuz
734a969d55 Safe replacement of a lot of !count() with === []
This was originally a global search and replace. I manually checked all
replacements and reverted them if (due to the lack of type hints) either
null (that would be 0 when counted) or a Countable object can end in the
variable or property in question.

Now this patch only touches places where I'm sure nothing can break.

For the sanity of the honorable reviewers this patch is exclusively touching
negated counts. You should not find a single `!== []` in this patch, that
would be a mistake.

Change-Id: I5eafd4d8fccdb53a668be8e6f25a566f9c3a0a95
2019-01-15 17:28:49 +01:00
Umherirrender
b1e060d267 Fix type for UserMailer::send $body param
It is documented to be an array, so add it to the type

Change-Id: I92c56fd92f2c09f75d9370aab711b7446c31beb5
2019-01-03 18:01:54 +01:00
Mark A. Hershberger
9d9e3117c7 EmailNotification should provide a getter for pageStatus
Extensions that have hooks for
UpdateUserMailerFormattedPageStatus (to provide additional
pageStatus indicators) need a way to make sure that, when their
hook is called in SendWatchlistemailNotification, they only
notifications handling their pageStatus indicator.  This allows them
to fetch the protected property.

Bug: T175104
Change-Id: I2beb5b3576f2cd739dab16b9adf613c96636edd3
2018-12-21 01:36:33 +00:00
Alangi Derick
b5ace113e7 mail: Correct return value of sendPersonalised() method
If email is not successfully sent, return Status (with appropriate
status error) and also, if successfully sent, return Status::newGood().

Change-Id: I602e30641b88614087d9aff83cf8c93e32af7b81
2018-12-03 16:23:25 +00:00
jenkins-bot
c6ad2554f4 Merge "Add isCurrentWikiId()/isCurrentWikiDomain()/getCurrentWikiDomain() to WikiMap" 2018-10-29 22:27:15 +00:00
Aaron Schulz
dcd0a3d534 Add isCurrentWikiId()/isCurrentWikiDomain()/getCurrentWikiDomain() to WikiMap
Use these in place of various wfWikiID() calls.

Also cleanup UserRightsProxy wiki ID variable names and removed unused
and poorly named getDBname() method.

Change-Id: Ib28889663989382d845511f8d34712b08317f60e
2018-10-29 14:53:37 -07:00
jenkins-bot
995afd709d Merge "Fix code style in EmailNotification.php" 2018-10-25 19:30:22 +00:00
Alangi Derick
eb251abc62 Fix code style in EmailNotification.php
Code style fix for namespace "use" statement.

Change-Id: I0755481f640aae535c8328824812e25db467e528
2018-10-25 18:57:22 +00:00
Reedy
da9c742af0 MailAddress->toString(): Reduce complexity by inverting ifs
Change-Id: I5185c0231a0944f36d960211e78cf36273c94d52
2018-10-25 10:30:11 -07:00
Reedy
c57aacb782 Don't pass a MailAddress pass the email to mail()
Bug: T207541
Change-Id: I1516023907e9773cb093010c6b67279f695abb1a
2018-10-20 15:23:04 +00:00
Alex Monk
02b2086d95 EmailNotification: Add newline before minor edit text
Otherwise you get something like this:
"Editor's summary: interwiki fix This is a minor edit"
It's not entirely clear that the editor's summary has ended and the minor edit
text has been added by the software.

Change-Id: Iab79b5f8a1f6f319e9fd284835b7a4e86c3f0394
2018-09-29 19:08:13 +02:00
Reedy
d506c187ec Stop MailAddress accepting a User object
Bug: T204863
Change-Id: I98f110e47ec7ba3b1cd22e8d76eea4bdf7d3d155
2018-09-21 01:58:03 +00:00
Aryeh Gregor
90d4f56fe4 Mass conversion of $wgContLang to service
Brought to you by vim macros.

Bug: T200246
Change-Id: I79e919f4553e3bd3eb714073fed7a43051b4fb2a
2018-08-11 22:44:29 -06:00
Umherirrender
130ec2523d Fix PhanTypeMismatchDeclaredParam
Auto fix MediaWiki.Commenting.FunctionComment.DefaultNullTypeParam sniff

Change-Id: I865323fd0295aabd06f3e3c75e0e5043fb31069e
2018-07-07 00:34:30 +00:00
Bartosz Dziewoński
485f66f174 Use PHP 7 '??' operator instead of '?:' with 'isset()' where convenient
Find: /isset\(\s*([^()]+?)\s*\)\s*\?\s*\1\s*:\s*/
Replace with: '\1 ?? '

(Everywhere except includes/PHPVersionCheck.php)
(Then, manually fix some line length and indentation issues)

Then manually reviewed the replacements for cases where confusing
operator precedence would result in incorrect results
(fixing those in I478db046a1cc162c6767003ce45c9b56270f3372).

Change-Id: I33b421c8cb11cdd4ce896488c9ff5313f03a38cf
2018-05-30 18:06:13 -07:00
Chad Horohoe
ee5a9b788a Only load PEAR Smtp mailer from vendor/composer, not from pear itself
Change-Id: I91c42a3eafd079039ddbc17a11ad3c7b6579e3c1
2018-05-23 11:32:38 +00:00
Kunal Mehta
5d30435e81 mail: Refactor checks looking for PEAR libraries to be clearer
I don't think this makes any difference towards the linked bug, but
it makes it more obvious that MediaWiki doesn't try to use any PEAR
classes before attempting to require them.

Bug: T186456
Change-Id: I342f41903a15f13e72e76464499351412a9afa34
2018-04-25 22:29:13 -07:00
Alexia E. Smith
2b28a56d8a mail: Always quote uncoded names in MailAddress
Otherwise, names that contain whitespace (but no special characters
that need Q-encoding) will be sent as-is in an email header. While
that's valid by RFC 1036, RFC 5322 and others, some mail programs
fail to correctly process spaces. Avoid these problems by simply
quoting the name always - except for cases which are Q-encoded,
which must remain unquoted to be valid (and also cannot contain
spaces, thus unaffected).

Before:
> From: Foo Bar <fb@example.org>

After:
> From "Foo Bar" <fb@example.org>

Update test to work with the new criteria.

Bug: T191931
Change-Id: I4b2a0a80e8b43ecc943939fc5ebaa356a4f840e0
2018-04-24 21:29:25 +00:00
Reedy
39f0f919c5 Update suppressWarning()/restoreWarning() calls
Bug: T182273
Change-Id: I9e1b628fe5949ca54258424c2e45b2fb6d491d0f
2018-02-10 08:50:12 +00:00
James D. Forrester
73aeb82fab EmailNotification: Hard deprecate updateWatchlistTimestamp()
Soft-deprecated in 1.27.

Depends-On: Ie7073f2048ba2b79a8b36ad913453008ec3555ce
Change-Id: If1dd2f8211c808ab0e284d7a3fb0b24610a0b32d
2018-02-03 03:48:33 +00:00
Simeon Dahl
41acc515d4 Cleanup, removed space
Removed a space in class to follow the same style as the others.
Edit is pure cleanup.

Change-Id: I0810e2cf5929dd8ac039e6ae2eff0d7b07f14196
2017-11-02 13:54:05 +01:00
Umherirrender
ace44e2064 Use correct variable name in @param documentation
For some varargs a variable name is added with suffix ,... as seen for
many other varargs

Some @param are swapped, because there are in the wrong order

Enable Sniff MediaWiki.Commenting.FunctionComment.ParamNameNoMatch

Change-Id: I60fec6025bce824d5c67563ab7b65ad6cd628ad8
2017-08-11 19:27:19 +02:00
Matthew Flaschen
6e5e278494 Split minoredit into minoredit and enotif_minoredit
This allows minoredit to have links, while enotif_minoredit can
not.

Change-Id: I7aff9e5a5e6d460f6fce7da36a32e4717b247e4c
2017-07-27 20:13:58 -04:00
Kunal Mehta
d1cf48a397 build: Update mediawiki/mediawiki-codesniffer to 0.10.1
And auto-fix all errors.

The `<exclude-pattern>` stanzas are now included in the default ruleset
and don't need to be repeated.

Change-Id: I928af549dc88ac2c6cb82058f64c7c7f3111598a
2017-07-22 18:24:09 -07:00
Mark A. Hershberger
6c7d4481d7 Update documentation URL
Change-Id: I6a32689c5d224674fe96ad631b073f9efba47e3f
2017-05-30 22:16:22 -04:00
jenkins-bot
aa3319c4c0 Merge "Miscellaneous indentation tweaks" 2017-02-28 18:38:36 +00:00
Bartosz Dziewoński
ecdef925bb Miscellaneous indentation tweaks
I was bored. What? Don't look at me that way.

I mostly targetted mixed tabs and spaces, but others were not spared.
Note that some of the whitespace changes are inside HTML output,
extended regexps or SQL snippets.

Change-Id: Ie206cc946459f6befcfc2d520e35ad3ea3c0f1e0
2017-02-27 19:23:54 +01:00
James D. Forrester
9635dda73a includes: Replace implicit Bugzilla bug numbers with Phab ones
It's unreasonable to expect newbies to know that "bug 12345" means "Task T14345"
except where it doesn't, so let's just standardise on the real numbers.

Change-Id: I6f59febaf8fc96e80f8cfc11f4356283f461142a
2017-02-21 18:13:24 +00:00
addshore
79e841bcf8 Add missing properties to MailAddress class
Change-Id: I6f199cee22678391938637685a1a81771528eac4
2016-12-23 15:56:51 +00:00
Brian Wolff
d2aba5a04e Escape return path extra params to php mail()
PHP only escapes some dangerous shell characters. This is a hardening
measure, as MW's sanitizeEmail routines should also have prevented
evil characters from being in mail addresses in the first place.

Bug: T152717
Change-Id: I3736d612ed40d257ee3dde8e98eb30ccf432670a
2016-12-10 13:03:21 +00:00
Fomafix
202f695f67 Update weblinks in comments from HTTP to HTTPS
Use HTTPS instead of HTTP where the HTTP link is a redirect to the HTTPS link.

Also update some defect links.

Change-Id: Ic3a5eac910d098ed5c2a21e9f47c9b6ee06b2643
2016-11-07 15:24:46 +01:00
addshore
818984e5cb Remove WatchedItemStore::getDefaultInstance
Change-Id: I0c7d706fabee8d1f6fcfbc4c568f375953de8058
2016-05-06 08:47:37 +00:00
Kunal Mehta
c9d885f3b4 Namespace LinkTarget under MediaWiki\Linker
And add a GPL file header while we're at it.

Change-Id: I15a6f240124c879b21fb655ade1baaebf4f34ffd
2016-04-21 17:19:10 -07:00
Reedy
0f5e26ee41 Remove deprecated calling style of UserMailer::send()
Depends-On: I513639f706ce16334180908f55638eebf8a4de80
Depends-On: I3fce6c666e2c878a221e2e4c6acacfd0254d173a
Change-Id: I475932f37a579dd86bfd98e6b14509d6ba86f128
2016-04-02 19:02:10 +01:00
Reedy
b5656b6953 Many more function case mismatches
Change-Id: I5d3a5eb8adea1ecbf136415bb9fd7a162633ccca
2016-03-19 00:20:58 +00:00
addshore
a683b11b23 Move EmailNotification::updateWatchlistTimestamp to WatchedItemStore
Flow is the only thing remaining that uses this deprecated method.

Change-Id: Iaa4e1e34cb3f2a91c163565fb0107c500e3852d7
2016-03-08 18:44:05 +00:00