public function actionElement($param)
 {
     //разбираем URL
     $paramArr = explode("/", $param);
     $url = array_pop($paramArr);
     if ($model = CatalogRubrics::model()->find('url LIKE ("' . $url . '")')) {
         //Это раздел - выводим список
         $this->actionIndex($model);
         exit;
     }
     //Это карточка товара
     if (!($model = CatalogElements::model()->find('url LIKE "' . $url . '" OR id = ' . (int) $url))) {
         throw new CHttpException(404, 'The page can not be found.');
     }
     $this->setSEOData($model);
     //$modelRubric = CatalogRubrics::model()->findByPk($model->parent_id);
     if (!$model) {
         throw new CHttpException(404, 'The page can not be found.');
     }
     $modelChars = CatalogChars::model()->findAll('parent_id=' . $model->id . ' AND status = 1');
     $data['modelChars'] = $modelChars;
     $data['model'] = $model;
     $data['modelImages'] = CatalogElementsImages::model()->findAll('elements_id = ' . $model->id);
     $this->render('show', $data);
 }
 public function actionDeleteimages($id)
 {
     if ($model = CatalogElementsImages::model()->findByPk((int) $id)) {
         $id = $model->elements_id;
         foreach (array('admin', 'small', 'medium', 'large') as $name) {
             $url_to_file = YiiBase::getPathOfAlias('webroot') . '/../uploads/filestorage/catalog/elements/' . $name . '-' . $model->image_name . '.' . $model->image;
             if (file_exists($url_to_file)) {
                 unlink($url_to_file);
             }
         }
         $model->delete();
     }
     $this->redirect(array('updateproduct', 'id' => $id));
 }
Example #3
0
        margin-left: -10px;
        margin-top: -10px;
        position: absolute;
    }
</style>

    <div class="control-group">
        <?php 
echo CHtml::activeLabel($model, 'imagefiles');
?>
        <div class="controls" style="margin-top: 15px">
            <?php 
if (!$model->isNewRecord) {
    ?>
                <?php 
    foreach (CatalogElementsImages::model()->findAll('elements_id = ' . $model->id) as $data) {
        ?>
                    <div style="margin-bottom: 15px;">
                        <?php 
        echo CHtml::link(CHtml::image($data->getImageLink('admin', true), $data->image_name . '.' . $data->image), $data->getImageLink('', true), array('target' => '_blank'));
        ?>
                        <?php 
        echo CHtml::link('X', Yii::app()->urlManager->createUrl('/catalog/catalog/deleteimages', array('id' => $data->id)), array('class' => 'btn-mini deleteBlock'));
        ?>
                        <span><?php 
        echo $data->image_name . '.' . $data->image;
        ?>
</span>
                    </div>
                <?php 
    }
 /**
  * Создает изображения для  загруженых дополнительных изображений (мультизагрузка) в каталоге товаров(элементы)
  * @param null $id_element_model
  * @param string $driver
  * @return bool
  */
 public function chgImgagesCatalogModel($id_element_model = null, $driver = 'GD')
 {
     $filepatch = '../uploads/filestorage/catalog/elements/';
     $model = SiteModuleSettings::model()->find('site_module_id = 4');
     set_time_limit(0);
     $param = array();
     $param['small'] = array('coords' => $model->e_cover_small, 'crop' => $model->e_cover_small_crop, 'color' => $model->e_small_color);
     $param['medium'] = array('coords' => $model->e_cover_medium, 'crop' => $model->e_cover_medium_crop, 'color' => $model->e_medium_color);
     $param['large'] = array('coords' => $model->e_cover_large, 'crop' => $model->e_cover_large_crop, 'color' => $model->e_large_color);
     $param['admin'] = array('coords' => '100x100', 'crop' => 'Resize', 'color' => 'ffffff');
     foreach (CatalogElementsImages::model()->findAll(!empty($id_element_model) ? 'elements_id = ' . $id_element_model : '') as $dataModel) {
         foreach ($param as $name => $data) {
             if (!file_exists($filepatch . $dataModel->image_name . '.' . $dataModel->image)) {
                 continue;
             }
             $image = new EasyImage($filepatch . $dataModel->image_name . '.' . $dataModel->image, $driver);
             //$image = new EasyImage($fileOrigin, 'Imagick');  - для Imagic
             //Накладываем возяной знак
             $watermark = YiiBase::getPathOfAlias('webroot') . '/../uploads/filestorage/catalog/watermark.png';
             if ($model->watermark_type == 1 && file_exists($watermark) && $name != 'admin') {
                 $opacity = 20;
                 $watermark_pos = $model->watermark_pos;
                 //Получаем размеры водяного знака
                 $mark = new EasyImage($watermark);
                 //Позиции водной марки
                 $sizeWm = getimagesize($watermark);
                 $size = getimagesize($filepatch . $dataModel->image_name . '.' . $dataModel->image);
                 switch ($watermark_pos) {
                     case 1:
                         //Замостить
                         for ($y_i = 0; $y_i < $size[1]; $y_i = $y_i + $sizeWm[1]) {
                             for ($x_i = 0; $x_i < $size[0]; $x_i = $x_i + $sizeWm[0]) {
                                 $image->watermark($mark, $x_i, $y_i, $opacity);
                             }
                         }
                         break;
                     case 2:
                         //Изображение в нижнем левом углу
                         $x_i = 0;
                         $y_i = $size[1] - $sizeWm[1];
                         $image->watermark($mark, $x_i, $y_i, $opacity);
                         break;
                     case 3:
                         //Изображение внизу по центру
                         $x_i = $size[0] / 2 - $sizeWm[0] / 2;
                         $y_i = $size[1] - $sizeWm[1];
                         $image->watermark($mark, $x_i, $y_i, $opacity);
                         break;
                     case 4:
                         //Изображение в центре
                         //$x_i =($x/2)-($sizeWm[0]/2);
                         $x_i = $size[0] / 2 - $sizeWm[0] / 2;
                         $y_i = $size[1] / 2 - $sizeWm[1] / 2;
                         $image->watermark($mark, $x_i, $y_i, $opacity);
                         break;
                     case 5:
                         //Изображение в левом верхнем углу
                         $image->watermark($mark, 0, 0, $opacity);
                         break;
                     case 6:
                         //Изображение в нижнем правом углу
                         $x_i = $size[0] - $sizeWm[0];
                         $y_i = $size[1] - $sizeWm[1];
                         $image->watermark($mark, $x_i, $y_i, $opacity);
                         break;
                     default:
                         $image->watermark($mark, 0, 0, $opacity);
                 }
             }
             $coords = explode("x", strtolower($data['coords']));
             $x = $coords[0];
             $y = $coords[1];
             switch ($data['crop']) {
                 case 'Resize':
                     $image->resize($x, $y, EasyImage::RESIZE_AUTO);
                     break;
                 case 'horResize':
                     $image->resize($x, $y, EasyImage::RESIZE_WIDTH);
                     break;
                 case 'verResize':
                     $image->resize($x, $y, EasyImage::RESIZE_HEIGHT);
                     break;
                 case 'insertResize':
                     $image->resize($x, $y, EasyImage::RESIZE_AUTO);
                     $image->background('#' . str_replace("#", "", $data['color']), 100);
                     break;
                 case 'exactResize':
                     $image->crop($x, $y);
                     break;
                 default:
                     $image->resize($x, $y, EasyImage::RESIZE_AUTO);
             }
             //$filepatch.$dataModel->image_name.'.'.$dataModel->image
             $image->save($filepatch . $name . '-' . $dataModel->image_name . '.' . $dataModel->image);
         }
     }
     return true;
 }