/** * Hook performing actual save * * @param string $newCode * @param int $userId * @return $changed */ public function setReceptionCode($newCode, $userId) { $oldCode = $this->respondent->getReceptionCode(); $code = $this->respondent->setReceptionCode($newCode); // Is the respondent really removed if ($code->isSuccess()) { $this->addMessage($this->_('Respondent restored.')); if ($this->formData['restore_tracks']) { $count = $this->respondent->restoreTracks($oldCode, $code); $this->addMessage(sprintf($this->plural('Restored %d track.', 'Restored %d tracks.', $count), $count)); } } else { // Perform actual save, but not simple stop codes. if ($code->isForRespondents()) { $this->addMessage($this->_('Respondent deleted.')); $this->afterSaveRouteKeys = false; $this->resetRoute = true; $this->routeAction = 'index'; } else { // Just a stop code $this->addMessage(sprintf($this->plural('Stopped %d track.', 'Stopped %d tracks.', $count), $count)); } } return 1; }