コード例 #1
0
ファイル: perfil.php プロジェクト: 4bs4/marifa
 /**
  * Muro del usuario.
  * @param int $usuario ID del usuario.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_muro($usuario, $pagina = 1)
 {
     // Cargamos el usuario.
     $this->cargar_usuario($usuario);
     // Cargamos la vista de información.
     $information_view = View::factory('perfil/muro');
     // Información del usuario actual.
     $information_view->assign('usuario', $this->usuario->as_array());
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Listado de eventos.
     $lst = Suceso_Perfil::obtener_listado($this->usuario->id, $pagina, $cantidad_por_pagina);
     // Que sea un número de página válido.
     if (count($lst) == 0 && $pagina != 1) {
         Request::redirect('/perfil/muro/' . $usuario);
     }
     // Paginación.
     $paginador = new Paginator(Suceso_Perfil::cantidad($this->usuario->id), $cantidad_por_pagina);
     $information_view->assign('paginacion', $paginador->get_view($pagina, '/perfil/muro/' . $usuario . '/%d'));
     unset($paginador);
     $eventos = array();
     foreach ($lst as $v) {
         // Obtengo información del suceso.
         $s_data = Suceso_Perfil::procesar($v);
         // Verifico su existencia.
         if ($s_data === NULL) {
             continue;
         }
         // Obtenemos el tipo de suceso.
         $tipo = $v->as_object()->tipo;
         // Cargamos la vista.
         $suceso_vista = View::factory('/suceso/perfil/' . $tipo);
         // Asigno los datos del usuario actual.
         $suceso_vista->assign('actual', $this->usuario->as_array());
         // Asigno información del suceso.
         $suceso_vista->assign('suceso', $s_data);
         // Datos del suceso.
         $suceso_vista->assign('fecha', $v->fecha);
         // Agregamos el evento.
         $eventos[] = $suceso_vista->parse();
     }
     //TODO: agregar listado de eventos.
     $information_view->assign('eventos', $eventos);
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $this->header_block($information_view->parse()));
     unset($information_view);
     // Seteamos el titulo.
     $this->template->assign('title', 'Perfil - ' . $this->usuario->get('nick'));
 }
コード例 #2
0
ファイル: barra.php プロジェクト: 4bs4/marifa
 /**
  * Suceso producido cuando el usuario cambia de rango.
  * @param array $suceso Datos del suceso.
  * @return array
  */
 protected static function suceso_usuario_seguir($suceso)
 {
     // Cargo datos del usuario.
     $model_usuario = new Model_Usuario((int) $suceso['objeto_id']);
     // Cargo datos del seguidor.
     $model_seguidor = new Model_Usuario((int) $suceso['objeto_id1']);
     return array('usuario' => $model_usuario->as_array(), 'seguidor' => $model_seguidor->as_array());
 }
コード例 #3
0
ファイル: denuncias.php プロジェクト: 4bs4/marifa
 /**
  * Suspendemos a un usuario.
  * @param int $id ID del usuario a suspender.
  */
 public function action_suspender_usuario($id)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_VER_DENUNCIAS)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Verificamos no sea actual.
     if ($id == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'No puedes enviarte una advertencia a vos mismo.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Aseguramos un ID entero.
     $id = (int) $id;
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($id);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Verifico no esté suspendido.
     $s = $model_usuario->suspension();
     if ($s !== NULL) {
         if ($s->restante() <= 0) {
             $s->anular();
         } else {
             $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     unset($s);
     // Cargamos la vista.
     $vista = View::factory('/moderar/denuncias/suspender_usuario');
     // Información del usuario a suspender.
     $vista->assign('usuario', $model_usuario->as_array());
     // Valores por defecto y errores.
     $vista->assign('motivo', '');
     $vista->assign('error_motivo', FALSE);
     $vista->assign('fin', '');
     $vista->assign('error_fin', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $motivo = isset($_POST['motivo']) ? $_POST['motivo'] : NULL;
         $fin = isset($_POST['fin']) ? $_POST['fin'] : NULL;
         // Valores para cambios.
         $vista->assign('motivo', $motivo);
         $vista->assign('fin', $fin);
         // Quitamos BBCode para dimenciones.
         $motivo_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $motivo);
         if (!isset($motivo_clean[10]) || isset($motivo_clean[200])) {
             $error = TRUE;
             $vista->assign('error_motivo', 'El motivo debe tener entre 10 y 200 caractéres');
         }
         unset($motivo_clean);
         // Verificamos la fecha.
         if (empty($fin)) {
             $error = TRUE;
             $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
         } else {
             $fin = strtotime($fin);
             if ($fin <= time()) {
                 $error = TRUE;
                 $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
             }
         }
         if (!$error) {
             // Evitamos XSS.
             $motivo = htmlentities($motivo, ENT_NOQUOTES, 'UTF-8');
             // Creamos la suspensión.
             $model_suspension = new Model_Usuario_Suspension();
             $s_id = $model_suspension->nueva($id, Usuario::$usuario_id, $motivo, $fin);
             // Enviamos el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $id) {
                 $model_suceso->crear($id, 'usuario_suspender', TRUE, $s_id);
                 $model_suceso->crear(Usuario::$usuario_id, 'usuario_suspender', FALSE, $s_id);
             } else {
                 $model_suceso->crear($id, 'usuario_suspender', FALSE, $s_id);
             }
             // Seteamos mensaje flash y volvemos.
             $_SESSION['flash_success'] = 'Usuario suspendido correctamente.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('moderar'));
     // Cargamos plantilla administracion.
     $admin_template = View::factory('moderar/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Moderar_Home::submenu('denuncias_usuarios'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
コード例 #4
0
ファイル: usuario.php プロジェクト: 4bs4/marifa
 /**
  * Cambiamos el rango de un usuario.
  * @param int $usuario ID del usuario al que se le cambia el rango.
  * @param int $rango ID del rango a setear.
  */
 public function action_cambiar_rango($usuario, $rango)
 {
     $usuario = (int) $usuario;
     // Verificamos no sea actual.
     if ($usuario == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($usuario);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Verifico su orden.
     if ($model_usuario->rango()->es_superior(Usuario::usuario()->rango)) {
         $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     $rango = (int) $rango;
     // Verifico el rango.
     $model_rango = new Model_Usuario_Rango($rango);
     if ($model_rango->existe()) {
         // Verifico el nivel.
         if ($rango == Usuario::usuario()->rango || $model_rango->es_superior(Usuario::usuario()->rango)) {
             $_SESSION['flash_error'] = 'Rango que deseas asignar no se encuentra disponible.';
             Request::redirect('/admin/usuario/');
         }
         // Actualizo el rango.
         $model_usuario->actualizar_campo('rango', $rango);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $model_usuario->id) {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', TRUE, $model_usuario->id, $rango, Usuario::$usuario_id);
             $model_suceso->crear(Usuario::$usuario_id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         } else {
             $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id);
         }
         // Informo el resultado.
         $_SESSION['flash_success'] = 'El rango fue cambiado correctamente correctamente.';
         Request::redirect('/admin/usuario');
     }
     // Cargo la vista.
     $vista = View::factory('admin/usuario/cambiar_rango');
     // Seteo la información.
     $vista->assign('usuario', $model_usuario->as_array());
     // Cargamos los rangos.
     $lst = $model_rango->listado(Usuario::usuario()->rango()->orden);
     foreach ($lst as $k => $v) {
         $lst[$k] = $v->as_array();
     }
     $vista->assign('rangos', $lst);
     // 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('usuario'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }