public function Gdn_Dispatcher_AppStartup_Handler($Sender) {
      header('P3P: CP="CAO PSA OUR"', TRUE);
      
      if (!Gdn::Session()->IsValid() && $SSO = Gdn::Request()->Get('sso')) {
         SaveToConfig('Garden.Registration.SendConnectEmail', FALSE, FALSE);
         
         $UserID = FALSE;
         try {
            $UserID = Gdn::UserModel()->SSO($SSO);
         } catch (Exception $Ex) {
            Trace($Ex, TRACE_ERROR);
         }
         
         if ($UserID) {
            Gdn::Session()->Start($UserID, TRUE, TRUE);
            Gdn::UserModel()->FireEvent('AfterSignIn');
         } else {
            // There was some sort of error. Let's print that out.
            Trace(Gdn::UserModel()->Validation->ResultsText(), TRACE_WARNING);
         }
      }
   }
public function Gdn_Dispatcher_AppStartup_Handler($Sender) {
      header('P3P: CP="CAO PSA OUR"', TRUE);
      
      if (!Gdn::Session()->IsValid() && $SSO = Gdn::Request()->Get('sso')) {
         SaveToConfig('Garden.Registration.SendConnectEmail', FALSE, FALSE);
         
         $UserID = FALSE;
         try {
            $UserID = Gdn::UserModel()->SSO($SSO);
         } catch (Exception $Ex) {
            Trace($Ex, TRACE_ERROR);
         }
         
         if ($UserID) {
            Gdn::Session()->Start($UserID, TRUE, TRUE);
            Gdn::UserModel()->FireEvent('AfterSignIn');
         } else {
            // There was some sort of error. Let's print that out.
            Trace(Gdn::UserModel()->Validation->ResultsText(), TRACE_WARNING);
         }
      }
   }
public function Gdn_Dispatcher_AppStartup_Handler ( $ Sender ) { header ( 'P3P: CP="CAO PSA OUR"' , TRUE ) ; if ( ! Gdn :: Session ( ) -> IsValid ( ) && $ SSO = Gdn :: Request ( ) -> Get ( 'sso' ) ) { SaveToConfig ( 'Garden.Registration.SendConnectEmail' , FALSE , FALSE ) ; $ UserID = FALSE ; try { $ UserID = Gdn :: UserModel ( ) -> SSO ( $ SSO ) ; } catch ( Exception $ Ex ) { Trace ( $ Ex , TRACE_ERROR ) ; } if ( $ UserID ) { Gdn :: Session ( ) -> Start ( $ UserID , TRUE , TRUE ) ; Gdn :: UserModel ( ) -> FireEvent ( 'AfterSignIn' ) ; } else { // There was some sort of error. Let's print that out. Trace ( Gdn :: UserModel ( ) -> Validation -> ResultsText ( ) , TRACE_WARNING ) ; } } }
Set P3P header because IE won't allow cookies thru the iFrame without it.

This must be done in the Dispatcher because of PrivateCommunity.
That precludes using Controller->SetHeader.
This is done so comment & forum embedding can work in old IE.
Set P3P header because IE won t allow cookies thru the iFrame without it .