<?php

require_once('includes/global.php');
if (array_key_exists('nothide',$_GET))
	$nothide = true;
else
	$nothide = false;
if ($nothide) ShowPage();

$FontFile = 'images/FRIZQT__.ttf';
$TranslationTree = GetTranslationTree();

//nastavení
$xp_from_word = 1;
$index_level = 100;
$from_diakrit = 3; //zvýšené xp za slovo s diakritikou

  function CheckDiakrit($word) {
  	$result = false;
    $Diakrit = Array("á","č","ď","é","ě","í","ľ","ň","ó","ř","š","ť","ú",
    "ů","ý","ž","Á","Č","Ď","É","Ě","Í","Ľ","Ň","Ó","Ř","Š","Ť","Ú","Ů","Ý","Ž");
  	for ($i=0;$i<count($Diakrit);$i=$i+1) {
  		if (strpos($word,$Diakrit[$i]) <> false) {
  			$result = true;
  		}
  	}
  	return $result;
  }

  function CreateImg($user,$xp) {
  	global $index_level,$FontFile;
  	
  	if ($xp > 0) {
  		$level = sqrt ($xp / $index_level);
  		$level = substr($level,0,strpos($level,'.'));
  	} else {
  		$level = 0;
  	}
  	$xp_min = ($level) * ($level) * ($index_level);
  	$xp_max = ($level+1)*($level+1)* ($index_level);
  	$xp_max = $xp_max-$xp_min;
  	$xp = $xp-$xp_min;
  	
	if($xp_max > 0) $Percent = ( $xp / $xp_max) * 100; else $Percent = 0;
	$Percent = substr($Percent, 0, 5);

	$PercentBar = $Percent * 2.5;
	$Image = ImageCreateTrueColor(250, 15);
	$Color1 = imagecolorallocate($Image, 214, 214, 214);
	$Color2 = imagecolorallocate($Image, 239, 131, 166);
	$Color3 = imagecolorallocate($Image, 225, 0, 0);
	imagefilledrectangle($Image, 0, 0, 250, 15, $Color1);
	imagefilledrectangle($Image, 0, 0, $PercentBar, 59, $Color2);
	ImageTTFText($Image, 11, 0, 10, 12, $Color3, $FontFile, $level.' Level');
	ImageTTFText($Image, 8, 0, 80, 12, $Color3, $FontFile, $xp.'/'.$xp_max.' xp   '.$user);
	
	if (file_exists('tmp/teams/') == false) mkdir ('tmp/teams/');
	if (file_exists('tmp/'.$user.'/') == false) mkdir ('tmp/'.$user.'/');
	ImagePNG($Image,'tmp/'.$user.'/level.png'); 
  }

  function GetXPFromTranslation($user_ID) {
	global $Database,$TranslationTree,$xp_from_word,$from_diakrit;
	$xp = 0;

	foreach($TranslationTree as $Group) { //překladové skupiny
  		if($Group['TablePrefix'] != '') {
  			$groupby = 'GROUP BY';
  			foreach($TranslationTree[$Group['Id']]['Items'] as $Index => $TextItem) {  
  				if ($groupby == 'GROUP BY') $groupby .= ' '.$TextItem['Column'];
  				else $groupby .= ', '.$TextItem['Column'];
  			}	
    		$IDtran = $Database->SQLCommand('SELECT * FROM `'.$Group['TablePrefix'].'` WHERE User = '.$user_ID.' AND Complete = 1 '.$groupby);
			while ($Line = mysql_fetch_array($IDtran)) {   //jednotlivé překlady
				$LineComparison = mysql_fetch_assoc($Database->SQLCommand('SELECT * FROM `'.$Group['TablePrefix'].'` WHERE ID = '.$Line['Take']));
	 			$xp_translation = 0;   //mazání posledního
	 			$translated = true;
			  	foreach($TranslationTree[$Group['Id']]['Items'] as $Index => $TextItem) {          //jednotlivé položky překladu
  			 		if (($Line[$TextItem['Column']] <> $LineComparison[$TextItem['Column']]) and (strlen($Line[$TextItem['Column']]) > (strlen($LineComparison[$TextItem['Column']])*0.5))) {  //zda není stejný, zda je aspoň dlouhý jako polovina
  			 			$TextArr = explode(' ',$Line[$TextItem['Column']]);
						for ($i=0;$i<count($TextArr);$i=$i+1) {  //pro každé slovo
							if (CheckDiakrit($TextArr[$i]))  // zjišťování diakritiky
								$indikator = $from_diakrit;
							else
								$indikator = 1;
							$xp_translation = $xp_translation + ($indikator * $xp_from_word);
						}      	  			      	  			 
      	  			} else {
      	  				if (($Line[$TextItem['Column']] == $LineComparison[$TextItem['Column']]) and
      	  				 ('0' == $LineComparison['Language']) and
      	  				  ($LineComparison[$TextItem['Column']] <> '') and
      	  				   ($TextItem['Column'] <> 'ShortCut'))
      	  					$translated = false;
					}
				}			
				if ($translated) $xp = $xp+$xp_translation;   //přičítání XP za celý překlad, pokud je celý přeložený
			}
		}
	}
	return $xp;
  }

//hlavní kod pro uživatele
	if ($nothide) $ID = $Database->SQLCommand('SELECT ID,user FROM user');
	else $ID = $Database->SQLCommand('SELECT ID,user FROM user WHERE NeedUpdate = 1');
while ($LineUser = mysql_fetch_array($ID)) {
	$xp = GetXPFromTranslation($LineUser['ID']); //načítání XP
	$Database->SQLCommand('UPDATE user SET XP = '.$xp.' WHERE ID = '.$LineUser['ID']);  //ukládání XP pro řazení
	CreateImg($LineUser['user'],$xp);  //vytváření obrázku
	if ($nothide) 	echo ('<img src="tmp/'.$LineUser['user'].'/level.png" /><br />');
}
//hlavní kod pro překladatelské týmy
	if ($nothide) $ID = $Database->SQLCommand('SELECT ID,name,(SELECT avg(XP) FROM user WHERE team = team.ID) as average FROM team');
	else $ID = $Database->SQLCommand('SELECT ID,name,(SELECT avg(XP) FROM user WHERE team = team.ID) as average  FROM team WHERE ID IN (SELECT Team FROM user WHERE NeedUpdate = 1)');
while ($LineTeam = mysql_fetch_array($ID)) {
	CreateImg('teams/'.$LineTeam['name'],substr($LineTeam['average'], 0, strpos($LineTeam['average'],'.')));  //vytváření obrázku
	if ($nothide) 	echo ('<img src="tmp/'.$LineTeam['name'].'/level.png" /><br />');
}
	$Database->SQLCommand('UPDATE user SET NeedUpdate = 0');

if ($nothide) ShowFooter();      

?>
