public static function instance() { if (self::$instance == null) { self::$instance = new AdminNotificationMaker(); } return self::$instance; }
public function moderatorResignEvent($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_ModeratorPeer::instance()->delete($c); $site = DB_SitePeer::instance()->selectByPrimaryKey($siteId); $user = $runData->getUser(); AdminNotificationMaker::instance()->moderatorResigned($site, $user); $db->commit(); }
public function acceptEmailInvitationEvent($runData) { $pl = $runData->getParameterList(); $user = $runData->getUser(); $hash = $pl->getParameterValue("hash"); // get the invitation entry (if any) $c = new Criteria(); $c->add("hash", $hash); $c->add("accepted", false); $inv = DB_EmailInvitationPeer::instance()->selectOne($c); $runData->contextAdd("user", $user); if (!$inv) { throw new ProcessException(_("Sorry, no invitation can be found.")); } $site = DB_SitePeer::instance()->selectByPrimaryKey($inv->getSiteId()); // check if not a member already $c = new Criteria(); $c->add("user_id", $user->getUserId()); $c->add("site_id", $site->getSiteId()); $mem = DB_MemberPeer::instance()->selectOne($c); if ($mem) { throw new ProcessException(_("It seems you already are a member of this site! Congratulations anyway ;-)")); } // check if not > max _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)); } } // all should be fine at this point - add to members $db = Database::connection(); $db->begin(); $mem = new DB_Member(); $mem->setDateJoined(new ODate()); $mem->setSiteId($site->getSiteId()); $mem->setUserId($user->getUserId()); $mem->save(); $ml = new DB_MembershipLink(); $ml->setUserId($user->getUserId()); $ml->setSiteId($site->getSiteId()); $ml->setDate(new ODate()); $ml->setType('EMAIL_INVITATION'); $ml->setByUserId($inv->getUserId()); $ml->save(); // add to contacts? $sender = DB_OzoneUserPeer::instance()->selectByPrimaryKey($inv->getUserId()); if ($inv->getToContacts() && $sender->getUserId() != $user->getUserId()) { try { // check if contact already exists $c = new Criteria(); $c->add("user_id", $user->getUserId()); $c->add("target_user_id", $sender->getUserId()); $con0 = DB_ContactPeer::instance()->selectOne($c); if (!$con0) { $con = new DB_Contact(); $con->setUserId($user->getUserId()); $con->setTargetUserId($sender->getUserId()); $con->save(); } } catch (Exception $e) { } try { // check if contact already exists $c = new Criteria(); $c->add("user_id", $sender->getUserId()); $c->add("target_user_id", $user->getUserId()); $con0 = DB_ContactPeer::instance()->selectOne($c); if (!$con0) { $con = new DB_Contact(); $con->setUserId($sender->getUserId()); $con->setTargetUserId($user->getUserId()); $con->save(); } } catch (Exception $e) { } } // set accepted $inv->setAccepted(true); $inv->save(); // create a notification AdminNotificationMaker::instance()->acceptedEmailInvitation($inv, $user); $db->commit(); $runData->contextAdd("site", $site); }