avatar
Untitled

Guest 43 14th Jan, 2020

MARKUP 22.91 KB
                                           
                         <?php



if(session_status()==PHP_SESSION_NONE) session_start();//aloittaa session jos sitä ei ole jo aloitettu



function yhteys() {//ottaa yhteyden databaseen

// user = hamssfi_sql
// pass = rjW2TmkHHuZR

$user="root";

$pass="";

$dbh = new PDO('mysql:host=localhost;dbname=hamssfi_tunti', $user, $pass);

return $dbh;

} function kirjautuminen($user, $pass) {//katsoo kuka käyttäjä on

	$pass=salt(trimmeri($pass));//suolaa ja puhdistaa salasanan
	$user=trimmeri($user);//puhdistaa käyttäjänimen kaikesta turhasta
	$yhteys=yhteys();
	$sql="SELECT UserID, Status, Active FROM user WHERE Name=? AND Password=?;";//hakee käyttäjän tietokannasta
	$sth=$yhteys->prepare($sql);
	$sth->execute([$user, $pass]);
	$res =$sth->fetchALL();
	$check=count($res);//katsoo löytyikö mitään
	if($check!=0) {//tarkistaa löytyikö mitään
		$result[0]=$res[0][0];
		$result[1]=$res[0][1];
		$result[2]=$res[0][2];
		$_SESSION["id"]=$result[0];
		$_SESSION["status"]=$result[1];
		if($result[2]==0) return 2;
		return 1;
	} else return 0;
	
} function logout() {//Tyhjentää sessionin ja siirtää käyttäjän etusivulle
	session_unset();
	session_abort();
	header("Location: index.php");
	exit();
	
} function salt($data) {//suolaa dataa
	return $data=md5($data);
	
} function trimmeri($text) {//puhdistaa user inputteja kaikesta turhasta
	$text=trim($text);
	$text=htmlspecialchars($text);
	return $text;
	
} function stamp_to_time($stamp) {//Muuttaa databasesta otetun numeron kellonajaksi
	$h=floor($stamp/60);//aikaa pidetään muodossa minuutteja keskiyöstä jotta ne voidaan hakea oikeassa järjestyksessä databasesta joka ei toimisi jos ne pidetään muodossa 12:30 esim
	$min=$stamp%60;
	if($min==0)$min="00";
	$text=$h.":".$min;
	return $text;
	
} function stamp_to_date_html($stamp) {//Muuttaa databasesta otetun numeron kellonajaksi
	$text=date("Y-m-d",$stamp);
	return $text;
	
}  function stamp_to_week($stamp) {//Muuttaa databasesta otetun numeron kellonajaksi
	$text=date("W",$stamp);
	return $text;
	
} function stamp_to_date($stamp) {//Muuttaa databasesta otetun numeron kellonajaksi
	$text=date("d.m.Y",$stamp);
	return $text;
	
} function redirect() {//ohjaa php komennolla uuteen osoiteeseen
	$url=$_SESSION["url"].".php?";
	if(isset($_SESSION["get"])) $url.=$_SESSION["get"];//lisää getin jos se on määritelty
	header('Location:  '.$url);
	
} function tarkistus_lvl1() {//tarkistaa onko käyttäjä admin
	if(isset($_SESSION["status"])&&$_SESSION["status"]>=1) return true;
	else {//jos ei palataan etusivulle
		$_SESSION["url"]="index";
		$_SESSION["get"]="error=3";
		redirect();
	}
} function tarkistus_lvl0() {//tarkistaa onko käyttäjä perus käyttäjä
	if(isset($_SESSION["status"]) && $_SESSION["status"]>=0) return true;
	else {//jos ei palataan etusivulle
		$_SESSION["url"]="index";
		$_SESSION["get"]="error=3";
		redirect();
	}
} function aika_tarkistus($date,$start,$end) {//tarkistaa onko käyttäjälä merkattu kellonajalle jo työtä
	$id=$_SESSION["id"];
	$sql="SELECT * FROM work WHERE Dates='$date' AND UserID=$id";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$results=$stmt->fetchALL();
	$maara=count($results);
	if($maara>0) {
		foreach($results as $result) {
			if($result["Startime"]<$start && $result["Endtime"]<=$start || $result["Startime"]>$start && $result["Startime"]>=$end) $i=0;
			else return 2;
			
		}
	}
	return 1;
	
} function lisaa_work($date,$Startime,$endtime,$description,$duration,$who) {// lisää työn käyttäjän nimiin
	$true=1;//aika_tarkistus($date,$Startime,$endtime);
	if($true==1) {
		$sql="INSERT INTO work (UserID, Dates, Startime, Endtime, Duration, Description) VALUES(?,?,?,?,?,?)";
		if($who==0)$userID=$_SESSION["id"];
		else $userID=$who;
		$yhteys=yhteys();
		$stmt=$yhteys->prepare($sql);
		$stmt->execute([$userID, $date, $Startime,$endtime,$duration, $description]);
	}
	else return 1;
	
} function lisaa_tyolainen($name, $pass) {// lisää työläisen tietokantaan
	$sql="INSERT INTO user ( Name, Password, Status) VALUES(?,?,?)";
	$pass=salt(trimmeri($pass));//suolaa ja puhdistaa salasanan
	$name=trimmeri($name);//puhdistaa käyttäjänimen kaikesta turhasta
	$yhteys=yhteys();
	$check=tarkista_nimen_kaytto($name);
	if($check==0) {//jos nimi ei ole käytössä lisää käyttäjän
		$stmt=$yhteys->prepare($sql);
		$stmt->execute([$name, $pass, 0]);
		return TRUE;
	}
	else return FALSE;
} function muokkaa_tyolainen($name, $pass, $id) {// muokkaa työläisen tietokantaan
	if($pass=="0")$sql="UPDATE user SET Name=?, Password=? WHERE UserID=?";
	else if($pass!="0") {
		$sql="UPDATE user SET Name=?, Password=? WHERE UserID=?";
		$pass=salt(trimmeri($pass));//suolaa ja puhdistaa salasanan
	}
	$name=trimmeri($name);//puhdistaa käyttäjänimen kaikesta turhasta
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	if($pass=="0")$stmt->execute([$name, $id]);
	else if($pass!="0")$stmt->execute([$name, $pass, $id]);
	
}  function muokkaa_work($paiva,$alku,$kesto,$kuvaus,$emp, $worknum, $status, $salary, $chek, $id) {// Muokkaa työt tietokannassa
	$loppu=$kesto+$alku;
	$sql="UPDATE work SET Dates=?, Startime=?, Endtime=?, Duration=?, Description=?, Employer=?, Worknumber=?, Status=?,Salary=?,Checked=? WHERE WorkID=?";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$paiva, $alku, $loppu, $kesto, $kuvaus, $emp, $worknum, $status, $salary, $chek, $id]);
	
} function deactivoi_kayttaja($id) {// Ottaa työläisen pois käytöstä
	$sql="UPDATE user 
	SET Active=0 AND Status=0 WHERE UserID=?";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$id]);
	
} function activoi_kayttaja($id) {// ottaa työläisen takaisin käyttöön työläisen tietokantaan
	$sql="UPDATE user 
	SET Active=1 WHERE UserID=?";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$id]);
	return$sql;
	
} function poista_work($id) {// Poistaa työn tietokannasta
	$sql="DELETE FROM work 
	WHERE WorkID=?";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$id]);
	
}function poista_csv() {// Poistaa Jo tehdyt CSV tiedostot 
	$dir="./CSV";
	$files = scandir($dir);
	unset($files[0],$files[1]);
	foreach($files as $file) {
		unlink("./CSV/".$file);
		
	}	
} function poista_user($id) {// Poistaa työläisen tietokanasta
	$sql="DELETE FROM user
	WHERE UserID=? AND Active=0";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$id]);
	
} function tarkista_nimen_kaytto($name) {// lisää työläisen tietokantaan
	$sql="SELECT Name FROM user
	WHERE Name=?";
	$yhteys=yhteys();
	$stmt=$yhteys->prepare($sql);
	$stmt->execute([$name]);
	$result=$stmt->fetchALL();
	$maara=count($result);
	return $maara;
	
	
} function hakee_kaikki_work() {//hakee kaikki work tietokannan tiedot

	$sql="SELECT * FROM work INNER JOIN user ON user.UserID=work.UserID ORDER BY work.Dates asc";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	return $result;
	
} function hakee_tietyt_work($haku,$tila) {//hakee kaikki work tietokannan tiedot jotka halutaan
	$where="WHERE ".$haku;
	if(isset($_SESSION["order"])) $order=$_SESSION["order"];//muuttaa hakujärjesttstä jos se on määritelty
	else $order="ORDER BY work.Dates asc";
	if($tila==1) {//jos haetaan vain 50 ensimmäistä
		$min=$_SESSION["min"];
		 $sql="SELECT user.Name,work.WorkID,work.Dates,work.Startime,work.Endtime, work.Duration,work.Description,work.Employer,work.Worknumber,work.Checked,work.Status,work.Salary FROM work INNER JOIN user ON user.UserID=work.UserID  $where $order LIMIT $min, 50";
	}
	else if($tila==2) $sql="SELECT user.Name,work.WorkID,work.Dates,work.Startime,work.Endtime, work.Duration,work.Description,work.Employer,work.Worknumber,work.Checked,work.Status,work.Salary FROM work INNER JOIN user ON user.UserID=work.UserID  $where $order";//jos tarvitsee hakea kaikki
	else if($tila==3) {//jos tehdään haku csv tiedostoa varten 
	$where=$_SESSION["exce_haku"];
	 echo $sql="SELECT user.Name,work.WorkID,work.Dates,work.Startime,work.Endtime, work.Duration,work.Description,work.Employer,work.Worknumber,work.Checked,work.Status,work.Salary FROM work INNER JOIN user ON user.UserID=work.UserID  $where $order";
	}
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	return $result;
	
} function hakee_kaikki_tyontekijat() {//hakee kaikki aktiiviset user tablesta
	$sql="SELECT * FROM user WHERE Active=1";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	
	return $result;

} function hakee_tietyt_tyontekijat($where) {//hakee kaikki hakee tietyt työntekijät
	$sql="SELECT * FROM user WHERE $where";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	return $result;

} function hakee_kaikki_tyolliset() {//hakee kaikki työläiset joilla on töitä
	$sql="SELECT DISTINCT UserID FROM work";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$results=$stmt->fetchALL();
	$i=0;
	foreach($results as $result) {
		if($i==0)$where= " UserID=".$result["UserID"]." ";
		else  $where.="OR UserID=".$result["UserID"]." ";
		$i++;
	}
	if(!isset($where)) $where="UserID=0";
	$tulos=hakee_tietyt_tyontekijat($where);
	

	return $tulos;
	

} function hakee_kaikki_deactivoidut() {//hakee kaikki epäaktiiviset user tablesta
	$sql="SELECT * FROM user WHERE Status=0 AND Active=0";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	return $result;

} function hakee_tyopaivat() {//hakee kaikki päivät joille on merkattu töitä
	$sql="SELECT DISTINCT Dates FROM work ORDER BY Dates ASC";
	$yhteys=yhteys();

	$stmt=$yhteys->prepare($sql);
	$stmt->execute();
	$result=$stmt->fetchALL();
	return $result;

} function hakee_tietyn($datas, $milla, $mika) {//hakee arraystä tietyt arvot
	foreach($datas as $data) {
		if($data[$milla]==$mika)$result[]=$data;
	}
	if(count($result)==0) return "Ei löytöjä";
	else return $result;
	
} function tulostaa_work_table($datas) {// tulostaa listan töistä
	echo "<table><tr class='tr1'><th>Nimi</th><th>Viikko</th><th>Päivä</th><th>Alku ja Loppuaika</th><th>Kesto</th><th>Kuvaus</th><th>Tilaaja</th><th>Työnumero</th><th>Tila</th><th>Palkka</th><th>OK</th><th></th><th></th></tr>";
	$i=0;
	if(isset($_GET["p"])) $p=$_GET["p"];//	Ottaa sivunumeron
	else $p=1;
	foreach($datas as $data) {//tekee pöydän rivit
		if($data["Checked"]==0)$chek="EI";
		if($data["Checked"]==1)$chek="OK";
		if($data['Salary']==0)$salary="Ei maksettu";
		if($data['Salary']==1)$salary="Maksettu";
		echo "<tr class='tr".$i."'><td>".$data['Name']."</td><td>".stamp_to_week($data['Dates'])."</td><td>".stamp_to_date($data['Dates'])."</td><td>".stamp_to_time($data['Startime'])."-".stamp_to_time($data["Endtime"])."</td><td>".stamp_to_time($data["Duration"])."</td><td>".trimmeri($data["Description"])."</td><td>".trimmeri($data['Employer'])."</td><td>".trimmeri($data['Worknumber'])."</td><td>".trimmeri($data['Status'])."</td><td>".$salary."</td><td>".$chek."</td><td><a href='muokkaa_work.php?id=".$data["WorkID"]."'><button class='button3'>Muokkaa</button></a></td><td><a onclick=\"return confirm('Oletko varma?');\" href='listaa_tyot.php?p=".$p."&id=".$data["WorkID"]."'><button class='huom2'>Poista</button></a></td></tr>"; 
		if($i==0)$i++;
		else $i=0;
	}
} function tulostaa_user_table($datas) {// tulostaa listan työläisistä
	echo "<table><tr class='tr1'><td>Nimi</td><td></td><td></td></tr>";
	$i=0;
	foreach($datas as $data) {//tekee pöydän rivit
		
		echo "<tr class='tr".$i."'><td>".trimmeri($data['Name'])."</td><td><a class='button2' href='muokkaa_kayttajaa.php?id=".$data['UserID']."'>Muokkaa</a></td><td>";
		if($data["Status"]==0) echo "<a onclick=\"return confirm('Oletko varma?');\" class='huom3' href='listaa_kayttajat.php?id=".$data['UserID']."'>Poista käytöstä</a>";
		echo "</td></tr>";
			if($i==0)$i++;
			else $i=0;
	}
	echo "</table>"; 
} function tulostaa_deuser_table($datas) {// tulostaa listan työläisistä
	echo "<table><tr class='tr1'><td>Nimi</td><td></td><td></td></tr>";
	$i=0;
	foreach($datas as $data) {//tekee pöydän rivit
		echo "<tr class='tr".$i."'><td>".$data['Name']."</td><td><a class='button2' href='selaa_deactive.php?id=".$data['UserID']."&tila=activoi'>Ota käyttöön</a></td><td><a onclick=\"return confirm('Oletko varma? Tätä ei voi peruuttaa ja tekijän työt poistuvat myös tietokannasta.');\" class='huom' href='selaa_deactive.php?id=".$data['UserID']."&tila=poisto'>Poista lopullisesti</a></td></tr>";
			if($i==0)$i++;
			else $i=0;
	}
	echo "</table>"; 
} function excelmaker($nimi,$alku,$loppu) {//tekee csv tiedoston 
	
	$haku=" work.Checked=1";//muokkaa jo tehtyä hakua niin että se hakee vain vahvistetut työt
	$rows=hakee_tietyt_work($haku,3);
	$count=count($rows);
	if($count>=1) {
		$filename = 'CSV/tyotunnit-'.$nimi.'-'.stamp_to_date($alku).'-'.stamp_to_date($loppu).'.csv';//nimeää csv tiedoston
		$_SESSION["link"]=$filename;
		$array=array("Nimi","Paiva","Kello","Kesto","Kuvaus","Tilaaja","Tyonumero","Tila","Palkka","Varmistettu");
		$data = fopen($filename, 'w');//tekee csv tiedoston
		fputcsv($data, $array);//tekee sille ylärivin
		for($i=0;$i<$count;$i++){// palottelee hakutulokset
		if($rows[$i][11]==0) $salary="Ei maksettu";
		if($rows[$i][11]==1) $salary="Maksettu";
			$kello=stamp_to_time($rows[$i][3]).' - '.stamp_to_time($rows[$i][4]);
			$results[$i]=array($rows[$i][0],stamp_to_date($rows[$i][2]),$kello,stamp_to_time($rows[$i][5]),$rows[$i][6],$rows[$i][7],$rows[$i][8],$rows[$i][10],$salary,$rows[$i][9]);//tekee arvot csv tiedoston sisällön
		}
		foreach($results as $result) {
			fputcsv($data, $result);//laittaa tiedot tiedostoon
		}
	
		fclose($data);//sulkee kirjoituksen
		header('Content-Description: File Transfer');
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename='.basename($filename));
		header('Expires: 0');
		header('Cache-Control: must-revalidate');
		header('Pragma: public');
		header('Content-Length: ' . filesize($filename));
		ob_clean();
		flush();
		readfile($filename);
		exit;
	}
	else  echo"<script>window.alert('Ei tuloksia haulla.')</script>";
	
} function sivujentarkastus($maara, $min, $max, $listasivu) {
	if($maara>50) { //Jos tuotteiden määrä ylittää 50
		$maara2=$maara/50; //Jakaa tuotteiden määrän 50. MAARALASKURI=tarvittavien sivujen määrä
		$maaralaskuri=floor($maara2); //Pyöristää alaspäin
		if(is_float($maara2)) $maaralaskuri=$maaralaskuri+1; //Jos numero on desimaali (tuotteita on enemmän kuin tasan joten tarvitaan yksi ylimääräinen sivu)
		$m_min=$min+1;//Sivulle tulostettava teksti, jossa lukee monestako tuotteesta näytetään
		if($max>$maara) $max=$maara; //Jos max olisi enemmän kuin mitä tuotteita on muuttaa sen tuotteiden määräksi
		echo "<div style=\"text-align:center;margin-left:50px; float:right; margin-right:5px;\"><span style=\"float:left;margin-left:5px;margin-right:5px;font-size:0.9em;\">
		Näyttää $m_min-$max / $maara Työstä</span>";
		$prev=$listasivu-1;
		if($prev>0) { //Edellisen sivun linkki (nykyinen - 1, ei tulosta jos edellistä sivua ei ole)
			 echo "<a class=\"link\" href=\"?p=$prev\">< </a>"; //Jos konetyyppi ei ole valittu
		}
			if($listasivu>$maaralaskuri) echo "<script>location.href='?p=$maaralaskuri';</script>";//jos yritetään mennä sivulle jota ei ole olemassa niin heittää viimeiselle olemassaolevalle sivulle
			$sivunumero_min=$listasivu-6;//laskee pieminmän näytettävän ryhmittelypalkin
			$sivunumero_max=$listasivu+5;	//laskee isoim näytettävän ryhmittelypalkin
			if($sivunumero_max>$maaralaskuri) $sivunumero_min = $maaralaskuri-11;//katsoo ettei tule ylimääräisiä palkkeja
			if($sivunumero_min<1) $sivunumero_min=0;//katsoo ettei tule negatiivisia
			for($i=1;$i<=11;$i++) { //Linkkaa sivulle eri sivunumeroita, jättää linkkaamatta auki olevan sivun sivusta
				$sivunumero=$sivunumero_min+$i;//katsoo mikä palkki printataan nyt
				if($sivunumero<=$maaralaskuri) {//tarkistaa ettei mennä palkkeihin mitä ei ole olemassa
					if($sivunumero==$listasivu) echo "<span class='link' id='selected'>$listasivu</span>"; //Jos auki olevalla sivulla sivulla
					else {
						echo "<a class=\"link\" href=\"?p=$sivunumero\">$sivunumero </a>"; //KAIKKI
					}
				}
			}
		$next=$listasivu+1;
		if($next<=$maaralaskuri) { //Seuraavan sivun linkki (nykyinen + 1, ei tulosta jos seuraavaa sivua ei ole)
			echo "<a class=\"link\" href=\"?p=$next\"> ></a>"; //KAIKKI
		}
		echo "</div>";
		
	}
	elseif ($maara>=1) echo "<span style=\"float:left;margin-left:5px;font-size:0.9em;\">Näyttää 1-$maara / $maara Työstä</span><br />"; //jos tuotteita on niin vähän että ei tarvita erillisiä sivuja
	else echo "Tuotteita ei ole tällä hetkellä saatavilla."; //Jos tuotteita ei ole tietokannassa
	if(isset($maaralaskuri)) return $maaralaskuri;
	
} function sivujentarkastus_alaosa($maara, $listasivu,$maaralaskuri) { //ryhmitteöypalkin alaosan tulostus
	if($maara>50) { //Jos tuotteita on yli 50
		echo "<div style=\"text-align:center;margin-left:5px; float:right; margin-right:5px;\">"; //alaosan div
		$prev=$listasivu-1; //Edellisen sivun muuttuja
		if($prev>0) { //Edellisen sivun linkki (ykyinen - 1, ei tulosta jos edellistä sivua ei ole)
			 echo "<a class=\"link\" href=\"?p=$prev\">< </a>"; //Jos konetyyppi ei ole valittu
		}
			$sivunumero_min = $listasivu-6;//laskee pieminmän näytettävän ryhmittelypalkin
			$sivunumero_max = $listasivu+5;	//laskee isoim näytettävän ryhmittelypalkin
			if($sivunumero_max>$maaralaskuri) $sivunumero_min = $maaralaskuri-11;//katsoo ettei tule ylimääräisiä palkkeja
			if($sivunumero_min<1) $sivunumero_min=0;	//katsoo ettei tule negatiivisia
			for($i=1;$i<=11;$i++) { //Linkkaa sivulle eri sivunumeroita, jättää linkkaamatta auki olevan sivun sivusta
				$sivunumero=$sivunumero_min+$i;//katsoo mikä palkki printataan nyt
				if($sivunumero <= $maaralaskuri) {//tarkistaa ettei mennä palkkeihin mitä ei ole olemassa
					if($sivunumero==$listasivu) echo "<span class='link' id='selected'>$listasivu</span>"; //Jos auki olevalla sivulla sivulla
					else {
						echo "<a class=\"link\" href=\"?p=$sivunumero\">$sivunumero </a>"; //KAIKKI
					}
				}
			}
		$next=$listasivu+1; //Seuraavan sivun muuttujan alustus
		if($next<=$maaralaskuri) { //Seuraavan sivun linkki (ykyinen + 1, ei tulosta jos seuraavaa sivua ei ole)
			echo "<a class=\"link\" href=\"?p=$next\"> ></a>"; //Jos ei määritetty tyyppiä
		}
		echo "</div>"; //alaosan div lopuu
	}
}
?>
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes