HummingBirdAnimeClient/app/base/BaseController.php

101 lines
1.8 KiB
PHP
Raw Normal View History

2015-05-22 12:36:26 -04:00
<?php
/**
* Base Controller
*/
2015-05-22 12:36:26 -04:00
/**
* Base class for controllers, defines output methods
*/
2015-05-22 12:36:26 -04:00
class BaseController {
/**
* The global configuration object
* @var object $config
*/
protected $config;
2015-05-22 12:36:26 -04:00
/**
* Constructor
*/
public function __construct()
2015-05-22 12:36:26 -04:00
{
global $config;
$this->config = $config;
2015-05-22 12:36:26 -04:00
}
/**
* Output a template to HTML, using the provided data
*
* @param string $template
* @param array|object $data
2015-05-22 12:36:26 -04:00
* @return void
*/
public function outputHTML($template, $data=[])
{
global $router, $defaultHandler;
2015-05-22 12:36:26 -04:00
$route = $router->get_route();
$data['route_path'] = ($route) ? $router->get_route()->path : "";
$defaultHandler->addDataTable('Template Data', $data);
2015-05-22 12:36:26 -04:00
$template_path = _dir(APP_DIR, 'views', "{$template}.php");
if ( ! is_file($template_path))
2015-05-22 12:36:26 -04:00
{
throw new Exception("Invalid template : {$path}");
die();
2015-05-22 12:36:26 -04:00
}
ob_start();
extract($data);
include _dir(APP_DIR, 'views', 'header.php');
include $template_path;
include _dir(APP_DIR, 'views', 'footer.php');
2015-05-22 12:36:26 -04:00
$buffer = ob_get_contents();
ob_end_clean();
header("Content-type: text/html;charset=utf-8");
echo $buffer;
die();
}
/**
* Output json with the proper content type
*
* @param mixed $data
2015-05-22 12:36:26 -04:00
* @return void
*/
public function outputJSON($data)
{
if ( ! is_string($data))
{
$data = json_encode($data);
}
header("Content-type: application/json");
echo $data;
}
/**
* Redirect to the selected page
*
* @param string $url
* @param int $code
* @return void
*/
public function redirect($url, $code, $type="anime")
{
$url = full_url($url, $type);
$codes = [
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other'
];
header("HTTP/1.1 {$code} {$codes[$code]}");
header("Location: {$url}");
die();
}
}
// End of BaseController.php