<?php
class AccessRightsTreeInputCheckboxHelper extends AppHelper {
public $helpers = array("Form");
private $permissions = null;
private $formModel = "Menu";
private $mainULAttributes = "";
public function __construct(View $view, $settings = array()) {
parent::__construct($view, $settings);
$this->permissions = $settings["permissions"];
$this->formModel = $settings["formModel"];
$this->mainULAttributes = $settings["mainULAttributes"];
}
public function generateAccessRightsTreeInputCheckbox(array $data = array(), $strPath = "", $inputName = "", $depth=0) {
$strUL = "<ul>";
if ($depth == 0) {
$strUL = "<ul ".$this->mainULAttributes.">";
}
$path = "";
$inputArrStrName = "";
foreach ($data as $item) {
$access = false;
if (is_array($item["children"]) && (count($item["children"]) > 0)) {
$path = $item["Aco"]["alias"];
$inputArrStrName = $path;
if ($this->__checkPermission($item["Aco"]["id"], $this->permissions)) {
$access = true;
}
$strUL .= "<li id={$item["Aco"]["alias"]}Item>";
if ($access) {
$strUL .= $this->Form->checkbox("{$this->formModel}.{$inputArrStrName}.{$path}", array(
"id" => $item["Aco"]["alias"],
"value" => "1",
"class" => "access_rights",
"checked" => "checked"
)
);
} else {
$strUL .= $this->Form->checkbox("{$this->formModel}.{$inputArrStrName}.{$path}", array(
"id" => $item["Aco"]["alias"],
"value" => "1",
"class" => "access_rights"
)
);
}
$strUL .= $this->Form->label("{$this->formModel}.{$item["Aco"]["alias"]}");
$strUL .= $this->generateAccessRightsTreeInputCheckbox($item['children'], $path, $inputArrStrName, ($depth+1));
$strUL .= "</li>";
} else {
$path = $strPath."/".$item['Aco']['alias'];
$inputArrStrName = "{$inputName}.children.{$item["Aco"]["alias"]}";
if ($this->__checkPermission($item["Aco"]["id"], $this->permissions)) {
$access = true;
}
$strUL .= "<li>";
if ($access) {
$strUL .= $this->Form->checkbox("{$this->formModel}.{$inputArrStrName}", array(
"class" => "access_rights {$strPath}",
"checked" => "checked"
)
);
} else {
$strUL .= $this->Form->checkbox("{$this->formModel}.{$inputArrStrName}", array(
"class" => "access_rights {$strPath}"
)
);
}
$strUL .= $this->Form->label("{$this->formModel}.{$item["Aco"]["alias"]}");
$strUL .= "</li>";
}
}
$strUL .= "</ul>";
return $strUL;
}
private function __checkPermission($itemPermission, array $permissions) {
$ret = false;
$count = count($permissions);
if ($count == 0) {
return false;
} else {
if (in_array(1, $permissions)) {
return true;
} else {
if (in_array($itemPermission, $permissions)) {
$ret = true;
}
}
}
return $ret;
}
}