implement copying of Stations for Seminary copy feature
This commit is contained in:
commit
40a233fa7d
4342 changed files with 1215466 additions and 0 deletions
10
.hgignore
Normal file
10
.hgignore
Normal file
|
@ -0,0 +1,10 @@
|
|||
syntax: regexp
|
||||
^logs/*
|
||||
^media/*
|
||||
^tmp/*
|
||||
^uploads/*
|
||||
^seminarymedia/*
|
||||
^seminaryuploads/*
|
||||
^www/analytics/config/config.ini.php*
|
||||
^www/analytics/temp/*
|
||||
^app/lib/phpqrcode/cache/*
|
50
.htaccess
Normal file
50
.htaccess
Normal file
|
@ -0,0 +1,50 @@
|
|||
Options -Indexes -MultiViews
|
||||
|
||||
ErrorDocument 403 /www/error403.html
|
||||
ErrorDocument 404 /www/error404.html
|
||||
ErrorDocument 500 /www/error500.html
|
||||
|
||||
|
||||
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all granted
|
||||
|
||||
<Files ~ "\.inc$">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
<Files ~ "\.tpl$">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
<Files ~ "\.log$">
|
||||
Require all denied
|
||||
</Files>
|
||||
</IfModule>
|
||||
|
||||
<IfModule !mod_authz_core.c>
|
||||
Allow From All
|
||||
|
||||
<Files ~ "\.inc$">
|
||||
Order Deny,Allow
|
||||
Deny From All
|
||||
</Files>
|
||||
|
||||
<Files ~ "\.tpl$">
|
||||
Order Deny,Allow
|
||||
Deny From All
|
||||
</Files>
|
||||
|
||||
<Files ~ "\.log$">
|
||||
Order Deny,Allow
|
||||
Deny From All
|
||||
</Files>
|
||||
</IfModule>
|
||||
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
||||
RewriteBase /
|
||||
RewriteRule ^(.*)$ www/$1 [L]
|
||||
</IfModule>
|
25
agents/BottomlevelAgent.inc
Normal file
25
agents/BottomlevelAgent.inc
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* NRE
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
* @copyright 2013 coderkun (http://www.coderkun.de)
|
||||
* @license http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://www.coderkun.de/projects/nre
|
||||
*/
|
||||
|
||||
namespace nre\agents;
|
||||
|
||||
|
||||
/**
|
||||
* The BottomlevelAgent is the standard Agent and can have indefinite
|
||||
* SubAgents.
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
*/
|
||||
abstract class BottomlevelAgent extends \nre\core\Agent
|
||||
{
|
||||
}
|
||||
|
||||
?>
|
49
agents/IntermediateAgent.inc
Normal file
49
agents/IntermediateAgent.inc
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* NRE
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
* @copyright 2013 coderkun (http://www.coderkun.de)
|
||||
* @license http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://www.coderkun.de/projects/nre
|
||||
*/
|
||||
|
||||
namespace nre\agents;
|
||||
|
||||
|
||||
/**
|
||||
* The IntermediateAgent assumes the task of a module. There is only one
|
||||
* IntermediateAgent per request.
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
*/
|
||||
abstract class IntermediateAgent extends \nre\core\Agent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the layout if it was explicitly defined.
|
||||
*
|
||||
* @param string $agentName Agent name
|
||||
* @return string Layout of the IntermediateAgent
|
||||
*/
|
||||
public static function getLayout($agentName)
|
||||
{
|
||||
// Determine classname
|
||||
$className = Autoloader::concatClassNames($agentName, 'Agent');
|
||||
|
||||
// Check property
|
||||
if(isset($className::$layout)) {
|
||||
return $className::$layout;
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
395
agents/ToplevelAgent.inc
Normal file
395
agents/ToplevelAgent.inc
Normal file
|
@ -0,0 +1,395 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* NRE
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
* @copyright 2013 coderkun (http://www.coderkun.de)
|
||||
* @license http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://www.coderkun.de/projects/nre
|
||||
*/
|
||||
|
||||
namespace nre\agents;
|
||||
|
||||
|
||||
/**
|
||||
* The ToplevelAgent assumes the task of a FrontController. There is
|
||||
* only one per request.
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
*/
|
||||
class ToplevelAgent extends \nre\core\Agent
|
||||
{
|
||||
/**
|
||||
* Stage: Load
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const STAGE_LOAD = 'load';
|
||||
/**
|
||||
* Stage: Run
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const STAGE_RUN = 'run';
|
||||
|
||||
/**
|
||||
* Current request
|
||||
*
|
||||
* @var \nre\core\Request
|
||||
*/
|
||||
private $request;
|
||||
/**
|
||||
* Current response
|
||||
*
|
||||
* @var \nre\core\Response
|
||||
*/
|
||||
private $response;
|
||||
/**
|
||||
* Layout instace
|
||||
*
|
||||
* @var \nre\core\Layout
|
||||
*/
|
||||
private $layout = null;
|
||||
/**
|
||||
* IntermediateAgent instance
|
||||
*
|
||||
* @var IntermediateAgent
|
||||
*/
|
||||
private $intermediateAgent = null;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a ToplevelAgent.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ControllerNotValidException
|
||||
* @throws \nre\exceptions\ControllerNotFoundException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Log-system
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
// Store values
|
||||
$this->request = $request;
|
||||
$this->response = $response;
|
||||
|
||||
|
||||
// Create response
|
||||
$response = clone $response;
|
||||
$response->clearParams(1);
|
||||
$response->addParams(
|
||||
null,
|
||||
\nre\configs\CoreConfig::$defaults['action']
|
||||
);
|
||||
|
||||
// Call parent constructor
|
||||
parent::__construct($request, $response, $log, true);
|
||||
|
||||
|
||||
// Load IntermediateAgent
|
||||
$this->loadIntermediateAgent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Run the Controller of this Agent and its SubAgents.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @return \Exception Last occurred exception of SubAgents
|
||||
*/
|
||||
public function run(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
try {
|
||||
return $this->_run($request, $response);
|
||||
}
|
||||
catch(\nre\exceptions\AccessDeniedException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_FORBIDDEN, self::STAGE_RUN);
|
||||
}
|
||||
catch(\nre\exceptions\ParamsNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND, self::STAGE_RUN);
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND, self::STAGE_RUN);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE, self::STAGE_RUN);
|
||||
}
|
||||
catch(\nre\exceptions\ActionNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND, self::STAGE_RUN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate output of the Controller of this Agent and its
|
||||
* SubAgents.
|
||||
*
|
||||
* @param array $data View data
|
||||
* @return string Generated output
|
||||
*/
|
||||
public function render($data=array())
|
||||
{
|
||||
// Render IntermediateAgent
|
||||
$data = array();
|
||||
$data['intermediate'] = $this->intermediateAgent->render();
|
||||
|
||||
|
||||
// Render ToplevelAgent
|
||||
return parent::render($data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the IntermediateAgent.
|
||||
*
|
||||
* @return \nre\agents\IntermediateAgent IntermediateAgent
|
||||
*/
|
||||
public function getIntermediateAgent()
|
||||
{
|
||||
return $this->intermediateAgent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load a SubAgent and add it.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @throws \nre\exceptions\FatalDatamodelException
|
||||
* @throws \nre\exceptions\AgentNotFoundException
|
||||
* @throws \nre\exceptions\AgentNotValidException
|
||||
* @param string $agentName Name of the Agent to load
|
||||
* @param mixed … Additional parameters for the agent
|
||||
*/
|
||||
protected function addSubAgent($agentName)
|
||||
{
|
||||
try {
|
||||
call_user_func_array(
|
||||
array(
|
||||
$this,
|
||||
'_addSubAgent'
|
||||
),
|
||||
func_get_args()
|
||||
);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
throw new \nre\exceptions\FatalDatamodelException($e->getDatamodelMessage(), $e->getDatamodelErrorNumber());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load IntermediateAgent defined by the current request.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
*/
|
||||
private function loadIntermediateAgent()
|
||||
{
|
||||
try {
|
||||
$this->_loadIntermediateAgent();
|
||||
}
|
||||
catch(\nre\exceptions\ViewNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load IntermediateAgent defined by the current request.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
*/
|
||||
private function _loadIntermediateAgent()
|
||||
{
|
||||
// Determine IntermediateAgent
|
||||
$agentName = $this->response->getParam(1);
|
||||
if(is_null($agentName)) {
|
||||
$agentName = $this->request->getParam(1, 'intermediate');
|
||||
$this->response->addParam($agentName);
|
||||
}
|
||||
|
||||
// Load IntermediateAgent
|
||||
IntermediateAgent::load($agentName);
|
||||
|
||||
|
||||
// Determine Action
|
||||
$action = $this->response->getParam(2);
|
||||
if(is_null($action)) {
|
||||
$action = $this->request->getParam(2, 'action');
|
||||
$this->response->addParam($action);
|
||||
}
|
||||
|
||||
// Construct IntermediateAgent
|
||||
$this->intermediateAgent = \nre\agents\IntermediateAgent::factory(
|
||||
$agentName,
|
||||
$this->request,
|
||||
$this->response,
|
||||
$this->log
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run the Controller of this Agent and its SubAgents.
|
||||
*
|
||||
* @throws \nre\exceptions\AccessDeniedException
|
||||
* @throws \nre\exceptions\IdNotFoundException
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @return \Exception Last occurred exception of SubAgents
|
||||
*/
|
||||
private function _run(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Run IntermediateAgent
|
||||
$this->runIntermediateAgent();
|
||||
|
||||
|
||||
// TODO Request instead of response?
|
||||
$response = clone $response;
|
||||
$response->clearParams(2);
|
||||
$response->addParam(\nre\configs\CoreConfig::$defaults['action']);
|
||||
|
||||
|
||||
// Run ToplevelAgent
|
||||
return parent::run($request, $response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run IntermediateAgent.
|
||||
*
|
||||
* @throws \nre\exceptions\AccessDeniedException
|
||||
* @throws \nre\exceptions\ParamsNotValidException
|
||||
* @throws \nre\exceptions\IdNotFoundException
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
*/
|
||||
private function runIntermediateAgent()
|
||||
{
|
||||
$this->intermediateAgent->run(
|
||||
$this->request,
|
||||
$this->response
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle an error that occurred during
|
||||
* loading/cnostructing/running of the IntermediateAgent.
|
||||
*
|
||||
* @throws \nre\exceptions\ServiceUnavailableException
|
||||
* @param \Exception $exception Occurred exception
|
||||
* @param int $httpStatusCode HTTP-statuscode
|
||||
* @param string $stage Stage of execution
|
||||
*/
|
||||
private function error($exception, $httpStatusCode, $stage=self::STAGE_LOAD)
|
||||
{
|
||||
// Log error
|
||||
$this->log($exception, \nre\core\Logger::LOGMODE_AUTO);
|
||||
|
||||
|
||||
try {
|
||||
// Define ErrorAgent
|
||||
$this->response->clearParams(1);
|
||||
$this->response->addParams(
|
||||
\nre\configs\AppConfig::$defaults['intermediate-error'],
|
||||
\nre\configs\CoreConfig::$defaults['action'],
|
||||
$httpStatusCode
|
||||
);
|
||||
|
||||
// Load ErrorAgent
|
||||
$this->_loadIntermediateAgent();
|
||||
|
||||
// Run ErrorAgent
|
||||
if($stage == self::STAGE_RUN) {
|
||||
$this->_run($this->request, $this->response);
|
||||
}
|
||||
}
|
||||
catch(\nre\exceptions\ActionNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotValidException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotValidException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\ViewNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotValidException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotValidException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotFoundException $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
catch(Exception $e) {
|
||||
throw new \nre\exceptions\ServiceUnavailableException($e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/MailreceiverAgent.inc
Normal file
38
agents/bottomlevel/MailreceiverAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to generate a mail receiver salutation.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MailreceiverAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
40
agents/bottomlevel/MenuAgent.inc
Normal file
40
agents/bottomlevel/MenuAgent.inc
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a menu.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MenuAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Seminary menu
|
||||
$this->addSubAgent('Seminarymenu');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/MoodpicAgent.inc
Normal file
38
agents/bottomlevel/MoodpicAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a Moodpic.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MoodpicAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/QuestgroupshierarchypathAgent.inc
Normal file
38
agents/bottomlevel/QuestgroupshierarchypathAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display the Questgroups hierarchy path.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestgroupshierarchypathAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/SeminarybarAgent.inc
Normal file
38
agents/bottomlevel/SeminarybarAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a sidebar with Seminary related information.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class SeminarybarAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/SeminarymenuAgent.inc
Normal file
38
agents/bottomlevel/SeminarymenuAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a menu with Seminary related links.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class SeminarymenuAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/bottomlevel/UserrolesAgent.inc
Normal file
38
agents/bottomlevel/UserrolesAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\bottomlevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display and manage userroles.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class UserrolesAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: user.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function user(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
105
agents/intermediate/AchievementsAgent.inc
Normal file
105
agents/intermediate/AchievementsAgent.inc
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to list Achievements.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class AchievementsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: manage.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function manage(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: conditions.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function conditions(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
157
agents/intermediate/CharactergroupsAgent.inc
Normal file
157
agents/intermediate/CharactergroupsAgent.inc
Normal file
|
@ -0,0 +1,157 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display Character groups.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class CharactergroupsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: groupsgroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function groupsgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: creategroupsgroups.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function creategroupsgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: editgroupsgroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function editgroupsgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: deletegroupsgroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function deletegroupsgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: group.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function group(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: creategroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function creategroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: managegroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function managegroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: editgroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function editgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: deletegroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function deletegroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
105
agents/intermediate/CharactergroupsquestsAgent.inc
Normal file
105
agents/intermediate/CharactergroupsquestsAgent.inc
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display Character groups Quests.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class CharactergroupsquestsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: quest.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function quest(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: manage.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function manage(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
103
agents/intermediate/CharactergroupsqueststationsAgent.inc
Normal file
103
agents/intermediate/CharactergroupsqueststationsAgent.inc
Normal file
|
@ -0,0 +1,103 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display Character groups Quest stations.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class CharactergroupsqueststationsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: station.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function station(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittask.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edittask(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), 'charactergroups');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
105
agents/intermediate/CharactersAgent.inc
Normal file
105
agents/intermediate/CharactersAgent.inc
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to list registered Characters and their data.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class CharactersAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: character.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function character(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: register.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function register(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: manage.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function manage(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
agents/intermediate/CharactertypesAgent.inc
Normal file
79
agents/intermediate/CharactertypesAgent.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to handle Charactertyes of a Seminary.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class CharactertypesAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/ErrorAgent.inc
Normal file
38
agents/intermediate/ErrorAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to show an error page.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class ErrorAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/IntroductionAgent.inc
Normal file
38
agents/intermediate/IntroductionAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to show an introduction page.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class IntroductionAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
105
agents/intermediate/LibraryAgent.inc
Normal file
105
agents/intermediate/LibraryAgent.inc
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to list Quest topics.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class LibraryAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: topic.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function topic(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: manage.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function manage(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/MailAgent.inc
Normal file
38
agents/intermediate/MailAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to generate a mail-message.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MailAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
53
agents/intermediate/MapAgent.inc
Normal file
53
agents/intermediate/MapAgent.inc
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a map.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MapAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/MediaAgent.inc
Normal file
38
agents/intermediate/MediaAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to process and show media.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MediaAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/PagesAgent.inc
Normal file
38
agents/intermediate/PagesAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to manage additional pages.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class PagesAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/QrAgent.inc
Normal file
38
agents/intermediate/QrAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to redirect to a page from a (short) QR-code link.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QrAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/QrcodesAgent.inc
Normal file
38
agents/intermediate/QrcodesAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to generate and show QR-codes.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QrcodesAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
136
agents/intermediate/QuestgroupsAgent.inc
Normal file
136
agents/intermediate/QuestgroupsAgent.inc
Normal file
|
@ -0,0 +1,136 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display Questgroups.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestgroupsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: questgroup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function questgroup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittexts.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edittexts(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: moveup.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function moveup(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: movedown.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function movedown(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
24
agents/intermediate/QuestgroupshierarchyAgent.inc
Normal file
24
agents/intermediate/QuestgroupshierarchyAgent.inc
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to manage Questgroupshierarchy.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestgroupshierarchyAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
}
|
||||
|
||||
?>
|
168
agents/intermediate/QuestsAgent.inc
Normal file
168
agents/intermediate/QuestsAgent.inc
Normal file
|
@ -0,0 +1,168 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display Quests.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuestsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: quest.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function quest(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: submissions.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function submissions(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: submission.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function submission(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittask.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edittask(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittexts.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edittexts(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'questgroup', $request->getParam(3), $request->getParam(4));
|
||||
|
||||
// Add Questgroups hierarchy path
|
||||
$this->addSubAgent('Questgroupshierarchypath', 'index', $request->getParam(3), $request->getParam(4), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
105
agents/intermediate/SeminariesAgent.inc
Normal file
105
agents/intermediate/SeminariesAgent.inc
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to list registered seminaries.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class SeminariesAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'index');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: seminary.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function seminary(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: create.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function create(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'index');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: edit.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function edit(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: copy.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function copy(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: delete.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function delete(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3), $request->getParam(1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/intermediate/UploadsAgent.inc
Normal file
38
agents/intermediate/UploadsAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to process and show user uploads.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class UploadsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
50
agents/intermediate/UsersAgent.inc
Normal file
50
agents/intermediate/UsersAgent.inc
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to list registered users and their data.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class UsersAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: user.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function user(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
$this->addSubAgent('Userroles', 'user');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
40
agents/intermediate/XplevelsAgent.inc
Normal file
40
agents/intermediate/XplevelsAgent.inc
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\intermediate;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to handle XP-levels of a Seminary.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class XplevelsAgent extends \nre\agents\IntermediateAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function manage(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add Moodpic
|
||||
$this->addSubAgent('Moodpic', 'seminary', $request->getParam(3));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
80
agents/toplevel/AjaxAgent.inc
Normal file
80
agents/toplevel/AjaxAgent.inc
Normal file
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to return a JSON-string used by AJAX.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class AjaxAgent extends \hhu\z\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new AjaxAgent.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
|
||||
|
||||
$this->setLanguage($request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set requested language.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
*/
|
||||
private function setLanguage(\nre\core\Request $request)
|
||||
{
|
||||
// Set domain
|
||||
$domain = \nre\configs\AppConfig::$app['genericname'];
|
||||
|
||||
// Get language
|
||||
$locale = $request->getGetParam('lang', 'language');
|
||||
if(is_null($locale)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Load translation
|
||||
putenv("LC_ALL=$locale");
|
||||
setlocale(LC_ALL, $locale);
|
||||
bindtextdomain($domain, ROOT.DS.\nre\configs\AppConfig::$dirs['locale']);
|
||||
textdomain($domain);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
51
agents/toplevel/BinaryAgent.inc
Normal file
51
agents/toplevel/BinaryAgent.inc
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display binary data (e. g. images).
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class BinaryAgent extends \hhu\z\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new BinaryAgent.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
38
agents/toplevel/FaultAgent.inc
Normal file
38
agents/toplevel/FaultAgent.inc
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a toplevel error page.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class FaultAgent extends \nre\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
155
agents/toplevel/HtmlAgent.inc
Normal file
155
agents/toplevel/HtmlAgent.inc
Normal file
|
@ -0,0 +1,155 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent to display a HTML-page.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class HtmlAgent extends \hhu\z\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new HtmlAgent.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
|
||||
|
||||
$this->setLanguage($request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Add menu
|
||||
$this->addSubAgent('Menu');
|
||||
|
||||
// Add Seminary sidebar
|
||||
$this->addSubAgent('Seminarybar');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Set requested language.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
*/
|
||||
private function setLanguage(\nre\core\Request $request)
|
||||
{
|
||||
// Set domain
|
||||
$domain = \nre\configs\AppConfig::$app['genericname'];
|
||||
|
||||
// Get language
|
||||
$locale = $this->determineLanguage($request);
|
||||
|
||||
// Set Locale and Load translation
|
||||
if(!is_null($locale))
|
||||
{
|
||||
putenv("LC_ALL=$locale");
|
||||
setlocale(LC_ALL, $locale);
|
||||
\Locale::setDefault($locale);
|
||||
|
||||
bindtextdomain($domain, ROOT.DS.\nre\configs\AppConfig::$dirs['locale']);
|
||||
textdomain($domain);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine which language is either requested directly or by browser
|
||||
* setting.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @return string Requested language or default one
|
||||
*/
|
||||
private function determineLanguage(\nre\core\Request $request)
|
||||
{
|
||||
// Get supported languages
|
||||
$supportedLanguages = \nre\configs\AppConfig::$app['languages'];
|
||||
if(empty($supportedLanguages)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get requested language
|
||||
$language = $request->getGetParam('lang', 'language');
|
||||
if(!is_null($language) && array_key_exists($language, $supportedLanguages)) {
|
||||
return $supportedLanguages[$language];
|
||||
}
|
||||
|
||||
// Negotiate language
|
||||
return $this->negotiateLanguage($supportedLanguages, $request->getBrowserLanguages());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Negotiate which language the browser wants most out of the supported
|
||||
* languages.
|
||||
*
|
||||
* @param array $supportedLanguages List of supported languages
|
||||
* @param array $browserLanguages List of browser languages
|
||||
* @return string Negotiated language or default one
|
||||
*/
|
||||
private function negotiateLanguage($supportedLanguages, $browserLanguages)
|
||||
{
|
||||
if(!is_null($browserLanguages))
|
||||
{
|
||||
// Create array with languages and their ratings
|
||||
$parsedLanguages = array();
|
||||
$languages = explode(',', $browserLanguages);
|
||||
foreach($languages as &$language)
|
||||
{
|
||||
if(($pos = strpos($language, ';q=')) !== false) {
|
||||
$parsedLanguages[substr($language, 1, min(2, $pos-1))] = floatval(substr($language, $pos+3));
|
||||
}
|
||||
else {
|
||||
$parsedLanguages[$language] = 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
// Sort languages by their ratings
|
||||
arsort($parsedLanguages);
|
||||
|
||||
// Get highest supported language
|
||||
foreach($parsedLanguages as $language => $rating) {
|
||||
if(array_key_exists($language, $supportedLanguages)) {
|
||||
return $supportedLanguages[$language];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Return default language
|
||||
return $supportedLanguages[array_keys($supportedLanguages)[0]];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
52
agents/toplevel/HtmlmailAgent.inc
Normal file
52
agents/toplevel/HtmlmailAgent.inc
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
|
||||
/**
|
||||
* Agent for generating a HTML-mail message.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class HtmlmailAgent extends \hhu\z\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new HtmlmailAgent.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
$this->addSubagent('mailreceiver', 'index', $request->getParam(3));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
53
agents/toplevel/TextmailAgent.inc
Normal file
53
agents/toplevel/TextmailAgent.inc
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents\toplevel;
|
||||
|
||||
/**
|
||||
* Agent for generating a simple text-mail message.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class TextmailAgent extends \hhu\z\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new TextmailAgent.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Action: index.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function index(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
$this->addSubagent('mailreceiver', 'index', $request->getParam(3));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
250
apis/WebApi.inc
Normal file
250
apis/WebApi.inc
Normal file
|
@ -0,0 +1,250 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* NRE
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
* @copyright 2013 coderkun (http://www.coderkun.de)
|
||||
* @license http://www.gnu.org/licenses/gpl.html
|
||||
* @link http://www.coderkun.de/projects/nre
|
||||
*/
|
||||
|
||||
namespace nre\apis;
|
||||
|
||||
|
||||
/**
|
||||
* WebApi-implementation.
|
||||
*
|
||||
* This class runs and renders an web-applictaion.
|
||||
*
|
||||
* @author coderkun <olli@coderkun.de>
|
||||
*/
|
||||
class WebApi extends \nre\core\Api
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new WebApi.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
new \nre\requests\WebRequest(),
|
||||
new \nre\responses\WebResponse()
|
||||
);
|
||||
|
||||
// Add routes
|
||||
$this->addRoutes();
|
||||
|
||||
// Disable screen logging for AJAX requests
|
||||
if($this->request->getParam(0, 'toplevel') == 'ajax') {
|
||||
$this->log->disableAutoLogToScreen();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Run application.
|
||||
*
|
||||
* This method runs the application and handles all errors.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
try {
|
||||
$exception = parent::run();
|
||||
|
||||
if(!is_null($exception)) {
|
||||
$this->errorService($exception);
|
||||
}
|
||||
}
|
||||
catch(\nre\exceptions\ServiceUnavailableException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ActionNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\FatalDatamodelException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ViewNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNoaatValidException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_SERVICE_UNAVAILABLE);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotFoundException $e) {
|
||||
$this->error($e, \nre\core\WebUtils::HTTP_NOT_FOUND);
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotValidException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render output.
|
||||
*/
|
||||
public function render()
|
||||
{
|
||||
// Generate output
|
||||
parent::render();
|
||||
|
||||
|
||||
// Set HTTP-header
|
||||
$this->response->header();
|
||||
|
||||
// Show output
|
||||
echo $this->response->getOutput();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Add routes (normal and reverse) defined in the AppConfig.
|
||||
*/
|
||||
private function addRoutes()
|
||||
{
|
||||
// Normal routes
|
||||
if(property_exists('\nre\configs\AppConfig', 'routes')) {
|
||||
foreach(\nre\configs\AppConfig::$routes as &$route) {
|
||||
$this->request->addRoute($route[0], $route[1], $route[2]);
|
||||
}
|
||||
}
|
||||
|
||||
// Reverse routes
|
||||
if(property_exists('\nre\configs\AppConfig', 'reverseRoutes')) {
|
||||
foreach(\nre\configs\AppConfig::$reverseRoutes as &$route) {
|
||||
$this->request->addReverseRoute($route[0], $route[1], $route[2]);
|
||||
}
|
||||
}
|
||||
|
||||
// Revalidate request
|
||||
$this->request->revalidate();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle an error that orrcurred during the
|
||||
* loading/constructing/running of the ToplevelAgent.
|
||||
*
|
||||
* @param \Exception $exception Occurred exception
|
||||
* @param int $httpStatusCode HTTP-statuscode
|
||||
*/
|
||||
private function error(\nre\core\Exception $exception, $httpStatusCode)
|
||||
{
|
||||
// Log error message
|
||||
$this->log($exception, \nre\core\Logger::LOGMODE_AUTO);
|
||||
|
||||
try {
|
||||
// Set agent for handling errors
|
||||
$this->response->clearParams();
|
||||
$this->response->addParams(
|
||||
\nre\configs\AppConfig::$defaults['toplevel-error'],
|
||||
\nre\configs\AppConfig::$defaults['intermediate-error'],
|
||||
\nre\configs\CoreConfig::$defaults['action'],
|
||||
$httpStatusCode
|
||||
);
|
||||
|
||||
// Run this agent
|
||||
parent::run();
|
||||
}
|
||||
catch(\nre\exceptions\ServiceUnavailableException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ActionNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\DatamodelException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotValidException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\DriverNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotValidException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ModelNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ViewNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotValidException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\ControllerNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotValidException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(\nre\exceptions\AgentNotFoundException $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
catch(Exception $e) {
|
||||
$this->errorService($e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle a error which cannot be handles by the system (and
|
||||
* HTTP 503).
|
||||
*
|
||||
* @param \Exception $exception Occurred exception
|
||||
*/
|
||||
private function errorService($exception)
|
||||
{
|
||||
// Log error message
|
||||
$this->log($exception, \nre\core\Logger::LOGMODE_AUTO);
|
||||
|
||||
// Set HTTP-rtatuscode
|
||||
$this->response->addHeader(\nre\core\WebUtils::getHttpHeader(503));
|
||||
|
||||
|
||||
// Read and print static error file
|
||||
$fileName = ROOT.DS.\nre\configs\CoreConfig::getClassDir('views').DS.\nre\configs\CoreConfig::$defaults['errorFile'].\nre\configs\CoreConfig::getFileExt('views');
|
||||
ob_start();
|
||||
include($fileName);
|
||||
$this->response->setOutput(ob_get_clean());
|
||||
|
||||
|
||||
// Prevent further execution
|
||||
$this->response->setExit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
134
app/Controller.inc
Normal file
134
app/Controller.inc
Normal file
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing an application Controller.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class Controller extends \nre\core\Controller
|
||||
{
|
||||
/**
|
||||
* Required components
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $components = array('auth');
|
||||
|
||||
/**
|
||||
* Logger instance
|
||||
*
|
||||
* @var \nre\core\Logger
|
||||
*/
|
||||
protected $log = null;
|
||||
/**
|
||||
* Linker instance
|
||||
*
|
||||
* @var \nre\core\Linker
|
||||
*/
|
||||
protected $linker = null;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new application Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param \nre\core\Agent $agent Corresponding Agent
|
||||
*/
|
||||
public function __construct($layoutName, $action, $agent)
|
||||
{
|
||||
parent::__construct($layoutName, $action, $agent);
|
||||
|
||||
// Create logger
|
||||
$this->log = new \nre\core\Logger();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Prefilter that is executed before running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function preFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::preFilter($request, $response);
|
||||
|
||||
// Create linker
|
||||
$this->linker = new \nre\core\Linker($request);
|
||||
$this->set('linker', $this->linker);
|
||||
|
||||
// Create text formatter
|
||||
$this->set('t', new \hhu\z\TextFormatter($this->linker));
|
||||
|
||||
// Create date and time and number formatter
|
||||
$this->set('dateFormatter', new \IntlDateFormatter(
|
||||
//\nre\core\Config::getDefault('locale'),
|
||||
\Locale::getDefault(),
|
||||
\IntlDateFormatter::MEDIUM,
|
||||
\IntlDateFormatter::NONE,
|
||||
NULL
|
||||
));
|
||||
$this->set('timeFormatter', new \IntlDateFormatter(
|
||||
//\nre\core\Config::getDefault('locale'),
|
||||
\Locale::getDefault(),
|
||||
\IntlDateFormatter::NONE,
|
||||
\IntlDateFormatter::SHORT,
|
||||
NULL
|
||||
));
|
||||
$this->set('numberFormatter', new \NumberFormatter(
|
||||
//\nre\core\Config::getDefault('locale'),
|
||||
\Locale::getDefault(),
|
||||
\NumberFormatter::DEFAULT_STYLE
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Postfilter that is executed after running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function postFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::postFilter($request, $response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Log an error.
|
||||
*
|
||||
* @param string $message Error message to log
|
||||
* @param int $logMode Log mode (optional)
|
||||
*/
|
||||
protected function log($message, $logMode=\nre\core\Logger::LOGMODE_AUTO)
|
||||
{
|
||||
$this->log->log($message, $logMode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
42
app/Model.inc
Normal file
42
app/Model.inc
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing an application Model.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class Model extends \nre\models\DatabaseModel
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new application Model.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('mysqli', \nre\configs\AppConfig::$database);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
213
app/TextFormatter.inc
Normal file
213
app/TextFormatter.inc
Normal file
|
@ -0,0 +1,213 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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;
|
||||
|
||||
|
||||
/**
|
||||
* Class to format text with different syntax tags.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class TextFormatter
|
||||
{
|
||||
/**
|
||||
* Linker to create links.
|
||||
*
|
||||
* @var \nre\core\Linker
|
||||
*/
|
||||
private $linker;
|
||||
/**
|
||||
* Media-Model to retrieve media data
|
||||
*
|
||||
* @static
|
||||
* @var \nre\core\Model
|
||||
*/
|
||||
private static $Media = null;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Create a new text formatter.
|
||||
*
|
||||
* @param \nre\core\Linker $linker Linker to create links with
|
||||
*/
|
||||
public function __construct(\nre\core\Linker $linker)
|
||||
{
|
||||
$this->linker = $linker;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Format a string.
|
||||
*
|
||||
* @param string $string String to format
|
||||
* @return string Formatted string
|
||||
*/
|
||||
public function t($string)
|
||||
{
|
||||
// Use Textile
|
||||
\hhu\z\lib\Textile::load();
|
||||
$textileParser = new \Netcarver\Textile\Parser('html5');
|
||||
$string = $textileParser->textileRestricted($string, false, false);
|
||||
|
||||
// Add link targets
|
||||
$string = $this->tLinks($string);
|
||||
|
||||
// Handle custom formatting
|
||||
$string = $this->tCustom($string);
|
||||
|
||||
// Handle Seminarymedia
|
||||
$string = $this->tSeminarymedia($string);
|
||||
|
||||
|
||||
// Return processed string
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the Media-Model if it is not loaded
|
||||
*
|
||||
* @return boolean Whether the Media-Model has been loaded or not
|
||||
*/
|
||||
private function loadMediaModel()
|
||||
{
|
||||
// Do not load Model if it has already been loaded
|
||||
if(!is_null(self::$Media)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
// Load class
|
||||
Model::load('media');
|
||||
|
||||
// Construct Model
|
||||
self::$Media = Model::factory('media');
|
||||
}
|
||||
catch(\Exception $e) {
|
||||
}
|
||||
|
||||
|
||||
// Return whether Media-Model has been loaded or not
|
||||
return !is_null(self::$Media);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add “target” attribute to anchors (links).
|
||||
*
|
||||
* @param string $string String to format
|
||||
* @return string Formatted string
|
||||
*/
|
||||
private function tLinks($string)
|
||||
{
|
||||
if(!class_exists('\DOMDocument')) {
|
||||
return $string;
|
||||
}
|
||||
try {
|
||||
$dom = new \DOMDocument('1.0');
|
||||
$dom->loadHTML('<!DOCTYPE html><html><head><meta charset="utf-8" /></head><body>'.$string.'</body></html>');
|
||||
foreach($dom->getElementsByTagName('a') as $link) {
|
||||
$link->setAttribute('target', '_blank');
|
||||
}
|
||||
$body = $dom->getElementsByTagName('body')->item(0);
|
||||
$string = $dom->saveHTML($body);
|
||||
|
||||
return trim(substr($string, 6, strlen($string) - 13));
|
||||
}
|
||||
catch(\Exception $e) {
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle custom formatting syntax.
|
||||
*
|
||||
* @Deprecated
|
||||
* @param string $string String to format
|
||||
* @return string Formatted string
|
||||
*/
|
||||
private function tCustom($string)
|
||||
{
|
||||
// Important text
|
||||
$string = str_replace('[strong]', '<strong>', $string);
|
||||
$string = str_replace('[/strong]', '</strong>', $string);
|
||||
|
||||
// Create tables
|
||||
$string = preg_replace('/(\[table\])\s+/u', '$1', $string);
|
||||
$string = preg_replace('/\s*(\[tr\])\s*/u', '$1', $string);
|
||||
$string = preg_replace('%\s+(\[/table\])%u', '$1', $string);
|
||||
$string = preg_replace('%\s*(\[/tr\])\s*%u', '$1', $string);
|
||||
$string = str_replace('[table]', '</p><table>', $string);
|
||||
$string = str_replace('[/table]', '</table><p>', $string);
|
||||
$string = str_replace('[tr]', '<tr>', $string);
|
||||
$string = str_replace('[/tr]', '</tr>', $string);
|
||||
$string = str_replace('[th]', '<th>', $string);
|
||||
$string = str_replace('[/th]', '</th>', $string);
|
||||
$string = str_replace('[td]', '<td>', $string);
|
||||
$string = str_replace('[/td]', '</td>', $string);
|
||||
|
||||
|
||||
// Return new string
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle including Seminarymedia.
|
||||
*
|
||||
* @param string $string String to format
|
||||
* @return string Formatted string
|
||||
*/
|
||||
private function tSeminarymedia($string)
|
||||
{
|
||||
$seminarymedia = array();
|
||||
preg_match_all('/\[seminarymedia:(\d+)\]/iu', $string, $matches); //, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
|
||||
$seminarymediaIds = array_unique($matches[1]);
|
||||
foreach($seminarymediaIds as &$seminarymediaId)
|
||||
{
|
||||
$replacement = null;
|
||||
if(!is_null(\hhu\z\controllers\SeminaryController::$seminary) && $this->loadMediaModel())
|
||||
{
|
||||
try {
|
||||
$medium = self::$Media->getSeminaryMediaById($seminarymediaId);
|
||||
$replacement = sprintf(
|
||||
'<img src="%s" alt="%s" />',
|
||||
$this->linker->link(array('media','seminary', \hhu\z\controllers\SeminaryController::$seminary['url'],$medium['url'])),
|
||||
$medium['description']
|
||||
);
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
$seminarymedia[$seminarymediaId] = $replacement;
|
||||
}
|
||||
foreach($seminarymedia as $seminarymediaId => $replacement) {
|
||||
$string = str_replace("[seminarymedia:$seminarymediaId]", $replacement, $string);
|
||||
}
|
||||
|
||||
|
||||
// Return new string
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
214
app/Utils.inc
Normal file
214
app/Utils.inc
Normal file
|
@ -0,0 +1,214 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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;
|
||||
|
||||
|
||||
/**
|
||||
* Class for implementing utility methods.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class Utils
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Mask HTML-chars for save output.
|
||||
*
|
||||
* @static
|
||||
* @param string $string String to be masked
|
||||
* @return string Masked string
|
||||
*/
|
||||
public static function t($string)
|
||||
{
|
||||
return nl2br(htmlspecialchars($string));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ‚htmlspecialchars‘ with support for UTF-8.
|
||||
*
|
||||
* @static
|
||||
* @param string $string String to be masked
|
||||
* @return string Masked string
|
||||
*/
|
||||
public static function htmlspecialchars_utf8($string)
|
||||
{
|
||||
return htmlspecialchars($string, ENT_COMPAT, 'UTF-8');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cut a string to the given length but only word boundaries.
|
||||
*
|
||||
* @static
|
||||
* @param string $string String to cut
|
||||
* @param int $length Length to cut string
|
||||
* @param int $scope Maximum length to cut string regardless word boundaries
|
||||
* @return string Cutted string
|
||||
*/
|
||||
public static function shortenString($string, $length, $scope)
|
||||
{
|
||||
// Determine length
|
||||
$length = min($length, strlen($string));
|
||||
|
||||
// Look for word boundary
|
||||
if(($pos = strpos($string, ' ', $length)) !== false)
|
||||
{
|
||||
// Check if boundary is outside of scope
|
||||
if($pos > $length + $scope) {
|
||||
$pos = strrpos(substr($string, 0, $pos), ' ');
|
||||
}
|
||||
}
|
||||
else {
|
||||
$pos = strlen($string);
|
||||
}
|
||||
|
||||
|
||||
// Cut string and return it
|
||||
return substr($string, 0, $pos);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send an e‑mail.
|
||||
*
|
||||
* @throws \hhu\z\exceptions\MailingException
|
||||
* @param mixed $to One (string) or many (array) receivers
|
||||
* @param string $messageAction Message Action
|
||||
* @param boolean $html Whether mail should be formatted as HTML or not
|
||||
* @param array $params Parameters to pass
|
||||
* @param \nre\core\Linker $linker Linker instance
|
||||
*/
|
||||
public static function sendMail($to, $messageAction, $html=false, $params=null, $linker=null)
|
||||
{
|
||||
// Check configuration
|
||||
if(
|
||||
empty(\nre\configs\AppConfig::$mail['host']) ||
|
||||
empty(\nre\configs\AppConfig::$mail['port']) ||
|
||||
empty(\nre\configs\AppConfig::$mail['username'])
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Load classes
|
||||
\hhu\z\lib\PHPMailerAutoload::load();
|
||||
\hhu\z\lib\PHPMailer::load();
|
||||
\hhu\z\lib\SMTP::load();
|
||||
|
||||
// Create mailer
|
||||
$mail = new \PHPMailer();
|
||||
|
||||
// Configure mailer
|
||||
$mail->isSMTP();
|
||||
$mail->Host = \nre\configs\AppConfig::$mail['host'];
|
||||
$mail->Port = \nre\configs\AppConfig::$mail['port'];
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = \nre\configs\AppConfig::$mail['username'];
|
||||
$mail->Password = \nre\configs\AppConfig::$mail['password'];
|
||||
$mail->SMTPSecure = \nre\configs\AppConfig::$mail['secure'];
|
||||
|
||||
// Set properties
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->From = \nre\configs\AppConfig::$app['mailsender'];
|
||||
$mail->FromName = \nre\configs\AppConfig::$app['name'];
|
||||
if(!is_array($to)) {
|
||||
$to = array($to);
|
||||
}
|
||||
foreach($to as &$receiver) {
|
||||
$mail->addAddress($receiver);
|
||||
}
|
||||
if($html) {
|
||||
$mail->isHTML(true);
|
||||
}
|
||||
|
||||
// Create message
|
||||
try {
|
||||
// Create MailApi
|
||||
$mailApi = new \hhu\z\apis\MailApi();
|
||||
if(!is_null($linker)) {
|
||||
$mailApi->setLinker($linker);
|
||||
}
|
||||
$mailApi->setMessage($messageAction);
|
||||
$mailApi->setParams($params);
|
||||
if($html) {
|
||||
$mailApi->setHTML();
|
||||
}
|
||||
|
||||
// Render message
|
||||
$exception = $mailApi->run();
|
||||
if(!is_null($exception)) {
|
||||
return $exception;
|
||||
}
|
||||
$mail->Subject = $mailApi->getSubject();
|
||||
$mail->Body = $mailApi->render();
|
||||
|
||||
// Try to render alternativ plaintext message
|
||||
if($html)
|
||||
{
|
||||
$mailApi->setHTML(false);
|
||||
|
||||
// Render message
|
||||
$exception = $mailApi->run();
|
||||
if(is_null($exception))
|
||||
{
|
||||
try {
|
||||
$mail->AltBody = $mailApi->render();
|
||||
}
|
||||
catch(\nre\core\Exception $e) {
|
||||
// No alternative plaintext available
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(\nre\core\Exception $e) {
|
||||
throw new \hhu\z\exceptions\MailingException($e->getMessage());
|
||||
}
|
||||
|
||||
|
||||
// Return status
|
||||
if(!$mail->send()) {
|
||||
throw new \hhu\z\exceptions\MailingException($mail->ErrorInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Detect Mimetype of a file.
|
||||
*
|
||||
* @param string $filename Name of file to detect Mimetype of
|
||||
* @param string $defaultMimetype Default Mimetype to use
|
||||
* @return string Detected Mimetype of file
|
||||
*/
|
||||
public static function getMimetype($filename, $defaultMimetype=null)
|
||||
{
|
||||
$mimetype = (!is_null($defaultMimetype)) ? $defaultMimetype : 'application/octet-stream';
|
||||
// Use Fileinfo
|
||||
if(class_exists('\finfo'))
|
||||
{
|
||||
$finfo = new \finfo(FILEINFO_MIME_TYPE);
|
||||
if(!is_null($finfo)) {
|
||||
$mimetype = $finfo->file($filename);
|
||||
}
|
||||
}
|
||||
// Use deprecated mime_content_type()
|
||||
elseif(function_exists('mime_content_type')) {
|
||||
$mimetype = mime_content_type($filename);
|
||||
}
|
||||
|
||||
|
||||
return $mimetype;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
268
app/agents/QuesttypeAgent.inc
Normal file
268
app/agents/QuesttypeAgent.inc
Normal file
|
@ -0,0 +1,268 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a QuesttypeAgent.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class QuesttypeAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
/**
|
||||
* Current request
|
||||
*
|
||||
* @var \nre\core\Request
|
||||
*/
|
||||
private $request;
|
||||
/**
|
||||
* Current response
|
||||
*
|
||||
* @var \nre\core\Response
|
||||
*/
|
||||
private $response;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load a QuesttypeAgent.
|
||||
*
|
||||
* @static
|
||||
* @throws \hhu\z\exceptions\QuesttypeAgentNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeAgentNotValidException
|
||||
* @param string $questtypeName Name of the QuesttypeAgent to load
|
||||
*/
|
||||
public static function load($questtypeName)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($questtypeName);
|
||||
|
||||
try {
|
||||
// Load class
|
||||
static::loadClass($questtypeName, $className);
|
||||
|
||||
// Validate class
|
||||
static::checkClass($className, get_class());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotValidException $e) {
|
||||
throw new \hhu\z\exceptions\QuesttypeAgentNotValidException($e->getClassName());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotFoundException $e) {
|
||||
throw new \hhu\z\exceptions\QuesttypeAgentNotFoundException($e->getClassName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate a QuesttypeAgent (Factory Pattern).
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotFoundException
|
||||
* @param string $questtypeName Name of the QuesttypeAgent to instantiate
|
||||
* @param Request $request Current request
|
||||
* @param Response $response Current respone
|
||||
* @param Logger $log Log-system
|
||||
*/
|
||||
public static function factory($questtypeName, \nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($questtypeName);
|
||||
|
||||
// Construct and return Questmodule
|
||||
return new $className($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine the Agent-classname for the given Questtype-name.
|
||||
*
|
||||
* @static
|
||||
* @param string $questtypeName Questtype-name to get Agent-classname of
|
||||
* @param string $agentType Agent type of given Agent name
|
||||
* @return string Classname for the Questtype-name
|
||||
*/
|
||||
private static function getClassName($questtypeName, $agentType=null)
|
||||
{
|
||||
$className = \nre\core\ClassLoader::concatClassNames($questtypeName, \nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripNamespace(get_class())), 'agent');
|
||||
|
||||
|
||||
return \nre\configs\AppConfig::$app['namespace']."questtypes\\$className";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the class of a QuesttypeAgent.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotFoundException
|
||||
* @param string $questtypeName Name of the QuesttypeAgent to load
|
||||
* @param string $fullClassName Name of the class to load
|
||||
*/
|
||||
private static function loadClass($questtypeName, $fullClassName)
|
||||
{
|
||||
// Determine folder to look in
|
||||
$className = explode('\\', $fullClassName);
|
||||
$className = array_pop($className);
|
||||
|
||||
// Determine filename
|
||||
$fileName = ROOT.DS.\nre\configs\AppConfig::$dirs['questtypes'].DS.strtolower($questtypeName).DS.$className.\nre\configs\CoreConfig::getFileExt('includes');
|
||||
|
||||
// Check file
|
||||
if(!file_exists($fileName))
|
||||
{
|
||||
throw new \nre\exceptions\ClassNotFoundException(
|
||||
$fullClassName
|
||||
);
|
||||
}
|
||||
|
||||
// Include file
|
||||
include_once($fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check inheritance of the QuesttypeAgent-class.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotValidException
|
||||
* @param string $className Name of the class to check
|
||||
* @param string $parentClassName Name of the parent class
|
||||
*/
|
||||
public static function checkClass($className, $parentClassName)
|
||||
{
|
||||
// Check if class is subclass of parent class
|
||||
if(!is_subclass_of($className, $parentClassName)) {
|
||||
throw new \nre\exceptions\ClassNotValidException(
|
||||
$className
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new QuesttypeAgent.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotFoundException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Log-system
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
// Store values
|
||||
$this->request = $request;
|
||||
$this->response = $response;
|
||||
|
||||
|
||||
// Call parent constructor
|
||||
parent::__construct($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Save the answers of a Character for a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $answers Character answers for the Quest
|
||||
*/
|
||||
public function saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers)
|
||||
{
|
||||
$this->controller->saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if answers of a Character for a Quest match the correct ones.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $answers Character answers for the Quest
|
||||
*/
|
||||
public function matchAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers)
|
||||
{
|
||||
return $this->controller->matchAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the Controller of this Agent.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotFoundException
|
||||
*/
|
||||
protected function loadController()
|
||||
{
|
||||
// Determine Controller name
|
||||
$controllerName = \nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::getClassName(get_class($this)));
|
||||
|
||||
// Determine ToplevelAgent
|
||||
$toplevelAgentName = $this->response->getParam(0);
|
||||
if(is_null($toplevelAgentName)) {
|
||||
$toplevelAgentName = $this->request->getParam(0, 'toplevel');
|
||||
$this->response->addParam($toplevelAgentName);
|
||||
}
|
||||
|
||||
// Determine Action
|
||||
$action = $this->response->getParam(2);
|
||||
if(is_null($action)) {
|
||||
$action = $this->request->getParam(2, 'action');
|
||||
$this->response->addParam($action);
|
||||
}
|
||||
|
||||
|
||||
// Load Controller
|
||||
\hhu\z\controllers\QuesttypeController::load($controllerName);
|
||||
|
||||
// Construct Controller
|
||||
$this->controller = \hhu\z\controllers\QuesttypeController::factory($controllerName, $toplevelAgentName, $action, $this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
298
app/agents/StationtypeAgent.inc
Normal file
298
app/agents/StationtypeAgent.inc
Normal file
|
@ -0,0 +1,298 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a StationtypeAgent.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class StationtypeAgent extends \nre\agents\BottomlevelAgent
|
||||
{
|
||||
/**
|
||||
* Current request
|
||||
*
|
||||
* @var \nre\core\Request
|
||||
*/
|
||||
private $request;
|
||||
/**
|
||||
* Current response
|
||||
*
|
||||
* @var \nre\core\Response
|
||||
*/
|
||||
private $response;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load a StationtypeAgent.
|
||||
*
|
||||
* @static
|
||||
* @throws \hhu\z\exceptions\StationtypeAgentNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeAgentNotValidException
|
||||
* @param string $stationtypeName Name of the StationtypeAgent to load
|
||||
*/
|
||||
public static function load($stationtypeName)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($stationtypeName);
|
||||
|
||||
try {
|
||||
// Load class
|
||||
static::loadClass($stationtypeName, $className);
|
||||
|
||||
// Validate class
|
||||
static::checkClass($className, get_class());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotValidException $e) {
|
||||
throw new \hhu\z\exceptions\StationtypeAgentNotValidException($e->getClassName());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotFoundException $e) {
|
||||
throw new \hhu\z\exceptions\StationtypeAgentNotFoundException($e->getClassName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate a StationtypeAgent (Factory Pattern).
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotFoundException
|
||||
* @param string $stationtypeName Name of the StationtypeAgent to instantiate
|
||||
* @param Request $request Current request
|
||||
* @param Response $response Current respone
|
||||
* @param Logger $log Log-system
|
||||
*/
|
||||
public static function factory($stationtypeName, \nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($stationtypeName);
|
||||
|
||||
// Construct and return Stationmodule
|
||||
return new $className($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine the Agent-classname for the given Stationtype-name.
|
||||
*
|
||||
* @static
|
||||
* @param string $stationtypeName Stationtype-name to get Agent-classname of
|
||||
* @param string $agentType Agent type of given Agent name
|
||||
* @return string Classname for the Stationtype-name
|
||||
*/
|
||||
private static function getClassName($stationtypeName, $agentType=null)
|
||||
{
|
||||
$className = \nre\core\ClassLoader::concatClassNames(
|
||||
$stationtypeName,
|
||||
\nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripNamespace(get_class())),
|
||||
'agent'
|
||||
);
|
||||
|
||||
|
||||
return \nre\configs\AppConfig::$app['namespace']."stationtypes\\$className";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the class of a StationtypeAgent.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotFoundException
|
||||
* @param string $stationtypeName Name of the StationtypeAgent to load
|
||||
* @param string $fullClassName Name of the class to load
|
||||
*/
|
||||
private static function loadClass($stationtypeName, $fullClassName)
|
||||
{
|
||||
// Determine folder to look in
|
||||
$className = explode('\\', $fullClassName);
|
||||
$className = array_pop($className);
|
||||
|
||||
// Determine filename
|
||||
$fileName = ROOT.DS.
|
||||
\nre\configs\AppConfig::$dirs['stationtypes'].DS.
|
||||
strtolower($stationtypeName).DS.$className.\nre\configs\CoreConfig::getFileExt('includes');
|
||||
|
||||
// Check file
|
||||
if(!file_exists($fileName))
|
||||
{
|
||||
throw new \nre\exceptions\ClassNotFoundException(
|
||||
$fullClassName
|
||||
);
|
||||
}
|
||||
|
||||
// Include file
|
||||
include_once($fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check inheritance of the StationtypeAgent-class.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotValidException
|
||||
* @param string $className Name of the class to check
|
||||
* @param string $parentClassName Name of the parent class
|
||||
*/
|
||||
public static function checkClass($className, $parentClassName)
|
||||
{
|
||||
// Check if class is subclass of parent class
|
||||
if(!is_subclass_of($className, $parentClassName)) {
|
||||
throw new \nre\exceptions\ClassNotValidException(
|
||||
$className
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new StationtypeAgent.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotFoundException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Log-system
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
// Store values
|
||||
$this->request = $request;
|
||||
$this->response = $response;
|
||||
|
||||
|
||||
// Call parent constructor
|
||||
parent::__construct($request, $response, $log);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Save the answer of a Character group for a Station.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
* @param array $group Current Character data
|
||||
* @param array $answers Character answers for the Quest
|
||||
*/
|
||||
public function saveAnswer($seminary, $groupsgroup, $quest, $station, $group, $answer)
|
||||
{
|
||||
$this->controller->saveAnswer(
|
||||
$seminary,
|
||||
$groupsgroup,
|
||||
$quest,
|
||||
$station,
|
||||
$group,
|
||||
$answer
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the answer of a Character group for a Station matches the
|
||||
* correct one.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
* @param array $group Current Character group data
|
||||
* @param array $answers Character answers for the Quest
|
||||
*/
|
||||
public function matchAnswer($seminary, $groupsgroup, $quest, $station, $group, $answer)
|
||||
{
|
||||
return $this->controller->matchAnswer(
|
||||
$seminary,
|
||||
$groupsgroup,
|
||||
$quest,
|
||||
$station,
|
||||
$group,
|
||||
$answer
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the Controller of this Agent.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationxuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotFoundException
|
||||
*/
|
||||
protected function loadController()
|
||||
{
|
||||
// Determine Controller name
|
||||
$controllerName = \nre\core\ClassLoader::stripClassType(
|
||||
\nre\core\ClassLoader::getClassName(get_class($this))
|
||||
);
|
||||
|
||||
// Determine ToplevelAgent
|
||||
$toplevelAgentName = $this->response->getParam(0);
|
||||
if(is_null($toplevelAgentName)) {
|
||||
$toplevelAgentName = $this->request->getParam(0, 'toplevel');
|
||||
$this->response->addParam($toplevelAgentName);
|
||||
}
|
||||
|
||||
// Determine Action
|
||||
$action = $this->response->getParam(2);
|
||||
if(is_null($action)) {
|
||||
$action = $this->request->getParam(2, 'action');
|
||||
$this->response->addParam($action);
|
||||
}
|
||||
|
||||
|
||||
// Load Controller
|
||||
\hhu\z\controllers\StationtypeController::load($controllerName);
|
||||
|
||||
// Construct Controller
|
||||
$this->controller = \hhu\z\controllers\StationtypeController::factory(
|
||||
$controllerName,
|
||||
$toplevelAgentName,
|
||||
$action,
|
||||
$this
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
43
app/agents/ToplevelAgent.inc
Normal file
43
app/agents/ToplevelAgent.inc
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\agents;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing an application Controller.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class ToplevelAgent extends \nre\agents\ToplevelAgent
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new ToplevlAgent
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
* @param \nre\core\Logger $log Logger instance
|
||||
*/
|
||||
protected function __construct(\nre\core\Request $request, \nre\core\Response $response, \nre\core\Logger $log=null)
|
||||
{
|
||||
parent::__construct($request, $response, $log);
|
||||
|
||||
|
||||
// Set timezone
|
||||
date_default_timezone_set(\nre\configs\AppConfig::$app['timeZone']);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
202
app/apis/MailApi.inc
Normal file
202
app/apis/MailApi.inc
Normal file
|
@ -0,0 +1,202 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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 <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
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
197
app/controllers/IntermediateController.inc
Normal file
197
app/controllers/IntermediateController.inc
Normal file
|
@ -0,0 +1,197 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\controllers;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a Controller of an IntermediateAgent.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class IntermediateController extends \hhu\z\Controller
|
||||
{
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('users', 'userroles', 'seminaries', 'characters');
|
||||
/**
|
||||
* Current user
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $user = null;
|
||||
/**
|
||||
* Title information
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $title = array();
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new IntermediateController.
|
||||
*
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param \nre\core\Agent $agent Corresponding Agent
|
||||
*/
|
||||
public function __construct($layoutName, $action, $agent)
|
||||
{
|
||||
parent::__construct($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Prefilter that is executed before running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function preFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::preFilter($request, $response);
|
||||
|
||||
// Get userdata
|
||||
try {
|
||||
self::$user = $this->Users->getUserById($this->Auth->getUserId());
|
||||
self::$user['roles'] = array_map(function($r) { return $r['name']; }, $this->Userroles->getUserrolesForUserById(self::$user['id']));
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
}
|
||||
|
||||
// Check permissions
|
||||
$this->checkPermission($request, $response);
|
||||
|
||||
// Set userdata
|
||||
$this->set('loggedUser', self::$user);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Postfilter that is executed after running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function postFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::postFilter($request, $response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return current title information.
|
||||
*
|
||||
* @return string Title information
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Add a piece of information to the current title.
|
||||
*
|
||||
* @param string $title Title information
|
||||
*/
|
||||
protected function addTitle($title)
|
||||
{
|
||||
$this->title[] = $title;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a piece of information to the current title and localize
|
||||
* it.
|
||||
*
|
||||
* @param string $title Title information
|
||||
*/
|
||||
protected function addTitleLocalized($title)
|
||||
{
|
||||
$title = gettext($title);
|
||||
|
||||
$args = func_get_args();
|
||||
if(count($args) > 0) {
|
||||
$title = call_user_func_array(
|
||||
'sprintf',
|
||||
array_merge(
|
||||
array($title),
|
||||
array_slice($args, 1)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
$this->title[] = $title;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Check user permissions.
|
||||
*
|
||||
* @throws \nre\exceptions\AccessDeniedException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
private function checkPermission(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Determine user
|
||||
$userRoles = array('guest');
|
||||
if(!is_null(self::$user)) {
|
||||
$userRoles = self::$user['roles'];
|
||||
}
|
||||
|
||||
|
||||
// Do not check error pages
|
||||
if($response->getParam(0, 'toplevel') == \nre\core\Config::getDefault('toplevel-error')) {
|
||||
return;
|
||||
}
|
||||
if($response->getParam(1, 'intermediate') == \nre\core\Config::getDefault('intermediate-error')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Determine permissions of Intermediate Controller for current action
|
||||
$controller = $this->agent->controller;
|
||||
$action = $this->request->getParam(2, 'action');
|
||||
if(!property_exists($controller, 'permissions')) {
|
||||
return; // Allow if nothing is specified
|
||||
}
|
||||
if(!array_key_exists($action, $controller->permissions)) {
|
||||
return; // Allow if Action is not specified
|
||||
}
|
||||
$permissions = $controller->permissions[$action];
|
||||
|
||||
|
||||
// Check permissions
|
||||
if(count(array_intersect($userRoles, $permissions)) == 0) {
|
||||
throw new \nre\exceptions\AccessDeniedException();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
320
app/controllers/QuesttypeController.inc
Normal file
320
app/controllers/QuesttypeController.inc
Normal file
|
@ -0,0 +1,320 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\controllers;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a QuesttypeController.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class QuesttypeController extends \hhu\z\Controller
|
||||
{
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('seminaries', 'questgroups', 'quests', 'characters');
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Save the answers of a Character for a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $answers Character answers for the Quest
|
||||
*/
|
||||
public abstract function saveAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||
|
||||
|
||||
/**
|
||||
* Save additional data for the answers of a Character for a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $data Additional (POST-) data
|
||||
*/
|
||||
public abstract function saveDataForCharacterAnswers($seminary, $questgroup, $quest, $character, $data);
|
||||
|
||||
|
||||
/**
|
||||
* Check if answers of a Character for a Quest match the correct ones.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param array $answers Character answers for the Quest
|
||||
* @return boolean True/false for a right/wrong answer or null for moderator evaluation
|
||||
*/
|
||||
public abstract function matchAnswersOfCharacter($seminary, $questgroup, $quest, $character, $answers);
|
||||
|
||||
|
||||
/**
|
||||
* Action: quest.
|
||||
*
|
||||
* Show the task of a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
* @param \Exception $exception Character submission exception
|
||||
*/
|
||||
public abstract function quest($seminary, $questgroup, $quest, $character, $exception);
|
||||
|
||||
|
||||
/**
|
||||
* Action: submission.
|
||||
*
|
||||
* Show the submission of a Character for a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $character Current Character data
|
||||
*/
|
||||
public abstract function submission($seminary, $questgroup, $quest, $character);
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittask.
|
||||
*
|
||||
* Edit the task of a Quest.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $questgroup Current Questgroup data
|
||||
* @param array $quest Current Quest data
|
||||
*/
|
||||
public abstract function edittask($seminary, $questgroup, $quest);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load a QuesttypeController.
|
||||
*
|
||||
* @static
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeControllerNotValidException
|
||||
* @param string $controllerName Name of the QuesttypeController to load
|
||||
*/
|
||||
public static function load($controllerName)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($controllerName);
|
||||
|
||||
try {
|
||||
// Load class
|
||||
static::loadClass($controllerName, $className);
|
||||
|
||||
// Validate class
|
||||
static::checkClass($className, get_class());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotValidException $e) {
|
||||
throw new \hhu\z\exceptions\QuesttypeControllerNotValidException($e->getClassName());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotFoundException $e) {
|
||||
throw new \hhu\z\exceptions\QuesttypeControllerNotFoundException($e->getClassName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate a QuesttypeController (Factory Pattern).
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
* @param string $controllerName Name of the QuesttypeController to instantiate
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param \nre\core\Agent $agent Corresponding Agent
|
||||
*/
|
||||
public static function factory($controllerName, $layoutName, $action, $agent)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($controllerName);
|
||||
|
||||
// Construct and return Controller
|
||||
return new $className($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine the Controller-classname for the given Questtype-name.
|
||||
*
|
||||
* @static
|
||||
* @param string $questtypeName Questtype-name to get Controller-classname of
|
||||
* @return string Classname for the Questtype-name
|
||||
*/
|
||||
private static function getClassName($questtypeName)
|
||||
{
|
||||
$className = \nre\core\ClassLoader::concatClassNames($questtypeName, \nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripNamespace(get_class())), 'controller');
|
||||
|
||||
|
||||
return \nre\configs\AppConfig::$app['namespace']."questtypes\\$className";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the class of a QuesttypeController
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotFoundException
|
||||
* @param string $questtypeName Name of the QuesttypeController to load
|
||||
* @param string $fullClassName Name of the class to load
|
||||
*/
|
||||
private static function loadClass($questtypeName, $fullClassName)
|
||||
{
|
||||
// Determine folder to look in
|
||||
$className = explode('\\', $fullClassName);
|
||||
$className = array_pop($className);
|
||||
|
||||
// Determine filename
|
||||
$fileName = ROOT.DS.\nre\configs\AppConfig::$dirs['questtypes'].DS.strtolower($questtypeName).DS.$className.\nre\configs\CoreConfig::getFileExt('includes');
|
||||
|
||||
// Check file
|
||||
if(!file_exists($fileName))
|
||||
{
|
||||
throw new \nre\exceptions\ClassNotFoundException(
|
||||
$fullClassName
|
||||
);
|
||||
}
|
||||
|
||||
// Include file
|
||||
include_once($fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check inheritance of the QuesttypeController-class.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotValidException
|
||||
* @param string $className Name of the class to check
|
||||
* @param string $parentClassName Name of the parent class
|
||||
*/
|
||||
public static function checkClass($className, $parentClassName)
|
||||
{
|
||||
// Check if class is subclass of parent class
|
||||
if(!is_subclass_of($className, $parentClassName)) {
|
||||
throw new \nre\exceptions\ClassNotValidException(
|
||||
$className
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new application Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param Agent $agent Corresponding Agent
|
||||
*/
|
||||
public function __construct($layoutName, $action, $agent)
|
||||
{
|
||||
parent::__construct($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the Models of this Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
*/
|
||||
protected function loadModels()
|
||||
{
|
||||
// Load default models
|
||||
parent::loadModels();
|
||||
|
||||
// Load QuesttypeModel
|
||||
$this->loadModel();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the Model of the Questtype.
|
||||
*
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\QuesttypeModelNotFoundException
|
||||
*/
|
||||
private function loadModel()
|
||||
{
|
||||
// Determine Model
|
||||
$model = \nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripNamespace(get_class($this))));
|
||||
|
||||
// Load class
|
||||
\hhu\z\models\QuesttypeModel::load($model);
|
||||
|
||||
// Construct Model
|
||||
$modelName = ucfirst(strtolower($model));
|
||||
$this->$modelName = \hhu\z\models\QuesttypeModel::factory($model);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the View of this QuesttypeController.
|
||||
*
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
*/
|
||||
protected function loadView($layoutName, $action)
|
||||
{
|
||||
// Check Layout name
|
||||
if(is_null($layoutName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Determine controller name
|
||||
$controllerName = \nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::getClassName(get_class($this)));
|
||||
|
||||
|
||||
// Load view
|
||||
$this->view = \hhu\z\views\QuesttypeView::loadAndFactory($layoutName, $controllerName, $action);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
193
app/controllers/SeminaryController.inc
Normal file
193
app/controllers/SeminaryController.inc
Normal file
|
@ -0,0 +1,193 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\controllers;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a Controller for a Seminary and its
|
||||
* concepts.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class SeminaryController extends \hhu\z\controllers\IntermediateController
|
||||
{
|
||||
/**
|
||||
* Required components
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $components = array('achievement', 'auth', 'notification');
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('seminaries', 'characters', 'characterroles', 'xplevels', 'avatars', 'achievements');
|
||||
/**
|
||||
* Current Seminary
|
||||
*
|
||||
* var array
|
||||
*/
|
||||
public static $seminary = null;
|
||||
/**
|
||||
* Character of current user and Seminary
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $character = null;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new Seminary Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param \nre\core\Agent $agent Corresponding Agent
|
||||
*/
|
||||
public function __construct($layoutName, $action, $agent)
|
||||
{
|
||||
parent::__construct($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Prefilter that is executed before running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function preFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::preFilter($request, $response);
|
||||
|
||||
// Get Seminary and Character data
|
||||
try {
|
||||
self::$seminary = $this->Seminaries->getSeminaryByUrl($this->request->getParam(3));
|
||||
if(!is_null(self::$user))
|
||||
{
|
||||
self::$character = $this->Characters->getCharacterForUserAndSeminary(self::$user['id'], self::$seminary['id']);
|
||||
self::$character['characterroles'] = array_map(function($r) { return $r['name']; }, $this->Characterroles->getCharacterrolesForCharacterById(self::$character['id']));
|
||||
try {
|
||||
self::$character['xplevel'] = $this->Xplevels->getXPLevelById(self::$character['xplevel_id']);
|
||||
self::$character['avatar'] = $this->Avatars->getAvatarByTypeAndLevel(self::$seminary['id'], self::$character['charactertype_url'], self::$character['xplevel']['level']);
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
// No Avatar available
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||
}
|
||||
|
||||
// Check permissions
|
||||
$this->checkPermission($request, $response);
|
||||
|
||||
// Check achievements
|
||||
$this->checkAchievements($request, 'date');
|
||||
$this->checkAchievements($request, 'achievement');
|
||||
|
||||
// Set Seminary and Character data
|
||||
$this->set('loggedSeminary', self::$seminary);
|
||||
$this->set('loggedCharacter', self::$character);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Postfilter that is executed after running the Controller.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
public function postFilter(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
parent::postFilter($request, $response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Check user permissions.
|
||||
*
|
||||
* @throws AccessDeniedException
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param \nre\core\Response $response Current response
|
||||
*/
|
||||
private function checkPermission(\nre\core\Request $request, \nre\core\Response $response)
|
||||
{
|
||||
// Do not check index page
|
||||
if(is_null($request->getParam(3))) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Determine permissions for current action
|
||||
$action = $this->request->getParam(2, 'action');
|
||||
if(!property_exists($this, 'seminaryPermissions')) {
|
||||
return; // Allow if nothing is specified
|
||||
}
|
||||
if(!array_key_exists($action, $this->seminaryPermissions)) {
|
||||
return; // Allow if Action is not specified
|
||||
}
|
||||
$permissions = $this->seminaryPermissions[$action];
|
||||
|
||||
|
||||
// Check permissions
|
||||
if(is_null(self::$character) || !array_key_exists('characterroles', self::$character) || count(array_intersect(self::$character['characterroles'], $permissions)) == 0) {
|
||||
throw new \nre\exceptions\AccessDeniedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check for newly achieved Achievements.
|
||||
*
|
||||
* @param \nre\core\Request $request Current request
|
||||
* @param array $checkConditions Conditions to check
|
||||
*/
|
||||
protected function checkAchievements(\nre\core\Request $request, $checkConditions=null)
|
||||
{
|
||||
// Do not check MediaController
|
||||
if($request->getParam(0, 'toplevel') != \nre\configs\AppConfig::$defaults['toplevel']) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if Character is present
|
||||
if(is_null(self::$character)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check Achievements
|
||||
$achievements = $this->Achievement->checkAchievements(self::$seminary['id'], self::$character['id'], $checkConditions);
|
||||
|
||||
// Add notifications
|
||||
foreach($achievements as &$achievement)
|
||||
{
|
||||
$this->Notification->addNotification(
|
||||
\hhu\z\controllers\components\NotificationComponent::TYPE_ACHIEVEMENT,
|
||||
$achievement['title'],
|
||||
$this->linker->link(array('achievements', 'index', self::$seminary['url']), 0, true, null, true, $achievement['url']),
|
||||
(!is_null($achievement['achieved_achievementsmedia_id']) ? $this->linker->link(array('media','achievement',self::$seminary['url'],$achievement['url'])) : null)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
320
app/controllers/StationtypeController.inc
Normal file
320
app/controllers/StationtypeController.inc
Normal file
|
@ -0,0 +1,320 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\controllers;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract class for implementing a StationtypeController.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
abstract class StationtypeController extends \hhu\z\Controller
|
||||
{
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('seminaries'); //, 'questgroups', 'quests', 'characters');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Save the answer of a Character group for a Station.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $groupsgroup Current Groups group data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
* @param array $charactergroup Current Character group data
|
||||
* @param array $answer Character group answer for the Station
|
||||
*/
|
||||
public abstract function saveAnswer($seminary, $groupsgroup, $quest, $station, $charactergroup, $answer);
|
||||
|
||||
|
||||
/**
|
||||
* Check if answer of a Character group for a Station matches the correct one.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $groupsgroup Current Groups group data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
* @param array $charactergroup Current Character group data
|
||||
* @param array $answer Character group answer for the Station
|
||||
* @return boolean True/false for a right/wrong answer
|
||||
*/
|
||||
public abstract function matchAnswer($seminary, $groupsgroup, $quest, $station, $charactergroup, $answer);
|
||||
|
||||
|
||||
/**
|
||||
* Action: quest.
|
||||
*
|
||||
* Show the task of a Station.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $groupsgroup Current Groups group data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
* @param array $charactergroup Current Character group data
|
||||
*/
|
||||
public abstract function quest($seminary, $groupsgroup, $quest, $station, $charactergroup);
|
||||
|
||||
|
||||
/**
|
||||
* Action: edittask.
|
||||
*
|
||||
* Edit the task of a Station.
|
||||
*
|
||||
* @param array $seminary Current Seminary data
|
||||
* @param array $groupsgroup Current Groups group data
|
||||
* @param array $quest Current Quest data
|
||||
* @param array $station Current Station data
|
||||
*/
|
||||
public abstract function edittask($seminary, $groupsgroup, $quest, $station);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load a StationtypeController.
|
||||
*
|
||||
* @static
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeControllerNotValidException
|
||||
* @param string $controllerName Name of the StationtypeController to load
|
||||
*/
|
||||
public static function load($controllerName)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($controllerName);
|
||||
|
||||
try {
|
||||
// Load class
|
||||
static::loadClass($controllerName, $className);
|
||||
|
||||
// Validate class
|
||||
static::checkClass($className, get_class());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotValidException $e) {
|
||||
throw new \hhu\z\exceptions\StationtypeControllerNotValidException($e->getClassName());
|
||||
}
|
||||
catch(\nre\exceptions\ClassNotFoundException $e) {
|
||||
throw new \hhu\z\exceptions\StationtypeControllerNotFoundException($e->getClassName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate a StationtypeController (Factory Pattern).
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
* @param string $controllerName Name of the StationtypeController to instantiate
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param \nre\core\Agent $agent Corresponding Agent
|
||||
*/
|
||||
public static function factory($controllerName, $layoutName, $action, $agent)
|
||||
{
|
||||
// Determine full classname
|
||||
$className = self::getClassName($controllerName);
|
||||
|
||||
// Construct and return Controller
|
||||
return new $className($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine the Controller-classname for the given Stationtype-name.
|
||||
*
|
||||
* @static
|
||||
* @param string $stationtypeName Stationtype-name to get Controller-classname of
|
||||
* @return string Classname for the Stationtype-name
|
||||
*/
|
||||
private static function getClassName($stationtypeName)
|
||||
{
|
||||
$className = \nre\core\ClassLoader::concatClassNames(
|
||||
$stationtypeName,
|
||||
\nre\core\ClassLoader::stripClassType(\nre\core\ClassLoader::stripNamespace(get_class())),
|
||||
'controller'
|
||||
);
|
||||
|
||||
|
||||
return \nre\configs\AppConfig::$app['namespace']."stationtypes\\$className";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the class of a StationtypeController
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotFoundException
|
||||
* @param string $stationtypeName Name of the StationtypeController to load
|
||||
* @param string $fullClassName Name of the class to load
|
||||
*/
|
||||
private static function loadClass($stationtypeName, $fullClassName)
|
||||
{
|
||||
// Determine folder to look in
|
||||
$className = explode('\\', $fullClassName);
|
||||
$className = array_pop($className);
|
||||
|
||||
// Determine filename
|
||||
$fileName = ROOT.DS.
|
||||
\nre\configs\AppConfig::$dirs['stationtypes'].DS.
|
||||
strtolower($stationtypeName).DS.
|
||||
$className.\nre\configs\CoreConfig::getFileExt('includes');
|
||||
|
||||
// Check file
|
||||
if(!file_exists($fileName))
|
||||
{
|
||||
throw new \nre\exceptions\ClassNotFoundException(
|
||||
$fullClassName
|
||||
);
|
||||
}
|
||||
|
||||
// Include file
|
||||
include_once($fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check inheritance of the StationtypeController-class.
|
||||
*
|
||||
* @static
|
||||
* @throws \nre\exceptions\ClassNotValidException
|
||||
* @param string $className Name of the class to check
|
||||
* @param string $parentClassName Name of the parent class
|
||||
*/
|
||||
public static function checkClass($className, $parentClassName)
|
||||
{
|
||||
// Check if class is subclass of parent class
|
||||
if(!is_subclass_of($className, $parentClassName)) {
|
||||
throw new \nre\exceptions\ClassNotValidException(
|
||||
$className
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new application Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
* @param Agent $agent Corresponding Agent
|
||||
*/
|
||||
public function __construct($layoutName, $action, $agent)
|
||||
{
|
||||
parent::__construct($layoutName, $action, $agent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load the Models of this Controller.
|
||||
*
|
||||
* @throws \nre\exceptions\DatamodelException
|
||||
* @throws \nre\exceptions\DriverNotFoundException
|
||||
* @throws \nre\exceptions\DriverNotValidException
|
||||
* @throws \nre\exceptions\ModelNotValidException
|
||||
* @throws \nre\exceptions\ModelNotFoundException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
*/
|
||||
protected function loadModels()
|
||||
{
|
||||
// Load default models
|
||||
parent::loadModels();
|
||||
|
||||
// Load StationtypeModel
|
||||
$this->loadModel();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the Model of the Stationtype.
|
||||
*
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotValidException
|
||||
* @throws \hhu\z\exceptions\StationtypeModelNotFoundException
|
||||
*/
|
||||
private function loadModel()
|
||||
{
|
||||
// Determine Model
|
||||
$model = \nre\core\ClassLoader::stripClassType(
|
||||
\nre\core\ClassLoader::stripClassType(
|
||||
\nre\core\ClassLoader::stripNamespace(
|
||||
get_class($this)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// Load class
|
||||
\hhu\z\models\StationtypeModel::load($model);
|
||||
|
||||
// Construct Model
|
||||
$modelName = ucfirst(strtolower($model));
|
||||
$this->$modelName = \hhu\z\models\StationtypeModel::factory($model);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the View of this StationtypeController.
|
||||
*
|
||||
* @throws \nre\exceptions\ViewNotFoundException
|
||||
* @param string $layoutName Name of the current Layout
|
||||
* @param string $action Current Action
|
||||
*/
|
||||
protected function loadView($layoutName, $action)
|
||||
{
|
||||
// Check Layout name
|
||||
if(is_null($layoutName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Determine controller name
|
||||
$controllerName = \nre\core\ClassLoader::stripClassType(
|
||||
\nre\core\ClassLoader::getClassName(
|
||||
get_class($this)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Load view
|
||||
$this->view = \hhu\z\views\StationtypeView::loadAndFactory(
|
||||
$layoutName,
|
||||
$controllerName,
|
||||
$action
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/FileCopyException.inc
Normal file
79
app/exceptions/FileCopyException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: File copy went wrong
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class FileCopyException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 204;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'File copy went wrong';
|
||||
|
||||
/**
|
||||
* Nested error
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $nestedError;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param array $nestedError Nested error
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($nestedError, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$nestedError['message']
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->nestedError = $nestedError;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get nested error.
|
||||
*
|
||||
* @return Nested error
|
||||
*/
|
||||
public function getNestedError()
|
||||
{
|
||||
return $this->nestedError;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/FileUploadException.inc
Normal file
79
app/exceptions/FileUploadException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: File upload went wrong
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class FileUploadException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 203;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'File upload went wrong';
|
||||
|
||||
/**
|
||||
* Nested message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $nestedMessage;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $nestedMessage Nested message
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($nestedMessage=null, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$nestedMessage
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->nestedMessage = $nestedMessage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get nested message.
|
||||
*
|
||||
* @return Nested message
|
||||
*/
|
||||
public function getNestedMessage()
|
||||
{
|
||||
return $this->nestedMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/MailingException.inc
Normal file
79
app/exceptions/MailingException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception during sending of an e‑mail.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MailingException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 300;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'Error sending e‑mail';
|
||||
|
||||
/**
|
||||
* Nested error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $error;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param int $error Nested error message
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($error, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$error
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->error = $error;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get nested error message.
|
||||
*
|
||||
* @return string Nested error message
|
||||
*/
|
||||
public function getError()
|
||||
{
|
||||
return $this->error;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
54
app/exceptions/MaxFilesizeException.inc
Normal file
54
app/exceptions/MaxFilesizeException.inc
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: File exceeds size maximum.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class MaxFilesizeException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 202;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'File exceeds size maximum';
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeAgentNotFoundException.inc
Normal file
79
app/exceptions/QuesttypeAgentNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeAgent not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeAgentNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 101;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeAgent not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the QuesttypeAgent that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the QuesttypeAgent that was not found.
|
||||
*
|
||||
* @return string Name of the QuesttypeAgent that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeAgentNotValidException.inc
Normal file
79
app/exceptions/QuesttypeAgentNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeAgent not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeAgentNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 102;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeAgent not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the invalid QuesttypeAgent
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid QuesttypeAgent.
|
||||
*
|
||||
* @return string Name of the invalid QuesttypeAgent
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeControllerNotFoundException.inc
Normal file
79
app/exceptions/QuesttypeControllerNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeController not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeControllerNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 103;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeController not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the QuesttypeController that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the QuesttypeController that was not found.
|
||||
*
|
||||
* @return string Name of the QuesttypeController that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeControllerNotValidException.inc
Normal file
79
app/exceptions/QuesttypeControllerNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeController not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeControllerNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 104;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeController not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the invalid QuesttypeController
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid QuesttypeController.
|
||||
*
|
||||
* @return string Name of the invalid QuesttypeController
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeModelNotFoundException.inc
Normal file
79
app/exceptions/QuesttypeModelNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeModel not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeModelNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 105;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeModel not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the QuesttypeModel that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the QuesttypeModel that was not found.
|
||||
*
|
||||
* @return string Name of the QuesttypeModel that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/QuesttypeModelNotValidException.inc
Normal file
79
app/exceptions/QuesttypeModelNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: QuesttypeModel not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class QuesttypeModelNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 106;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'QuesttypeModel not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $questtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $questtypeName Name of the invalid QuesttypeModel
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($questtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$questtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->questtypeName = $questtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid QuesttypeModel.
|
||||
*
|
||||
* @return string Name of the invalid QuesttypeModel
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->questtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeAgentNotFoundException.inc
Normal file
79
app/exceptions/StationtypeAgentNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationtypeAgent not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeAgentNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 401;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeAgent not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the StationtypeAgent that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the StationtypeAgent that was not found.
|
||||
*
|
||||
* @return string Name of the StationtypeAgent that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeAgentNotValidException.inc
Normal file
79
app/exceptions/StationtypeAgentNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationtypeAgent not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeAgentNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 402;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeAgent not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the invalid StationtypeAgent
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid StationtypeAgent.
|
||||
*
|
||||
* @return string Name of the invalid StationtypeAgent
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeControllerNotFoundException.inc
Normal file
79
app/exceptions/StationtypeControllerNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationtypeController not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeControllerNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 403;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeController not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the StationtypeController that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the StationtypeController that was not found.
|
||||
*
|
||||
* @return string Name of the StationtypeController that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeControllerNotValidException.inc
Normal file
79
app/exceptions/StationtypeControllerNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationtypeController not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeControllerNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 404;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeController not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the invalid StationtypeController
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid StationtypeController.
|
||||
*
|
||||
* @return string Name of the invalid StationtypeController
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeModelNotFoundException.inc
Normal file
79
app/exceptions/StationtypeModelNotFoundException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationtypeModel not found.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeModelNotFoundException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 405;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeModel not found';
|
||||
|
||||
/**
|
||||
* Name of the class that was not found
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the StationtypeModel that was not found
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the StationtypeModel that was not found.
|
||||
*
|
||||
* @return string Name of the StationtypeModel that was not found
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/StationtypeModelNotValidException.inc
Normal file
79
app/exceptions/StationtypeModelNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: StationxuesttypeModel not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class StationtypeModelNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 406;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'StationtypeModel not valid';
|
||||
|
||||
/**
|
||||
* Name of the invalid class
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $stationtypeName;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $stationtypeName Name of the invalid StationtypeModel
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($stationtypeName, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$stationtypeName
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->stationtypeName = $stationtypeName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the name of the invalid StationtypeModel.
|
||||
*
|
||||
* @return string Name of the invalid StationtypeModel
|
||||
*/
|
||||
public function getClassName()
|
||||
{
|
||||
return $this->stationtypeName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/SubmissionNotValidException.inc
Normal file
79
app/exceptions/SubmissionNotValidException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: Character submission not valid.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class SubmissionNotValidException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 200;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'Character submission not valid';
|
||||
|
||||
/**
|
||||
* Nested exception
|
||||
*
|
||||
* @var Exception
|
||||
*/
|
||||
private $nestedException;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $nestedException Nested exception
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($nestedException, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$nestedException
|
||||
);
|
||||
|
||||
// Store value
|
||||
$this->nestedException = $nestedException;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get Nested exception.
|
||||
*
|
||||
* @return string Nested exception
|
||||
*/
|
||||
public function getNestedException()
|
||||
{
|
||||
return $this->nestedException;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
app/exceptions/WrongFiletypeException.inc
Normal file
79
app/exceptions/WrongFiletypeException.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* Exception: File has wrong filetype.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class WrongFiletypeException extends \nre\core\Exception
|
||||
{
|
||||
/**
|
||||
* Error code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const CODE = 201;
|
||||
/**
|
||||
* Error message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MESSAGE = 'File has wrong type “%s”';
|
||||
|
||||
/**
|
||||
* Type of file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $type;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new exception.
|
||||
*
|
||||
* @param string $type Type of file
|
||||
* @param string $message Error message
|
||||
* @param int $code Error code
|
||||
*/
|
||||
function __construct($type, $message=self::MESSAGE, $code=self::CODE)
|
||||
{
|
||||
parent::__construct(
|
||||
$message,
|
||||
$code,
|
||||
$type
|
||||
);
|
||||
|
||||
// Store values
|
||||
$this->type = $type;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get type of file.
|
||||
*
|
||||
* @return Type of file
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
99
app/lib/Netcarver/Textile/DataBag.php
Normal file
99
app/lib/Netcarver/Textile/DataBag.php
Normal file
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
/**
|
||||
* Textile - A Humane Web Text Generator.
|
||||
*
|
||||
* @link https://github.com/textile/php-textile
|
||||
*/
|
||||
|
||||
namespace Netcarver\Textile;
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013, Netcarver https://github.com/netcarver
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name Textile nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Simple data storage.
|
||||
*
|
||||
* This class to allows storing assignments in an internal
|
||||
* data array.
|
||||
*
|
||||
* <code>
|
||||
* use Netcarver\Textile\DataBag;
|
||||
* $plant = new DataBag(array('key' => 'value'));
|
||||
* $plant->flower('rose')->color('red');
|
||||
* </code>
|
||||
*/
|
||||
|
||||
class DataBag
|
||||
{
|
||||
/**
|
||||
* The data array stored in the bag.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
|
||||
protected $data;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array|null $data The initial data array stored in the bag
|
||||
*/
|
||||
|
||||
public function __construct(array $data = null)
|
||||
{
|
||||
$this->data = (array) $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a value to the bag.
|
||||
*
|
||||
* Empty values are rejected, unless the
|
||||
* second argument is set TRUE.
|
||||
*
|
||||
* <code>
|
||||
* use Netcarver\Textile\DataBag;
|
||||
* $plant = new DataBag(array('key' => 'value'));
|
||||
* $plant->flower('rose')->color('red')->emptyValue(false, true);
|
||||
* </code>
|
||||
*
|
||||
* @param string $name The name
|
||||
* @param array $params Arguments
|
||||
* @return DataBag
|
||||
*/
|
||||
|
||||
public function __call($name, array $params)
|
||||
{
|
||||
if (!empty($params[1]) || !empty($params[0])) {
|
||||
$this->data[$name] = $params[0];
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
4042
app/lib/Netcarver/Textile/Parser.php
Normal file
4042
app/lib/Netcarver/Textile/Parser.php
Normal file
File diff suppressed because it is too large
Load diff
118
app/lib/Netcarver/Textile/Tag.php
Normal file
118
app/lib/Netcarver/Textile/Tag.php
Normal file
|
@ -0,0 +1,118 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Textile - A Humane Web Text Generator.
|
||||
*
|
||||
* @link https://github.com/textile/php-textile
|
||||
*/
|
||||
|
||||
namespace Netcarver\Textile;
|
||||
|
||||
/*
|
||||
* Copyright (c) 2013, Netcarver https://github.com/netcarver
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name Textile nor the names of its contributors may be used to
|
||||
* endorse or promote products derived from this software without specific
|
||||
* prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders HTML elements.
|
||||
*
|
||||
* This class can be used to HTML elements. It
|
||||
* does not sanitise attribute values, but can be
|
||||
* used to construct tags with nice object oriented
|
||||
* syntax.
|
||||
*
|
||||
* <code>
|
||||
* use Netcarver\Textile\Tag;
|
||||
* $img = new Tag('img');
|
||||
* echo (string) $img->class('big blue')->src('images/elephant.jpg');
|
||||
* </code>
|
||||
*/
|
||||
|
||||
class Tag extends DataBag
|
||||
{
|
||||
/**
|
||||
* The name of the tag.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
|
||||
protected $tag;
|
||||
|
||||
/**
|
||||
* Whether the tag is self-closing.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
|
||||
protected $selfclose;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $name The tag name
|
||||
* @param array $attributes An array of attributes
|
||||
* @param bool $selfclosing Whether the tag is self-closing
|
||||
*/
|
||||
|
||||
public function __construct($name, array $attributes = null, $selfclosing = true)
|
||||
{
|
||||
parent::__construct($attributes);
|
||||
$this->tag = $name;
|
||||
$this->selfclose = $selfclosing;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the tag as HTML.
|
||||
*
|
||||
* <code>
|
||||
* $img = new Tag('img');
|
||||
* $img->src('images/example.jpg')->alt('Example image');
|
||||
* echo (string) $img;
|
||||
* </code>
|
||||
*
|
||||
* @return string A HTML element
|
||||
*/
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
$attributes = '';
|
||||
|
||||
if ($this->data) {
|
||||
ksort($this->data);
|
||||
foreach ($this->data as $name => $value) {
|
||||
$attributes .= " $name=\"$value\"";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->tag) {
|
||||
return '<' . $this->tag . $attributes . (($this->selfclose) ? " />" : '>');
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
}
|
3453
app/lib/PHPMailer.inc
Normal file
3453
app/lib/PHPMailer.inc
Normal file
File diff suppressed because it is too large
Load diff
86
app/lib/PHPMailerAutoload.inc
Normal file
86
app/lib/PHPMailerAutoload.inc
Normal file
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\lib
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Class to ensure that Compatibility library below is loaded.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class PHPMailerAutoload
|
||||
{
|
||||
|
||||
/**
|
||||
* Call this function to ensure this file is loaded.
|
||||
*/
|
||||
public static function load()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
/**
|
||||
* PHPMailer SPL autoloader.
|
||||
* PHP Version 5
|
||||
* @package PHPMailer
|
||||
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2012 - 2014 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* PHPMailer SPL autoloader.
|
||||
* @param string $classname The name of the class to load
|
||||
*/
|
||||
function PHPMailerAutoload($classname)
|
||||
{
|
||||
//Can't use __DIR__ as it's only in PHP 5.3+
|
||||
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';
|
||||
if (is_readable($filename)) {
|
||||
require $filename;
|
||||
}
|
||||
}
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
|
||||
//SPL autoloading was introduced in PHP 5.1.2
|
||||
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
|
||||
spl_autoload_register('PHPMailerAutoload', true, true);
|
||||
} else {
|
||||
spl_autoload_register('PHPMailerAutoload');
|
||||
}
|
||||
} else {
|
||||
/**
|
||||
* Fall back to traditional autoload for old PHP versions
|
||||
* @param string $classname The name of the class to load
|
||||
*/
|
||||
function __autoload($classname)
|
||||
{
|
||||
PHPMailerAutoload($classname);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
316
app/lib/Password.inc
Normal file
316
app/lib/Password.inc
Normal file
|
@ -0,0 +1,316 @@
|
|||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\lib
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Class to ensure that Compatibility library below is loaded.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class Password
|
||||
{
|
||||
|
||||
/**
|
||||
* Call this function to ensure this file is loaded.
|
||||
*/
|
||||
public static function load()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A Compatibility library with PHP 5.5's simplified password hashing API.
|
||||
*
|
||||
* @author Anthony Ferrara <ircmaxell@php.net>
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @copyright 2012 The Authors
|
||||
*/
|
||||
|
||||
namespace {
|
||||
|
||||
if (!defined('PASSWORD_DEFAULT')) {
|
||||
|
||||
define('PASSWORD_BCRYPT', 1);
|
||||
define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
|
||||
|
||||
/**
|
||||
* Hash the password using the specified algorithm
|
||||
*
|
||||
* @param string $password The password to hash
|
||||
* @param int $algo The algorithm to use (Defined by PASSWORD_* constants)
|
||||
* @param array $options The options for the algorithm to use
|
||||
*
|
||||
* @return string|false The hashed password, or false on error.
|
||||
*/
|
||||
function password_hash($password, $algo, array $options = array()) {
|
||||
if (!function_exists('crypt')) {
|
||||
trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
if (!is_string($password)) {
|
||||
trigger_error("password_hash(): Password must be a string", E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
if (!is_int($algo)) {
|
||||
trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
$resultLength = 0;
|
||||
switch ($algo) {
|
||||
case PASSWORD_BCRYPT:
|
||||
// Note that this is a C constant, but not exposed to PHP, so we don't define it here.
|
||||
$cost = 10;
|
||||
if (isset($options['cost'])) {
|
||||
$cost = $options['cost'];
|
||||
if ($cost < 4 || $cost > 31) {
|
||||
trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// The length of salt to generate
|
||||
$raw_salt_len = 16;
|
||||
// The length required in the final serialization
|
||||
$required_salt_len = 22;
|
||||
$hash_format = sprintf("$2y$%02d$", $cost);
|
||||
// The expected length of the final crypt() output
|
||||
$resultLength = 60;
|
||||
break;
|
||||
default:
|
||||
trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
$salt_requires_encoding = false;
|
||||
if (isset($options['salt'])) {
|
||||
switch (gettype($options['salt'])) {
|
||||
case 'NULL':
|
||||
case 'boolean':
|
||||
case 'integer':
|
||||
case 'double':
|
||||
case 'string':
|
||||
$salt = (string) $options['salt'];
|
||||
break;
|
||||
case 'object':
|
||||
if (method_exists($options['salt'], '__tostring')) {
|
||||
$salt = (string) $options['salt'];
|
||||
break;
|
||||
}
|
||||
case 'array':
|
||||
case 'resource':
|
||||
default:
|
||||
trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
if (PasswordCompat\binary\_strlen($salt) < $required_salt_len) {
|
||||
trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", PasswordCompat\binary\_strlen($salt), $required_salt_len), E_USER_WARNING);
|
||||
return null;
|
||||
} elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
|
||||
$salt_requires_encoding = true;
|
||||
}
|
||||
} else {
|
||||
$buffer = '';
|
||||
$buffer_valid = false;
|
||||
if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) {
|
||||
$buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM);
|
||||
if ($buffer) {
|
||||
$buffer_valid = true;
|
||||
}
|
||||
}
|
||||
if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) {
|
||||
$buffer = openssl_random_pseudo_bytes($raw_salt_len);
|
||||
if ($buffer) {
|
||||
$buffer_valid = true;
|
||||
}
|
||||
}
|
||||
if (!$buffer_valid && @is_readable('/dev/urandom')) {
|
||||
$f = fopen('/dev/urandom', 'r');
|
||||
$read = PasswordCompat\binary\_strlen($buffer);
|
||||
while ($read < $raw_salt_len) {
|
||||
$buffer .= fread($f, $raw_salt_len - $read);
|
||||
$read = PasswordCompat\binary\_strlen($buffer);
|
||||
}
|
||||
fclose($f);
|
||||
if ($read >= $raw_salt_len) {
|
||||
$buffer_valid = true;
|
||||
}
|
||||
}
|
||||
if (!$buffer_valid || PasswordCompat\binary\_strlen($buffer) < $raw_salt_len) {
|
||||
$bl = PasswordCompat\binary\_strlen($buffer);
|
||||
for ($i = 0; $i < $raw_salt_len; $i++) {
|
||||
if ($i < $bl) {
|
||||
$buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255));
|
||||
} else {
|
||||
$buffer .= chr(mt_rand(0, 255));
|
||||
}
|
||||
}
|
||||
}
|
||||
$salt = $buffer;
|
||||
$salt_requires_encoding = true;
|
||||
}
|
||||
if ($salt_requires_encoding) {
|
||||
// encode string with the Base64 variant used by crypt
|
||||
$base64_digits =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
$bcrypt64_digits =
|
||||
'./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
|
||||
$base64_string = base64_encode($salt);
|
||||
$salt = strtr(rtrim($base64_string, '='), $base64_digits, $bcrypt64_digits);
|
||||
}
|
||||
$salt = PasswordCompat\binary\_substr($salt, 0, $required_salt_len);
|
||||
|
||||
$hash = $hash_format . $salt;
|
||||
|
||||
$ret = crypt($password, $hash);
|
||||
|
||||
if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about the password hash. Returns an array of the information
|
||||
* that was used to generate the password hash.
|
||||
*
|
||||
* array(
|
||||
* 'algo' => 1,
|
||||
* 'algoName' => 'bcrypt',
|
||||
* 'options' => array(
|
||||
* 'cost' => 10,
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @param string $hash The password hash to extract info from
|
||||
*
|
||||
* @return array The array of information about the hash.
|
||||
*/
|
||||
function password_get_info($hash) {
|
||||
$return = array(
|
||||
'algo' => 0,
|
||||
'algoName' => 'unknown',
|
||||
'options' => array(),
|
||||
);
|
||||
if (PasswordCompat\binary\_substr($hash, 0, 4) == '$2y$' && PasswordCompat\binary\_strlen($hash) == 60) {
|
||||
$return['algo'] = PASSWORD_BCRYPT;
|
||||
$return['algoName'] = 'bcrypt';
|
||||
list($cost) = sscanf($hash, "$2y$%d$");
|
||||
$return['options']['cost'] = $cost;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the password hash needs to be rehashed according to the options provided
|
||||
*
|
||||
* If the answer is true, after validating the password using password_verify, rehash it.
|
||||
*
|
||||
* @param string $hash The hash to test
|
||||
* @param int $algo The algorithm used for new password hashes
|
||||
* @param array $options The options array passed to password_hash
|
||||
*
|
||||
* @return boolean True if the password needs to be rehashed.
|
||||
*/
|
||||
function password_needs_rehash($hash, $algo, array $options = array()) {
|
||||
$info = password_get_info($hash);
|
||||
if ($info['algo'] != $algo) {
|
||||
return true;
|
||||
}
|
||||
switch ($algo) {
|
||||
case PASSWORD_BCRYPT:
|
||||
$cost = isset($options['cost']) ? $options['cost'] : 10;
|
||||
if ($cost != $info['options']['cost']) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify a password against a hash using a timing attack resistant approach
|
||||
*
|
||||
* @param string $password The password to verify
|
||||
* @param string $hash The hash to verify against
|
||||
*
|
||||
* @return boolean If the password matches the hash
|
||||
*/
|
||||
function password_verify($password, $hash) {
|
||||
if (!function_exists('crypt')) {
|
||||
trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
|
||||
return false;
|
||||
}
|
||||
$ret = crypt($password, $hash);
|
||||
if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != PasswordCompat\binary\_strlen($hash) || PasswordCompat\binary\_strlen($ret) <= 13) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$status = 0;
|
||||
for ($i = 0; $i < PasswordCompat\binary\_strlen($ret); $i++) {
|
||||
$status |= (ord($ret[$i]) ^ ord($hash[$i]));
|
||||
}
|
||||
|
||||
return $status === 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace PasswordCompat\binary {
|
||||
/**
|
||||
* Count the number of bytes in a string
|
||||
*
|
||||
* We cannot simply use strlen() for this, because it might be overwritten by the mbstring extension.
|
||||
* In this case, strlen() will count the number of *characters* based on the internal encoding. A
|
||||
* sequence of bytes might be regarded as a single multibyte character.
|
||||
*
|
||||
* @param string $binary_string The input string
|
||||
*
|
||||
* @internal
|
||||
* @return int The number of bytes
|
||||
*/
|
||||
function _strlen($binary_string) {
|
||||
if (function_exists('mb_strlen')) {
|
||||
return mb_strlen($binary_string, '8bit');
|
||||
}
|
||||
return strlen($binary_string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a substring based on byte limits
|
||||
*
|
||||
* @see _strlen()
|
||||
*
|
||||
* @param string $binary_string The input string
|
||||
* @param int $start
|
||||
* @param int $length
|
||||
*
|
||||
* @internal
|
||||
* @return string The substring
|
||||
*/
|
||||
function _substr($binary_string, $start, $length) {
|
||||
if (function_exists('mb_substr')) {
|
||||
return mb_substr($binary_string, $start, $length, '8bit');
|
||||
}
|
||||
return substr($binary_string, $start, $length);
|
||||
}
|
||||
|
||||
}
|
33
app/lib/Phpqrcode-lib.inc
Normal file
33
app/lib/Phpqrcode-lib.inc
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\lib;
|
||||
|
||||
|
||||
/**
|
||||
* Class to ensure that Compatibility library below is loaded.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class Phpqrcode
|
||||
{
|
||||
|
||||
/**
|
||||
* Call this function to load necessary files.
|
||||
*/
|
||||
public static function load()
|
||||
{
|
||||
require_once('phpqrcode'.DS.'qrlib.php');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
3346
app/lib/Phpqrcode.inc
Normal file
3346
app/lib/Phpqrcode.inc
Normal file
File diff suppressed because it is too large
Load diff
972
app/lib/SMTP.inc
Normal file
972
app/lib/SMTP.inc
Normal file
|
@ -0,0 +1,972 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* The Legend of Z
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
* @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\lib
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Class to ensure that Compatibility library below is loaded.
|
||||
*
|
||||
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
|
||||
*/
|
||||
class SMTP
|
||||
{
|
||||
|
||||
/**
|
||||
* Call this function to ensure this file is loaded.
|
||||
*/
|
||||
public static function load()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
/**
|
||||
* PHPMailer RFC821 SMTP email transport class.
|
||||
* PHP Version 5
|
||||
* @package PHPMailer
|
||||
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||
* @author Brent R. Matzelle (original founder)
|
||||
* @copyright 2014 Marcus Bointon
|
||||
* @copyright 2010 - 2012 Jim Jagielski
|
||||
* @copyright 2004 - 2009 Andy Prevost
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* PHPMailer RFC821 SMTP email transport class.
|
||||
* Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server.
|
||||
* @package PHPMailer
|
||||
* @author Chris Ryan <unknown@example.com>
|
||||
* @author Marcus Bointon <phpmailer@synchromedia.co.uk>
|
||||
*/
|
||||
class SMTP
|
||||
{
|
||||
/**
|
||||
* The PHPMailer SMTP version number.
|
||||
* @type string
|
||||
*/
|
||||
const VERSION = '5.2.8';
|
||||
|
||||
/**
|
||||
* SMTP line break constant.
|
||||
* @type string
|
||||
*/
|
||||
const CRLF = "\r\n";
|
||||
|
||||
/**
|
||||
* The SMTP port to use if one is not specified.
|
||||
* @type int
|
||||
*/
|
||||
const DEFAULT_SMTP_PORT = 25;
|
||||
|
||||
/**
|
||||
* The maximum line length allowed by RFC 2822 section 2.1.1
|
||||
* @type int
|
||||
*/
|
||||
const MAX_LINE_LENGTH = 998;
|
||||
|
||||
/**
|
||||
* The PHPMailer SMTP Version number.
|
||||
* @type string
|
||||
* @deprecated Use the constant instead
|
||||
* @see SMTP::VERSION
|
||||
*/
|
||||
public $Version = '5.2.8';
|
||||
|
||||
/**
|
||||
* SMTP server port number.
|
||||
* @type int
|
||||
* @deprecated This is only ever used as a default value, so use the constant instead
|
||||
* @see SMTP::DEFAULT_SMTP_PORT
|
||||
*/
|
||||
public $SMTP_PORT = 25;
|
||||
|
||||
/**
|
||||
* SMTP reply line ending.
|
||||
* @type string
|
||||
* @deprecated Use the constant instead
|
||||
* @see SMTP::CRLF
|
||||
*/
|
||||
public $CRLF = "\r\n";
|
||||
|
||||
/**
|
||||
* Debug output level.
|
||||
* Options:
|
||||
* * `0` No output
|
||||
* * `1` Commands
|
||||
* * `2` Data and commands
|
||||
* * `3` As 2 plus connection status
|
||||
* * `4` Low-level data output
|
||||
* @type int
|
||||
*/
|
||||
public $do_debug = 0;
|
||||
|
||||
/**
|
||||
* How to handle debug output.
|
||||
* Options:
|
||||
* * `echo` Output plain-text as-is, appropriate for CLI
|
||||
* * `html` Output escaped, line breaks converted to <br>, appropriate for browser output
|
||||
* * `error_log` Output to error log as configured in php.ini
|
||||
* @type string
|
||||
*/
|
||||
public $Debugoutput = 'echo';
|
||||
|
||||
/**
|
||||
* Whether to use VERP.
|
||||
* @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
|
||||
* @link http://www.postfix.org/VERP_README.html Info on VERP
|
||||
* @type bool
|
||||
*/
|
||||
public $do_verp = false;
|
||||
|
||||
/**
|
||||
* The timeout value for connection, in seconds.
|
||||
* Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2
|
||||
* Th |