* @copyright 2014 Heinrich-Heine-Universität Düsseldorf * @license http://www.gnu.org/licenses/gpl.html * @link https://bitbucket.org/coderkun/the-legend-of-z */ namespace hhu\z\apis; /** * MailApi-implementation. * * This class runs and renders e‑mail text and subject. * * @author Oliver Hanraths */ class MailApi extends \nre\core\Api { /** * Construct a new MailApi. */ public function __construct() { parent::__construct( new \hhu\z\requests\MailRequest(), new \hhu\z\responses\MailResponse() ); // Set ToplevelAgent $this->request->addParam(\nre\configs\AppConfig::$defaults['toplevel-mail']); $this->request->addParam(\nre\configs\AppConfig::$defaults['intermediate-mail']); } /** * Set linker instance for creating links. * * @param \nre\core\Linker $linker Linker instance for creating links */ public function setLinker(\nre\core\Linker $linker) { $this->request->setLinker($linker); } /** * Use a ToplevelAgent for HTML-mail * * @param bool $html Whether to use HTML or not */ public function setHTML($html=true) { // Save params $params = $this->request->getParams(1); // Set ToplevelAgent $this->request->clearParams(); if($html) { $this->request->addParam(\nre\configs\AppConfig::$defaults['toplevel-htmlmail']); } else { $this->request->addParam(\nre\configs\AppConfig::$defaults['toplevel-mail']); } // Restore params if(!empty($params)) { $this->addParams($params); } } /** * Set the Action for the message to render. * * @param string $messageAgent Agent to handle the message */ public function setMessage($messageAgent) { // Save params $params = $this->request->getParams(3); // Set messageAgent $this->request->clearParams(2); $this->request->addParam($messageAgent); // Restore params if(!empty($params)) { $this->addParams($params); } } /** * Set additional params to pass to the Action. * * @param array $params Additional params to set */ public function setParams($params) { // Add placeholder params for($i=3; $irequest->getParams()); $i++) { $this->request->addParam(null); } // Set params call_user_func_array( array( $this->request, 'addParams' ), $params ); } /** * Return the subject set by the Controller. * * @return string Subject set by Controller */ public function getSubject() { return $this->response->getSubject(); } /** * Run mailtext generation. * * This method runs the generation of mailtext. * * @return \Exception Occured exception or null */ public function run() { // Set response $this->response->clearParams(); foreach($this->request->getParams() as $param) { $this->response->addParam($param); } // Run try { $exception = parent::run(); return $exception; } catch(\nre\Exception $e) { return $e; } } /** * Render output. * * @return string Rendered output */ public function render() { // Generate output parent::render(); // Return output return $this->response->getOutput(); } /** * Add multiple request params. * * @param array $params Request params to add */ private function addParams($params) { call_user_func_array( array( $this->request, 'addParams' ), $params ); } } ?>