Podgląd pliku: / books / includes / ksiazki.php


<?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 ksiazki_cache {
    static 
$cache = array();
    
    static function 
cache_get($kod) {
        
$kod = (int)$kod;
        
        if(!isset(
self::$cache[(int)$kod])) {
            
self::cache_update($kod);
        }
        
        return 
self::$cache[(int)$kod];
    }
    
    static function 
cache_add($kod, &$dane) {
        if(
$dane['od2']) {
            
$dane['od'] = $dane['od2'];
            unset(
$dane['od2']);
        }
        
self::$cache[(int)$kod] = $dane;
    }
    
    static function 
cache_addarray(&$dane) {
        foreach(
$dane as &$r) {
            
self::cache_add($r['id'], $r);
        }
    }
    
    static function 
cache_clear($id=NULL) {
        if(
is_null($id)) {
            
self::$cache = array();
        }
        else
        {
            unset(
self::$cache[(int)$id]);
        }
    }
    
    static function 
cache_update($kod) {
        
$dane db2::escape_data(sql::fetchone(sql::query('SELECT *, (SELECT MAX(`od`) FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id`) as `od2`, (SELECT `do` FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id` AND `od`=`od2`) as `do`, (SELECT `kto` FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id` AND `od`=`od2`) as `kto` FROM `ksiazki` WHERE `id`=\''.sql::escape($kod).'\'')));
        
self::cache_add($kod$dane);
    }
}

class 
ksiazki extends ksiazki_cache {
    static 
$LT_API '';
    
    static function 
okladka($KOD$ISBN) {
        return 
okladki::znajdz($KOD$ISBN'covers');
    }
    
    static function 
okladka_big($KOD$ISBN) {
        return 
okladki::znajdz($KOD$ISBN'covers_big');
    }
    
    static function 
dodaj(&$dane) {
        
validate::KOD($dane['id'], FALSE);
        
        if(
$dane['ISBN']) {
            
$t validate::type($dane['ISBN']);
            if(
$t!='ISBN') {
                
error::add('W polu ISBN znajduje się '.$t);
            }
        }
        if(
$dane['ISSN']) {
            
$t validate::type($dane['ISSN']);
            if(
$t!='ISSN') {
                
error::add('W polu ISSN znajduje się '.$t);
            }
        }
        
        if(
$dane['jezyk']=='pol') {
            
$dane['jezyk'] = 'polski';
        }
        
        unset(
$_POST['okladka']);
        
        
okladki::upload($_FILES['okladka'], $dane['id'], $dane['ISBN']);
        
        
db2::add('ksiazki'$dane);
        
self::cache_update($dane['id']);
    }
    
    static function 
exists($kod) {
        
$info self::cache_get($kod);
        if(isset(
$info['id'])) {
            return 
TRUE;
        }
        else
        {
            return 
FALSE;
        }
    }
    
    static function 
edytuj(&$dane) {
        
validate::KOD($dane['id']);
        
$kod $dane['id'];
        
        
$old self::szukaj_KOD($kod);
        
        if(
$dane['id']=='' OR empty($dane['autor']) OR empty($dane['tytul']) OR empty($dane['jezyk'])) {
            
error::add('Brak wymaganych danych o książce (kod, autor, tytuł, język)');
        }
        
        if(
$dane['nid']!='') {
            
validate::KOD($dane['nid']);
            
$dane['id'] = $dane['nid'];
        }
        
        unset(
$dane['nid']);
        
        if(
$dane['ISBN']) {
            
$t validate::type($dane['ISBN']);
            if(
$t!='ISBN') {
                
error::add('W polu ISBN znajduje się '.$t);
            }
        }
        if(
$dane['ISSN']) {
            
$t validate::type($dane['ISSN']);
            if(
$t!='ISSN') {
                
error::add('W polu ISSN znajduje się '.$t);
            }
        }
        
        if(!
$dane['wycofana']) {
            
$dane['wycofana'] = 0;
            
$dane['powod'] = NULL;
        }
        
        
okladki::przenies($old['id'], $old['ISBN'], $dane['id'], $dane['ISBN']);
        
        unset(
$_POST['okladka']);
        
        
// Nowa okładka
        
if(isset($_POST['okladka_del']) || (isset($_FILES['okladka']) && is_uploaded_file($_FILES['okladka']['tmp_name']))) {
            
okladki::usun($dane['id'], $dane['ISBN']);
            unset(
$_POST['okladka_del']);
        }
        
        
okladki::upload($_FILES['okladka'], $dane['id'], $dane['ISBN']);
        
        
db2::edit('ksiazki'$dane, array('id' => $kod));
        
self::cache_update($kod);
        if(
$dane['id']!=$kod) {
            
self::cache_update($dane['id']);
        }
    }
    
    static function 
miejsce($regal$polka$rzad$where) {
        
db2::edit('ksiazki', array('regal' => strtoupper($regal), 'polka' => $polka'rzad' => $rzad), $where);
        
self::cache_clear();
    }
    
    static function 
usun(&$kod) {
        
validate::KOD($kod);
        
        
$dane self::szukaj_KOD($kod);
        
        
okladki::usun($dane['id'], $dane['ISBN']);
        
        
db2::del('ksiazki', array('id' => $kod));
        
self::cache_clear($kod);
    }
    
    static function 
szukaj_KOD($kod) {
        
validate::KOD($kodTRUE);
        
        return 
self::cache_get($kod);
    }
    
    static function 
szukaj_ISBN($ISBN) {
        
validate::EAN($ISBN);
        
        return 
db2::get('ksiazki''*', array('ISBN' => $ISBN), NULL10);
    }
    
    static function 
szukaj_ISSN($ISSN) {
        
validate::EAN($ISSN);
        
        return 
db2::get('ksiazki''*', array('ISSN' => $ISSN), NULL10);
    }
    
    static function 
szukaj_info($dane$order=NULL$start=NULL$limit=30) {
        
$allow = array('id''tytul''autor''wydawnictwo''miejsce''rok''wydanie''wycofana');
        
$replace = array('tytul' => 'tytul~~''autor' => 'autor~~''wydawnictwo' => 'wydawnictwo~~');
        
        
$where = array();
        
        foreach(
$dane as $key => $value) {
            if(!
in_array($key$allow) OR $value==='') {
                continue;
            }
            
            if(
$replace[$key]) {
                
$key $replace[$key];
            }
            
            
$where[$key] = $value;
        }
        
        if(
$where['id']) {
            
validate::$kod TRUE;
            switch(
validate::type($where['id'])) {
                case 
'ISBN':
                    
$where['ISBN'] = $where['id'];
                    unset(
$where['id']);
                break;
                case 
'ISSN':
                    
$where['ISSN'] = $where['id'];
                    unset(
$where['id']);
                break;
                case 
'MSC':
                    
$where['regal'] = $where['id'];
                    if(
$dane['polka']) {
                        
$where['polka'] = $dane['polka'];
                    }
                    if(
$dane['rzad']) {
                        
$where['rzad'] = $dane['rzad'];
                    }
                    unset(
$where['id']);
                break;
            }
            
validate::$kod FALSE;
        }
        
        if(!
$where['regal']) {
            unset(
$where['polka']);
            unset(
$where['rzad']);
        }
        
        if(
$where['id']) {
            
$ret[] = self::szukaj_KOD($where['id']);
            
$num count($ret);
        }
        else
        {
            if(
$dane['do']) {
                
$num db2::num('pozycz''id', array('do' => NULL));
                if(
$num==0) {
                    
$ret = array();
                }
                else
                {
                    
$ret db2::get(array('pozycz', array('J''ksiazki''USING''id')), '*', array('do' => NULL), $order$start$limit);
                }
            }
            else
            {
                
$num db2::num('ksiazki''id'$where);
                if(
$num==0) {
                    
$ret = array();
                }
                else
                {
                    
$where db2::__combine_where($whereTRUE);
                    
$ret db2::escape_data(sql::fetch(sql::query('SELECT *, (SELECT MAX(`od`) FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id`) as `od2`, (SELECT `do` FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id` AND `od`=`od2`) as `do`, (SELECT `kto` FROM `pozycz` WHERE `pozycz`.`id`=`ksiazki`.`id` AND `od`=`od2`) as `kto`'.(db2::revelance() ? ', '.db2::$revelance '').' FROM `ksiazki`'.$where.db2::__combine_order($orderTRUE).db2::__combine_limit($start$limit))));
                }
            }
            
            
self::cache_addarray($ret);
        }
        
        return array(
$num$retdb2::revelance());
    }
}
?>

Browse Code © 2010 by Jacek Kowalski