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);
     }
 }
Example #3
0
 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();
 }
Example #6
0
 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();
 }
Example #7
0
 /**
  * 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();
 }