示例#1
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);
 }
示例#2
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();
 }