Passed
Push — master ( 5f63ee...30b096 )
by Jean-Christophe
02:33
created

_JsUtils::forward()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 13
nc 4
nop 4
dl 0
loc 17
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
namespace Ajax\php\cakephp;
4
5
6
use Cake\Routing\Router;
7
use Cake\View\View;
8
use Cake\Network\Response;
9
use Cake\Core\App;
10
11
class _JsUtils extends \Ajax\JsUtils{
12
	public function getUrl($url){
13
		return Router::url($url);
14
	}
15
	public function addViewElement($identifier,$content,&$view){
16
		$viewVars=$view->viewVars;
17
		if (isset($viewVars["q"]) === false) {
18
			$controls=array ();
19
		}else{
20
			$controls=$viewVars["q"];
21
		}
22
		$controls[$identifier]=$content;
23
		$view->set("q", $controls);
24
	}
25
26
	public function createScriptVariable(&$view,$view_var, $output){
27
		$view->set($view_var,$output);
28
	}
29
30
	/**
31
	 * @param App\Controller\AppController $initialControllerInstance
32
	 * @param string $controllerName
33
	 * @param string $actionName
34
	 * @param array $params
35
	 * @see \Ajax\JsUtils::forward()
36
	 */
37
	public function forward($initialControllerInstance,$controllerName,$actionName,$params=array()){
38
		\ob_start();
39
		if(isset($params) && !\is_array($params)){
40
			$params=[$params];
41
		}
42
		$url=h(Router::url(\array_merge([
43
				'controller' => $controllerName,
44
				'action' => $actionName],$params),false
45
		));
46
		$base=Router::url("/");
47
		if (substr($url, 0, strlen($base)) == $base) {
48
			$url = substr($url, strlen($base));
49
		}
50
		$initialControllerInstance->requestAction($url);
51
		$result=\ob_get_contents();
52
		\ob_end_clean();
53
		return $result;
54
	}
55
56
	public function renderContent($initialControllerInstance,$viewName, $params=NULL) {
57
		$view = new View(Router::getRequest(true), new Response());
58
		if(\is_array($params)){
59
			foreach ($params as $k=>$v){
60
				$view->set($k, $v);
61
			}
62
		}
63
		return $view->render($viewName);
64
	}
65
66
	public function fromDispatcher($dispatcher){
67
		return \explode("/", Router::getRequest(true)->url);
68
	}
69
}
70