Commit Graph

306 Commits

Author SHA1 Message Date
Robin Ward
3d64f33d40 Require at least two likes to get the "New User of the Month" badge 2017-04-03 13:03:28 -04:00
Jeff Atwood
3b64aeaf21 loosen new user of the month criteria slightly 2017-03-31 16:33:50 -07:00
Robin Ward
e4b1376146 Change New User of the Month Badge to use trust level rather than age 2017-03-31 16:56:58 -04:00
Robin Ward
a8d3779f0b Update New User of the Month badge to require 4 posts in 2 topics 2017-03-31 16:52:00 -04:00
Robin Ward
fc7fa4c0ad Rename "Rookie of the Month" to "New User of the Month" 2017-03-31 16:30:30 -04:00
Robin Ward
e6f6bd34d8 Send the user a notice when they've received rookie of the month 2017-03-31 15:06:31 -04:00
Robin Ward
893e93dfbe New badge, Rookie of the Month, for two new high quality users. 2017-03-31 15:06:31 -04:00
Guo Xiang Tan
34b7bee568 FEATURE: Allow admin to auto reopen at topic.
* This commit also introduces a `TopicStatusUpdate`
  model to support other forms of deferred topic
  status update in the future.
2017-03-31 11:14:18 +08:00
Guo Xiang Tan
1a7e954e09 FIX: Store custom emojis as uploads.
* Depending on a hardcoded directory was a flawed design
  which made it impossible to debug when custom emojis go
  missing.
2017-03-14 13:07:18 +08:00
Régis Hanol
23b06d2895 FIX: should not try to send digest to users who reached the bounce threshold 2017-03-08 19:19:11 +01:00
Blake Erickson
0a41da6bad FEATURE: Add order logic to admin users controller
Added order and direction parameters for sorting admin user pages. This
commit only includes backend api changes.

https://meta.discourse.org/t/make-admin-users-list-sortable-suggestion/47649

Now you can pass in `order` and `asc` parameters to the
`/admin/users/list/<query>.json` endpoint.

Example:

`/admin/users/list/active.json?&order=post_count` which defaults to desc

and

`/admin/users/list/active.json?order=post_count&asc=true`
2017-02-24 17:11:17 -07:00
Régis Hanol
f07b4b310a should not have renamed this setting in 460665895c 2017-02-08 18:11:34 +01:00
Sam
ff49f72ad9 FEATURE: per client user tokens
Revamped system for managing authentication tokens.

- Every user has 1 token per client (web browser)
- Tokens are rotated every 10 minutes

New system migrates the old tokens to "legacy" tokens,
so users still remain logged on.

Also introduces weekly job to expire old auth tokens.
2017-02-07 09:22:16 -05:00
Régis Hanol
664feca199 FIX: don't send emails from muted users in mailing list mode 2016-12-12 15:28:26 +01:00
Guo Xiang Tan
9a800107cb FIX: Associate category logo and background to uploads record. 2016-12-12 17:37:28 +08:00
Robin Ward
424fc8e2e2 FIX: Don't raise an error if the RSS endpoint is 404 2016-12-05 12:29:14 -05:00
Guo Xiang Tan
55b35a05ed FIX: This should not have been checked in. 2016-12-05 11:49:04 +08:00
Guo Xiang Tan
22059d4df9 Add Rake task to clean up unused multisite Redis keys. 2016-12-05 11:46:34 +08:00
Andreas Motl
43fd3ebd4a Add “pop3_polling_openssl_verify” setting to turn off TLS server certificate verification like “smtp_openssl_verify_mode”. Defaults to “true”, so it does not change current behavior. 2016-11-11 21:59:15 +01:00
Guo Xiang Tan
f03d9cad06 PERF: NOT IN query is really inefficient for large tables. 2016-11-02 13:09:18 +08:00
Régis Hanol
52b338db62 FIX: category logo & background URLs should not use the CDN 2016-10-25 10:43:57 +02:00
Robin Ward
af83c8dc14 Upload Logos Step 2016-09-22 09:52:19 -04:00
Guo Xiang Tan
baacb30ba1 FIX: Incorrect folder. 2016-09-15 15:20:07 +08:00
Matt Palmer
394cd43d77 Scrub only after converting strings to UTF-8
Scrubbing an ASCII-8BIT string isn't ever going to remove anything, because
there's no code point that isn't valid 8-bit ASCII.  Since we'd really
prefer it if everything were UTF-8 anyway, we'll just assume, for now, that
whatever comes out of SimpleRSS is probably UTF-8, and just nuke anything
that isn't a valid UTF-8 codepoint.

Of course, the *real* bug here is that SimpleRSS [unilaterally converts
everything to
ASCII-8BIT](https://github.com/cardmagic/simple-rss/issues/15).  It's
presumably *far* too much to ask that it detects the encoding of the source
RSS feed and marks the parsed strings with the correct encoding...
2016-08-25 16:09:07 +10:00
Arpit Jalan
a2220feaea FEATURE: new site setting rebake_old_posts_count 2016-08-15 16:34:13 +05:30
Arpit Jalan
c064e946b2 FIX: custom reason for flags were not showing for non-english locales 2016-08-05 18:41:11 +05:30
Régis Hanol
c591429868 FIX: don't destroy uploads in queued posts and drafts 2016-08-01 18:35:57 +02:00
Sam
12dc511fea PERF: make score calculator cheaper when site has long topics 2016-07-22 09:48:44 +10:00
Guo Xiang Tan
1ea1cefb35 Extract Nginx log analyzer into a plugin that ships with Discourse. 2016-07-19 15:44:00 +08:00
Guo Xiang Tan
bd07658a37
PERF: Split queries when cleaning uploads.
This reduces the number of scans that the db has to do in the query
to fetch orphan uploads. Futheremore, we were not batching our
records which bloats memory.
2016-07-04 16:34:32 +08:00
Régis Hanol
2ecd0da59f REFACTOR: use same code path for handling emails via API and POP 2016-06-22 15:50:49 +02:00
Régis Hanol
e9a293beeb FIX: clean up uploads job 2016-06-20 22:05:41 +02:00
Sam
852860de66 FEATURE: simpler and friendlier unsubscribe workflow
- All unsubscribes go to the exact same page
- You may unsubscribe from watching a category on that page
- You no longer need to be logged in to unsubscribe from a topic
- Simplified footer on emails
2016-06-17 11:28:49 +10:00
Sam
c9dcffe434 FEATURE: store history for scheduled job execution 2016-05-30 11:38:08 +10:00
James Kiesel
feffe23cc5 FEATURE: More granular mailing list mode (#4068)
* Rearrange frontend to account for mailing list mode

* Allow update of user preference for mailing list frequency

* Add mailing list frequency estimate

* Simplify frequency estimate; disable activity summary for mailing list mode

* Remove combined updates

* Add specs for enqueue mailing list mode job

* Write mailing list method for mailer

* Fix linting error

* Account for stale topics

* Add translations for default mailing list setting

* One query for mailing list topics

* Fix failing spec

* WIP

* Flesh out html template

* First pass at text-based mailing list summary

* Add user avatar

* Properly format posts for mailing list

* Move make_all_links_absolute into Email::Styles

* Apply first_seen_at to user

* Send mailing list email summary hourly based on first_seen_at

* Branch and test cleanup

* Use existing mailing list mode estimate

* Fix failing specs
2016-05-21 15:17:54 +02:00
Sam Saffron
ce5867cce2 workaround issue where orphan user_avatar record exists 2016-05-17 09:40:17 +10:00
Régis Hanol
3df8f184c3 FEATURE: clean up 1 year old and unused staged users 2016-05-16 22:13:23 +02:00
Régis Hanol
21ce674546 fix translation when receiving a bounce or an auto-reply 2016-05-16 08:42:30 +02:00
Régis Hanol
1e57bbf5c8 Lots bounce emails related fixes
- Show bounce score on user admin page
- Added reset bounce score button on user admin page
- Only whitelisted email types are sent to emails with high bounce score
- FIX: properly detect bounces even when there is no TO: header in the email
- Don't desactivate a user when reaching the bounce threshold
2016-05-06 19:34:33 +02:00
Arpit Jalan
9427e0c732 FIX: bootstrap mode should not amend setting that is not in default state 2016-05-04 16:46:46 +05:30
Régis Hanol
8e611ec7a1 FEATURE: handle bounced emails 2016-05-02 23:15:32 +02:00
Arpit Jalan
74b3807f60 FEATURE: new bootstrap mode settings for brand new Discourse community (#4193)
* FEATURE: new bootstrap mode settings for brand new Discourse community

* new SiteSetting.set_and_log method
2016-04-26 13:08:19 -04:00
Guo Xiang Tan
a556d9ad4e
FIX: Expiry should be 3 times polling interval. 2016-04-21 15:04:03 +08:00
Guo Xiang Tan
b4e0c5afe0
FIX: Fetch stats if it has not been cached. 2016-04-21 14:50:25 +08:00
Régis Hanol
7d9f2265b9 FIX: improve support for handling emails coming from screened email addresses 2016-04-18 23:01:54 +02:00
Guo Xiang Tan
f95cefd09a FEATURE: Add POP3 timeout error only after 3 failures in a row. 2016-04-14 08:55:19 +08:00
Régis Hanol
8fcd359e2a Revert "FIX: Jobs.cancel_scheduled_job wasn't working anymore due to our move to using multiple queues"
This reverts commit b7c16991f7.
2016-04-13 18:30:25 +02:00
Régis Hanol
b7c16991f7 FIX: Jobs.cancel_scheduled_job wasn't working anymore due to our move to using multiple queues
FIX: Don't queue more than 1 'update_gravatar' job per user
2016-04-13 18:12:28 +02:00
Régis Hanol
4d9c81fde7 Merge pull request #4148 from tgxworld/dont_reply_to_emails_that_are_autogenerated
FIX: Don't send rejection mailer to bounced emails.
2016-04-13 15:36:14 +02:00
Neil Lalonde
7f0b1691c4 FEATURE: add pop3 timeouts and auth errors to admin dashboard. Admins will get notified along with other problems. 2016-04-08 17:33:47 -04:00
Neil Lalonde
9c934e27be FEATURE: notify admins if problems have been reported on the dashboard for a while 2016-04-08 16:44:13 -04:00
Robin Ward
9d8db11cf3 Move MigrateScheme to new Onceoff thing 2016-04-07 15:31:32 -04:00
Robin Ward
3f7ced9236 Try running once off jobs outside of db:migrate 2016-04-07 15:07:24 -04:00
Guo Xiang Tan
5734c7f3f3 FIX: Don't send rejection mailer to bounced emails. 2016-04-07 22:21:17 +08:00
Régis Hanol
79639e2dec FIX: ensure group's users counters are kept in sync 2016-04-04 17:03:18 +02:00
Régis Hanol
9e9c81c30b improve error log when timing out while connecting to mail server 2016-03-25 16:44:08 +01:00
Régis Hanol
39863953cd new 'enable_staged_users' site setting 2016-03-23 18:56:03 +01:00
Régis Hanol
9c61f45bf9 FIX: properly handle failure in poll mailbox job 2016-03-21 18:49:01 +01:00
Sam Saffron
433fa74d87 FIX: ensure consistency of user options
Edge case during upgrade can cause accounts registered after migration
prior to restart to have missing user option records
2016-03-17 10:03:56 +11:00
Régis Hanol
162fcb75da FEATURE: admin dashboard check when email polling errored in the past 24 hours 2016-03-16 21:17:48 +01:00
Régis Hanol
4a3cb4a000 FIX: use MD5 of the email_string when there's no 'Message-Id' 2016-03-14 18:18:58 +01:00
Régis Hanol
622d804d46 FEATURE: Add rejection message on rejected IncomingEmail
FIX: Better RateLimit description in rejected IncomingEmail
FEATURE: Send email when hitting a rate limit
2016-03-07 16:56:17 +01:00
Guo Xiang Tan
bc4087b9bb FIX: RSS description might be nil. 2016-03-07 17:42:17 +08:00
Régis Hanol
05f0db0a20 FIX: don't use destroy_all when delete_all is enough 2016-03-05 00:41:22 +01:00
Neil Lalonde
c1aea91d63 FEATURE: More digest email frequency options. Digests can be sent as often as every 30 minutes. 2016-03-02 15:43:47 -05:00
Neil Lalonde
e8d837269b FEATURE: pending flags reminder is sent as a group message to staff instead of sending an email to the contact email site setting. 2016-02-19 15:21:18 -05:00
Sam
3de390c067 quote fields in case they are still in the db 2016-02-19 13:57:07 +11:00
Sam
3829c78526 PERF: shift most user options out of the user table
As it stands we load up user records quite frequently on the topic pages,
this in turn pulls all the columns for the users being selected, just to
discard them after they are loaded

New structure keeps all options in a discrete table, this is better organised
and allows us to easily add more column without worrying about bloating the
user table
2016-02-17 18:08:25 +11:00
Neil Lalonde
06c9e79984 FIX: pending flags reminder email was ignoring the 'notify about flags after' site setting. 2016-02-12 14:33:23 -05:00
Régis Hanol
cad7fc1062 FIX: don't allow blocked user to send emails in 2016-02-11 10:39:57 +01:00
Régis Hanol
460665895c properly name purge emails/email logs site settings 2016-02-08 22:18:52 +01:00
Régis Hanol
ac863bab91 FEATURE: new 'suppress_email_logs_after_days' site setting 2016-02-08 18:47:35 +01:00
Régis Hanol
8608b5cbc1 FIX: don't poll the mailbox in development 2016-02-01 16:56:32 +01:00
Régis Hanol
d51019ee53 FIX: *always* create an EmailLog whenever we run the UserEmail job
There were actually 2 bugs:

1/ Calling '.try(:key)' on a hash doesn't work. So EmailLogs were never associated to a user.

2/ Turns out that we update the 'user.last_emailed_at' whenever we create an EmailLog (in the 'after_create' callback).
So we need to always create an EmailLog (whenever the email is sent or skipped).
2016-01-28 19:01:35 +01:00
Régis Hanol
3083657358 FEATURE: better email in support
FEATURE: new incoming_email model
FEATURE: infinite scrolling in emails admin
FEATURE: new 'emails:import' rake task
2016-01-19 00:57:55 +01:00
Régis Hanol
8b0ffd9a88 don't bother iterating over disabled badges 2016-01-18 21:41:12 +01:00
Régis Hanol
4bb31daa2e FIX: when getting a reply by email, ensure it's by the same user 2015-12-16 00:43:05 +01:00
Régis Hanol
93d1cc6294 add support for incoming emails in CC/BCC fields 2015-12-10 23:49:16 +01:00
Neil Lalonde
523138f1fd FEATURE: add setting pending_users_reminder_delay to configure when to send reminders to moderators about user approvals based on how long new users have been waiting 2015-11-20 16:06:07 -05:00
Neil Lalonde
5597957cc6 FIX: don't send repeat notifications to moderators about the same pending approval users 2015-11-20 16:06:07 -05:00
Régis Hanol
3c2486e2ba FIX: compare UTC dates to schedule backups 2015-11-12 18:35:03 +01:00
Régis Hanol
72a7bd38e1 FEATURE: new 'backup_time_of_day' site setting 2015-11-12 16:14:49 +01:00
Régis Hanol
acecfeb37f Add 'staged' boolean to User 2015-11-06 19:19:13 +01:00
Sam
6f43b575a8 FEATURE: no need to cap new and unread together anymore
- leave unread alone
- cap new at 500 per site, with a site setting
2015-10-01 17:17:15 +10:00
Robin Ward
40934e595a FIX: Some RSS feeds do unsafe redirects
There are people who have RSS feeds set up that do HTTPS -> HTTP
redirects which throw errors. Since RSS feeds are all configured
by admins I think it's OK if they allow an unsafe redirect as the
content is public anyway. This will reduce many server side errors.
2015-09-18 13:25:09 -04:00
Neil Lalonde
991a36f4f2 always use fetch_stats to get AdminDashboardData data 2015-09-14 16:10:54 -04:00
Sam
335be272ff FEATURE: implement capping of new/unread
We cap new and unread at 2/5th of SiteSetting.max_tracked_new_unread

This dynamic capping is applied under 2 conditions:

1. New capping is applied once every 15 minutes in the periodical job, this effectively ensures that usually even super active sites are capped at 200 new items

2. Unread capping is applied if a user hits max_tracked_new_unread,
  meaning if new + unread == 500, we defer a job that runs within 15 minutes that will cap user at 200 unread

This logic ensures that at worst case a user gets "bad" numbers for 15 minutes and then the system goes ahead and fixes itself up
2015-09-07 12:03:17 +10:00
Régis Hanol
2b9b29c8c8 FIX: ensure CategoryUser consistency 2015-09-02 22:02:31 +02:00
Régis Hanol
a47370fc52 Merge pull request #3456 from 5minpause/patch-1
Changes RSS item creation to prevent encoding errors
2015-08-14 18:19:58 +02:00
Régis Hanol
b8cf797e31 FIX: ensure Badge consistency 2015-08-14 13:03:49 +02:00
Sam
e670ebb433 FEATURE: allow backup settings to be overriden by globals
FEATURE: allow backup interval of up to 30 days
FIX: if a custom file exists in backup directory look at its date
FEATURE: site setting automatic_backups_enabled default true
2015-08-14 16:28:29 +10:00
Régis Hanol
15418f3d44 FEATURE: new 'backup_frequency' site setting 2015-08-07 17:34:58 +02:00
Sam
6f9dc135ba FEATURE: allow logging of raw body of all unprocessable email
set log_mail_processing_failures to true to enable
2015-07-31 15:10:35 +10:00
Régis Hanol
faf4f44776 FEATURE: make pin expiration mandatory 2015-07-29 16:34:21 +02:00
Guo Xiang Tan
b0ea6764e0 PERF: Cache About#stats. 2015-07-20 22:45:05 +08:00
5minpause
4ee1bc6320 Changes RSS item creation to prevent encoding errors
SimpleRss is unreliable with parsing RSS feeds that contain German Umlauts.
For example this feed http://www.lauffeuer-lb.de/api/v2/articles.xml can't be
parsed by SimpleRss. Discourse's logs are full of

```
Job exception: Wrapped Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8
Job exception: incompatible character encodings: ASCII-8BIT and UTF-8
```

The embedding fails because the feed can't be parsed.

This change forces the encoding (using #scrub)  which prevents the numerous
encoding errors.
2015-07-20 14:30:42 +02:00
Sam
e32cecf60f Don't run perf report in multisite 2015-06-26 16:30:07 +10:00
Sam
4b449241fb correct formatting 2015-06-26 14:15:52 +10:00
Sam
542e796fb0 FEATURE: daily performance reports 2015-06-26 13:37:05 +10:00
Régis Hanol
18f887772d FEATURE: allow plugins to add custom admin reports 2015-06-25 02:42:08 +02:00