%PDF- %PDF-
| Direktori : /home1/lightco1/www/elstead.com.au/libraries/nextend2/nextend/library/libraries/router/ |
| Current File : //home1/lightco1/www/elstead.com.au/libraries/nextend2/nextend/library/libraries/router/router.php |
<?php
class N2RouterAbstract
{
protected $baseUrl;
/**
* @param $info N2ApplicationInfo
*/
public function __construct($info) {
$this->baseUrl = $info->getUrl();
}
/**
* @param array|string $url
*
* @return string
*/
public function createUrl($url, $isPost = false) {
//create url from array
// [0] = controller/method
// [1] = query parameters
if (is_array($url)) {
$href = $this->route($url[0], (isset($url[1]) ? $url[1] : array()), $isPost);
} elseif (filter_var($url, FILTER_VALIDATE_URL)) {
//completed url, no mods, just fun
$href = $url;
} elseif (strpos($url, "/")) {
//create url from string
//format: controller/method
$href = $this->route($url, array(), $isPost);
} else {
//fake link, replace to hashtag
$href = "#";
}
return $href;
}
public function createAjaxUrl($url, $isPost = false) {
//create url from array
// [0] = controller/method
// [1] = query parameters
$parameters = array('nextendajax' => 1) + N2Form::tokenizeUrl();
if (!isset($url[1])) {
$url[1] = $parameters;
} else {
$url[1] = array_merge($url[1], $parameters);
}
return $this->createUrl($url, $isPost);
}
public function route($url, $params = array(), $isPost = false) {
if (strpos($url, "/") === false) {
throw new Exception("Invalid action {$url}. Valid format controller/method");
}
$parsedAction = explode("/", $url);
$url = "";
if (strpos($this->baseUrl, "?") !== false) {
$url .= $this->baseUrl . "&nextendcontroller=" . $this->normalizeParameter($parsedAction[0]);
} else {
$url .= $this->baseUrl . "?nextendcontroller=" . $this->normalizeParameter($parsedAction[0]);
}
$url .= "&nextendaction=" . $this->normalizeParameter($parsedAction[1]);
if ($isPost) {
$params += N2Form::tokenizeUrl();
}
if (count($params)) {
$url .= "&" . http_build_query($params, null, '&');
}
return $url;
}
/**
* @param $string
*
* @return mixed
*/
public static function normalizeParameter($string) {
return str_replace(array(
"?",
"&"
), "", strtolower(trim($string)));
}
public function setMultiSite() {
return $this;
}
public function unSetMultiSite() {
return $this;
}
}
N2Loader::import("libraries.router.router", 'platform');