public function actionCreatePhotobook()
 {
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     if (Yii::$app->user->isGuest) {
         return ['error' => ['msg' => Yii::t('app', 'Ошибка доступа')]];
     }
     $model = new PhotobookForm();
     $title_line_1 = Yii::$app->request->post('title_line_1', '');
     $title_line_2 = Yii::$app->request->post('title_line_2', '');
     $title_line_3 = Yii::$app->request->post('title_line_3', '');
     $title_line_4 = Yii::$app->request->post('title_line_4', '');
     $user_id = Yii::$app->user->identity->getId();
     $model->user_id = $user_id;
     $model->title_line_1 = $title_line_1;
     $model->title_line_2 = $title_line_2;
     $model->title_line_3 = $title_line_3;
     $model->title_line_4 = $title_line_4;
     $line_1 = !empty($model->title_line_1) ? $model->title_line_1 : ' ';
     $line_2 = !empty($model->title_line_2) ? $model->title_line_2 : ' ';
     $line_3 = !empty($model->title_line_3) ? $model->title_line_3 : ' ';
     $line_4 = !empty($model->title_line_3) ? $model->title_line_4 : ' ';
     $model->name = $line_1 . " " . $line_2 . " " . $line_3;
     $model->status = Photobook::STATUS_NEW;
     $model->data = '';
     $model->template = '';
     if (empty($model->photos)) {
         //Забиваем группа по умолчанию
         $model->photos = ['Утро невесты' => ['photos' => [], 'reversals' => 3], 'Прогулка' => ['photos' => [], 'reversals' => 3], 'Текст' => ['type' => 'text', 'photos' => [], 'texts' => [], 'reversals' => 3]];
     }
     $styles = Style::find()->where(['delete' => 0, 'status' => 1])->all();
     if (empty($styles)) {
         return ['error' => ['msg' => Yii::t('app', 'Не удалось создать новую фотокнигу. Так как нет ни одного опубликованого стиля.')]];
     }
     $model->style_id = $styles[0]->id;
     $covers = Cover::find()->where(['status' => 1])->all();
     if (empty($covers)) {
         return ['error' => ['msg' => Yii::t('app', 'Не удалось создать новую фотокнигу. Так как нет ни одной опубликованой обложки.')]];
     }
     $cover_index = 0;
     foreach ($covers as $key => $cover) {
         if ($cover->default == 1) {
             $cover_index = $key;
             break;
         }
     }
     $model->cover_id = $covers[$cover_index]->id;
     $photobook = $model->save();
     if ($photobook) {
         $result = $model->updateCoverWindowImageText('title_line_1', $title_line_1);
         Yii::getLogger()->log('updateCoverWindowImageText:' . print_r($result, true), YII_DEBUG);
         return ['response' => ['status' => true, 'redirect' => Url::toRoute(['photobooks/upload-photos', 'ref' => AlphaId::id($photobook->user_id), 'id' => AlphaId::id($photobook->id)])]];
     } else {
         return ['error' => ['msg' => Yii::t('app', 'Не удалось сохранить фотокнигу.')]];
     }
 }
 public function actionEdit()
 {
     $this->layout = 'default';
     $id = Yii::$app->request->get('id', -1);
     $cover = Cover::findOne(['id' => $id]);
     if (!$cover) {
         Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Обложка не найдена'));
         $this->redirect(Url::toRoute(['covers/index']));
     }
     $material_types = ['кожа' => 'кожа', 'лен' => 'лен'];
     $price_signs = ['=' => Yii::t('app', 'Заменить базовую цену'), '+' => Yii::t('app', 'Добавить к базовой цене'), '-' => Yii::t('app', 'Отнять от базовой цены')];
     return $this->render('edit', ['cover' => $cover, 'material_types' => $material_types, 'price_signs' => $price_signs]);
 }
 public function actionViewBook()
 {
     $this->layout = 'editor';
     $ref = Yii::$app->request->get('ref');
     $id = Yii::$app->request->get('id');
     $selected_style_id = Yii::$app->request->get('style_id', 0);
     if (!empty($ref) && !empty($id)) {
         $user_id = AlphaId::id($ref, true);
         $pb_id = AlphaId::id($id, true);
         if ($user_id != Yii::$app->user->identity->getId()) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Страница не найдена'));
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         }
         $model = new PhotobookForm();
         if (!$model->loadById($pb_id)) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Фотокнига не найдена'));
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         }
         if (empty($model->data['pages'])) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'В фотокниги нет ни одного разворота'));
             $this->redirect(Url::toRoute(['photobooks/index', 'status' => $model->status]));
             return;
         }
         $style_id = $model->style_id;
         $style = new StyleForm();
         if (!$style->loadById($style_id)) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Стиль для данной фотокниги не найден.'));
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         }
         $selected_cover = new CoverForm();
         if (!$selected_cover->loadById($model->cover_id)) {
             Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Обложка для данной фотокниги не найден.'));
             $this->redirect(Url::toRoute(['photobooks/index']));
             return;
         }
         $covers = Cover::find()->where(['status' => 1])->all();
         $new_covers = [];
         foreach ($covers as $key => $cover) {
             $new_covers[$cover->material_type][] = $cover;
         }
         $pages = $model->data['pages'];
         $base_price = (count($pages) - 2) * $style->price_spread;
         $cover_price_sign = $selected_cover->price_sign;
         $selected_cover->price;
         $total_price = $base_price;
         if ($cover_price_sign == "=") {
             $total_price = $selected_cover->price;
         } else {
             if ($cover_price_sign == "+") {
                 $total_price += $selected_cover->price;
             } else {
                 if ($cover_price_sign == "-") {
                     $total_price -= $selected_cover->price;
                 }
             }
         }
         $user = User::findOne(['id' => $user_id]);
         $total_price = CurrencyConvertor::conv($total_price, $user->default_currency);
         $curse = CurrencyConvertor::getCurse($user->default_currency);
         return $this->render('viewBook', ['model' => $model, 'ref' => $ref, 'id' => $id, 'pb_id' => $pb_id, 'user_id' => $user_id, 'pages' => $pages, 'style' => $style, 'selected_cover' => $selected_cover, 'covers' => $new_covers, 'total_price' => $total_price, 'default_currency' => $user->default_currency, 'cover_price_sign' => $cover_price_sign, 'cover_price' => $selected_cover->price, 'price_spread' => $style->price_spread, 'curse' => $curse]);
     } else {
         Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Страница не найдена'));
         $this->redirect(Url::toRoute(['photobooks/index']));
     }
 }
Exemple #4
0
 public function updateCoverWindowImageText($field_name, $value)
 {
     $this->{$field_name} = $value;
     /*if(!$this->save()){
     
                 return ['error'=>['msg'=>Yii::t('app', 'Ошибка записи в базу-данных')]];
             }*/
     //$this->loadById($this->id);
     $style = Style::findOne(['id' => $this->style_id]);
     if (empty($style)) {
         return ['error' => ['msg' => Yii::t('app', 'Стиль для фотокниги не найден')]];
     }
     $font = Font::findOne(['id' => $style->font_id]);
     if (empty($font)) {
         return ['error' => ['msg' => Yii::t('app', 'Шрифт для фотокниги не найден')]];
     }
     $cover = Cover::findOne(['id' => $this->cover_id]);
     if (empty($cover)) {
         return ['error' => ['msg' => Yii::t('app', 'Обложка для фотокниги не найден')]];
     }
     $font_path = UserUrl::font(false) . DIRECTORY_SEPARATOR . UserUrl::fontFile($font->file);
     $line_1 = !empty($this->title_line_1) ? $this->title_line_1 : ' ';
     $line_2 = !empty($this->title_line_2) ? $this->title_line_2 : ' ';
     $line_3 = !empty($this->title_line_3) ? $this->title_line_3 : ' ';
     $line_4 = !empty($this->title_line_3) ? $this->title_line_4 : ' ';
     $this->name = $line_1 . " " . $line_2 . " " . $line_3;
     $this->save();
     $text = $line_1 . "\n" . $line_2 . "\n" . $line_3;
     $text_image_content = Utils::makeTextImage($text, $cover->window_width, $cover->window_height, '#000000', $font_path, 2, 72);
     $text_image_path = UserUrl::photobookWindowText(false, $this->id, $this->user_id) . DIRECTORY_SEPARATOR . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     $text_image_url = UserUrl::photobookWindowText(true, $this->id, $this->user_id) . "/" . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     $user_pb_path = UserUrl::photobook(false, $this->id, $this->user_id);
     if (file_exists($user_pb_path)) {
         Yii::getLogger()->log('updateCoverWindowImageText exists user_pb_path:' . $user_pb_path, YII_DEBUG);
     } else {
         Yii::getLogger()->log('updateCoverWindowImageText NOT exists user_pb_path:' . $user_pb_path, YII_DEBUG);
     }
     // UserUrl::createNonexistentDirInPath(UserUrl::photobookWindowText(, 'pb'.DIRECTORY_SEPARATOR.$photobook_id)
     file_put_contents($text_image_path, $text_image_content);
     $file_tmp = new UploadedFile();
     $file_tmp->tempName = $text_image_path;
     $name = AlphaId::id($this->user_id) . '/pb/' . AlphaId::id($this->id) . '/window_text/' . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     Yii::$app->resourceManager->save($file_tmp, $name);
     unlink($text_image_path);
     $tracing_text = $line_1 . "\n" . $line_2 . "\n" . $line_3 . "\n" . " " . "\n" . " " . "\n" . " " . "\n" . " " . "\n" . " " . $line_4;
     $tracing_text_image_content = Utils::makeTextImage($tracing_text, 350, 250, '#000000', $font_path, 15, 72);
     $tracing_text_image_path = UserUrl::photobookTracingText(false, $this->id, $this->user_id) . DIRECTORY_SEPARATOR . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     $tracing_text_image_url = UserUrl::photobookTracingText(true, $this->id, $this->user_id) . DIRECTORY_SEPARATOR . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     file_put_contents($tracing_text_image_path, $tracing_text_image_content);
     $file_tmp = new UploadedFile();
     $file_tmp->tempName = $tracing_text_image_path;
     $name = AlphaId::id($this->user_id) . '/pb/' . AlphaId::id($this->id) . '/tracing/' . UserUrl::imageFile($this->id, UserUrl::IMAGE_ORIGINAL, 'png');
     Yii::$app->resourceManager->save($file_tmp, $name);
     unlink($tracing_text_image_path);
     return ['response' => ['status' => true, 'value' => $value, 'text_image_url' => $text_image_url, 'tracing_text_image_url' => $tracing_text_image_url, 'window_offset_x' => $cover->window_offset_x, 'window_offset_y' => $cover->window_offset_y, 'window_width' => $cover->window_width, 'window_height' => $cover->window_height, 'font_path' => $font_path, 'text' => $text, 'name' => $this->name]];
 }
Exemple #5
0
 public function save()
 {
     //Yii::getLogger()->log('start save photobook:'.$this->id, YII_DEBUG);
     $cover = Cover::findOne(['id' => $this->id]);
     if (empty($cover)) {
         $cover = new Cover();
         /*
         *
         *
         *
             public $id = null;
         
             public $name = 'Новая  обложка';
         
             public $material_type = "кожа";
         
             public $padded_cover='style_default';
         
             public $cover_front='style_default';
         
             public $cover_back='style_default';
         
             public $thumb='style_default';
         
             public $price=0.0;
         
             public $price_sign="+";
         
         
             public $status = Cover::STATUS_UNPUBLISHED;
         
         
             public $default=0;
         
             public $window_offset_x=0.0;
             public $window_offset_y=0.0;
         
             public $window_width=0.0;
             public $window_height=0.0;
         */
         $cover->name = $this->name;
         $cover->material_type = $this->material_type;
         $cover->padded_cover = $this->padded_cover;
         $cover->cover_front = $this->cover_front;
         $cover->cover_back = $this->cover_back;
         $cover->thumb = $this->thumb;
         $cover->price = $this->price;
         $cover->price_sign = $this->price_sign;
         $cover->status = $this->status;
         $cover->default = $this->default;
         $cover->window_offset_x = $this->window_offset_x;
         $cover->window_offset_y = $this->window_offset_y;
         $cover->window_width = $this->window_width;
         $cover->window_height = $this->window_height;
         Yii::getLogger()->log('save:', YII_DEBUG);
         if ($cover->save()) {
             $this->id = $cover->id;
             return $cover;
         } else {
             Yii::getLogger()->log('save error', YII_DEBUG);
         }
     } else {
         $cover->name = $this->name;
         $cover->material_type = $this->material_type;
         $cover->padded_cover = $this->padded_cover;
         $cover->cover_front = $this->cover_front;
         $cover->cover_back = $this->cover_back;
         $cover->thumb = $this->thumb;
         $cover->price = $this->price;
         $cover->price_sign = $this->price_sign;
         $cover->status = $this->status;
         $cover->default = $this->default;
         $cover->window_offset_x = $this->window_offset_x;
         $cover->window_offset_y = $this->window_offset_y;
         $cover->window_width = $this->window_width;
         $cover->window_height = $this->window_height;
         Yii::getLogger()->log('update:', YII_DEBUG);
         if ($cover->update()) {
             return $cover;
         } else {
             Yii::getLogger()->log('update error:' . print_r($cover, true), YII_DEBUG);
         }
     }
     return null;
 }