<?php
/***************************************************** 
 *                System biblioteczny                * 
 ***************************************************** 
 * Wersja: 1.3 Stable                                * 
 * Data: 17.06.2012 (15:07)                          * 
 * Autor: Jacek Kowalski (http://jacekk.info)        * 
 *                                                   * 
 * Utwor rozprowadzany na licencji                   * 
 * http://creativecommons.org/licenses/by-nc-sa/2.5/ * 
 *****************************************************/

class validate {
	static $kod = FALSE;
	
	static function KOD(&$kod, $exists=NULL) {
		if(ltrim($kod, '0123456789')!='' OR strlen($kod)>8 OR strlen($kod)<1) {
			error::add('Błędny KOD - dozwolone tylko cyfry');
		}
		
		$kod = str_pad($kod, 8, '0', STR_PAD_LEFT);
		
		if(!is_null($exists)) {
			if($exists!==ksiazki::exists($kod)) {
				error::add('Wybrana książka '.($exists ? 'nie' : 'już').' istnieje!');
			}
		}
	}
	
	static function EAN($kod) {
		if( ltrim($kod, '0123456789') != '' OR strlen($kod) != 13 ) {
			error::add('Błędny ISN - dozwolone tylko cyfry');
		}
		
		if( substr($kod, -1) != checksum::EAN(substr($kod, 0, -1)) ) {
			error::add('Podany kod ISN jest błędny');
		}
	}
	
	static function ISBN(&$kod) {
		$kod = str_replace('-', '', strtoupper($kod));
		if( ltrim($kod, '0123456789X') != '' OR strlen($kod) != 10 ) {
			error::add('Błędny ISBN - dozwolone tylko cyfry i znak X');
		}
		
		if( substr($kod, -1) != checksum::ISBN(substr($kod, 0, -1)) ) {
			error::add('Podany ISBN jest błędny');
		}
	}
	
	static function ISSN(&$kod) {
		$kod = str_replace('-', '', strtoupper($kod));
		if( ltrim($kod, '0123456789X') != '' OR strlen($kod) != 8 ) {
			error::add('Błędny ISSN - dozwolone tylko cyfry');
		}
		
		if( substr($kod, -1) != checksum::ISSN(substr($kod, 0, -1)) ) {
			error::add('Podany ISSN jest błędny');
		}
	}
	
	static function MSC(&$kod, $polka=NULL, $rzad=NULL) {
		$kod = strtoupper($kod);
		
		if($polka===NULL) {
			$polka = $_GET['polka'];
		}
		if($rzad===NULL) {
			$rzad = $_GET['rzad'];
		}
		
		if(!ctype_alnum($kod) OR ctype_digit($kod) OR $kod=='' OR strlen($kod)>5) {
			error::add('Podany kod miejsca (regał) jest błędny');
		}
		if($polka!='' AND (!ctype_digit($polka) OR $polka>255)) {
			error::add('Podany kod miejsca (półka) jest błędny');
		}
		if($rzad!='' AND (!ctype_digit($rzad) OR $rzad>255)) {
			error::add('Podany kod miejsca (rząd) jest błędny');
		}
	}
	
	static function type(&$kod) {
		$kod = str_replace('-', '', $kod);
		
		switch(strlen($kod)) {
			case 13:
				self::EAN($kod);
				
				if(substr($kod, 0, 3)=='978' OR substr($kod, 0, 3)=='979') {
					return 'ISBN';
				}
				elseif(substr($kod, 0, 3)=='977') {
					return 'ISSN';
				}
			break;
			case 9:
				if(self::$kod) {
					$kod = substr($kod, 1);
					self::ISSN($kod);
					$kod = convert::ISSN8_to_ISSN13($kod);
					return 'ISSN';
				}
			break;
			case 8:
				if(self::$kod) {
					self::KOD($kod);
					return 'KOD';
				}
				else
				{
					self::ISSN($kod);
					$kod = convert::ISSN8_to_ISSN13($kod);
					return 'ISSN';
				}
			break;
			case 10:
				self::ISBN($kod);
				$kod = convert::ISBN10_to_ISBN13($kod);
				return 'ISBN';
			break;
			default:
				if(self::$kod AND ctype_digit($kod)) {
					self::KOD($kod);
					return 'KOD';
				}
			break;
		}
		
		if(self::$kod) {
			self::MSC($kod);
			return 'MSC';
		}
		
		error::add('Nieznany typ kodu');
	}
}
?>
