* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+if (!defined('GNUSOCIAL')) { exit(1); }
// @todo XXX: Add documentation.
-class InviteAction extends CurrentUserDesignAction
+class InviteAction extends Action
{
var $mode = null;
var $error = null;
function sendInvitations()
{
if (Event::handle('StartSendInvitations', array(&$this))) {
-
// CSRF protection
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
foreach ($addresses as $email) {
$email = common_canonical_email($email);
- $other = User::staticGet('email', $email);
- if ($other) {
+ try {
+ // If this user is already registered, subscribe to it!
+ $other = Profile::getByEmail($email);
if ($user->isSubscribed($other)) {
$this->already[] = $other;
} else {
- subs_subscribe_to($user, $other);
- $this->subbed[] = $other;
+ try {
+ Subscription::ensureStart($profile, $other);
+ $this->subbed[] = $other;
+ } catch (Exception $e) {
+ // subscription failed, but keep working
+ common_debug('Invitation-based subscription failed: '.$e->getMessage());
+ }
}
- } else {
+ } catch (NoSuchUserException $e) {
+ // If email was not known, let's send an invite!
$this->sent[] = $email;
$this->sendInvitation($email, $user, $personal);
}
function showInvitationSuccess()
{
if (Event::handle('StartShowInvitationSuccess', array($this))) {
-
if ($this->already) {
// TRANS: Message displayed inviting users to use a StatusNet site while the inviting user
// TRANS: is already subscribed to one or more users with the given e-mail address(es).