forked from GNUsocial/gnu-social
Email notify-on-fave moved to Profile_prefs (run upgrade.php)
This commit is contained in:
parent
b46b588522
commit
0a20abf1d8
@ -214,13 +214,6 @@ class EmailsettingsAction extends SettingsAction
|
||||
$user->emailnotifysub);
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
$this->checkbox('emailnotifyfav',
|
||||
// TRANS: Checkbox label in e-mail preferences form.
|
||||
_('Send me email when someone '.
|
||||
'adds my notice as a favorite.'),
|
||||
$user->emailnotifyfav);
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
$this->checkbox('emailnotifymsg',
|
||||
// TRANS: Checkbox label in e-mail preferences form.
|
||||
_('Send me email when someone sends me a private message.'),
|
||||
@ -324,7 +317,6 @@ class EmailsettingsAction extends SettingsAction
|
||||
|
||||
if (Event::handle('StartEmailSaveForm', array($this, $this->scoped))) {
|
||||
$emailnotifysub = $this->boolean('emailnotifysub');
|
||||
$emailnotifyfav = $this->boolean('emailnotifyfav');
|
||||
$emailnotifymsg = $this->boolean('emailnotifymsg');
|
||||
$emailnotifynudge = $this->boolean('emailnotifynudge');
|
||||
$emailnotifyattn = $this->boolean('emailnotifyattn');
|
||||
@ -338,7 +330,6 @@ class EmailsettingsAction extends SettingsAction
|
||||
$original = clone($user);
|
||||
|
||||
$user->emailnotifysub = $emailnotifysub;
|
||||
$user->emailnotifyfav = $emailnotifyfav;
|
||||
$user->emailnotifymsg = $emailnotifymsg;
|
||||
$user->emailnotifynudge = $emailnotifynudge;
|
||||
$user->emailnotifyattn = $emailnotifyattn;
|
||||
|
@ -73,7 +73,7 @@ class User extends Managed_DataObject
|
||||
'email' => array('type' => 'varchar', 'length' => 255, 'description' => 'email address for password recovery etc.'),
|
||||
'incomingemail' => array('type' => 'varchar', 'length' => 255, 'description' => 'email address for post-by-email'),
|
||||
'emailnotifysub' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of subscriptions'),
|
||||
'emailnotifyfav' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of favorites'),
|
||||
'emailnotifyfav' => array('type' => 'int', 'size' => 'tiny', 'default' => null, 'description' => 'Notify by email of favorites'),
|
||||
'emailnotifynudge' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of nudges'),
|
||||
'emailnotifymsg' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of direct messages'),
|
||||
'emailnotifyattn' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of @-replies'),
|
||||
@ -289,7 +289,6 @@ class User extends Managed_DataObject
|
||||
// initially for sites using caching, since the initial encache
|
||||
// doesn't know about the defaults in the database.
|
||||
$user->emailnotifysub = 1;
|
||||
$user->emailnotifyfav = 1;
|
||||
$user->emailnotifynudge = 1;
|
||||
$user->emailnotifymsg = 1;
|
||||
$user->emailnotifyattn = 1;
|
||||
|
@ -683,6 +683,10 @@ function mail_notify_fave(User $rcpt, Profile $sender, Notice $notice)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$rcpt->getPref('notify', 'email_fave', 1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$bestname = $profile->getBestName();
|
||||
|
||||
common_switch_locale($rcpt->language);
|
||||
|
@ -25,6 +25,8 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
*/
|
||||
class FavoritePlugin extends ActivityHandlerPlugin
|
||||
{
|
||||
protected $notify_email_fave = 1;
|
||||
|
||||
public function tag()
|
||||
{
|
||||
return 'favorite';
|
||||
@ -47,6 +49,27 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
||||
return true;
|
||||
}
|
||||
|
||||
public function onStartUpgrade()
|
||||
{
|
||||
// This is a migration feature that will make sure we move
|
||||
// certain User preferences to the Profile_prefs table.
|
||||
// Introduced after commit b5fd2a048fc621ea05d756caba17275ab3dd0af4
|
||||
// on Sun Jul 13 16:30:37 2014 +0200
|
||||
$user = new User();
|
||||
$user->whereAdd('emailnotifyfav IS NOT NULL');
|
||||
if ($user->find()) {
|
||||
printfnq("Detected old User table (emailnotifyfav IS NOT NULL). Moving 'emailnotifyfav' property to Profile_prefs...");
|
||||
// Make sure we have our own tables setup properly
|
||||
while ($user->fetch()) {
|
||||
$user->setPref('email', 'notify_fave', $user->emailnotifyfav);
|
||||
$orig = clone($user);
|
||||
$user->emailnotifyfav = 'null'; // flag this preference as migrated
|
||||
$user->update($orig);
|
||||
}
|
||||
printfnq("DONE.\n");
|
||||
}
|
||||
}
|
||||
|
||||
public function onEndUpgrade()
|
||||
{
|
||||
printfnq("Ensuring all faves have a URI...");
|
||||
@ -198,7 +221,7 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
||||
foreach ($mentioned_ids as $id) {
|
||||
$mentioned = User::getKV('id', $id);
|
||||
if ($mentioned instanceof User && $mentioned->id != $stored->profile_id
|
||||
&& $mentioned->email && $mentioned->emailnotifyfav) { // do we have an email, and does user want it?
|
||||
&& $mentioned->email && $mentioned->getPref('email', 'notify_fave', $this->notify_email_fave)) { // do we have an email, and does user want it?
|
||||
mail_notify_fave($mentioned, $stored->getProfile(), $stored->getParent());
|
||||
}
|
||||
}
|
||||
@ -390,6 +413,41 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
||||
$supported = $supported || $cmd instanceof FavCommand;
|
||||
}
|
||||
|
||||
// Form stuff (settings etc.)
|
||||
|
||||
public function onEndEmailFormData(Action $action, Profile $scoped)
|
||||
{
|
||||
// getConfigData will fall back on systemwide default
|
||||
// and we only wish to save numerical true or false.
|
||||
$emailfave = $scoped->getPref('email', 'notify_fave', $this->notify_email_fave) ? 1 : 0;
|
||||
|
||||
$action->elementStart('li');
|
||||
$action->checkbox('email-notify_fave',
|
||||
// TRANS: Checkbox label in e-mail preferences form.
|
||||
_('Send me email when someone adds my notice as a favorite.'),
|
||||
$emailfave);
|
||||
$action->elementEnd('li');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function onStartEmailSaveForm(Action $action, Profile $scoped)
|
||||
{
|
||||
$emailfave = $action->boolean('email-notify_fave') ? 1 : 0;
|
||||
try {
|
||||
if ($emailfave == $scoped->getPref('email', 'notify_fave')) {
|
||||
// No need to update setting
|
||||
return true;
|
||||
}
|
||||
} catch (NoResultException $e) {
|
||||
// Apparently there's no previously stored setting, then continue to save it as it is now.
|
||||
}
|
||||
|
||||
$scoped->setPref('email', 'notify_fave', $emailfave);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Layout stuff
|
||||
|
||||
public function onEndPersonalGroupNav(Menu $menu, Profile $target, Profile $scoped=null)
|
||||
|
@ -162,12 +162,10 @@ class ApiFavoriteCreateAction extends ApiAuthAction
|
||||
function notify($fave, $notice, $user)
|
||||
{
|
||||
$other = User::getKV('id', $notice->profile_id);
|
||||
if ($other && $other->id != $user->id) {
|
||||
if ($other->email && $other->emailnotifyfav) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
if ($other && $other->id != $user->id && !empty($other->email)) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
|
||||
mail_notify_fave($other, $user->getProfile(), $notice);
|
||||
}
|
||||
mail_notify_fave($other, $user->getProfile(), $notice);
|
||||
// XXX: notify by IM
|
||||
// XXX: notify by SMS
|
||||
}
|
||||
|
@ -361,12 +361,10 @@ class AtompubfavoritefeedAction extends ApiAuthAction
|
||||
function notify($fave, $notice, $user)
|
||||
{
|
||||
$other = User::getKV('id', $notice->profile_id);
|
||||
if ($other && $other->id != $user->id) {
|
||||
if ($other->email && $other->emailnotifyfav) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
if ($other && $other->id != $user->id && !empty($other->email)) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
|
||||
mail_notify_fave($other, $user->getProfile(), $notice);
|
||||
}
|
||||
mail_notify_fave($other, $user->getProfile(), $notice);
|
||||
// XXX: notify by IM
|
||||
// XXX: notify by SMS
|
||||
}
|
||||
|
@ -38,12 +38,10 @@ class FavCommand extends Command
|
||||
|
||||
$other = User::getKV('id', $notice->profile_id);
|
||||
|
||||
if ($other && $other->id != $this->user->id) {
|
||||
if ($other->email && $other->emailnotifyfav) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
if ($other && $other->id != $this->user->id && !empty($other->email)) {
|
||||
require_once INSTALLDIR.'/lib/mail.php';
|
||||
|
||||
mail_notify_fave($other, $this->user->getProfile(), $notice);
|
||||
}
|
||||
mail_notify_fave($other, $this->user->getProfile(), $notice);
|
||||
}
|
||||
|
||||
Fave::blowCacheForProfileId($this->user->id);
|
||||
|
Loading…
Reference in New Issue
Block a user