/** * 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; } }