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);
|
$user->emailnotifysub);
|
||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
$this->elementStart('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',
|
$this->checkbox('emailnotifymsg',
|
||||||
// TRANS: Checkbox label in e-mail preferences form.
|
// TRANS: Checkbox label in e-mail preferences form.
|
||||||
_('Send me email when someone sends me a private message.'),
|
_('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))) {
|
if (Event::handle('StartEmailSaveForm', array($this, $this->scoped))) {
|
||||||
$emailnotifysub = $this->boolean('emailnotifysub');
|
$emailnotifysub = $this->boolean('emailnotifysub');
|
||||||
$emailnotifyfav = $this->boolean('emailnotifyfav');
|
|
||||||
$emailnotifymsg = $this->boolean('emailnotifymsg');
|
$emailnotifymsg = $this->boolean('emailnotifymsg');
|
||||||
$emailnotifynudge = $this->boolean('emailnotifynudge');
|
$emailnotifynudge = $this->boolean('emailnotifynudge');
|
||||||
$emailnotifyattn = $this->boolean('emailnotifyattn');
|
$emailnotifyattn = $this->boolean('emailnotifyattn');
|
||||||
@ -338,7 +330,6 @@ class EmailsettingsAction extends SettingsAction
|
|||||||
$original = clone($user);
|
$original = clone($user);
|
||||||
|
|
||||||
$user->emailnotifysub = $emailnotifysub;
|
$user->emailnotifysub = $emailnotifysub;
|
||||||
$user->emailnotifyfav = $emailnotifyfav;
|
|
||||||
$user->emailnotifymsg = $emailnotifymsg;
|
$user->emailnotifymsg = $emailnotifymsg;
|
||||||
$user->emailnotifynudge = $emailnotifynudge;
|
$user->emailnotifynudge = $emailnotifynudge;
|
||||||
$user->emailnotifyattn = $emailnotifyattn;
|
$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.'),
|
'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'),
|
'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'),
|
'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'),
|
'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'),
|
'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'),
|
'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
|
// initially for sites using caching, since the initial encache
|
||||||
// doesn't know about the defaults in the database.
|
// doesn't know about the defaults in the database.
|
||||||
$user->emailnotifysub = 1;
|
$user->emailnotifysub = 1;
|
||||||
$user->emailnotifyfav = 1;
|
|
||||||
$user->emailnotifynudge = 1;
|
$user->emailnotifynudge = 1;
|
||||||
$user->emailnotifymsg = 1;
|
$user->emailnotifymsg = 1;
|
||||||
$user->emailnotifyattn = 1;
|
$user->emailnotifyattn = 1;
|
||||||
|
@ -683,6 +683,10 @@ function mail_notify_fave(User $rcpt, Profile $sender, Notice $notice)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$rcpt->getPref('notify', 'email_fave', 1)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$bestname = $profile->getBestName();
|
$bestname = $profile->getBestName();
|
||||||
|
|
||||||
common_switch_locale($rcpt->language);
|
common_switch_locale($rcpt->language);
|
||||||
|
@ -25,6 +25,8 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
|||||||
*/
|
*/
|
||||||
class FavoritePlugin extends ActivityHandlerPlugin
|
class FavoritePlugin extends ActivityHandlerPlugin
|
||||||
{
|
{
|
||||||
|
protected $notify_email_fave = 1;
|
||||||
|
|
||||||
public function tag()
|
public function tag()
|
||||||
{
|
{
|
||||||
return 'favorite';
|
return 'favorite';
|
||||||
@ -46,6 +48,27 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
|||||||
$schema->ensureTable('fave', Fave::schemaDef());
|
$schema->ensureTable('fave', Fave::schemaDef());
|
||||||
return true;
|
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()
|
public function onEndUpgrade()
|
||||||
{
|
{
|
||||||
@ -198,7 +221,7 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
|||||||
foreach ($mentioned_ids as $id) {
|
foreach ($mentioned_ids as $id) {
|
||||||
$mentioned = User::getKV('id', $id);
|
$mentioned = User::getKV('id', $id);
|
||||||
if ($mentioned instanceof User && $mentioned->id != $stored->profile_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());
|
mail_notify_fave($mentioned, $stored->getProfile(), $stored->getParent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -390,6 +413,41 @@ class FavoritePlugin extends ActivityHandlerPlugin
|
|||||||
$supported = $supported || $cmd instanceof FavCommand;
|
$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
|
// Layout stuff
|
||||||
|
|
||||||
public function onEndPersonalGroupNav(Menu $menu, Profile $target, Profile $scoped=null)
|
public function onEndPersonalGroupNav(Menu $menu, Profile $target, Profile $scoped=null)
|
||||||
|
@ -162,12 +162,10 @@ class ApiFavoriteCreateAction extends ApiAuthAction
|
|||||||
function notify($fave, $notice, $user)
|
function notify($fave, $notice, $user)
|
||||||
{
|
{
|
||||||
$other = User::getKV('id', $notice->profile_id);
|
$other = User::getKV('id', $notice->profile_id);
|
||||||
if ($other && $other->id != $user->id) {
|
if ($other && $other->id != $user->id && !empty($other->email)) {
|
||||||
if ($other->email && $other->emailnotifyfav) {
|
require_once INSTALLDIR.'/lib/mail.php';
|
||||||
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 IM
|
||||||
// XXX: notify by SMS
|
// XXX: notify by SMS
|
||||||
}
|
}
|
||||||
|
@ -361,12 +361,10 @@ class AtompubfavoritefeedAction extends ApiAuthAction
|
|||||||
function notify($fave, $notice, $user)
|
function notify($fave, $notice, $user)
|
||||||
{
|
{
|
||||||
$other = User::getKV('id', $notice->profile_id);
|
$other = User::getKV('id', $notice->profile_id);
|
||||||
if ($other && $other->id != $user->id) {
|
if ($other && $other->id != $user->id && !empty($other->email)) {
|
||||||
if ($other->email && $other->emailnotifyfav) {
|
require_once INSTALLDIR.'/lib/mail.php';
|
||||||
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 IM
|
||||||
// XXX: notify by SMS
|
// XXX: notify by SMS
|
||||||
}
|
}
|
||||||
|
@ -38,12 +38,10 @@ class FavCommand extends Command
|
|||||||
|
|
||||||
$other = User::getKV('id', $notice->profile_id);
|
$other = User::getKV('id', $notice->profile_id);
|
||||||
|
|
||||||
if ($other && $other->id != $this->user->id) {
|
if ($other && $other->id != $this->user->id && !empty($other->email)) {
|
||||||
if ($other->email && $other->emailnotifyfav) {
|
require_once INSTALLDIR.'/lib/mail.php';
|
||||||
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);
|
Fave::blowCacheForProfileId($this->user->id);
|
||||||
|
Loading…
Reference in New Issue
Block a user