/** * VISTA MIS DATOS * @return array|string|Response * @throws NotFoundHttpException * @throws \Exception */ public function run() { $user = Yii::$app->getUser(); $model = $this->findModelUsuario($user->id); $model->scenario = Usuarios::ESCENARIO_DATOS_PERFIL; if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } if ($model->load(Yii::$app->request->post())) { $post = Yii::$app->request->post('Usuarios'); $model->attributes = $post; if ($model->validate()) { if (!empty($post['clave_nueva'])) { $model->clave_nueva = $post['clave_nueva']; $model->clave = $model->clave_nueva; $model->setPassword($model->clave_nueva); $model->generateAuthKey(); } $model->save(false); // // $usuario = Usuarios::find()->where(['idusuario' => $model->idusuario])->one(); // $usuario->scenario = Usuarios::ESCENARIO_DATOS_PERFIL; // echo '<pre>';print_r($usuario->attributes);die(); // $usuario->attributes = $model->attributes; // $usuario->update(false); } if (!empty($model->imagen_nombre)) { $ruta = ImagenHelper::rutaImagenPerfil(); $imagen_actual = $ruta . $model->foto; $imagen_nueva = $model->idusuario . '_' . uniqid() . '.png'; $imagen_tmp_original = $ruta . str_replace(".", '-original.', $model->imagen_nombre); $imagen_tmp = $ruta . $model->imagen_nombre; $data = base64_decode($model->imagen_data); file_put_contents($ruta . $imagen_nueva, $data); if (file_exists($ruta)) { //actualizo foto nueva // $imgModel = Usuarios::find()->where(['idusuario' => $model->idusuario])->one(); // $imgModel->foto = $imagen_nueva; // $imgModel = Usuarios::find()->where(['idusuario' => $model->idusuario])->one(); $model->foto = $imagen_nueva; //elimino imagenes fisicas if ($model->update()) { if (file_exists($imagen_actual)) { unlink($imagen_actual); } if (file_exists($imagen_tmp)) { unlink($imagen_tmp); } if (file_exists($imagen_tmp_original)) { unlink($imagen_tmp_original); } } } } return $this->controller->redirect('mis-datos'); } return $this->controller->render('mis-datos', ['model' => $model]); }
/** * Elimina imagen de una sessión existente * METODO INTERNO PARA PUBLICAR UN ANUNCIOS * NOTA: Las imagenes se guardan en una sessión para su trato posterior * al publicar un anuncio */ public function run() { if (Yii::$app->request->isAjax && Yii::$app->request->post()) { $session = Yii::$app->session; $imagen = Yii::$app->request->post('imagen'); $idUsuario = Yii::$app->request->post('usuario'); $claveSession = ImagenHelper::SESSION_IMAGEN_ARTICULO . $idUsuario; //si agregan y eliminan if ($session->has($claveSession)) { $filesexistentes = $session->get($claveSession); $datosImagenes = ImagenHelper::eliminarInstanciaImagen($filesexistentes, $imagen); } else { $datosImagenes = ImagenHelper::eliminarInstanciaImagen(null, $imagen); } $session->set($claveSession, $datosImagenes); echo Json::encode($imagen); } }
/** * Agrega imagen a una sessión existente o crea una sessión * METODO INTERNO PARA PUBLICAR UN ANUNCIOS * NOTA: Las imagenes se guardan en una sessión para su trato posterior * al publicar un anuncio */ public function run() { $session = Yii::$app->session; $idUsuario = Yii::$app->user->getId(); $claveSession = ImagenHelper::SESSION_IMAGEN_ARTICULO . $idUsuario; $fileName = 'file'; if (isset($_FILES[$fileName])) { $file = UploadedFile::getInstanceByName($fileName); //existen imagenes if ($session->has($claveSession)) { $filesexistentes = $session->get($claveSession); $datosImagen = ImagenHelper::agregarInstanciaImagen($filesexistentes, $file); } else { $datosImagen = ImagenHelper::obtenerInstanciaImagen($file); } $session->set($claveSession, $datosImagen); echo Json::encode($file); } }
<label for="' . $index . '_' . $name . '">' . $label . '</label> </div>'; return $html; }, 'itemOptions' => ['labelOptions' => []]]; $inputCheckBoxListOpciones = ['style' => 'margin-top: 10px;', 'tag' => 'div', 'class' => 'control-group', 'item' => function ($index, $label, $name, $checked, $value) { $seleccion = $checked == true ? 'checked' : ''; $html = '<div class="checkbox checkbox-primary checkbox-inline"> <input id="' . $index . '_' . $name . '" type="checkbox" name="' . $name . '" value="' . $value . '" ' . $seleccion . '> <label for="' . $index . '_' . $name . '">' . $label . '</label> </div>'; return $html; }, 'itemOptions' => ['labelOptions' => []]]; $inputClase = 'form-control input-md'; $inputReadClase = 'form-control form-control-static'; $articulo = $model->cargarArticulo(); $listadoImagenes = Yii::$app->controller->action->id != 'publicar' ? ImagenHelper::listaImagenesString($articulo->archivos) : []; $ImagenPrincipal = Yii::$app->controller->action->id != 'publicar' ? $articulo->obtenerPosicionImagenPrincipal() : 0; $session = Yii::$app->session; ?> <?php $form = ActiveForm::begin(['id' => 'articulo', "enableClientValidation" => false, 'enableAjaxValidation' => false, 'validateOnChange' => false, 'options' => ['validateOnSubmit' => true, 'enctype' => 'multipart/form-data', 'class' => 'enviarForm form', 'role' => 'form'], 'fieldConfig' => ['template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 'hintOptions' => ['tag' => 'span'], 'errorOptions' => ['tag' => 'span'], 'horizontalCssClasses' => ['label' => 'col-sm-3', 'offset' => 'col-sm-offset-3', 'wrapper' => 'col-sm-9', 'error' => 'error-block', 'hint' => 'help-block']]]); ?> <!-- BEGIN CONTENIDO --> <div class="row"> <div class="col-md-12"> <div class="card-box"> <?php echo Html::activeHiddenInput($model, 'idarticulo');
<?php // Html::a(Html::img('/libreria/imagenes/defecto/logo.png'),Yii::$app->homeUrl, ['class'=>'logo']); ?> <?php echo Html::a(Yii::$app->params['app_nombre_html'], Yii::$app->urlManagerWeb->createUrl('/'), ['class' => 'logo']); ?> </div> <div class="m-t-40 card-box"> <div class="text-center"> <?php echo Html::tag('h4', Yii::t('app', 'Solicitud enviada'), ['class' => 'text-uppercase font-bold m-b-0']); ?> </div> <div class="panel-body text-center"> <?php echo Html::img(ImagenHelper::obtenerImagenDefecto('correo_confirmacion.png'), ['alt' => 'img', 'class' => 'thumb-lg m-t-20 center-block']); ?> <p class="text-muted font-13 m-t-20"><?php echo Yii::t('app', 'Nos alegra que desees unirte a esta gran comunidad.<br> Pronto recibirás en <b>{correo}</b> los pasos para que actives tu cuenta una vez validemos tus datos.', ['correo' => $model->correo]); ?> </p> </div> </div> <div class="row"> <div class="col-sm-12 text-center"> <p class="text-muted">Return to <a href="page-login.html" class="text-primary m-l-5"><b>Sign in</b></a></p> </div> </div>
private function setBaseUrl() { $this->baseUrl = ImagenHelper::baseUrl() . 'usuarios/'; }
<input id="' . $index . '_' . $name . '" type="radio" name="' . $name . '" value="' . $value . '" ' . $seleccion . '> <label for="' . $index . '_' . $name . '">' . $label . '</label> </div>'; return $html; }, 'itemOptions' => ['labelOptions' => []]]; $inputCheckBoxListOpciones = ['style' => 'margin-top: 10px;', 'tag' => 'div', 'class' => 'control-group', 'item' => function ($index, $label, $name, $checked, $value) { $seleccion = $checked == true ? 'checked' : ''; $html = '<div class="checkbox checkbox-primary checkbox-inline"> <input id="' . $index . '_' . $name . '" type="checkbox" name="' . $name . '" value="' . $value . '" ' . $seleccion . '> <label for="' . $index . '_' . $name . '">' . $label . '</label> </div>'; return $html; }, 'itemOptions' => ['labelOptions' => []]]; $inputClase = 'form-control input-md'; $inputReadClase = 'form-control form-control-static'; $listadoImagenes = Yii::$app->controller->action->id != 'publicar-articulo' ? ImagenHelper::listaImagenesString([]) : []; $ImagenPrincipal = Yii::$app->controller->action->id != 'publicar-articulo' ? $model->obtenerPosicionImagenPrincipal() : 0; $session = Yii::$app->session; ?> <?php $form = ActiveForm::begin(['id' => 'articulo', "enableClientValidation" => false, 'enableAjaxValidation' => true, 'validateOnChange' => false, 'options' => ['validateOnSubmit' => true, 'enctype' => 'multipart/form-data', 'class' => 'enviarForm form', 'role' => 'form'], 'fieldConfig' => ['template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 'hintOptions' => ['tag' => 'span'], 'errorOptions' => ['tag' => 'span'], 'horizontalCssClasses' => ['label' => 'col-sm-3', 'offset' => 'col-sm-offset-3', 'wrapper' => 'col-sm-9', 'error' => 'error-block', 'hint' => 'help-block']]]); ?> <!-- BEGIN CONTENIDO --> <div class="row"> <div class="col-md-12"> <div class="card-box"> <div class="row"> <div class="col-xs-12">
public function obtenerImagenPrincipalLg() { $imagen = $this->imagenPrincipal(); return ImagenHelper::obtenerImagenArticulo($imagen, ImagenHelper::SIZE_LG); }
public function obtenerImagenLg() { return ImagenHelper::obtenerImagenArticulo($this->nombre, ImagenHelper::SIZE_LG); }
/** * Obtiene la foto del propietario de un articulo * @return string */ public function imagenPropietario() { return ImagenHelper::obtenerImagenPerfil($this->foto); }
/** * Updates an existing Usuarios model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionActualizar($id) { $model = $this->findModel($id); $articulo = $this->findModel($id); $session = Yii::$app->session; $idUsuario = Yii::$app->user->getId(); $claveSession = ImagenHelper::SESSION_IMAGEN_ARTICULO . $idUsuario; $files = []; $imagenes = []; $imagenesEliminar = []; if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } if ($session->has($claveSession)) { $files = $session->get($claveSession); $imagenesAgregar = $files['file']; $imagenesEliminar = $files['delete']; } if ($model->load(Yii::$app->request->post())) { $imagenPrincipal = Yii::$app->request->post('dropzone_imagen_principal'); //actualizar imagen principal //guardamos la imagen principal if (isset($imagenPrincipal) || $imagenPrincipal == 0) { $imagenesArticulo = Archivos::findAll(['articulo' => $id]); $principal = ''; foreach ($imagenesArticulo as $key => $imagen) { if ($key == $imagenPrincipal) { $principal = $imagen->idarchivo; } } //si existe if (!empty($principal)) { //seteamos todas las imagenes a 0 Archivos::updateAll(['principal' => Archivos::NO_ES_PRINCIPAL], ['articulo' => $id]); //seteamos todas la principal a 1 $imagen = Archivos::findOne(['idarchivo' => $principal]); $imagen->principal = Archivos::ES_PRINCIPAL; $imagen->save(); } $session->remove($claveSession); Yii::$app->session->setFlash('toasts', 'Se ha actualizado el articulo con exito'); } if ($model->save() || !empty($files)) { //guardamos imagenes nuevas if (!empty($imagenesAgregar)) { foreach ($imagenesAgregar as $key => $file) { $file = (object) $file; // the path to save file, you can set an uploadPath $nombre = ImagenHelper::obtenerNombreArchivo(['usuario' => $idUsuario, 'articulo' => $model->idarticulo, 'imagen' => $file->name]); $archivo = new Archivos(); $archivo->usuario = $idUsuario; $archivo->articulo = $articulo->idarticulo; $archivo->nombre = $nombre; $archivo->tipo = $file->type; $archivo->peso = $file->size; $archivo->fechacreado = MetodosHelper::fechaHoy(); if ($archivo->save()) { file_put_contents(ImagenHelper::rutaImagenesArticulos() . $nombre, base64_decode($file->base64)); } } } //eliminamos imagenes if (!empty($imagenesEliminar)) { $listaImagenes = []; foreach ($model->archivos as $key => $imagen) { $listaImagenes[$key] = $imagen->nombre; } $resultado = array_diff($listaImagenes, $imagenesEliminar); if (empty($resultado)) { Archivos::deleteAll(['articulo' => $model->idarticulo, 'usuario' => $idUsuario]); } else { foreach ($listaImagenes as $nombre) { if (in_array($nombre, $imagenesEliminar)) { Archivos::deleteAll(['nombre' => $nombre, 'articulo' => $model->idarticulo, 'usuario' => $idUsuario]); ImagenHelper::eliminarImagen($nombre); } } } } $session->remove($claveSession); Yii::$app->session->setFlash('toasts', 'Se ha actualizado el articulo con exito'); //Yii::$app->session->setFlash('success', ['toast'=>'Se ha actualizado la categoria con exito'], true); return $this->redirect(['detalle', 'id' => $model->idarticulo]); } } $session->remove($claveSession); return $this->render('actualizar', ['model' => $model]); }
/** * Guarda imagen perfil * @param Usuarios $user * @throws \Exception */ private function guardarImagenPerfil(Usuarios $user) { $ruta = ImagenHelper::rutaImagenPerfil(); $tiene_foto = isset($user->foto) ? true : false; $imagen_actual = $ruta . $user->foto; $imagen_nueva = $user->idusuario . '_' . uniqid() . '.png'; $data = base64_decode($this->imagen); file_put_contents($ruta . $imagen_nueva, $data); if (file_exists($ruta)) { $user->foto = $imagen_nueva; //elimino imagenes fisicas antiguas if ($user->update()) { if ($tiene_foto & file_exists($imagen_actual)) { unlink($imagen_actual); } } } }
/** * Editar articulo existente * @return bool */ public function editar() { $idUsuario = Yii::$app->user->getId(); if ($this->validate()) { $model = $this->articulo; $model->nombre = ucfirst($this->nombre); $model->estado = $this->estado; $model->descripcion = ucfirst($this->descripcion); $model->categoria = $this->categoria; $model->precio = $this->precio; $model->transacciones = is_array($this->transacciones) ? implode(',', $this->transacciones) : Articulos::NO_ESPECIFICADO; // //$archivo = new Archivos(); if ($model->update(false)) { if (!empty($this->imagenes)) { foreach ($this->imagenes as $key => $file) { $file = (object) $file; // the path to save file, you can set an uploadPath $nombre = ImagenHelper::obtenerNombreArchivo(['usuario' => $idUsuario, 'articulo' => $model->idarticulo, 'imagen' => $file->name]); $archivo = new Archivos(); $archivo->usuario = $idUsuario; $archivo->articulo = $model->idarticulo; $archivo->nombre = $nombre; $archivo->tipo = $file->type; $archivo->peso = $file->size; $archivo->fechacreado = MetodosHelper::fechaHoy(); //guardamos la imagen principal $archivo->principal = count($this->imagenes) == 1 || $key == $this->principal ? 1 : 0; if ($archivo->save()) { file_put_contents(ImagenHelper::rutaImagenesArticulos() . $nombre, base64_decode($file->base64)); ImagenHelper::guardarImagenSize($nombre, 'articulos'); } } } return true; } else { return false; } } return false; }
</label>'; return $html; }, 'itemOptions' => ['labelOptions' => ['class' => 'radio-inline radio-styled']]]; $inputCheckBoxListOpciones = ['style' => 'margin-top: 10px;', 'tag' => 'div', 'item' => function ($index, $label, $name, $checked, $value) { $seleccion = $checked == true ? 'checked' : ''; $html = '<label class="checkbox-inline checkbox-styled"> <input type="checkbox" name="' . $name . '" value="' . $value . '" ' . $seleccion . '><span>' . $label . '</span> </label> '; return $html; }, 'itemOptions' => ['labelOptions' => ['class' => 'radio-inline radio-styled']]]; $inputClase = 'form-control input-md'; $inputReadClase = 'form-control form-control-static'; $avatar = ''; //$model->imagenCategoria(); $listadoImagenes = Yii::$app->controller->action->id != 'crear' ? ImagenHelper::listaImagenesString($model->archivos) : []; $ImagenPrincipal = Yii::$app->controller->action->id != 'crear' ? $model->obtenerPosicionImagenPrincipal() : 0; $session = Yii::$app->session; ?> <?php $form = ActiveForm::begin(['id' => 'articulo', "enableClientValidation" => false, 'enableAjaxValidation' => true, 'validateOnChange' => false, 'options' => ['validateOnSubmit' => true, 'enctype' => 'multipart/form-data', 'class' => 'enviarForm form', 'role' => 'form']]); ?> <!-- BEGIN CONTENIDO --> <div class="row"> <div class="col-lg-12"> <h4>Información General</h4> </div><!--end .col --> <div class="col-lg-3 col-md-4">
use yii\helpers\Url; use himiklab\thumbnail\EasyThumbnailImage; use frontend\assets\UsuarioAsset; use karpoff\icrop\CropImageUpload; use common\components\ImagenHelper; use common\extensions\cmsAB\mapaLocalizacion\MapLocalizacion; /* @var $this yii\web\View */ /* @var $model */ /* @var $searchModel common\models\UsuariosBuscador */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->registerJsFile('libreria/plugins/crop/cropper.js', ['depends' => [UsuarioAsset::className()]]); $this->registerJsFile('libreria/plugins/crop/main.js', ['depends' => [UsuarioAsset::className()]]); $this->title = Yii::t('app', 'Mi Perfil'); $this->params['breadcrumbs'][] = $this->title; $baseUrl = Yii::getAlias('@libreriaImg/'); $avatar = ImagenHelper::obtenerImagenPerfil($model->foto); $inputOpciones = ['template' => "{input}\n{label}\n{hint}\n{error}\n", 'options' => ['class' => 'input-field']]; $inputRadioListOpciones = ['tag' => 'div', 'class' => 'col-sm-6', 'item' => function ($index, $label, $name, $checked, $value) { $seleccion = $checked == true ? 'checked' : ''; $html = '<div class="radiobox checkbox-pink"> <input type="radio" name="' . $name . '" value="' . $value . '" ' . $seleccion . '> <label class="radio-styled">' . $label . '</label> </div>'; return $html; }, 'itemOptions' => ['labelOptions' => ['class' => 'radio-styled']]]; ?> <?php $identity = Yii::$app->getUser()->getIdentity(); if (isset($identity->perfil)) { VarDumper::dump($identity->perfil, 10, true);