protected function _finishPayment($state = 'active') { $viewer = Engine_Api::_()->user()->getViewer(); $user = $this->_user; // No user? if (!$this->_user) { return $this->_helper->redirector->gotoRoute(array(), 'default', true); } // Log the user in, if they aren't already if (($state == 'active' || $state == 'free') && $this->_user && !$this->_user->isSelf($viewer) && !$viewer->getIdentity()) { Zend_Auth::getInstance()->getStorage()->write($this->_user->getIdentity()); Engine_Api::_()->user()->setViewer(); $viewer = $this->_user; } // Handle email verification or pending approval if ($viewer->getIdentity() && !$viewer->enabled) { Engine_Api::_()->user()->setViewer(null); Engine_Api::_()->user()->getAuth()->getStorage()->clear(); $confirmSession = new Zend_Session_Namespace('Signup_Confirm'); $confirmSession->approved = $viewer->approved; $confirmSession->verified = $viewer->verified; $confirmSession->enabled = $viewer->enabled; return $this->_helper->_redirector->gotoRoute(array('action' => 'confirm'), 'user_signup', true); } // Clear session $errorMessage = $this->_session->errorMessage; $userIdentity = $this->_session->user_id; $this->_session->unsetAll(); $this->_session->user_id = $userIdentity; $this->_session->errorMessage = $errorMessage; // Redirect if ($state == 'free') { return $this->_helper->redirector->gotoRoute(array(), 'default', true); } else { return $this->_helper->redirector->gotoRoute(array('action' => 'finish', 'state' => $state)); } }