/** * Subscribe a person to emails on enrollment * * @param integer $gidNumber * @param integer $userid * @return void */ public function onGroupUserEnrollment($gidNumber, $userid) { // get group $group = \Hubzero\User\Group::getInstance($gidNumber); // is auto-subscribe on for discussion forum $autosubscribe = $group->get('discussion_email_autosubscribe'); // log variable Log::debug('$discussion_email_autosubscribe' . $autosubscribe); // if were not auto-subscribed then stop if (!$autosubscribe) { return; } include_once __DIR__ . DS . 'models' . DS . 'memberoption.php'; // see if they've already got something, they shouldn't, but you never know $row = Plugins\Groups\Memberoptions\Models\Memberoption::oneByUserAndOption($gidNumber, $userid, 'receive-forum-email'); if ($row->get('id')) { // They already have a record, so ignore. return; } $row->set('gidNumber', $gidNumber); $row->set('userid', $userid); $row->set('optionname', 'receive-forum-email'); $row->set('optionvalue', 1); $row->save(); }
/** * Unsubscribe user from forum emails * * @return void */ public function unsubscribe() { $rtrn = 'index.php?option=com_groups&cn=' . $this->group->get('cn') . '&active=' . $this->_name; // get the token $token = Request::getCmd('t', ''); //token is required if ($token == '') { App::redirect(Route::url($rtrn), Lang::txt('PLG_GROUPS_FORUM_UNSUBSCRIBE_MISSING_TOKEN'), 'error'); } // get the token lib $encryptor = new \Hubzero\Mail\Token(); // get token details $tokenDetails = $encryptor->decryptEmailToken($token); // make sure token details are good if (empty($tokenDetails) || !isset($tokenDetails[1]) || $this->group->get('gidNumber') != $tokenDetails[1]) { App::redirect(Route::url($rtrn), Lang::txt('PLG_GROUPS_FORUM_UNSUBSCRIBE_INVALID_TOKEN'), 'error'); } // neede member option lib include_once PATH_CORE . DS . 'plugins' . DS . 'groups' . DS . 'memberoptions' . DS . 'models' . DS . 'memberoption.php'; // Find the user's group settings, do they want to get email (0 or 1)? $groupMemberOption = Plugins\Groups\Memberoptions\Models\Memberoption::oneByUserAndOption($this->group->get('gidNumber'), $tokenDetails[0], 'receive-forum-email'); // mark that they dont want to be received anymore. $groupMemberOption->set('gidNumber', $this->group->get('gidNumber')); $groupMemberOption->set('userid', $tokenDetails[0]); $groupMemberOption->set('optionname', 'receive-forum-email'); $groupMemberOption->set('optionvalue', 0); // attempt to update if (!$groupMemberOption->save()) { App::redirect(Route::url($rtrn), Lang::txt('PLG_GROUPS_FORUM_UNSUBSCRIBE_UNABLE_TO_UNSUBSCRIBE'), 'error'); } // success App::redirect(Route::url($rtrn), Lang::txt('PLG_GROUPS_FORUM_UNSUBSCRIBE_SUCCESSFULLY_UNSUBSCRIBED')); }