addClass(self::ZBX_STYLE_CLASS); $this->name = $name; } /** * Set unique ID, is used as suffix for generated check-box IDs. * * @param string $uniqid Unique id string. */ public function setUniqid(string $uniqid) { $this->uniqid = $uniqid; return $this; } /** * @param array $values * * @return CCheckBoxList */ public function setChecked(array $values) { $values = array_flip($values); foreach ($this->values as &$value) { $value['checked'] = array_key_exists($value['value'], $values); } unset($value); return $this; } /** * @param array $values * * @return CCheckBoxList */ public function setOptions(array $values) { $this->values = []; foreach ($values as $value) { $this->values[] = $value + [ 'label' => '', 'value' => null, 'checked' => false ]; } return $this; } /** * Sets the width of the checkbox list. * * @return CCheckBoxList */ public function setWidth($value) { $this->addStyle('width: '.$value.'px;'); return $this; } /** * Set checkboxes enabled state. * * @param bool $enabled State of checkboxes. */ public function setEnabled($enabled) { $this->enabled = $enabled; return $this; } /** * Display checkboxes in vertical order. * * @param bool $vertical * * @return CCheckBoxList */ public function setVertical(bool $vertical = true): self { $this->vertical = $vertical; return $this; } /** * Set number of columns. * * @param int $columns * * @return CCheckBoxList */ public function setColumns(int $columns): self { $this->columns = $columns; return $this; } /* * @param bool $destroy * * @return string */ public function toString($destroy = true) { $this->addStyle('--columns: '.$this->columns.';'); if ($this->vertical) { $values_count = count($this->values); $max_rows = (int) ceil($values_count / $this->columns); $this->addClass(self::ZBX_STYLE_VERTICAL); $this->addStyle('--rows: '.$max_rows.';'); } foreach ($this->values as $value) { $name = array_key_exists('name', $value) ? $value['name'] : $this->name.'['.$value['value'].']'; $checkbox = (new CCheckBox($name, $value['value'])) ->setLabel($value['label']) ->setChecked($value['checked']) ->setEnabled($this->enabled); if (array_key_exists('id', $value) || $this->uniqid !== '') { $checkbox->setId(array_key_exists('id', $value) ? $value['id'] : $checkbox->getId().'_'.$this->uniqid ); } if (array_key_exists('unchecked_value', $value)) { $checkbox->setUncheckedValue($value['unchecked_value']); } parent::addItem($checkbox); } return parent::toString($destroy); } }