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); }
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(); }