<?php
class Version extends Controller
{
	var $hibajelentes = array('2013'=>1,'2014'=>1,'2015'=>1);
	var $aktivalasihibak = array(
		'error: nincs ilyen password',
		'error: nem aktiv a program',
		'error: nincs vasarlasi idopont',
		'error: hianyzo kod',
		'error: masik gep van regisztralva',
		'error: nem aktiv regisztracio',
		'error: nincs kifizetve',
		'error: tul sok telepites'
	);
	
	var $kulcsprverzio = array(
		// 2013 interior prof - elÅfizetÃ©s
	//	'950054' => array('9500549300568130',9,1),	// mÃ¡r eladva
		'950055' => array('9500559300623371',9,1),
		'950056' => array('9500569300901666',9,1),
		'950057' => array('9500579300292771',9,1),
		'950058' => array('9500589300939891',9,1),
		'950059' => array('9500599300308525',9,1),
		'950060' => array('9500609300502875',9,1),
		'950061' => array('9500619300525057',9,1),
		'950062' => array('9500629300291068',9,1),
		'950063' => array('9500639300800628',9,1),
		'950064' => array('9500649300993926',9,1),
		
		// 2013 standard - normÃ¡l
		'980104' => array('9801047300709739',7,0),
		'980105' => array('9801057300249936',7,0),
		'980106' => array('9801067300119100',7,0),
		'980107' => array('9801077300009403',7,0),
		'980108' => array('9801087300176636',7,0),
		'980109' => array('9801097300173361',7,0),
		'980110' => array('9801107300987491',7,0),
		'980111' => array('9801117300041608',7,0),
		'980112' => array('9801127300907455',7,0),
		
		// 2013 studio - normÃ¡l
		'980113' => array('9801136300019297',6,0),
		'980114' => array('9801146300953568',6,0),
		'980115' => array('9801156300054608',6,0),
		'980116' => array('9801166300387538',6,0),
		'980117' => array('9801176300559245',6,0),
		'980118' => array('9801186300983875',6,0),
		'980119' => array('9801196300445516',6,0),
		'980120' => array('9801206300502309',6,0),
		'980121' => array('9801216300152005',6,0)
	);
	
	function Version(){
		parent::Controller();
		$this->load->model('mversion');
	}
	
	function index(){
		$frissitesek = $this->mversion->get_public();
		
		$data['frissitesek'] = $frissitesek;
		
		hun() ? $data['title'] = 'ARCHLine.XP letöltési központ' : $data['title'] = 'ARCHLine.XP Release notes';
		$data['tartalom']='version/indexv2';
		$data['csik']=array('home','letoltkozpont');
		
		$data['javascript'] = array('jquery_ui', 'jquery.numeric.pack');
		$data['style'] = array('jquery.ui');
		
		$this->load->view('site',$data);
	}
	
	function indexv2(){
		$frissitesek = $this->mversion->get_public();
		
		$data['frissitesek'] = $frissitesek;
		
		hun() ? $data['title'] = 'ARCHLine.XP Verziók' : $data['title'] = 'ARCHLine.XP Release notes';
		$data['tartalom']='version/indexv2';
		$data['csik']=array('home');
		
		$data['javascript'] = array('jquery_ui', 'jquery.numeric.pack');
		$data['style'] = array('jquery.ui');
		
		$this->load->view('site',$data);
	}
	
	// download center "Küldés"
	function submit(){
		$sorozatszam = mysql_real_escape_string($this->input->post('sorozatszam'));
		$ver_id = mysql_real_escape_string($this->input->post('verid'));
		
		function probalkozas($v=""){
			if( !isset($_SESSION["letoltesprobadb"]) ){
				$_SESSION["letoltesprobadb"] = 1;
			}elseif( $_SESSION["letoltesprobadb"] >= 5){
				echo '<script>window.parent.kiiro("'.lang('frissites_sokproba').'")</script>';
				exit();
			}elseif($v != "jo"){
				$_SESSION["letoltesprobadb"] = $_SESSION["letoltesprobadb"] + 1;
			}
		}
		
		
		
		// benne van-e
		$parancs = " SELECT * FROM `".CRMADATBAZIS."`.`h_programs` WHERE prPass = '".$sorozatszam."' ";
		$ervenyes = $this->db->query($parancs)->row();
		
		
		// ha sincs ilyen sorozatszám
		if( !isset($ervenyes->prStat) ){
			// hibás sorozatszám
			probalkozas();
			echo '<script>window.parent.kiiro("'.lang('frissites_hibassorozatszam').': '.$sorozatszam.'")</script>';
			$eredmeny = "nincs ilyen sorozatszam";
		}
		else{
			
			// utolso aktiv program
			$q1 = " SELECT * FROM `".CRMADATBAZIS."`.`h_programs` WHERE prHlNum = '".$ervenyes->prHlNum."' AND prStat = 0 ORDER BY prVerID DESC";
			$utolsoProg = $this->db->query($q1)->row();
			
			
			// az utolso aktiv program verzioja legalabb akkora-e mint amit le akar szedni
			$megfelelteto = array(
								1 => "40",
								2 => "45",
								3 => "50",
								4 => "2005",
								5 => "2006",
								6 => "2007",
								7 => "2008",
								8 => "2009",
								9 => "2010",
								10 => "2011",
								11 => "2012",
								12 => "2013",	// 2013 béta
								13 => "2013",	// ???
								14 => "2014"	// ???
							);
			
			$letoltendo = $this->db->query(" SELECT * FROM `cadline2`.`version` WHERE ver_id = '{$ver_id}'")->row();
			
		//	if( $megfelelteto[$utolsoProg->prVerID] >= $letoltendo->ev && $utolsoProg->prStat == "0" ){
			if( ($megfelelteto[$utolsoProg->prVerID] >= $letoltendo->ev  /*||  ($letoltendo->ev==2013 && $megfelelteto[$utolsoProg->prVerID]==2012)*/ ) && $utolsoProg->prStat == "0" ){
				$this->okkk($ver_id,$sorozatszam,$ervenyes);
				return;
				
			}elseif( $utolsoProg->prStat != "0" ){
				probalkozas();
				echo '<script>window.parent.kiiro("'.lang('frissites_sorozatszamletiltva').': '.$sorozatszam.' ")</script>';
				$eredmeny = "nem aktiv";
				
			}elseif( $megfelelteto[$utolsoProg->prVerID] < $letoltendo->ev ){
				echo '<script>window.parent.kiiro("'.lang('frissites_regiprogram').'")</script>';
				$eredmeny = "regi program: ".$megfelelteto[$utolsoProg->prVerID];
				
			}else{
				echo '<script>window.parent.kiiro("'.lang('frissites_hibassorozatszam').': '.$sorozatszam.'")</script>';
				$eredmeny = "HIBA!!!\n utolso pass: ".$utolsoProg->prPass."\n utolso verzio: ".$megfelelteto[$utolsoProg->prVerID]."\n letoltendo eve:".$letoltendo->ev;
				
				exec('echo "'.$eredmeny.'" | mail -s "Letoltesi hiba" eszter@cadline.hu');
			}
			
		}
		
		// próbálkozás elmentése
		$record->ver_id = $ver_id;
		$record->serial = $sorozatszam;
		$record->eredmeny = $eredmeny;
		$record->datum = date('Y-m-d H:i:s',time());
		$record->ip = $_SERVER['REMOTE_ADDR'];
		$this->db->insert('version_download',$record);
		
		// esemény a felhasználóhoz
		$this->load->model('mclusers');
		
		$parancs = " SELECT hlUser FROM `".CRMADATBAZIS."`.`hardlock` WHERE hlNum = '".$ervenyes->prHlNum."'";
		$nUserID = $this->db->query($parancs)->row();
		$nUserID = $nUserID->hlUser;
		
		$fajl = $this->mversion->get_row($ver_id);
		
		
		if(hun()){
			// Béta tesztelő
			if($letoltendo->ev=="2014")
				$this->mclusers->addEvent($nUserID,9,"Letöltés1: ".$fajl->projectid." build: ".$fajl->pkgid.", ".$eredmeny.": ".$sorozatszam);
			
			$this->mclusers->addEvent($nUserID,117,"Letöltés: ".$fajl->projectid." build: ".$fajl->pkgid.", ".$eredmeny.": ".$sorozatszam);
		}
		else{
			// Béta tesztelő
			if($letoltendo->ev=="2014")
				$this->mclusers->addEvent($nUserID,135,"Letöltés1: ".$fajl->projectid." build: ".$fajl->pkgid.", ".$eredmeny.": ".$sorozatszam);
			
			$this->mclusers->addEvent($nUserID,167,"Letöltés: ".$fajl->projectid." build: ".$fajl->pkgid.", fájl: ".$fajl->fajl.", ".$eredmeny.": ".$sorozatszam,"eng");
		}
		
		$eseminfo = "Hiba: {$eredmeny}, Év: {$fajl->ev}, Fájl: {$fajl->fajl}, Build: {$fajl->pkgid}, Sorozatszám: {$sorozatszam}";
		$this->mclusers->hlesemeny(substr($sorozatszam,0,6), 20, $eseminfo);
		
		
	}
	
	function okkk($ver_id,$sorozatszam,$ervenyes){
		
		probalkozas("jo");
		$fajl = $this->db->query(" SELECT * FROM `cadline2`.`version` WHERE ver_id = '".$ver_id."'")->row();
		
		// esemény a felhasználóhoz
		
		$this->load->model('mclusers');
		
		$parancs = " SELECT hlUser FROM `".CRMADATBAZIS."`.`hardlock` WHERE hlNum = '".$ervenyes->prHlNum."'";
		$nUserID = $this->db->query($parancs)->row();
		$nUserID = $nUserID->hlUser;
		
		if( $nUserID && is_numeric($nUserID) ){
			if(hun()){
				$this->mclusers->addEvent($nUserID,117,"Letöltés: ".$fajl->fajl." build: ".$fajl->pkgid.", Sikeres: ".$sorozatszam);
			//		 béta tesztelő esemény
			//	if( $ver_id == "1016" || $ver_id == "1015" )
			//		$this->mclusers->addEvent($nUserID,9,"");
			}
			else{
				$this->mclusers->addEvent($nUserID,167,"Letöltés: ".$fajl->fajl." build: ".$fajl->pkgid.", Sikeres: ".$sorozatszam, "eng");
			//		 béta tesztelő esemény
			//	if( $ver_id == "1016" || $ver_id == "1015" )
			//		$this->mclusers->addEvent($nUserID,135,"","eng");
			}
		}
		/*else{
			$record->osztaly = "version";
			$record->fv = "okkk";
			$record->hiba = "Nem talalom a felhasznalot: ".$ver_id." , ".$sorozatszam;
			$record->datum = date('Y-m-d H:i:s',time());
			$this->db->insert('a_hibak',$record);
			
		}*/
		
		$eseminfo = "Sikeres letöltés, Év: {$fajl->ev}, Fájl: {$fajl->fajl}, Build: {$fajl->pkgid}, Sorozatszám: {$sorozatszam}";
		$this->mclusers->hlesemeny(substr($sorozatszam,0,6), 20, $eseminfo);
		
		redirect('/public/downloads/'.$fajl->fajl);
	}
	
	
	function comparison(){
		$data['page']   = hun() ? $this->mpages->get_row(820) : $this->mpages->get_row(803);
		$data['title']  = 'ARCHLine.XP Version comparison';
		$data['tartalom'] = 'version/comparison';
		
		$this->load->view('site',$data);
	}
	
	// van-e frissítés a programhoz
	function update(){
		$projectid = $this->uri->segment(3);
		$pkgid = $this->uri->segment(4);
		$sorozatszam = $this->uri->segment(5);
		
		if(!$sorozatszam){
			print "nincs sorozatszam";
			return;
		}
		
	//	$langid = $this->uri->segment(5);
	//	$usertype = $this->uri->segment(6);
		
		$utolso = $this->mversion->get_latest($projectid,$pkgid,substr($sorozatszam,0,6),'0');
		
		$igen = "";
		
		if($utolso){
			if($utolso->pkgid > $pkgid){
				$fajl = "public/downloads/".$utolso->fajl;
				if(file_exists($fajl)){
					print str_replace("x64","",$utolso->projectid)."; ";
					print $utolso->pkgid."; ";
					print "http://".$_SERVER['HTTP_HOST']."/".$fajl."; ";
					print $utolso->azonosito."; ";
					print $utolso->csendes;
					if($utolso->ev >= 2013){
						print "; ".$this->hibajelentes[$utolso->ev];
						print "; ".$utolso->hash;
					}
					
					$igen = "kiadta a fajlt";
				}
				else{
					print "nincs meg a fajl: ".$fajl;
					$igen = "nincs meg a fajl: ".$fajl;
				}
			}else{
				print "nincs frissebb";
				$igen = "nincs frissebb";
				if($utolso->ev >= 2013){
					print ";;;;; ".$this->hibajelentes[$utolso->ev];
					print "; ";//.$utolso->hash;
				}
			}
		}else{
			//print "hiba";
			if($projectid=="ARCHlineXP2013x64" || $projectid=="ARCHlineXP2013"){
				print ";;;;; ".$this->hibajelentes['2013'];
				print "; ";
			}
			else{
				print "hiba";
			}
			$igen = "hiba";
		}
		
		
	/*	$record->osztaly = "version";
		$record->fv = "update";
		$record->hiba = "kapott: ".$pkgid."\nutolso: ".$utolso->pkgid."\n".$igen."\nprid: ".$projectid;
		$record->datum = date('Y-m-d H:i:s',time());*/
	//	if( strtolower($projectid) == "archlinexp2012")
	//	$this->db->insert('a_hibak',$record);
	}
	
	// aktív-e a megadott sorozatszám
	function serial(){
		$serial = $this->uri->segment(3);
		
		if(!$serial){
			print "HiÃ¡nyzÃ³ sorozatszÃ¡m!";
			return;
		}
		
		$sql = "SELECT * FROM `".CRMADATBAZIS."`.`h_programs` WHERE `prPass` = '{$serial}'";
		$adatok = $this->db->query($sql)->row();
		
		if(!$adatok->prPass){
			print "A sorozatszÃ¡m nem talÃ¡lhatÃ³ az adatbÃ¡zisban!";
			
			$record->osztaly = "version";
			$record->fv = "serial";
			$record->hiba = "A sorozatszÃ¡m nem talÃ¡lhatÃ³ az adatbÃ¡zisban: ".$serial;
			$record->datum = date('Y-m-d H:i:s',time());
			$this->db->insert('a_hibak',$record);
			
			return;
		}
		
		if($adatok->prStat==="1"){
			print "false";
		}elseif($adatok->prStat==="0"){
			print "true";
		}else{
			print "nem tudom mi van..";
			$record->osztaly = "version";
			$record->fv = "serial";
			$record->hiba = "Nem tudom mi van, serial: {$serial}\n adatok: ".print_r($adatok,true);
			$record->datum = date('Y-m-d H:i:s',time());
			$this->db->insert('a_hibak',$record);
		}
		
	}
	
	// aktív-e a kulcs (sorozatszámból)
	function serial2(){
		$serial = $this->uri->segment(3);
		
		if(!$serial){
			print "HiÃ¡nyzÃ³ sorozatszÃ¡m!";
			$record3->osztaly = "version";
			$record3->fv = "serial2";
			$record3->hiba = "uri: ".print_r($this->uri->segments(),true);
			$record3->datum = date('Y-m-d H:i:s',time());
			$this->db->insert('a_hibak',$record3);
		}
		
		
		$sql = "SELECT * FROM `".CRMADATBAZIS."`.`h_programs` WHERE `prPass` = '{$serial}'";
		$adatok = $this->db->query($sql)->result();
		$ido = date('Y-m-d H:i:s',time());
		
		// kulcs(ok)hoz vannak-e aktÃ­v programok
		if(count($adatok)==0){
			$sql = "SELECT DISTINCT(hlNum) hlNum, hlStat, prStat FROM `".CRMADATBAZIS."`.`h_programs` WHERE `hlNum` LIKE '".substr($serial,0,6)."%' AND prStat=0";
			$adatok = $this->db->query($sql)->result();
			// ha nem aktÃ­v akkor az is kerÃŒljÃ¶n be
			if(count($adatok)==0){
				$sql = "SELECT DISTINCT(hlNum) hlNum, hlStat, prStat FROM `".CRMADATBAZIS."`.`h_programs` WHERE `hlNum` LIKE '".substr($serial,0,6)."%'";
			$adatok = $this->db->query($sql)->result();
			}
		}
		
		// egy sorozatszÃ¡mhoz tÃ¶bb kulcs is tartozhat ..
		foreach($adatok as $adat){
			$record->serial = $serial;
			$record->key    = $adat->hlNum;
			$record->aktivhl = $adat->hlStat;
			$record->aktivsn = $adat->prStat;
			$record->datum  = $ido;
			$record->kerdes = count($adatok)>1 ? 1 : 0;		// egyÃ©rtelmÅ±-e a kulcs
			$this->db->insert('download_serial',$record);
		}
		
	}
	
	// program regisztralas
	function regisztracio(){
		$serial = $this->uri->segment(3);
		$isid   = $this->uri->segment(4);
		$kod    = $this->uri->segment(5);
		
		// isid kiegészí­tése
		while(strlen($isid)<4)
			$isid = "0".$isid;
		
		
		
		$command = PATH_CODEGEN." -IsSoftwareKey ".$serial;
		$ph = popen($command, "r") or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
		$szoftveres = fgets($ph, 1024);
		
		// kód lekérés
		$aktkod =  $this->_getaktivalasikod($serial,$isid,$szoftveres);
		
		if($aktkod == "error: nincs vasarlasi idopont" ){
			print $aktkod;
			$this->_hibajelento("regisztracio",substr($serial,0,6),"(error) (isid: {$isid}, idokod: {$idokod}, elteltnap: {$elteltnap}), valasz: {$aktkod}");
			return;
		}
		
		
		
		
		// a páros benne van-e a táblában
		$ered = $this->db->query("SELECT id FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='{$serial}' AND isid ='{$isid}'")->result();
		if(count($ered)>0){
			//print "error: mar regisztralva";
			$this->_hibajelento("regisztracio",substr($serial,0,6),"(megjegyzes) dupla regisztráció (isid: {$isid}, idokod: {$idokod}, elteltnap: {$elteltnap}), valasz: {$aktkod}");
			print $aktkod;
			return;
		}
		
		$querydb = $this->db->query("SELECT max(hlLan) hlLan FROM `".CRMADATBAZIS."`.`hardlock` WHERE hlNum='".substr($serial,0,6)."'")->row();
		$maxtelepites = ($querydb->hlLan==0) ? 1 : $querydb->hlLan;
		$telepitett = $this->db->query("SELECT id FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='{$serial}' AND isid!='' AND isid IS NOT NULL")->result();
		
		if($szoftveres == "true" && count($telepitett)>=$maxtelepites){
			print "error: tul sok telepites";
			$this->_hibajelento("regisztracio",substr($serial,0,6),"(error) (isid: {$isid}, idokod: {$idokod}, elteltnap: {$elteltnap}), valasz: error: tul sok telepites");
			return;
		}
		
		$command = PATH_CODEGEN." -ParseTimeCode " . $kod;
		$ph = popen($command, "r");
		$elteltnap = fgets($ph, 1024);
		$elteltnap = (int)$elteltnap;
		
		// paros felvétele
		$record->serial = $serial;
		$record->isid   = $isid;
		$record->kod    = $kod;
		$record->datum  = date('Y-m-d H:i:s',time()-($elteltnap*60*60*24));
		$record->aktiv  = 1;
		$this->db->insert(CRMADATBAZIS.'.p_serial_isid',$record);
		
		$this->_hibajelento("regisztracio",substr($serial,0,6),"(megjegyzes) regisztráció (isid: {$isid}, idokod: {$idokod}, elteltnap: {$elteltnap})");
		
		print $aktkod;
	}
	
	
	// aktiválási kód kérése, programból hí­vódik - az új könyvben szereplő aktiválási kódot adja vissza
	function aktivalasikod(){
		$serial = $this->uri->segment(3);
		$isid   = $this->uri->segment(4);
		$idokod = $this->uri->segment(5);
		
		// isid kiegészítése
		while(strlen($isid)<4)
			$isid = "0".$isid;
		
		$aktkod = $this->ujaktivalasikod2($serial,$isid,$idokod);
		print $aktkod;
		$this->_hibajelento("aktivalasikod",substr($serial,0,6),"valasz: ".$aktkod);
	}
	
	
	function ujaktivalasikod2($serial,$isid,$idokod){
		if(!$serial) $serial = $this->uri->segment(3);
		if(!$isid)   $isid   = $this->uri->segment(4);
		if(!$idokod) $idokod = $this->uri->segment(5);
		
		// isid kiegészí­tése
		while(strlen($isid)<4)
			$isid = "0".$isid;
		
		$command = PATH_CODEGEN." -IsSoftwareKey ".$serial;
		$ph = popen($command, "r") or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
		$szoftveres = fgets($ph, 1024);
		
		$valasz = $this->_getaktivalasikod($serial,$isid,$szoftveres);
		
		
		// csak azok kapnak automatikusan kodot, akiknek megengedjuk vagy akiknél hiba van
		if( $this->_get_aktkod($serial) !== true
			&& ($valasz=='error: hianyzo kod' || !in_array($valasz,$this->aktivalasihibak))
		){
			return;
		}
		
		$command = PATH_CODEGEN." -ParseTimeCode " . $idokod;
		$ph = popen($command, "r");
		$elteltnap = fgets($ph, 1024);
		$elteltnap = (int)$elteltnap;
		pclose($ph);
		
		if(!is_numeric($elteltnap) && $szoftveres == "true"){
			$this->_hibajelento("ujaktivalasikod2",substr($serial,0,6),"(megjegyzes) telepites idejet nem tudtam megallapitani (isid: {$isid}, idokod: {$idokod}, elteltnap: {$elteltnap})");
			$elteltnap = 0;
			return 'error: nem aktiv regisztracio'; 		// - 2013. 10. 21.
		}
		$timeelteltnap = 60*60*24*$elteltnap;
		
		
		// a páros benne van-e a táblában, regisztrálva van-e
		$ered = $this->db->query("SELECT id, aktiv, datum FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='{$serial}' AND isid ='{$isid}' ORDER BY datum DESC")->result();
		if(count($ered)!=1){
			// regisztráljuk ha nincs benne és még van szabad regisztráció
			
			$querydb = $this->db->query("SELECT max(hlLan) hlLan FROM `".CRMADATBAZIS."`.`hardlock` WHERE hlNum='".substr($serial,0,6)."'")->row();
			$maxtelepites = ($querydb->hlLan==0) ? 1 : $querydb->hlLan;
			$telepitett = $this->db->query("SELECT id FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='{$serial}' AND isid!='' AND isid IS NOT NULL")->result();
			
			if($szoftveres == "true" && count($telepitett)>=$maxtelepites){
				if( $querydb->hlLan > 1 )
					return "error: tul sok telepites";
				else
					return "error: masik gep van regisztralva";
			}
			
			$record2->serial = $serial;
			$record2->isid   = $isid;
			$record2->kod    = $idokod;
			$record2->datum  = date('Y-m-d H:i:s',(time())-$timeelteltnap);
			$record2->aktiv  = 1;
			$this->db->insert(CRMADATBAZIS.'.p_serial_isid',$record2);
			$regtelepites = $record2->datum;
			
		}elseif($ered[0]->aktiv!=1){
			return "error: nem aktiv regisztracio";
		}else{
			$regtelepites = substr($ered[0]->datum,0,10);
			
			
			
			/*
			// telepítési idő egyztetése a rendszerbe mentett telepítéssel
			
			// 3 nap eltérést enged
			$elteres = (3*60*60*24);
			$dbtelepitesdatum = strtotime($ered['datum']);
			$telepitesdatuma = time()-$timeelteltnap;
			$plusz3  = time()-$timeelteltnap-$elteres;
			$minusz3 = time()-$timeelteltnap+$elteres;
			
			// ha nem esik bele a telepitesi ido az intervallumba
			if( $dbtelepitesdatum<$plusz3 || $dbtelepitesdatum>$minusz3 ){
				// telepitesi idot felulirni
				$this->db->update(CRMADATBAZIS.".p_serial_isid", array('datum'=>date('Y-m-d H:i:s',$telepitesdatuma)), "id=".$ered['id']);
				
				// új aktiváló kódot generáltatni
				$valasz = "error: hianyzo kod";
				
			}
			*/
			
			
			
			
			
			
		}
		
		
		// ha Share-It-es még nem létező program
		if($valasz == "error: nincs ilyen password" && array_key_exists(substr($serial,0,6),$this->kulcsprverzio)){
			$kulcs = $this->db->query("SELECT * FROM ".CRMADATBAZIS.".hardlock WHERE hlNum='".substr($serial,0,6)."'")->row();
			$this->_ujtempprogram(CRMADATBAZIS, $kulcs);
			$valasz = "error: hianyzo kod";
		}
		
		// ha nincs aktivalasi kódja, akkor generálni neki
		if($valasz == "error: hianyzo kod"){
			
			$program = $this->db->query("SELECT * FROM `".CRMADATBAZIS."`.`h_programs` WHERE prPass='{$serial}'")->row();
			$timeszerzodes = strtotime($program->prSellDate);
			
			$timetelepites = time()-$timeelteltnap;
			$maxtelepites = max($timeszerzodes,$timetelepites);
			$maxdatetelepites = date('Y-m-d',$maxtelepites);
			if($szoftveres == "false"/*-substr($kulcs,0,1)!='9'-*/ && $program->prSellDate!='' && $program->prSellDate!='0000-00-00'){
				$maxdatetelepites = substr($program->prSellDate,0,10);
			}
			
			if($program->prFizetve){
				$fizetvetime = strtotime($program->prFizetve);
				$meddig = date('Y-m-d',$fizetvetime /*-+ $this->_plusznap($serial)-*/); 	// vege - telepites
			}
			elseif(substr($serial,0,2)=="99" || array_key_exists(substr($serial,0,6),$this->kulcsprverzio)){
				$meddig = date('Y-m-d',time() + 30*24*60*60);	// először 30 napot kap
			}
			else{
				return "error: nincs kifizetve";
			}
			
			// mostani idő nagyobb mint ameddig jár
			if( date('Y-m-d',time()) > $meddig ){
				return $valasz;
				return;
			}
			
			$command3 = PATH_CODEGEN." -DiffDay ".$maxdatetelepites." ".$meddig;
			$ph = popen($command3, "r")
				or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
			$napok = fgets($ph, 1024);
			pclose($ph);
			if(array_key_exists(substr($serial,0,6),$this->kulcsprverzio))
				$napok = 30;
			
			$command = PATH_CODEGEN." -GenerateTimeCode ".$serial." ".$isid." ".$napok;
			$ph = popen($command, "r")
				or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
			$aktkod = fgets($ph, 1024);
			pclose($ph);
			
			// felvenni az adatbázisba
			$serial = mysql_real_escape_string($serial);
			
			$hl = $this->db->query("SELECT hlCtrID FROM ".CRMADATBAZIS.".hardlock WHERE hlNum='".substr($serial,0,6)."'")->row();
			$hlctrid = $hl->hlCtrID;
			
			$query = "UPDATE `".CRMADATBAZIS."`.`h_programs` SET `prActCode`='{$aktkod}', prActDate='{$maxdatetelepites}', prFizetve='{$meddig}' WHERE `prPass`='{$serial}' AND (prActCode='' OR prActCode IS NULL) LIMIT 1";
			
			$this->db->query($query);
				// internetes aktivalas esemény
			$historyba->hiHlNum  = $program->prHlNum;
			$historyba->hiDate   = date('Y-m-d',time());
			$historyba->hiManID  = 0;
			$historyba->hiTypeID = 16;
			$historyba->hiTime   = date('Y-m-d H:i:s',time());
			$this->db->insert(CRMADATBAZIS.".h_history",$historyba);
			$this->_hibajelento("ujaktivalasikod2",substr($serial,0,6),"felvettem: {$query}");
			
			return $aktkod;
		}
		
		
		return $valasz;
	}
	
	function _getaktivalasikod($serial,$isid="",$szoftveres="false"){
		// van-e olyan aktí­v program aminek ez a sorozatszáma // a/b kulcsok miatt
		$sql   = "SELECT prID, prStat, prActCode, prSellDate FROM `".CRMADATBAZIS."`.`h_programs` WHERE prPass='{$serial}' ";
		$ered2 = $this->db->query($sql)->result();
		$voltures = false;
		
		if(count($ered2)==0){
			return "error: nincs ilyen password";
		}
		
		$command = PATH_CODEGEN." -IsSoftwareKey ".$serial;
		$ph = popen($command, "r") or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
		$szoftveres = fgets($ph, 1024);
		
		$valasz = "error: nem aktiv a program";
		foreach($ered2 as $program){
			if($program->prStat==0){	// aktiv-e
				if( $program->prSellDate == "0000-00-00" ){
					$valasz = "error: nincs vasarlasi idopont";	// van-e eladási dátum
				}
				elseif( $program->prActCode != "" ){
					// neki megfelelő aktiválási kód
					if( $szoftveres=="true" ){
						if( substr($program->prActCode,5,4)==$isid ){
							$valasz = $program->prActCode;	// aktuális aktiválási kód
							break;
						}
						else
							$valasz = 'error: masik gep van regisztralva';
					}else{
						$valasz = $program->prActCode;	// aktuális aktiválási kód
						break;
					}
					
				}else{
					$valasz = "error: hianyzo kod";		// nincs beirva a kod
					$voltures = true;
				}
			}
		}
		
		if($voltures === true && $valasz == "error: masik gep van regisztralva")
			$valasz = "error: hianyzo kod";
		
		// Kivétel: 30, 34, 39, 41, 43 kulcsok, amik soha nem kapnak tőlünk automata hosszabbí­tást.
		// csak a hibat adom vissza
		if( $this->_get_aktkod($serial) === true || substr($valasz,0,5) == "error" ){
			return $valasz;
		}else
			return;
	}
	
	// regisztráció törlése
	function unregister(){
		$serial = mysql_real_escape_string($this->uri->segment(3));
		
		// torolt allapot
		$this->db->query("UPDATE `".CRMADATBAZIS."`.`p_serial_isid` SET isid=NULL WHERE serial='{$serial}'");
		
		// aktivalasi kod torlese
		$this->db->query("UPDATE `".CRMADATBAZIS."`.`h_programs` SET prActCode=NULL, prActDate=NULL WHERE prPass='{$serial}'");
		
		print "ok";
	}
	
	function _plusznap($password){
		if(substr($password)=="99")
			return 0;
		else
			return 60*60*24*30;
	}
	
	
	function _ujtempprogram($adatbazis, $kulcs){
		
		$hlNum = $kulcs->hlNum;
		
		if(!array_key_exists($hlNum,$this->kulcsprverzio)){
			// hiba, nincs beállítva hogy mit hozzon létre
			$record->osztaly = "version";
			$record->fv      = "_ujtempprogram";
			$record->hiba    = "Kulcs: {$hlNum}\nnincs beállítva hogy milyen programot hozzon létre";
			$record->datum   = date('Y-m-d H:i:s',time());
			$this->db->insert('a_hibak',$record);
			return;
		}
		
		$adatok = $this->kulcsprverzio[$hlNum];
		$prTypeID  = $adatok[1];
		$prContact = $adatok[2];
		$prVerCode = 70;	// 2013-as program
		$prVerID   = 13;	// 2013-as program
		
		$hlNum = $kulcs->hlNum;
		$ctrID = $kulcs->hlCtrID;
		$hlLan = $kulcs->hlLan;
		
		$password = $this->_password_gen($hlNum, $hlLan, $prTypeID, $prVerCode);
		
		// program felvÃ©tele
		$ujprogram = array(
			"prHlNum"   => $hlNum,
			"prTypeID"  => $prTypeID,
			"prSellDate" => date("Y-m-d"),
			"prContact" => $prContact,
			"prPass"    => $password,
			"prLan"     => $hlLan,
			"prLastMod" => date("Y-m-d H:i:s"),
			"prVerID"   => $prVerID,
			"prInfo"    => "automatikusan letrehozva (weben), Share It",
			"prCtrID"   => $ctrID,
			"prHiType"	=> 1
		);
		$this->db->insert(CRMADATBAZIS.".h_programs",$ujprogram);
		
		$record11->osztaly = "version";
		$record11->fv      = "_ujtempprogram";
		$record11->hiba    = "új program létrehozva, Share It-es, kulcs: {$hlNum}";
		$record11->datum   = date('Y-m-d H:i:s',time());
		$this->db->insert('a_hibak',$record11);
		
		
		// szoftveres kulcsnál annyi program, ahány lanos
		if( substr($hlNum,0,1)=="9" && $hlLan>1 ){
			for($i=1;$i<$hlLan;$i++){
				$this->db->insert(CRMADATBAZIS.".h_programs",$ujprogram);
			}
		}
		
		//rögzítés a historyban
		$ujhistory = array(
			"hiHlNum"  => $hlNum,
			"hiDate"   => date("Y-m-d"),
			"hiManID"  => 0,
			"hiTypeID" => 2,
			"hiCtrID"  => $ctrID
		);
		$this->db->insert(CRMADATBAZIS.".h_history",$ujhistory);
		
		$ujhl['hlStat'] = 1;
		$this->db->update(CRMADATBAZIS.'.hardlock',$ujhl,"hlNum=".$hlNum);
		
		
		// e-mail erikanak es kittinek
		$uzenet = $this->mpages->get_row(819);
		$uzenet = str_replace("#kulcs#",$hlNum,$uzenet->page_body);
		$this->load->library('email');
		$this->email->initialize();
		$this->email->setFrom('info@archlinexp.com', 'CadLine');
		$this->email->subject('Share It program letrehozas');
		$this->email->message($uzenet);
		$this->email->send("info@archlinexp.com",'smtp');
		//$this->email->send("eszter@cadline.hu",'smtp');
		$this->email->send("kitti.toth@archlinexp.com",'smtp');
		
		return true;
	}
	
	function _password_gen($hlNum, $lan, $type, $version = 64){
		$country = substr($hlNum, 0, 2);
		$number = substr($hlNum, 2, 4);
		
		if(substr($hlNum,0,1)=="9")
			$lan = 0;
		
		
		if($country == '91'){
			return '9100014260913946';
		}
		
		$type = (int)substr($type,0,1);
		
	//	print "itt . password<br />";
		$command = PATH_CODEGEN." -Password " . $country . $number . $version . $lan . $type;
		//print "parancs: ".$command;
		$ph = popen($command, "r")
			or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
		  
		
		$password = fgets($ph, 1024);
		pclose($ph);
	//	print " , kapott pw: ".$password."<br />";

		return $password;
	}
	
	
	
	function elofizkarbxml(){
		@header("Content-Type: text/html; charset=UTF-8");
		$fajl = 'fizetesek/'.$this->uri->segment(3);
		$nyelv = $this->uri->segment(4);
		include('application/libraries/Excel2/reader.php');
		$data = new Spreadsheet_Excel_Reader();
		$data->setOutputEncoding('CP1251');
		$data->read($fajl);
		
		
		$database = CRMADATBAZIS;
		
		/* temp feltöltése */
		$this->db->query("TRUNCATE TABLE `{$database}`.`temp_excelfizetes`");
		for($i=1; $i<=$data->sheets[0]['numRows']; $i++){
			$tomb['kulcs'] = $data->sheets[0]['cells'][$i][1];
			if(!$tomb['kulcs']){
				continue;
			}
			$tomb['datum'] = $data->sheets[0]['cells'][$i][2];
			$tomb['kapcs'] = $data->sheets[0]['cells'][$i][3];
			$tomb['info']  = $data->sheets[0]['cells'][$i][4];
			$this->db->insert($database.".temp_excelfizetes",$tomb);
		}
		
		// valtozasok lekerese
		
		$valtozasoksql  = " (SELECT t1.kulcs, t1.datum, t1.kapcs, t1.info, '' originfo ";
		$valtozasoksql .= " FROM {$database}.temp_excelfizetes t1 LEFT JOIN {$database}.t_excelfizetes t2 ON t1.kulcs = t2.kulcs ";
		$valtozasoksql .= " WHERE t1.datum!=t2.datum OR t1.kapcs!=t2.kapcs AND t1.kulcs !='' )";
		$valtozasoksql .= " UNION ";
		$valtozasoksql .= " ( SELECT kulcs, datum, kapcs, 'uj elem' info, info as originfo FROM {$database}.temp_excelfizetes";
		$valtozasoksql .= " WHERE kulcs NOT IN (SELECT kulcs FROM {$database}.t_excelfizetes))";
		
		$valtozasok = $this->db->query($valtozasoksql)->result();
		
	//	print_r($valtozasok);
		
		
		foreach($valtozasok as $elem){
			$kulcs  = $elem->kulcs;
			$tipus  = $elem->kapcs;
			$utfizu = $this->_getfizhonap($elem->datum, $tipus);
			$info   = $elem->info;
			
			/*if($this->uri->segment(3)!="994497hiba")
			$this->_modosit($kulcs, $utfizu, $tipus, $info, CRMADATBAZIS);
			else*/
			$this->_modosituj($kulcs, $utfizu, $tipus, $info, CRMADATBAZIS);
			
			$uj["kulcs"] = $elem->kulcs;
			$uj["kapcs"] = $elem->kapcs;
			$uj["datum"] = $elem->datum;
			$uj["info"]  = $elem->originfo;
			if($info == "uj elem"){
				$this->db->insert($database.'.t_excelfizetes',$uj);
			}
			else{
				$this->db->update($database.'.t_excelfizetes',$uj,'kulcs='.$kulcs);
			}
			print "Valtozott: ".$kulcs." ".$utfizu." ".$tipus;
		}
		
		
		print "ok";
	}
	
	
	
	function _modosit($kulcs, $utfizu, $tipus, $info, $database=CRMADATBAZIS){
		if(!$kulcs){ return; }
		
		if( !$utfizu || !$tipus ){
			$this->_hibajelento("elofizkarbxml",$kulcs,"valamelyik adat hiányzik:\nfizetes: {$utfizu},\nkapcsolat: {$tipus}");
			return;
		}
		
		// utolsó aktív program a kulcshoz
		$sqlprogram = "SELECT  `prPass`, `prSellDate`, `prHlNum`, max(`prVerID`) prVerID, prStat, prActCode FROM `{$database}`.`h_programs` WHERE `prHlNum`='{$kulcs}' AND `prStat`=0";
		
		// kifizetve dátum növelése
		$fizetvetime = strtotime($utfizu);
		$utfizu = date('Y-m-d',$fizetvetime + $this->_plusznap($program->prPass));
		
		
		$program   = $this->db->query( $sqlprogram )->row();
		$telepites2 = $this->db->query("SELECT * FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='".$program->prPass."' AND isid !='' AND isid IS NOT NULL ORDER BY datum DESC")->row();
		$eladas    = $program->prSellDate;
		$isid      = $telepites2->isid;
		$telepites = $telepites2->datum;
		
		// fizetési dátum beírása
		$query = "UPDATE `{$database}`.`h_programs` SET prFizetve='{$utfizu}' WHERE prPass='".$program->prPass."' ";
		$this->db->query($query);
		$this->_hibajelento("elofizkarbxml",$kulcs,"kifizetve: {$query}");
		
		// ha vegleges kodja van akkor ne irja felul
		$harmas = substr($program->prActCode,10,3);
		if( $harmas == "999" OR $harmas == "NFF" ){
			print "mar van vegleges kodja<br>";
			return;
		}
		
		// van-e eladási dátum
		if( $eladas=='0000-00-00' ){
			$this->_hibajelento("elofizkarbxml",$kulcs,"hiányzik az eladás dátuma: {$kulcs}");
			return;
		}
		
		
		// aktiv-e a kulcs és a program
		$dbkulcs = $this->db->query("SELECT hlStat FROM `{$database}`.`hardlock` WHERE hlNum='{$kulcs}'")->row();
		if( !$dbkulcs ){
			// nem létező kulcs
			$this->_hibajelento("elofizkarbxml",$kulcs,"nem létező kulcs: {$kulcs}");
			return;
		}
		if( $dbkulcs->hlStat != 1 ){
			// tiltott kulcs vagy program
			$this->_hibajelento("elofizkarbxml",$kulcs,"tiltott kulcs: {$kulcs}");
			return;
		}
		
		print " , fizetes: ".$utfizu;
	
		$command = PATH_CODEGEN." -IsSoftwareKey ".$program->prPass;
		$ph = popen($command, "r") or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
		$szoftveres = fgets($ph, 1024);

		// regisztralva legyen
		if(!$telepites){
			// ha hardverkulcsos akkor regisztrálom a vásárlási időponttal
			if($szoftveres == "false"){
				$isid = substr($program->prPass,0,2).substr($program->prPass,7,2);
				$record->serial = $program->prPass;
				$record->isid   = $isid;
				$record->datum  = $program->prSellDate;
				$record->aktiv  = 1;
				$this->db->insert(CRMADATBAZIS.'.p_serial_isid',$record);
				$telepites = $program->prSellDate;
			}else{
				print "nincs telepitve!";
				$this->_hibajelento("elofizkarbxml",$kulcs,"szoftveres, nincs telepitve! (nincs isid)");
				return;
			}
		}
		
		//$eladas = substr($eladas,0,11);
		$telepites = substr($telepites,0,11);
		$maxdatetelepites = (max($eladas,$telepites));
		if($szoftveres == "false"/*-substr($kulcs)!='9'-*/ && $program->prSellDate!='' && $program->prSellDate!='0000-00-00'){
			$maxdatetelepites = substr($program->prSellDate,0,10);
		}
		
		if( substr($kulcs,0,1) != "9" )
			$isid = substr($kulcs,0,2)."30";
		
		// kódgenerálás, ha a fizetve időpont későbbi mint a jelenlegi dátum
		if( strtotime($utfizu) > time() ){
			$command = PATH_CODEGEN." -DiffDay ". $maxdatetelepites . " " .$utfizu;
			$ph = popen($command, "r")
				or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
			$napok = fgets($ph, 1024);
			pclose($ph);
			
			$command = PATH_CODEGEN." -GenerateTimeCode ".$program->prPass." ".$isid." ".$napok;
			$ph = popen($command, "r")
				or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
			$aktkod = fgets($ph, 1024);
			pclose($ph);
			
			// felvenni az adatbázisba
			$query = "UPDATE `{$database}`.`h_programs` SET prActCode='{$aktkod}' WHERE prPass='".$program->prPass."' ";
			print "<br> &nbsp;feltolt: ".$query;
			$this->db->query($query);
			$this->_hibajelento("elofizkarbxml",$kulcs,"felvettem: {$query}");
		}else{
			$this->_hibajelento("elofizkarbxml",$kulcs,"nem kapott kodot, nincs befizetve");
			print "<br>reg volt rendzve ";
		}
	}
	
	
	// több lanos programokhoz
	function _modosituj($kulcs, $utfizu, $tipus, $info, $database=CRMADATBAZIS){
		if(!$kulcs){ return; }
		
		if( !$utfizu || !$tipus ){
			$this->_hibajelento("elofizkarbxml",$kulcs,"valamelyik adat hiányzik:\nfizetes: {$utfizu},\nkapcsolat: {$tipus}");
			return;
		}
		
		// legnagyobb verziójú aktív programok a kulcshoz
		$sqlprogram = "SELECT  `prPass`, `prSellDate`, `prHlNum`, prVerID, prStat, prActCode FROM `{$database}`.`h_programs` WHERE `prHlNum`='{$kulcs}' AND `prStat`=0 and prVerID = (select max(`prVerID`) as prVerID FROM `{$database}`.`h_programs` WHERE `prHlNum`='{$kulcs}' AND `prStat`=0)";
		
		// kifizetve dátum növelése
		$fizetvetime = strtotime($utfizu);
		$utfizu = date('Y-m-d',$fizetvetime + $this->_plusznap($program->prPass));
		
		
		$programok   = $this->db->query( $sqlprogram )->result();
		foreach($programok as $program){
			$telepites2 = $this->db->query("SELECT * FROM `".CRMADATBAZIS."`.`p_serial_isid` WHERE serial='".$program->prPass."' AND isid !='' AND isid IS NOT NULL ORDER BY datum DESC")->row();
			$eladas    = $program->prSellDate;
			$isid      = $telepites2->isid;
			$telepites = $telepites2->datum;
			
			// fizetési dátum beírása
			$query = "UPDATE `{$database}`.`h_programs` SET prFizetve='{$utfizu}' WHERE prPass='".$program->prPass."' ";
			$this->db->query($query);
			$this->_hibajelento("elofizkarbxml",$kulcs,"kifizetve: {$query}");
			
			// ha vegleges kodja van akkor ne irja felul
			$harmas = substr($program->prActCode,10,3);
			if( $harmas == "999" OR $harmas == "NFF" ){
				print "mar van vegleges kodja<br>";
				return;
			}
			
			// van-e eladási dátum
			if( $eladas=='0000-00-00' ){
				$this->_hibajelento("elofizkarbxml",$kulcs,"hiányzik az eladás dátuma: {$kulcs}");
				return;
			}
			
			
			// aktiv-e a kulcs és a program
			$dbkulcs = $this->db->query("SELECT hlStat FROM `{$database}`.`hardlock` WHERE hlNum='{$kulcs}'")->row();
			if( !$dbkulcs ){
				// nem létező kulcs
				$this->_hibajelento("elofizkarbxml",$kulcs,"nem létező kulcs: {$kulcs}");
				return;
			}
			if( $dbkulcs->hlStat != 1 ){
				// tiltott kulcs vagy program
				$this->_hibajelento("elofizkarbxml",$kulcs,"tiltott kulcs: {$kulcs}");
				return;
			}
			
			print " , fizetes: ".$utfizu;
		
			$command = PATH_CODEGEN." -IsSoftwareKey ".$program->prPass;
			$ph = popen($command, "r") or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
			$szoftveres = fgets($ph, 1024);

			// regisztralva legyen
			if(!$telepites){
				// ha hardverkulcsos akkor regisztrálom a vásárlási időponttal
				if($szoftveres == "false"){
					$isid = substr($program->prPass,0,2).substr($program->prPass,7,2);
					$record->serial = $program->prPass;
					$record->isid   = $isid;
					$record->datum  = $program->prSellDate;
					$record->aktiv  = 1;
					$this->db->insert(CRMADATBAZIS.'.p_serial_isid',$record);
					$telepites = $program->prSellDate;
				}else{
					print "nincs telepitve!";
					$this->_hibajelento("elofizkarbxml",$kulcs,"szoftveres, nincs telepitve! (nincs isid)");
					return;
				}
			}
			
			//$eladas = substr($eladas,0,11);
			$telepites = substr($telepites,0,11);
			$maxdatetelepites = (max($eladas,$telepites));
			if($szoftveres == "false" && $program->prSellDate!='' && $program->prSellDate!='0000-00-00'){
				$maxdatetelepites = substr($program->prSellDate,0,10);
			}
			
			if( substr($kulcs,0,1) != "9" )
				$isid = substr($kulcs,0,2)."30";
			elseif( $program->prActCode != "" )
				$isid = substr($program->prActCode,5,4);
			
			// kódgenerálás, ha a fizetve időpont későbbi mint a jelenlegi dátum
			if( strtotime($utfizu) > time() ){
				$command = PATH_CODEGEN." -DiffDay ". $maxdatetelepites . " " .$utfizu;
				$ph = popen($command, "r")
					or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
				$napok = fgets($ph, 1024);
				pclose($ph);
				
				$command = PATH_CODEGEN." -GenerateTimeCode ".$program->prPass." ".$isid." ".$napok;
				$ph = popen($command, "r")
					or die( "A 'codegen' paranccsal nem veheto fel kapcsolat" );
				$aktkod = fgets($ph, 1024);
				pclose($ph);
				
				// felvenni az adatbázisba
				if($szoftveres == "false")
					$query = "UPDATE `{$database}`.`h_programs` SET prActCode='{$aktkod}' WHERE prPass='".$program->prPass."' ";
				else
					$query = "UPDATE `{$database}`.`h_programs` SET prActCode='{$aktkod}' WHERE prPass='".$program->prPass."' AND SUBSTRING(prActCode,6,4)='{$isid}' ";
				print "<br> &nbsp;feltolt: ".$query;
				$this->db->query($query);
				$this->_hibajelento("elofizkarbxml",$kulcs,"felvettem: {$query}");
			}else{
				$this->_hibajelento("elofizkarbxml",$kulcs,"nem kapott kodot, nincs befizetve");
				print "<br>reg volt rendzve ";
			}
		}
	}
	
	
	function _getfizhonap($honap, $kapcs){
		$honap = $this->_ekezet( $honap );
		if($kapcs == "elofizetes" || $kapcs == "tanfolyam"){
		
			$kulonhonapok = array("mÃ¡rcius","Ã¡prilis","mÃ¡jus","jÃºnius","jÃºlius");
		
			$tomb['jan'] = '01'; $tomb['feb'] = '02';
			$tomb['mar'] = '03'; $tomb['apr'] = '04';
			$tomb['maj'] = '05'; $tomb['jun'] = '06';
			$tomb['jul'] = '07'; $tomb['aug'] = '08';
			$tomb['sze'] = '09'; $tomb['okt'] = 10;
			$tomb['nov'] = 11; $tomb['dec'] = 12;
			
			$ertek = substr($honap,5,3);
			
		}elseif($kapcs == "karbantartas"){
			
			$tomb['1.n.'] = '03'; $tomb['2.n.'] = '06';
			$tomb['3.n.'] = '09'; $tomb['4.n.'] = 12;
			$ertek = substr($honap,5,4);
		}
		//$ho = $this->_ekezet( iconv("ISO-8859-1", "UTF-8", $ertek) );
		$ho = $this->_ekezet( $ertek );
		$datum = substr($honap,0,4)."-".$tomb[$ho]."-28";
		return substr($honap,0,4)."-".$tomb[$ho]."-".date('t',strtotime($datum));	// hÃ³nap utolsÃ³ napjÃ¡t adja vissza
	}
	
	function _ekezet($input){
		$mit = array("/Ã¡/", "/Ã/", "/Ã©/", "/Ã/", "/Ã­/", "/Ã/", "/Ã¶/", "/Ã/", "/Å/", "/Å/", "/Ã³/", "/Ã/", "/Ãº/", "/Ã/", "/ÃŒ/", "/Ã/", "/Å±/", "/Å°/");
		$mire = array("a", "A", "e", "E", "i", "I", "o", "O", "o", "O", "o", "O", "u", "U", "u", "U", "u", "U");
		$output = preg_replace($mit, $mire, $input);
		return $output;
	}
	
	// !!! Nem lehet benne kiiras !!! 
	function _hibajelento($kuldo,$kulcs,$hiba=""){
		// ha szerepel a hiba, ne vegye fel újra
		$hiba = mysql_real_escape_string($hiba);
		$sql = "SELECT id FROM `".CRMADATBAZIS."`.`h_aktivalas_infok` WHERE kulcs='{$kulcs}' AND leiras='{$hiba}'";
		//if( $ered = $this->db->query($sql)->result() )
		//	return;
		
		$record->kulcs = $kulcs;
		$record->kuldo = $kuldo;
		$record->leiras = $hiba;
		$record->statusz = "uj";
		$record->datum = date('Y-m-d H:i:s',time());
		$this->db->insert(CRMADATBAZIS.'.h_aktivalas_infok',$record);
	}
	
	function _autokodkuldes($serial){
		$kapkodot = array('36','44','95','98','99');
		
		if( in_array(substr($serial,0,2),$kapkodot) ){
			return true;
		}else{
			return false;
		}
	}
	
	function _get_aktkod($kulcs){
		
		$kulcs  = substr($kulcs,0,6);
		$query  = "SELECT ver_id FROM `cadline2`.`version`";
		$query .= " WHERE ver_id=1182 AND (`usertype` LIKE '%;".$kulcs.";%' OR `usertype` LIKE '%;".substr($kulcs,0,2).";%')";
		$re = $this->db->query($query)->row();
		
		
		if( is_numeric($re->ver_id) && $re->ver_id > 0 )
			return true;
		else
			return false;
	}
	
	function updatetest(){
		$projectid = $this->uri->segment(3);
		$pkgid = $this->uri->segment(4);
		$sorozatszam = $this->uri->segment(5);
	//	$langid = $this->uri->segment(5);
	//	$usertype = $this->uri->segment(6);
		
		if(!$sorozatszam){
			print "nincs sorozatszam";
			return;
		}
		
		$utolso = $this->mversion->get_latest($projectid,$pkgid,substr($sorozatszam,0,6),'1');
		
		if($utolso){
			if($utolso->pkgid > $pkgid){
				$fajl = "public/downloads/".$utolso->fajl;
				if(file_exists($fajl)){
					print str_replace("x64","",$utolso->projectid)."; ";
					print $utolso->pkgid."; ";
					print "http://".$_SERVER['HTTP_HOST']."/".$fajl."; ";
					print $utolso->azonosito."; ";
					print $utolso->csendes;
					if($utolso->ev >= 2013)
						print "; ".$this->hibajelentes[$utolso->ev];
					
				}
				else{
					print "nincs meg a fajl: ".$fajl;
				}
			}else{
				print "nincs frissebb";
				if($utolso->ev >= 2013)
					print ";;;;; ".$this->hibajelentes[$utolso->ev];
			}
		}else{
			//print "hiba";
			if($projectid=="ARCHlineXP2013x64" || $projectid=="ARCHlineXP2013"){
				print ";;;;; ".$this->hibajelentes['2013'];
			}
			else{
				print "hiba";
			}
		}
	}
	
	function updateupdate(){
		// minden reggel 6:30kor lefutó auto update
		
	/*	$utolso2012 = $this->db->query("SELECT * FROM `cadline2`.`version`
WHERE projectid = 'ArchlineXP2012' AND `deleted` = 0 GROUP BY projectid HAVING
pkgid = max( pkgid )")->row();*/
	/*	$utolso2012 = $this->db->query("SELECT max( pkgid ) pkgid FROM
`cadline2`.`version` WHERE projectid = 'ArchlineXP2012' AND `deleted` = 0 and
fajl LIKE '%Update_Build%'")->row();
		
		$mappa = 'public/downloads/eng/updates';
		$fajlok = scandir($mappa);
		foreach($fajlok as $fajl){
			if( substr($fajl,0,30) == "Multilang_XP 2012_Update_Build" ){
				$fajlbolbuild = substr(substr($fajl,30),0,-10);
				if( $utolso2012->pkgid < $fajlbolbuild ){
					print "<br>".$fajlbolbuild." nagyobb mint ".$utolso2012->pkgid."<br>";
					$tomb['pkgid'] = $fajlbolbuild;
					$tomb['fajl'] = "eng/updates/".$fajl;
					$tomb['datum'] = date('Y-m-d H:i:s',time());
					
					$tomb['ev'] = "2012";
					$tomb['azonosito'] = "{8D322C6F-87A6-4487-B47D-15BF449DAEF3}";
					$tomb['projectid'] = "ArchlineXP2012";
					$tomb['usertype'] = ";360012;";
					$tomb['teszt'] = "0";
					$tomb['csendes'] = "1";
					$tomb['aktiv'] = "1";
					$tomb['deleted'] = "0";
					
					//$this->db->update('version',$tomb,"ver_id=".$utolso2012->ver_id);
					$this->db->insert('version',$tomb);
				}
				print "nincs ujabb";
			}
		}*/
	}
	
	
	function updatexml(){
		$fajl = "public/downloads/eng/BuildLog.xml";
		
		$xml = simplexml_load_file($fajl);
		$tomb = array();
		
		$tomb['deleted'] = "0";
		
		$tomb['full']      = preg_replace(array("/Full/","/Update/"), array("1","0"), $xml->archline_version);
		$tomb['prod_ver']  = substr($xml->product_version, 0);
		$tomb['d_build']   = substr($xml->date_of_build, 0);
		$tomb['datum']     = substr($xml->date_of_cadlineftp_upload, 0);
		$tomb['d_itc_ftp'] = substr($xml->date_of_itcftp_upload, 0);
		$tomb['pkgid']     = substr($xml->build, 0);
		$tomb['setup_type']   = substr($xml->setup_type, 0);
		$tomb['path_newroda'] = substr($xml->path_on_newroda, 0);
		$tomb['fajl']      = preg_replace("/http:\/\/www\.cadline\.hu\/public\/downloads\//","",$xml->path_on_cadline_ftp);
		$tomb['path_itc']  = substr($xml->path_on_itc_ftp, 0);
		$tomb['ev']        = substr($xml->year, 0);
		$x64               = substr($xml->x64, 0);
		if( substr($xml->serials, 0))
			$tomb['usertype']  = substr($xml->serials, 0);
		if( substr($xml->hash, 0))
			$tomb['hash']  = substr($xml->hash, 0);
		if( isset($xml->delete) && (substr($xml->delete, 0) == "1" || substr($xml->delete, 0) == "0") )
			$tomb['deleted'] = substr($xml->delete, 0);
		
		
		$parancs = " SELECT * FROM `cadline2`.`version` WHERE ev = ".$tomb['ev']." AND pkgid = ".$tomb['pkgid']." AND deleted = 0 AND full = ".$tomb['full']." AND fajl='".$tomb['fajl']."'";
		print "parancs: ".$parancs."<br><br>";
		$sql = $this->db->query($parancs)->result();
		
		print "tom: "; print_r($tomb);
		print "\n\nsql: "; print_r($sql);
		
		if( count($sql) == 1 ){
			$this->db->update('version',$tomb,"ev = ".$tomb['ev']." AND pkgid = ".$tomb['pkgid']." AND full = ".$tomb['full']." AND fajl='".$tomb['fajl']."' AND deleted = 0");
			$record->osztaly = "version";
			$record->fv = "updatexml";
			$record->hiba = "Egy, frissíteni kéne .. rekord találat, build: ".$tomb['pkgid']."\nsql: ".$parancs."\ndb: ".count($sql);
			$record->datum = date('Y-m-d H:i:s',time());
	//		$this->db->insert('a_hibak',$record);
		}
		elseif( count($sql) == 0 && $tomb['deleted'] != "1" ){
		//	$tomb['ev'] = "2013";
		//	$tomb['projectid'] = "ARCHlineXP2012";	// ne legyen online frissítés
			// csak akkor legyen online frissítés, ha a fájlnévben van "_Update_"
			if( strstr(basename($tomb['fajl']),"_Update_") ){
				$tomb['projectid'] = "ArchlineXP".$tomb['ev'];
				if($x64==1)
					$tomb['projectid'] .= "x64";
			}else
				$tomb['projectid'] = "";
			
			if($tomb['ev']=="2012")
				$tomb['azonosito'] = "{8D322C6F-87A6-4487-B47D-15BF449DAEF3}";
			else{
	//			$tomb['azonosito'] = "{93B045D0-84A3-447E-BFA5-FE77755A26D7}";
				if($x64==1)
					$tomb['azonosito'] = "{2CCF8C6E-FEAE-4167-AC48-BC1DF423AE85}";
				else
					$tomb['azonosito'] = "{93B045D0-84A3-447E-BFA5-FE77755A26D7}";
			}
			
			$tomb['usertype'] = ";360012;";
			$this->db->insert('version',$tomb);
			
			$record->osztaly = "version";
			$record->fv = "updatexml";
			$record->hiba = "0, beszúrok .., build: ".$tomb['pkgid']."\nsql: ".$parancs."\ndb: ".count($sql);
			$record->datum = date('Y-m-d H:i:s',time());
		//	$this->db->insert('a_hibak',$record);
		}
		else{
			$record->osztaly = "version";
			$record->fv = "updatexml";
			$record->hiba = "Több rekord találat (vagy torolt beszuras), build: ".$tomb['pkgid']."\nsql: ".$parancs."\ndb: ".count($sql)."\ndeleted: ".$tomb['deleted'];
			$record->datum = date('Y-m-d H:i:s',time());
			if( $tomb['deleted'] != "1" )
				$this->db->insert('a_hibak',$record);
		}
		
		print "<pre>";
		print_r($tomb);
		print $tomb['projectid'];
	}
	
	function log2012(){
		redirect('version/log2013');
		$sql = $this->db->query(" SELECT * FROM `cadline2`.`version` WHERE ev = 2012 AND deleted = 0 ORDER BY pkgid DESC")->result();
		
		$data['elemek'] = $sql;
		hun() ? $data['title'] = 'ARCHLine.XP telepítők feltöltései' : $data['title'] = 'ARCHLine.XP install upload';
		$data['tartalom']='version/log2012';
		
		$this->load->view('site',$data);
		
		
	}
	
	function log2013(){
		$sql = $this->db->query(" SELECT * FROM `cadline2`.`version` WHERE ev = 2013 AND deleted = 0 ORDER BY pkgid DESC")->result();
		
		$data['elemek'] = $sql;
		hun() ? $data['title'] = 'ARCHLine.XP telepítők feltöltései' : $data['title'] = 'ARCHLine.XP install upload';
		$data['tartalom']='version/log2012';
		
		$this->load->view('site',$data);
	}
	
	function updatern(){
		// atalakitas html-be
		$ered = "";
		$allapot = 0;
		$i = 0;
		
		$ftemp = fopen( "public/downloads/eng/releasenotes.txt", "r" );
		while($sor = fgets( $ftemp, 1024)){
			if( trim($sor) == "--------------------------------------------------------------------------------------------------------------------------------------"){
				$elore = fgets( $ftemp, 1024);
				
				if( $i != 0 ){
					$ered .= "</ul>\n</div>\n<div class=\"clear2\">&#160;</div>\n\n";
				}
				
				$ered .= "<h3 class=\"cim\">";
				$ered .= substr($elore,11);
				$ered .= "</h3>\n";
				$ered .= "<div class=\"datum\">";
				$ered .= substr($elore,0,10);
				$ered .= "</div>\n<div class=\"clear\">&#160;</div>\n";
				$ered .= "<div class=\"leiras\">\n<ul>\n";
				
			}else{
				
			//	print substr($sor,2,2)."<br />";
				
				if( (substr($sor,2,2) == "* " || substr($sor,0,3) == " * ") && $allapot == 0){
					$ered .= "\t\t<ul>\n";
					$allapot = 1;
				}elseif($allapot == 1 && substr($sor,2,2) != "* "  && substr($sor,0,3) != " * " ){
					$ered .= "\t\t</ul>\n";
					$allapot = 0;
				}
				
				if($allapot == 0){
					if(substr($sor,0,2) == "- ")
						$ered .= "\t<li>".$this->cserern(substr($sor,2))."</li>\n";
					else
						$ered .= "\t<br />".$this->cserern(substr($sor,2))."\n";
				}
				elseif($allapot == 1)
					$ered .= "\t\t<li>".$this->cserern(substr($sor,4))."</li>\n";
			}
			$i++;
		}
		fclose($ftemp);
		
		if($ered!=""){
			$ered .= "</ul>\n</div>\n<div class=\"clear2\">&#160;</div>\n\n";
		}
		// end atalakitas html-be
		
		print $ered;
		
		// eredmeny hozzafuzese
		$lap = $this->mpages->get_row(592);
		$record->page_body = $ered . $lap->page_body;
		$this->db->update('pages',$record,"page_id=592");
		// end eredmeny hozzafuzese
		
	}
	
	function cserern($input){
		$mit[0]="/>/";
		$mit[1]="/</";
		$mire[0]="&gt;";
		$mire[1]="&lt;";
		return preg_replace($mit,$mire,$input);
	}
	
}
?>