<?php
/*
	Ryzom Core Web-Based Translation Tool
	Copyright (C) 2011 Piotr Kaczmarek <p.kaczmarek@openlink.pl>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
?>
<?php
class Translation extends AppModel {
	var $name = 'Translation';
	var $displayField = 'translation_text';

	var $scaffoldForbiddenActions = array();
	var $scaffoldActions = array("add" => "fk", "index" => "fk");

	var $belongsTo = array(
		'Identifier' => array(
			'className' => 'Identifier',
			'foreignKey' => 'identifier_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
		'IdentifierColumn' => array(
			'className' => 'IdentifierColumn',
			'foreignKey' => 'identifier_column_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
		'User' => array(
			'className' => 'User',
			'foreignKey' => 'user_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
		'ParentTranslation' => array(
			'className' => 'Translation',
			'foreignKey' => 'parent_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
	);

	var $hasMany = array(
		'Vote' => array(
			'className' => 'Vote',
			'foreignKey' => 'translation_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
/*		'Comment' => array(
			'className' => 'Comment',
			'foreignKey' => 'translation_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),*/
		'ChildTranslation' => array(
			'className' => 'Translation',
			'foreignKey' => 'parent_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		),
	);

	function setBest()
	{
		if (!$this->id)
			return false;
		$this->read();
		if (!isset($this->data['Translation']['identifier_id']))
			return false;

		// set best on chosen translation
		$ret = $this->save(array('best' => 1));
		$best_id = $this->id;

		// reset best on other translations
		$ret = $this->updateAll(array('Translation.best' => 0), array(
			'AND' => array(
				'Translation.identifier_id' => $ret['Translation']['identifier_id'],
				'Translation.id !=' => $best_id,
			),
		));
		$this->log($ret);
		
		return $this->id;
	}
	
	function makeHash($ent)
	{
		if (isset($ent['columns']) && is_array($ent['columns']))
		{
			sort($ent['columns']);
			return md5(serialize($ent['columns']));
		}
		else if (isset($ent['string']))
			return md5($ent['string']);
	}
}