X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fsubscribe.php;h=9a1d43fa5df4786b5f97f61013575e5b51c481e2;hb=4aedce6864eb27a0c37b3dcae22fee0aa16ae537;hp=aab6c4b1557d7cd5a599d3d12b14c694a6293f88;hpb=b6cfd2dffeeb733f07818db5f4ce11d4b3d51771;p=quix0rs-gnu-social.git diff --git a/actions/subscribe.php b/actions/subscribe.php index aab6c4b155..9a1d43fa5d 100644 --- a/actions/subscribe.php +++ b/actions/subscribe.php @@ -1,61 +1,98 @@ . */ -if (!defined('LACONICA')) { exit(1) } +if (!defined('LACONICA')) { exit(1); } class SubscribeAction extends Action { function handle($args) { parent::handle($args); - + if (!common_logged_in()) { common_user_error(_t('Not logged in.')); return; } - + $other_nickname = $this->arg('subscribeto'); $other = User::staticGet('nickname', $other_nickname); - + if (!$other) { common_user_error(_t('No such user.')); return; } - + $user = common_current_user(); if ($user->isSubscribed($other)) { common_user_error(_t('Already subscribed!.')); return; } - + $sub = new Subscription(); $sub->subscriber = $user->id; $sub->subscribed = $other->id; - - $sub->created = time(); - + + $sub->created = DB_DataObject_Cast::dateTime(); # current time + if (!$sub->insert()) { common_server_error(_t('Couldn\'t create subscription.')); return; } - - common_redirect(common_local_url('all', array('nickname' => - $user->nickname))); + + $this->notify($other, $user); + + common_redirect(common_local_url('subscriptions', array('nickname' => + $user->nickname))); + } + + function notify($listenee, $listener) { + # XXX: add other notifications (Jabber, SMS) here + # XXX: queue this and handle it offline + $this->notify_email($listenee, $listener); + } + + function notify_email($listenee, $listener) { + if ($listenee->email) { + global $config; + $profile = $listenee->getProfile(); + $other = $listener->getProfile(); + $name = $profile->getBestName(); + $other_name = $other->getBestName(); + $recipients = $listenee->email; + $headers['From'] = mail_notify_from(); + $headers['To'] = $name . ' <' . $listenee->email . '>'; + $headers['Subject'] = $other_name . _t(' is now listening to your notices on ') . $config['site']['name']; + + $body = + ($other->fullname) ? + ($other->fullname . ' (' . $other->nickname . ')') : $other->nickname; + + $body .= _t(' is now listening to your notices on ') . $config['site']['name'] . '.'; + $body .= "\n\n"; + $body .= "\t".$other->profileurl; + $body .= "\n\n"; + $body .= _t('Faithfully yours, '); + $body .= "\n"; + $body .= $config['site']['name']; + $body .= "\n"; + + mail_send($recipients, $headers, $body); + } } } \ No newline at end of file