public function build($runData) { // find all current applications $c = new Criteria(); $c->add("site_id", $runData->getTemp("site")->getSiteId()); $c->add("status", "pending"); $c->addOrderDescending("application_id"); $applications = DB_MemberApplicationPeer::instance()->select($c); $runData->contextAdd("applications", $applications); }
public function build($runData) { // get applications by a user $userId = $runData->getUserId(); // get all applications - criteria with join ;-) wooo! $c = new Criteria(); $c->add("user_id", $userId); $c->addJoin("site_id", "site.site_id"); $c->add("site.deleted", false); $apps = DB_MemberApplicationPeer::instance()->select($c); if (count($apps) > 0) { $runData->contextAdd("applications", $apps); } }
public function build($runData) { $site = $runData->getTemp("site"); $userId = $runData->getUserId(); $reason = null; if (!$runData->isUserAuthenticated()) { $reason = "not_logged"; } $settings = $site->getSettings(); if (!$settings->getAllowMembershipByApply()) { $reason = "not_enabled"; $runData->contextAdd("reason", $reason); return; } // check if not a member already $c = new Criteria(); $c->add("site_id", $site->getSiteId()); $c->add("user_id", $userId); $a = DB_MemberPeer::instance()->selectOne($c); if ($a != null) { $reason = "already_member"; $runData->contextAdd("reason", $reason); return; } // see if there is already an application... $c = new Criteria(); $c->add("site_id", $site->getSiteId()); $c->add("user_id", $userId); $a = DB_MemberApplicationPeer::instance()->selectOne($c); if ($a != null) { $reason = "already_applied"; $runData->contextAdd("reason", $reason); return; } if ($reason !== null) { $runData->contextAdd("reason", $reason); } }
public function acceptApplicationEvent($runData) { $pl = $runData->getParameterList(); $userId = $pl->getParameterValue("user_id"); $site = $runData->getTemp("site"); $siteId = $site->getSiteId(); $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId); if ($user == null) { throw new ProcessException("Error"); } $type = $pl->getParameterValue("type"); $text = $pl->getParameterValue("text"); if ($type !== 'accept' && $type !== 'decline') { throw new ProcessException("Invalid action", "invalid_action"); } $c = new Criteria(); $c->add("user_id", $userId); $c->add("site_id", $siteId); $db = Database::connection(); $db->begin(); $application = DB_MemberApplicationPeer::instance()->selectOne($c); if ($application == null) { throw new ProcessException(_("This application does not exist (anymore)."), "no_application"); } if ($type == "accept") { // add to members $mem = new DB_Member(); $mem->setUserId($userId); $mem->setSiteId($siteId); $mem->setDateJoined(new ODate()); $mem->save(); $ml = new DB_MembershipLink(); $ml->setUserId($userId); $ml->setSiteId($site->getSiteId()); $ml->setDate(new ODate()); $ml->setType('APPLICATION_ACCEPTED'); $ml->setByUserId($runData->getUser()->getUserId()); $ml->save(); NotificationMaker::instance()->membershipApplicationAccepted($site, $user); } else { NotificationMaker::instance()->membershipApplicationDeclined($site, $user); } $application->setReply($text); if ($type == "accept") { $application->setStatus("accepted"); } else { $application->setStatus("declined"); } $application->save(); $db->commit(); }
public function removeApplicationEvent($runData) { $siteId = $runData->getParameterList()->getParameterValue("site_id"); $userId = $runData->getUserId(); $db = Database::connection(); $db->begin(); $c = new Criteria(); $c->add("user_id", $userId); $c->add("site_id", $siteId); DB_MemberApplicationPeer::instance()->delete($c); $db->commit(); }
public function applyByPasswordEvent($runData) { $site = $runData->getTemp("site"); $pl = $runData->getParameterList(); $comment = $pl->getParameterValue("comment"); $userId = $runData->getUserId(); $settings = $site->getSettings(); $db = Database::connection(); $db->begin(); if (!$settings->getAllowMembershipByPassword()) { throw new ProcessException(_("Applying is disabled for this site."), "not_enabled"); } $user = $runData->getUser(); if ($user == null) { throw new ProcessException(_("Sorry, you are not logged in. Anonymous users can not apply ;-)")); } // check for permissions WDPermissionManager::instance()->hasPermission("become_member", $user, $site); $c = new Criteria(); $c->add("site_id", $site->getSiteId()); $c->add("user_id", $userId); $a = DB_MemberPeer::instance()->selectOne($c); if ($a != null) { $runData->ajaxResponseAdd('status', 'already_member'); $runData->ajaxResponseAdd("message", _("You already are a member of this site.")); $db->commit(); return; } $password = $pl->getParameterValue("password"); if ($password === $settings->getMembershipPassword()) { // create member... // check if not >=10 members if ($site->getPrivate()) { $settings = $site->getSettings(); $maxMembers = $settings->getMaxPrivateMembers(); $c = new Criteria(); $c->add("site_id", $site->getSiteId()); $cmem = DB_MemberPeer::instance()->selectCount($c); if ($cmem >= $maxMembers) { throw new ProcessException(sprintf(_('Sorry, at the moment max %d member limit apply for private Wikis. The Site would have to be upgraded to allow more members.'), $maxMembers)); } } $mem = new DB_Member(); $mem->setUserId($userId); $mem->setSiteId($site->getSiteId()); $mem->setDateJoined(new ODate()); $mem->save(); $ml = new DB_MembershipLink(); $ml->setUserId($userId); $ml->setSiteId($site->getSiteId()); $ml->setDate(new ODate()); $ml->setType('BY_PASSWORD'); $ml->save(); $runData->ajaxResponseAdd("message", _("Congratulations! You are now a member of this site!")); // remove application (if any) and invitations $c = new Criteria(); $c->add("site_id", $site->getSiteId()); $c->add("user_id", $userId); DB_MemberApplicationPeer::instance()->delete($c); DB_MemberInvitationPeer::instance()->delete($c); AdminNotificationMaker::instance()->newMemberByPassword($site, $user); } else { $runData->ajaxResponseAdd('status', 'wrong_password'); $runData->ajaxResponseAdd("message", _("Sorry, wrong password...")); $db->commit(); return; } $db->commit(); }
/** * Marks the site as "deleted" and invalidates all the cache related to the site. * * @param unknown_type $runData */ public function deleteSiteEvent($runData) { $site = $runData->getTemp("site"); $user = $runData->getUser(); $c = new Criteria(); $c->add("user_id", $user->getUserId()); $c->add("site_id", $site->getSiteId()); $c->add("founder", true); $rel = DB_AdminPeer::instance()->selectOne($c); if (!$rel) { throw new ProcessException(_("Sorry, you have no permissions to delete this site.")); } $db = Database::connection(); $db->begin(); $oldUnixName = $site->getUnixName(); $site->setDeleted(true); // remove some data. $c = new Criteria(); $c->add('site_id', $site->getSiteId()); DB_AnonymousAbuseFlagPeer::instance()->delete($c); DB_DomainRedirectPeer::instance()->delete($c); DB_EmailInvitationPeer::instance()->delete($c); DB_MemberApplicationPeer::instance()->delete($c); DB_MemberInvitationPeer::instance()->delete($c); // now clear cache! $keys = array(); $keys[] = 'site..' . $site->getUnixName(); $keys[] = 'site_cd..' . $site->getCustomDomain(); $mc = OZONE::$memcache; foreach ($keys as $k) { $mc->delete($k); } $outdater = new Outdater(); $outdater->siteEvent('delete', $site); $outdater->siteEvent('sitewide_change', $site); // change site name!!! $site->setUnixName($site->getUnixName() . '..del..' . time()); $site->save(); // remove custom domain link // rename the files @rename(WIKIDOT_ROOT . '/web/files--sites/' . $oldUnixName, WIKIDOT_ROOT . '/web/files--sites/' . $site->getUnixName()); // delete custom domain link if ($site->getCustomDomain()) { @unlink(WIKIDOT_ROOT . '/web/custom--domains/' . $site->getCustomDomain()); $site->setCustomDomain(null); } $db->commit(); }