Вход Регистрация
Файл: oc-admin/controller/settings/media.php
Строк: 223
<?php if ( ! defined('ABS_PATH')) exit('ABS_PATH is not loaded. Direct access is not allowed.');

/*
 * Copyright 2014 Osclass
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

    
class CAdminSettingsMedia extends AdminSecBaseModel
    
{
        function 
__construct()
        {
            
parent::__construct();
        }

        
//Business Layer...
        
function doModel()
        {
            switch(
$this->action) {
                case(
'media'):
                    
// calling the media view
                    
$max_upload   = (int)( ini_get('upload_max_filesize') );
                    
$max_post     = (int)( ini_get('post_max_size') );
                    
$memory_limit = (int)( ini_get('memory_limit') );
                    
$upload_mb    min($max_upload$max_post$memory_limit) * 1024;

                    
$this->_exportVariableToView('max_size_upload'$upload_mb);
                    
$this->doView('settings/media.php');
                break;
                case(
'media_post'):
                    
// updating the media config
                    
osc_csrf_check();
                    
$status 'ok';
                    
$error  '';

                    
$iUpdated          0;
                    
$maxSizeKb         Params::getParam('maxSizeKb');
                    
$dimThumbnail      strtolower(Params::getParam('dimThumbnail'));
                    
$dimPreview        strtolower(Params::getParam('dimPreview'));
                    
$dimNormal         strtolower(Params::getParam('dimNormal'));
                    
$keepOriginalImage Params::getParam('keep_original_image');
                    
$forceAspectImage  Params::getParam('force_aspect_image');
                    
$forceJPEG         Params::getParam('force_jpeg');
                    
$use_imagick       Params::getParam('use_imagick');
                    
$type_watermark    Params::getParam('watermark_type');
                    
$watermark_color   Params::getParam('watermark_text_color');
                    
$watermark_text    Params::getParam('watermark_text');

                    switch (
$type_watermark) {
                        case 
'none':
                            
$iUpdated += osc_set_preference('watermark_text_color''');
                            
$iUpdated += osc_set_preference('watermark_text''');
                            
$iUpdated += osc_set_preference('watermark_image''');
                        break;
                        case 
'text':
                            
$iUpdated += osc_set_preference('watermark_text_color'$watermark_color);
                            
$iUpdated += osc_set_preference('watermark_text'$watermark_text);
                            
$iUpdated += osc_set_preference('watermark_image''');
                            
$iUpdated += osc_set_preference('watermark_place'Params::getParam('watermark_text_place'));
                        break;
                        case 
'image':
                            
// upload image & move to path
                            
$watermark_file Params::getFiles('watermark_image');
                            if(
$watermark_file['tmp_name']!='' && $watermark_file['size']>0) {
                                if(
$watermark_file['error'] == UPLOAD_ERR_OK) {
                                    if(
$watermark_file['type']=='image/png') {
                                        
$tmpName $watermark_file['tmp_name'];
                                        
$path    osc_content_path().'uploads/watermark.png';
                                        if( 
move_uploaded_file($tmpName$path) ){
                                            
$iUpdated += osc_set_preference('watermark_image'$path);
                                        } else {
                                            
$status 'error';
                                            
$error .= _m('There was a problem uploading the watermark image')."<br />";
                                        }
                                    } else {
                                        
$status 'error';
                                        
$error .= _m('The watermark image has to be a .PNG file')."<br />";
                                    }
                                } else {
                                    
$status 'error';
                                    
$error .= _m('There was a problem uploading the watermark image')."<br />";
                                }
                            }
                            
$iUpdated += osc_set_preference('watermark_text_color''');
                            
$iUpdated += osc_set_preference('watermark_text''');
                            
$iUpdated += osc_set_preference('watermark_place'Params::getParam('watermark_image_place'));
                        break;
                        default:
                        break;
                    }

                    
// format parameters
                    
$maxSizeKb         trim(strip_tags($maxSizeKb));
                    
$dimThumbnail      trim(strip_tags($dimThumbnail));
                    
$dimPreview        trim(strip_tags($dimPreview));
                    
$dimNormal         trim(strip_tags($dimNormal));
                    
$keepOriginalImage = ($keepOriginalImage != '' true false);
                    
$forceAspectImage  = ($forceAspectImage != '' true false);
                    
$forceJPEG         = ($forceJPEG != '' true false);
                    
$use_imagick       = ($use_imagick != '' true false);

                    if(!
preg_match('|([0-9]+)x([0-9]+)|'$dimThumbnail$match)) {
                        
$dimThumbnail is_numeric($dimThumbnail)?$dimThumbnail."x".$dimThumbnail:"100x100";
                    }
                    if(!
preg_match('|([0-9]+)x([0-9]+)|'$dimPreview$match)) {
                        
$dimPreview is_numeric($dimPreview)?$dimPreview."x".$dimPreview:"100x100";
                    }
                    if(!
preg_match('|([0-9]+)x([0-9]+)|'$dimNormal$match)) {
                        
$dimNormal is_numeric($dimNormal)?$dimNormal."x".$dimNormal:"100x100";
                    }

                    
// is imagick extension loaded?
                    
if( !@extension_loaded('imagick') ) {
                        
$use_imagick false;
                    }

                    
// max size allowed by PHP configuration?
                    
$max_upload   = (int)( ini_get('upload_max_filesize') );
                    
$max_post     = (int)( ini_get('post_max_size') );
                    
$memory_limit = (int)( ini_get('memory_limit') );
                    
$upload_mb    min($max_upload$max_post$memory_limit) * 1024;

                    
// set maxSizeKB equals to PHP configuration if it's bigger
                    
if( $maxSizeKb $upload_mb ) {
                        
$status    'warning';
                        
$maxSizeKb $upload_mb;
                        
// flash message text warning
                        
$error     .= sprintf_m("You cannot set a maximum file size higher than the one allowed in the PHP configuration: <b>%d KB</b>"), $upload_mb );
                    }

                    
$iUpdated += osc_set_preference('maxSizeKb'$maxSizeKb);
                    
$iUpdated += osc_set_preference('dimThumbnail'$dimThumbnail);
                    
$iUpdated += osc_set_preference('dimPreview'$dimPreview);
                    
$iUpdated += osc_set_preference('dimNormal'$dimNormal);
                    
$iUpdated += osc_set_preference('keep_original_image'$keepOriginalImage);
                    
$iUpdated += osc_set_preference('force_aspect_image'$forceAspectImage);
                    
$iUpdated += osc_set_preference('force_jpeg'$forceJPEG);
                    
$iUpdated += osc_set_preference('use_imagick'$use_imagick);

                    if( 
$error != '' ) {
                        switch(
$status) {
                            case(
'error'):
                                
osc_add_flash_error_message($error'admin');
                            break;
                            case(
'warning'):
                                
osc_add_flash_warning_message($error'admin');
                            break;
                            default:
                                
osc_add_flash_ok_message($error'admin');
                            break;
                        }
                    } else {
                        
osc_add_flash_ok_message(_m('Media config has been updated'), 'admin');
                    }

                    
$this->redirectTo(osc_admin_base_url(true).'?page=settings&action=media');
                break;
                case(
'images_post'):
                    if( 
defined('DEMO') ) {
                        
osc_add_flash_warning_message_m("This action can't be done because it's a demo site"), 'admin');
                        
$this->redirectTo(osc_admin_base_url(true).'?page=settings&action=media');
                    }
                    
osc_csrf_check();

                    
$aResources ItemResource::newInstance()->getAllResources();
                    foreach(
$aResources as $resource) {
                        
osc_run_hook('regenerate_image'$resource);
                        if(
strpos($resource['s_content_type'], 'image')!==false) {
                            if(
file_exists(osc_base_path().$resource['s_path'].$resource['pk_i_id']."_original.".$resource['s_extension'])) {
                                
$image_tmp osc_base_path().$resource['s_path'].$resource['pk_i_id']."_original.".$resource['s_extension'];
                                
$use_original true;
                            } else if(
file_exists(osc_base_path().$resource['s_path'].$resource['pk_i_id'].".".$resource['s_extension'])) {
                                
$image_tmp osc_base_path().$resource['s_path'].$resource['pk_i_id'].".".$resource['s_extension'];
                                
$use_original false;
                            } else if(
file_exists(osc_base_path().$resource['s_path'].$resource['pk_i_id']."_preview.".$resource['s_extension'])) {
                                
$image_tmp osc_base_path().$resource['s_path'].$resource['pk_i_id']."_preview.".$resource['s_extension'];
                                
$use_original false;
                            } else {
                                
$use_original false;
                                continue;
                            };

                            
// Create normal size
                            
$path_normal $path osc_base_path().$resource['s_path'].$resource['pk_i_id'].'.'.$resource['s_extension'];
                            
$size explode('x'osc_normal_dimensions());
                            
$img ImageResizer::fromFile($image_tmp)->resizeTo($size[0], $size[1]);
                            if(
$use_original) {
                                if( 
osc_is_watermark_text() ) {
                                    
$img->doWatermarkText(osc_watermark_text(), osc_watermark_text_color());
                                } elseif ( 
osc_is_watermark_image() ){
                                    
$img->doWatermarkImage();
                                }
                            }
                            
$img->saveToFile($path);

                            
// Create preview
                            
$path osc_base_path().$resource['s_path'].$resource['pk_i_id'].'_preview.'.$resource['s_extension'];
                            
$size explode('x'osc_preview_dimensions());
                            
ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path);

                            
// Create thumbnail
                            
$path osc_base_path().$resource['s_path'].$resource['pk_i_id'].'_thumbnail.'.$resource['s_extension'];
                            
$size explode('x'osc_thumbnail_dimensions());
                            
ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path);

                            
osc_run_hook('regenerated_image'ItemResource::newInstance()->findByPrimaryKey($resource['pk_i_id']));
                        } else {
                            
// no es imagen o imagen sin extesión
                        
}

                    }

                    
osc_add_flash_ok_message_m('Re-generation complete'), 'admin');
                    
$this->redirectTo(osc_admin_base_url(true).'?page=settings&action=media');
                break;
            }
        }
    }

    
// EOF: ./oc-admin/controller/settings/media.php
Онлайн: 0
Реклама