202 lines
4.8 KiB
PHP
202 lines
4.8 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Questlab
|
||
*
|
||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||
* @copyright 2014 – 2016 Heinrich-Heine-Universität Düsseldorf
|
||
* @license http://www.gnu.org/licenses/gpl.html
|
||
* @link https://github.com/coderkun/questlab
|
||
*/
|
||
|
||
namespace hhu\z\apis;
|
||
|
||
|
||
/**
|
||
* MailApi-implementation.
|
||
*
|
||
* This class runs and renders e‑mail text and subject.
|
||
*
|
||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||
*/
|
||
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; $i<count($this->request->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
|
||
);
|
||
}
|
||
|
||
}
|
||
|
||
?>
|