<?php 
 | 
class okladki { 
 | 
    static function znajdz($KOD, $ISBN, $dir = 'covers') { 
 | 
        if(strlen($KOD)<=8 && ctype_digit($KOD)) { 
 | 
            validate::KOD($KOD); 
 | 
             
 | 
            if(file_exists('./'.$dir.'/own/'.$KOD)) { 
 | 
                return './'.$dir.'/own/'.$KOD; 
 | 
            } 
 | 
        } 
 | 
         
 | 
        if(strlen($ISBN)==13) { 
 | 
            validate::EAN($ISBN); 
 | 
             
 | 
            if(substr($ISBN, 0, 3)=='978') { 
 | 
                $ISBN10 = convert::ISBN13_to_ISBN10($ISBN); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                $ISBN10 = $ISBN; 
 | 
            } 
 | 
             
 | 
            if(file_exists('./'.$dir.'/own/'.$ISBN)) { 
 | 
                return './'.$dir.'/own/'.$ISBN; 
 | 
            } 
 | 
             
 | 
            if(self::librarything($ISBN, $dir)!==FALSE) { 
 | 
                return './'.$dir.'/'.$ISBN; 
 | 
            } 
 | 
        } 
 | 
         
 | 
        return FALSE; 
 | 
    } 
 | 
     
 | 
    static function librarything($ISBN, $dir = 'covers') { 
 | 
        if(!function_exists('curl_init') || !config::$lt_api) { 
 | 
            return FALSE; 
 | 
        } 
 | 
         
 | 
        // Okładkę już mamy 
 | 
        if(file_exists('./'.$dir.'/'.$ISBN)) { 
 | 
            if(filesize('./'.$dir.'/'.$ISBN)>0) { 
 | 
                return NULL; 
 | 
            } 
 | 
             
 | 
            // Negatywne cache'owanie 
 | 
            if(filesize('./'.$dir.'/'.$ISBN)==0 AND filemtime('./'.$dir.'/'.$ISBN)+(30*24*60*60) > time()) { 
 | 
                return FALSE; 
 | 
            } 
 | 
        } 
 | 
         
 | 
        $get = 'http://www.librarything.com/devkey/'.config::$lt_api.'/'.($dir=='covers_big' ? 'large' : 'small').'/isbn/'.$ISBN10; 
 | 
        $curl = curl_init($get); 
 | 
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
 | 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
 | 
         
 | 
        $img = @curl_exec($curl); 
 | 
        $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
 | 
        $type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); 
 | 
         
 | 
        if($code != 200 || substr($type, 0, 6) != 'image/' || $img == FALSE || strlen($img) < 100) { 
 | 
            // Negatywne cache'owanie 
 | 
            touch('./'.$dir.'/'.$ISBN); 
 | 
            return FALSE; 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            file_put_contents('./'.$dir.'/'.$ISBN, $img); 
 | 
            return TRUE; 
 | 
        } 
 | 
    } 
 | 
     
 | 
    static function przenies($SKOD, $SISBN, $KOD, $ISBN) { 
 | 
        foreach(array('covers', 'covers_big') as $where) { 
 | 
            $nowaokl = self::znajdz($KOD, $ISBN, $where); 
 | 
            if(!$nowaokl) { 
 | 
                $staraokl = self::znajdz($SKOD, $SISBN, $where); 
 | 
                if(!$staraokl) { 
 | 
                    continue; 
 | 
                } 
 | 
                if($nowaokl == $staraokl) { 
 | 
                    continue; 
 | 
                } 
 | 
                     
 | 
                if(!empty($ISBN)) { 
 | 
                    if(strpos($staraokl, '/own/')) { 
 | 
                        rename($staraokl, './'.$where.'/own/'.$ISBN); 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        rename($staraokl, './'.$where.'/'.$ISBN); 
 | 
                    } 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    rename($staraokl, './'.$where.'/own/'.$KOD); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
         
 | 
        if($KOD != $SKOD) { 
 | 
            self::usun($SKOD, ''); 
 | 
        } 
 | 
    } 
 | 
     
 | 
    static function usun($KOD, $ISBN) { 
 | 
        if($ISBN) { 
 | 
            @unlink('./covers/'.$ISBN); 
 | 
            @unlink('./covers_big/'.$ISBN); 
 | 
            @unlink('./covers/own/'.$ISBN); 
 | 
            @unlink('./covers_big/own/'.$ISBN); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            @unlink('./covers/own/'.$KOD); 
 | 
            @unlink('./covers_big/own/'.$KOD); 
 | 
        } 
 | 
    } 
 | 
     
 | 
    static function upload($files, $KOD, $ISBN) { 
 | 
        if($ISBN) { 
 | 
            $DANE = $ISBN; 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            $DANE = $KOD; 
 | 
        } 
 | 
         
 | 
        if(is_uploaded_file($files['tmp_name'])) { 
 | 
            okladki::skaluj($files['tmp_name'], 500, 500, './covers_big/own/'.$DANE); 
 | 
            okladki::skaluj($files['tmp_name'], 53, 80, './covers/own/'.$DANE); 
 | 
            if(file_exists('./covers/'.$DANE)) { 
 | 
                unlink('./covers/'.$DANE); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
     
 | 
    static function skaluj($file, $max_width, $max_height, $outfile) { 
 | 
        list($width, $height, $type) = getimagesize($file); 
 | 
         
 | 
        switch($type) { 
 | 
            case IMAGETYPE_JPEG: 
 | 
                $image = imagecreatefromjpeg($file); 
 | 
            break; 
 | 
            case IMAGETYPE_PNG: 
 | 
                $image = imagecreatefrompng($file); 
 | 
            break; 
 | 
            case IMAGETYPE_GIF: 
 | 
                $image = imagecreatefromgif($file); 
 | 
            break; 
 | 
            case IMAGETYPE_XBM: 
 | 
                $image = imagecreatefromxpm($file); 
 | 
            break; 
 | 
            default: 
 | 
                error::add('Nieznany format obrazka: '.$type.'!'); 
 | 
                return FALSE; 
 | 
            break; 
 | 
        } 
 | 
         
 | 
        if ($width > $max_width OR $height > $max_height) { 
 | 
            if($width*$max_height > $height*$max_width) { 
 | 
                $new_width = $max_width; 
 | 
                $new_height = round( ($new_width / $width) * $height ); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                $new_height = $max_height; 
 | 
                $new_width = round( ($new_height / $height) * $width ); 
 | 
            } 
 | 
             
 | 
            $new_image = imagecreatetruecolor($new_width, $new_height); 
 | 
            imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
 | 
            return imagejpeg($new_image, $outfile, 100); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            return imagejpeg($image, $outfile, 100); 
 | 
        } 
 | 
    } 
 | 
} 
 | 
?> 
 |