示例#1
0
 public function build($runData)
 {
     $query = $runData->getParameterList()->getParameterValue("query");
     // split the query by ' '
     $q = explode(' ', $query);
     // escape regex syntax now
     for ($i = 0; $i < count($q); $i++) {
         $q[$i] = preg_quote($q[$i], '/');
     }
     $c = new Criteria();
     foreach ($q as $q1) {
         $c->add("nick_name", $q1, "~*");
     }
     $c->setLimit(101);
     $users = DB_OzoneUserPeer::instance()->select($c);
     $runData->contextAdd("users", $users);
     // also prepare an array of user_id and nickname
     $runData->ajaxResponseAdd("count", count($users));
     if (count($users) == 101) {
         $runData->ajaxResponseAdd("over100", true);
     } else {
         $runData->ajaxResponseAdd("over100", false);
     }
     $userIds = array();
     $userNames = array();
     foreach ($users as $u) {
         $userIds[] = $u->getUserId();
         $userNames[$u->getUserId()] = htmlspecialchars($u->getNickName());
     }
     $runData->ajaxResponseAdd("userIds", $userIds);
     $runData->ajaxResponseAdd("userNames", $userNames);
 }
示例#2
0
 public function getEditedUser()
 {
     if ($this->getEditedUserId() == 0) {
         return null;
     }
     return DB_OzoneUserPeer::instance()->selectByPrimaryKey($this->getEditedUserId());
 }
示例#3
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $userId = $pl->getParameterValue("user_id");
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     $avatarUri = '/common--images/avatars/' . floor($userId / 1000) . '/' . $userId . '/a48.png';
     $runData->contextAdd("user", $user);
     $runData->contextAdd("avatarUri", $avatarUri);
     // find the possible role in this site
     $site = $runData->getTemp("site");
     $siteId = $site->getSiteId();
     $c = new Criteria();
     $c->add("user_id", $userId);
     $c->add("site_id", $siteId);
     $mem = DB_MemberPeer::instance()->selectOne($c);
     if ($mem != null) {
         $runData->contextAdd("member", $mem);
         // also check for other roles: admin & moderator
         if (DB_AdminPeer::instance()->selectOne($c) != null) {
             $runData->contextAdd("role", "admin");
         } elseif (DB_AdminPeer::instance()->selectOne($c) != null) {
             $runData->contextAdd("role", "moderator");
         }
     }
     $runData->contextAdd("uu", $runData->getUser());
     $runData->contextAdd('karmaLevel', $user->getKarmaLevel());
 }
 public function build($runData)
 {
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $userId = $pl->getParameterValue("userId");
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     if (!$user) {
         throw new ProcessException(_("Invalid user."));
     }
     $c = new Criteria();
     $c->add("user_id", $userId);
     $c->add("site_id", $site->getSiteId());
     $mem = DB_MemberPeer::instance()->selectOne($c);
     if (!$mem) {
         throw new ProcessException(_("The user is not a Member of this Wiki."));
     }
     $link = DB_MembershipLinkPeer::instance()->selectByUserId($site->getSiteId(), $userId);
     if (!$link) {
         $runData->contextAdd("noData", true);
     } else {
         $chain = array();
         $chain[] = array('user' => $user, 'link' => $link);
         if ($link->getByUserId()) {
             do {
                 // get "parent"
                 // get link for the user
                 $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($link->getByUserId());
                 $link = DB_MembershipLinkPeer::instance()->selectByUserId($site->getSiteId(), $user->getUserId());
                 $chain[] = array('user' => $user, 'link' => $link);
             } while ($user && $link && $link->getByUserId());
         }
         $runData->contextAdd("chain", array_reverse($chain));
     }
 }
示例#5
0
 public function build($runData)
 {
     // a hack to get unix user name
     $qs = $_SERVER['QUERY_STRING'];
     $splited = explode("/", $qs);
     // WARNING!!! this is a hack! not a proper use of ParameterList object!
     $userUnixName = $splited[3];
     if ($userUnixName == null || $userUnixName == '') {
         throw new ProcessException(_("No user specified."), "no_user");
     }
     // get user
     $c = new Criteria();
     $c->add("unix_name", $userUnixName);
     $user = DB_OzoneUserPeer::instance()->selectOne($c);
     if ($user == null) {
         throw new ProcessException(_("User does not exist."));
     }
     $runData->contextAdd("user", $user);
     $runData->contextAdd("userUnixName", $userUnixName);
     $runData->contextAdd("userId", $user->getUserId());
     $this->user = $user;
     // get the referring page too in case one wants to
     // flag an abusive user. than we set site_id of the flag
     // to the site which the user comes from if
     // this is a wikidot site.
     $referer = $_SERVER['HTTP_REFERER'];
     if ($referer) {
         $referer = parse_url($referer);
         $referer = $referer['host'];
     }
     $runData->contextAdd("referer", $referer);
     $runData->contextAdd("uu", $runData->getUser());
 }
示例#6
0
 public function deleteBlockEvent($runData)
 {
     $pl = $runData->getParameterList();
     $site = $runData->getTemp("site");
     $userId = $pl->getParameterValue("userId");
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     if ($user == null) {
         $runData->ajaxResponseAdd("status", "no_user");
         $runData->ajaxResponseAdd("message", _("No such user."));
         return;
     }
     $c = new Criteria();
     $c->add("site_id", $site->getSiteId());
     $c->add("user_id", $userId);
     $block = DB_UserBlockPeer::instance()->selectOne($c);
     if ($block == null) {
         $runData->ajaxResponseAdd("status", "no_user");
         $runData->ajaxResponseAdd("message", _("No such block."));
         return;
     }
     // ok, remove
     $db = Database::connection();
     $db->begin();
     DB_UserBlockPeer::instance()->delete($c);
     $db->commit();
 }
 public function build($runData)
 {
     $site = $runData->getTemp("site");
     // get
     $q = "SELECT target_user_id, count(*) AS rank " . "FROM user_abuse_flag " . "WHERE site_id='" . $site->getSiteId() . "' " . "AND site_valid = TRUE GROUP BY target_user_id ORDER BY rank DESC, target_user_id";
     $db = Database::connection();
     $res = $db->query($q);
     $all = $res->fetchAll();
     $r2 = array();
     if ($all) {
         foreach ($all as &$r) {
             // get user
             $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($r['target_user_id']);
             if ($user) {
                 $r['user'] = $user;
                 // check if member
                 $c = new Criteria();
                 $c->add("site_id", $site->getSiteId());
                 $c->add("user_id", $user->getUserId());
                 $mem = DB_MemberPeer::instance()->selectOne($c);
                 if ($mem) {
                     $r['member'] = $mem;
                 }
                 $r2[] = $r;
             }
         }
     }
     $runData->contextAdd("reps", $r2);
 }
示例#8
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $targetUserId = $pl->getParameterValue("targetUserId");
     if ($targetUserId == null || $targetUserId == '' || !is_numeric($targetUserId)) {
         throw new ProcessException(_("Error processing the request."), "no_target_user");
     }
     $targetUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($targetUserId);
     if ($targetUser == null) {
         throw new ProcessException(_("Error processing the request."), "no_target_user");
     }
     $site = $runData->getTemp("site");
     $user = $runData->getUser();
     if ($targetUser->getUserId() === $user->getUserId()) {
         throw new ProcessException(_("Sorry, event with the extreme level of self-criticism you can not flag yourself as an abusive user ;-)"), "not_yourself");
     }
     // check if flagged already
     $c = new Criteria();
     $c->add("user_id", $user->getUserId());
     $c->add("target_user_id", $targetUser->getUserId());
     $flag = DB_UserAbuseFlagPeer::instance()->selectOne($c);
     if ($flag) {
         $runData->contextAdd("flagged", true);
     }
     $runData->contextAdd("user", $targetUser);
 }
示例#9
0
 public function flagUserEvent($runData)
 {
     $pl = $runData->getParameterList();
     $toFlag = $pl->getParameterValue("flag");
     $targetUserId = $pl->getParameterValue("targetUserId");
     if ($targetUserId == null || $targetUserId == '' || !is_numeric($targetUserId)) {
         throw new ProcessException(_("Error processing the request."), "no_target_user");
     }
     $targetUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($targetUserId);
     if ($targetUser == null) {
         throw new ProcessException(_("Error processing the request."), "no_target_user");
     }
     $site = $runData->getTemp("site");
     $user = $runData->getUser();
     $db = Database::connection();
     $db->begin();
     if ($toFlag) {
         // flag the user
         // check if not flagged already
         $c = new Criteria();
         $c->add("user_id", $user->getUserId());
         $c->add("target_user_id", $targetUser->getUserId());
         $flag = DB_UserAbuseFlagPeer::instance()->selectOne($c);
         if ($flag == null) {
             $siteId = $site->getSiteId();
             // get the host if any
             $host = $pl->getParameterValue("host");
             if ($host) {
                 if (preg_match("/^([a-zA-Z0-9\\-]+)\\." . GlobalProperties::$URL_DOMAIN_PREG . "\$/", $host, $matches) == 1) {
                     $siteUnixName = $matches[1];
                     $c = new Criteria();
                     $c->add("unix_name", $siteUnixName);
                     $siter = DB_SitePeer::instance()->selectOne($c);
                 } else {
                     $c = new Criteria();
                     $c->add("custom_domain", $host);
                     $siter = DB_SitePeer::instance()->selectOne($c);
                 }
                 if ($siter !== null) {
                     $siteId = $siter->getSiteId();
                 }
             }
             $flag = new DB_UserAbuseFlag();
             $flag->setUserId($user->getUserId());
             $flag->setSiteId($siteId);
             $flag->setTargetUserId($targetUser->getUserId());
             $flag->save();
             EventLogger::instance()->logFlagUser($targetUser);
         }
     } else {
         // unflag
         $c = new Criteria();
         $c->add("user_id", $user->getUserId());
         $c->add("target_user_id", $targetUser->getUserId());
         DB_UserAbuseFlagPeer::instance()->delete($c);
         EventLogger::instance()->logUnflagUser($targetUser);
     }
     $db->commit();
 }
示例#10
0
 public static function getUserByKey($key)
 {
     $user = null;
     $api_key = self::instance()->selectByPrimaryKey($key);
     if ($api_key) {
         $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($api_key->getUserId());
     }
     return $user;
 }
示例#11
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $o = DB_OzoneUserPeer::instance()->selectByPrimaryKey(1);
     $u = array("nick_name" => $o->getNickName());
     $runData->contextAdd("user", $u);
     if ($key = $pl->getParameterValue("key")) {
         $runData->contextAdd("key", $key);
     }
 }
示例#12
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $targetUserId = $pl->getParameterValue("userId");
     $targetUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($targetUserId);
     if ($targetUser == null) {
         throw new ProcessException(_("User can not be found."), "no_user");
     }
     // check how many contacts so far...
     $runData->contextAdd("user", $targetUser);
 }
示例#13
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $userId = $pl->getParameterValue("userId");
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     $runData->contextAdd("user", $user);
     $site = $runData->getTemp("site");
     if ($site->getUnixName() !== 'www') {
         $runData->contextAdd("site", $site);
     }
 }
示例#14
0
 public function loginEvent($runData)
 {
     $pl = $runData->getParameterList();
     $uname = $pl->getParameterValue("name");
     $upass = $pl->getParameterValue("password");
     $userId = $pl->getParameterValue("welcome");
     $keepLogged = $pl->getParameterValue("keepLogged");
     $bindIP = $pl->getParameterValue("bindIP");
     // decrypt! woooohhooooo!!!!!!!!
     $seed = $runData->sessionGet("login_seed");
     if ($seed == null) {
         throw new ProcessException(_("You have been inactive quite long while trying to log in and your session data have expired. Please try to click 'log in' once again."), "no_seed");
     }
     $uname = CryptUtils::rsaDecrypt($uname);
     $upass = CryptUtils::rsaDecrypt($upass);
     // remove seed
     if (preg_match('/^' . $seed . '/', $uname) == 0 || preg_match('/^' . $seed . '/', $upass) == 0) {
         EventLogger::instance()->logFailedLogin($uname);
         throw new ProcessException(_("The user and password do not match."), "login_invalid");
     }
     $uname = preg_replace('/^' . $seed . '/', '', $uname);
     $upass = preg_replace('/^' . $seed . '/', '', $upass);
     if ($userId && is_numeric($userId) && $userId > 0) {
         $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
         if ($user && $user->getPassword() !== md5($upass)) {
             $user = null;
         }
     } else {
         $user = SecurityManager::authenticateUser($uname, $upass);
     }
     if ($user == null) {
         EventLogger::instance()->logFailedLogin($uname);
         throw new ProcessException(_("The login and password do not match."), "login_invalid");
     }
     $runData->resetSession();
     $session = $runData->getSession();
     $session->setUserId($user->getUserId());
     // set other parameters
     $session->setStarted(new ODate());
     $session->setLastAccessed(new ODate());
     $user->setLastLogin(new ODate());
     $user->save();
     if ($keepLogged) {
         $session->setInfinite(true);
     }
     if ($bindIP) {
         $session->setCheckIp(true);
     }
     setcookie("welcome", $user->getUserId(), time() + 10000000, "/", GlobalProperties::$SESSION_COOKIE_DOMAIN);
     // log event
     EventLogger::instance()->logLogin();
 }
示例#15
0
 public function clearUserFlagsEvent($runData)
 {
     $site = $runData->getTemp("site");
     $pl = $runData->getParameterList();
     $targetUserId = $pl->getParameterValue("userId");
     $targetUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($targetUserId);
     if ($targetUser == null) {
         throw new ProcessException(_("Error processing the request. No user found."), "no_user");
     }
     $q = "UPDATE user_abuse_flag SET site_valid=FALSE WHERE " . "site_id='" . $site->getSiteId() . "' " . "AND target_user_id='" . $targetUser->getUserId() . "' " . "AND site_valid=TRUE";
     $db = Database::connection();
     $db->query($q);
 }
 public function build($runData)
 {
     $site = $runData->getTemp("site");
     $runData->contextAdd("site", $site);
     $runData->contextAdd("settings", $site->getSettings());
     $runData->contextAdd("superSettings", $site->getSuperSettings());
     // get the viewers
     $c = new Criteria();
     $q = "SELECT ozone_user.* FROM ozone_user, site_viewer WHERE site_viewer.site_id='" . $site->getSiteId() . "' " . "AND ozone_user.user_id = site_viewer.user_id ORDER BY ozone_user.nick_name";
     $c->setExplicitQuery($q);
     $viewers = DB_OzoneUserPeer::instance()->select($c);
     $runData->contextAdd("viewers", $viewers);
     $runData->contextAdd("settings", $site->getSettings());
 }
示例#17
0
 public function saveEvent($runData)
 {
     $pl = $runData->getParameterList();
     $nick_name = $pl->getParameterValue("nick_name");
     $password = $pl->getParameterValue("password1");
     $u = DB_OzoneUserPeer::instance()->selectByPrimaryKey(1);
     $u->setName($nick_name);
     $u->setEmail($nick_name);
     $u->setNickName($nick_name);
     $u->setUnixName(WDStringUtils::toUnixName($nick_name));
     $u->setPassword(md5($password));
     $u->setSuperAdmin(true);
     $u->save();
 }
示例#18
0
 public function run()
 {
     $ds = new WDDigestSender();
     // select users... all at once??? fix this!
     $c = new Criteria();
     $c->add("user_id", 0, ">");
     $c->addOrderAscending("user_id");
     $users = DB_OzoneUserPeer::instance()->select($c);
     foreach ($users as $user) {
         try {
             $ds->handleUser($user);
         } catch (Exception $e) {
         }
     }
 }
示例#19
0
 public function build($runData)
 {
     $users = array();
     $c = new Criteria();
     $c->add('user_id', '1', '>');
     foreach (DB_OzoneUserPeer::instance()->select($c) as $user) {
         $admin = WDPermissionManager::hasPermission('manage_site', $user, 1) ? 1 : 0;
         $mod = WDPermissionManager::hasPermission('moderate_site', $user, 1) ? 1 : 0;
         $users[] = array("nick_name" => $user->getNickName(), "user_id" => $user->getUserId(), "mod" => $mod, "admin" => $admin);
     }
     for ($i = 0; $i < 5; $i++) {
         $users[] = array("user_id" => "new{$i}");
     }
     $runData->contextAdd("users", $users);
 }
示例#20
0
 public function getUser()
 {
     if (is_array($this->prefetched)) {
         if (in_array('ozone_user', $this->prefetched)) {
             if (in_array('ozone_user', $this->prefetchedObjects)) {
                 return $this->prefetchedObjects['ozone_user'];
             } else {
                 $obj = new DB_OzoneUser($this->sourceRow);
                 $obj->setNew(false);
                 $this->prefetchedObjects['ozone_user'] = $obj;
                 return $obj;
             }
         }
     }
     return DB_OzoneUserPeer::instance()->selectByPrimaryKey($this->getUserId());
 }
示例#21
0
文件: User.php 项目: jbzdak/wikidot
 /**
  *
  * Renders a token into text matching the requested format.
  *
  * @access public
  *
  * @param array $options The "options" portion of the token (second
  * element).
  *
  * @return string The text rendered from the token options.
  *
  */
 function token($options)
 {
     $userName = $options['userName'];
     $unixName = WDStringUtils::toUnixName($userName);
     $c = new Criteria();
     $c->add("unix_name", $unixName);
     $user = DB_OzoneUserPeer::instance()->selectOne($c);
     if ($user == null) {
         return '<span class="error-inline">' . sprintf(_('User <em>%s</em> can not be found.'), $userName) . '</span>';
     } else {
         $o = array();
         if ($options['image']) {
             $o['image'] = true;
         }
         return WDRenderUtils::renderUser($user, $o);
     }
 }
示例#22
0
 public function sendEvent($runData)
 {
     $pl = $runData->getParameterList();
     $source = $pl->getParameterValue("source");
     $subject = $pl->getParameterValue("subject");
     if ($subject == null || $subject === '') {
         $subject = "(No subject)";
     }
     $db = Database::connection();
     $db->begin();
     $toUserId = $pl->getParameterValue("to_user_id");
     // TODO: validation. also check if user exists
     $toUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($toUserId);
     if ($toUser == null) {
         $message = _("The recipient does not exist.");
         throw new ProcessException($message, "no_recipient");
     }
     // check if allowed
     $fromUser = $runData->getUser();
     WDPermissionManager::instance()->hasPmPermission($fromUser, $toUser);
     // compile content
     $wt = new WikiTransformation();
     $wt->setMode('pm');
     $body = $wt->processSource($source);
     $message = new DB_PrivateMessage();
     $message->setDate(new ODate());
     $message->setFromUserId($runData->getUserId());
     $message->setToUserId($toUserId);
     $message->setSubject($subject);
     $message->setBody($body);
     $message->setFlag(0);
     // 0 for inbox
     $message->save();
     NotificationMaker::instance()->privateMessageNotification($message);
     //also make a copy for "sent" folder
     $message->setNew(true);
     $message->setMessageId(null);
     $message->setFlag(1);
     //1 for sent
     $message->save();
     $db->commit();
 }
示例#23
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $userId = $pl->getParameterValue("user_id");
     $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
     $runData->contextAdd("user", $user);
     $avatarUri = '/common--images/avatars/' . floor($userId / 1000) . '/' . $userId . '/a48.png';
     $runData->contextAdd("avatarUri", $avatarUri);
     // get profile page to include
     $pageName = "profile:" . $user->getUnixName();
     $c = new Criteria();
     $c->add("unix_name", "profiles");
     $site = DB_SitePeer::instance()->selectOne($c);
     $page = DB_PagePeer::instance()->selectByName($site->getSiteId(), $pageName);
     if ($page !== null) {
         $compiled = $page->getCompiled();
         $runData->contextAdd("profileContent", $compiled);
         $runData->contextAdd("wikiPage", $page);
     }
     $runData->contextAdd('karmaLevel', $user->getKarmaLevel());
 }
示例#24
0
 public function build($runData)
 {
     $site = $runData->getTemp("site");
     $user = $runData->getUser();
     $runData->contextAdd("site", $site);
     $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) {
         $runData->contextAdd('allowed', true);
     } else {
         $c = new Criteria();
         $c->add("site_id", $site->getSiteId());
         $c->add("founder", true);
         $f = DB_AdminPeer::instance()->selectOne($c);
         $founder = DB_OzoneUserPeer::instance()->selectByPrimaryKey($f->getUserId());
         $runData->contextAdd('founder', $founder);
     }
 }
示例#25
0
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $backUrl = $pl->getParameterValue('backUrl');
     $runData->contextAdd('backUrl', $backUrl);
     // check if reset remebered user
     $pl = $runData->getParameterList();
     if ($pl->getParameterValue("reset")) {
         setcookie('welcome', 'dummy', time() - 10000000, "/", GlobalProperties::$SESSION_COOKIE_DOMAIN);
     } else {
         // check if a recognized user
         $userId = $_COOKIE['welcome'];
         if ($userId && is_numeric($userId) && $userId > 0) {
             $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
         }
         if ($user == null) {
             setcookie('welcome', 'dummy', time() - 10000000, "/", GlobalProperties::$SESSION_COOKIE_DOMAIN);
         }
     }
     $runData->contextAdd("user", $user);
 }
示例#26
0
 public function build($runData)
 {
     $site = $runData->getTemp('site');
     // check the connection type
     if (!$_SERVER['HTTPS'] && $site->getSettings()->getSslMode() && !$runData->getParameterList()->getParameterValue('disableSSL')) {
         // not enabled, redirect to http:
         $site = $runData->getTemp("site");
         header("HTTP/1.1 301 Moved Permanently");
         header("Location: " . 'https://' . $site->getDomain() . $_SERVER['REQUEST_URI']);
         exit;
     }
     // check if not already logged in...
     $user = $runData->getUser();
     if ($user) {
         throw new ProcessException(_("You already are logged in."), "already_logged");
     }
     // check if reset remebered user
     $pl = $runData->getParameterList();
     if ($pl->getParameterValue("reset")) {
         setcookie('welcome', 'dummy', time() - 10000000, "/", GlobalProperties::$SESSION_COOKIE_DOMAIN);
     } else {
         // check if a recognized user
         $userId = $_COOKIE['welcome'];
         if ($userId && is_numeric($userId) && $userId > 0) {
             $user = DB_OzoneUserPeer::instance()->selectByPrimaryKey($userId);
         }
         if ($user == null) {
             setcookie('welcome', 'dummy', time() - 10000000, "/", GlobalProperties::$SESSION_COOKIE_DOMAIN);
         }
     }
     $originalUrl = $pl->getParameterValue('origUrl');
     if ($originalUrl) {
         $originalUrlForce = $pl->getParameterValue('origUrlForce');
         if ($originalUrlForce) {
             $runData->sessionAdd('loginOriginalUrlForce', true);
         }
         $runData->sessionAdd('loginOriginalUrl', $originalUrl);
     }
     $runData->contextAdd("user", $user);
 }
 public function build($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) {
         //sorry, no invitation
         return;
     }
     $site = DB_SitePeer::instance()->selectByPrimaryKey($inv->getSiteId());
     $sender = DB_OzoneUserPeer::instance()->selectByPrimaryKey($inv->getUserId());
     $runData->contextAdd("sender", $sender);
     $runData->contextAdd("site", $site);
     $runData->contextAdd("invitation", $inv);
     $runData->contextAdd("hash", $hash);
 }
 public function build($runData)
 {
     $site = $runData->getTemp('site');
     $pl = $runData->getParameterList();
     $listId = $pl->getParameterValue("listId");
     $db = Database::connection();
     $db->begin();
     // get the list
     $c = new Criteria();
     $c->add('site_id', $site->getSiteId());
     $c->add('list_id', $listId);
     $list = DB_EmailListPeer::instance()->selectOne($c);
     if (!$list) {
         throw new ProcessException('The requested list  cannot be found.');
     }
     // get all subscribers
     $q = "SELECT ozone_user.* FROM email_list_subscriber, ozone_user WHERE " . "email_list_subscriber.list_id = '{$list->getListId()}' AND email_list_subscriber.user_id = ozone_user.user_id " . "ORDER BY ozone_user.nick_name";
     $c = new Criteria();
     $c->setExplicitQuery($q);
     $users = DB_OzoneUserPeer::instance()->select($c);
     $runData->contextAdd('users', $users);
     $runData->contextAdd('list', $list);
     $runData->contextAdd('site', $site);
 }
示例#29
0
 public function build($runData)
 {
     $user = $runData->getUser();
     $pl = $runData->getParameterList();
     $replyMessageId = $pl->getParameterValue("replyMessageId", "AMODULE");
     $continueMessageId = $pl->getParameterValue("continueMessageId", "AMODULE");
     $toUserId = $pl->getParameterValue("toUserId");
     if ($replyMessageId) {
         $message = DB_PrivateMessagePeer::instance()->selectByPrimaryKey($replyMessageId);
         if ($message == null || $message->getToUserId() != $user->getUserId()) {
             throw new ProcessException(_("Error getting orginal message."), "no_reply_message");
         }
         $runData->ajaxResponseAdd("toUserId", $message->getFromUserId());
         $runData->ajaxResponseAdd("toUserName", $message->getFromUser()->getNickName());
         $subject = $message->getSubject();
         $subject = preg_replace("/^Re: /", '', $subject);
         $runData->contextAdd("subject", "Re: " . $subject);
     } elseif ($continueMessageId) {
         $message = DB_PrivateMessagePeer::instance()->selectByPrimaryKey($continueMessageId);
         if ($message == null || $message->getFromUserId() != $user->getUserId()) {
             throw new ProcessException(_("Error getting orginal message."), "no_reply_message");
         }
         if ($message->getToUserId() !== null) {
             $runData->ajaxResponseAdd("toUserId", $message->getToUserId());
             $runData->ajaxResponseAdd("toUserName", $message->getToUser()->getNickName());
         }
         $runData->contextAdd("body", $message->getBody());
         $runData->contextAdd("subject", $message->getSubject());
     } elseif ($toUserId !== null) {
         $toUser = DB_OzoneUserPeer::instance()->selectByPrimaryKey($toUserId);
         $runData->ajaxResponseAdd("toUserId", $toUser->getUserId());
         $runData->ajaxResponseAdd("toUserName", $toUser->getNickName());
     }
     $user = $runData->getUser();
     $runData->contextAdd("user", $user);
 }
 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();
 }