You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
4.7 KiB
193 lines
4.7 KiB
2 years ago
|
<?php
|
||
|
|
||
|
// +---------------------------------------------------------------------------+
|
||
|
// | This file is part of the core package. |
|
||
|
// | Copyright (c) laiketui.com |
|
||
|
// | |
|
||
|
// | For the full copyright and license information, please view the LICENSE |
|
||
|
// | file that was distributed with this source code. You can also view the |
|
||
|
// | LICENSE file online at http://www.laiketui.com |
|
||
|
// +---------------------------------------------------------------------------+
|
||
|
|
||
|
/**
|
||
|
* WebController provides web specific methods to Controller such as, url
|
||
|
* redirection.
|
||
|
*
|
||
|
* @package laiketui
|
||
|
* @subpackage controller
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
abstract class WebController extends Controller
|
||
|
{
|
||
|
|
||
|
// +-----------------------------------------------------------------------+
|
||
|
// | PRIVATE VARIABLES |
|
||
|
// +-----------------------------------------------------------------------+
|
||
|
|
||
|
private
|
||
|
$contentType = null;
|
||
|
|
||
|
// +-----------------------------------------------------------------------+
|
||
|
// | METHODS |
|
||
|
// +-----------------------------------------------------------------------+
|
||
|
|
||
|
/**
|
||
|
* Generate a formatted Mojavi URL.
|
||
|
*
|
||
|
* @param string An existing URL for basing the parameters.
|
||
|
* @param array An associative array of URL parameters.
|
||
|
*
|
||
|
* @return string A URL to a Mojavi resource.
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
public function genURL ($url = null, $parameters = array())
|
||
|
{
|
||
|
|
||
|
if ($url == null)
|
||
|
{
|
||
|
|
||
|
$url = $_SERVER['SCRIPT_NAME'];
|
||
|
|
||
|
}
|
||
|
|
||
|
if (MO_URL_FORMAT == 'PATH')
|
||
|
{
|
||
|
|
||
|
// use PATH format
|
||
|
$divider = '/';
|
||
|
$equals = '/';
|
||
|
$url .= '/';
|
||
|
|
||
|
} else
|
||
|
{
|
||
|
|
||
|
// use GET format
|
||
|
$divider = '&';
|
||
|
$equals = '=';
|
||
|
$url .= '?';
|
||
|
|
||
|
}
|
||
|
|
||
|
// loop through the parameters
|
||
|
foreach ($parameters as $key => &$value)
|
||
|
{
|
||
|
|
||
|
$url .= urlencode($key) . $equals . urlencode($value) . $divider;
|
||
|
|
||
|
}
|
||
|
|
||
|
// strip off last divider character
|
||
|
$url = rtrim($url, $divider);
|
||
|
|
||
|
// replace &'s with &
|
||
|
$url = str_replace('&', '&', $url);
|
||
|
|
||
|
return $url;
|
||
|
|
||
|
}
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Retrieve the requested content type.
|
||
|
*
|
||
|
* @return string A content type.
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
public function getContentType ()
|
||
|
{
|
||
|
|
||
|
return $this->contentType;
|
||
|
|
||
|
}
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Initialize this controller.
|
||
|
*
|
||
|
* @return void
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
protected function initialize ()
|
||
|
{
|
||
|
|
||
|
// initialize parent
|
||
|
parent::initialize();
|
||
|
|
||
|
// set our content type
|
||
|
$this->contentType = $this->getContext()
|
||
|
->getRequest()
|
||
|
->getParameter('ctype', MO_CONTENT_TYPE);
|
||
|
|
||
|
}
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Redirect the request to another URL.
|
||
|
*
|
||
|
* @param string An existing URL.
|
||
|
* @param int A delay in seconds before redirecting. This only works on
|
||
|
* browsers that do not support the PHP header.
|
||
|
*
|
||
|
* @return void
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
public function redirect ($url, $delay = 0)
|
||
|
{
|
||
|
|
||
|
// shutdown the controller
|
||
|
$this->shutdown();
|
||
|
|
||
|
// redirect
|
||
|
/* delete to use output to client before redirect
|
||
|
header('Location: ' . $url);
|
||
|
*/
|
||
|
|
||
|
$echo = '<html>' .
|
||
|
'<head>' .
|
||
|
'<meta http-equiv="refresh" content="%d;url=%s"/>' .
|
||
|
'</head>' .
|
||
|
'</html>';
|
||
|
|
||
|
$echo = sprintf($echo, $delay, $url);
|
||
|
|
||
|
echo $echo;
|
||
|
|
||
|
exit;
|
||
|
|
||
|
}
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Set the content type for this request.
|
||
|
*
|
||
|
* @param string A content type.
|
||
|
*
|
||
|
* @return void
|
||
|
*
|
||
|
* @author ketter (ketter@laiketui.com)
|
||
|
* @since 3.0.0
|
||
|
*/
|
||
|
public function setContentType ($type)
|
||
|
{
|
||
|
|
||
|
$this->contentType = $type;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
?>
|