$inv->inv_email = $invEmail; } $inv->inv_message = $mesg; if (!$err) { $inv->send(); $msg = "Your invitation has been sent."; } } break; case 'accept': $inv = Invitation::load($_GET['group_InvID']); $inv->accept(); header("Location: " . $base_url . "/groupmembers.php?action=join&gid=" . $inv->inv_collection_id); break; case 'deny': $inv = Invitation::load($_GET['group_InvID']); $inv->deny(); $msg = "Your denial has been sent to the group owner."; } } $header =& new Template(CURRENT_THEME_FSPATH . "/header.tpl"); $header->set('user_name', $user->first_name . ' ' . $user->last_name); $left_page =& new Template(CURRENT_THEME_FSPATH . "/left_page.tpl"); $left_page->set('img_path', $img_path); $center_content =& new Template(CURRENT_THEME_FSPATH . "/groupinvite.tpl"); $center_content->set('content_details', $content_details); $center_content->set('user_details', $user_details); $center_content->set('group_id', $group_details['id']); $center_content->set('group_title', $group_details['title']); $center_content->set('message', $msg); $center_content->set('error', $err);
private function handleGET_join($request_data) { require_once "api/Activities/Activities.php"; global $error_msg; if (PA::$login_uid && !empty($this->shared_data['group_info'])) { $group = $this->shared_data['group_info']; if (!Group::member_exists((int) $request_data['gid'], (int) PA::$login_uid)) { $user = PA::$login_user; $login_name = $user->login_name; $group_invitation_id = !empty($request_data['GInvID']) ? $request_data['GInvID'] : null; try { $user_joined = $group->join((int) PA::$login_uid, $user->email, $group_invitation_id); // for rivers of people $activity = 'group_joined'; //for rivers of people $activity_extra['info'] = $login_name . ' joined a new group'; $activity_extra['group_name'] = $group->title; $activity_extra['group_id'] = $request_data['gid']; $extra = serialize($activity_extra); $object = $request_data['gid']; Activities::save(PA::$login_uid, $activity, $object, $extra); if (!empty($group_invitation_id)) { // if group is joined through group invitation $Ginv = Invitation::load($group_invitation_id); $gid = $Ginv->inv_collection_id; $user_obj = new User(); $user_obj->load((int) $Ginv->user_id); $group = ContentCollection::load_collection((int) $gid, $Ginv->user_id); $user_type = Group::get_user_type($user_obj->user_id, $gid); if ($group->reg_type == REG_MODERATED && $user_type == OWNER) { $group->collection_id = $gid; $group->approve(PA::$login_uid, 'user'); } $user_accepting_ginv_obj = new User(); $user_accepting_ginv_obj->load((int) PA::$login_uid); $Ginv->inv_user_id = PA::$login_uid; PANotify::send("invite_accept_group", $user_obj, $user_accepting_ginv_obj, $Ginv); } } catch (PAException $e) { if ($e->code == GROUP_NOT_INVITED) { $error_msg = $e->message; // header("Location: groups_home.php"); // exit; } $error_msg = $e->message; } } else { $error_msg = sprintf(__("You are already a member of \"%s\""), stripslashes($group->title)); } if (@$user_joined) { // deal with TypedGroup Relations require_once "api/Entity/TypedGroupEntityRelation.php"; $uid = PA::$login_uid; $gid = $group->collection_id; $type = @$request_data['relation']; try { TypedGroupEntityRelation::set_relation($uid, $gid, $type); } catch (PAException $e) { $error_msg = $e->getMessage(); } $gid = (int) $request_data['gid']; if (!Group::member_exists($gid, (int) PA::$login_uid) && $group->reg_type == REG_MODERATED) { // if it is a manual join not an invited join $mail_type = 'group_join_request'; $error_msg = sprintf(__("Your request to join \"%s\" has been submitted to the owner of the group."), stripslashes($group->title)); } else { $mail_type = 'group_join'; $error_msg = sprintf(__("You have joined \"%s\" successfully."), stripslashes($group->title)); } PANotify::send($mail_type, $group, PA::$login_user, array()); if ($type == 'child') { // if user type == child remove LoginUser and GroupMember roles PA::$login_user->delete_user_role(); // then assign 'Child' role only $_extra = serialize(array('user' => false, 'network' => false, 'groups' => array($gid))); $user_roles[] = array('role_id' => CHILD_MEMBER_ROLE, 'extra' => $_extra); PA::$login_user->set_user_role($user_roles); } } } else { // redirect to login $msg = urlencode(__("You need to be logged in to join a group.")); header("Location: " . PA::$url . "/login.php?" . $msg . "&return=" . urlencode($_SERVER['REDIRECT_URL'] . '?' . @$_SERVER['REDIRECT_QUERY_STRING'])); } }
$error = TRUE; print $msg; } if (!empty($gid)) { header("Location: " . PA::$url . PA_ROUTE_GROUP . "/gid={$gid}&action=join&GInvID={$group_invitation_id}"); } exit; } if (!empty($_GET['InvID'])) { $invitation_id = $_GET['InvID']; try { $new_invite = new Invitation(); $new_invite->inv_id = $invitation_id; $new_invite->inv_user_id = $_SESSION['user']['id']; $new_invite->accept(); $inv_obj = Invitation::load($invitation_id); $user_obj = new User(); $user_obj->load((int) $inv_obj->user_id); $user_accepting_inv_obj = new User(); $user_accepting_inv_obj->load((int) $_SESSION['user']['id']); $relation_type_id = Relation::get_relation((int) $inv_obj->user_id, (int) $user_accepting_inv_obj->user_id, PA::$network_info->network_id); $relation_type = Relation::lookup_relation_type($relation_type_id); $new_invite->inv_relation_type = $relation_type; PANotify::send("invitation_accept", $user_obj, $user_accepting_inv_obj, $new_invite); if (!Network::member_exists(PA::$network_info->network_id, (int) $_SESSION['user']['id'])) { Network::join(PA::$network_info->network_id, $_SESSION['user']['id']); PANotify::send("network_join", PA::$network_info, $user_accepting_inv_obj, array()); } header("Location: " . PA::$url . PA_ROUTE_USER_PRIVATE . '/' . "msg_id=7016"); exit; } catch (CNException $e) {
public static function validate_group_invitation_id($invitation_id) { Logger::log("Enter: Invitation::validate_invitation_id() | Args: \$invitation_id = {$invitation_id}"); $valid = Invitation::validate_invitation_id($invitation_id); if (!$valid) { return false; } //get collection_id $Ginv = Invitation::load($invitation_id); //find if group is deleted or not $g = Group::load_group_by_id($Ginv->inv_collection_id); if (!$g) { return false; } //if we have come this far it means invitaion id is valid and group is active Logger::log("Exit: Invitation::validate_invitation_id() | Args: \$invitation_id = {$invitation_id}"); return true; }
$is_valid_ginv = Invitation::validate_group_invitation_id($group_invitation_id); if (!$is_valid_ginv) { $msg = 3001; } } catch (PAException $e) { $inv_error = "{$e->message}"; } if (empty($msg)) { //if group invitation is valid, and no error yet try { $new_invite = new Invitation(); $new_invite->inv_id = $group_invitation_id; $new_invite->inv_user_id = $newuser->user_id; $new_invite->accept(); //get collection_id $Ginv = Invitation::load($group_invitation_id); $gid = $Ginv->inv_collection_id; } catch (PAException $e) { $inv_error = "{$e->message}"; } $redirect_url = "group.php?gid={$gid}&action=join&GInvID={$group_invitation_id}"; } else { //else redirect registered user to its page. $redirect_url = "user.php?msg_id=7014"; } // end of if group invitation is valid } else { $redirect_url = "user.php?msg_id=7014"; } } header("Location: {$base_url}/{$redirect_url}");
function handle_join() { $error_inv = false; $invitation_id = isset($_REQUEST['InvID']) ? $_REQUEST['InvID'] : null; $group_invitation_id = isset($_REQUEST['GInvID']) ? $_REQUEST['GInvID'] : null; $mother_network_info = Network::get_mothership_info(); $extra = unserialize($mother_network_info->extra); if (!$this->reg_user->register($_POST, PA::$network_info)) { // registration failed return; } // If the user is joining a network other than the if ($mother_network_info->network_id != PA::$network_info->network_id) { Network::join(1, $this->reg_user->newuser->user_id, NETWORK_MEMBER); } if ($extra['email_validation'] == NET_NO || $this->silent) { // silent registration - no email validation! // Success! if (!$this->silent) { register_session($this->reg_user->newuser->login_name, $this->reg_user->newuser->user_id, $this->reg_user->newuser->role, $this->reg_user->newuser->first_name, $this->reg_user->newuser->last_name, $this->reg_user->newuser->email, $this->reg_user->newuser->picture); $_SESSION['login_source'] = 'password'; // password recently entered, so enable access to edit profile PANotify::send("new_user_registered", PA::$network_info, $this->reg_user->newuser, array()); } if ($invitation_id) { // if an invitation to join a network $this->inv_error = ""; $is_valid = Invitation::validate_invitation_id($invitation_id); if (!$is_valid) { $msg = 7017; // invalid network invitation } if (empty($msg)) { try { // try to except invitation $new_invite = new Invitation(); $new_invite->inv_id = $invitation_id; $new_invite->inv_user_id = $this->reg_user->newuser->user_id; $new_invite->accept(); $inv_obj = Invitation::load($invitation_id); $user_obj = new User(); $user_obj->load((int) $inv_obj->user_id); //if invitation is for private network if (PA::$network_info->type == PRIVATE_NETWORK_TYPE) { $user_type = NULL; if (PA::$network_info->owner_id == $inv_obj->user_id) { $user_type = NETWORK_MEMBER; } Network::join(PA::$network_info->network_id, $this->reg_user->newuser->user_id, $user_type); } $msg = 7016; $relation_type = null; $relationship_level = 2; //default relation level id is 2 for friend try { $relation_type_id = Relation::get_relation((int) $inv_obj->user_id, (int) $this->reg_user->newuser->user_id, PA::$network_info->network_id); } catch (PAException $e) { Relation::add_relation((int) $inv_obj->user_id, (int) $this->reg_user->newuser->user_id, $relationship_level, PA::$network_info->address, PA::$network_info->network_id, NULL, NULL, NULL, true, APPROVED); $relation_type = Relation::lookup_relation_type($relation_type_id); } $new_invite->inv_relation_type = $relation_type; if (!$this->silent) { PANotify::send("invitation_accept", $user_obj, $this->reg_user->newuser, $new_invite); } } catch (PAException $e) { $this->inv_error = $e->message; $this->reg_user->msg = "{$e->message}"; $error_inv = TRUE; } if ($error_inv == TRUE) { // if invitation fails, then do login again header("Location: " . PA::$url . "/login.php?msg=" . $this->reg_user->msg . "&return={$return_url}"); exit; } } $redirect_url = PA_ROUTE_HOME_PAGE . '/msg=' . $msg; } else { if ($group_invitation_id) { // if an invitation to join a group // User registration is in response to a group invitation, so // now that the user is registered, handle the group invitation. try { $is_valid_ginv = Invitation::validate_group_invitation_id($group_invitation_id); if (!$is_valid_ginv) { $msg = 3001; } } catch (PAException $e) { $this->inv_error = "{$e->message}"; } if (empty($msg)) { //if group invitation is valid, and no error yet try { $new_invite = new Invitation(); $new_invite->inv_id = $group_invitation_id; $new_invite->inv_user_id = $this->reg_user->newuser->user_id; $new_invite->accept(); //get collection_id $Ginv = Invitation::load($group_invitation_id); $gid = $Ginv->inv_collection_id; $relationship_level = 2; //default relation level id is 2 for friend try { $relation_type_id = Relation::get_relation((int) $Ginv->user_id, (int) $this->reg_user->newuser->user_id, PA::$network_info->network_id); } catch (PAException $e) { Relation::add_relation((int) $Ginv->user_id, (int) $this->reg_user->newuser->user_id, $relationship_level, PA::$network_info->address, PA::$network_info->network_id, NULL, NULL, NULL, true, APPROVED); Relation::add_relation((int) $this->reg_user->newuser->user_id, (int) $Ginv->user_id, $relationship_level, PA::$network_info->address, PA::$network_info->network_id, NULL, NULL, NULL, true, APPROVED); } } catch (PAException $e) { $this->reg_user->msg = "{$e->message}"; $this->reg_user->error = TRUE; print $this->reg_user->msg; } $redirect_url = PA_ROUTE_GROUP . "/gid={$gid}&action=join&GInvID={$group_invitation_id}"; } else { //else redirect registered user to its page. $redirect_url = PA_ROUTE_USER_PRIVATE . '/' . "msg_id={$msg}"; } // end of if group invitation is valid } } if (empty($redirect_url)) { // if no url is set yet // not a group invitation, so redirect to private user page when done $msg = 5003; $redirect_url = PA_ROUTE_USER_PRIVATE . '/' . "msg_id={$msg}"; } header("Location: " . PA::$url . $redirect_url); exit; } else { $expires = LONG_EXPIRES; // for 15 days $user = new User(); $user->login_name = $this->reg_user->newuser->login_name; $user->password = $this->reg_user->newuser->password; $token = $user->get_auth_token($expires); if (!empty($invitation_id)) { $invitation = '&InvID=' . $invitation_id; } else { if (!empty($group_invitation_id)) { $invitation = '&GInvID=' . $group_invitation_id; } else { $invitation = NULL; } } $user_type = NETWORK_WAITING_MEMBER; Network::join(PA::$network_info->network_id, $this->reg_user->newuser->user_id, $user_type); if (!$this->silent) { $activation_url = PA::$url . '/mail_action.php?action=activate&token=' . $token . $invitation; PAMail::send("activate_account", $this->reg_user->newuser, PA::$network_info, array('account.activation_url' => $activation_url)); } global $app; $er_msg = urlencode("Check your email for activation code."); $app->redirect(PA::$url . PA_ROUTE_SYSTEM_MESSAGE . "?show_msg=7013&msg_type=info&redirect_url=" . urlencode(PA::$url . '/' . FILE_LOGIN)); } //end if email validation is set }
function handle_join() { global $network_info; $invitation_id = isset($_REQUEST['InvID']) ? $_REQUEST['InvID'] : null; $group_invitation_id = isset($_REQUEST['GInvID']) ? $_REQUEST['GInvID'] : null; $mother_network_info = Network::get_mothership_info(); $extra = unserialize($mother_network_info->extra); if (!$this->reg_user->register($_POST, $network_info)) { // registration failed return; } if ($extra['email_validation'] == NET_NO) { // Success! register_session($this->reg_user->newuser->login_name, $this->reg_user->newuser->user_id, $this->reg_user->newuser->role, $this->reg_user->newuser->first_name, $this->reg_user->newuser->last_name, $this->reg_user->newuser->email, $this->reg_user->newuser->picture); if ($invitation_id) { // if an invitation to join a network $this->inv_error = ""; $is_valid = Invitation::validate_invitation_id($invitation_id); if (!$is_valid) { $msg = 7017; // invalid network invitation } if (empty($msg)) { try { // try to except invitation $new_invite = new Invitation(); $new_invite->inv_id = $invitation_id; $new_invite->inv_user_id = $this->reg_user->newuser->user_id; $new_invite->accept(); $inv_obj = Invitation::load($invitation_id); $user_obj = new User(); $user_obj->load((int) $inv_obj->user_id); //if invitation is for private network if ($network_info->type == PRIVATE_NETWORK_TYPE) { $user_type = NULL; if ($network_info->owner_id == $inv_obj->user_id) { $user_type = NETWORK_MEMBER; } Network::join($network_info->network_id, $this->reg_user->newuser->user_id, $user_type); } $msg = 7016; $relation_type_id = Relation::get_relation((int) $inv_obj->user_id, (int) $this->reg_user->newuser->user_id); $relation_type = Relation::lookup_relation_type($relation_type_id); $invited_user_url = url_for('user_blog', array('login' => $this->reg_user->newuser->login_name)); // data for passing in common mail method $array_of_data = array('first_name' => $this->reg_user->newuser->first_name, 'last_name' => $this->reg_user->newuser->last_name, 'user_name' => $this->reg_user->newuser->login_name, 'user_id' => $this->reg_user->newuser->user_id, 'invited_user_id' => $inv_obj->user_id, 'invited_user_name' => $user_obj->login_name, 'mail_type' => 'invite_accept_pa', 'to' => $user_obj->email, 'network_name' => $network_info->name, 'relation_type' => $relation_type, 'config_site_name' => PA::$site_name, 'invited_user_url' => $invited_user_url); auto_email_notification_members('invitation_accept', $array_of_data); } catch (PAException $e) { $this->inv_error = $e->message; $this->reg_user->msg = "{$e->message}"; $error_inv = TRUE; } if ($error_inv == TRUE) { // if invitation fails, then do login again header("Location: " . PA::$url . "/login.php?msg=" . $this->reg_user->msg . "&return={$return_url}"); exit; } } $redirect_url = 'homepage.php?msg=' . $msg; } else { if ($group_invitation_id) { // if an invitation to join a group // User registration is in response to a group invitation, so // now that the user is registered, handle the group invitation. try { $is_valid_ginv = Invitation::validate_group_invitation_id($group_invitation_id); if (!$is_valid_ginv) { $msg = 3001; } } catch (PAException $e) { $this->inv_error = "{$e->message}"; } if (empty($msg)) { //if group invitation is valid, and no error yet try { $new_invite = new Invitation(); $new_invite->inv_id = $group_invitation_id; $new_invite->inv_user_id = $this->reg_user->newuser->user_id; $new_invite->accept(); //get collection_id $Ginv = Invitation::load($group_invitation_id); $gid = $Ginv->inv_collection_id; } catch (PAException $e) { $this->reg_user->msg = "{$e->message}"; $this->reg_user->error = TRUE; print $this->reg_user->msg; } $redirect_url = "group.php?gid={$gid}&action=join&GInvID={$group_invitation_id}"; } else { //else redirect registered user to its page. $redirect_url = "user.php?msg_id={$msg}"; } // end of if group invitation is valid } } if (empty($redirect_url)) { // if no url is set yet // not a group invitation, so redirect to private user page when done $redirect_url = "user.php"; } header("Location: " . PA::$url . "/{$redirect_url}"); exit; } else { $expires = LONG_EXPIRES; // for 15 days $user = new User(); $user->login_name = $this->reg_user->newuser->login_name; $user->password = $this->reg_user->newuser->password; $token = $user->get_auth_token($expires); if (!empty($invitation_id)) { $invitation = '&InvID=' . $invitation_id; } else { if (!empty($group_invitation_id)) { $invitation = '&GInvID=' . $group_invitation_id; } else { $invitation = NULL; } } $name = $user->login_name; $activation_url = PA::$url . '/mail_action.php?action=activate&token=' . $token . $invitation; $subject = 'Hi ' . $this->reg_user->newuser->login_name . '! Please activate your ' . PA::$site_name . ' account.'; $message = "Hi {$name} , \n Activate your people aggregator account by clicking the following link: \n {$activation_url}"; $to = $this->reg_user->newuser->email; $mail_type = 'activate_account'; $array_of_data = array('subject' => $subject, 'message' => $message); // send mail $check = pa_mail($to, $mail_type, $array_of_data); // redirect to home page. header("Location: " . PA::$url . "/homepage.php?msg=7013"); exit; } //end if email validation is set }
<?php require_once "../../global.php"; $inviteID = Filter::numeric($_POST['inviteID']); $invite = Invitation::load($inviteID); $response = Filter::alphanum($_POST['response']); if ($response == 'accept') { // add the user to the project if ($invite->getTrusted()) { $relationship = ProjectUser::TRUSTED; } else { $relationship = ProjectUser::MEMBER; } $pu = new ProjectUser(array('project_id' => $invite->getProjectID(), 'user_id' => $invite->getInviteeID(), 'relationship' => $relationship)); $pu->save(); // update the invite $invite->setResponse(Invitation::ACCEPTED); $invite->setDateResponded(date("Y-m-d H:i:s")); $invite->save(); // prep for logging $eventTypeID = 'accept_member_invitation'; $successMsg = 'You accepted the invitation.'; } else { // update the invite $invite->setResponse(Invitation::DECLINED); $invite->setDateResponded(date("Y-m-d H:i:s")); $invite->save(); // prep for logging $eventTypeID = 'decline_member_invitation'; $successMsg = 'You declined the invitation.'; }