Вход Регистрация
Файл: core/classes/upload_photo.class.php
Строк: 97
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.10                               //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2012                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/

class cmsUploadPhoto {

    private static 
$instance;

    public 
$upload_dir    = '';            // директория загрузки
    
public $filename      = '';            // имя файла
    
public $small_size_w  = 96;            // ширина миниатюры
    
public $small_size_h  = '';            // высота миниатюры
    
public $medium_size_w = 480;        // ширина среднего изображения
    
public $medium_size_h = '';            // высота среднего изображения
    
public $thumbsqr      = true;        // квадратное изображение, да по умолчанию
    
public $is_watermark  = true;        // накладывать ватермарк, да по умолчанию
    
public $is_saveorig   = 0;            // сохранять оригинал фото, нет по умолчанию
    
public $dir_small     = 'small/';    // директория загрузки миниатюры
    
public $dir_medium    = 'medium/';    // директория загрузки среднего изображения
    
public $only_medium   = false;        // загружать только среднее изображение, нет по умолчанию
    
public $input_name    = 'Filedata';    // название поля загрузки файла

// ============================================================================ //
// ============================================================================ //

    
private function __construct(){}

    private function 
__clone() {}

    public static function 
getInstance() {
        if (
self::$instance === null) {
            
self::$instance = new self;
        }
        return 
self::$instance;
    }

// ============================================================================ //
    /**
     * Загружает фото файл
     * @return array $file (filename, realfile)
     */
    
public function uploadPhoto($old_file=''){

        
// если каталог загрузки не определен, возвращаем ложь
        
if (!$this->upload_dir) { return false; }

        if (!empty(
$_FILES[$this->input_name]['name'])){

            
cmsCore::includeGraphics();

            
$input_name = mb_strtolower(
                            
preg_replace('/[^a-zA-Zа-яёЁА-Я0-9.-_]/ui', '',
                                    
mb_substr(basename(strval($_FILES[$this->input_name]['name'])), 0, 160)));
            
// расширение
            
$ext = mb_strtolower(pathinfo($input_name, PATHINFO_EXTENSION));
            
// имя файла без расширения
            
$realfile = str_replace('.'.$ext, '', $input_name);

            if (!
in_array($ext, array('jpg','jpeg','gif','png','bmp'))) { return false; }

            
$this->filename        = $this->filename ? $this->filename : md5(time().$realfile).'.'.$ext;

            
$uploadphoto            = $this->upload_dir . $this->filename;
            
$uploadthumb['small']  = $this->upload_dir . $this->dir_small . $this->filename;
            
$uploadthumb['medium'] = $this->upload_dir . $this->dir_medium . $this->filename;

            
$uploadphoto            = $this->upload_dir . $this->filename;

            
$source                   = $_FILES[$this->input_name]['tmp_name'];
            
$errorCode               = $_FILES[$this->input_name]['error'];

            if (
cmsCore::moveUploadedFile($source, $uploadphoto, $errorCode)) {

                
// удаляем предыдущий файл если необходимо
                
$this->deletePhotoFile($old_file);

                if (!
$this->isImage($uploadphoto)){
                    
$this->deletePhotoFile($this->filename);
                    return 
false;
                }

                if (!
$this->small_size_h) { $this->small_size_h = $this->small_size_w; }
                if (!
$this->medium_size_h) { $this->medium_size_h = $this->medium_size_w; }

                
// Гененрируем маленькое и среднее изображения
                
if(!$this->only_medium){
                    if(!
is_dir($this->upload_dir . $this->dir_small)) { @mkdir($this->upload_dir . $this->dir_small); }
                    @
img_resize($uploadphoto, $uploadthumb['small'], $this->small_size_w, $this->small_size_h, $this->thumbsqr);
                }
                if(!
is_dir($this->upload_dir . $this->dir_medium)) { @mkdir($this->upload_dir . $this->dir_medium); }
                @
img_resize($uploadphoto, $uploadthumb['medium'], $this->medium_size_w, $this->medium_size_h, false, false);

                
// Накладывать ватермарк
                
if($this->is_watermark) { @img_add_watermark($uploadthumb['medium']); }

                
// сохранять оригинал
                
if(!$this->is_saveorig) { @unlink($uploadphoto); } elseif($this->is_watermark) { @img_add_watermark($uploadphoto); }

                
$file['filename'] = $this->filename;

                
$file['realfile'] = $realfile;


            } else {

                return 
false;

            }


        } else {

            return 
false;

        }

        return 
$file;

    }
// ============================================================================ //
    
public function isImage($src){

        
$size = getimagesize($src);

        if (
$size === false) return false;

        return 
true;

    }
// ============================================================================ //
    /**
     * Удаляет файл фото с папок загрузки
     * @return bool
     */
    
public function deletePhotoFile($file=''){

        if (!(
$file && $this->upload_dir)) { return false; }

        @
chmod($this->upload_dir . $file, 0777);
        @
unlink($this->upload_dir . $file);
        @
chmod($this->upload_dir . $this->dir_small . $file, 0777);
        @
unlink($this->upload_dir . $this->dir_small . $file);
        @
chmod($this->upload_dir . $this->dir_medium . $file, 0777);
        @
unlink($this->upload_dir . $this->dir_medium . $file);

        return 
true;

    }
// ============================================================================ //

}
?>
Онлайн: 0
Реклама