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); $profile = Yii::app()->socialConnect->getUserProfile($provider); if ($twitter) { $usuario->email = $twitter['email']; $usuario->nombre = $twitter['displayName']; $usuario->apellidos = $twitter['displayName']; $usuario->descripcion = $twitter['photoURL']; } 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(); } } }