Вход Регистрация
Файл: adultscript-2.0.3-pro/files/mobile/components/photo_add.php
Строк: 75
<?php
defined
('_VALID') or die('Restricted Access!');
class 
VComponent_mobile_photo_add extends VComponent_mobile_photo
{
    private 
$pcfg;
    public function 
__construct()
    {
        
parent::__construct();
        
        
$this->pcfg    = VF::cfg('module.photo');
    }
    
    public function 
render()
    {
        
VAuth::check('Registered', MOBILE_URL.'/user/login/');
        
        
VLanguage::load('frontend.photo');

        if (!
$this->pcfg['upload_enabled']) {
              
$this->notfound(__('upload-disabled'));
        }
        
        
$album_id    = (VUri::request(2)) ? (int) VUri::request(2) : 0;
        
$user_id    = (int) $_SESSION['user_id'];
        
        
        
$errors     = array();
        
$messages   = array();
        
$warnings   = array();
        
$unique     = time().'0'.mt_rand();
        
$user_id    = (int) $_SESSION['user_id'];
        
$album      = array();
        
$album_id   = (int) VUri::request(2);

        
$this->db->query("SELECT album_id, title, locked
                          FROM #__photo_albums
                          WHERE album_id = "
.$album_id."
                          AND user_id = "
.$user_id."
                          AND status = '1'
                          LIMIT 1"
);
        if (
$this->db->affected_rows()) {
            
$album  = $this->db->fetch_assoc();
        }

        if (isset(
$_POST['upload-submitted'])) {
              
$filter        = VF::factory('filter');
              
$upload_id    = $filter->get('upload_id');

            
$tmp_dir    = TMP_DIR.'/uploads/'.$upload_id;
            if (!
file_exists($tmp_dir) or !is_dir($tmp_dir)) {
                
$errors[]   = 'Invalid tmp folder!?';
            }

            if (!
$files = VFolder::files($tmp_dir, true)) {
                
$errors[]   = 'Please selected at least one image for this album!';
            }
        
            if (!
$errors) {
                
$image      = VF::factory('image');
                
$images     = 0;
                
$ids        = array();
                foreach (
$files as $entry) {
                    if (
$entry) {
                        if (!
VFile::exists($entry)) {
                            continue;
                        }

                        
$size   = filesize($entry);
                        if (
$size > $this->pcfg['photo_max_size']*1024*1024) {
                            continue;
                        }
                
                        
$ext    = VFile::ext($entry);
                        if (!
in_array($ext, $this->pcfg['photo_allowed_ext'])) {
                            continue;
                        }
 
                        
$file   = array(
                            
'path'  => $entry,
                            
'name'  => VFile::name($entry),
                            
'size'  => $size,
                            
'ext'   => $ext
                        
);

                        if (!
$image->load($file['path'])) {
                            continue;
                        }
                        
                        
$this->db->query("INSERT INTO #__photo
                                          SET album_id = "
.$album_id.",
                                              ext = '"
.$this->db->escape($image->src['ext'])."',
                                              size = "
.$file['size'].",
                                              add_date = '"
.date('Y-m-d h:i:s')."',
                                              status = '0'"
);
                        if (!
$this->db->affected_rows()) {
                            continue;
                        }
                        
                        
$photo_id   = $this->db->get_last_insert_id('#__photo');
                        
$ext_orig   = $image->src['ext'];
                        
$dst_orig   = MEDIA_DIR.'/photos/orig/'.$photo_id.'.'.$ext_orig;
                        if (!
copy($file['path'], $dst_orig)) {
                            continue;
                        }
                        
                        
$dst            = MEDIA_DIR.'/photos/'.$photo_id.'.'.$image->src['ext'];
                        
$dst_thumb      = MEDIA_DIR.'/photos/thumbs/'.$photo_id.'.jpg';
                        
$dst_thumb_tmp  = TMP_DIR.'/images/'.$photo_id.'.thumb.jpg';
                        if (
$image->src['width'] < $this->pcfg['photo_width']) {
                            
copy($file['path'], $dst);
                        } else {
                            if (!
$image->resize($this->pcfg['photo_width'], $this->pcfg['photo_height'], 'MAX_WIDTH', $dst)) {
                                continue;
                            }
                        }
                        
                        if (!empty(
$this->pcfg['mobile'])) {
                            
$dst_mobile = MEDIA_DIR.'/photos/mobile/'.$photo_id.'.'.$image->src['ext'];
                            if (
$image->src['width'] < $this->pcfg['mobile_width']) {
                                
copy($file['path'], $dst_mobile);
                            } else {
                                if (!
$image->resize($this->pcfg['mobile_width'], $this->pcfg['mobile_height'], 'MAX_WIDTH', $dst_mobile)) {
                                    continue;
                                }
                            }
                        }
                        
                        
$thumb_width    = $this->pcfg['thumb_width']+30;
                        
$thumb_height   = $this->pcfg['thumb_height']+100;
                        
$image->set_option('jpeg_quality', 100);
                        if (!
$image->resize($thumb_width, $thumb_height, 'MAX_HEIGHT', $dst_thumb_tmp)) {
                            continue;
                        }
                        
                        
$image->clear();
                        
$image->load($dst_thumb_tmp);

                        if (!
$image->crop_from_center($this->pcfg['thumb_width'], $this->pcfg['thumb_height'], $dst_thumb)) {
                            continue;
                        }
                        
                        ++
$images;
                        
$ids[]  = $photo_id;

                        
$image->clear();

                        
VFile::delete($dst_thumb_tmp);
                    }
                }
                
                if (
$images === 0) {
                    
$errors[]   = __('add-failed');
                } else {
                    if (isset(
$tmp_dir)) {
                        
VFolder::delete($tmp_dir, true);
                    }
                
                    
$this->db->query("UPDATE #__photo_albums
                                      SET total_photos = total_photos+"
.$images."
                                      WHERE album_id = "
.$album_id."
                                      LIMIT 1"
);
                    
$this->db->query("UPDATE #__photo
                                      SET status = '1'
                                      WHERE album_id = "
.$album_id."
                                      AND photo_id IN ("
.implode(',', array_values($ids)).")");
                    
$messages[] = __('add-success');
                }
            }
        }
    
        
$this->tpl->menu        = 'photo';

        
$this->tpl->meta_title    = __('photo-add-meta-title', array($this->mcfg['site_name']));

        
$this->tpl->canonical    = BASE_URL.'/photo/add/'.$album_id.'/';

        
$this->tpl->errors        = $errors;
        
$this->tpl->messages    = $messages;
        
$this->tpl->warnings    = $warnings;
        
$this->tpl->pcfg        = $this->pcfg;
        
$this->tpl->unique        = $unique;
        
$this->tpl->album       = $album;
        
$this->tpl->load(array('header', 'photo_add', 'footer'));
        
$this->tpl->display();
    }    
}
Онлайн: 2
Реклама