/** * This function should word atomic. * It requires .... feature in database. * However MySQL 3.x does not provide it! * * To make a membership request, one should be * a member first. * * User may use their existing profiles or create * a new profile when subscribing to new gnippets. */ function acceptMembershipRequest($mid, $sp = false) { _filter_var($mid); $gids = ''; // gnippet_ids to update $res =& $this->Database->getRow("SELECT member_name, profile_id FROM membership_requests WHERE member_id='{$mid}'", array(), 2); if (PEAR::isError($res)) { die($res->getMessage()); } if (sizeof($res) != 2) { die('Error No 41'); } else { if (!empty($res['member_name']) && empty($res['profile_id'])) { $n = $res['member_name']; $gids = ',' . $this->GroupID . ','; $q =& $this->Database->query("INSERT INTO memberships (membership_id, member_id, subscribed_on, member_name, website, blog, flickr, delicious, avatar, membership_name) VALUES (NULL,'{$mid}', NOW(),'{$n}','','','','','12', '')"); if (PEAR::isError($q)) { die($q->getMessage()); } if (!$q) { return false; } else { $q =& $this->Database->query("DELETE FROM membership_requests WHERE member_id='{$mid}'"); if (PEAR::isError($q)) { die($q->getMessage()); } } } elseif (!empty($res['profile_id']) && empty($res['member_name'])) { $gids = ',' . $this->GroupID . ','; $rr =& $this->Database->getRow("SELECT * FROM memberships WHERE membership_id='{$res['profile_id']}'", array(), 2); if (PEAR::isError($rr)) { die($rrr->getMessage()); } $q =& $this->Database->query("INSERT INTO memberships (membership_id, member_id, subscribed_on, member_name, website, blog, flickr, delicious, avatar, membership_name) VALUES (NULL,'{$rr["member_id"]}',NOW(),'{$rr["member_name"]}','{$rr["website"]}','{$rr["blog"]}','{$rr["flickr"]}','{$rr["delicious"]}','{$rr["avatar"]}','{$rr["membership_name"]}')"); if (PEAR::isError($q)) { die($q->getMessage()); } if (!$q) { return false; } else { $q =& $this->Database->query("DELETE FROM membership_requests WHERE AND member_id='{$mid}'"); if (PEAR::isError($q)) { die($q->getMessage()); } } } elseif ($sp) { $n = ''; $q =& $this->Database->query("INSERT INTO memberships (membership_id, member_id, subscribed_on, member_name, website, blog, flickr, delicious, avatar, membership_name) VALUES (NULL,'{$mid}', NOW(),'{$n}','','','','','12', '')"); if (PEAR::isError($q)) { die($q->getMessage()); } if (PEAR::isError($q)) { die($q->getMessage()); } if (!$q) { return false; } else { $q =& $this->Database->query("DELETE FROM membership_requests WHERE member_id='{$mid}'"); if (PEAR::isError($q)) { die($q->getMessage()); } } } else { die("Error No 14"); // not possible } } if ($q) { $uname = _getMemberUsername($mid); $u = new User($uname); $u->createProfile($this->GroupName); if (isset($_SESSION['valid_user']) && $_SESSION['valid_user'] == $uname) { updateUserLocations(); } return true; } else { return false; } }
function getComments($member_id) { _filter_var($member_id); // keeps track of duplicate entries // because we don't delete old entries, but show only // one of them, actually the last one $has_comment = array(); $comments_res = array(); // we'll return this $comments =& $this->Database->getAll("SELECT author_id, comment, added_on,comment_id FROM comments WHERE member_id = '{$member_id}' ORDER BY added_on DESC", array(), 2); if (PEAR::isError($comments)) { die($comments->getMessage()); } if (sizeof($comments) > 0) { $_now = date('Y-m-d H:i:s'); foreach ($comments as $i => $comment) { $user_id = $comment["author_id"]; // multiple comments allowed now, // because this is wall now //if(!in_array($user_id,$has_comment)) { $has_comment[] = $user_id; $username = _getMemberUsername($user_id); $user = new User($username); $usersnamesurname = $user->getNameSurname(); $usersicon = $user->getMiniIcon(); // from GeneralFunctions.php $timediff = getStyledDateDiff($comment['added_on'], $_now); $comments_res[$i]["author"] = $usersnamesurname; $comments_res[$i]["author_username"] = $username; $comments_res[$i]["comment"] = $comment["comment"]; $comments_res[$i]["icon"] = $usersicon; $comments_res[$i]["date"] = $timediff; $comments_res[$i]["id"] = $comment["comment_id"]; //} } } return $comments_res; }
break; case "talks": include 'includes/Page.TalksZZZZZ.class.php'; $talkspage = new TalksPage($group_name); $talks_strict_maillist = $group->moduleOptions_getTalksStrictMaillist(); $allmsgs = $talkspage->getAllMessagesCompact(); if ($allow_talks && ($access_isGroupMember || $open_talks) && !empty($allmsgs)) { $isok = true; $isok_content[] = array("Latest Topics", $allmsgs); } break; case "people": $members = $group->getMembers(); $html = ""; foreach ($members as $m) { $member_name = _getMemberUsername($m['member_id']); $u = new User($member_name); if (isset($_SESSION['valid_user']) && $member_name != $_SESSION['valid_user']) { $a = $u->getAvatarAsHTML($group_name, 15, false); } else { $a = $u->getAvatarAsHTML($group_name, 15, true); } $html .= "<a href=\"{$service_host}{$group_name}/people/{$member_name}\">{$a}</a>"; } $isok = true; $isok_content[] = array("Members", $html); break; case "blogs": default: include_once 'includes/Page.BlogsZZZZZ.class.php'; $blogspage = new BlogsPage($group_name);
/** * This function differs from others; * it does not use default to_name and to_email * functions. * It first tries to find out the admins of the group * because the mail will be sent to them.. */ function notifyJoining($group_title) { /** * First let's notify the admins */ $g = new Group($this->groupname); $admins = $g->getAdmins(); $skipper = false; if (!$admins || sizeof($admins) == 0) { $skipper = true; } if (!$skipper) { foreach ($admins as $admin) { $admins_user_id = $admin['member_id']; $admin_username = _getMemberUsername($admins_user_id); $admin_obj = new User($admin_username); $tmp_name = $admin_obj->getNameSurname($this->groupname); $tmp_email = $admin_obj->getEmail(); $this->AddAddress($tmp_email, $tmp_name); } $msg = ""; $msg .= "<p>Dear administrator of {$group_title},</p>"; $msg .= "\r\n\r\n"; $msg .= "<p>A new user <u>{$this->to_email}</u> has joined your group - <a href=\"http://grou.ps/{$this->groupname}\">http://grou.ps/{$this->groupname}</a></p>"; $msg .= $this->thanks; $this->Subject = "New Member"; $this->Body = $msg; } // TODO: Add logging features if (!$skipper && !$this->Send()) { $this->ClearAddresses(); return false; // an error has occurred } else { /** * Success, so it's time to * notify the user */ $this->ClearAddresses(); // no need to filter $group_title $nmsg = ""; $nmsg .= "<p>{$this->to_email}</p>"; $nmsg .= "\r\n\r\n"; $nmsg .= "<p>You have sucessfuly joined <u>{$group_title}</u>.</p>"; $nmsg .= $this->thanks; $this->Subject = "Your Joining Request APPROVED!"; $this->Body = $nmsg; $this->AddAddress($this->to_email, $this->to_name); // TODO: Add logging features if (!$this->Send()) { $this->ClearAddresses(); return false; } else { $this->ClearAddresses(); return true; } } }