<?php
/*
 * Copyright (c) 2013, webvariants GbR, http://www.webvariants.de
 *
 * This file is released under the terms of the MIT license. You can find the
 * complete text in the attached LICENSE file or online at:
 *
 * http://www.opensource.org/licenses/mit-license.php
 */

/**
 * Datentyp "Boolean"
 *
 * Dieser Datentyp kann nur die Werte 0 oder 1 annehmen. Im Frontend wird er
 * durch eine Checkbox sowie einen Beschreibungstext realisiert. Der
 * deserialisierte Wert ist immer ein boolean.
 */
class _WV_Datatype_Boolean extends _WV_Datatype_Base implements WV_IDatatype {
	public function renderForm(sly_Form $form, WV_IProperty $property, $value) {
		$value       = $this->decodeFormValue($property, $value);
		$description = $property->getParams();
		$description = isset($description['description']) ? $description['description'] : t('yes');

		$checkbox = new sly_Form_Input_Checkbox('property_'.$property->getID().'_value', $property->getTitle(), '1', $description);
		$checkbox->setMultilingual($property->isMultilingual());

		if ($property->isMultilingual()) {
			$checkbox->setChecks($value);
		}
		else {
			$checkbox->setChecked($value);
		}

		WV_Datatype::setHelpTextOnElement($form, $checkbox, $property);
		$form->add($checkbox);

		return $form;
	}

	public function serializeFormFilter($list, WV_IProperty $property) {
		return array_map('intval', $list);
	}

	public function deserializeValue($value, array $params) {
		return (boolean) $value;
	}

	protected function getDefaultParams() {
		return array();
	}

	public function isValueEmpty($value, array $params) {
		// booleans can never be empty (i.e. not set)
		return false;
	}
}
