<?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
 */

interface WV_IDatatype {
	// Ja, das sind auch noch zwei nützliche Methoden...

	public function usesAssociativeResults();
	public function extractValuesFromParams(array $params);

	// Wert serialisieren und deserialisieren

	public function serializeValue($value, array $params);
	public function deserializeValue($value, array $params);

	// Nach einer Änderung der Parameter müssen wir wissen, ob wir die Daten
	// erneuern / löschen muss.

	public function checkParamCompatibility(array $oldParameters, array $newParameters);
	public function getIncompatibilityUpdateStatement(array $oldParameters, array $newParameters);

	// Wir müssen auch erfahren können, ob ein Wert in einem serialisierten Wert
	// enthalten ist.

	public function isValueContained($valueToSearch, $valueFromDatabase, array $params, $filterParams);
	public function isValueEmpty($value, array $params);

	// Der Datentyp muss sich darstellen können...

	public function renderForm(sly_Form $form, WV_IProperty $property, $value);
	public function serializeForm(WV_IProperty $property);
}
