array('modificar', 'cambiarPassword', 'twitter', 'twitter2'), 'users' => array('@'), ), array('deny', // deny all users 'users' => array('*'), ), ); } /** * Actualiza un usuario. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionModificar($id, $provider = '') { if ($id != Yii::app()->user->id) throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.')); if (($provider != '') && (!isset($_POST['Usuario']))) { switch ($provider) { case 'Twitter': case 'Facebook': case 'LinkedIn': $usuario = $this->loadModelwithSocialData($id, $provider); break; default: throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.')); } } else $usuario = $this->loadModel($id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($usuario); if (isset($_POST['Usuario'])) { $usuario->attributes = $_POST['Usuario']; $ficheroFotografia = CUploadedFile::getInstance($usuario, 'ficheroFotografia'); $quitarFotografia = Yii::app()->request->getParam('quitar_fotografia', '0'); if ($usuario->save()) { if (($quitarFotografia == '1') && ($usuario->fotografia->tieneFotografia())) $usuario->fotografia->eliminarFotografia(); if ($ficheroFotografia) $usuario->fotografia->guardarFotografia($ficheroFotografia); Yii::app()->user->setFlash('success', Yii::t('profind', 'Se ha actualizado el perfil')); $this->redirect(array('modificar', 'id' => $usuario->id)); } } $this->render('modificar', array( 'model' => $usuario, )); } public function loadModelwithSocialData($id, $provider) { $usuario = $this->loadModel($id); if (!Yii::app()->socialConnect->loadUserProfile($provider)) { throw new CHttpException( Yii::app()->socialConnect->errorCode, Yii::t('profind', Yii::app()->socialConnect->errorMessage) ); } $profile = Yii::app()->socialConnect->userProfile; //$usuario->email = $profile->email; <-- el email no lo cambio $usuario->nombre = $profile->firstName; $usuario->apellidos = $profile->lastName; $usuario->descripcion = $profile->description; switch ($provider) { case 'Twitter': $usuario->localidad = $profile->region; break; case 'Facebook': case 'LinkedIn': $usuario->localidad = $profile->city; break; } return $usuario; } /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = Usuario::model()->findByPk($id); if ($model === null) throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.')); return $model; } /** * Performs the AJAX validation. * @param CModel the model to be validated */ protected function performAjaxValidation($model) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'usuario-form') { echo CActiveForm::validate($model); Yii::app()->end(); } } }