Jacek Kowalski
2019-09-19 51eea1c5e113e25683109b3544d847ee0668d921
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
class validate {
    static $kod = FALSE;
    
    static function KOD(&$kod, $exists=NULL) {
        if(ltrim($kod, '0123456789')!='' OR strlen($kod)>8 OR strlen($kod)<1) {
            errorclass::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)) {
                errorclass::add('Wybrana książka '.($exists ? 'nie' : 'już').' istnieje!');
            }
        }
    }
    
    static function EAN($kod) {
        if( ltrim($kod, '0123456789') != '' OR strlen($kod) != 13 ) {
            errorclass::add('Błędny ISN - dozwolone tylko cyfry');
        }
        
        if( substr($kod, -1) != checksum::EAN(substr($kod, 0, -1)) ) {
            errorclass::add('Podany kod ISN jest błędny');
        }
    }
    
    static function ISBN(&$kod) {
        $kod = str_replace('-', '', strtoupper($kod));
        if( ltrim($kod, '0123456789X') != '' OR strlen($kod) != 10 ) {
            errorclass::add('Błędny ISBN - dozwolone tylko cyfry i znak X');
        }
        
        if( substr($kod, -1) != checksum::ISBN(substr($kod, 0, -1)) ) {
            errorclass::add('Podany ISBN jest błędny');
        }
    }
    
    static function ISSN(&$kod) {
        $kod = str_replace('-', '', strtoupper($kod));
        if( ltrim($kod, '0123456789X') != '' OR strlen($kod) != 8 ) {
            errorclass::add('Błędny ISSN - dozwolone tylko cyfry');
        }
        
        if( substr($kod, -1) != checksum::ISSN(substr($kod, 0, -1)) ) {
            errorclass::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) {
            errorclass::add('Podany kod miejsca (regał) jest błędny');
        }
        if($polka!='' AND (!ctype_digit($polka) OR $polka>255)) {
            errorclass::add('Podany kod miejsca (półka) jest błędny');
        }
        if($rzad!='' AND (!ctype_digit($rzad) OR $rzad>255)) {
            errorclass::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';
        }
        
        errorclass::add('Nieznany typ kodu');
    }
}
?>