Commit Graph

363 Commits

Author SHA1 Message Date
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
Neil Lalonde 77595bcaa9 FEATURE: notify by email when there are posts from new users waiting to be reviewed 2015-06-18 15:47:35 -04:00
Régis Hanol 189cb3ff12 FEATURE: move migrate_to_new_scheme into a background job
- new hidden site setting 'migrate_to_new_scheme' (defaults to false)
- new rake tasks to toggle migration to new scheme
- FIX: migrate_to_new_scheme also works with CDN
- PERF: improve perf of the DbHelper.remap method
- REFACTOR: UrlHelper is now a class
2015-06-12 12:07:57 +02:00
cpradio afb566260e FEATURE: Use created_at to remove an ip if its last_match_at is null 2015-06-05 10:51:13 -04:00
Arpit Jalan 725861f344 FIX: move draft cleanup to the dedicated method and add test 2015-06-03 14:35:54 +05:30
Jeff Atwood fa963e8f38 Revert "Revert "FIX: new task to delete old drafts weekly""
This reverts commit c987a1d571.
2015-06-02 04:26:01 -07:00
Sam Saffron c987a1d571 Revert "FIX: new task to delete old drafts weekly"
This reverts commit fcaed7a00d.
2015-06-02 20:30:06 +10:00
Sam Saffron 0fd1974838 FIX: leaving around useless drafts after posting 2015-06-02 20:28:33 +10:00
Arpit Jalan fcaed7a00d FIX: new task to delete old drafts weekly 2015-06-02 08:39:27 +05:30
Régis Hanol 41cd438f0b FIX: 'clean up uploads' job
Only 1 query was needed.
2015-05-22 20:28:52 +02:00
Régis Hanol 9a96cd9f3b CRUSHED: duplicate key value violates unique constraint 'index_uploads_on_sha1' 2015-05-07 01:00:13 +02:00
Robin Ward 6ae58d41a7 PERF: Only refresh the Daily stats hourly, do the others daily. 2015-04-20 12:11:36 -04:00
Arpit Jalan e6df97f01d FIX: add email reply error message for topic not getting created in restricted category 2015-04-10 17:11:52 +05:30
Régis Hanol 8775dbec54 Merge pull request #3299 from riking/stagger-backups
FIX: Stagger daily backups by up to 10 minutes
2015-04-06 11:14:37 +02:00
Régis Hanol 7ce2dea33e Merge pull request #3306 from riking/badge-rescue
FIX: Don't stop the badge grant after the first failure
2015-04-06 11:12:20 +02:00
Arpit Jalan a80c742855 FIX: include site name in email reply error subject 2015-04-02 15:46:22 +05:30
riking 6ce26ab4d8 FIX: Don't stop the badge grant after the first failure 2015-03-28 18:36:05 -07:00
riking 018c467c69 FIX: Stagger daily backups by up to 10 minutes 2015-03-25 23:24:39 -07:00
Robin Ward 3d2d224312 FEATURE: User Directory, with sorting and time period filter 2015-03-18 15:20:34 -04:00
Régis Hanol fc962eb378 FEATURE: automatic daily roll-up for screened IP addresses 2015-03-09 18:55:17 +01:00
Sam 6960639c58 Merge pull request #3190 from riking/thrown_logging
Delete old ErrorLog, use Logster for 500 errors
2015-02-23 14:19:16 +11:00
Arpit Jalan f3daae6dec Improve auto generated email reply error message 2015-02-18 18:58:51 +05:30
Robin Ward 3ce2077aa8 Migrate unsubscribe keys to the database.
This should reduce a lot of the keys in redis.
2015-02-13 14:24:15 -05:00
riking 5657006aca Rename handle_exception to handle_job_exception 2015-02-09 12:47:46 -08:00
Arpit Jalan 12c82bed59 Disable digest emails site setting 2015-01-27 22:41:36 +05:30
Arpit Jalan 5c2ee8ec2a FEATURE: suppress digest emails for users not seen on the site for more than (n) days. 2015-01-26 22:04:02 +05:30
Robin Ward f7955406cc As an optimization, don't return suspended users in the query that
determines who to send digests to.
2014-12-29 15:16:29 -05:00
Arpit Jalan 68e66f3a25 Rename CsvExportLog to UserExport 2014-12-28 22:31:12 +05:30
Arpit Jalan 7c7474aa10 create a new table to maintain csv export log 2014-12-24 16:25:36 +05:30
Jeff Atwood ea269ccfb2 rename purge_inactive to purge_unactivated 2014-12-02 21:36:25 -08:00
Régis Hanol 515b616d30 ooops. forgot the args :fired: 2014-11-25 18:45:45 +01:00
Régis Hanol e23a25994d FEATURE: clean up unmatched email/ip entries after a year 2014-11-25 17:12:49 +01:00
Arpit Jalan b37d845dd3 FIX: email replies should not be accepted for deleted topics 2014-10-27 13:05:33 +05:30
Arpit Jalan 08dc0e6ee6 FIX: email replies to closed topic should not be accepted 2014-10-25 23:47:13 +05:30
Robin Ward 1cf4a0d604 Rename "User Expansion" to the much clearer "User Card" 2014-10-20 12:11:59 -04:00
Robin Ward 4d465362b5 FEATURE: Allow a user to upload an image for their expansion background. 2014-10-16 15:05:36 -04:00
Régis Hanol bb59798066 FEATURE: ensure consistency of post revisions 2014-10-15 21:09:08 +02:00
Régis Hanol 5504622c1b rename export/import in favor of backup/restore for better consistency 2014-10-10 20:04:07 +02:00
Sam 0e7be81e60 FIX: badge granted titles were not being revoked when badge was revoked 2014-10-08 10:26:18 +11:00
riking bff95a6a97 Rename 'leader' -> 'tl3' 2014-09-30 13:16:34 +10:00
riking fa50723807 Fix wrong variable name 2014-09-30 13:15:14 +10:00
riking 760465959f Also skip locked users in the job query 2014-09-30 13:15:14 +10:00
riking c8111ada6e FEATURE: Allow admins to lock users from TL3 promotion/demotion
Also, update the display logic for the leader promotion screen to
account for the demotion grace period.
2014-09-30 13:15:13 +10:00
Régis Hanol 69400a802f FEATURE: auto-delete any hidden posts that stay hidden for more than 30 days 2014-09-25 19:51:00 +02:00
Sam 58eabb03e5 FEATURE: api support for arbitrary unlinked assets
admins can set retain periods for assets
2014-09-23 16:50:17 +10:00
Sam 2d615e4f8f lesson, this is why you don't mock 2014-09-05 16:55:48 +10:00
Sam 59d04c0695 Internal renaming of elder,leader,regular,basic to numbers
Changed internals so trust levels are referred to with

TrustLevel[1], TrustLevel[2] etc.

This gives us much better flexibility naming trust levels, these names
are meant to be controlled by various communities.
2014-09-05 15:20:52 +10:00
riking ee812eb447 FIX: Do not perform grants if badges are disabled 2014-09-02 13:12:27 -07:00
riking e28ef099a4 Fix pop3 SSL state leaking over multisite 2014-08-26 17:03:58 -07:00
riking 6d357c9c23 Rename pop3s settings to pop3, remove 'insecure' 2014-08-26 17:03:58 -07:00
Sam f493eb5d12 FEATURE: allow version emails to be disabled globally 2014-08-23 10:02:32 +10:00
Sam ac4f6d9c97 Merge pull request #2647 from riking/multiple-addresses
Allow processing of email sent to multiple addresses
2014-08-22 10:32:42 +10:00
Régis Hanol 8a20d05ba5 FEATURE: backup without uploads 2014-08-20 18:53:58 +02:00
Neil Lalonde 4e857bfa12 FIX: add http:// to feed_polling_url if it's missing 2014-08-19 17:57:14 -04:00
Akshay b4e38e5646 updated checks of environment with Rails.env by Rails.env methods 2014-08-18 15:36:47 +05:30
Sam 5193c9fd16 FIX: ensure consistency on topic featured users 2014-08-18 17:13:32 +10:00
Arpit Jalan 8d7f4c1944 FEATURE: add additional fields in user list export 2014-08-16 00:39:28 +05:30
Arpit Jalan b0f44dcdf3 clean up exports weekly 2014-08-15 02:03:30 +05:30
Robin Ward 7ed969f0c7 Site Setting to customize how frequently inactive users are purged 2014-08-13 15:11:19 -04:00
riking b4dc8e7115 Add error reply for new error 2014-08-13 11:47:21 -07:00
Robin Ward 3c6673aceb Purge inactive accounts that are older than 7 days 2014-08-13 14:13:41 -04:00
Sam eeff092ead PERF/FIX: Dismiss Post coming back
Now that post numbers are monotonically increasing we should not need this job
Stuff should just self correct as users browser along

Corrected the job not to reset the disimissed posts in case we need it
2014-08-11 10:26:46 +10:00
Sam 0b5e19303d PERF: only run category stats once a day 2014-08-11 09:41:50 +10:00
Sam 22cd259687 FIX: remove faulty "ensure consistency" badge job 2014-08-11 09:21:06 +10:00
Sam cd22b6158c PERF: stop mucking with user stats every 15 minutes
(pushed to twice daily)
2014-08-07 14:20:42 +10:00
Sam b11b5cb61b SECURITY: rebake old user profiles 2014-08-05 16:37:56 +10:00
Robin Ward 6eb478f5fa Merge pull request #2614 from riking/email-tests
Email tests, and include posting error reason
2014-08-01 16:33:00 -04:00
Robin Ward 0a2036a99a OPTIMIZATION: Don't run 12 queries every 15 mins for the Top section.
Instead, run the daily queries once every hour, and the reset of the
queries once a day.
2014-08-01 16:25:20 -04:00
riking c0b2b9b341 Refactor out handle_failure method in PollMailbox 2014-08-01 11:12:06 -07:00
riking d87edce6c3 Pass rejection message along in rejection mail if present 2014-08-01 09:56:15 -07:00
Sam dcc9923e4b FIX: failed messages posted via email silently ignored
also... test suite over mocking
2014-07-31 18:46:02 +10:00
David McClure 025354f52f add a low water mark at 90% of variable TL3 requirements 2014-07-27 23:42:38 -07:00
Sam 95d13bf68a PERF: move avg time calculation to daily 2014-07-25 13:21:10 +10:00
Sam 0f9678fe49 FIX: faster update of all badges
Introduced badge triggers, introduced concept of badge that happens due to a post but has the post hidden

Delta badge grant happens once a minute, backed by redis
2014-07-23 11:46:07 +10:00
Sam 1359a02128 Merge pull request #2532 from riking/sidekiq
Pass more context from Sidekiq jobs to Logster
2014-07-18 10:24:51 +10:00
riking d90404e830 Change 'code' to 'message' 2014-07-17 15:19:58 -07:00
riking 12cb682548 Start passing more context to Discourse.handle_exception 2014-07-17 14:11:56 -07:00
riking c8d322d1be Include the email subject line in rejection messages
This change has a tradeoff.
It increases our backscatter vulnerability - the subject could have spammy content - but it's extremely valuable to the user to know exactly which message was rejected.
If you sent two at the same time, and only one was rejected, you would have no way of knowing which worked and which to resend without going to the website (which is what email-in is trying to avoid, kinda).
2014-07-17 10:25:53 -07:00
Neil Lalonde 4c867c5796 FIX: don't send repeated notifications that there are pending users who need to be approved to moderators who haven't read the previous notification 2014-07-16 17:53:51 -04:00
Sam 89fc989adb FEATURE: First Quote badge 2014-07-11 14:17:43 +10:00
Neil Lalonde df8b25d2f5 FEATURE: don't demote trust level 3 users who were promoted less than SiteSetting.leader_promotion_min_duration days ago 2014-07-08 17:39:49 -04:00
Sam 9a9ad9bda8 FEATURE: Badge progress
- Refactor model so it stores backfill query
- Implement autobiographer
- Remove sample badge
- Correct featured badges to only include a badge once
2014-07-03 17:29:44 +10:00
Sam 198731de23 FIX: 100% cpu while parsing feeds 2014-07-02 13:53:04 +10:00
Sam a4b7b561dc Add link to badge reason on badge details page. 2014-07-02 09:46:28 +10:00
Neil Lalonde 3f16e1e335 Enable trust level 3 promotion/demotion job 2014-07-01 17:34:07 -04:00
Sam 760e9a756d PERF: push reindex job to daily 2014-07-01 10:09:55 +10:00
riking a7b8f25c50 Even better fix 2014-06-30 15:17:05 -07:00
riking 07cedb7946 Fix specs, handle_exception calls 2014-06-30 15:16:16 -07:00
riking eb14983dfa Change pop3 auth errors from admin message to dashboard notice 2014-06-30 14:44:18 -07:00
Robin Ward e22688a204 FEATURE: Can upload images to categories 2014-06-30 14:14:00 -04:00
Sam 777371bf14 Merge pull request #2480 from vikhyat/badge-system
Add consistency check to revoke invalid badges
2014-06-30 14:13:12 +10:00
Neil Lalonde 807bfbd9bb FEATURE: Trust level 3 promotion and demotion. Job is disabled for now. 2014-06-27 18:42:03 -04:00
Vikhyat Korrapati 83749779cc Add consistency check to revoke duplicate badges. 2014-06-28 01:24:00 +05:30
riking da9048f3ea Fix email code & tests 2014-06-27 12:04:31 -07:00
Andrew Bezzub 386d1e231a move profile_background from User to UserProfile 2014-06-26 12:30:07 -04:00
Kane York 6f5b58969b Only give necessary context 2014-06-25 17:01:23 -07:00
Sam e05aa9bdc8 Stop spamming mods even on exceptional cases 2014-06-26 09:58:37 +10:00
Sam 67804cb56b Merge pull request #2465 from riking/email_rejections
Give specific message for each kind of email rejection
2014-06-26 09:55:24 +10:00
Sam 3c84876660 BUGFIX: Chinese search was broken
BUGFIX: User locale was used index data
BUGFIX: missing Norwegian fulltext config
FEATURE: store the text used to index stuff in fulltext (for diagnostics / in page search)
FEATURE: re-index posts when locale changes (in bg job)
FEATURE: allow reindexing by trucating post_search_data

Note: I removed japanese specific config cause it requires custom pg config,
  happy to add it once our base docker config ships with it
2014-06-24 17:11:13 +10:00
riking 222db71dd7 Cleanup 2014-06-23 17:48:51 -07:00
riking 8b5d2b835a Add case for bad reply key 2014-06-23 17:46:22 -07:00
riking d2823fc5ee More detailed email rejection responses 2014-06-23 17:17:53 -07:00
riking edc17dddb3 Let's see if this works 2014-06-23 17:17:53 -07:00
Neil Lalonde 6aa44fd412 Merge pull request #2461 from peternlewis/pop3s_polling_period_mins
Add a SiteSetting to control the pop3 polling period.
2014-06-23 10:48:40 -04:00
Peter N Lewis 5da2eac1bb Add a SiteSetting to control the pop3 polling period.
The default 5 minutes may add too much lag for some sites used to mailing list performance.

Unfortunately, this seems to require restarting the server for the change to be noticed - is there any way to avoid that, or otherwise should this be noted in the setting text?
2014-06-21 15:57:49 +08:00
riking a7a28454a1 DEBUG: Send all email processing errors to admins 2014-06-20 09:31:19 -07:00
Robin Ward 1147b9d2e5 Merge pull request #2408 from peternlewis/pop3_insecure
Support for insecure POP3 (without SSL)
2014-06-16 11:51:44 -04:00
Justin Leveck a78df3d57d Add custom embed_by_username feature
Feature to allow each imported post to be created using a different discourse
username. A possible use case of this is a multi-author blog where discourse
is being used to track comments. This feature allows authors to receive
updates when someone leaves a comment on one of their articles because each of
the imported posts can be created using the discourse username of the author.
2014-06-09 12:35:38 -07:00
Sam 0f37699d5f BUGFIX: broken schedule 2014-06-07 10:25:15 +10:00
Peter N Lewis 6c05de45b6 Support for insecure POP3 (without SSL)
Ideally it would be a menu selection to select POP3, POP3S, and potentially other future protocols like IMAP if desired, but I didn't want to deal with data migration at this point.  And then I was going to have a checkbox for "Secure" (on by default, obviously), but that was very hard to word as to how it was different given everything else referred to pop3s and I couldn't change that either.  So I settled on a preference:

pop3s_polling_insecure: "Poll using plain text POP3 without SSL"

Off by default.

This makes it very clear that as to what turning on that checkbox will be, and by calling it "insecure" makes sure people will think twice before turning it on.

I have not attempted to do any of the translations of the preference, I'm ot sure how you handle that.
2014-06-02 20:59:10 +08:00
Sam fa6f22dd39 Move letter avatars out of upload system
FIX: S3 issues around system avatars
FIX: reduced backup file size
2014-05-30 14:45:55 +10:00
Sam 1a31eb1d97 job should warn about corrupt user_avatar records 2014-05-28 19:55:33 +10:00
Sam 3e36d0698c BUGFIX: ensure it tries downloading avatars 2014-05-28 17:57:15 +10:00
Sam d9f51961c4 BUGFIX: pick gravatar if it was just downloaded
BUGFIX: don't go rebaking unless all avatars are downloaded
2014-05-28 16:54:21 +10:00
Sam f6753d3d46 FEATURE: automatically rebake out-of-date posts 2014-05-28 12:30:57 +10:00
Sam 2791852bd8 FEATURE: ability to regenerate system avatars as needed
BUGFIX: made system letter avatar more thinner for less block look
2014-05-28 12:30:57 +10:00
Sam ce6c25afed Correct query so it scopes correctly 2014-05-27 22:17:04 +10:00
Sam 6e0f54ba9a slow down the back fill process a bit 2014-05-27 20:46:17 +10:00
Sam 504cfcff96 Fix specs for avatars
Implement avatar picker
Correct avatar related jobs
2014-05-27 10:08:03 +10:00
Sam 6c1c8be794 Work in progress, keeping avatars locally
This introduces a new model to store the avatars and 3 uploads per user (gravatar, system and custom)

user can then pick which they want.
2014-05-27 10:08:03 +10:00
Sam 557dc76c07 BUGFIX: failing avatar detection job 2014-05-12 15:50:44 +10:00
Louis Rose 1574485443 Perform the where(...).first to find_by(...) refactoring.
This refactoring was automated using the command: bundle exec "ruby refactorings/where_dot_first_to_find_by/app.rb"
2014-05-06 14:41:59 +01:00
Sam 7c57d74e85 FEATURE: unicorn sidekiq will restart sidekiq on complete failure.
(checks every 30 minutes for complete failure)
2014-04-23 13:13:18 +10:00
Régis Hanol 2505d18aa9 FEATURE: support email attachments 2014-04-14 22:55:57 +02:00
Régis Hanol c3a1c867dd REFACTOR: poll mailbox specs 2014-04-09 19:26:19 +02:00
Neil Lalonde ecf211aa3f Send email to contact_email if there are flags submitted more than 48 hours ago. Configurable with the notify_about_flags_after site setting. 2014-04-03 14:34:40 -04:00
riking 2ade638d79 Remove unused variables 2014-03-18 19:09:44 -07:00
Robin Ward e22f1ae186 Support for a daily job at a certain hour. Convert backup job to run at
3am instead of randomly during the day.
2014-03-14 13:02:45 -04:00
Robin Ward 42ca83ece5 FEATURE: New site setting to enable a daily automatic backup 2014-03-12 13:30:47 -04:00
Robin Ward 78889163bf BUGFIX: We were tring to delete the mail string, not the mail itself. 2014-03-07 11:28:55 -05:00
Régis Hanol bce4130d39 Merge pull request #2036 from ArmedGuy/profile-backgrounds
FEATURE: Profile Backgrounds
2014-03-05 16:00:49 +01:00
Johan Jatko 98c479c3c4 FEATURE: Profile Backgrounds
Shares a modified codebase with avatars called "user_image"
2014-03-05 15:10:44 +01:00
Sam 172e517b31 Merge pull request #2012 from ligthyear/incoming-emails
Advanced New-Topic via Email Feature
2014-03-03 10:58:10 +11:00
Régis Hanol 6b83ed0347 OPTIM: change Top Topic's score computation algorithm
New algorithm will not wipe the entire table anymore and will only remove
invisible topics and add new visible topics.
2014-02-28 20:33:52 +01:00
Benjamin Kampmann 024597e643 Switch to proper exception handling system for better user feedback
- Replace implicit return code-system in Email::Receiver with proper exception system
 - Update tests to check for exceptions instead
 - Test the PollMailbox for expected failures
 - Add proper email-handling of problematic emails
"
2014-02-28 17:02:58 +01:00
Allen Hancock dad43b9853 Optionally allow discourse to create new topics from email. 2014-02-28 16:53:58 +01:00
Sam 1b0c567729 OOPS 2014-02-27 12:43:44 +11:00
Sam 9551f4aeea PERF: calculate scores for topics/posts faster
Only look at topics that changed in last day for 15 minuted schedule
Do a full recalc weekly, just in case
2014-02-27 11:45:40 +11:00
Sam e4909c017c PERF: only rebuild entire top topic table daily 2014-02-27 11:45:40 +11:00
Sam 57ee244394 Bump up consistency check to run twice a day instead of once 2014-02-11 16:11:40 +11:00
Sam e1f293ad66 FEATURE: new scheduler
Removed sidetiq, introduced new scheduler

- add basic UI
- add schedule discover
- add scheduling in initializer
2014-02-06 10:26:16 +11:00
Robin Ward 4981525047 REFACTOR: Fixes poor class hierarchy for listing topics
- Upgrades Ember to latest
- Fixes a bunch of bugs with page titles and missing "active" states
2014-01-18 19:26:24 +01:00
Robin Ward 1aee217a61 FIX: sidekiq 100% CPU usage due to `ice_cube` 2014-01-10 11:43:51 -05:00
Robin Ward 339b5942bb Default should be to poll every 5 mins 2014-01-08 15:05:18 -05:00
Robin Ward ed2e53bb06 FIX: Support feeds with `description` as well as `content` 2014-01-02 14:29:27 -05:00
Neil Lalonde df220ae973 Get detailed info about new versions from the Discourse Hub. Include version notes from the latest version in notification email. 2013-12-31 15:52:35 -05:00
Robin Ward 4f8aed295a FEATURE: Embeddable Discourse comments, now with simple-rss instead of feedzirra 2013-12-31 15:01:22 -05:00
Robin Ward 62db063e1e Revert "Support for Embeddable Comments via IFRAME" - it depends on Curl
which not every server has. Have to rethink this.

This reverts commit e3e4c62887.
2013-12-31 12:52:31 -05:00
Robin Ward e3e4c62887 Support for Embeddable Comments via IFRAME 2013-12-31 12:26:24 -05:00
Régis Hanol 567d2bd23c add top page 2013-12-24 00:50:36 +01:00
Régis Hanol 52160179f8 add a tombstone for extra safety 2013-11-27 22:05:11 +01:00
Sam d1d661f6e1 add logic that auto closes any topics that missed the queued job (due to redis flush or whatever) 2013-11-11 10:52:44 +11:00
Neil Lalonde ede59a4386 FIX: issue 1538. After upgrading and before a new version check request has been made, dashboard might still say that an update is available. 2013-11-04 12:51:09 -05:00
Régis Hanol debd9bfb25 add a sitesetting to enable the CleanUpUploads job 2013-10-16 17:09:36 +02:00
Régis Hanol 4536b5fe04 added a job to clean up orphan uploads 2013-10-15 11:15:48 +02:00
Sam 5bf26ec34e large refactor, ship a few columns from the user table into user_stats 2013-10-07 15:04:59 +11:00
Sam f0a122a66c move job files so they live underneath app/ and not in lib/
introduce new setting email_always, that will force emails to send to users regardless of presence on site
2013-10-01 17:04:02 +10:00