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

class cmsUploadPhoto {

    private static 
$instance;

    public 
$upload_dir    = '';            // директория загрузки
    
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 $is_circle     = false;        // скруглять уголки, нет по умолчанию
    
public $only_medium   = false;        // загружать только среднее изображение, нет по умолчанию

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

    
private function __construct(){
        
$this->inDB = cmsDatabase::getInstance();
    }

    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; }

        
$inCore = cmsCore::getInstance();

        if (
$_FILES['Filedata']['name']){

            
$inCore->includeGraphics();

            
$realfile     = $this->inDB->escape_string($_FILES['Filedata']['name']);
        
            
$path_parts = pathinfo($realfile);
            
$ext        = strtolower($path_parts['extension']);
            
            
// убираем расширение файла вместе с точкой
            
$realfile = substr($realfile, 0, strrpos($realfile, '.'));
        
            if (
$ext != 'jpg' && $ext != 'jpeg' && $ext != 'gif' && $ext != 'png' && $ext != 'bmp') { return false; }

            
$filename                = md5(time().$realfile).'.jpg';                    
        
            
$uploadfile               = $this->upload_dir . $realfile;
            
$uploadphoto            = $this->upload_dir . $filename;
            
$uploadthumb['small']  = $this->upload_dir . $this->dir_small . $filename;
            
$uploadthumb['medium'] = $this->upload_dir . $this->dir_medium . $filename;
            
            
$uploadphoto            = $this->upload_dir . $filename;
        
            
$source                   = $_FILES['Filedata']['tmp_name'];
            
$errorCode               = $_FILES['Filedata']['error'];
        
            if (
$inCore->moveUploadedFile($source, $uploadphoto, $errorCode)) {
                
                
// удаляем предыдущий файл если необходимо
                
$this->deletePhotoFile($old_file);
                
                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){
                    @
img_resize($uploadphoto, $uploadthumb['small'], $this->small_size_w, $this->small_size_h, $this->thumbsqr);
                }
                @
img_resize($uploadphoto, $uploadthumb['medium'], $this->medium_size_w, $this->medium_size_h, false, false);

                
// Скруглять уголки
                
if($this->is_circle) { @img_circle($uploadthumb['small'],7); }

                
// Накладывать ватермарк
                
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'] = $filename;

                
$realfile_1251    = iconv('utf-8', 'cp1251', $realfile);
                
$file['realfile'] = $realfile_1251 ? $realfile_1251 : $realfile;
        
        
            } else {
        
                return 
false;
                
            }


        } else {
        
            return 
false;
            
        }

        return 
$file;

    }

// ============================================================================ //
// ============================================================================ //
    /**
     * Удаляет файл фото с папок загрузки
     * @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
Реклама