Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

1TSR4SC11

Editor
  • Content Count

    825
  • Posts on chatbox

    24
  • Joined

  • Last visited

  • Days Won

    10

1TSR4SC11 last won the day on January 23

1TSR4SC11 had the most liked content!

Community Reputation

311 Venerado

About 1TSR4SC11

  • Rank
    Payne to the max
  • Birthday December 31

Métodos de contacto

  • Sitio web
    https://github.com/R4SC11

Información de perfil

  • Sexo
    Otro
  • Localización
    Falkland Islands

Recent Profile Visitors

14577 profile views
  1. Hola a todos. Les traigo este mini mod/fix que permitirá que se pueda cerrar la sesión en caso de estar baneado. Al intentar cerrar sesión, en vez de realizar la acción mencionada, aparece el siguiente mensaje: Usuario suspendido Para solucionar esto, es necesario cambiar esto en el archivo header.php: } elseif ($tsUser->is_banned) { Por lo siguiente: } elseif ($tsUser->is_banned && $_GET['action'] != "login-salir") { Espero que les sirva
  2. Hola. He decidido crear este mini mod que permitirá mostrar la información de la suspensión en el mismo inicio de sesión: Antes: Con el mod: (Mostrar el moderador es opcional) Para instalarlo es muy fácil, solamente ir al archivo /inc/class/c.user.php y buscar en la función loginUser: if ($data['user_activo'] == 1) { Para reemplazarlo por: if ($data['user_baneado'] == 1) { $this->uid = $data['user_id']; $banned_data = $this->getUserBanned(); $final_str = "Su cuenta ha sido suspendida"; if ($banned_data['susp_termina'] == 0) { $final_str .= " indefinidamente."; } else if ($banned_data['susp_termina'] == 1) { $final_str .= " permanentemente."; } else { $final_str .= " hasta el día " . date("d/m/y \a \l\a\s H:i:s", $banned_data['susp_termina']) . "."; } $final_str .= "\n" . 'Razón de la suspensión: "' . $banned_data['susp_causa'] . '".'; //Descomentar esto para mostrar quién fue el que lo baneó //$final_str .= "\n" . 'Moderador: ' . $this->getUserName($banned_data['susp_mod']) . '.'; return "0: " . $final_str; } else if ($data['user_activo'] == 1) {
  3. 1TSR4SC11

    PHPost Risus 1.2.6.000

    Aquí la descarga.
  4. 1TSR4SC11

    PHPost Risus 1.3.0 + Github

    Aquí la descarga.
  5. Hola. He decidido revisar los commits en GitHub y he logrado recopilar dos versiones de Risus. He hecho esto porque no hay ninguna parte en el foro que lleve a un enlace para descargar estas versiones y el único enlace de descarga disponible lleva a GitHub (lo cual está híper mega bugeado y el rendimiento es incluso inferior a la 1.3, por eso no la incluiré en este post). Tengo entendido por los commits que se ha empezado a subir una alpha en el branch master (una locura, pero bueno). En fin, aquí están los enlaces: Risus 1.2.6 (con fixes de PHP 7): [Código] [Descarga] Risus 1.3.0: [Código] [Descarga]
  6. Prefiero Signal. Gracias Bot.
  7. Hola a todos. Hoy les traigo un mod que quería hacer hace tiempo pero como había dejado de visitar Phpost no me había animado a hacerlo. Screenshots Instalación Es una instalación de unos 5 a 15 minutos, lo más tedioso estará en el archivo de clases del usuario. Consultas SQL ALTER TABLE `u_miembros` ADD `user_twofa_en` BOOLEAN NOT NULL DEFAULT FALSE AFTER `user_password`; ALTER TABLE `u_miembros` ADD `user_twofa_secret` CHAR(16) NULL AFTER `user_twofa_en`; ALTER TABLE `u_sessions` ADD `session_twofa_req` BOOLEAN NOT NULL DEFAULT FALSE AFTER `session_autologin`; -- Versión 1.4 ALTER TABLE `u_miembros` ADD `user_twofa_at_count` INT(1) NOT NULL AFTER `user_twofa_secret`, ADD `user_twofa_at_ban_date` INT(12) NOT NULL AFTER `user_twofa_at_count`; Archivo /header.php Buscar: // Banned } elseif($tsUser->is_banned) { Y agregar arriba: //2FA Challenge } else if ($tsUser->has2FAChallenge && $_GET['action'] != "login-salir" && $_GET['action'] != "ratwofa-verifychallenge") { require(TS_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'c.ratwofa.php'); $myRatwofa = new ratwofa(); $myRatwofa->display_2fa_page(); exit; Archivo /inc/class/c.user.php Buscar: var $session; Agregar debajo o arriba: var $has2FAChallenge = false; var $has2FAEnabled = false; Buscar: // Borrar variable session unset($this->session); Agregar arriba: $this->has2FAChallenge = $this->session->userdata['session_twofa_req'] == 1 ? true : false; $this->has2FAEnabled = (int)$this->info['user_twofa_en'] == 1 ? true : false; Buscar en la función loginUser: $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id, user_password, ' . $pwtype . ' user_activo, user_baneado FROM u_miembros WHERE LOWER(user_name) = \'' . $username . '\' LIMIT 1'); Al lado derecho de: user_baneado Agregar: , user_twofa_en Buscar: // Actualizamos la session $this->session->update($data['user_id'], $remember, TRUE); Cambiar por: // Actualizamos la session $this->session->update($data['user_id'], $remember, TRUE, $data['user_twofa_en'] == 1 ? 'y' : ''); Buscar: function update($user_id = 0, $autologin = FALSE, $force_update = FALSE) { Cambiar por: function update($user_id = 0, $autologin = FALSE, $force_update = FALSE, $twofa_required = '') { Buscar: if (($this->userdata['session_time'] + $this->sess_time_online) >= $this->time_now and $force_update == FALSE) { Cambiar por: if (!isset($_SESSION['2fa']['challenge_ok']) && (($this->userdata['session_time'] + $this->sess_time_online) >= $this->time_now and $force_update == FALSE)) { Buscar: // Datos para actualizar $this->userdata['session_user_id'] = empty($user_id) ? $this->userdata['session_user_id'] : $user_id; Agregar debajo o arriba: if (!isset($_SESSION['2fa']['challenge_ok'])) { $this->userdata['session_twofa_req'] = $twofa_required == 'y' || (isset($this->userdata['session_twofa_req']) && $this->userdata['session_twofa_req'] == 1) ? 1 : 0; } else { $this->userdata['session_twofa_req'] = 0; unset($_SESSION['2fa']['challenge_ok']); } Buscar: session_autologin = \'' . $this->userdata['session_autologin'] . '\' Agregar al lado derecho: , session_twofa_req = \'' . $this->userdata['session_twofa_req'] . '\' Archivo themes\TU TEMA\templates\t.cuenta.tpl Buscar (El siguiente lo pueden poner al lado del <li> que más les guste. En este caso, lo pondré al lado de "Privacidad".): <li{if $tsAccion == 'config'} class="active" {/if}><a href="{$tsConfig.url}/cuenta/config">Privacidad</a></li> Y agregar arriba, abajo, a la izquierda o a la derecha (xD): <li><a onclick="cuenta.chgtab(this)">2FA</a></li> Buscar: {include file='modules/m.cuenta_config.tpl'} Y agregar debajo: {include file='modules/m.cuenta_2fa.tpl'} Luego subir los siguientes archivos a su web/host/etc en sus respectivas carpetas (Click en Archivos + Carpeta Vendor) [Descargar] Changelog: Por hacer: Notas: Para que aparezca el código QR es necesario contar con la librería GD instalada o activada. En caso de no contar con ella, no se mostrará el código QR (Se supone que no debería dar errores). Si utilizan un hosting compartido basta con ir a la configuración de PHP desde el CPanel y activarla. De todas maneras, hay muchos tutoriales online para saber cómo hacerlo especificamente. Es posible aumentar la cantidad de dígitos en el archivo de la clase pero hay que ajustar cosas como el tamaño de la columna de la clave secreta del usuario. Este mod hace uso de: RobThree/TwoFactorAuth y endroid/qr-code. (Y Composer, por supuesto) Gracias por leer
  8. Hola a todos! Hoy me he decidido hacer un "remake" de mi antiguo mod de páginas administrables que publiqué en su momento en el foro. Es algo básico pero puede facilitarle a más de uno la gestión de sus páginas. Screenshots: Instalación: Ejecutar la siguiente consulta SQL: CREATE TABLE `w_pages` ( `page_id` INT NOT NULL AUTO_INCREMENT, `page_title` VARCHAR(60) NULL, `page_url` VARCHAR(35) NOT NULL, `page_body` TEXT NULL, `page_hidden` BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (`page_id`) ) ENGINE = MyISAM; Abrir el archivo /inc/php/admin.php y agregar arriba de: # TEMAS } elseif ($action == 'temas') { Lo siguiente: // Páginas Administrables } elseif ($action == 'pages') { require TS_ROOT . DIRECTORY_SEPARATOR . TS_CLASS . 'c.pages.php'; $myRaPages = new RaPages(); if (empty($act)) $smarty->assign("pages_list", $myRaPages->get_pages_list()); elseif ($act == 'new') { if ($myRaPages->create_new_page()) $tsCore->redirectTo($tsCore->settings['url'] . '/admin/pages?ref=new_page_added'); } else if ($act == 'delete' && isset($_GET['pag_id']) && $tsAjax == 1) { header('Content-type: application/json'); echo json_encode($myRaPages->deletePage($_GET['pag_id'])); } else if ($act == 'edit') { if (isset($_GET['pag_id'])) { if (!$myRaPages->does_page_exist($_GET['pag_id'], true)) $smarty->assign("tsError", "La página no existe."); else { $smarty->assign("page_data", $myRaPages->get_page_data($_GET['pag_id'], true)); } } else $smarty->assign("tsError", "Debe completar con un identificador."); } else if ($act == 'save' && $tsAjax == 1 && isset($_GET['pag_id'])) { header('Content-type: application/json'); echo json_encode($myRaPages->save_page($_GET['pag_id'])); } Ir al archivo \themes\MI TEMA\templates\t.admin.tpl y buscar: {elseif $tsAction == 'ads'} {include file='admin_mods/m.admin_publicidad.tpl'} Y agregar arriba o debajo: {elseif $tsAction == 'pages'} {include file='admin_mods/m.admin_pages.tpl'} Ir al archivo themes\MI TEMA\templates\admin_mods\m.admin_sidemenu.tpl y buscar: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/ads">Publicidad</a></span></li> Y agregar debajo: <li id="a_pages"><span class="cat-title"><a href="{$tsConfig.url}/admin/pages">Páginas</a></span></li> Reemplazar los siguientes archivos con los de la descarga: - inc\php\pages.php - themes\MI TEMA\templates\t.pages.tpl Subir/Agregar los siguientes archivos: - inc\class\c.pages.php - themes\MI TEMA\templates\admin_mods\m.admin_pages.tpl [DESCARGAR] Espero que les guste Notas: No olviden actualizar el footer de la página. Para ahorrar un par de bytes pueden eliminar los archivos antiguos que comienzen con m.pages_ en el directorio modules de vuestro tema.
×