array('modificar'), 'users' => array('@'), 'expression' => 'Yii::app()->user->esCoordinador', ), array('deny', // deny all users 'users' => array('*'), ), ); } public function actionModificar($id) { Yii::trace('Ver/modificar la subscripción del usuario', 'application.controllers.SubscripcionController'); if ($id != Yii::app()->user->subscripcion->id) throw new CHttpException(401, Yii::t('profind', 'Acceso no autorizado.')); $subscripcion = $this->loadModel($id); $criterial = new CDbCriteria(); $criterial->order = 'tipo DESC, id'; $productos = Producto::model()->findAll($criterial); if (isset($_POST['Subscripcion'])) { $subscripcion->attributes = $_POST['Subscripcion']; if ($subscripcion->save()) { Yii::trace('Se ha modificado la subscripción del usuario', 'application.controllers.UsuarioController'); EMail::enviarNotificacionCambioProducto(Yii::app()->user->email, $subscripcion->producto->id); Yii::app()->user->setFlash('success', Yii::t('profind', 'Se ha actualizado su producto')); $this->redirect(array('modificar', 'id' => $id)); } } $this->render('index', array( 'subscripcion' => $subscripcion, 'productos' => $productos, )); } /** * 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 = Subscripcion::model()->findByPk($id); if ($model === null) throw new CHttpException(404, Yii::t('profind', 'La página solicitada no existe.')); return $model; } }