/** * Suceso producido cuando el usuario cambia de rango. * @param array $suceso Datos del suceso. * @return array */ protected static function suceso_usuario_cambio_rango($suceso) { // Verifico si fui yo. if ($suceso['objeto_id'] != Usuario::$usuario_id) { return NULL; } // Cargo datos del usuario. $model_usuario = new Model_Usuario((int) $suceso['objeto_id']); // Cargo el rango nuevo. $model_rango = new Model_Usuario_Rango((int) $suceso['objeto_id1']); // Cargo el moderador. $model_moderador = new Model_Usuario((int) $suceso['objeto_id2']); return array('usuario' => $model_usuario->as_array(), 'rango' => $model_rango->as_array(), 'moderador' => $model_moderador->as_array()); }
/** * Portada de las configuraciones. */ public function action_index() { // Cargamos la vista. $vista = View::factory('admin/configuracion/index'); // Cargamos las configuraciones. //TODO: Implementar sistema más flexible de carga y edición. $model_configuracion = new Model_Configuracion(); // Cargamos los datos iniciales. $vista->assign('nombre', $model_configuracion->get('nombre', 'Marifa')); $vista->assign('error_nombre', FALSE); $vista->assign('success_nombre', FALSE); $vista->assign('descripcion', $model_configuracion->get('descripcion', 'Tu comunidad de forma simple')); $vista->assign('error_descripcion', FALSE); $vista->assign('success_descripcion', FALSE); $vista->assign('registro', (int) $model_configuracion->get('registro', 1)); $vista->assign('error_registro', FALSE); $vista->assign('success_registro', FALSE); $vista->assign('activacion_usuario', (int) $model_configuracion->get('activacion_usuario', 1)); $vista->assign('error_activacion_usuario', FALSE); $vista->assign('success_activacion_usuario', FALSE); $vista->assign('rango_defecto', (int) $model_configuracion->get('rango_defecto', 3)); $vista->assign('error_rango_defecto', FALSE); $vista->assign('success_rango_defecto', FALSE); $vista->assign('elementos_pagina', (int) $model_configuracion->get('elementos_pagina', 20)); $vista->assign('error_elementos_pagina', FALSE); $vista->assign('success_elementos_pagina', FALSE); // Cargo listado rangos. $model_rangos = new Model_Usuario_Rango(); $vista->assign('rangos_permitidos', $model_rangos->to_list()); if (Request::method() == 'POST') { // Verifico el nombre. if (isset($_POST['nombre'])) { // Limpio el valor. $nombre = preg_replace('/\\s+/', ' ', trim($_POST['nombre'])); // Seteo el nuevo valor a la vista. $vista->assign('nombre', $nombre); // Verifico el contenido. if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{2,20}$/iD', $nombre)) { $vista->assign('error_nombre', 'El nombre debe tener entre 2 y 20 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\'); } else { if ($nombre !== $model_configuracion->get('nombre', NULL)) { $model_configuracion->nombre = $nombre; $vista->assign('success_nombre', 'El nombre se ha actualizado correctamente.'); } } } // Verifico la descripción. if (isset($_POST['descripcion'])) { // Limpio el valor. $descripcion = preg_replace('/\\s+/', ' ', trim($_POST['descripcion'])); // Seteo el nuevo valor a la vista. $vista->assign('descripcion', $descripcion); // Verifico el contenido. if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{5,30}$/iD', $descripcion)) { $vista->assign('error_descripcion', 'La descripción debe tener entre 5 y 30 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\'); } else { if ($descripcion !== $model_configuracion->get('descripcion', NULL)) { $model_configuracion->descripcion = $descripcion; $vista->assign('success_descripcion', 'La descripción se ha actualizado correctamente.'); } } } // Verifico el registro. if (isset($_POST['registro'])) { // Limpio el valor. $registro = (bool) $_POST['registro']; // Seteo el nuevo valor a la vista. $vista->assign('registro', $registro); // Actualizo el valor. $actual = $model_configuracion->get('registro', NULL); if ($actual === NULL || $registro !== (bool) $actual) { $model_configuracion->registro = $registro; $vista->assign('success_registro', 'El registro se ha editado correctamente.'); } } // Verifico como se activan los usuarios. if (isset($_POST['activacion_usuario'])) { // Limpio el valor. $activacion_usuario = (int) $_POST['activacion_usuario']; // Seteo el nuevo valor a la vista. $vista->assign('activacion_usuario', $activacion_usuario); // Verifico el valor. if ($registro == 0 || $registro == 1 || $registro == 0) { // Actualizo el valor. $actual = $model_configuracion->get('activacion_usuario', NULL); if ($actual === NULL || $activacion_usuario !== (int) $actual) { $model_configuracion->activacion_usuario = $activacion_usuario; $vista->assign('success_activacion_usuario', 'La forma de activación se ha actualizado correctamente.'); } } else { $vista->assign('error_activacion_usuario', 'La forma de activación seleccionada no es válida.'); } } // Verifico rango por defecto. if (isset($_POST['rango_defecto'])) { // Limpio el valor. $rango_defecto = (int) $_POST['rango_defecto']; // Seteo el nuevo valor a la vista. $vista->assign('rango_defecto', $rango_defecto); // Verifico el valor. if (in_array($rango_defecto, array_keys($model_rangos->to_list()))) { // Actualizo el valor. $actual = $model_configuracion->get('rango_defecto', NULL); if ($actual === NULL || $rango_defecto !== (int) $actual) { $model_configuracion->rango_defecto = $rango_defecto; $vista->assign('success_rango_defecto', 'Se ha actualizado el rango para los usuarios por defecto.'); } } else { $vista->assign('error_rango_defecto', 'El rango seleccionado no es correcto.'); } } // Verifico como se activan los usuarios. if (isset($_POST['elementos_pagina'])) { // Limpio el valor. $elementos_pagina = (int) $_POST['elementos_pagina']; // Seteo el nuevo valor a la vista. $vista->assign('elementos_pagina', $elementos_pagina); // Verifico el valor. if ($elementos_pagina < 5 || $elementos_pagina > 100) { $vista->assign('error_elementos_pagina', 'La cantidad de elementos por página ser un entero entre 5 y 100.'); } else { // Actualizo el valor. $actual = $model_configuracion->get('elementos_pagina', NULL); if ($actual === NULL || $elementos_pagina !== (int) $actual) { $model_configuracion->elementos_pagina = $elementos_pagina; $vista->assign('success_elementos_pagina', 'La cantidad de elementos por página se ha actualizado correctamente.'); } } } } // Seteamos el menu. $this->template->assign('master_bar', parent::base_menu('admin')); // Cargamos plantilla administracion. $admin_template = View::factory('admin/template'); $admin_template->assign('contenido', $vista->parse()); unset($portada); $admin_template->assign('top_bar', Controller_Admin_Home::submenu('configuracion')); // Asignamos la vista a la plantilla base. $this->template->assign('contenido', $admin_template->parse()); }
/** * Borramos un rango. * @param int $id ID del rango a borrar. */ public function action_borrar_rango($id) { // Cargamos el modelo del rango. $model_rango = new Model_Usuario_Rango((int) $id); // Verificamos exista. if ($model_rango->existe()) { // Verificamos exista otro y además no tenga usuarios. if ($model_rango->tiene_usuarios()) { $_SESSION['flash_error'] = 'El rango tiene usuarios y no puede ser eliminado.'; Request::redirect('/admin/usuario/rangos'); } // Verifico que no sea el único. if ($model_rango->cantidad() < 2) { $_SESSION['flash_error'] = 'No se puede eliminar al único rango existente.'; Request::redirect('/admin/usuario/rangos'); } // Verifico no sea por defecto. $model_config = new Model_Configuracion(); if ($id == (int) $model_config->get('rango_defecto', 1)) { $_SESSION['flash_error'] = 'No se puede eliminar al rango por defecto para los nuevos usuarios.'; Request::redirect('/admin/usuario/rangos'); } // Borramos la noticia. $model_rango->borrar_rango(); $_SESSION['flash_success'] = 'Se borró correctamente el rango.'; } Request::redirect('/admin/usuario/rangos'); }