<?php
//
//  Thumbnails
//  -------------------
//  - Author: Steve H <http://comiccms.com/>
//  - License: GPL 3 <http://www.gnu.org/copyleft/gpl.html>
//  - Created: Nov 2007
//  - Updated: Sep 2009
//
//  Designed for ComicCMS 0.1.9b <http://comiccms.com/>
//
class pl_thumb extends ComicCMS {
    var $id = 'thumb';
    var $version = '2';
    var $forversion = array('0.2');
    var $events = array('after_comic_add','after_comic_edit');
    
    var $lang = array(
        '_lang'=>'en',
        'en'=>array(
            '_title'=>'Comic Thumbnails',
            '_desc'=>'Automaticaly creates thumbnails of uploaded comics',
            '_author'=>'Steve H',
            
            'main'=>'To show thumbnails in your public site use something like this in your templates:',
            'genold'=>'Generate thumbnails for past comics',
            'gendesc'=>'Submit this form to create thumbnails for all the images you have uploaded to ComicCMS already with the current height/width settings. Don\'t do this every time you upload a new comic as it\'s thumbnail will be generated automatically.',
            'genwarn'=>'If you set too many thumnails to generate at once your webserver may spit out errors.',
            'genform'=>'Generate thumbnails',
            'from'=>'From Comic ID',
            'to'=>'To Comic ID',
            'done'=>'Thumbnails Generated',
            
            'edit'=>'Leave either width or height blank',
            'width'=>'Thumbnail width (pixels)',
            'height'=>'Thumbnail height (pixels)',
            'quality'=>'Thumbnail quality (1-100)',
            'badquality'=>'Quality value incorrect',
        )
    );
    
    var $settings = array(
        'width'=>200,
        'height'=>0,
        'quality'=>60,
    );
    
    
    function fields() {
        return array(
            array('type'=>'html','html'=>'<p class="notice">'.$this->lang('edit').'</p>'),
            'width'=>array('type'=>'text','title'=>$this->lang('width')),
            'height'=>array('type'=>'text','title'=>$this->lang('height')),
            'quality'=>array('type'=>'text','title'=>$this->lang('quality')),
        );
    }
    function mainfields() {
        return array(
            'from'=>array('type'=>'text','title'=>$this->lang('from')),
            'to'=>array('type'=>'text','title'=>$this->lang('to')),
        );
    }
    
    
    function d_use($admin) {
        $admin->addline('<p>'.$this->lang('main').'</p>');
        $admin->addline('<pre>&lt;img src="http:///img/comic/t_{{comic_id}}.jpg" alt="Comic #{{comic_id}} thumb" /&gt;</pre>');
        
        $admin->addline('<h3>'.$this->lang('genold').'</h3>');
        $admin->addline('<p>'.$this->lang('gendesc').'</p>');
        $admin->addwarning($this->lang('genwarn'));
        
        $admin->genform($this->mainfields(),array('from'=>$admin->cpu('comic','firstid'),'to'=>$admin->cpu('comic','lastid')),array('title'=>$this->lang('genform')));
    }
    function p_use($admin,$data=false) {
        $admin->readform($data,$this->mainfields());
        
        foreach ($data as $key => $value) $data[$key] = (int) $value;
        
        $comics = $admin->cpu('comic','get','range',$data['from'],$data['to']);
        foreach ($comics as $comic) $this->generate($comic);
        
        $admin->addgoodmessage($this->lang('done'));
        $admin->pass_d('use',$this->id);
    }
    
    
    function d_edit($admin,$data=false) {
        $this->settings = ($data?$data:$this->settings);
        $admin->genform($this->fields(),$this->settings);
    }
    
    function p_edit($admin,$data) {
        if (!$admin->readform($data,$this->fields())) return false;
        
        foreach ($data as $key => $value) $data[$key] = (int) $value;
        
        if ( ($data['quality'] < 1) || ($data['quality'] > 100) ) {
            $admin->adderror($this->lang('badquality'));
            return false;
        }
        
        $this->settings = $data;
        $this->save();
        return true;
    }
    
    
    
    function generate($comic) {
        $img = load_class('image');
        if ($img->load('.../img/comic/'.$comic['filename'])) {
            $width = $this->settings['width'];
            $height = $this->settings['height'];
            $img->resize(($width?$width:'inherit'),($height?$height:'inherit'));
            $img->render_jpeg('.../img/comic/t_'.$comic['id'].'.jpg',$this->settings['quality']);
            @chmod(makepath('.../img/comic/t_'.$comic['id'].'.jpg'),0666);
            imagedestroy($img->img);
            return true;
        }
        return false;
    }
    function remove($comic) {
        if ($file = load_file('.../img/comic/t_'.$comic['id'].'.jpg',true)) $file->delete();
    }
    
    
    
    function after_comic_add($comic) {$this->generate($comic);}
    function after_comic_edit($comic) {$this->generate($comic);}
    function after_comic_delete($comic) {$this->remove($comic);}
}
?>