PodglÄ…d pliku: / books_opac / includes / ksiazki.php

<?php
/***************************************************** 
 *         System biblioteczny - Modul OPAC          * 
 ***************************************************** 
 * Wersja: 1.2 Stable                                * 
 * Data: 21.08.2010 (13:45)                          * 
 * Autor: Jacek Kowalski (http://jacekk.info)        * 
 *                                                   * 
 * Strona WWW: http://dev.jacekk.net/books           * 
 *                                                   * 
 * 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 exists($kod) {
        $info = self::cache_get($kod);
        if(isset($info['id'])) {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    
    static function szukaj_KOD($kod) {
        validate::KOD($kod, TRUE);
        
        return self::cache_get($kod);
    }
    
    static function szukaj_info($dane, $order, $start=NULL, $limit=30) {
        $allow = array('id', 'tytul', 'autor', 'wydawnictwo', 'miejsce', 'rok', 'wydanie');
        $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['ISBN'] = $where['id'];
                    unset($where['id']);
                break;
                case 'MSC':
                    $where['regal'] = $where['id'];
                    $where['polka'] = $dane['polka'];
                    $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
        {
            $num = db2::num('ksiazki', 'id', $where);
            $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` FROM `ksiazki`'.db2::__combine_where($where).db2::__combine_order($order).db2::__combine_limit($start, $limit))));
            
            self::cache_addarray($ret);
        }
        
        return array($num, $ret, db2::revelance());
    }
}
?>

Browse Code © 2010 by Jacek Kowalski