<?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 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') || !ksiazki::$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/'.ksiazki::$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;
		}
	}
}
?>