Example #1
0
 /**
  * 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();
 }
Example #2
0
 /**
  * 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'));
 }