123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- /**
- * Invite a user to join a group
- *
- * @package ElggGroups
- */
- elgg_make_sticky_form('group_invite');
- $logged_in_user = elgg_get_logged_in_user_entity();
- $user_guids = get_input("user_guid");
- if (!empty($user_guids) && !is_array($user_guids)) {
- $user_guids = array($user_guids);
- }
- $adding = false;
- if (elgg_is_admin_logged_in()) {
- // add all users?
- if (get_input("all_users") == "yes") {
- $site = elgg_get_site_entity();
-
- $options = array(
- "limit" => false,
- "callback" => "group_tools_guid_only_callback"
- );
-
- $user_guids = $site->getMembers($options);
- }
-
- // add users directly?
- if (get_input("submit") == elgg_echo("group_tools:add_users")) {
- $adding = true;
- }
- }
- $group_guid = (int) get_input("group_guid");
- $text = get_input("comment");
- $emails = get_input("user_guid_email");
- if (!empty($emails) && !is_array($emails)) {
- $emails = array($emails);
- }
- $csv = get_uploaded_file("csv");
- if (get_input("resend") == "yes") {
- $resend = true;
- } else {
- $resend = false;
- }
- $group = get_entity($group_guid);
- if ((!empty($user_guids) || !empty($emails) || !empty($csv)) && !empty($group)) {
- if (($group instanceof ElggGroup) && ($group->canEdit() || group_tools_allow_members_invite($group))) {
- // show hidden (unvalidated) users
- $hidden = access_get_show_hidden_status();
- access_show_hidden_entities(true);
-
- // counters
- $already_invited = 0;
- $invited = 0;
- $member = 0;
- $join = 0;
-
- // invite existing users
- if (!empty($user_guids)) {
- if (!$adding) {
- // invite users
- foreach ($user_guids as $u_id) {
- $user = get_user($u_id);
- if (!empty($user)) {
- if (!$group->isMember($user)) {
- if (!check_entity_relationship($group->getGUID(), "invited", $user->getGUID()) || $resend) {
- if (group_tools_invite_user($group, $user, $text, $resend)) {
- $invited++;
- }
- } else {
- // user was already invited
- $already_invited++;
- }
- } else {
- $member++;
- }
- }
- }
- } else {
- // add users directly
- foreach ($user_guids as $u_id) {
- $user = get_user($u_id);
- if (!empty($user)) {
- if (!$group->isMember($user)) {
- if (group_tools_add_user($group, $user, $text)) {
- $join++;
- }
- } else {
- $member++;
- }
- }
- }
- }
- }
-
- // Invite member by e-mail address
- if (!empty($emails)) {
- foreach ($emails as $email) {
- $invite_result = group_tools_invite_email($group, $email, $text, $resend);
- if ($invite_result === true) {
- $invited++;
- } elseif ($invite_result === null) {
- $already_invited++;
- }
- }
- }
-
- // invite from csv
- if (!empty($csv)) {
- $file_location = $_FILES["csv"]["tmp_name"];
- $fh = fopen($file_location, "r");
-
- if (!empty($fh)) {
- while (($data = fgetcsv($fh, 0, ";")) !== false) {
- /*
- * data structure
- * data[0] => displayname
- * data[1] => e-mail address
- */
- $email = "";
- if (isset($data[1])) {
- $email = trim($data[1]);
- }
-
- if (!empty($email) && is_email_address($email)) {
- $users = get_user_by_email($email);
- if (!empty($users)) {
- // found a user with this email on the site, so invite (or add)
- $user = $users[0];
-
- if (!$group->isMember($user)) {
- if (!$adding) {
- if (!check_entity_relationship($group->getGUID(), "invited", $user->getGUID()) || $resend) {
- // invite user
- if (group_tools_invite_user($group, $user, $text, $resend)) {
- $invited++;
- }
- } else {
- // user was already invited
- $already_invited++;
- }
- } else {
- if (group_tools_add_user($group, $user, $text)) {
- $join++;
- }
- }
- } else {
- $member++;
- }
- } else {
- // user not found so invite based on email address
- $invite_result = group_tools_invite_email($group, $email, $text, $resend);
-
- if ($invite_result === true) {
- $invited++;
- } elseif ($invite_result === null) {
- $already_invited++;
- }
- }
- }
- }
- }
- }
-
- // restore hidden users
- access_show_hidden_entities($hidden);
-
- // which message to show
- if (!empty($invited) || !empty($join)) {
- elgg_clear_sticky_form('group_invite');
-
- if (!$adding) {
- system_message(elgg_echo("group_tools:action:invite:success:invite", array($invited, $already_invited, $member)));
- } else {
- system_message(elgg_echo("group_tools:action:invite:success:add", array($join, $already_invited, $member)));
- }
- } else {
- if (!$adding) {
- register_error(elgg_echo("group_tools:action:invite:error:invite", array($already_invited, $member)));
- } else {
- register_error(elgg_echo("group_tools:action:invite:error:add", array($already_invited, $member)));
- }
- }
- } else {
- register_error(elgg_echo("group_tools:action:error:edit"));
- }
- } else {
- register_error(elgg_echo("group_tools:action:error:input"));
- }
- forward(REFERER);
|