/** * * @param Controller $Sender */ public function UserController_Ignore_Create($Sender) { $Sender->Permission('Garden.SignIn.Allow'); $Args = $Sender->RequestArgs; if (sizeof($Args) < 3) { $Args = array_merge($Args, array(0, 0)); } elseif (sizeof($Args) > 2) { $Args = array_slice($Args, 1, 3); } list($UserReference, $Username) = $Args; // Set user $User = $this->GetUserInfo($UserReference, $Username); $Sender->SetData('User', $User); $UserID = GetValue('UserID', $User); // Set title and mode $IgnoreRestricted = $this->IgnoreIsRestricted($UserID); $UserIgnored = $this->Ignored($UserID); $Mode = $UserIgnored ? 'unset' : 'set'; $ActionText = T($Mode == 'set' ? 'Ignore' : 'Unignore'); $Sender->Title($ActionText); $Sender->SetData('Mode', $Mode); if ($Mode == 'set') { // Check is Ignore is allowed. $IgnoreRestricted = $this->IgnoreRestricted($UserID); } try { // Check for prevented states switch ($IgnoreRestricted) { case self::IGNORE_GOD: $Sender->InformMessage('<span class="InformSprite Lightbulb"></span>' . T("You can't ignore that person."), 'AutoDismiss HasSprite'); break; case self::IGNORE_LIMIT: $Sender->InformMessage('<span class="InformSprite Lightbulb"></span>' . T("You have reached the maximum number of ignores."), 'AutoDismiss HasSprite'); break; case self::IGNORE_RESTRICTED: $Sender->InformMessage('<span class="InformSprite Lightbulb"></span>' . T("Your ignore privileges have been revoked."), 'AutoDismiss HasSprite'); break; case self::IGNORE_SELF: $Sender->InformMessage('<span class="InformSprite Lightbulb"></span>' . T("You can't put yourself on ignore."), 'AutoDismiss HasSprite'); break; } // Get conversation intersects $Conversations = $this->IgnoreConversations($UserID); $Sender->SetData('Conversations', $Conversations); if ($Sender->Form->AuthenticatedPostBack()) { switch ($Mode) { case 'set': if (!$IgnoreRestricted) { $Sender->JsonTarget('a.IgnoreButton', T('Unignore'), 'Text'); $this->AddIgnore(Gdn::Session()->UserID, $UserID); $Sender->InformMessage('<span class="InformSprite Contrast"></span>' . sprintf(T("%s is now on ignore."), $User->Name), 'AutoDismiss HasSprite'); } break; case 'unset': if (!$IgnoreRestricted) { $Sender->JsonTarget('a.IgnoreButton', T('Ignore'), 'Text'); $this->RemoveIgnore(Gdn::Session()->UserID, $UserID); $Sender->InformMessage('<span class="InformSprite Brightness"></span>' . sprintf(T("%s is no longer on ignore."), $User->Name), 'AutoDismiss HasSprite'); $Sender->RedirectUrl = Url('/profile/ignore'); } break; default: $Sender->InformMessage(T("Unsupported operation.")); $Sender->SetJson('Status', 400); break; } } } catch (Exception $Ex) { $Sender->InformMessage(T("Could not find that person! - " . $Ex->getMessage())); $Sender->SetJson('Status', 404); } $Sender->Render('confirm', '', 'plugins/Ignore'); }