<?
	/** Zbiór funckji logujących urzytkowników.
	 * @author Michał Malinowski & Łukasz Chmielewski & Dariusz Działak
	 * @package XPDefault
	 */

	/** Funkcja sprawdzająca czy logująca osoba jest studentem.
	 *
	 * Jeśli osoba jest studentem to funkcja wczytuje wszystkie przedmioty studenta.
	 * @author Michał Malinowski
	 * @version 0.3
	 */
	function loginStud() {
		global $sess;

		$sel = 
			"SELECT gr.gr_nr, gr.zaj_cyk_id, prz.nazwa, os.imie, os.nazwisko, os.email, zaj_cyk.cdyd_kod
				FROM XP_OSOBY_GRUP gr, XP_ZAJECIA_CYKLI zaj, XP_PRZEDMIOTY prz, XP_CYKLE_DYDAKTYCZNE cyk, XP_PROWADZACY_GRUP pgr, XP_OSOBY os, XP_ZAJECIA_CYKLI zaj_cyk
				WHERE  os_id = '" . $sess->get("id") . "'
					AND  gr.zaj_cyk_id = zaj.id  AND  zaj.prz_kod = prz.kod
					AND  zaj.cdyd_kod = cyk.kod  AND  cyk.status_cyklu = 'A'
					AND  gr.gr_nr = pgr.gr_nr    AND  gr.zaj_cyk_id = pgr.zaj_cyk_id
					AND  pgr.prac_id = os.id     AND  gr.zaj_cyk_id = zaj_cyk.id
				ORDER BY prz.nazwa";
		$q = new CQuery($sel);
		if ($q->num_rows()) {
			$sess->login('Stud');
			$sess->set('Sgroups', array());
			while ($arr = $q->fetch_array()) {
				$sess->setTab('Sgroups', $arr['zaj_cyk_id'], array('gr_nr' => $arr['gr_nr'], 'przedmiot' => $arr['nazwa'], 'pimie' => $arr['imie'], 'pnazwisko' => $arr['nazwisko'], 'pemail' => $arr['email'], 'cdyd_kod' => $arr['cdyd_kod']));
			}
		}
	}

	/** Funkcja sprawdzająca czy logująca osoba jest asystentem.
	 *
	 * Jeśli osoba jest asystentem to funkcja wczytuje wszystkie grupy i aktualne zadania asystenta.
	 * @author Lukasz Chmielewski
	 * @version 0.1
	 */
	function loginAsys() {
		global $sess;
		global $xpage;

		$sel = 
		"select 
			GR_NR, NAZWA, DATA_ZAKON, CDYD_KOD, STATUS_CYKLU, XP_CYKLE_DYDAKTYCZNE.OPIS DESCR,
			XP_PROWADZACY_GRUP.ZAJ_CYK_ID CYK_ID,
			OPERATOR
		from 
			XP_PROWADZACY_GRUP, XP_ZAJECIA_CYKLI, 
			XP_PRZEDMIOTY, XP_CYKLE_DYDAKTYCZNE 
		where
			PRAC_ID = '" . $sess->get("id") . "' and
			XP_PROWADZACY_GRUP.ZAJ_CYK_ID = XP_ZAJECIA_CYKLI.ID and
			XP_ZAJECIA_CYKLI.XP_OBSLUGA = 'Y' and
			PRZ_KOD = XP_PRZEDMIOTY.KOD and 
			XP_CYKLE_DYDAKTYCZNE.KOD = CDYD_KOD 
			order by CDYD_KOD";
//			and 
//			STATUS_CYKLU = 'A'";

		$q = new CQuery($sel);
		if ($q->num_rows()) {
			$sess->login("Asys");
			$sess->set("Agrupy", array());

			//chyba
			$sess->set('xpage','Asys_cykle');
			include "Asys_cykle.inc.php";

			$sess->set("Aaktualne_cykle", array());
			$licz = 0;

			while ($arr = $q->fetch_array()) {
				if ($arr["STATUS_CYKLU"] == 'A') {
					$sess->setTab2("Agrupy", $arr["GR_NR"], $arr["CYK_ID"], 
						array(	"cdyd" => $arr["CDYD_KOD"], 
							"op" => $arr["DESCR"],
							"operator" => $arr["OPERATOR"],
							"przedmiot" => $arr["NAZWA"]));
					if (licz == 0) {
						$licz++;
						$sess->setTab("Aaktualne_cykle",'$licz',$arr["DESCR"]);
					}
					else {
						if ($sess->getTab("Aaktualne_cykle",'$licz') != $arr["DESCR"]) {
							$licz++;
							$sess->setTab("Aaktualne_cykle", $licz, $arr["DESCR"]);
						}
					}
				}
			}
		}
		$q->free();
	}

	/** Funkcja sprawdzająca czy logująca osoba jest wykładowcą.
	 *
	 * Jeśli osoba jest wykładowcą lub operatorem to funkcja wczytuje wszystkie prowadzone przedmioty.
	 * @author Dariusz Działak.
	 * @version 0.1
	 */
	function loginWykl(){
		global $sess;

		$opis_cyklu="<br>oglądaj wyklady innych cykli";
		$id_os=$sess->get("id");
		$q = new CQuery("SELECT p.kod as przedmiot, nazwa, c.kod, c.opis
				FROM XP_PRZEDMIOTY p,
					XP_PROWADZACY_PRZEDMIOTY_CYKLI w,
					XP_ZAJECIA_CYKLI z,
					XP_CYKLE_DYDAKTYCZNE c
				 WHERE ((w.prac_id=$id_os) AND
						(w.cdyd_kod=c.kod) AND
						(w.prz_kod=p.kod) AND
						(z.cdyd_kod=c.kod) AND
						(z.prz_kod=p.kod) AND
						(z.XP_OBSLUGA = 'Y') AND
						(status_cyklu='A'));");
		if ($q->num_rows()) {
			$sess->set("w_przedm", array());
			while ($arr = $q->fetch_array()) {
				$sess->setTab("w_przedm", $arr["przedmiot"], $arr["nazwa"]);
				$kod_cyklu = $arr["kod"];
				$opis_cyklu = $arr["opis"];
			}
		}

		$q = new CQuery("SELECT kod, opis, status_cyklu
				FROM
					XP_CYKLE_DYDAKTYCZNE c,
					XP_ZAJECIA_CYKLI z,
					XP_PROWADZACY_PRZEDMIOTY_CYKLI p
				 WHERE
				 	(p.prac_id='$id_os' AND
					z.cdyd_kod=c.kod AND
					z.XP_OBSLUGA = 'Y' AND
					p.cdyd_kod=c.kod);");
		if ($q->num_rows()) {
			$sess->set("w_akt_cykl", $kod_cyklu);
			$sess->set("w_akt_cykl_opis", $opis_cyklu);
			$sess->login("Wykl");
		}
	}

	/** Funkcja sprawdzająca czy logująca osoba ma uprawnienia operatora (nie będąc wykładowcą).
	 *
	 * Jeśli osoba jest operatorem to funkcja wczytuje przedmioty do których użytkownik ma uprawnienia operatora.
	 * @author Dariusz Działak.
	 * @version 0.1
	 */
	function loginOper(){
		global $sess;

//		if ($sess->isLoged("Wykl")) return;
		if ($sess->get("w_przedm")) return;
		$id_os=$sess->get("id");
		$q = new CQuery("SELECT p.kod as przedmiot, nazwa, c.kod
				FROM XP_PRZEDMIOTY p,
					XP_CYKLE_DYDAKTYCZNE c,
					XP_ZAJECIA_CYKLI zc,
					XP_PROWADZACY_GRUP pg
				 WHERE (
				 		(status_cyklu='A') AND
						(zc.cdyd_kod = c.kod) AND
						(zc.prz_kod = p.kod) AND
						(pg.zaj_cyk_id=zc.id) AND
						(pg.prac_id = $id_os) AND
						(pg.operator = 'T'));");
		if ($q->num_rows()) {
			$sess->set("w_przedm", array());
			$sess->login("Oper");
			while ($arr = $q->fetch_array()) {
				$sess->setTab("w_przedm", $arr["przedmiot"], $arr["nazwa"]);
				$sess->set("w_akt_cykl", $arr["kod"]);
			}
		}
	}
	/** Funkcja sprawdzająca, czy logująca się osoba jest administratorem
	* jeśli tak, to ustawia pole login w sesji
	* @author Maciek Osinski
	* @param mode 0 normalne, 1 cos jest zablokowane
	* @return true - ok, false - to nie admin
	* @todo gdzies ladniej ustalic co wyznacza admina
	*/
	function loginAdmin ($mode) {
		global $sess;

		$res = false;
		if ($sess->get("indeks") == 7) {
			$sess->login('Admin');
			$sess->set('xpage','Ad_start');
			$res = true;
// FIXME !!!
			$sess->set('Ad_systemlock', $mode);
		}
		return $res;
	}

	/** Funkcja sprawdza login i hasło podane przez użytkownika. Jeśli dane są poprawne - loguje go.
	 *
	 * W tej funkcji ustawiane są główne zmienne sesyjne urzytkownika.
	 * @author Michał Malinowski
	 * @version 0.3
	 */
	function login ($login, $passwd) {
		global $sess;

		if ($sess->isLoged())
			return;

		if ($login!='') {
		  $q = new CQuery("SELECT id, indeks, imie, nazwisko FROM XP_OSOBY WHERE pesel='$login'");
		  if ($q->num_rows()) {
			  $a = $q->fetch_array();

			  if ($passwd == "xxx") {
				  $sess->set("login", $login);
				  $sess->set("id", $a["id"]);
				  $sess->set("indeks", $a["indeks"]);
				  $sess->set("imie", $a["imie"]);
				  $sess->set("nazwisko", $a["nazwisko"]);

				  $la = loginAllowed();
	    	 	    	  if ($la == 0) {
					  loginStud();
					  loginAsys();
			  		  loginWykl();
					  loginOper();
					  loginAdmin(0);
				  } else if (!loginAdmin($la))
				  	  xpBlocked();
			  }
		  }
		}
	}
	login($_POST['login'], $_POST['passwd']);
?>
